summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/bootloader.scm43
-rw-r--r--gnu/bootloader/depthcharge.scm107
-rw-r--r--gnu/bootloader/grub.scm35
-rw-r--r--gnu/bootloader/u-boot.scm2
-rw-r--r--gnu/build/accounts.scm9
-rw-r--r--gnu/build/file-systems.scm2
-rw-r--r--gnu/build/linux-boot.scm15
-rw-r--r--gnu/build/linux-container.scm48
-rw-r--r--gnu/build/vm.scm30
-rw-r--r--gnu/installer.scm99
-rw-r--r--gnu/installer/final.scm90
-rw-r--r--gnu/installer/keymap.scm8
-rw-r--r--gnu/installer/locale.scm21
-rw-r--r--gnu/installer/newt/final.scm28
-rw-r--r--gnu/installer/newt/keymap.scm45
-rw-r--r--gnu/installer/newt/locale.scm54
-rw-r--r--gnu/installer/newt/network.scm7
-rw-r--r--gnu/installer/newt/page.scm76
-rw-r--r--gnu/installer/newt/partition.scm36
-rw-r--r--gnu/installer/newt/services.scm80
-rw-r--r--gnu/installer/newt/timezone.scm5
-rw-r--r--gnu/installer/newt/user.scm99
-rw-r--r--gnu/installer/newt/welcome.scm8
-rw-r--r--gnu/installer/newt/wifi.scm3
-rw-r--r--gnu/installer/parted.scm55
-rw-r--r--gnu/installer/services.scm158
-rw-r--r--gnu/installer/steps.scm28
-rw-r--r--gnu/installer/user.scm31
-rw-r--r--gnu/installer/utils.scm38
-rw-r--r--gnu/local.mk56
-rw-r--r--gnu/packages.scm25
-rw-r--r--gnu/packages/admin.scm122
-rw-r--r--gnu/packages/algebra.scm96
-rw-r--r--gnu/packages/android.scm2
-rw-r--r--gnu/packages/animation.scm25
-rw-r--r--gnu/packages/antivirus.scm4
-rw-r--r--gnu/packages/assembly.scm4
-rw-r--r--gnu/packages/astronomy.scm21
-rw-r--r--gnu/packages/audio.scm78
-rw-r--r--gnu/packages/aux-files/linux-libre/5.0-arm-veyron.conf4574
-rw-r--r--gnu/packages/backup.scm9
-rw-r--r--gnu/packages/base.scm16
-rw-r--r--gnu/packages/bioconductor.scm1754
-rw-r--r--gnu/packages/bioinformatics.scm636
-rw-r--r--gnu/packages/bootloaders.scm65
-rw-r--r--gnu/packages/c.scm34
-rw-r--r--gnu/packages/calendar.scm18
-rw-r--r--gnu/packages/cdrom.scm130
-rw-r--r--gnu/packages/check.scm65
-rw-r--r--gnu/packages/chez.scm2
-rw-r--r--gnu/packages/chromium.scm163
-rw-r--r--gnu/packages/commencement.scm2
-rw-r--r--gnu/packages/compression.scm4
-rw-r--r--gnu/packages/conky.scm8
-rw-r--r--gnu/packages/connman.scm11
-rw-r--r--gnu/packages/cpp.scm9
-rw-r--r--gnu/packages/cran.scm2409
-rw-r--r--gnu/packages/crypto.scm20
-rw-r--r--gnu/packages/cups.scm8
-rw-r--r--gnu/packages/curl.scm18
-rw-r--r--gnu/packages/databases.scm161
-rw-r--r--gnu/packages/dc.scm6
-rw-r--r--gnu/packages/debug.scm20
-rw-r--r--gnu/packages/dictionaries.scm15
-rw-r--r--gnu/packages/disk.scm6
-rw-r--r--gnu/packages/display-managers.scm86
-rw-r--r--gnu/packages/django.scm9
-rw-r--r--gnu/packages/dlang.scm185
-rw-r--r--gnu/packages/dns.scm98
-rw-r--r--gnu/packages/docker.scm11
-rw-r--r--gnu/packages/dunst.scm2
-rw-r--r--gnu/packages/elf.scm8
-rw-r--r--gnu/packages/emacs-xyz.scm3928
-rw-r--r--gnu/packages/emacs.scm6
-rw-r--r--gnu/packages/embedded.scm2
-rw-r--r--gnu/packages/emulators.scm169
-rw-r--r--gnu/packages/engineering.scm123
-rw-r--r--gnu/packages/enlightenment.scm21
-rw-r--r--gnu/packages/entr.scm5
-rw-r--r--gnu/packages/erlang.scm19
-rw-r--r--gnu/packages/file-systems.scm2
-rw-r--r--gnu/packages/file.scm4
-rw-r--r--gnu/packages/finance.scm36
-rw-r--r--gnu/packages/firmware.scm23
-rw-r--r--gnu/packages/flashing-tools.scm19
-rw-r--r--gnu/packages/fltk.scm4
-rw-r--r--gnu/packages/fonts.scm156
-rw-r--r--gnu/packages/fpga.scm6
-rw-r--r--gnu/packages/freedesktop.scm221
-rw-r--r--gnu/packages/ftp.scm10
-rw-r--r--gnu/packages/game-development.scm123
-rw-r--r--gnu/packages/games.scm1388
-rw-r--r--gnu/packages/geo.scm62
-rw-r--r--gnu/packages/ghostscript.scm11
-rw-r--r--gnu/packages/gimp.scm6
-rw-r--r--gnu/packages/gl.scm4
-rw-r--r--gnu/packages/gnome.scm132
-rw-r--r--gnu/packages/gnucash.scm7
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnupg.scm17
-rw-r--r--gnu/packages/gnuzilla.scm162
-rw-r--r--gnu/packages/golang.scm341
-rw-r--r--gnu/packages/gpodder.scm105
-rw-r--r--gnu/packages/graph.scm180
-rw-r--r--gnu/packages/graphics.scm56
-rw-r--r--gnu/packages/gtk.scm2
-rw-r--r--gnu/packages/guile-xyz.scm175
-rw-r--r--gnu/packages/guile.scm32
-rw-r--r--gnu/packages/hardware.scm4
-rw-r--r--gnu/packages/haskell-apps.scm400
-rw-r--r--gnu/packages/haskell-check.scm6
-rw-r--r--gnu/packages/haskell-crypto.scm43
-rw-r--r--gnu/packages/haskell-web.scm108
-rw-r--r--gnu/packages/haskell.scm64
-rw-r--r--gnu/packages/ibus.scm37
-rw-r--r--gnu/packages/idris.scm36
-rw-r--r--gnu/packages/image.scm85
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/ipfs.scm4
-rw-r--r--gnu/packages/java.scm120
-rw-r--r--gnu/packages/kde-frameworks.scm7
-rw-r--r--gnu/packages/kde.scm87
-rw-r--r--gnu/packages/kodi.scm7
-rw-r--r--gnu/packages/libedit.scm9
-rw-r--r--gnu/packages/libreoffice.scm24
-rw-r--r--gnu/packages/libusb.scm4
-rw-r--r--gnu/packages/linux.scm219
-rw-r--r--gnu/packages/lirc.scm8
-rw-r--r--gnu/packages/lisp.scm1570
-rw-r--r--gnu/packages/llvm.scm39
-rw-r--r--gnu/packages/machine-learning.scm586
-rw-r--r--gnu/packages/mail.scm205
-rw-r--r--gnu/packages/mate.scm188
-rw-r--r--gnu/packages/maths.scm514
-rw-r--r--gnu/packages/maven.scm4
-rw-r--r--gnu/packages/messaging.scm42
-rw-r--r--gnu/packages/microcom.scm2
-rw-r--r--gnu/packages/monitoring.scm12
-rw-r--r--gnu/packages/mp3.scm18
-rw-r--r--gnu/packages/mpd.scm10
-rw-r--r--gnu/packages/mpi.scm5
-rw-r--r--gnu/packages/mtools.scm22
-rw-r--r--gnu/packages/music.scm87
-rw-r--r--gnu/packages/musl.scm4
-rw-r--r--gnu/packages/nano.scm6
-rw-r--r--gnu/packages/ncurses.scm8
-rw-r--r--gnu/packages/networking.scm177
-rw-r--r--gnu/packages/nss.scm184
-rw-r--r--gnu/packages/ocaml.scm2570
-rw-r--r--gnu/packages/openldap.scm4
-rw-r--r--gnu/packages/package-management.scm40
-rw-r--r--gnu/packages/parallel.scm6
-rw-r--r--gnu/packages/password-utils.scm72
-rw-r--r--gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch43
-rw-r--r--gnu/packages/patches/docker-use-fewer-modprobes.patch137
-rw-r--r--gnu/packages/patches/emacs-undohist-ignored.patch27
-rw-r--r--gnu/packages/patches/emacs-zones-called-interactively.patch43
-rw-r--r--gnu/packages/patches/flac-CVE-2017-6888.patch29
-rw-r--r--gnu/packages/patches/grub-efi-fat-serial-number.patch27
-rw-r--r--gnu/packages/patches/idris-test-no-node.patch61
-rw-r--r--gnu/packages/patches/knot-include-system-lmdb-header.patch34
-rw-r--r--gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch17
-rw-r--r--gnu/packages/patches/lcms-CVE-2018-16435.patch171
-rw-r--r--gnu/packages/patches/ledger-fix-uninitialized.patch27
-rw-r--r--gnu/packages/patches/libopenshot-fixup-tests.patch148
-rw-r--r--gnu/packages/patches/libopenshot-tests-with-system-libs.patch95
-rw-r--r--gnu/packages/patches/linkchecker-tests-require-network.patch (renamed from gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch)0
-rw-r--r--gnu/packages/patches/localed-xorg-keyboard.patch322
-rw-r--r--gnu/packages/patches/mtools-mformat-uninitialized.patch20
-rw-r--r--gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch72
-rw-r--r--gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch52
-rw-r--r--gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch133
-rw-r--r--gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch25
-rw-r--r--gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch9
-rw-r--r--gnu/packages/patches/openssh-CVE-2018-20685.patch44
-rw-r--r--gnu/packages/patches/python-pyfakefs-remove-bad-test.patch23
-rw-r--r--gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch62
-rw-r--r--gnu/packages/patches/quilt-getopt-nondigit-param.patch45
-rw-r--r--gnu/packages/patches/quilt-getopt-second-separator.patch58
-rw-r--r--gnu/packages/patches/quilt-test-fix-regex.patch41
-rw-r--r--gnu/packages/patches/reptyr-fix-gcc-7.patch38
-rw-r--r--gnu/packages/patches/soundtouch-CVE-2018-1000223.patch143
-rw-r--r--gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch138
-rw-r--r--gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch55
-rw-r--r--gnu/packages/patches/texlive-bin-CVE-2018-17407.patch249
-rw-r--r--gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch188
-rw-r--r--gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch31
-rw-r--r--gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch57
-rw-r--r--gnu/packages/patches/webkitgtk-sse2.patch202
-rw-r--r--gnu/packages/patchutils.scm25
-rw-r--r--gnu/packages/pdf.scm5
-rw-r--r--gnu/packages/perl-check.scm133
-rw-r--r--gnu/packages/perl-web.scm59
-rw-r--r--gnu/packages/perl.scm325
-rw-r--r--gnu/packages/perl6.scm21
-rw-r--r--gnu/packages/photo.scm32
-rw-r--r--gnu/packages/php.scm20
-rw-r--r--gnu/packages/plotutils.scm56
-rw-r--r--gnu/packages/poedit.scm80
-rw-r--r--gnu/packages/polkit.scm1
-rw-r--r--gnu/packages/pretty-print.scm15
-rw-r--r--gnu/packages/printers.scm56
-rw-r--r--gnu/packages/protobuf.scm33
-rw-r--r--gnu/packages/python-crypto.scm8
-rw-r--r--gnu/packages/python-web.scm4
-rw-r--r--gnu/packages/python-xyz.scm611
-rw-r--r--gnu/packages/qt.scm14
-rw-r--r--gnu/packages/rails.scm2
-rw-r--r--gnu/packages/ratpoison.scm45
-rw-r--r--gnu/packages/rdf.scm34
-rw-r--r--gnu/packages/regex.scm4
-rw-r--r--gnu/packages/ruby.scm34
-rw-r--r--gnu/packages/rust.scm249
-rw-r--r--gnu/packages/samba.scm17
-rw-r--r--gnu/packages/scheme.scm172
-rw-r--r--gnu/packages/screen.scm39
-rw-r--r--gnu/packages/sdl.scm109
-rw-r--r--gnu/packages/search.scm30
-rw-r--r--gnu/packages/security-token.scm224
-rw-r--r--gnu/packages/serialization.scm20
-rw-r--r--gnu/packages/shellutils.scm54
-rw-r--r--gnu/packages/spice.scm47
-rw-r--r--gnu/packages/ssh.scm31
-rw-r--r--gnu/packages/sssd.scm4
-rw-r--r--gnu/packages/statistics.scm176
-rw-r--r--gnu/packages/storage.scm2
-rw-r--r--gnu/packages/suckless.scm7
-rw-r--r--gnu/packages/sync.scm4
-rw-r--r--gnu/packages/syncthing.scm6
-rw-r--r--gnu/packages/telephony.scm377
-rw-r--r--gnu/packages/terminals.scm25
-rw-r--r--gnu/packages/tex.scm42
-rw-r--r--gnu/packages/textutils.scm2
-rw-r--r--gnu/packages/tls.scm56
-rw-r--r--gnu/packages/tmux.scm8
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/valgrind.scm15
-rw-r--r--gnu/packages/version-control.scm475
-rw-r--r--gnu/packages/video.scm84
-rw-r--r--gnu/packages/vim.scm10
-rw-r--r--gnu/packages/virtualization.scm16
-rw-r--r--gnu/packages/vpn.scm18
-rw-r--r--gnu/packages/vulkan.scm80
-rw-r--r--gnu/packages/w3m.scm6
-rw-r--r--gnu/packages/web-browsers.scm6
-rw-r--r--gnu/packages/web.scm168
-rw-r--r--gnu/packages/webkit.scm6
-rw-r--r--gnu/packages/wget.scm11
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm67
-rw-r--r--gnu/packages/xdisorg.scm22
-rw-r--r--gnu/packages/xfce.scm80
-rw-r--r--gnu/packages/xiph.scm5
-rw-r--r--gnu/packages/xml.scm114
-rw-r--r--gnu/packages/xorg.scm41
-rw-r--r--gnu/services/authentication.scm16
-rw-r--r--gnu/services/base.scm32
-rw-r--r--gnu/services/certbot.scm40
-rw-r--r--gnu/services/dbus.scm48
-rw-r--r--gnu/services/desktop.scm70
-rw-r--r--gnu/services/dns.scm87
-rw-r--r--gnu/services/mail.scm45
-rw-r--r--gnu/services/networking.scm15
-rw-r--r--gnu/services/sddm.scm14
-rw-r--r--gnu/services/shepherd.scm26
-rw-r--r--gnu/services/ssh.scm3
-rw-r--r--gnu/services/web.scm1
-rw-r--r--gnu/services/xorg.scm320
-rw-r--r--gnu/system.scm109
-rw-r--r--gnu/system/accounts.scm7
-rw-r--r--gnu/system/examples/asus-c201.tmpl60
-rw-r--r--gnu/system/examples/bare-bones.tmpl3
-rw-r--r--gnu/system/examples/beaglebone-black.tmpl3
-rw-r--r--gnu/system/examples/desktop.tmpl23
-rw-r--r--gnu/system/examples/docker-image.tmpl3
-rw-r--r--gnu/system/examples/lightweight-desktop.tmpl3
-rw-r--r--gnu/system/examples/vm-image.tmpl116
-rw-r--r--gnu/system/install.scm131
-rw-r--r--gnu/system/keyboard.scm98
-rw-r--r--gnu/system/linux-container.scm68
-rw-r--r--gnu/system/linux-initrd.scm26
-rw-r--r--gnu/system/shadow.scm5
-rw-r--r--gnu/system/vm.scm57
-rw-r--r--gnu/tests.scm5
-rw-r--r--gnu/tests/install.scm19
-rw-r--r--gnu/tests/networking.scm4
286 files changed, 27019 insertions, 9323 deletions
diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index a32bf5ec67..a381f67145 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -47,6 +47,7 @@
             bootloader-configuration-menu-entries
             bootloader-configuration-default-entry
             bootloader-configuration-timeout
+            bootloader-configuration-keyboard-layout
             bootloader-configuration-theme
             bootloader-configuration-terminal-outputs
             bootloader-configuration-terminal-inputs
@@ -104,27 +105,27 @@
 (define-record-type* <bootloader-configuration>
   bootloader-configuration make-bootloader-configuration
   bootloader-configuration?
-  (bootloader                      bootloader-configuration-bootloader)    ; <bootloader>
-  (target                          bootloader-configuration-target         ; string
-                                   (default #f))
-  (menu-entries                    bootloader-configuration-menu-entries   ; list of <boot-parameters>
-                                   (default '()))
-  (default-entry                   bootloader-configuration-default-entry  ; integer
-                                   (default 0))
-  (timeout                         bootloader-configuration-timeout        ; seconds as integer
-                                   (default 5))
-  (theme                           bootloader-configuration-theme          ; bootloader-specific theme
-                                   (default #f))
-  (terminal-outputs                bootloader-configuration-terminal-outputs ; list of symbols
-                                   (default '(gfxterm)))
-  (terminal-inputs                 bootloader-configuration-terminal-inputs  ; list of symbols
-                                   (default '()))
-  (serial-unit                     bootloader-configuration-serial-unit      ; integer | #f
-                                   (default #f))
-  (serial-speed                    bootloader-configuration-serial-speed     ; integer | #f
-                                   (default #f))
-  (additional-configuration        bootloader-configuration-additional-configuration ; record
-                                   (default #f)))
+  (bootloader         bootloader-configuration-bootloader) ;<bootloader>
+  (target             bootloader-configuration-target      ;string
+                      (default #f))
+  (menu-entries       bootloader-configuration-menu-entries ;list of <boot-parameters>
+                      (default '()))
+  (default-entry      bootloader-configuration-default-entry ;integer
+                      (default 0))
+  (timeout            bootloader-configuration-timeout ;seconds as integer
+                      (default 5))
+  (keyboard-layout    bootloader-configuration-keyboard-layout ;<keyboard-layout> | #f
+                      (default #f))
+  (theme              bootloader-configuration-theme ;bootloader-specific theme
+                      (default #f))
+  (terminal-outputs   bootloader-configuration-terminal-outputs ;list of symbols
+                      (default '(gfxterm)))
+  (terminal-inputs    bootloader-configuration-terminal-inputs ;list of symbols
+                      (default '()))
+  (serial-unit        bootloader-configuration-serial-unit ;integer | #f
+                      (default #f))
+  (serial-speed       bootloader-configuration-serial-speed ;integer | #f
+                      (default #f)))
 
 
 ;;;
diff --git a/gnu/bootloader/depthcharge.scm b/gnu/bootloader/depthcharge.scm
new file mode 100644
index 0000000000..58cc3f3932
--- /dev/null
+++ b/gnu/bootloader/depthcharge.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Timothy Sample <samplet@ngyro.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 bootloader depthcharge)
+  #:use-module (gnu bootloader extlinux)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu packages bootloaders)
+  #:use-module (guix gexp)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match)
+  #:export (depthcharge-bootloader))
+
+(define (signed-kernel kernel kernel-arguments initrd)
+  (define builder
+    (with-imported-modules '((guix build utils))
+      #~(begin
+          (use-modules (guix build utils)
+                       (ice-9 binary-ports)
+                       (rnrs bytevectors))
+          (set-path-environment-variable "PATH" '("bin") (list #$dtc))
+
+          ;; TODO: These files have to be writable, so we copy them.
+          ;; This can probably be fixed by using a ".its" file, just
+          ;; be careful not to break initrd loading.
+          (copy-file #$kernel "zImage")
+          (chmod "zImage" #o755)
+          (copy-file (string-append (dirname #$kernel) "/lib/dtbs/"
+                                    "rk3288-veyron-speedy.dtb")
+                     "rk3288-veyron-speedy.dtb")
+          (chmod "rk3288-veyron-speedy.dtb" #o644)
+          (copy-file #$initrd "initrd")
+          (chmod "initrd" #o644)
+
+          (invoke (string-append #$u-boot-tools "/bin/mkimage")
+                  "-D" "-I dts -O dtb -p 2048"
+		  "-f" "auto"
+                  "-A" "arm"
+                  "-O" "linux"
+                  "-T" "kernel"
+                  "-C" "None"
+                  "-d" "zImage"
+                  "-a" "0"
+                  "-b" "rk3288-veyron-speedy.dtb"
+                  "-i" "initrd"
+	          "image.itb")
+          (call-with-output-file "bootloader.bin"
+            (lambda (port)
+              (put-bytevector port (make-bytevector 512 0))))
+          (with-output-to-file "kernel-arguments"
+	    (lambda ()
+	      (display (string-join (list #$@kernel-arguments)))))
+          (invoke (string-append #$vboot-utils "/bin/vbutil_kernel")
+                  "--pack" #$output
+                  "--version" "1"
+                  "--vmlinuz" "image.itb"
+		  "--arch" "arm"
+		  "--keyblock" (string-append #$vboot-utils
+                                              "/share/vboot-utils/devkeys/"
+                                              "kernel.keyblock")
+		  "--signprivate" (string-append #$vboot-utils
+                                                 "/share/vboot-utils/devkeys/"
+                                                 "kernel_data_key.vbprivk")
+                  "--config" "kernel-arguments"
+                  "--bootloader" "bootloader.bin"))))
+  (computed-file "vmlinux.kpart" builder))
+
+(define* (depthcharge-configuration-file config entries
+                                         #:key
+                                         (system (%current-system))
+                                         (old-entries '()))
+  (match entries
+    ((entry)
+     (let ((kernel (menu-entry-linux entry))
+           (kernel-arguments (menu-entry-linux-arguments entry))
+           (initrd (menu-entry-initrd entry)))
+       ;; XXX: Make this a symlink.
+       (signed-kernel kernel kernel-arguments initrd)))
+    (_ (error "Too many bootloader menu entries!"))))
+
+(define install-depthcharge
+  #~(lambda (bootloader device mount-point)
+      (let ((kpart (string-append mount-point
+                                  "/boot/depthcharge/vmlinux.kpart")))
+        (write-file-on-device kpart (stat:size (stat kpart)) device 0))))
+
+(define depthcharge-bootloader
+  (bootloader
+   (name 'depthcharge)
+   (package #f)
+   (installer install-depthcharge)
+   (configuration-file "/boot/depthcharge/vmlinux.kpart")
+   (configuration-file-generator depthcharge-configuration-file)))
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 14aede72c5..e97a17b3e2 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -27,8 +27,10 @@
   #:use-module (gnu bootloader)
   #:use-module (gnu system uuid)
   #:use-module (gnu system file-systems)
+  #:use-module (gnu system keyboard)
   #:autoload   (gnu packages bootloaders) (grub)
   #:autoload   (gnu packages gtk) (guile-cairo guile-rsvg)
+  #:autoload   (gnu packages xorg) (xkeyboard-config)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
@@ -219,6 +221,26 @@ fi~%"
 ;;; Configuration file.
 ;;;
 
+(define* (keyboard-layout-file layout
+                               #:key
+                               (grub grub))
+  "Process the X keyboard layout description LAYOUT, a <keyboard-layout> record,
+and return a file in the format for GRUB keymaps.  LAYOUT must be present in
+the 'share/X11/xkb/symbols/' directory of 'xkeyboard-config'."
+  (define builder
+    (with-imported-modules '((guix build utils))
+      #~(begin
+          (use-modules (guix build utils))
+
+          ;; 'grub-kbdcomp' passes all its arguments but '-o' to 'ckbcomp'
+          ;; (from the 'console-setup' package).
+          (invoke #$(file-append grub "/bin/grub-mklayout")
+                  "-i" #+(keyboard-layout->console-keymap layout)
+                  "-o" #$output))))
+
+  (computed-file (string-append "grub-keymap." (keyboard-layout-name layout))
+                 builder))
+
 (define (grub-setup-io config)
   "Return GRUB commands to configure the input / output interfaces.  The result
 is a string that can be inserted in grub.cfg."
@@ -330,6 +352,18 @@ entries corresponding to old generations of the system."
                #:system system
                #:port #~port))
 
+  (define keyboard-layout-config
+    (let ((layout (bootloader-configuration-keyboard-layout config))
+          (grub   (bootloader-package
+                   (bootloader-configuration-bootloader config))))
+      #~(let ((keymap #$(and layout
+                             (keyboard-layout-file layout #:grub grub))))
+          (when keymap
+            (format port "\
+terminal_input at_keyboard
+insmod keylayouts
+keymap ~a~%" keymap)))))
+
   (define builder
     #~(call-with-output-file #$output
         (lambda (port)
@@ -338,6 +372,7 @@ entries corresponding to old generations of the system."
 # will be lost upon reconfiguration.
 ")
           #$sugar
+          #$keyboard-layout-config
           (format port "
 set default=~a
 set timeout=~a~%"
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 1c6f322bc4..54abfe1c69 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -106,7 +106,7 @@
 (define u-boot-beaglebone-black-bootloader
   (bootloader
    (inherit u-boot-bootloader)
-   (package u-boot-beagle-bone-black)
+   (package u-boot-am335x-boneblack)
    (installer install-beaglebone-black-u-boot)))
 
 (define u-boot-allwinner-bootloader
diff --git a/gnu/build/accounts.scm b/gnu/build/accounts.scm
index 6b44ab610b..c43ce85b60 100644
--- a/gnu/build/accounts.scm
+++ b/gnu/build/accounts.scm
@@ -483,9 +483,12 @@ new UIDs."
                                (real-name (if previous
                                               (password-entry-real-name previous)
                                               real-name))
-                               (shell (if previous
-                                          (password-entry-shell previous)
-                                          shell)))
+
+                               ;; Do not reuse the shell of PREVIOUS since (1)
+                               ;; that could lead to confusion, and (2) the
+                               ;; shell might have been GC'd.  See
+                               ;; <https://lists.gnu.org/archive/html/guix-devel/2019-04/msg00478.html>.
+                               (shell shell))
                               result)
                         allocation))))
           '()
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index c468144170..8bb10d574d 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -575,6 +575,8 @@ corresponds to the symbols listed in FLAGS."
        (logior MS_NODEV (loop rest)))
       (('no-exec rest ...)
        (logior MS_NOEXEC (loop rest)))
+      (('no-atime rest ...)
+       (logior MS_NOATIME (loop rest)))
       (()
        0))))
 
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 44b3506284..a35d18ad7c 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -437,6 +437,7 @@ bailing out.~%root contents: ~s~%" (scandir "/"))
 (define* (boot-system #:key
                       (linux-modules '())
                       linux-module-directory
+                      keymap-file
                       qemu-guest-networking?
                       volatile-root?
                       pre-mount
@@ -444,7 +445,8 @@ bailing out.~%root contents: ~s~%" (scandir "/"))
                       (on-error 'debug))
   "This procedure is meant to be called from an initrd.  Boot a system by
 first loading LINUX-MODULES (a list of module names) from
-LINUX-MODULE-DIRECTORY, then setting up QEMU guest networking if
+LINUX-MODULE-DIRECTORY, then installing KEYMAP-FILE with 'loadkeys' (if
+KEYMAP-FILE is true), then setting up QEMU guest networking if
 QEMU-GUEST-NETWORKING? is true, calling PRE-MOUNT, mounting the file systems
 specified in MOUNTS, and finally booting into the new root if any.  The initrd
 supports kernel command-line options '--load', '--root', and '--repl'.
@@ -491,6 +493,15 @@ upon error."
                       #:lookup-module lookup-module)
                  (map lookup-module linux-modules))
 
+       (when keymap-file
+         (let ((status (system* "loadkeys" keymap-file)))
+           (unless (zero? status)
+             ;; Emit a warning rather than abort when we cannot load
+             ;; KEYMAP-FILE.
+             (format (current-error-port)
+                     "warning: 'loadkeys' exited with status ~a~%"
+                     status))))
+
        (when qemu-guest-networking?
          (unless (configure-qemu-networking)
            (display "network interface is DOWN\n")))
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index 65e1325577..3d7b52f098 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -168,9 +168,12 @@ for the process."
     (umount "real-root" MNT_DETACH)
     (rmdir "real-root")))
 
-(define (initialize-user-namespace pid host-uids)
+(define* (initialize-user-namespace pid host-uids
+                                    #:key (guest-uid 0) (guest-gid 0))
   "Configure the user namespace for PID.  HOST-UIDS specifies the number of
-host user identifiers to map into the user namespace."
+host user identifiers to map into the user namespace.  GUEST-UID and GUEST-GID
+specify the first UID (respectively GID) that host UIDs (respectively GIDs)
+map to in the namespace."
   (define proc-dir
     (string-append "/proc/" (number->string pid)))
 
@@ -191,10 +194,10 @@ host user identifiers to map into the user namespace."
     ;; within the container.
     (call-with-output-file (scope "/uid_map")
       (lambda (port)
-        (format port "0 ~d ~d" uid host-uids)))
+        (format port "~d ~d ~d" guest-uid uid host-uids)))
     (call-with-output-file (scope "/gid_map")
       (lambda (port)
-        (format port "0 ~d ~d" gid host-uids)))))
+        (format port "~d ~d ~d" guest-gid gid host-uids)))))
 
 (define (namespaces->bit-mask namespaces)
   "Return the number suitable for the 'flags' argument of 'clone' that
@@ -210,13 +213,17 @@ corresponds to the symbols in NAMESPACES."
                ('net  CLONE_NEWNET))
               namespaces)))
 
-(define (run-container root mounts namespaces host-uids thunk)
+(define* (run-container root mounts namespaces host-uids thunk
+                        #:key (guest-uid 0) (guest-gid 0))
   "Run THUNK in a new container process and return its PID.  ROOT specifies
 the root directory for the container.  MOUNTS is a list of <file-system>
 objects that specify file systems to mount inside the container.  NAMESPACES
 is a list of symbols that correspond to the possible Linux namespaces: mnt,
-ipc, uts, user, and net.  HOST-UIDS specifies the number of
-host user identifiers to map into the user namespace."
+ipc, uts, user, and net.
+
+HOST-UIDS specifies the number of host user identifiers to map into the user
+namespace.  GUEST-UID and GUEST-GID specify the first UID (respectively GID)
+that host UIDs (respectively GIDs) map to in the namespace."
   ;; The parent process must initialize the user namespace for the child
   ;; before it can boot.  To negotiate this, a pipe is used such that the
   ;; child process blocks until the parent writes to it.
@@ -254,7 +261,9 @@ host user identifiers to map into the user namespace."
          (pid
           (close-port child)
           (when (memq 'user namespaces)
-            (initialize-user-namespace pid host-uids))
+            (initialize-user-namespace pid host-uids
+                                       #:guest-uid guest-uid
+                                       #:guest-gid guest-gid))
           ;; TODO: Initialize cgroups.
           (write 'ready parent)
           (newline parent)
@@ -271,23 +280,30 @@ host user identifiers to map into the user namespace."
                #f)))))))))
 
 (define* (call-with-container mounts thunk #:key (namespaces %namespaces)
-                              (host-uids 1))
+                              (host-uids 1) (guest-uid 0) (guest-gid 0))
   "Run THUNK in a new container process and return its exit status.
 MOUNTS is a list of <file-system> objects that specify file systems to mount
 inside the container.  NAMESPACES is a list of symbols corresponding to
 the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net.  By
-default, all namespaces are used.  HOST-UIDS is the number of host user
-identifiers to map into the container's user namespace, if there is one.  By
-default, only a single uid/gid, that of the current user, is mapped into the
-container.  The host user that creates the container is the root user (uid/gid
-0) within the container.  Only root can map more than a single uid/gid.
+default, all namespaces are used.
+
+HOST-UIDS is the number of host user identifiers to map into the container's
+user namespace, if there is one.  By default, only a single uid/gid, that of
+the current user, is mapped into the container.  The host user that creates
+the container is the root user (uid/gid 0) within the container.  Only root
+can map more than a single uid/gid.
+
+GUEST-UID and GUEST-GID specify the first UID (respectively GID) that host
+UIDs (respectively GIDs) map to in the namespace.
 
 Note that if THUNK needs to load any additional Guile modules, the relevant
 module files must be present in one of the mappings in MOUNTS and the Guile
 load path must be adjusted as needed."
   (call-with-temporary-directory
    (lambda (root)
-     (let ((pid (run-container root mounts namespaces host-uids thunk)))
+     (let ((pid (run-container root mounts namespaces host-uids thunk
+                               #:guest-uid guest-uid
+                               #:guest-gid guest-gid)))
        ;; Catch SIGINT and kill the container process.
        (sigaction SIGINT
          (lambda (signum)
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 6d6a0c4cb4..ac99d6b1a3 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -37,6 +37,7 @@
   #:use-module (ice-9 popen)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
+  #:use-module (srfi srfi-19)
   #:use-module (srfi srfi-26)
   #:export (qemu-command
             load-in-linux-vm
@@ -144,6 +145,7 @@ the #:references-graphs parameter of 'derivation'."
     (_ #f))
 
   (apply invoke qemu "-nographic" "-no-reboot"
+         "-smp" (number->string (parallel-job-count))
          "-m" (number->string memory-size)
          "-object" "rng-random,filename=/dev/urandom,id=guixsd-vm-rng"
          "-device" "virtio-rng-pci,rng=guixsd-vm-rng"
@@ -458,6 +460,29 @@ GRUB configuration and OS-DRV as the stuff in it."
               closures)
     (register-bootcfg-root "/tmp/root" config-file))
 
+  ;; 'grub-mkrescue' calls out to mtools programs to create 'efi.img', a FAT
+  ;; file system image, and mtools honors SOURCE_DATE_EPOCH for the mtime of
+  ;; those files.  The epoch for FAT is Jan. 1st 1980, not 1970, so choose
+  ;; that.
+  (setenv "SOURCE_DATE_EPOCH"
+          (number->string
+           (time-second
+            (date->time-utc (make-date 0 0 0 0 1 1 1980 0)))))
+
+  ;; Our patched 'grub-mkrescue' honors this environment variable and passes
+  ;; it to 'mformat', which makes it the serial number of 'efi.img'.  This
+  ;; allows for deterministic builds.
+  (setenv "GRUB_FAT_SERIAL_NUMBER"
+          (number->string (if volume-uuid
+
+                              ;; On 32-bit systems the 2nd argument must be
+                              ;; lower than 2^32.
+                              (string-hash (iso9660-uuid->string volume-uuid)
+                                           (- (expt 2 32) 1))
+
+                              #x77777777)
+                          16))
+
   (let ((pipe
          (apply open-pipe* OPEN_WRITE
                 grub-mkrescue "-o" target
@@ -472,9 +497,8 @@ GRUB configuration and OS-DRV as the stuff in it."
                 "-path-list" "-"
                 "--"
 
-                ;; XXX: Add padding to avoid I/O errors on i686:
-                ;; <https://bugs.gnu.org/33639>.
-                "-padding" "10m"
+                ;; Set all timestamps to 1.
+                "-volume_date" "all_file_dates" "=1"
 
                 "-volid" (string-upcase volume-id)
                 (if volume-uuid
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 479d940b4a..fe2841397e 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,13 +43,17 @@
   #:use-module (srfi srfi-1)
   #:export (installer-program))
 
-(define not-config?
-  ;; Select (guix …) and (gnu …) modules, except (guix config).
+(define module-to-import?
+  ;; Return true for modules that should be imported.  For (gnu system …) and
+  ;; (gnu packages …) modules, we simply add the whole 'guix' package via
+  ;; 'with-extensions' (to avoid having to rebuild it all), which is why these
+  ;; modules are excluded here.
   (match-lambda
     (('guix 'config) #f)
-    (('guix rest ...) #t)
-    (('gnu rest ...) #t)
-    (rest #f)))
+    (('gnu 'installer _ ...) #t)
+    (('gnu 'build _ ...) #t)
+    (('guix 'build _ ...) #t)
+    (_ #f)))
 
 (define* (build-compiled-file name locale-builder)
   "Return a file-like object that evalutes the gexp LOCALE-BUILDER and store
@@ -86,9 +91,17 @@ version of this file."
 
 (define apply-locale
   ;; Install the specified locale.
-  #~(lambda (locale-name)
-      (false-if-exception
-       (setlocale LC_ALL locale-name))))
+  (with-imported-modules (source-module-closure '((gnu services herd)))
+    #~(lambda (locale)
+        (false-if-exception
+         (setlocale LC_ALL locale))
+
+        ;; Restart the documentation viewer so it displays the manual in
+        ;; language that corresponds to LOCALE.
+        (with-error-to-port (%make-void-port "w")
+          (lambda ()
+            (stop-service 'term-tty2)
+            (start-service 'term-tty2 (list locale)))))))
 
 (define* (compute-locale-step #:key
                               locales-name
@@ -156,7 +169,8 @@ selected keymap."
                (lambda (models layouts)
                  ((installer-keymap-page current-installer)
                   layouts)))))
-        (#$apply-keymap result))))
+        (#$apply-keymap result)
+        result)))
 
 (define (installer-steps)
   (let ((locale-step (compute-locale-step
@@ -168,14 +182,6 @@ selected keymap."
                                         "/share/zoneinfo/zone.tab")))
     #~(lambda (current-installer)
         (list
-         ;; Welcome the user and ask him to choose between manual
-         ;; installation and graphical install.
-         (installer-step
-          (id 'welcome)
-          (compute (lambda _
-                     ((installer-welcome-page current-installer)
-                      #$(local-file "installer/aux-files/logo.txt")))))
-
          ;; Ask the user to choose a locale among those supported by
          ;; the glibc.  Install the selected locale right away, so that
          ;; the user may benefit from any available translation for the
@@ -187,6 +193,14 @@ selected keymap."
                      (#$locale-step current-installer)))
           (configuration-formatter locale->configuration))
 
+         ;; Welcome the user and ask them to choose between manual
+         ;; installation and graphical install.
+         (installer-step
+          (id 'welcome)
+          (compute (lambda _
+                     ((installer-welcome-page current-installer)
+                      #$(local-file "installer/aux-files/logo.txt")))))
+
          ;; Ask the user to select a timezone under glibc format.
          (installer-step
           (id 'timezone)
@@ -208,7 +222,8 @@ selected keymap."
           (id 'keymap)
           (description (G_ "Keyboard mapping selection"))
           (compute (lambda _
-                     (#$keymap-step current-installer))))
+                     (#$keymap-step current-installer)))
+          (configuration-formatter keyboard-layout->configuration))
 
          ;; Run a partitioning tool allowing the user to modify
          ;; partition tables, partitions and their mount points.
@@ -249,8 +264,7 @@ selected keymap."
           (description (G_ "Services"))
           (compute (lambda _
                      ((installer-services-page current-installer))))
-	  (configuration-formatter
-           desktop-environments->configuration))
+	  (configuration-formatter system-services->configuration))
 
 	 (installer-step
           (id 'final)
@@ -293,13 +307,16 @@ selected keymap."
      "gnu/installer"))
 
   (define installer-builder
+    ;; Note: Include GUIX as an extension to get all the (gnu system …), (gnu
+    ;; packages …), etc. modules.
     (with-extensions (list guile-gcrypt guile-newt
                            guile-parted guile-bytestructures
-                           guile-json)
+                           guile-json guile-git guix)
       (with-imported-modules `(,@(source-module-closure
                                   `(,@modules
+                                    (gnu services herd)
                                     (guix build utils))
-                                  #:select? not-config?)
+                                  #:select? module-to-import?)
                                ((guix config) => ,(make-config.scm)))
         #~(begin
             (use-modules (gnu installer record)
@@ -313,6 +330,9 @@ selected keymap."
                          (gnu installer timezone)
                          (gnu installer user)
                          (gnu installer newt)
+                         ((gnu installer newt keymap)
+                          #:select (keyboard-layout->configuration))
+                         (gnu services herd)
                          (guix i18n)
                          (guix build utils)
                          (ice-9 match))
@@ -324,16 +344,40 @@ selected keymap."
             ;; Add some binaries used by the installers to PATH.
             #$set-installer-path
 
+            ;; Arrange for language and territory name translations to be
+            ;; available.  We need them at run time, not just compile time,
+            ;; because some territories have several corresponding languages
+            ;; (e.g., "French" is always displayed as "français", but
+            ;; "Belgium" could be translated to Dutch, French, or German.)
+            (bindtextdomain "iso_639-3"           ;languages
+                            #+(file-append iso-codes "/share/locale"))
+            (bindtextdomain "iso_3166-1"          ;territories
+                            #+(file-append iso-codes "/share/locale"))
+
+            ;; Likewise for XKB keyboard layout names.
+            (bindtextdomain "xkeyboard-config"
+                            #+(file-append xkeyboard-config "/share/locale"))
+
             (let* ((current-installer newt-installer)
                    (steps (#$steps current-installer)))
               ((installer-init current-installer))
 
               (catch #t
                 (lambda ()
-                  (run-installer-steps
-                   #:rewind-strategy 'menu
-                   #:menu-proc (installer-menu-page current-installer)
-                   #:steps steps))
+                  (define results
+                    (run-installer-steps
+                     #:rewind-strategy 'menu
+                     #:menu-proc (installer-menu-page current-installer)
+                     #:steps steps))
+
+                  (match (result-step results 'final)
+                    ('success
+                     ;; We did it!  Let's reboot!
+                     (sync)
+                     (stop-service 'root))
+                    (_                            ;installation failed
+                     ;; TODO: Honor the result of 'run-install-failed-page'.
+                     #f)))
                 (const #f)
                 (lambda (key . args)
                   (let ((error-file "/tmp/last-installer-error"))
@@ -356,4 +400,5 @@ selected keymap."
        ;; some reason, unicode support is not correctly installed
        ;; when calling this in 'installer-builder'.
        (setenv "LANG" "en_US.UTF-8")
-       (system #$(program-file "installer-real" installer-builder)))))
+       (execl #$(program-file "installer-real" installer-builder)
+              "installer-real"))))
diff --git a/gnu/installer/final.scm b/gnu/installer/final.scm
index e1c62f5ce0..855b640030 100644
--- a/gnu/installer/final.scm
+++ b/gnu/installer/final.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,17 +21,98 @@
   #:use-module (gnu installer newt page)
   #:use-module (gnu installer steps)
   #:use-module (gnu installer utils)
+  #:use-module (gnu installer user)
   #:use-module (gnu services herd)
   #:use-module (guix build utils)
+  #:use-module (gnu build accounts)
+  #:use-module ((gnu system shadow) #:prefix sys:)
+  #:use-module (rnrs io ports)
   #:export (install-system))
 
-(define (install-system)
-  "Start COW-STORE service on target directory and launch guix install command
-in a subshell."
+(define %seed
+  (seed->random-state
+   (logxor (getpid) (car (gettimeofday)))))
+
+(define (integer->alphanumeric-char n)
+  "Map N, an integer in the [0..62] range, to an alphanumeric character."
+  (cond ((< n 10)
+         (integer->char (+ (char->integer #\0) n)))
+        ((< n 36)
+         (integer->char (+ (char->integer #\A) (- n 10))))
+        ((< n 62)
+         (integer->char (+ (char->integer #\a) (- n 36))))
+        (else
+         (error "integer out of bounds" n))))
+
+(define (random-string len)
+  "Compute a random string of size LEN where each character is alphanumeric."
+  (let loop ((chars '())
+             (len len))
+    (if (zero? len)
+        (list->string chars)
+        (let ((n (random 62 %seed)))
+          (loop (cons (integer->alphanumeric-char n) chars)
+                (- len 1))))))
+
+(define (create-user-database users root)
+  "Create /etc/passwd, /etc/shadow, and /etc/group under ROOT for the given
+USERS."
+  (define etc
+    (string-append root "/etc"))
+
+  (define (salt)
+    ;; "$6" gives us a SHA512 password hash; the random string must be taken
+    ;; from the './0-9A-Za-z' alphabet (info "(libc) Passphrase Storage").
+    (string-append "$6$" (random-string 10)))
+
+  (define users*
+    (map (lambda (user)
+           (define root?
+             (string=? "root" (user-name user)))
+
+           (sys:user-account (name (user-name user))
+                             (comment (user-real-name user))
+                             (group "users")
+                             (uid (if root? 0 #f))
+                             (home-directory
+                              (user-home-directory user))
+                             (password (crypt (user-password user)
+                                              (salt)))
+
+                             ;; We need a string here, not a file-like, hence
+                             ;; this choice.
+                             (shell
+                              "/run/current-system/profile/bin/bash")))
+         users))
+
+  (define-values (group password shadow)
+    (user+group-databases users* sys:%base-groups
+                          #:current-passwd '()
+                          #:current-groups '()
+                          #:current-shadow '()))
+
+  (mkdir-p etc)
+  (write-group group (string-append etc "/group"))
+  (write-passwd password (string-append etc "/passwd"))
+  (write-shadow shadow (string-append etc "/shadow")))
+
+(define* (install-system locale #:key (users '()))
+  "Create /etc/shadow and /etc/passwd on the installation target for USERS.
+Start COW-STORE service on target directory and launch guix install command in
+a subshell.  LOCALE must be the locale name under which that command will run,
+or #f.  Return #t on success and #f on failure."
   (let ((install-command
          (format #f "guix system init ~a ~a"
                  (%installer-configuration-file)
                  (%installer-target-dir))))
     (mkdir-p (%installer-target-dir))
+
+    ;; We want to initialize user passwords but we don't want to store them in
+    ;; the config file since the password hashes would end up world-readable
+    ;; in the store.  Thus, create /etc/shadow & co. here such that, on the
+    ;; first boot, the activation snippet that creates accounts will reuse the
+    ;; passwords that we've put in there.
+    (create-user-database users (%installer-target-dir))
+
     (start-service 'cow-store (list (%installer-target-dir)))
-    (false-if-exception (run-shell-command install-command))))
+    (run-shell-command install-command #:locale locale)))
diff --git a/gnu/installer/keymap.scm b/gnu/installer/keymap.scm
index d66b376d9c..df9fc5e441 100644
--- a/gnu/installer/keymap.scm
+++ b/gnu/installer/keymap.scm
@@ -36,6 +36,7 @@
             make-x11-keymap-layout
             x11-keymap-layout?
             x11-keymap-layout-name
+            x11-keymap-layout-synopsis
             x11-keymap-layout-description
             x11-keymap-layout-variants
 
@@ -60,7 +61,8 @@
   x11-keymap-layout make-x11-keymap-layout
   x11-keymap-layout?
   (name            x11-keymap-layout-name) ;string
-  (description     x11-keymap-layout-description) ;string
+  (synopsis        x11-keymap-layout-synopsis)    ;string (e.g., "en")
+  (description     x11-keymap-layout-description) ;string (a whole phrase)
   (variants        x11-keymap-layout-variants)) ;list of <x11-keymap-variant>
 
 (define-record-type* <x11-keymap-variant>
@@ -117,6 +119,8 @@ Configuration Database, describing possible XKB configurations."
                   (variantList ,[variant -> v] ...))
                  (x11-keymap-layout
                   (name name)
+                  (synopsis (car
+                             (assoc-ref rest-layout 'shortDescription)))
                   (description (car
                                 (assoc-ref rest-layout 'description)))
                   (variants (list v ...)))]
@@ -126,6 +130,8 @@ Configuration Database, describing possible XKB configurations."
                    . ,rest-layout))
                  (x11-keymap-layout
                   (name name)
+                  (synopsis (car
+                             (assoc-ref rest-layout 'shortDescription)))
                   (description (car
                                 (assoc-ref rest-layout 'description)))
                   (variants '()))]))
diff --git a/gnu/installer/locale.scm b/gnu/installer/locale.scm
index 2b45b2200a..284062a6e7 100644
--- a/gnu/installer/locale.scm
+++ b/gnu/installer/locale.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -69,6 +70,24 @@
       (codeset   . ,(match:substring matches 5))
       (modifier  . ,(match:substring matches 7)))))
 
+(define (normalize-codeset codeset)
+  "Compute the \"normalized\" variant of CODESET."
+  ;; info "(libc) Using gettextized software", for the algorithm used to
+  ;; compute the normalized codeset.
+  (letrec-syntax ((-> (syntax-rules ()
+                        ((_ proc value)
+                         (proc value))
+                        ((_ proc rest ...)
+                         (proc (-> rest ...))))))
+    (-> (lambda (str)
+          (if (string-every char-set:digit str)
+              (string-append "iso" str)
+              str))
+        string-downcase
+        (lambda (str)
+          (string-filter char-set:letter+digit str))
+        codeset)))
+
 (define (locale->locale-string locale)
   "Reverse operation of locale-string->locale."
   (let ((language (locale-language locale))
@@ -81,7 +100,7 @@
                    `("_" ,territory)
                    '())
              ,@(if codeset
-                   `("." ,codeset)
+                   `("." ,(normalize-codeset codeset))
                    '())
              ,@(if modifier
                    `("@" ,modifier)
diff --git a/gnu/installer/newt/final.scm b/gnu/installer/newt/final.scm
index 645c1e8689..e375282613 100644
--- a/gnu/installer/newt/final.scm
+++ b/gnu/installer/newt/final.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,15 +30,24 @@
   #:use-module (newt)
   #:export (run-final-page))
 
+(define* (strip-prefix file #:optional (prefix (%installer-target-dir)))
+  "Strip PREFIX from FILE, if PREFIX actually is a prefix of FILE."
+  (if (string-prefix? prefix file)
+      (string-drop file (string-length prefix))
+      file))
+
 (define (run-config-display-page)
   (let ((width (%configuration-file-width))
         (height (nearest-exact-integer
                  (/ (screen-rows) 2))))
     (run-file-textbox-page
-     #:info-text (G_ "We're now ready to proceed with the installation! \
+     #:info-text (format #f (G_ "\
+We're now ready to proceed with the installation! \
 A system configuration file has been generated, it is displayed below.  \
+This file will be available as '~a' on the installed system.  \
 The new system will be created from this file once you've pressed OK.  \
 This will take a few minutes.")
+                         (strip-prefix (%installer-configuration-file)))
      #:title (G_ "Configuration file")
      #:file (%installer-configuration-file)
      #:info-textbox-width width
@@ -55,7 +65,10 @@ This will take a few minutes.")
    (G_ "Reboot")
    (G_ "Congratulations!  Installation is now complete.  \
 You may remove the device containing the installation image and \
-press the button to reboot.")))
+press the button to reboot."))
+
+  ;; Return success so that the installer happily reboots.
+  'success)
 
 (define (run-install-failed-page)
   (choice-window
@@ -65,22 +78,25 @@ press the button to reboot.")))
    (G_ "The final system installation step failed.  You can retry the \
 last step, or restart the installer.")))
 
-(define (run-install-shell)
+(define* (run-install-shell locale
+                            #:key (users '()))
   (clear-screen)
   (newt-suspend)
-  (let ((install-ok? (install-system)))
+  (let ((install-ok? (install-system locale #:users users)))
     (newt-resume)
     install-ok?))
 
 (define (run-final-page result prev-steps)
-  (let* ((configuration (format-configuration prev-steps result))
+  (let* ((configuration   (format-configuration prev-steps result))
          (user-partitions (result-step result 'partition))
+         (locale          (result-step result 'locale))
+         (users           (result-step result 'user))
          (install-ok?
           (with-mounted-partitions
            user-partitions
            (configuration->file configuration)
            (run-config-display-page)
-           (run-install-shell))))
+           (run-install-shell locale #:users users))))
     (if install-ok?
         (run-install-success-page)
         (run-install-failed-page))))
diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm
index 3e765bfdd4..2908ba7f0e 100644
--- a/gnu/installer/newt/keymap.scm
+++ b/gnu/installer/newt/keymap.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,10 @@
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
-  #:export (run-keymap-page))
+  #:use-module (ice-9 i18n)
+  #:use-module (ice-9 match)
+  #:export (run-keymap-page
+            keyboard-layout->configuration))
 
 (define (run-layout-page layouts layout->text)
   (let ((title (G_ "Layout")))
@@ -61,14 +65,29 @@
 
 (define (sort-layouts layouts)
   "Sort LAYOUTS list by putting the US layout ahead and return it."
+  (define (layout<? layout1 layout2)
+    (let ((text1 (x11-keymap-layout-description layout1))
+          (text2 (x11-keymap-layout-description layout2)))
+      ;; XXX: We're calling 'gettext' more than once per item.
+      (string-locale<? (gettext text1 "xkeyboard-config")
+                       (gettext text2 "xkeyboard-config"))))
+
+  (define preferred
+    ;; Two-letter language tag for the preferred keyboard layout.
+    (or (getenv "LANGUAGE") "us"))
+
   (call-with-values
       (lambda ()
         (partition
          (lambda (layout)
-           (let ((name (x11-keymap-layout-name layout)))
-             (string=? name "us")))
+           ;; The 'synopsis' field is usually a language code (e.g., "en")
+           ;; while the 'name' field is a country code (e.g., "us").
+           (or (string=? (x11-keymap-layout-name layout) preferred)
+               (string=? (x11-keymap-layout-synopsis layout) preferred)))
          layouts))
-    (cut append <> <>)))
+    (lambda (main others)
+      (append (sort main layout<?)
+              (sort others layout<?)))))
 
 (define (sort-variants variants)
   "Sort VARIANTS list by putting the international variant ahead and return it."
@@ -94,7 +113,8 @@ names of the selected keyboard layout and variant."
          (run-layout-page
           (sort-layouts layouts)
           (lambda (layout)
-            (x11-keymap-layout-description layout))))))
+            (gettext (x11-keymap-layout-description layout)
+                     "xkeyboard-config"))))))
      ;; Propose the user to select a variant among those supported by the
      ;; previously selected layout.
      (installer-step
@@ -108,15 +128,24 @@ names of the selected keyboard layout and variant."
                 (run-variant-page
                  (sort-variants variants)
                  (lambda (variant)
-                   (x11-keymap-variant-description
-                    variant))))))))))
+                   (gettext (x11-keymap-variant-description variant)
+                            "xkeyboard-config"))))))))))
 
   (define (format-result result)
     (let ((layout (x11-keymap-layout-name
                    (result-step result 'layout)))
           (variant (and=> (result-step result 'variant)
                           (lambda (variant)
-                            (x11-keymap-variant-name variant)))))
+                            (gettext (x11-keymap-variant-name variant)
+                                     "xkeyboard-config")))))
       (list layout (or variant ""))))
   (format-result
    (run-installer-steps #:steps keymap-steps)))
+
+(define (keyboard-layout->configuration keymap)
+  "Return the operating system configuration snippet to install KEYMAP."
+  (match keymap
+    ((name "")
+     `((keyboard-layout (keyboard-layout ,name))))
+    ((name variant)
+     `((keyboard-layout (keyboard-layout ,name ,variant))))))
diff --git a/gnu/installer/newt/locale.scm b/gnu/installer/newt/locale.scm
index 4fa07df81e..7108e2960b 100644
--- a/gnu/installer/newt/locale.scm
+++ b/gnu/installer/newt/locale.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,17 +31,11 @@
   #:export (run-locale-page))
 
 (define (run-language-page languages language->text)
-  (let ((title (G_ "Locale language")))
+  (define result
     (run-listbox-selection-page
-     #:title title
-     #:info-text (G_ "Choose the locale's language to be used for the \
-installation process. A locale is a regional variant of your language \
-encompassing number, date and currency format, among other details.
-
-Based on the language you choose, you will possibly be asked to \
-select a locale's territory, codeset and modifier in the next \
-steps. The locale will also be used as the default one for the \
-installed system.")
+     #:title (G_ "Locale language")
+     #:info-text (G_ "Choose the language to use for the \
+installation process and for the installed system.")
      #:info-textbox-width 70
      #:listbox-items languages
      #:listbox-item->text language->text
@@ -50,14 +45,19 @@ installed system.")
      (lambda _
        (raise
         (condition
-         (&installer-step-abort)))))))
+         (&installer-step-abort))))))
+
+  ;; Immediately install the chosen language so that the territory page that
+  ;; comes after (optionally) is displayed in the chosen language.
+  (setenv "LANGUAGE" result)
+
+  result)
 
 (define (run-territory-page territories territory->text)
   (let ((title (G_ "Locale location")))
     (run-listbox-selection-page
      #:title title
-     #:info-text (G_ "Choose your locale's location. This is a shortlist of \
-locations based on the language you selected.")
+     #:info-text (G_ "Choose a territory for this language.")
      #:listbox-items territories
      #:listbox-item->text territory->text
      #:button-text (G_ "Back")
@@ -71,8 +71,7 @@ locations based on the language you selected.")
   (let ((title (G_ "Locale codeset")))
     (run-listbox-selection-page
      #:title title
-     #:info-text (G_ "Choose your locale's codeset. If UTF-8 is available, \
- it should be preferred.")
+     #:info-text (G_ "Choose the locale encoding.")
      #:listbox-items codesets
      #:listbox-item->text identity
      #:listbox-default-item "UTF-8"
@@ -163,7 +162,13 @@ glibc locale string and return it."
          (run-language-page
           (sort-languages
            (delete-duplicates (map locale-language supported-locales)))
-          (cut language-code->language-name iso639-languages <>)))))
+          (lambda (language)
+            (let ((english (language-code->language-name iso639-languages
+                                                         language)))
+              (setenv "LANGUAGE" language)
+              (let ((native (gettext english "iso_639-3")))
+                (unsetenv "LANGUAGE")
+                native)))))))
      (installer-step
       (id 'territory)
       (compute
@@ -177,10 +182,11 @@ glibc locale string and return it."
            ;; supported by the previously selected language.
            (run-territory-page
             (delete-duplicates (map locale-territory locales))
-            (lambda (territory-code)
-              (if territory-code
-                  (territory-code->territory-name iso3166-territories
-                                                  territory-code)
+            (lambda (territory)
+              (if territory
+                  (let ((english (territory-code->territory-name
+                                  iso3166-territories territory)))
+                    (gettext english "iso_3166-1"))
                   (G_ "No location"))))))))
      (installer-step
       (id 'codeset)
@@ -191,9 +197,11 @@ glibc locale string and return it."
            ;; narrow down the search of a locale.
            (break-on-locale-found locales)
 
-           ;; Otherwise, ask for a codeset.
-           (run-codeset-page
-            (delete-duplicates (map locale-codeset locales)))))))
+           ;; Otherwise, choose a codeset.
+           (let ((codesets (delete-duplicates (map locale-codeset locales))))
+             (if (member "UTF-8" codesets)
+                 "UTF-8"                          ;don't even ask
+                 (run-codeset-page codesets)))))))
      (installer-step
       (id 'modifier)
       (compute
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index f13176dc61..cf27a8cca2 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -59,7 +59,7 @@ Internet and return the selected technology. For now, only technologies with
                (G_ "Internet access")
                (G_ "Continue")
                (G_ "Exit")
-               (G_ "The install process requires an internet access, but no \
+               (G_ "The install process requires Internet access but no \
 network device were found. Do you want to continue anyway?"))
           ((1) (raise
                 (condition
@@ -68,7 +68,7 @@ network device were found. Do you want to continue anyway?"))
                 (condition
                  (&installer-step-abort)))))
         (run-listbox-selection-page
-         #:info-text (G_ "The install process requires an internet access.\
+         #:info-text (G_ "The install process requires Internet access.\
  Please select a network device.")
          #:title (G_ "Internet access")
          #:listbox-items items
@@ -93,7 +93,8 @@ network device were found. Do you want to continue anyway?"))
         (full-value 5))
     (run-scale-page
      #:title (G_ "Powering technology")
-     #:info-text (format #f "Waiting for technology ~a to be powered." name)
+     #:info-text (format #f (G_ "Waiting for technology ~a to be powered.")
+                         name)
      #:scale-full-value full-value
      #:scale-update-proc
      (lambda (value)
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index 23fbfcce76..3173d54737 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
   #:use-module (gnu installer utils)
   #:use-module (gnu installer newt utils)
   #:use-module (guix i18n)
+  #:use-module (ice-9 i18n)
   #:use-module (ice-9 match)
   #:use-module (ice-9 receive)
   #:use-module (srfi srfi-1)
@@ -29,6 +31,7 @@
             draw-connecting-page
             run-input-page
             run-error-page
+            run-confirmation-page
             run-listbox-selection-page
             run-scale-page
             run-checkbox-tree-page
@@ -72,17 +75,20 @@ this page to TITLE."
                          #:key
                          (allow-empty-input? #f)
                          (default-text #f)
-                         (input-field-width 40))
+                         (input-field-width 40)
+                         (input-flags 0))
   "Run a page to prompt user for an input. The given TEXT will be displayed
 above the input field. The page title is set to TITLE. Unless
 allow-empty-input? is set to #t, an error page will be displayed if the user
-enters an empty input."
+enters an empty input.  INPUT-FLAGS is a bitwise-or'd set of flags for the
+input box, such as FLAG-PASSWORD."
   (let* ((text-box
           (make-reflowed-textbox -1 -1 text
                                  input-field-width
                                  #:flags FLAG-BORDER))
          (grid (make-grid 1 3))
-         (input-entry (make-entry -1 -1 20))
+         (input-entry (make-entry -1 -1 20
+                                  #:flags input-flags))
          (ok-button (make-button -1 -1 (G_ "OK")))
          (form (make-form)))
 
@@ -141,6 +147,42 @@ of the page is set to TITLE."
     (newt-set-color COLORSET-ROOT "white" "blue")
     (destroy-form-and-pop form)))
 
+(define* (run-confirmation-page text title
+                                #:key (exit-button-procedure (const #f)))
+  "Run a page to inform the user of an error. The page contains the given TEXT
+to explain the error and an \"OK\" button to acknowledge the error. The title
+of the page is set to TITLE."
+  (let* ((text-box
+          (make-reflowed-textbox -1 -1 text 40
+                                 #:flags FLAG-BORDER))
+         (ok-button (make-button -1 -1 (G_ "Continue")))
+         (exit-button (make-button -1 -1 (G_ "Exit")))
+         (grid (vertically-stacked-grid
+                GRID-ELEMENT-COMPONENT text-box
+                GRID-ELEMENT-SUBGRID
+                (horizontal-stacked-grid
+                 GRID-ELEMENT-COMPONENT ok-button
+                 GRID-ELEMENT-COMPONENT exit-button)))
+         (form (make-form)))
+
+    (add-form-to-grid grid form #t)
+    (make-wrapped-grid-window grid title)
+
+    (receive (exit-reason argument)
+        (run-form form)
+      (dynamic-wind
+        (const #t)
+        (lambda ()
+          (case exit-reason
+            ((exit-component)
+             (cond
+              ((components=? argument ok-button)
+               #t)
+              ((components=? argument exit-button)
+               (exit-button-procedure))))))
+        (lambda ()
+          (destroy-form-and-pop form))))))
+
 (define* (run-listbox-selection-page #:key
                                      info-text
                                      title
@@ -185,7 +227,7 @@ be selected (using the <SPACE> key). It that case, a list containing the
 selected items will be returned.
 
 If SORT-LISTBOX-ITEMS? is set to #t, the listbox items are sorted using
-'string<=' procedure (after being converted to text).
+'string-locale<?' procedure (after being converted to text).
 
 If ALLOW-DELETE? is #t, the form will return if the <DELETE> key is pressed,
 otherwise nothing will happen.
@@ -211,7 +253,7 @@ ITEM was inserted into LISTBOX."
          items))
 
   (define (sort-listbox-items listbox-items)
-    "Return LISTBOX-ITEMS sorted using the 'string<=' procedure on the text
+    "Return LISTBOX-ITEMS sorted using the 'string-locale<?' procedure on the text
 corresponding to each item in the list."
     (let* ((items (map (lambda (item)
                          (cons item (listbox-item->text item)))
@@ -220,7 +262,7 @@ corresponding to each item in the list."
             (sort items (lambda (a b)
                           (let ((text-a (cdr a))
                                 (text-b (cdr b)))
-                            (string<= text-a text-b))))))
+                            (string-locale<? text-a text-b))))))
       (map car sorted-items)))
 
   ;; Store the last selected listbox item's key.
@@ -395,10 +437,14 @@ error is raised if the MAX-SCALE-UPDATE limit is reached."
       (lambda ()
         (destroy-form-and-pop form)))))
 
+(define %none-selected
+  (circular-list #f))
+
 (define* (run-checkbox-tree-page #:key
                                  info-text
                                  title
                                  items
+                                 (selection %none-selected)
                                  item->text
                                  (info-textbox-width 50)
                                  (checkbox-tree-height 10)
@@ -411,7 +457,8 @@ a checkbox list. The page contains vertically stacked from the top to the
 bottom, an informative text set to INFO-TEXT, the checkbox list and two
 buttons, 'Ok' and 'Exit'. The page title's is set to TITLE. ITEMS are
 converted to text using ITEM->TEXT before being displayed in the checkbox
-list.
+list.  SELECTION is a list of Booleans of the same length as ITEMS that
+specifies which items are initially checked.
 
 INFO-TEXTBOX-WIDTH is the width of the textbox where INFO-TEXT will be
 displayed. CHECKBOX-TREE-HEIGHT is the height of the checkbox list.
@@ -423,12 +470,15 @@ pressed.
 This procedure returns the list of checked items in the checkbox list among
 ITEMS when 'Ok' is pressed."
   (define (fill-checkbox-tree checkbox-tree items)
-    (map
-     (lambda (item)
-       (let* ((item-text (item->text item))
-              (key (add-entry-to-checkboxtree checkbox-tree item-text 0)))
-         (cons key item)))
-     items))
+    (map (lambda (item selected?)
+           (let* ((item-text (item->text item))
+                  (key (add-entry-to-checkboxtree checkbox-tree item-text
+                                                  (if selected?
+                                                      FLAG-SELECTED
+                                                      0))))
+             (cons key item)))
+         items
+         selection))
 
   (let* ((checkbox-tree
           (make-checkboxtree -1 -1
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index d4c91edc66..2b22ac85b4 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,8 +42,8 @@
 (define (run-scheme-page)
   "Run a page asking the user for a partitioning scheme."
   (let* ((items
-          '((root . "Everything is one partition")
-            (root-home . "Separate /home partition")))
+          `((root . ,(G_ "Everything is one partition"))
+            (root-home . ,(G_ "Separate /home partition"))))
          (result (run-listbox-selection-page
                   #:info-text (G_ "Please select a partitioning scheme.")
                   #:title (G_ "Partition scheme")
@@ -53,7 +54,12 @@
     (car result)))
 
 (define (draw-formatting-page)
-  "Draw a page to indicate partitions are being formated."
+  "Draw a page asking for confirmation, and then indicating that partitions
+are being formatted."
+  (run-confirmation-page (G_ "We are about to format your hard disk.  All \
+its data will be lost.  Do you wish to continue?")
+                         (G_ "Format disk?")
+                         #:exit-button-procedure button-exit-action)
   (draw-info-page
    (format #f (G_ "Partition formatting is in progress, please wait."))
    (G_ "Preparing partitions")))
@@ -146,6 +152,10 @@ USER-PARTITIONS list. Return this list with password fields filled-in."
                 (file-name (user-partition-file-name user-part))
                 (password-page
                  (lambda ()
+                   ;; Note: Don't use FLAG-PASSWORD here because this is the
+                   ;; first bit of text that the user types in, so it's
+                   ;; probably safer if they can see that the keyboard layout
+                   ;; they chose is in effect.
                    (run-input-page
                     (format #f (G_ "Please enter the password for the \
 encryption of partition ~a (label: ~a).") file-name crypt-label)
@@ -155,7 +165,8 @@ encryption of partition ~a (label: ~a).") file-name crypt-label)
                    (run-input-page
                     (format #f (G_ "Please confirm the password for the \
 encryption of partition ~a (label: ~a).") file-name crypt-label)
-                    (G_ "Password confirmation required")))))
+                    (G_ "Password confirmation required")
+                    #:input-flags FLAG-PASSWORD))))
            (if crypt-label
                (let loop ()
                  (let ((password (password-page))
@@ -418,10 +429,10 @@ partition. Leave this field empty if you don't want to set a mounting point.")
           (run-listbox-selection-page
            #:info-text
            (if creation?
-               (G_ (format #f "Creating ~a partition starting at ~a of ~a."
-                           type-str start file-name))
-               (G_ (format #f "You are currently editing partition ~a."
-                           number-str)))
+               (format #f (G_ "Creating ~a partition starting at ~a of ~a.")
+                       type-str start file-name)
+               (format #f (G_ "You are currently editing partition ~a.")
+                       number-str))
            #:title (if creation?
                        (G_ "Partition creation")
                        (G_ "Partition edit"))
@@ -662,7 +673,8 @@ by pressing the Exit button.~%~%")))
           #:title (if guided?
                       (G_ "Guided partitioning")
                       (G_ "Manual partitioning"))
-          #:info-textbox-width 70
+          #:info-textbox-width 76         ;we need a lot of room for INFO-TEXT
+          #:listbox-height 12
           #:listbox-items (disk-items)
           #:listbox-item->text cdr
           #:sort-listbox-items? #f
@@ -713,9 +725,9 @@ by pressing the Exit button.~%~%")))
   "Run a page asking the user for a partitioning method."
   (define (run-page devices)
     (let* ((items
-            '((entire . "Guided - using the entire disk")
-              (entire-encrypted . "Guided - using the entire disk with encryption")
-              (manual . "Manual")))
+            `((entire . ,(G_ "Guided - using the entire disk"))
+              (entire-encrypted . ,(G_ "Guided - using the entire disk with encryption"))
+              (manual . ,(G_ "Manual"))))
            (result (run-listbox-selection-page
                     #:info-text (G_ "Please select a partitioning method.")
                     #:title (G_ "Partitioning method")
diff --git a/gnu/installer/newt/services.scm b/gnu/installer/newt/services.scm
index 6bcb6244ae..4f32d9077b 100644
--- a/gnu/installer/newt/services.scm
+++ b/gnu/installer/newt/services.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,19 +31,70 @@
 (define (run-desktop-environments-cbt-page)
   "Run a page allowing the user to choose between various desktop
 environments."
-  (run-checkbox-tree-page
-   #:info-text (G_ "Please select the desktop(s) environment(s) you wish to \
-install. If you select multiple desktops environments, we will be able to \
-choose the one to use on the log-in screen with F1.")
-   #:title (G_ "Desktop environment")
-   #:items %desktop-environments
-   #:item->text desktop-environment-name
-   #:checkbox-tree-height 5
-   #:exit-button-callback-procedure
-   (lambda ()
-     (raise
-      (condition
-       (&installer-step-abort))))))
+  (let ((items (filter desktop-system-service? %system-services)))
+    (run-checkbox-tree-page
+     #:info-text (G_ "Please select the desktop(s) environment(s) you wish to \
+install. If you select multiple desktops environments, you will be able to \
+choose the one to use on the log-in screen.")
+     #:title (G_ "Desktop environment")
+     #:items items
+     #:selection (map system-service-recommended? items)
+     #:item->text system-service-name             ;no i18n for DE names
+     #:checkbox-tree-height 8
+     #:exit-button-callback-procedure
+     (lambda ()
+       (raise
+        (condition
+         (&installer-step-abort)))))))
+
+(define (run-networking-cbt-page)
+  "Run a page allowing the user to select networking services."
+  (let ((items (filter (lambda (service)
+                         (eq? 'networking (system-service-type service)))
+                       %system-services)))
+    (run-checkbox-tree-page
+     #:info-text (G_ "You can now select networking services to run on your \
+system.")
+     #:title (G_ "Network service")
+     #:items items
+     #:selection (map system-service-recommended? items)
+     #:item->text (compose G_ system-service-name)
+     #:checkbox-tree-height 5
+     #:exit-button-callback-procedure
+     (lambda ()
+       (raise
+        (condition
+         (&installer-step-abort)))))))
+
+(define (run-network-management-page)
+  "Run a page to select among several network management methods."
+  (let ((title (G_ "Network management")))
+    (run-listbox-selection-page
+     #:title title
+     #:info-text (G_ "Choose the method to manage network connections.
+
+We recommend NetworkManager or Connman for a WiFi-capable laptop; the DHCP \
+client may be enough for a server.")
+     #:info-textbox-width 70
+     #:listbox-items (filter (lambda (service)
+                               (eq? 'network-management
+                                    (system-service-type service)))
+                             %system-services)
+     #:listbox-item->text (compose G_ system-service-name)
+     #:sort-listbox-items? #f
+     #:button-text (G_ "Exit")
+     #:button-callback-procedure
+     (lambda _
+       (raise
+        (condition
+         (&installer-step-abort)))))))
 
 (define (run-services-page)
-  (run-desktop-environments-cbt-page))
+  (let ((desktop (run-desktop-environments-cbt-page)))
+    ;; When the user did not select any desktop services, and thus didn't get
+    ;; '%desktop-services', offer network management services.
+    (append desktop
+            (run-networking-cbt-page)
+            (if (null? desktop)
+                (list (run-network-management-page))
+                '()))))
diff --git a/gnu/installer/newt/timezone.scm b/gnu/installer/newt/timezone.scm
index 63b44af729..67bf41ff84 100644
--- a/gnu/installer/newt/timezone.scm
+++ b/gnu/installer/newt/timezone.scm
@@ -50,12 +50,15 @@ returned."
 
   (define (run-page timezone-tree)
     (define (loop path)
+      ;; XXX: Translation of time zones isn't perfect here because the
+      ;; "iso_3166-1" domain contains translation for "territories" (like
+      ;; "Antarctic") but not for continents (like "Africa").
       (let ((timezones (locate-children timezone-tree path)))
         (run-listbox-selection-page
          #:title (G_ "Timezone")
          #:info-text (G_ "Please select a timezone.")
          #:listbox-items timezones
-         #:listbox-item->text identity
+         #:listbox-item->text (cut gettext <> "iso_3166-1")
          #:button-text (if (null? path)
                            (G_ "Exit")
                            (G_ "Back"))
diff --git a/gnu/installer/newt/user.scm b/gnu/installer/newt/user.scm
index 59b1913cfc..deab056e0c 100644
--- a/gnu/installer/newt/user.scm
+++ b/gnu/installer/newt/user.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,18 +29,31 @@
   #:use-module (srfi srfi-26)
   #:export (run-user-page))
 
-(define (run-user-add-page)
+(define* (run-user-add-page #:key (name "") (real-name "")
+                            (home-directory ""))
+  "Run a form to enter the user name, home directory, and password.  Use NAME,
+REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
   (define (pad-label label)
     (string-pad-right label 20))
 
   (let* ((label-name
           (make-label -1 -1 (pad-label (G_ "Name"))))
+         (label-real-name
+          (make-label -1 -1 (pad-label (G_ "Real name"))))
          (label-home-directory
           (make-label -1 -1 (pad-label (G_ "Home directory"))))
+         (label-password
+          (make-label -1 -1 (pad-label (G_ "Password"))))
          (entry-width 30)
-         (entry-name (make-entry -1 -1 entry-width))
-         (entry-home-directory (make-entry -1 -1 entry-width))
-         (entry-grid (make-grid 2 2))
+         (entry-name (make-entry -1 -1 entry-width
+                                 #:initial-value name))
+         (entry-real-name (make-entry -1 -1 entry-width
+                                      #:initial-value real-name))
+         (entry-home-directory (make-entry -1 -1 entry-width
+                                           #:initial-value home-directory))
+         (entry-password (make-entry -1 -1 entry-width
+                                     #:flags FLAG-PASSWORD))
+         (entry-grid (make-grid 2 5))
          (button-grid (make-grid 1 1))
          (ok-button (make-button -1 -1 (G_ "OK")))
          (grid (make-grid 1 2))
@@ -50,8 +64,12 @@
 
     (set-entry-grid-field 0 0 label-name)
     (set-entry-grid-field 1 0 entry-name)
-    (set-entry-grid-field 0 1 label-home-directory)
-    (set-entry-grid-field 1 1 entry-home-directory)
+    (set-entry-grid-field 0 1 label-real-name)
+    (set-entry-grid-field 1 1 entry-real-name)
+    (set-entry-grid-field 0 2 label-home-directory)
+    (set-entry-grid-field 1 2 entry-home-directory)
+    (set-entry-grid-field 0 3 label-password)
+    (set-entry-grid-field 1 3 entry-password)
 
     (set-grid-field button-grid 0 0 GRID-ELEMENT-COMPONENT ok-button)
 
@@ -59,11 +77,17 @@
      entry-name
      (lambda (component)
        (set-entry-text entry-home-directory
-                       (string-append "/home/" (entry-value entry-name)))))
+                       (string-append "/home/" (entry-value entry-name)))
+
+       (when (string-null? (entry-value entry-real-name))
+         (set-entry-text entry-real-name
+                         (string-titlecase (entry-value entry-name))))))
 
     (add-components-to-form form
-                            label-name label-home-directory
-                            entry-name entry-home-directory
+                            label-name label-real-name
+                            label-home-directory label-password
+                            entry-name entry-real-name
+                            entry-home-directory entry-password
                             ok-button)
 
     (make-wrapped-grid-window (vertically-stacked-grid
@@ -82,19 +106,57 @@
             (when (eq? exit-reason 'exit-component)
               (cond
                ((components=? argument ok-button)
-                (let ((name (entry-value entry-name))
-                      (home-directory (entry-value entry-home-directory)))
+                (let ((name           (entry-value entry-name))
+                      (real-name      (entry-value entry-real-name))
+                      (home-directory (entry-value entry-home-directory))
+                      (password       (entry-value entry-password)))
                   (if (or (string=? name "")
                           (string=? home-directory ""))
                       (begin
                         (error-page)
                         (run-user-add-page))
-                      (user
-                       (name name)
-                       (home-directory home-directory))))))))
+                      (let ((password (confirm-password password)))
+                        (if password
+                            (user
+                             (name name)
+                             (real-name real-name)
+                             (home-directory home-directory)
+                             (password password))
+                            (run-user-add-page #:name name
+                                               #:real-name real-name
+                                               #:home-directory
+                                               home-directory)))))))))
           (lambda ()
             (destroy-form-and-pop form)))))))
 
+(define* (confirm-password password #:optional (try-again (const #f)))
+  "Ask the user to confirm PASSWORD, a possibly empty string.  Call TRY-AGAIN,
+a thunk, if the confirmation doesn't match PASSWORD, and return its result."
+  (define confirmation
+    (run-input-page (G_ "Please confirm the password.")
+                    (G_ "Password confirmation required")
+                    #:allow-empty-input? #t
+                    #:input-flags FLAG-PASSWORD))
+
+  (if (string=? password confirmation)
+      password
+      (begin
+        (run-error-page
+         (G_ "Password mismatch, please try again.")
+         (G_ "Password error"))
+        (try-again))))
+
+(define (run-root-password-page)
+  ;; TRANSLATORS: Leave "root" untranslated: it refers to the name of the
+  ;; system administrator account.
+  (define password
+    (run-input-page (G_ "Please choose a password for the system \
+administrator (\"root\").")
+                    (G_ "System administrator password")
+                    #:input-flags FLAG-PASSWORD))
+
+  (confirm-password password run-root-password-page))
+
 (define (run-user-page)
   (define (run users)
     (let* ((listbox (make-listbox
@@ -169,7 +231,12 @@
                   (run-error-page (G_ "Please create at least one user.")
                                   (G_ "No user"))
                   (run users))
-                users))))
+                (reverse users)))))
           (lambda ()
             (destroy-form-and-pop form))))))
-  (run '()))
+
+  ;; Add a "root" user simply to convey the root password.
+  (cons (user (name "root")
+              (home-directory "/root")
+              (password (run-root-password-page)))
+        (run '())))
diff --git a/gnu/installer/newt/welcome.scm b/gnu/installer/newt/welcome.scm
index b0b5429c0f..aec3e7a612 100644
--- a/gnu/installer/newt/welcome.scm
+++ b/gnu/installer/newt/welcome.scm
@@ -95,9 +95,11 @@ installation and reboot."
    (G_ "GNU Guix install")
    (G_ "Welcome to GNU Guix system installer!
 
-Please note that the present graphical installer is still under heavy \
-development, so you might want to prefer using the shell based process. \
-The documentation is accessible at any time by pressing CTRL-ALT-F2.")
+You will be guided through a graphical installation program.
+
+If you are familiar with GNU/Linux and you want tight control over \
+the installation process, you can instead choose manual installation.  \
+Documentation is accessible at any time by pressing Ctrl-Alt-F2.")
    logo
    #:listbox-items
    `((,(G_ "Graphical install using a terminal based interface")
diff --git a/gnu/installer/newt/wifi.scm b/gnu/installer/newt/wifi.scm
index 4cf5c128e7..da2f0b56d0 100644
--- a/gnu/installer/newt/wifi.scm
+++ b/gnu/installer/newt/wifi.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,7 +81,7 @@ nmc_wifi_strength_bars."
                  (message (G_ "Unable to find a wifi technology"))))))))
 
 (define (draw-scanning-page)
-  "Draw a page to indicate a wifi scan in in progress."
+  "Draw a page to indicate a wifi scan in progress."
   (draw-info-page (G_ "Scanning wifi for available networks, please wait.")
                   (G_ "Scan in progress")))
 
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index 642b8c6d8a..7cc2217cbe 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,10 @@
   #:use-module ((gnu build file-systems)
                 #:select (read-partition-uuid
                           read-luks-partition-uuid))
+  #:use-module ((gnu build linux-modules)
+                #:select (missing-modules))
+  #:use-module ((gnu system linux-initrd)
+                #:select (%base-initrd-modules))
   #:use-module (guix build syscalls)
   #:use-module (guix build utils)
   #:use-module (guix records)
@@ -1243,22 +1248,51 @@ from (gnu system mapped-devices) and return it."
       (target ,label)
       (type luks-device-mapping))))
 
+(define (root-user-partition? partition)
+  "Return true if PARTITION is the root partition."
+  (let ((mount-point (user-partition-mount-point partition)))
+    (and mount-point
+         (string=? mount-point "/"))))
+
 (define (bootloader-configuration user-partitions)
   "Return the bootloader configuration field for USER-PARTITIONS."
-  (let* ((root-partition
-          (find (lambda (user-partition)
-                  (let ((mount-point
-                         (user-partition-mount-point user-partition)))
-                    (and mount-point
-                         (string=? mount-point "/"))))
-                user-partitions))
+  (let* ((root-partition (find root-user-partition?
+                               user-partitions))
          (root-partition-disk (user-partition-disk-file-name root-partition)))
     `((bootloader-configuration
        ,@(if (efi-installation?)
              `((bootloader grub-efi-bootloader)
                (target ,(default-esp-mount-point)))
              `((bootloader grub-bootloader)
-               (target ,root-partition-disk)))))))
+               (target ,root-partition-disk)))
+
+       ;; XXX: Assume we defined the 'keyboard-layout' field of
+       ;; <operating-system> right above.
+       (keyboard-layout keyboard-layout)))))
+
+(define (user-partition-missing-modules user-partitions)
+  "Return the list of kernel modules missing from the default set of kernel
+modules to access USER-PARTITIONS."
+  (let ((devices (filter user-partition-crypt-label user-partitions))
+        (root    (find root-user-partition? user-partitions)))
+    (delete-duplicates
+     (append-map (lambda (device)
+                   (catch 'system-error
+                     (lambda ()
+                       (missing-modules device %base-initrd-modules))
+                     (const '())))
+                 (delete-duplicates
+                  (map user-partition-file-name
+                       (cons root devices)))))))
+
+(define (initrd-configuration user-partitions)
+  "Return an 'initrd-modules' field with everything needed for
+USER-PARTITIONS, or return nothing."
+  (match (user-partition-missing-modules user-partitions)
+    (()
+     '())
+    ((modules ...)
+     `((initrd-modules ',modules)))))
 
 (define (user-partitions->configuration user-partitions)
   "Return the configuration field for USER-PARTITIONS."
@@ -1266,10 +1300,11 @@ from (gnu system mapped-devices) and return it."
          (swap-devices (map user-partition-file-name swap-user-partitions))
          (encrypted-partitions
           (filter user-partition-crypt-label user-partitions)))
-    `(,@(if (null? swap-devices)
+    `((bootloader ,@(bootloader-configuration user-partitions))
+      ,@(initrd-configuration user-partitions)
+      ,@(if (null? swap-devices)
             '()
             `((swap-devices (list ,@swap-devices))))
-      (bootloader ,@(bootloader-configuration user-partitions))
       ,@(if (null? encrypted-partitions)
             '()
             `((mapped-devices
diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index ed44b87682..fbfcdac4e5 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,42 +19,129 @@
 
 (define-module (gnu installer services)
   #:use-module (guix records)
-  #:export (<desktop-environment>
-            desktop-environment
-            make-desktop-environment
-            desktop-environment-name
-            desktop-environment-snippet
+  #:use-module (srfi srfi-1)
+  #:export (system-service?
+            system-service-name
+            system-service-type
+            system-service-recommended?
+            system-service-snippet
+            system-service-packages
 
-            %desktop-environments
-            desktop-environments->configuration))
+            desktop-system-service?
+            networking-system-service?
 
-(define-record-type* <desktop-environment>
-  desktop-environment make-desktop-environment
-  desktop-environment?
-  (name            desktop-environment-name) ;string
-  (snippet         desktop-environment-snippet)) ;symbol
+            %system-services
+            system-services->configuration))
+
+(define-record-type* <system-service>
+  system-service make-system-service
+  system-service?
+  (name            system-service-name)           ;string
+  (type            system-service-type)           ;'desktop | 'networking
+  (recommended?    system-service-recommended?    ;Boolean
+                   (default #f))
+  (snippet         system-service-snippet         ;list of sexps
+                   (default '()))
+  (packages        system-service-packages        ;list of sexps
+                   (default '())))
 
 ;; This is the list of desktop environments supported as services.
-(define %desktop-environments
-  (list
-   (desktop-environment
-    (name "GNOME")
-    (snippet '(gnome-desktop-service)))
-   (desktop-environment
-    (name "Xfce")
-    (snippet '(xfce-desktop-service)))
-   (desktop-environment
-    (name "MATE")
-    (snippet '(mate-desktop-service)))
-   (desktop-environment
-    (name "Enlightenment")
-    (snippet '(service enlightenment-desktop-service-type)))))
-
-(define (desktop-environments->configuration desktop-environments)
-  "Return the configuration field for DESKTOP-ENVIRONMENTS."
-  (let ((snippets
-         (map desktop-environment-snippet desktop-environments)))
-    `(,@(if (null? snippets)
-            '()
-            `((services (cons* ,@snippets
-                               %desktop-services)))))))
+(define %system-services
+  (let-syntax ((desktop-environment (syntax-rules ()
+                                      ((_ fields ...)
+                                       (system-service
+                                        (type 'desktop)
+                                        fields ...))))
+               (G_ (syntax-rules ()               ;for xgettext
+                     ((_ str) str))))
+    (list
+     (desktop-environment
+      (name "GNOME")
+      (snippet '((service gnome-desktop-service-type))))
+     (desktop-environment
+      (name "Xfce")
+      (snippet '((service xfce-desktop-service-type))))
+     (desktop-environment
+      (name "MATE")
+      (snippet '((service mate-desktop-service-type))))
+     (desktop-environment
+      (name "Enlightenment")
+      (snippet '((service enlightenment-desktop-service-type))))
+     (desktop-environment
+      (name "Openbox")
+      (packages '((specification->package "openbox"))))
+     (desktop-environment
+      (name "awesome")
+      (packages '((specification->package "awesome"))))
+     (desktop-environment
+      (name "i3")
+      (packages '((specification->package "i3-wm"))))
+     (desktop-environment
+      (name "ratpoison")
+      (packages '((specification->package "ratpoison"))))
+
+     ;; Networking.
+     (system-service
+      (name (G_ "OpenSSH secure shell daemon (sshd)"))
+      (type 'networking)
+      (snippet '((service openssh-service-type))))
+     (system-service
+      (name (G_ "Tor anonymous network router"))
+      (type 'networking)
+      (snippet '((service tor-service-type))))
+     (system-service
+      (name (G_ "Mozilla NSS certificates, for HTTPS access"))
+      (type 'networking)
+      (packages '((specification->package "nss-certs")))
+      (recommended? #t))
+
+     ;; Network connectivity management.
+     (system-service
+      (name (G_ "NetworkManager network connection manager"))
+      (type 'network-management)
+      (snippet '((service network-manager-service-type)
+                 (service wpa-supplicant-service-type))))
+     (system-service
+      (name (G_ "Connman network connection manager"))
+      (type 'network-management)
+      (snippet '((service connman-service-type)
+                 (service wpa-supplicant-service-type))))
+     (system-service
+      (name (G_ "DHCP client (dynamic IP address assignment)"))
+      (type 'network-management)
+      (snippet '((service dhcp-client-service-type)))))))
+
+(define (desktop-system-service? service)
+  "Return true if SERVICE is a desktop environment service."
+  (eq? 'desktop (system-service-type service)))
+
+(define (networking-system-service? service)
+  "Return true if SERVICE is a desktop environment service."
+  (eq? 'networking (system-service-type service)))
+
+(define (system-services->configuration services)
+  "Return the configuration field for SERVICES."
+  (let* ((snippets (append-map system-service-snippet services))
+         (packages (append-map system-service-packages services))
+         (desktop? (find desktop-system-service? services))
+         (base     (if desktop?
+                       '%desktop-services
+                       '%base-services)))
+    (if (null? snippets)
+        `(,@(if (null? packages)
+                '()
+                `((packages (list ,@packages))))
+          (services ,base))
+        `(,@(if (null? packages)
+                '()
+                `((packages (list ,@packages))))
+          (services (append (list ,@snippets
+
+                                  ,@(if desktop?
+                                        ;; XXX: Assume 'keyboard-layout' is in
+                                        ;; scope.
+                                        '((set-xorg-configuration
+                                           (xorg-configuration
+                                            (keyboard-layout keyboard-layout))))
+                                        '()))
+                           ,base))))))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 3f0bdad4f7..039dd0ca10 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -113,16 +113,24 @@ return the accumalated result so far."
 
   (define* (skip-to-step step result
                          #:key todo-steps done-steps)
-    (match (list todo-steps done-steps)
-      (((todo . rest-todo) (prev-done ... last-done))
-       (if (eq? (installer-step-id todo)
-                (installer-step-id step))
+    (match todo-steps
+      ((todo . rest-todo)
+       (let ((found? (eq? (installer-step-id todo)
+                          (installer-step-id step))))
+         (cond
+          (found?
            (run result
                 #:todo-steps todo-steps
-                #:done-steps done-steps)
-           (skip-to-step step (pop-result result)
-                         #:todo-steps (cons last-done todo-steps)
-                         #:done-steps prev-done)))))
+                #:done-steps done-steps))
+          ((and (not found?)
+                (null? done-steps))
+           (error (format #f "Step ~a not found" (installer-step-id step))))
+          (else
+           (match done-steps
+             ((prev-done ... last-done)
+              (skip-to-step step (pop-result result)
+                            #:todo-steps (cons last-done todo-steps)
+                            #:done-steps prev-done)))))))))
 
   (define* (run result #:key todo-steps done-steps)
     (match todo-steps
@@ -215,7 +223,7 @@ found in RESULTS."
                   '())))
           steps))
         (modules '((use-modules (gnu))
-                   (use-service-modules desktop))))
+                   (use-service-modules desktop networking ssh xorg))))
     `(,@modules
       ()
       (operating-system ,@configuration))))
diff --git a/gnu/installer/user.scm b/gnu/installer/user.scm
index 1f8d40a011..4e701e64ce 100644
--- a/gnu/installer/user.scm
+++ b/gnu/installer/user.scm
@@ -18,12 +18,15 @@
 
 (define-module (gnu installer user)
   #:use-module (guix records)
+  #:use-module (srfi srfi-1)
   #:export (<user>
             user
             make-user
             user-name
+            user-real-name
             user-group
             user-home-directory
+            user-password
 
             users->configuration))
 
@@ -31,20 +34,28 @@
   user make-user
   user?
   (name            user-name)
+  (real-name       user-real-name
+                   (default ""))
   (group           user-group
                    (default "users"))
+  (password        user-password)
   (home-directory  user-home-directory))
 
 (define (users->configuration users)
   "Return the configuration field for USERS."
+  (define (user->sexp user)
+    `(user-account
+      (name ,(user-name user))
+      (comment ,(user-real-name user))
+      (group ,(user-group user))
+      (home-directory ,(user-home-directory user))
+      (supplementary-groups '("wheel" "netdev"
+                              "audio" "video"))))
+
   `((users (cons*
-             ,@(map (lambda (user)
-                      `(user-account
-                        (name ,(user-name user))
-                        (group ,(user-group user))
-                        (home-directory ,(user-home-directory user))
-                        (supplementary-groups
-                         (quote ("wheel" "netdev"
-                                 "audio" "video")))))
-                    users)
-             %base-user-accounts))))
+            ,@(filter-map (lambda (user)
+                            ;; Do not emit a 'user-account' form for "root".
+                            (and (not (string=? (user-name user) "root"))
+                                 (user->sexp user)))
+                          users)
+            %base-user-accounts))))
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index e91f90a84d..ddb96bc338 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +20,8 @@
 (define-module (gnu installer utils)
   #:use-module (guix utils)
   #:use-module (guix build utils)
+  #:use-module (guix i18n)
+  #:use-module (srfi srfi-34)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 textual-ports)
@@ -54,10 +57,37 @@ number. If no percentage is found, return #f"
     (and result
          (string->number (match:substring result 1)))))
 
-(define (run-shell-command command)
+(define* (run-shell-command command #:key locale)
+  "Run COMMAND, a string, with Bash, and in the given LOCALE.  Return true if
+COMMAND exited successfully, #f otherwise."
+  (define (pause)
+    (format #t (G_ "Press Enter to continue.~%"))
+    (read-line (current-input-port)))
+
   (call-with-temporary-output-file
    (lambda (file port)
-     (format port "~a~%" command)
-     ;; (format port "exit~%")
+     (when locale
+       (let ((supported? (false-if-exception
+                          (setlocale LC_ALL locale))))
+         ;; If LOCALE is not supported, then set LANGUAGE, which might at
+         ;; least give us translated messages.
+         (if supported?
+             (format port "export LC_ALL=\"~a\"~%" locale)
+             (format port "export LANGUAGE=\"~a\"~%"
+                     (string-take locale
+                                  (string-index locale #\_))))))
+
+     (format port "exec ~a~%" command)
      (close port)
-     (invoke "bash" "--init-file" file))))
+
+     (guard (c ((invoke-error? c)
+                (newline)
+                (format (current-error-port)
+                        (G_ "Command failed with exit code ~a.~%")
+                        (invoke-error-exit-status c))
+                (pause)
+                #f))
+       (invoke "bash" "--init-file" file)
+       (newline)
+       (pause)
+       #t))))
diff --git a/gnu/local.mk b/gnu/local.mk
index 41f42e588f..e6e32794b9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -46,6 +46,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/bootloader/grub.scm                       \
   %D%/bootloader/extlinux.scm                   \
   %D%/bootloader/u-boot.scm                     \
+  %D%/bootloader/depthcharge.scm                \
   %D%/ci.scm					\
   %D%/packages.scm				\
   %D%/packages/abduco.scm			\
@@ -230,6 +231,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gxmessage.scm			\
   %D%/packages/hardware.scm			\
   %D%/packages/haskell.scm			\
+  %D%/packages/haskell-apps.scm			\
   %D%/packages/haskell-check.scm		\
   %D%/packages/haskell-crypto.scm		\
   %D%/packages/haskell-web.scm			\
@@ -341,6 +343,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/ninja.scm			\
   %D%/packages/node.scm				\
   %D%/packages/noweb.scm			\
+  %D%/packages/nss.scm				\
   %D%/packages/ntp.scm				\
   %D%/packages/nutrition.scm			\
   %D%/packages/nvi.scm				\
@@ -371,6 +374,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/php.scm				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
+  %D%/packages/poedit.scm				\
   %D%/packages/polkit.scm			\
   %D%/packages/popt.scm				\
   %D%/packages/printers.scm			\
@@ -538,6 +542,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/system/accounts.scm			\
   %D%/system/file-systems.scm			\
   %D%/system/install.scm			\
+  %D%/system/keyboard.scm			\
   %D%/system/linux-container.scm		\
   %D%/system/linux-initrd.scm			\
   %D%/system/locale.scm				\
@@ -582,9 +587,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests/virtualization.scm			\
   %D%/tests/web.scm
 
-if ENABLE_INSTALLER
-
-GNU_SYSTEM_MODULES +=                           \
+INSTALLER_MODULES =                             \
   %D%/installer.scm      			\
   %D%/installer/connman.scm			\
   %D%/installer/final.scm			\
@@ -616,13 +619,19 @@ GNU_SYSTEM_MODULES +=                           \
   %D%/installer/newt/welcome.scm		\
   %D%/installer/newt/wifi.scm	
 
+# Always ship the installer modules but compile them only when
+# ENABLE_INSTALLER is true.
+if ENABLE_INSTALLER
+GNU_SYSTEM_MODULES += $(INSTALLER_MODULES)
+else !ENABLE_INSTALLER
+MODULES_NOT_COMPILED += $(INSTALLER_MODULES)
+endif
+
 installerdir = $(guilemoduledir)/%D%/installer
 dist_installer_DATA =				\
   %D%/installer/aux-files/logo.txt	        \
   %D%/installer/aux-files/SUPPORTED
 
-endif ENABLE_INSTALLER
-
 # Modules that do not need to be compiled.
 MODULES_NOT_COMPILED +=				\
   %D%/build/shepherd.scm			\
@@ -674,6 +683,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/beignet-correct-file-names.patch		\
   %D%/packages/patches/binutils-boot-2.20.1a.patch		\
   %D%/packages/patches/biber-fix-encoding-write.patch		\
+  %D%/packages/patches/bind-fix-unused-pk11-ecc-constants.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	\
@@ -728,6 +738,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/doc++-segfault-fix.patch			\
   %D%/packages/patches/docker-engine-test-noinstall.patch	\
   %D%/packages/patches/docker-fix-tests.patch			\
+  %D%/packages/patches/docker-use-fewer-modprobes.patch		\
   %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch	\
   %D%/packages/patches/doxygen-test.patch			\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
@@ -742,7 +753,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
   %D%/packages/patches/emacs-realgud-fix-configure-ac.patch	\
+  %D%/packages/patches/emacs-undohist-ignored.patch	\
   %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch	\
+  %D%/packages/patches/emacs-zones-called-interactively.patch	\
   %D%/packages/patches/enlightenment-fix-setuid-path.patch	\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/eudev-rules-directory.patch		\
@@ -767,6 +780,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/findutils-localstatedir.patch		\
   %D%/packages/patches/findutils-makedev.patch			\
   %D%/packages/patches/findutils-test-xargs.patch		\
+  %D%/packages/patches/flac-CVE-2017-6888.patch		\
   %D%/packages/patches/flann-cmake-3.11.patch			\
   %D%/packages/patches/flint-ldconfig.patch			\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
@@ -862,6 +876,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
   %D%/packages/patches/grub-binutils-compat.patch		\
   %D%/packages/patches/grub-check-error-efibootmgr.patch	\
+  %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/gsl-test-i686.patch			\
   %D%/packages/patches/gspell-dash-test.patch			\
   %D%/packages/patches/gst-plugins-good-libvpx-compat.patch	\
@@ -909,6 +924,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
+  %D%/packages/patches/idris-test-no-node.patch			\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
   %D%/packages/patches/inkscape-poppler-compat3.patch		\
   %D%/packages/patches/intltool-perl-compatibility.patch	\
@@ -928,6 +944,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
   %D%/packages/patches/khmer-use-libraries.patch                \
   %D%/packages/patches/libziparchive-add-includes.patch		\
+  %D%/packages/patches/localed-xorg-keyboard.patch		\
   %D%/packages/patches/kiki-level-selection-crash.patch		\
   %D%/packages/patches/kiki-makefile.patch			\
   %D%/packages/patches/kiki-missing-includes.patch		\
@@ -937,7 +954,6 @@ 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	\
@@ -945,11 +961,12 @@ dist_patch_DATA =						\
   %D%/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch	\
   %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch	\
   %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch	\
+  %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch		\
   %D%/packages/patches/kodi-skip-test-449.patch		\
   %D%/packages/patches/laby-make-install.patch			\
+  %D%/packages/patches/lcms-CVE-2018-16435.patch		\
   %D%/packages/patches/ldc-bootstrap-disable-tests.patch	\
   %D%/packages/patches/ldc-disable-phobos-tests.patch		\
-  %D%/packages/patches/ledger-fix-uninitialized.patch		\
   %D%/packages/patches/liba52-enable-pic.patch			\
   %D%/packages/patches/liba52-link-with-libm.patch		\
   %D%/packages/patches/liba52-set-soname.patch			\
@@ -982,8 +999,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libffi-3.2.1-complex-alpha.patch		\
   %D%/packages/patches/libjxr-fix-function-signature.patch	\
   %D%/packages/patches/libjxr-fix-typos.patch			\
-  %D%/packages/patches/libopenshot-fixup-tests.patch		\
-  %D%/packages/patches/libopenshot-tests-with-system-libs.patch	\
   %D%/packages/patches/libotr-test-auth-fix.patch		\
   %D%/packages/patches/libmad-armv7-thumb-pt1.patch		\
   %D%/packages/patches/libmad-armv7-thumb-pt2.patch		\
@@ -1017,7 +1032,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/lierolibre-newer-libconfig.patch		\
   %D%/packages/patches/lierolibre-remove-arch-warning.patch	\
   %D%/packages/patches/lierolibre-try-building-other-arch.patch	\
-  %D%/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch	\
+  %D%/packages/patches/linkchecker-tests-require-network.patch	\
   %D%/packages/patches/linux-pam-no-setfsuid.patch		\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
@@ -1065,6 +1080,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mozjs38-version-detection.patch		\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
   %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \
+  %D%/packages/patches/mtools-mformat-uninitialized.patch	\
   %D%/packages/patches/mumble-1.2.19-abs.patch			\
   %D%/packages/patches/mumps-build-parallelism.patch		\
   %D%/packages/patches/mupen64plus-ui-console-notice.patch	\
@@ -1083,6 +1099,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ngircd-handle-zombies.patch		\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-pkgconfig.patch			\
+  %D%/packages/patches/ntfs-3g-CVE-2019-9755.patch		\
   %D%/packages/patches/nvi-assume-preserve-path.patch		\
   %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
   %D%/packages/patches/nvi-db4.patch				\
@@ -1093,6 +1110,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/ocaml-CVE-2015-8869.patch		\
   %D%/packages/patches/ocaml-Add-a-.file-directive.patch	\
   %D%/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch	\
+  %D%/packages/patches/ocaml-dose3-add-unix-dependency.patch	\
+  %D%/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch	\
+  %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch	\
+  %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch	\
   %D%/packages/patches/omake-fix-non-determinism.patch	\
   %D%/packages/patches/ola-readdir-r.patch			\
   %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch	\
@@ -1102,7 +1123,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/openjdk-10-idlj-reproducibility.patch	\
   %D%/packages/patches/openocd-nrf52.patch			\
   %D%/packages/patches/opensmtpd-fix-crash.patch		\
-  %D%/packages/patches/openssh-CVE-2018-20685.patch		\
   %D%/packages/patches/openssl-runpath.patch			\
   %D%/packages/patches/openssl-1.1-c-rehash-in.patch		\
   %D%/packages/patches/openssl-c-rehash-in.patch		\
@@ -1181,6 +1201,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-pyfakefs-remove-bad-test.patch	\
   %D%/packages/patches/python-flint-includes.patch		\
   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
   %D%/packages/patches/python-testtools.patch			\
@@ -1188,6 +1209,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch	\
   %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch	\
+  %D%/packages/patches/python-robotframework-honor-source-date-epoch.patch \
   %D%/packages/patches/python2-subprocess32-disable-input-test.patch	\
   %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
@@ -1201,9 +1223,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
   %D%/packages/patches/quickswitch-fix-dmenu-check.patch	\
-  %D%/packages/patches/quilt-test-fix-regex.patch		\
-  %D%/packages/patches/quilt-getopt-nondigit-param.patch	\
-  %D%/packages/patches/quilt-getopt-second-separator.patch	\
   %D%/packages/patches/qtwebkit-pbutils-include.patch		\
   %D%/packages/patches/randomjungle-disable-static-build.patch	\
   %D%/packages/patches/rapicorn-isnan.patch			\
@@ -1215,7 +1234,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/readline-6.2-CVE-2014-2524.patch		\
   %D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch	\
   %D%/packages/patches/reposurgeon-add-missing-docbook-files.patch	\
-  %D%/packages/patches/reptyr-fix-gcc-7.patch			\
   %D%/packages/patches/ripperx-missing-file.patch		\
   %D%/packages/patches/rpcbind-CVE-2017-8779.patch		\
   %D%/packages/patches/rtags-separate-rct.patch			\
@@ -1252,8 +1270,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch	\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
   %D%/packages/patches/soundconverter-remove-gconf-dependency.patch	\
-  %D%/packages/patches/soundtouch-CVE-2018-14044-14045.patch 	\
-  %D%/packages/patches/soundtouch-CVE-2018-1000223.patch 	\
   %D%/packages/patches/sssd-curl-compat.patch			\
   %D%/packages/patches/steghide-fixes.patch			\
   %D%/packages/patches/streamlink-update-test.patch		\
@@ -1263,7 +1279,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/swig-guile-gc.patch			\
   %D%/packages/patches/swish-e-search.patch			\
   %D%/packages/patches/swish-e-format-security.patch		\
-  %D%/packages/patches/synfigstudio-fix-ui-with-gtk3.patch 	\
   %D%/packages/patches/stumpwm-fix-broken-read-one-line.patch	\
   %D%/packages/patches/t1lib-CVE-2010-2642.patch		\
   %D%/packages/patches/t1lib-CVE-2011-0764.patch		\
@@ -1277,9 +1292,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/teensy-loader-cli-help.patch		\
   %D%/packages/patches/teeworlds-use-latest-wavpack.patch	\
   %D%/packages/patches/texinfo-5-perl-compat.patch		\
+  %D%/packages/patches/texlive-bin-CVE-2018-17407.patch		\
   %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch	\
-  %D%/packages/patches/texlive-bin-pdftex-poppler-compat.patch	\
-  %D%/packages/patches/texlive-bin-xetex-poppler-compat.patch	\
   %D%/packages/patches/telegram-purple-adjust-test.patch	\
   %D%/packages/patches/texi2html-document-encoding.patch	\
   %D%/packages/patches/texi2html-i18n.patch			\
@@ -1296,6 +1310,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/totem-meson-easy-codec.patch		\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-include-qregexpvalidator.patch	\
+  %D%/packages/patches/u-boot-fix-mkimage-header-verification.patch	\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
   %D%/packages/patches/unzip-CVE-2014-8141.patch		\
@@ -1329,6 +1344,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/wavpack-CVE-2018-6767.patch		\
   %D%/packages/patches/wavpack-CVE-2018-7253.patch		\
   %D%/packages/patches/wavpack-CVE-2018-7254.patch		\
+  %D%/packages/patches/webkitgtk-sse2.patch			\
   %D%/packages/patches/weechat-python.patch			\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index f9a35588b5..4742f49405 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -32,6 +32,7 @@
                           mkdir-p))
   #:autoload   (guix profiles) (packages->manifest)
   #:use-module (guix describe)
+  #:use-module (guix deprecation)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 match)
   #:autoload   (ice-9 binary-ports) (put-bytevector)
@@ -55,6 +56,7 @@
             fold-packages
             fold-available-packages
 
+            find-newest-available-packages
             find-packages-by-name
             find-package-locations
             find-best-packages-by-name
@@ -190,6 +192,29 @@ flags."
               directory))
         %load-path)))
 
+;; This procedure is used by Emacs-Guix up to 0.5.1.1, so keep it for now.
+;; See <https://github.com/alezost/guix.el/issues/30>.
+(define-deprecated find-newest-available-packages
+  find-packages-by-name
+  (mlambda ()
+    "Return a vhash keyed by package names, and with
+associated values of the form
+
+  (newest-version newest-package ...)
+
+where the preferred package is listed first."
+    (fold-packages (lambda (p r)
+                     (let ((name    (package-name p))
+                           (version (package-version p)))
+                       (match (vhash-assoc name r)
+                         ((_ newest-so-far . pkgs)
+                          (case (version-compare version newest-so-far)
+                            ((>) (vhash-cons name `(,version ,p) r))
+                            ((=) (vhash-cons name `(,version ,p ,@pkgs) r))
+                            ((<) r)))
+                         (#f (vhash-cons name `(,version ,p) r)))))
+                   vlist-null)))
+
 (define (fold-available-packages proc init)
   "Fold PROC over the list of available packages.  For each available package,
 PROC is called along these lines:
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 9ed2e32324..dfc3467bf8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -181,14 +181,14 @@ and provides a \"top-like\" mode (monitoring).")
 (define-public shepherd
   (package
     (name "shepherd")
-    (version "0.5.0")
+    (version "0.6.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://alpha.gnu.org/gnu/shepherd/shepherd-"
+              (uri (string-append "mirror://gnu/shepherd/shepherd-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1wmciqml9yplnx1s4ynn00giqyk06rbrcsgvpjj2df47sawk2jp8"))))
+                "1ys2w83vm62spr8bx38sccfdpy9fqmj7wfywm5k8ihsy2k61da2i"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--localstatedir=/var")))
@@ -211,8 +211,68 @@ the execution of system services, replacing similar functionality found in
 typical init systems.  It provides dependency-handling through a convenient
 interface and is based on GNU Guile.")
     (license license:gpl3+)
-    (home-page "https://www.gnu.org/software/shepherd/")
-    (properties '((ftp-server . "alpha.gnu.org")))))
+    (home-page "https://www.gnu.org/software/shepherd/")))
+
+(define-public cloud-utils
+  (package
+    (name "cloud-utils")
+    (version "0.31")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://launchpad.net/cloud-utils/trunk/"
+             version "/+download/cloud-utils-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07fl3dlqwdzw4xx7mcxhpkks6dnmaxha80zgs9f6wmibgzni8z0r"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "BINDIR=" out "/bin")
+               (string-append "MANDIR=" out "/share/man/man1")
+               (string-append "DOCDIR=" out "/share/doc")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (add-after 'install 'wrap
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((growpart (string-append (assoc-ref outputs "out")
+                                            "/bin/growpart")))
+               (wrap-program growpart
+                 `("PATH" ":" prefix (,(dirname (which "sfdisk"))
+                                      ,(dirname (which "readlink"))))))
+             #t)))))
+    (inputs
+     `(("python" ,python)
+       ("util-linux" ,util-linux))) ; contains sfdisk for growpart
+    (home-page "https://launchpad.net/cloud-utils")
+    (synopsis "Set of utilities for cloud computing environments")
+    (description
+     "This package contains a set of utilities for cloud computing
+environments:
+
+@itemize @bullet
+@item @command{cloud-localds} Create a disk for cloud-init to utilize nocloud
+@item @command{cloud-publish-image} Wrapper for cloud image publishing
+@item @command{cloud-publish-tarball} Wrapper for publishing cloud tarballs
+@item @command{cloud-publish-ubuntu} Import a Ubuntu cloud image
+@item @command{ec2metadata} Query and display @acronym{EC2,Amazon Elastic
+  Compute Cloud} metadata
+@item @command{growpart} Grow a partition to fill the device
+@item @command{mount-image-callback} Mount a file and run a command
+@item @command{resize-part-image} Resize a partition image to a new size
+@item @command{ubuntu-cloudimg-query} Get the latest Ubuntu
+  @acronym{AMI,Amazon Machine Image}
+@item @command{ubuntu-ec2-run} Run a @acronym{EC2,Amazon Elastic Compute
+  Cloud} instance using Ubuntu
+@item @command{vcs-run} Obtain a repository, and run a command
+@item @command{write-mime-multipart} Handle multipart
+  @acronym{MIME,Multipurpose Internet Mail Extensions} messages
+@end itemize")
+    (license license:gpl3)))
 
 (define-public daemontools
   (package
@@ -475,8 +535,8 @@ login, passwd, su, groupadd, and useradd.")
     (synopsis "Getty for the text console")
     (description
      "Small console getty that is started on the Linux text console,
-asks for a login name and then transfers over to 'login'.  It is extended to
-allow automatic login and starting any app.")
+asks for a login name and then transfers over to @code{login}.  It is extended
+to allow automatic login and starting any app.")
     (license license:gpl2+)))
 
 (define-public net-base
@@ -1140,7 +1200,8 @@ the client stations.  It implements key negotiation with a WPA Authenticator
 and it controls the roaming and IEEE 802.11 authentication/association of the
 WLAN driver.
 
-This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
+This package provides the @code{wpa_supplicant} daemon and the @code{wpa_cli}
+command.")
 
     ;; In practice, this is linked against Readline, which makes it GPLv3+.
     (license license:bsd-3)
@@ -1286,7 +1347,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20190215")
+    (version "20190405")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1294,7 +1355,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1iy2zwi8aicq0b5a0phfacvk1f9z1d89cx43adcf0qh82gb9m4wg"))))
+                "0hv6r65l8vk3f6i3by7i47vc1917qm47838bpq80lfn22784y53y"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
@@ -1598,13 +1659,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.7.9")
+    (version "2.7.10")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "19vyf60zfmnv7frwm96bzqzvia69dysy9apk8bl84vr03ib9vrbf"))))
+        (base32 "15721d0bxymghxnlnknq43lszlxg3ybbcp2p5v424hhw6wg2v944"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -1735,18 +1796,18 @@ limits.")
 (define-public autojump
   (package
     (name "autojump")
-    (version "22.5.1")
+    (version "22.5.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/wting/autojump/archive/"
-                           "release-v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wting/autojump.git")
+             (commit (string-append "release-v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "17z9j9936x0nizwrzf664bngh60x5qbvrrf1s5qdzd0f2gdanpvn"))))
+        (base32 "1rgpsh70manr2dydna9da4x7p8ahii7dgdgwir5fka340n1wrcws"))))
     (build-system gnu-build-system)
-    (native-inputs                      ;for tests
+    (native-inputs                      ; for tests
      `(("python-mock" ,python-mock)
        ("python-pytest" ,python-pytest)))
     (inputs
@@ -1754,6 +1815,11 @@ limits.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           ;; ‘install.py’ modifies files before installing them.
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure)
          (delete 'build)
          (replace 'check
@@ -2076,7 +2142,7 @@ a new command using the matched rule, and runs it.")
     (home-page "https://www.gentoo.com/di/")
     (synopsis "Advanced df like disk information utility")
     (description
-     "'di' is a disk information utility, displaying everything that your
+     "@code{di} is a disk information utility, displaying everything that your
 @code{df} command does and more.  It features the ability to display your disk
 usage in whatever format you prefer.  It is designed to be highly portable and
 produce uniform output across heterogeneous networks.")
@@ -2699,7 +2765,7 @@ Python loading in HPC environments.")
   (let ((real-name "inxi"))
     (package
       (name "inxi-minimal")
-      (version "3.0.32-1")
+      (version "3.0.33-1")
       (source
        (origin
          (method git-fetch)
@@ -2708,7 +2774,7 @@ Python loading in HPC environments.")
                (commit version)))
          (file-name (git-file-name real-name version))
          (sha256
-          (base32 "171xdip2alkp3g0k0sanaavvdcz6d0wlldj9lgj11xsdbhaaknnv"))))
+          (base32 "19bfdid4zp39irsdq3m6yyqf2336c30da35qgslrzcr2vh815g8c"))))
       (build-system trivial-build-system)
       (inputs
        `(("bash" ,bash-minimal)
@@ -2918,7 +2984,8 @@ Logitech Unifying Receiver.")
 (define-public lynis
   (package
     (name "lynis")
-    (version "2.7.2")
+    ;; Also update the ‘lynis-sdk’ input to the commit matching this release.
+    (version "2.7.4")
     (source
      (origin
        (method git-fetch)
@@ -2927,7 +2994,7 @@ Logitech Unifying Receiver.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0dbbfk47dpxx7zpb98n4w3ls3z5di57qnr2nsgxjvp49gk9j3f6k"))
+        (base32 "1jjk5hcxmp4f4ppsljiq95l2ln6b03azydap3b35lsvxkjybv88k"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -2944,11 +3011,10 @@ Logitech Unifying Receiver.")
            (method git-fetch)
            (uri (git-reference
                  (url "https://github.com/CISOfy/lynis-sdk")
-                 (commit "3310aef4f2b3dd97d166c96ad0253c89c4ad390d")))
+                 (commit "90f301e21c204792cf372f1cf05890a562f2e31b")))
            (file-name (git-file-name "lynis-sdk" version))
            (sha256
-            (base32
-             "0sqsrm5wal742yrwps8bqb8a8lxd93n4b93n3kkm1b30nbs25g7y"))))))
+            (base32 "1d0smr1fxrvbc3hl8lzy33im9ahzr0hgs3kk09r8g8xccjkcm52l"))))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index e272cd990b..319a049d8a 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;;
@@ -27,6 +27,7 @@
 (define-module (gnu packages algebra)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
@@ -42,6 +43,7 @@
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
@@ -56,6 +58,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix hg-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils))
@@ -245,10 +248,10 @@ precision.")
    (license license:gpl3+)
    (home-page "http://cmh.gforge.inria.fr/")))
 
-(define-public giac-xcas
+(define-public giac
   (package
-    (name "giac-xcas")
-    (version "1.5.0-43")
+    (name "giac")
+    (version "1.5.0-49")
     (source (origin
               (method url-fetch)
               ;; "~parisse/giac" is not used because the maintainer regularly
@@ -260,9 +263,8 @@ precision.")
                                   "source/giac_" version ".tar.gz"))
               (sha256
                (base32
-                "1j58cvpiddzxswfdh4ixyj1xsva7qwk8xjls29nqvryyykdfm4dp"))))
+                "0f4pkand9vmqfayw18jm5qxbhcwi1405qfd7ibzh9lwzz6amkm3l"))))
     (build-system gnu-build-system)
-    (outputs '("out" "doc"))            ;77MiB of documentation
     (arguments
      `(#:modules ((ice-9 ftw)
                   (guix build utils)
@@ -281,36 +283,36 @@ precision.")
              (substitute* "check/Makefile.in"
                (("chk_fhan11") ""))
              #t))
-         (add-after 'install 'install-doc
-           ;; Setting --docdir to "doc" output isn't sufficient as
-           ;; documentation and examples are scattered throughout the source.
+         (add-after 'install 'fix-doc
            (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc"))
-                    (docdir (string-append doc
-                                           "/share/doc/"
-                                           (string-append ,name "-" ,version))))
-               ;; For some reason, the install process moves
-               ;; "share/giac/examples" instead of "share/giac/doc" to
-               ;; "$(docdir)".  Clean up the mess and start over.
-               (delete-file-recursively (string-append doc "/share"))
-               (mkdir-p docdir)
-               (with-directory-excursion out
-                 (for-each (lambda (f)
-                             (unless (member f '("." ".."))
-                               (copy-recursively (string-append "share/giac/" f)
-                                                 (string-append docdir "/" f))))
-                           (scandir "share/giac"))
-                 (delete-file-recursively "share/giac")))
-             #t)))))
+             (let ((out (assoc-ref outputs "out")))
+               ;; Most French documentation has a non-commercial
+               ;; license, so we need to remove it.
+               (with-directory-excursion (string-append out "/share/giac/doc/fr")
+                 (for-each delete-file-recursively
+                           '("cascas" "casexo" "casgeo" "casrouge" "cassim"
+                             "castor")))
+               ;; Remove duplicate documentation in
+               ;; "%out/share/doc/giac/", where Xcas does not expect
+               ;; to find it.
+               (delete-file-recursively (string-append out "/share/doc/giac"))
+               #t)))
+         (add-after 'install 'remove-unnecessary-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (delete-file (string-append out "/bin/xcasnew"))
+               #t))))))
     (inputs
+     ;;; TODO: Add libnauty.
      `(("fltk" ,fltk)
+       ("glpk" ,glpk)
        ("gmp" ,gmp)
        ("gsl" ,gsl)
        ("lapack" ,lapack)
        ("libao" ,ao)
        ("libjpeg" ,libjpeg)
        ("libpng" ,libpng)
+       ("libsamplerate" ,libsamplerate)
        ("libx11" ,libx11)
        ("libxinerama" ,libxinerama)
        ("libxft" ,libxft)
@@ -321,9 +323,12 @@ precision.")
        ("ntl" ,ntl)
        ("perl" ,perl)
        ("pari-gp" ,pari-gp)
-       ("tcsh" ,tcsh)
+       ("tcsh" ,tcsh)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("readline" ,readline)
        ("texlive" ,texlive-tiny)))
-    (native-inputs `(("readline" ,readline)))
     (home-page "https://www-fourier.ujf-grenoble.fr/~parisse/giac.html")
     (synopsis "Computer algebra system")
     (description
@@ -332,6 +337,9 @@ maple, mupad and the TI89.  It is available as a standalone program (graphic
 or text interfaces) or as a C++ library.")
     (license license:gpl3+)))
 
+(define-public giac-xcas
+  (deprecated-package "giac-xcas" giac))
+
 (define-public flint
   (package
    (name "flint")
@@ -498,7 +506,7 @@ matrices, and polynomials over the integers and over finite fields.")
 (define-public singular
   (package
    (name "singular")
-   (version "4.1.1p3")
+   (version "4.1.2p1")
    (source
     (origin
       (method url-fetch)
@@ -512,7 +520,7 @@ matrices, and polynomials over the integers and over finite fields.")
                         #\.) "-")
                       "/singular-" version ".tar.gz"))
              (sha256 (base32
-                      "1qqj9bm9pkzm0iyycpvm8x6s79wws3nq60lz25h8x1q61h3426sm"))))
+                      "0kvd55353fiqyq1msmi0kka66n5h0aqs7m3km60r01b1w2f8085m"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("doxygen" ,doxygen)
@@ -857,6 +865,32 @@ features, and more.")
     ;; See 'COPYING.README' for details.
     (license license:mpl2.0)))
 
+(define-public eigen-for-tensorflow
+  (let ((changeset "fd6845384b86")
+        (revision "1"))
+    (package (inherit eigen)
+      (name "eigen-for-tensorflow")
+      (version (string-append "3.3.5-" revision "." changeset))
+      (source (origin
+                (method hg-fetch)
+                (uri (hg-reference
+                      (url "https://bitbucket.org/eigen/eigen")
+                      (changeset changeset)))
+                (sha256
+                 (base32
+                  "12cwgah63wqwb66xji048hcxc1z5zjg8a7701zlia5zbilnnk1n5"))
+                (file-name (string-append name "-" version "-checkout"))
+                (modules '((guix build utils)))
+                (snippet
+                 ;; There are 3 test failures in the "unsupported" directory,
+                 ;; but maintainers say it's a known issue and it's unsupported
+                 ;; anyway, so just skip them.
+                 '(begin
+                    (substitute* "unsupported/CMakeLists.txt"
+                      (("add_subdirectory\\(test.*")
+                       "# Do not build the tests for unsupported features.\n"))
+                    #t)))))))
+
 (define-public xtensor
   (package
     (name "xtensor")
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 80eaab3e5c..7d5de08be9 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -538,7 +538,7 @@ that is safe to use for user space.  It also includes
     (native-inputs
      `(("android-core" ,(android-platform-system-core version))))
     (home-page "https://developer.android.com/")
-    (synopsis "Android ext4 filesystem utils")
+    (synopsis "Android ext4 file system utilities")
     (description "@code{android-ext4-utils} is a library in common use by the
 Android core.")
     (license license:asl2.0)))
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 74a80ab046..b46382c035 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -41,18 +41,20 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages video))
 
+;; ETL, synfig, and Synfig Studio are updated in tandem.
+(define synfig-version "1.2.2")
+
 (define-public etl
   (package
     (name "etl")
-    (version "0.04.22")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
-              ;; Keep this synchronized with the synfig release version.
               (uri (string-append "mirror://sourceforge/synfig/releases/"
-                                  "1.2.0/source/ETL-" version ".tar.gz"))
+                                  version "/source/ETL-" version ".tar.gz"))
               (sha256
                (base32
-                "0ii73nsd3xzkhz6w1rnxwphl637j9w82xiy6apa9vin2isdynnmc"))))
+                "12sd8pz8l5xcxcmapkvih3brihdhdb6xmxisr9a415lydid9rh8d"))))
     (build-system gnu-build-system)
     (home-page "https://www.synfig.org")
     (synopsis "Extended C++ template library")
@@ -65,7 +67,7 @@ C++ @dfn{Standard Template Library} (STL).")
 (define-public synfig
   (package
     (name "synfig")
-    (version "1.2.0")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/synfig/releases/"
@@ -73,7 +75,7 @@ C++ @dfn{Standard Template Library} (STL).")
                                   ".tar.gz"))
               (sha256
                (base32
-                "1gqx4gn4c73rqwhsgzx0a460gr9hadmi28csp75rx30qavqsj7k1"))))
+                "1vy27kl68sbg41sfasa58k3p2nc1xfalvzk3k9gich9h90rpnpsz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -131,7 +133,8 @@ C++ @dfn{Standard Template Library} (STL).")
        ("openexr" ,openexr)
        ("pango" ,pango)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
     (home-page "https://www.synfig.org")
     (synopsis "Vector-based 2D animation renderer")
     (description
@@ -143,7 +146,7 @@ for tweening, preventing the need to hand-draw each frame.")
 (define-public synfigstudio
   (package
     (name "synfigstudio")
-    (version "1.2.0")
+    (version synfig-version)
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/synfig/releases/"
@@ -151,16 +154,14 @@ for tweening, preventing the need to hand-draw each frame.")
                                   ".tar.gz"))
               (sha256
                (base32
-                "0fbckfbw8dzf0m2wv7vlmw492k1dqa3zf510z019d0as3zpnp6qm"))
+                "1ql92kh9z8w2j9yi3pr7hn7wh2r2j35xynwv9xlwyd7niackgykn"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (substitute* "src/synfigapp/pluginmanager.cpp"
                     (("xmlpp::Node\\* n =")    "const xmlpp::Node* n =")
                     (("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
-                  #t))
-              (patches
-               (search-patches "synfigstudio-fix-ui-with-gtk3.patch"))))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 840b5410a6..5127ba1741 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -44,14 +44,14 @@
 (define-public clamav
   (package
     (name "clamav")
-    (version "0.101.1")
+    (version "0.101.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.clamav.net/downloads/production/"
                                   "clamav-" version ".tar.gz"))
               (sha256
                (base32
-                "01mq3z04fjbq5iq8wfwfim72iv3dn04d3ishc5lkhxpmnalqydps"))
+                "0d3n4y8i5q594h4cjglmvpk4jd73r9ajpp1bvq5lr9zpdzgyn4ha"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 6cb23ce2a8..96662f0713 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -129,14 +129,14 @@ to the clients.")
 (define-public fasm
   (package
     (name "fasm")
-    (version "1.73.09")
+    (version "1.73.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://flatassembler.net/fasm-"
                            version ".tgz"))
        (sha256
-        (base32 "197bcj9aa5wpkvrlaafc1smxjss0fwdspq5fwhwgyy9cc7z5g0ym"))))
+        (base32 "1lk8vlr0vg7h8lhiav99paa5a1mi0r2m8agxjmczhhavqhx44c32"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests exist
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 2813062e95..ab5dcd92a7 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +23,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages image)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
@@ -103,7 +104,7 @@ header.")
 (define-public gnuastro
   (package
     (name "gnuastro")
-    (version "0.8")
+    (version "0.9")
     (source
      (origin
        (method url-fetch)
@@ -111,7 +112,7 @@ header.")
                            version ".tar.lz"))
        (sha256
         (base32
-         "0gx6iar3z07k9sdvpa6kchsz6fpk94xn5vcvbcigssl2dwqmlnkb"))))
+         "1c1894ixz3l8p1nmzkysgl9lz8vpqbfw1dd404kh6lvrpml7jzig"))))
     (inputs
      `(("cfitsio" ,cfitsio)
        ("gsl" ,gsl)
@@ -120,7 +121,8 @@ header.")
        ("wcslib" ,wcslib)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("lzip" ,lzip)))
+     `(("libtool" ,libtool)
+       ("lzip" ,lzip)))
     (build-system gnu-build-system)
     (home-page "https://www.gnu.org/software/gnuastro/")
     (synopsis "Astronomy utilities")
@@ -131,7 +133,7 @@ programs for the manipulation and analysis of astronomical data.")
 (define-public stellarium
   (package
     (name "stellarium")
-    (version "0.18.3")
+    (version "0.19.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/Stellarium/" name
@@ -139,7 +141,7 @@ programs for the manipulation and analysis of astronomical data.")
                                  "/" name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1mm8rjcb8j56m3kfigpix5vxviw1616kvl9ws2s3s5gdyngljrc3"))))
+               "1mjjqcpgm5a1022x0mpqj3v6qkvpm9wqm1hqyg0mlypc5681va8a"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -161,13 +163,6 @@ programs for the manipulation and analysis of astronomical data.")
                                 (assoc-ref %build-inputs "qtserialport")
                                 "/include/qt5"))
        #:phases (modify-phases %standard-phases
-                  ;; Skip a test that assumes Stellarium is "installed":
-                  ;; https://bugs.gentoo.org/674472
-                  (add-after 'unpack 'patch-tests
-                    (lambda _
-                      (substitute* "src/tests/testEphemeris.cpp"
-                        (("ifndef Q_OS_WIN") "if 0"))
-                      #t))
                   (add-before 'check 'set-offscreen-display
                     (lambda _
                       ;; make Qt render "offscreen", required for tests
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index a38e77c996..49fcc511e6 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
@@ -547,14 +547,14 @@ plugins are provided.")
 (define-public calf
   (package
     (name "calf")
-    (version "0.90.1")
+    (version "0.90.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://calf-studio-gear.org/files/calf-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0znwx5gidr5n503gya9n8gagr8cfym6cwlbiv2r6iksji7jc4fpb"))))
+                "0bn4j1klw2yfxz8clbmasaydifq25rdfsv0n6iisxrzcj1lx7sgh"))))
     (build-system gnu-build-system)
     (inputs
      `(("fluidsynth" ,fluidsynth)
@@ -713,7 +713,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
 (define-public csound
   (package
     (name "csound")
-    (version "6.12.0")
+    (version "6.12.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -722,7 +722,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0pv4s54cayvavdp6y30n3r1l5x83x9whyyd2v24y0dh224v3hbxi"))))
+                "01krxcf0alw9k7p5sv0s707600an4sl7lhw3bymbwgqrj0v2p9z2"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -943,7 +943,7 @@ gain controls.  There is also a global bypass switch and gain control.
 The 2nd order resonant filters are implemented using a Mitra-Regalia style
 lattice filter, which is stable even while parameters are being changed.
 
-All switches and controls are internally smoothed, so they can be used 'live'
+All switches and controls are internally smoothed, so they can be used @code{live}
 without any clicks or zipper noises.  This makes this plugin suitable for use
 in systems that allow automation of plugin control ports, such as Ardour, or
 for stage use.")
@@ -1104,7 +1104,7 @@ follower.")
 (define-public fluidsynth
   (package
     (name "fluidsynth")
-    (version "2.0.4")
+    (version "2.0.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1113,7 +1113,7 @@ follower.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1v2vji02fbrjgypwb4fw2r90hnfwfbfh3d24j8vjwlbqxhxp16s0"))))
+                "0rv0apxbj0cgm8f8sqf5xr6kdi4q58ph92ip6cg716ha0ca5lr8y"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; no check target
@@ -1307,7 +1307,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
 (define-public guitarix
   (package
     (name "guitarix")
-    (version "0.37.3")
+    (version "0.38.1")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1315,7 +1315,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
                    version ".tar.xz"))
              (sha256
               (base32
-               "1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac"))))
+               "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"))))
     (build-system waf-build-system)
     (arguments
      `(#:tests? #f ; no "check" target
@@ -2120,21 +2120,17 @@ different audio devices such as ALSA or PulseAudio.")
 (define-public qjackctl
   (package
     (name "qjackctl")
-    (version "0.5.6")
+    (version "0.5.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
                                   version "/qjackctl-" version ".tar.gz"))
               (sha256
                (base32
-                "0wlmbb9m7cf3wr7c2h2hji18592x2b119m7mx85wksjs6rjaq2mj"))))
+                "1g6a5j74p45yisl28bw4fcc9nr6b710ikk459p4mp6djh9gs8v95"))))
     (build-system gnu-build-system)
     (arguments
-     '(#: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).
-       #:configure-flags '("--disable-xunique")))
+     '(#:tests? #f))                    ; no check target
     (inputs
      `(("jack" ,jack-1)
        ("alsa-lib" ,alsa-lib)
@@ -2320,7 +2316,7 @@ aimed at audio/musical applications.")
 (define-public rubberband
   (package
     (name "rubberband")
-    (version "1.8.1")
+    (version "1.8.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -2330,9 +2326,19 @@ aimed at audio/musical applications.")
               (file-name (string-append name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386"))))
+                "0462fmjnfqpv2qi0s6ny42drqarkr0xy9lw8frjmfgzyzl5n9294"))))
     (build-system gnu-build-system)
-    (arguments `(#:tests? #f)) ; no check target
+    (arguments
+     `(#:tests? #f                      ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-jni-installation
+           ;; ‘make install’ unconditionally installs librubberband-jni.so,
+           ;; which is never built by ‘make all’.  Skip it.
+           (lambda _
+             (substitute* "Makefile.in"
+               ((".*cp -f \\$\\(JNI_TARGET\\).*") ""))
+             #t)))))
     (inputs
      `(("ladspa" ,ladspa)
        ("libsamplerate" ,libsamplerate)
@@ -2685,18 +2691,16 @@ Tracker 3 S3M and Impulse Tracker IT files.")
 (define-public soundtouch
   (package
     (name "soundtouch")
-    (version "2.0.0")
+    (version "2.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append
-         "http://www.surina.net/soundtouch/soundtouch-" version ".tar.gz"))
-       (patches (search-patches "soundtouch-CVE-2018-14044-14045.patch"
-                                "soundtouch-CVE-2018-1000223.patch"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/soundtouch/soundtouch.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "09cxr02mfyj2bg731bj0i9hh565x8l9p91aclxs8wpqv8b8zf96j"))))
+        (base32 "0p6jzgfgqw061702dmd2b6r4arz48ac3mmx2qkvvzf8s5jjzykdh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -2865,14 +2869,14 @@ interface.")
 (define-public qsynth
   (package
     (name "qsynth")
-    (version "0.5.5")
+    (version "0.5.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
                            "/qsynth-" version ".tar.gz"))
        (sha256
-        (base32 "08x7znvbwi9miavcarymi7dsv8njmxzwzma20dbmz8j2aswm53w5"))))
+        (base32 "0h4hhja8qbyzd6v24flw9wr4mwl03nplryx1gyrppn7sg13l1sx6"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no "check" phase
@@ -3379,14 +3383,14 @@ on the ALSA software PCM plugin.")
 (define-public snd
   (package
     (name "snd")
-    (version "19.2")
+    (version "19.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
                                   "snd-" version ".tar.gz"))
               (sha256
                (base32
-                "1a6ls2hyvggss12idca22hq5vsq4jw2xkwrx22dx29i9926gdr6h"))))
+                "16j3fqyw361wdsr1076f0p3va2y7wdzq1lvr4ijz1ajmbxdlc723"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -3662,7 +3666,7 @@ surround).")
 (define-public libopenshot-audio
   (package
     (name "libopenshot-audio")
-    (version "0.1.7")
+    (version "0.1.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3671,7 +3675,7 @@ surround).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "08a8wbi28kwrdz4h0rs1b9vsr28ldfi8g75q54rj676y1vwg3qys"))))
+                "1fvp6nmf30xzkmcznakh8dv5vn9d7nq051pqcqv638hsfppkmcrl"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -3697,7 +3701,7 @@ library.")
 (define-public faudio
   (package
     (name "faudio")
-    (version "19.03")
+    (version "19.04")
     (source
      (origin
        (method git-fetch)
@@ -3706,7 +3710,7 @@ library.")
              (commit version)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
-        (base32 "0v5l67ixr5kd9jz5sza8xgzxamqnlgn3gs1q8gg6ir60g0jvzbd4"))))
+        (base32 "00lqf8bjcwm4k8yky9jmqghkxijcm2lxspb9zyl1270yqmj05kiw"))))
     (arguments
      '(#:tests? #f                      ; No tests.
        #:configure-flags '("-DFFMPEG=ON")))
diff --git a/gnu/packages/aux-files/linux-libre/5.0-arm-veyron.conf b/gnu/packages/aux-files/linux-libre/5.0-arm-veyron.conf
new file mode 100644
index 0000000000..8adef3294e
--- /dev/null
+++ b/gnu/packages/aux-files/linux-libre/5.0-arm-veyron.conf
@@ -0,0 +1,4574 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 5.0.3-gnu Kernel Configuration
+#
+
+#
+# Compiler: gcc (GCC) 7.4.0
+#
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=70400
+CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_BUILD_SALT=""
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+# CONFIG_KERNEL_GZIP is not set
+# CONFIG_KERNEL_LZMA is not set
+CONFIG_KERNEL_XZ=y
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+CONFIG_DEFAULT_HOSTNAME="debsus"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_CROSS_MEMORY_ATTACH=y
+# CONFIG_USELIB is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_ARCH_HAS_TICK_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_PSI is not set
+CONFIG_CPU_ISOLATION=y
+
+#
+# RCU Subsystem
+#
+CONFIG_PREEMPT_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_TASKS_RCU=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_NEED_SEGCBLIST=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_CGROUPS=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+# CONFIG_MEMCG_SWAP_ENABLED is not set
+CONFIG_MEMCG_KMEM=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_WRITEBACK=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_CGROUP_PIDS=y
+# CONFIG_CGROUP_RDMA is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_BPF=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_SOCK_CGROUP_DATA=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+# CONFIG_CHECKPOINT_RESTORE is not set
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
+# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_BPF=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_BPF_SYSCALL=y
+# CONFIG_BPF_JIT_ALWAYS_ON is not set
+CONFIG_USERFAULTFD=y
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_RSEQ=y
+# CONFIG_DEBUG_RSEQ is not set
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+# CONFIG_PC104 is not set
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_SLUB_DEBUG is not set
+# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+CONFIG_SYSTEM_DATA_VERIFICATION=y
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_ARM_DMA_USE_IOMMU=y
+CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_PGTABLE_LEVELS=3
+
+#
+# System Type
+#
+CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C24XX is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP1 is not set
+
+#
+# Multiple platform selection
+#
+
+#
+# CPU Core family selection
+#
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_VIRT is not set
+# CONFIG_ARCH_ACTIONS is not set
+# CONFIG_ARCH_ALPINE is not set
+# CONFIG_ARCH_ARTPEC is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_AXXIA is not set
+# CONFIG_ARCH_BCM is not set
+# CONFIG_ARCH_BERLIN is not set
+# CONFIG_ARCH_DIGICOLOR is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_HISI is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MEDIATEK is not set
+# CONFIG_ARCH_MESON is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_NPCM is not set
+
+#
+# TI OMAP/AM/DM/DRA Family
+#
+# CONFIG_ARCH_OMAP3 is not set
+# CONFIG_ARCH_OMAP4 is not set
+# CONFIG_SOC_OMAP5 is not set
+# CONFIG_SOC_AM33XX is not set
+# CONFIG_SOC_AM43XX is not set
+# CONFIG_SOC_DRA7XX is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_QCOM is not set
+# CONFIG_ARCH_RDA is not set
+# CONFIG_ARCH_REALVIEW is not set
+CONFIG_ARCH_ROCKCHIP=y
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_STM32 is not set
+# CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_TANGO is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UNIPHIER is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_WM8850 is not set
+# CONFIG_ARCH_ZX is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_LPAE=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_SWP_EMULATE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_CPU_SPECTRE=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_KUSER_HELPERS=y
+CONFIG_VDSO=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+# CONFIG_CACHE_L2X0_PMU is not set
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_PL310_ERRATA_727915=y
+CONFIG_PL310_ERRATA_753970=y
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_HEAVY_MB=y
+CONFIG_DEBUG_ALIGN_RODATA=y
+CONFIG_ARM_ERRATA_430973=y
+CONFIG_ARM_ERRATA_643719=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_754327=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_ERRATA_798181=y
+CONFIG_ARM_ERRATA_773022=y
+CONFIG_ARM_ERRATA_818325_852422=y
+CONFIG_ARM_ERRATA_821420=y
+CONFIG_ARM_ERRATA_825619=y
+# CONFIG_ARM_ERRATA_852421 is not set
+CONFIG_ARM_ERRATA_852423=y
+
+#
+# Bus support
+#
+
+#
+# Kernel Features
+#
+CONFIG_HAVE_SMP=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+CONFIG_ARM_CPU_TOPOLOGY=y
+CONFIG_SCHED_MC=y
+# CONFIG_SCHED_SMT is not set
+CONFIG_HAVE_ARM_SCU=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_HAVE_ARM_TWD=y
+# CONFIG_MCPM is not set
+# CONFIG_BIG_LITTLE is not set
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_NR_CPUS=4
+CONFIG_HOTPLUG_CPU=y
+CONFIG_ARM_PSCI=y
+CONFIG_ARCH_NR_GPIO=288
+CONFIG_HZ_FIXED=0
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HAVE_GENERIC_GUP=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHPTE=y
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+# CONFIG_ARM_MODULE_PLTS is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+CONFIG_SECCOMP=y
+# CONFIG_PARAVIRT is not set
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
+# CONFIG_XEN is not set
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ARM_APPENDED_DTB=y
+# CONFIG_ARM_ATAG_DTB_COMPAT is not set
+CONFIG_CMDLINE=""
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_AUTO_ZRELADDR=y
+# CONFIG_EFI is not set
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set
+
+#
+# CPU frequency scaling drivers
+#
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+# CONFIG_QORIQ_CPUFREQ is not set
+
+#
+# CPU Idle
+#
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_DT_IDLE_STATES=y
+
+#
+# ARM CPU Idle Drivers
+#
+CONFIG_ARM_CPUIDLE=y
+# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+# CONFIG_KERNEL_MODE_NEON is not set
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
+# CONFIG_HIBERNATION is not set
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_ADVANCED_DEBUG=y
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_SLEEP_DEBUG=y
+CONFIG_APM_EMULATION=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_CPU_PM=y
+# CONFIG_ENERGY_MODEL is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+
+#
+# Firmware Drivers
+#
+CONFIG_ARM_PSCI_FW=y
+# CONFIG_ARM_PSCI_CHECKER is not set
+# CONFIG_ARM_SCMI_PROTOCOL is not set
+CONFIG_ARM_SCPI_PROTOCOL=y
+CONFIG_ARM_SCPI_POWER_DOMAIN=y
+# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_FW_CFG_SYSFS is not set
+# CONFIG_INTEL_STRATIX10_SERVICE is not set
+CONFIG_HAVE_ARM_SMCCC=y
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# Tegra firmware driver
+#
+# CONFIG_ARM_CRYPTO is not set
+# CONFIG_VIRTUALIZATION is not set
+
+#
+# General architecture-dependent options
+#
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+CONFIG_OPTPROBES=y
+CONFIG_UPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_NMI=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_RCU_TABLE_FREE=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_HAS_PHYS_TO_DMA=y
+CONFIG_REFCOUNT_FULL=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_PLUGIN_HOSTCC="g++"
+CONFIG_HAVE_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGINS is not set
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
+CONFIG_BLK_DEV_INTEGRITY=y
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_DEV_THROTTLING is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+# CONFIG_BLK_CGROUP_IOLATENCY is not set
+# CONFIG_BLK_DEBUG_FS is not set
+# CONFIG_BLK_SED_OPAL is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_BLK_PM=y
+
+#
+# IO Schedulers
+#
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+CONFIG_ASN1=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_ELF_FDPIC is not set
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_FLAT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_COREDUMP=y
+
+#
+# Memory Management options
+#
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_BOUNCE=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_TRANSPARENT_HUGEPAGE=y
+# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
+# CONFIG_CLEANCACHE is not set
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA_DEBUGFS is not set
+CONFIG_CMA_AREAS=7
+CONFIG_ZSWAP=y
+CONFIG_ZPOOL=y
+CONFIG_ZBUD=y
+# CONFIG_Z3FOLD is not set
+CONFIG_ZSMALLOC=y
+# CONFIG_PGTABLE_MAPPING is not set
+# CONFIG_ZSMALLOC_STAT is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_BENCHMARK is not set
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_SKB_EXTENSIONS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=y
+# CONFIG_TLS is not set
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_INTERFACE is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+# CONFIG_XDP_SOCKETS is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_FOU is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+CONFIG_IPV6_MIP6=m
+# CONFIG_IPV6_ILA is not set
+# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_BEET is not set
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+# CONFIG_IPV6_SIT is not set
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_ADVANCED=y
+# CONFIG_BRIDGE_NETFILTER is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NETFILTER_NETLINK_OSF is not set
+CONFIG_NF_CONNTRACK=y
+# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+# CONFIG_NF_CONNTRACK_LABELS is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+# CONFIG_NF_CT_PROTO_SCTP is not set
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+# CONFIG_NF_CONNTRACK_FTP is not set
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_SNMP is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+# CONFIG_NF_CONNTRACK_SIP is not set
+# CONFIG_NF_CONNTRACK_TFTP is not set
+# CONFIG_NF_CT_NETLINK is not set
+# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=y
+
+#
+# Xtables combined modules
+#
+# CONFIG_NETFILTER_XT_MARK is not set
+# CONFIG_NETFILTER_XT_CONNMARK is not set
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+# CONFIG_NETFILTER_XT_TARGET_LED is not set
+# CONFIG_NETFILTER_XT_TARGET_LOG is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_TEE is not set
+# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+
+#
+# Xtables matches
+#
+# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_BPF is not set
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ECN is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+# CONFIG_NETFILTER_XT_MATCH_HL is not set
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
+# CONFIG_NETFILTER_XT_MATCH_OSF is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+# CONFIG_NETFILTER_XT_MATCH_STATE is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=y
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+# CONFIG_NF_LOG_IPV4 is not set
+# CONFIG_NF_REJECT_IPV4 is not set
+# CONFIG_NF_NAT_IPV4 is not set
+CONFIG_IP_NF_IPTABLES=y
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+CONFIG_IP_NF_FILTER=y
+# CONFIG_IP_NF_TARGET_REJECT is not set
+# CONFIG_IP_NF_TARGET_SYNPROXY is not set
+# CONFIG_IP_NF_NAT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_SOCKET_IPV6 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+# CONFIG_NF_REJECT_IPV6 is not set
+# CONFIG_NF_LOG_IPV6 is not set
+# CONFIG_NF_NAT_IPV6 is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+CONFIG_NF_DEFRAG_IPV6=y
+# CONFIG_BRIDGE_NF_EBTABLES is not set
+# CONFIG_BPFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+CONFIG_STP=m
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_HAVE_NET_DSA=y
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+CONFIG_ATALK=y
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+# CONFIG_DNS_RESOLVER is not set
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_NET_NCSI is not set
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+CONFIG_BPF_JIT=y
+# CONFIG_BPF_STREAM_PARSER is not set
+CONFIG_NET_FLOW_LIMIT=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+CONFIG_BT=y
+CONFIG_BT_BREDR=y
+CONFIG_BT_RFCOMM=y
+# CONFIG_BT_RFCOMM_TTY is not set
+CONFIG_BT_BNEP=y
+# CONFIG_BT_BNEP_MC_FILTER is not set
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+# CONFIG_BT_LEDS is not set
+# CONFIG_BT_SELFTEST is not set
+# CONFIG_BT_DEBUGFS is not set
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_INTEL=y
+CONFIG_BT_HCIBTUSB=y
+# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
+# CONFIG_BT_HCIBTUSB_BCM is not set
+# CONFIG_BT_HCIBTUSB_RTL is not set
+# CONFIG_BT_HCIBTSDIO is not set
+# CONFIG_BT_HCIUART is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_BT_MRVL is not set
+# CONFIG_BT_ATH3K is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+CONFIG_WIRELESS=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_CFG80211=y
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+# CONFIG_WIMAX is not set
+CONFIG_RFKILL=y
+CONFIG_RFKILL_LEDS=y
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_RFKILL_GPIO is not set
+CONFIG_NET_9P=m
+CONFIG_NET_9P_VIRTIO=m
+# CONFIG_NET_9P_DEBUG is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+CONFIG_GRO_CELLS=y
+# CONFIG_NET_DEVLINK is not set
+CONFIG_MAY_USE_DEVLINK=y
+CONFIG_FAILOVER=m
+CONFIG_HAVE_EBPF_JIT=y
+
+#
+# Device Drivers
+#
+CONFIG_ARM_AMBA=y
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_SYSCALL=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+# CONFIG_PCIEAER_INJECT is not set
+# CONFIG_PCIE_ECRC is not set
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIE_PME=y
+# CONFIG_PCIE_DPC is not set
+# CONFIG_PCIE_PTM is not set
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# PCI controller drivers
+#
+
+#
+# Cadence PCIe controllers support
+#
+# CONFIG_PCIE_CADENCE_HOST is not set
+# CONFIG_PCI_FTPCI100 is not set
+# CONFIG_PCI_HOST_GENERIC is not set
+# CONFIG_PCIE_XILINX is not set
+# CONFIG_PCI_V3_SEMI is not set
+# CONFIG_PCIE_ALTERA is not set
+
+#
+# DesignWare PCI Core Support
+#
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+
+#
+# PCI switch controller drivers
+#
+# CONFIG_PCI_SW_SWITCHTEC is not set
+# CONFIG_PCCARD is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_DEVTMPFS=y
+# CONFIG_DEVTMPFS_MOUNT is not set
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_FENCE_TRACE is not set
+CONFIG_DMA_CMA=y
+
+#
+# Default contiguous memory area size:
+#
+CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
+# CONFIG_CMA_SIZE_SEL_MIN is not set
+# CONFIG_CMA_SIZE_SEL_MAX is not set
+CONFIG_CMA_ALIGNMENT=8
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+
+#
+# Bus devices
+#
+# CONFIG_BRCMSTB_GISB_ARB is not set
+# CONFIG_SIMPLE_PM_BUS is not set
+# CONFIG_VEXPRESS_CONFIG is not set
+CONFIG_CONNECTOR=m
+# CONFIG_GNSS is not set
+# CONFIG_MTD is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+CONFIG_CDROM=y
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+CONFIG_ZRAM=y
+# CONFIG_ZRAM_WRITEBACK is not set
+# CONFIG_ZRAM_MEMORY_TRACKING is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_VIRTIO_BLK=m
+# CONFIG_VIRTIO_BLK_SCSI is not set
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_RSXX is not set
+
+#
+# NVME Support
+#
+# CONFIG_BLK_DEV_NVME is not set
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TARGET is not set
+
+#
+# Misc devices
+#
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+CONFIG_SRAM=y
+CONFIG_SRAM_EXEC=y
+# CONFIG_PCI_ENDPOINT_TEST is not set
+CONFIG_MISC_RTSX=y
+# CONFIG_PVPANIC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+CONFIG_EEPROM_93CX6=m
+# CONFIG_EEPROM_93XX46 is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
+# CONFIG_EEPROM_EE1004 is not set
+# CONFIG_CB710_CORE is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Intel MIC & related support
+#
+
+#
+# Intel MIC Bus Driver
+#
+
+#
+# SCIF Bus Driver
+#
+
+#
+# VOP Bus Driver
+#
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+
+#
+# VOP Driver
+#
+# CONFIG_ECHO is not set
+# CONFIG_MISC_ALCOR_PCI is not set
+# CONFIG_MISC_RTSX_PCI is not set
+CONFIG_MISC_RTSX_USB=y
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_ISCSI_BOOT_SYSFS is not set
+# CONFIG_SCSI_CXGB3_ISCSI is not set
+# CONFIG_SCSI_BNX2_ISCSI is not set
+# CONFIG_BE2ISCSI is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_HPSA is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_3W_SAS is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_MVSAS is not set
+# CONFIG_SCSI_MVUMI is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_SCSI_ESAS2R is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_MPT3SAS is not set
+# CONFIG_SCSI_MPT2SAS is not set
+# CONFIG_SCSI_SMARTPQI is not set
+# CONFIG_SCSI_UFSHCD is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_MYRB is not set
+# CONFIG_SCSI_MYRS is not set
+# CONFIG_SCSI_SNIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_WD719X is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_PMCRAID is not set
+# CONFIG_SCSI_PM8001 is not set
+# CONFIG_SCSI_VIRTIO is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+# CONFIG_MD_LINEAR is not set
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_FAULTY is not set
+# CONFIG_BCACHE is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
+CONFIG_DM_BIO_PRISON=m
+CONFIG_DM_PERSISTENT_DATA=m
+CONFIG_DM_UNSTRIPED=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_SMQ=m
+# CONFIG_DM_WRITECACHE is not set
+CONFIG_DM_ERA=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_DELAY=m
+CONFIG_DM_UEVENT=y
+CONFIG_DM_FLAKEY=m
+CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
+CONFIG_DM_SWITCH=m
+CONFIG_DM_LOG_WRITES=m
+# CONFIG_DM_INTEGRITY is not set
+# CONFIG_TARGET_CORE is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_FIREWIRE_NOSY is not set
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
+# CONFIG_MACSEC is not set
+# CONFIG_NETCONSOLE is not set
+CONFIG_TUN=y
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
+CONFIG_VIRTIO_NET=m
+# CONFIG_NLMON is not set
+# CONFIG_ARCNET is not set
+
+#
+# CAIF transport drivers
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_ETHERNET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_HISI_FEMAC is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+# CONFIG_LED_TRIGGER_PHY is not set
+
+#
+# MII PHY device drivers
+#
+# CONFIG_AMD_PHY is not set
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_ASIX_PHY is not set
+# CONFIG_AT803X_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_CORTINA_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+CONFIG_FIXED_PHY=y
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_INTEL_XWAY_PHY is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MICREL_PHY is not set
+CONFIG_MICROCHIP_PHY=y
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_XILINX_GMII2RGMII is not set
+# CONFIG_MICREL_KS8995MA is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+CONFIG_USB_NET_DRIVERS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+CONFIG_USB_RTL8150=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_LAN78XX=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_AX88179_178A=y
+CONFIG_USB_NET_CDCETHER=y
+CONFIG_USB_NET_CDC_EEM=y
+# CONFIG_USB_NET_CDC_NCM is not set
+# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SR9800 is not set
+CONFIG_USB_NET_SMSC75XX=y
+CONFIG_USB_NET_SMSC95XX=y
+# CONFIG_USB_NET_GL620A is not set
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=y
+CONFIG_USB_NET_CDC_SUBSET=y
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+# CONFIG_USB_BELKIN is not set
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+# CONFIG_USB_HSO is not set
+# CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_VL600 is not set
+# CONFIG_USB_NET_CH9200 is not set
+# CONFIG_USB_NET_AQC111 is not set
+CONFIG_WLAN=y
+# CONFIG_WIRELESS_WDS is not set
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+CONFIG_ATH_COMMON=m
+CONFIG_WLAN_VENDOR_ATH=y
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_ATH5K is not set
+# CONFIG_ATH5K_PCI is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+# CONFIG_ATH9K is not set
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+# CONFIG_CARL9170 is not set
+# CONFIG_ATH6KL is not set
+# CONFIG_AR5523 is not set
+# CONFIG_WIL6210 is not set
+# CONFIG_ATH10K is not set
+# CONFIG_WCN36XX is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
+# CONFIG_WLAN_VENDOR_BROADCOM is not set
+# CONFIG_WLAN_VENDOR_CISCO is not set
+# CONFIG_WLAN_VENDOR_INTEL is not set
+# CONFIG_WLAN_VENDOR_INTERSIL is not set
+# CONFIG_WLAN_VENDOR_MARVELL is not set
+# CONFIG_WLAN_VENDOR_MEDIATEK is not set
+# CONFIG_WLAN_VENDOR_RALINK is not set
+# CONFIG_WLAN_VENDOR_REALTEK is not set
+# CONFIG_WLAN_VENDOR_RSI is not set
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_VIRT_WIFI is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_VMXNET3 is not set
+# CONFIG_NETDEVSIM is not set
+CONFIG_NET_FAILOVER=m
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+# CONFIG_INPUT_APMPOWER is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADC is not set
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
+# CONFIG_KEYBOARD_TWL4030 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_KEYBOARD_CROS_EC=y
+# CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_BCM is not set
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+CONFIG_MOUSE_ELAN_I2C=y
+CONFIG_MOUSE_ELAN_I2C_I2C=y
+# CONFIG_MOUSE_ELAN_I2C_SMBUS is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=y
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVMEM=y
+# CONFIG_DEVKMEM is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_ASPEED_VUART is not set
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_DW=y
+# CONFIG_SERIAL_8250_EM is not set
+# CONFIG_SERIAL_8250_RT288X is not set
+# CONFIG_SERIAL_8250_MOXA is not set
+CONFIG_SERIAL_OF_PLATFORM=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_AMBA_PL010=y
+CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_SC16IS7XX is not set
+# CONFIG_SERIAL_BCM63XX is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+CONFIG_SERIAL_ARC=y
+CONFIG_SERIAL_ARC_CONSOLE=y
+CONFIG_SERIAL_ARC_NR_PORTS=1
+# CONFIG_SERIAL_RP2 is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_DEV_BUS is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_VIRTIO_CONSOLE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+CONFIG_TCG_TPM=y
+# CONFIG_TCG_TIS is not set
+# CONFIG_TCG_TIS_SPI is not set
+# CONFIG_TCG_TIS_I2C_ATMEL is not set
+CONFIG_TCG_TIS_I2C_INFINEON=y
+# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+# CONFIG_TCG_ATMEL is not set
+# CONFIG_TCG_VTPM_PROXY is not set
+# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
+# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
+CONFIG_DEVPORT=y
+# CONFIG_XILLYBUS is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+# CONFIG_I2C_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX=y
+
+#
+# Multiplexer I2C Chip support
+#
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_GPMUX is not set
+# CONFIG_I2C_MUX_LTC4306 is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
+# CONFIG_I2C_DEMUX_PINCTRL is not set
+# CONFIG_I2C_MUX_MLXCPLD is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_NVIDIA_GPU is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EMEV2 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set
+# CONFIG_I2C_NOMADIK is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+CONFIG_I2C_RK3X=y
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_I2C_CROS_EC_TUNNEL=y
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_SLAVE is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I3C is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+# CONFIG_SPI_MEM is not set
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_CADENCE is not set
+# CONFIG_SPI_DESIGNWARE is not set
+CONFIG_SPI_GPIO=y
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PL022 is not set
+# CONFIG_SPI_PXA2XX is not set
+CONFIG_SPI_ROCKCHIP=y
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_MXIC is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PINCTRL=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_AS3722=y
+# CONFIG_PINCTRL_AXP209 is not set
+# CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_ROCKCHIP=y
+CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SX150X is not set
+CONFIG_PINCTRL_PALMAS=y
+# CONFIG_PINCTRL_RK805 is not set
+# CONFIG_PINCTRL_OCELOT is not set
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=y
+
+#
+# Memory mapped GPIO drivers
+#
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_CADENCE is not set
+# CONFIG_GPIO_DWAPB is not set
+# CONFIG_GPIO_EXAR is not set
+# CONFIG_GPIO_FTGPIO010 is not set
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_MPC8XXX is not set
+CONFIG_GPIO_PL061=y
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+# CONFIG_GPIO_SYSCON is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_ZEVIO is not set
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+
+#
+# MFD GPIO expanders
+#
+# CONFIG_GPIO_DA9052 is not set
+# CONFIG_HTC_EGPIO is not set
+CONFIG_GPIO_PALMAS=y
+CONFIG_GPIO_TWL4030=y
+CONFIG_GPIO_TWL6040=y
+
+#
+# PCI GPIO expanders
+#
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_PCI_IDIO_16 is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
+# CONFIG_GPIO_RDC321X is not set
+
+#
+# SPI GPIO expanders
+#
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_XRA1403 is not set
+
+#
+# USB GPIO expanders
+#
+# CONFIG_W1 is not set
+CONFIG_POWER_AVS=y
+CONFIG_ROCKCHIP_IODOMAIN=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_AS3722=y
+# CONFIG_POWER_RESET_BRCMKONA is not set
+# CONFIG_POWER_RESET_BRCMSTB is not set
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_GPIO_RESTART=y
+# CONFIG_POWER_RESET_LTC2952 is not set
+CONFIG_POWER_RESET_RESTART=y
+# CONFIG_POWER_RESET_VERSATILE is not set
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+CONFIG_REBOOT_MODE=y
+CONFIG_SYSCON_REBOOT_MODE=y
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_APM_POWER is not set
+# CONFIG_GENERIC_ADC_BATTERY is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_CHARGER_ADP5061 is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_LEGO_EV3 is not set
+CONFIG_BATTERY_SBS=y
+# CONFIG_CHARGER_SBS is not set
+# CONFIG_MANAGER_SBS is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_DA9052 is not set
+# CONFIG_AXP20X_POWER is not set
+# CONFIG_AXP288_FUEL_GAUGE is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_TWL4030 is not set
+# CONFIG_CHARGER_LP8727 is not set
+CONFIG_CHARGER_GPIO=y
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_LTC3651 is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
+# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
+# CONFIG_CHARGER_CROS_USBPD is not set
+# CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+# CONFIG_THERMAL_STATISTICS is not set
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_OF=y
+# CONFIG_THERMAL_WRITABLE_TRIPS is not set
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
+# CONFIG_THERMAL_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
+CONFIG_CPU_THERMAL=y
+# CONFIG_CLOCK_THERMAL is not set
+# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_QORIQ_THERMAL is not set
+CONFIG_ROCKCHIP_THERMAL=y
+# CONFIG_GENERIC_ADC_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_DA9052_WATCHDOG is not set
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_ARM_SP805_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_FTWDT010_WATCHDOG is not set
+CONFIG_DW_WATCHDOG=y
+# CONFIG_TWL4030_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_AS3711 is not set
+CONFIG_MFD_AS3722=y
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_CROS_EC=y
+CONFIG_MFD_CROS_EC_CHARDEV=y
+# CONFIG_MFD_MADERA is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+CONFIG_PMIC_DA9052=y
+CONFIG_MFD_DA9052_SPI=y
+CONFIG_MFD_DA9052_I2C=y
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77620 is not set
+CONFIG_MFD_MAX77686=y
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_PM8XXX is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RC5T583 is not set
+CONFIG_MFD_RK808=y
+# CONFIG_MFD_RN5T618 is not set
+CONFIG_MFD_SEC_CORE=y
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
+CONFIG_MFD_PALMAS=y
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_POWER=y
+CONFIG_MFD_TWL4030_AUDIO=y
+CONFIG_TWL6040_CORE=y
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_VX855 is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_ACT8865=y
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
+CONFIG_REGULATOR_AS3722=y
+# CONFIG_REGULATOR_AXP20X is not set
+# CONFIG_REGULATOR_DA9052 is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_DA9211 is not set
+CONFIG_REGULATOR_FAN53555=y
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL9305 is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_LTC3676 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
+# CONFIG_REGULATOR_MAX77686 is not set
+# CONFIG_REGULATOR_MAX77802 is not set
+# CONFIG_REGULATOR_MCP16502 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+CONFIG_REGULATOR_PALMAS=y
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+CONFIG_REGULATOR_PWM=y
+CONFIG_REGULATOR_RK808=y
+# CONFIG_REGULATOR_S2MPA01 is not set
+# CONFIG_REGULATOR_S2MPS11 is not set
+# CONFIG_REGULATOR_S5M8767 is not set
+# CONFIG_REGULATOR_SY8106A is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS65132 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+CONFIG_REGULATOR_TWL4030=y
+# CONFIG_REGULATOR_VCTRL is not set
+# CONFIG_RC_CORE is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+# CONFIG_IMX_IPUV3_CORE is not set
+CONFIG_DRM=y
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+# CONFIG_DRM_DP_CEC is not set
+CONFIG_DRM_GEM_CMA_HELPER=y
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# CONFIG_DRM_HDLCD is not set
+# CONFIG_DRM_MALI_DISPLAY is not set
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_AMDGPU is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+
+#
+# AMD Library routines
+#
+# CONFIG_DRM_NOUVEAU is not set
+# CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_VKMS is not set
+# CONFIG_DRM_EXYNOS is not set
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_ROCKCHIP_ANALOGIX_DP=y
+# CONFIG_ROCKCHIP_CDN_DP is not set
+CONFIG_ROCKCHIP_DW_HDMI=y
+CONFIG_ROCKCHIP_DW_MIPI_DSI=y
+# CONFIG_ROCKCHIP_INNO_HDMI is not set
+# CONFIG_ROCKCHIP_LVDS is not set
+# CONFIG_ROCKCHIP_RGB is not set
+# CONFIG_DRM_UDL is not set
+# CONFIG_DRM_AST is not set
+# CONFIG_DRM_MGAG200 is not set
+# CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_ARMADA is not set
+# CONFIG_DRM_RCAR_DW_HDMI is not set
+# CONFIG_DRM_RCAR_LVDS is not set
+# CONFIG_DRM_OMAP is not set
+# CONFIG_DRM_TILCDC is not set
+# CONFIG_DRM_QXL is not set
+# CONFIG_DRM_BOCHS is not set
+# CONFIG_DRM_VIRTIO_GPU is not set
+# CONFIG_DRM_FSL_DCU is not set
+# CONFIG_DRM_STM is not set
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_LVDS is not set
+CONFIG_DRM_PANEL_SIMPLE=y
+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
+# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
+# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
+# CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO is not set
+# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set
+# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6D16D0 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
+# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
+# CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA is not set
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_DUMB_VGA_DAC is not set
+# CONFIG_DRM_LVDS_ENCODER is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
+# CONFIG_DRM_NXP_PTN3460 is not set
+# CONFIG_DRM_PARADE_PS8622 is not set
+# CONFIG_DRM_SIL_SII8620 is not set
+# CONFIG_DRM_SII902X is not set
+# CONFIG_DRM_SII9234 is not set
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+# CONFIG_DRM_TOSHIBA_TC358764 is not set
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+# CONFIG_DRM_TI_TFP410 is not set
+# CONFIG_DRM_TI_SN65DSI86 is not set
+CONFIG_DRM_ANALOGIX_DP=y
+# CONFIG_DRM_I2C_ADV7511 is not set
+CONFIG_DRM_DW_HDMI=y
+# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
+CONFIG_DRM_DW_HDMI_I2S_AUDIO=y
+# CONFIG_DRM_DW_HDMI_CEC is not set
+CONFIG_DRM_DW_MIPI_DSI=y
+# CONFIG_DRM_STI is not set
+# CONFIG_DRM_ARCPGU is not set
+# CONFIG_DRM_HISI_HIBMC is not set
+# CONFIG_DRM_MXSFB is not set
+# CONFIG_DRM_TINYDRM is not set
+# CONFIG_DRM_PL111 is not set
+# CONFIG_DRM_TVE200 is not set
+# CONFIG_DRM_LEGACY is not set
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+
+#
+# Frame buffer Devices
+#
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_MODE_HELPERS=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_ARMCLCD is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_OPENCORES is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I740 is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+CONFIG_FB_SIMPLE=y
+# CONFIG_FB_SSD1307 is not set
+# CONFIG_FB_SM712 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_GENERIC=y
+CONFIG_BACKLIGHT_PWM=y
+# CONFIG_BACKLIGHT_DA9052 is not set
+# CONFIG_BACKLIGHT_PM8941_WLED is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_PANDORA is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
+# CONFIG_BACKLIGHT_ARCXCNN is not set
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_HDMI=y
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
+# CONFIG_LOGO is not set
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_PCM_ELD=y
+CONFIG_SND_PCM_IEC958=y
+CONFIG_SND_DMAENGINE_PCM=y
+CONFIG_SND_SEQ_DEVICE=y
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+# CONFIG_SND_OSSEMUL is not set
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_HRTIMER=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+# CONFIG_SND_DRIVERS is not set
+CONFIG_SND_PCI=y
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AW2 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_OXYGEN is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CTXFI is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_INDIGOIOX is not set
+# CONFIG_SND_INDIGODJX is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_LOLA is not set
+# CONFIG_SND_LX6464ES is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SE6X is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VIRTUOSO is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# HD-Audio
+#
+# CONFIG_SND_HDA_INTEL is not set
+CONFIG_SND_HDA_PREALLOC_SIZE=64
+# CONFIG_SND_ARM is not set
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+# CONFIG_SND_SOC_AMD_ACP is not set
+# CONFIG_SND_ATMEL_SOC is not set
+CONFIG_SND_DESIGNWARE_I2S=y
+# CONFIG_SND_DESIGNWARE_PCM is not set
+
+#
+# SoC Audio for Freescale CPUs
+#
+
+#
+# Common SoC Audio options for Freescale CPUs:
+#
+# CONFIG_SND_SOC_FSL_ASRC is not set
+# CONFIG_SND_SOC_FSL_SAI is not set
+# CONFIG_SND_SOC_FSL_SSI is not set
+# CONFIG_SND_SOC_FSL_SPDIF is not set
+# CONFIG_SND_SOC_FSL_ESAI is not set
+# CONFIG_SND_SOC_IMX_AUDMUX is not set
+# CONFIG_SND_I2S_HI6210_I2S is not set
+# CONFIG_SND_SOC_IMG is not set
+CONFIG_SND_SOC_ROCKCHIP=y
+CONFIG_SND_SOC_ROCKCHIP_I2S=y
+CONFIG_SND_SOC_ROCKCHIP_PDM=y
+CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
+CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
+CONFIG_SND_SOC_ROCKCHIP_RT5645=y
+CONFIG_SND_SOC_RK3288_HDMI_ANALOG=y
+# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set
+
+#
+# STMicroelectronics STM32 SOC audio support
+#
+# CONFIG_SND_SOC_XILINX_I2S is not set
+# CONFIG_SND_SOC_XTFPGA_I2S is not set
+# CONFIG_ZX_TDM is not set
+CONFIG_SND_SOC_I2C_AND_SPI=y
+
+#
+# CODEC drivers
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_ADAU1701 is not set
+# CONFIG_SND_SOC_ADAU1761_I2C is not set
+# CONFIG_SND_SOC_ADAU1761_SPI is not set
+# CONFIG_SND_SOC_ADAU7002 is not set
+# CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4118 is not set
+# CONFIG_SND_SOC_AK4458 is not set
+# CONFIG_SND_SOC_AK4554 is not set
+# CONFIG_SND_SOC_AK4613 is not set
+# CONFIG_SND_SOC_AK4642 is not set
+# CONFIG_SND_SOC_AK5386 is not set
+# CONFIG_SND_SOC_AK5558 is not set
+# CONFIG_SND_SOC_ALC5623 is not set
+# CONFIG_SND_SOC_BD28623 is not set
+# CONFIG_SND_SOC_BT_SCO is not set
+# CONFIG_SND_SOC_CS35L32 is not set
+# CONFIG_SND_SOC_CS35L33 is not set
+# CONFIG_SND_SOC_CS35L34 is not set
+# CONFIG_SND_SOC_CS35L35 is not set
+# CONFIG_SND_SOC_CS42L42 is not set
+# CONFIG_SND_SOC_CS42L51_I2C is not set
+# CONFIG_SND_SOC_CS42L52 is not set
+# CONFIG_SND_SOC_CS42L56 is not set
+# CONFIG_SND_SOC_CS42L73 is not set
+# CONFIG_SND_SOC_CS4265 is not set
+# CONFIG_SND_SOC_CS4270 is not set
+# CONFIG_SND_SOC_CS4271_I2C is not set
+# CONFIG_SND_SOC_CS4271_SPI is not set
+# CONFIG_SND_SOC_CS42XX8_I2C is not set
+# CONFIG_SND_SOC_CS43130 is not set
+# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS53L30 is not set
+# CONFIG_SND_SOC_DMIC is not set
+CONFIG_SND_SOC_HDMI_CODEC=y
+# CONFIG_SND_SOC_ES7134 is not set
+# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8316 is not set
+CONFIG_SND_SOC_ES8328=y
+CONFIG_SND_SOC_ES8328_I2C=y
+CONFIG_SND_SOC_ES8328_SPI=y
+# CONFIG_SND_SOC_GTM601 is not set
+# CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_MAX98088 is not set
+CONFIG_SND_SOC_MAX98090=y
+# CONFIG_SND_SOC_MAX98504 is not set
+# CONFIG_SND_SOC_MAX9867 is not set
+# CONFIG_SND_SOC_MAX98927 is not set
+# CONFIG_SND_SOC_MAX98373 is not set
+# CONFIG_SND_SOC_MAX9860 is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
+# CONFIG_SND_SOC_PCM1681 is not set
+# CONFIG_SND_SOC_PCM1789_I2C is not set
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
+# CONFIG_SND_SOC_PCM186X_I2C is not set
+# CONFIG_SND_SOC_PCM186X_SPI is not set
+# CONFIG_SND_SOC_PCM3060_I2C is not set
+# CONFIG_SND_SOC_PCM3060_SPI is not set
+# CONFIG_SND_SOC_PCM3168A_I2C is not set
+# CONFIG_SND_SOC_PCM3168A_SPI is not set
+# CONFIG_SND_SOC_PCM512x_I2C is not set
+# CONFIG_SND_SOC_PCM512x_SPI is not set
+CONFIG_SND_SOC_RL6231=y
+# CONFIG_SND_SOC_RT5616 is not set
+# CONFIG_SND_SOC_RT5631 is not set
+CONFIG_SND_SOC_RT5645=y
+# CONFIG_SND_SOC_SGTL5000 is not set
+# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
+# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
+# CONFIG_SND_SOC_SPDIF is not set
+# CONFIG_SND_SOC_SSM2305 is not set
+# CONFIG_SND_SOC_SSM2602_SPI is not set
+# CONFIG_SND_SOC_SSM2602_I2C is not set
+# CONFIG_SND_SOC_SSM4567 is not set
+# CONFIG_SND_SOC_STA32X is not set
+# CONFIG_SND_SOC_STA350 is not set
+# CONFIG_SND_SOC_STI_SAS is not set
+# CONFIG_SND_SOC_TAS2552 is not set
+# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_SND_SOC_TAS5720 is not set
+# CONFIG_SND_SOC_TAS6424 is not set
+# CONFIG_SND_SOC_TDA7419 is not set
+# CONFIG_SND_SOC_TFA9879 is not set
+# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC31XX is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC3X is not set
+CONFIG_SND_SOC_TS3A227E=y
+# CONFIG_SND_SOC_TSCS42XX is not set
+# CONFIG_SND_SOC_TSCS454 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8523 is not set
+# CONFIG_SND_SOC_WM8524 is not set
+# CONFIG_SND_SOC_WM8580 is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8728 is not set
+# CONFIG_SND_SOC_WM8731 is not set
+# CONFIG_SND_SOC_WM8737 is not set
+# CONFIG_SND_SOC_WM8741 is not set
+# CONFIG_SND_SOC_WM8750 is not set
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8770 is not set
+# CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
+# CONFIG_SND_SOC_WM8804_I2C is not set
+# CONFIG_SND_SOC_WM8804_SPI is not set
+# CONFIG_SND_SOC_WM8903 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+# CONFIG_SND_SOC_WM8962 is not set
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8978 is not set
+# CONFIG_SND_SOC_WM8985 is not set
+# CONFIG_SND_SOC_ZX_AUD96P22 is not set
+# CONFIG_SND_SOC_MAX9759 is not set
+# CONFIG_SND_SOC_MT6351 is not set
+# CONFIG_SND_SOC_NAU8540 is not set
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SOC_NAU8822 is not set
+# CONFIG_SND_SOC_NAU8824 is not set
+# CONFIG_SND_SOC_TPA6130A2 is not set
+# CONFIG_SND_SIMPLE_CARD is not set
+# CONFIG_SND_SIMPLE_SCU_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+CONFIG_UHID=y
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_ASUS is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_BIGBEN_FF is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+CONFIG_HID_CORSAIR=y
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CP2112 is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+CONFIG_HID_ELAN=y
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_GOOGLE_HAMMER is not set
+# CONFIG_HID_GT683R is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LED is not set
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PENMOUNT is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_RETRODE is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+# CONFIG_HID_ALPS is not set
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+# CONFIG_USB_HIDDEV is not set
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_DYNAMIC_MINORS=y
+CONFIG_USB_OTG=y
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_OTG_FSM is not set
+# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_DBGCAP is not set
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_REALTEK=y
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+CONFIG_USB_STORAGE_CYPRESS_ATACB=y
+CONFIG_USB_STORAGE_ENE_UB6250=y
+CONFIG_USB_UAS=y
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_DWC3 is not set
+CONFIG_USB_DWC2=y
+CONFIG_USB_DWC2_HOST=y
+
+#
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
+#
+# CONFIG_USB_DWC2_PCI is not set
+# CONFIG_USB_DWC2_DEBUG is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+# CONFIG_AM335X_PHY_USB is not set
+CONFIG_USB_GPIO_VBUS=y
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_ULPI is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_UWB is not set
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=16
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_ARMMMCI is not set
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set
+CONFIG_MMC_SDHCI_CADENCE=y
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_SPI=y
+# CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_VIA_SDMMC is not set
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_PLTFM=y
+# CONFIG_MMC_DW_BLUEFIELD is not set
+# CONFIG_MMC_DW_EXYNOS is not set
+# CONFIG_MMC_DW_HI3798CV200 is not set
+# CONFIG_MMC_DW_K3 is not set
+# CONFIG_MMC_DW_PCI is not set
+CONFIG_MMC_DW_ROCKCHIP=y
+# CONFIG_MMC_VUB300 is not set
+CONFIG_MMC_USHC=y
+# CONFIG_MMC_USDHI6ROL0 is not set
+CONFIG_MMC_REALTEK_USB=y
+# CONFIG_MMC_CQHCI is not set
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
+# CONFIG_MMC_SDHCI_XENON is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+# CONFIG_MMC_SDHCI_AM654 is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_AN30259A is not set
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_CR0014114 is not set
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_LM3692X is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP3952 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
+# CONFIG_LEDS_LP8501 is not set
+# CONFIG_LEDS_LP8860 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_DA9052 is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_PWM is not set
+# CONFIG_LEDS_REGULATOR is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TLC591XX is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_IS31FL319X is not set
+# CONFIG_LEDS_IS31FL32XX is not set
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
+# CONFIG_LEDS_BLINKM is not set
+# CONFIG_LEDS_SYSCON is not set
+# CONFIG_LEDS_MLXREG is not set
+# CONFIG_LEDS_USER is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_TIMER is not set
+# CONFIG_LEDS_TRIGGER_ONESHOT is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
+CONFIG_LEDS_TRIGGER_CPU=y
+# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
+# CONFIG_LEDS_TRIGGER_GPIO is not set
+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_LEDS_TRIGGER_PANIC is not set
+# CONFIG_LEDS_TRIGGER_NETDEV is not set
+# CONFIG_LEDS_TRIGGER_PATTERN is not set
+# CONFIG_LEDS_TRIGGER_AUDIO is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_NVMEM=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
+# CONFIG_RTC_DRV_ABX80X is not set
+# CONFIG_RTC_DRV_AS3722 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+CONFIG_RTC_DRV_HYM8563=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_MAX77686 is not set
+CONFIG_RTC_DRV_RK808=y
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_ISL12026 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+# CONFIG_RTC_DRV_TWL4030 is not set
+# CONFIG_RTC_DRV_PALMAS is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8010 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_RV8803 is not set
+# CONFIG_RTC_DRV_S5M is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1302 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1343 is not set
+# CONFIG_RTC_DRV_DS1347 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6916 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RX4581 is not set
+# CONFIG_RTC_DRV_RX6110 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+# CONFIG_RTC_DRV_MCP795 is not set
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS3232 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
+# CONFIG_RTC_DRV_RV3029C2 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
+# CONFIG_RTC_DRV_DA9052 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_ZYNQMP is not set
+CONFIG_RTC_DRV_CROS_EC=y
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+# CONFIG_RTC_DRV_FTRTC010 is not set
+# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_R7301 is not set
+
+#
+# HID Sensor RTC drivers
+#
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+# CONFIG_ALTERA_MSGDMA is not set
+CONFIG_AMBA_PL08X=y
+# CONFIG_DW_AXI_DMAC is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_NBPFAXI_DMA is not set
+CONFIG_PL330_DMA=y
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+
+#
+# DMABUF options
+#
+CONFIG_SYNC_FILE=y
+# CONFIG_SW_SYNC is not set
+# CONFIG_UDMABUF is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VFIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+CONFIG_VIRTIO=y
+# CONFIG_VIRTIO_MENU is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_STAGING is not set
+# CONFIG_GOLDFISH is not set
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_CROS_EC_CTL=y
+CONFIG_CROS_EC_I2C=y
+CONFIG_CROS_EC_SPI=y
+CONFIG_CROS_EC_PROTO=y
+# CONFIG_MELLANOX_PLATFORM is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_CLK_HSDK is not set
+# CONFIG_COMMON_CLK_MAX77686 is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+CONFIG_COMMON_CLK_RK808=y
+# CONFIG_COMMON_CLK_SCPI is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_S2MPS11 is not set
+# CONFIG_CLK_TWL6040 is not set
+# CONFIG_CLK_QORIQ is not set
+# CONFIG_COMMON_CLK_PALMAS is not set
+# CONFIG_COMMON_CLK_PWM is not set
+# CONFIG_COMMON_CLK_VC5 is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_DW_APB_TIMER=y
+CONFIG_DW_APB_TIMER_OF=y
+CONFIG_ROCKCHIP_TIMER=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_GLOBAL_TIMER=y
+CONFIG_ARM_TIMER_SP804=y
+CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
+CONFIG_MAILBOX=y
+# CONFIG_ARM_MHU is not set
+# CONFIG_PLATFORM_MHU is not set
+CONFIG_PL320_MBOX=y
+CONFIG_ROCKCHIP_MBOX=y
+# CONFIG_ALTERA_MBOX is not set
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IO_PGTABLE=y
+CONFIG_IOMMU_IO_PGTABLE_LPAE=y
+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_OF_IOMMU=y
+CONFIG_ROCKCHIP_IOMMU=y
+# CONFIG_ARM_SMMU is not set
+
+#
+# Remoteproc drivers
+#
+CONFIG_REMOTEPROC=y
+
+#
+# Rpmsg drivers
+#
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_VIRTIO is not set
+# CONFIG_SOUNDWIRE is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+
+#
+# Broadcom SoC drivers
+#
+# CONFIG_SOC_BRCMSTB is not set
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+
+#
+# i.MX SoC drivers
+#
+
+#
+# Qualcomm SoC drivers
+#
+CONFIG_ROCKCHIP_GRF=y
+CONFIG_ROCKCHIP_PM_DOMAINS=y
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# CONFIG_XILINX_VCU is not set
+# CONFIG_PM_DEVFREQ is not set
+CONFIG_EXTCON=y
+
+#
+# Extcon Device Drivers
+#
+# CONFIG_EXTCON_ADC_JACK is not set
+# CONFIG_EXTCON_GPIO is not set
+# CONFIG_EXTCON_MAX3355 is not set
+# CONFIG_EXTCON_PALMAS is not set
+# CONFIG_EXTCON_RT8973A is not set
+# CONFIG_EXTCON_SM5502 is not set
+# CONFIG_EXTCON_USB_GPIO is not set
+# CONFIG_EXTCON_USBC_CROS_EC is not set
+# CONFIG_MEMORY is not set
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+# CONFIG_IIO_BUFFER_CB is not set
+# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
+CONFIG_IIO_KFIFO_BUF=y
+CONFIG_IIO_TRIGGERED_BUFFER=y
+# CONFIG_IIO_CONFIGFS is not set
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
+# CONFIG_IIO_SW_TRIGGER is not set
+
+#
+# Accelerometers
+#
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADXL345_I2C is not set
+# CONFIG_ADXL345_SPI is not set
+# CONFIG_ADXL372_SPI is not set
+# CONFIG_ADXL372_I2C is not set
+# CONFIG_BMA180 is not set
+# CONFIG_BMA220 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
+# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
+# CONFIG_MC3230 is not set
+# CONFIG_MMA7455_I2C is not set
+# CONFIG_MMA7455_SPI is not set
+# CONFIG_MMA7660 is not set
+# CONFIG_MMA8452 is not set
+# CONFIG_MMA9551 is not set
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_SCA3000 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
+
+#
+# Analog to digital converters
+#
+# CONFIG_AD7124 is not set
+# CONFIG_AD7266 is not set
+# CONFIG_AD7291 is not set
+# CONFIG_AD7298 is not set
+# CONFIG_AD7476 is not set
+# CONFIG_AD7766 is not set
+# CONFIG_AD7791 is not set
+# CONFIG_AD7793 is not set
+# CONFIG_AD7887 is not set
+# CONFIG_AD7923 is not set
+# CONFIG_AD7949 is not set
+# CONFIG_AD799X is not set
+# CONFIG_AXP20X_ADC is not set
+# CONFIG_AXP288_ADC is not set
+# CONFIG_CC10001_ADC is not set
+# CONFIG_ENVELOPE_DETECTOR is not set
+# CONFIG_HI8435 is not set
+# CONFIG_HX711 is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2471 is not set
+# CONFIG_LTC2485 is not set
+# CONFIG_LTC2497 is not set
+# CONFIG_MAX1027 is not set
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
+# CONFIG_MAX1363 is not set
+# CONFIG_MAX9611 is not set
+# CONFIG_MCP320X is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_MCP3911 is not set
+# CONFIG_NAU7802 is not set
+# CONFIG_PALMAS_GPADC is not set
+CONFIG_ROCKCHIP_SARADC=y
+CONFIG_SD_ADC_MODULATOR=y
+# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADC0832 is not set
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC12138 is not set
+# CONFIG_TI_ADC108S102 is not set
+# CONFIG_TI_ADC128S052 is not set
+# CONFIG_TI_ADC161S626 is not set
+# CONFIG_TI_ADS1015 is not set
+# CONFIG_TI_ADS7950 is not set
+# CONFIG_TI_ADS8688 is not set
+# CONFIG_TI_TLC4541 is not set
+# CONFIG_TWL4030_MADC is not set
+# CONFIG_TWL6030_GPADC is not set
+# CONFIG_VF610_ADC is not set
+
+#
+# Analog Front Ends
+#
+# CONFIG_IIO_RESCALE is not set
+
+#
+# Amplifiers
+#
+# CONFIG_AD8366 is not set
+
+#
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_BME680 is not set
+# CONFIG_CCS811 is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+# CONFIG_IIO_CROS_EC_SENSORS_CORE is not set
+
+#
+# Hid Sensor IIO Common
+#
+
+#
+# SSP Sensor Common
+#
+# CONFIG_IIO_SSP_SENSORHUB is not set
+
+#
+# Counters
+#
+
+#
+# Digital to analog converters
+#
+# CONFIG_AD5064 is not set
+# CONFIG_AD5360 is not set
+# CONFIG_AD5380 is not set
+# CONFIG_AD5421 is not set
+# CONFIG_AD5446 is not set
+# CONFIG_AD5449 is not set
+# CONFIG_AD5592R is not set
+# CONFIG_AD5593R is not set
+# CONFIG_AD5504 is not set
+# CONFIG_AD5624R_SPI is not set
+# CONFIG_LTC1660 is not set
+# CONFIG_LTC2632 is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
+# CONFIG_AD5755 is not set
+# CONFIG_AD5758 is not set
+# CONFIG_AD5761 is not set
+# CONFIG_AD5764 is not set
+# CONFIG_AD5791 is not set
+# CONFIG_AD7303 is not set
+# CONFIG_AD8801 is not set
+# CONFIG_DPOT_DAC is not set
+# CONFIG_DS4424 is not set
+# CONFIG_M62332 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MAX5821 is not set
+# CONFIG_MCP4725 is not set
+# CONFIG_MCP4922 is not set
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
+# CONFIG_TI_DAC7311 is not set
+# CONFIG_VF610_DAC is not set
+
+#
+# IIO dummy driver
+#
+
+#
+# Frequency Synthesizers DDS/PLL
+#
+
+#
+# Clock Generator/Distribution
+#
+# CONFIG_AD9523 is not set
+
+#
+# Phase-Locked Loop (PLL) frequency synthesizers
+#
+# CONFIG_ADF4350 is not set
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_ADIS16080 is not set
+# CONFIG_ADIS16130 is not set
+# CONFIG_ADIS16136 is not set
+# CONFIG_ADIS16260 is not set
+# CONFIG_ADXRS450 is not set
+# CONFIG_BMG160 is not set
+# CONFIG_MPU3050_I2C is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
+#
+# Health Sensors
+#
+
+#
+# Heart Rate Monitors
+#
+# CONFIG_AFE4403 is not set
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+# CONFIG_MAX30102 is not set
+
+#
+# Humidity sensors
+#
+# CONFIG_AM2315 is not set
+# CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTS221 is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
+
+#
+# Inertial measurement units
+#
+# CONFIG_ADIS16400 is not set
+# CONFIG_ADIS16480 is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_BMI160_SPI is not set
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
+# CONFIG_INV_MPU6050_SPI is not set
+# CONFIG_IIO_ST_LSM6DSX is not set
+
+#
+# Light sensors
+#
+# CONFIG_ADJD_S311 is not set
+# CONFIG_AL3320A is not set
+# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
+# CONFIG_BH1780 is not set
+# CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
+# CONFIG_CM3605 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_ISL29125 is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_LV0104CS is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1133 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_ST_UVIS25 is not set
+# CONFIG_TCS3414 is not set
+# CONFIG_TCS3472 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2772 is not set
+# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_VCNL4035 is not set
+# CONFIG_VEML6070 is not set
+# CONFIG_VL6180 is not set
+# CONFIG_ZOPT2201 is not set
+
+#
+# Magnetometer sensors
+#
+# CONFIG_AK8974 is not set
+# CONFIG_AK8975 is not set
+# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
+# CONFIG_BMC150_MAGN_SPI is not set
+# CONFIG_MAG3110 is not set
+# CONFIG_MMC35240 is not set
+# CONFIG_IIO_ST_MAGN_3AXIS is not set
+# CONFIG_SENSORS_HMC5843_I2C is not set
+# CONFIG_SENSORS_HMC5843_SPI is not set
+# CONFIG_SENSORS_RM3100_I2C is not set
+# CONFIG_SENSORS_RM3100_SPI is not set
+
+#
+# Multiplexers
+#
+# CONFIG_IIO_MUX is not set
+
+#
+# Inclinometer sensors
+#
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_INTERRUPT_TRIGGER is not set
+CONFIG_IIO_SYSFS_TRIGGER=y
+
+#
+# Digital potentiometers
+#
+# CONFIG_AD5272 is not set
+# CONFIG_DS1803 is not set
+# CONFIG_MAX5481 is not set
+# CONFIG_MAX5487 is not set
+# CONFIG_MCP4018 is not set
+# CONFIG_MCP4131 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_MCP41010 is not set
+# CONFIG_TPL0102 is not set
+
+#
+# Digital potentiostats
+#
+# CONFIG_LMP91000 is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_ABP060MG is not set
+# CONFIG_BMP280 is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
+# CONFIG_MPL115_SPI is not set
+# CONFIG_MPL3115 is not set
+# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
+# CONFIG_IIO_ST_PRESS is not set
+# CONFIG_T5403 is not set
+# CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
+
+#
+# Lightning sensors
+#
+# CONFIG_AS3935 is not set
+
+#
+# Proximity and distance sensors
+#
+# CONFIG_ISL29501 is not set
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_RFD77402 is not set
+# CONFIG_SRF04 is not set
+# CONFIG_SX9500 is not set
+# CONFIG_SRF08 is not set
+# CONFIG_VL53L0X_I2C is not set
+
+#
+# Resolver to digital converters
+#
+# CONFIG_AD2S90 is not set
+# CONFIG_AD2S1200 is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_MAXIM_THERMOCOUPLE is not set
+# CONFIG_MLX90614 is not set
+# CONFIG_MLX90632 is not set
+# CONFIG_TMP006 is not set
+# CONFIG_TMP007 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
+# CONFIG_NTB is not set
+# CONFIG_VME_BUS is not set
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_CROS_EC=y
+# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_ROCKCHIP=y
+# CONFIG_PWM_TWL is not set
+# CONFIG_PWM_TWL_LED is not set
+
+#
+# IRQ chip support
+#
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+# CONFIG_IPACK_BUS is not set
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_TI_SYSCON is not set
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_CADENCE_DP is not set
+# CONFIG_PHY_CADENCE_SIERRA is not set
+# CONFIG_PHY_FSL_IMX8MQ_USB is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_OCELOT_SERDES is not set
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_PHY_ROCKCHIP_EMMC=y
+# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set
+# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set
+# CONFIG_PHY_ROCKCHIP_PCIE is not set
+# CONFIG_PHY_ROCKCHIP_TYPEC is not set
+CONFIG_PHY_ROCKCHIP_USB=y
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# CONFIG_ARM_CCI_PMU is not set
+# CONFIG_ARM_CCN is not set
+CONFIG_ARM_PMU=y
+CONFIG_RAS=y
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DAX is not set
+CONFIG_NVMEM=y
+CONFIG_ROCKCHIP_EFUSE=y
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+# CONFIG_FPGA is not set
+# CONFIG_FSI is not set
+# CONFIG_TEE is not set
+CONFIG_PM_OPP=y
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT2=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_ENCRYPTION is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_ONLINE_SCRUB is not set
+# CONFIG_XFS_WARN is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
+# CONFIG_BTRFS_ASSERT is not set
+# CONFIG_BTRFS_FS_REF_VERIFY is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
+CONFIG_FSNOTIFY=y
+# CONFIG_DNOTIFY is not set
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_AUTOFS_FS=m
+CONFIG_FUSE_FS=m
+# CONFIG_CUSE is not set
+CONFIG_OVERLAY_FS=m
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
+# CONFIG_OVERLAY_FS_INDEX is not set
+# CONFIG_OVERLAY_FS_XINO_AUTO is not set
+# CONFIG_OVERLAY_FS_METACOPY is not set
+
+#
+# Caches
+#
+CONFIG_FSCACHE=y
+# CONFIG_FSCACHE_STATS is not set
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=y
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=850
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_FAT_DEFAULT_UTF8=y
+CONFIG_NTFS_FS=y
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PROC_CHILDREN=y
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+# CONFIG_HUGETLBFS is not set
+CONFIG_MEMFD_CREATE=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+CONFIG_ECRYPT_FS=y
+# CONFIG_ECRYPT_FS_MESSAGING is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_FILE_CACHE is not set
+CONFIG_SQUASHFS_FILE_DIRECT=y
+# CONFIG_SQUASHFS_DECOMP_SINGLE is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
+CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
+# CONFIG_SQUASHFS_XATTR is not set
+CONFIG_SQUASHFS_ZLIB=y
+# CONFIG_SQUASHFS_LZ4 is not set
+# CONFIG_SQUASHFS_LZO is not set
+# CONFIG_SQUASHFS_XZ is not set
+# CONFIG_SQUASHFS_ZSTD is not set
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
+# CONFIG_TRUSTED_KEYS is not set
+# CONFIG_ENCRYPTED_KEYS is not set
+# CONFIG_KEY_DH_OPERATIONS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+CONFIG_SECURITYFS=y
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_FORTIFY_SOURCE is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_ASYNC_PQ=m
+CONFIG_ASYNC_RAID6_RECOV=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=y
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_DH is not set
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
+# CONFIG_CRYPTO_PCRYPT is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_ENGINE=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128L is not set
+# CONFIG_CRYPTO_AEGIS256 is not set
+# CONFIG_CRYPTO_MORUS640 is not set
+# CONFIG_CRYPTO_MORUS1280 is not set
+CONFIG_CRYPTO_SEQIV=y
+# CONFIG_CRYPTO_ECHAINIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
+CONFIG_CRYPTO_CTR=y
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_OFB is not set
+# CONFIG_CRYPTO_PCBC is not set
+CONFIG_CRYPTO_XTS=y
+# CONFIG_CRYPTO_KEYWRAP is not set
+# CONFIG_CRYPTO_ADIANTUM is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32 is not set
+CONFIG_CRYPTO_CRCT10DIF=y
+CONFIG_CRYPTO_GHASH=y
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_STREEBOG is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_842 is not set
+CONFIG_CRYPTO_LZ4=y
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_ROCKCHIP=y
+CONFIG_CRYPTO_DEV_VIRTIO=m
+# CONFIG_CRYPTO_DEV_CCREE is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
+
+#
+# Certificates for signature checking
+#
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_RAID6_PQ=m
+CONFIG_RAID6_PQ_BENCHMARK=y
+CONFIG_BITREVERSE=y
+CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+# CONFIG_CRC8 is not set
+CONFIG_XXHASH=y
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_ZSTD_COMPRESS=m
+CONFIG_ZSTD_DECOMPRESS=m
+CONFIG_XZ_DEC=y
+# CONFIG_XZ_DEC_X86 is not set
+# CONFIG_XZ_DEC_POWERPC is not set
+# CONFIG_XZ_DEC_IA64 is not set
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+# CONFIG_XZ_DEC_SPARC is not set
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_DMA_REMAP=y
+CONFIG_SGL_ALLOC=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_NLATTR=y
+CONFIG_CLZ_TAB=y
+# CONFIG_CORDIC is not set
+CONFIG_DDR=y
+CONFIG_IRQ_POLL=y
+CONFIG_MPILIB=y
+CONFIG_LIBFDT=y
+CONFIG_OID_REGISTRY=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_SG_POOL=y
+CONFIG_SBITMAP=y
+# CONFIG_STRING_SELFTEST is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=8
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+# CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_GDB_SCRIPTS is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
+# CONFIG_MAGIC_SYSRQ_SERIAL is not set
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_KASAN_STACK=1
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=300
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
+# CONFIG_DEBUG_PREEMPT is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+CONFIG_STACKTRACE=y
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_PREEMPTIRQ_EVENTS is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_HWLAT_TRACER is not set
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_KPROBE_EVENTS is not set
+CONFIG_UPROBE_EVENTS=y
+CONFIG_BPF_EVENTS=y
+CONFIG_DYNAMIC_EVENTS=y
+CONFIG_PROBE_EVENTS=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+# CONFIG_FUNCTION_PROFILER is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_TRACE_EVAL_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_RUNTIME_TESTING_MENU is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+# CONFIG_STRICT_DEVMEM is not set
+# CONFIG_ARM_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_WX is not set
+CONFIG_UNWINDER_FRAME_POINTER=y
+# CONFIG_UNWINDER_ARM is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_ARM_KPROBES_TEST is not set
+# CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_CORESIGHT is not set
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 5e6af1fdb2..e7e614881a 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -73,7 +73,7 @@
 (define-public duplicity
   (package
     (name "duplicity")
-    (version "0.7.18.1")
+    (version "0.7.18.2")
     (source
      (origin
       (method url-fetch)
@@ -82,8 +82,7 @@
                           "-series/" version "/+download/duplicity-"
                           version ".tar.gz"))
       (sha256
-       (base32
-        "17c0203y5qz9w8iyhs26l44qf6a1vp26b5ykz1ypdr2kv6g02df9"))))
+       (base32 "0j37dgyji36hvb5dbzlmh5rj83jwhni02yq16g6rd3hj8f7qhdn2"))))
     (build-system python-build-system)
     (native-inputs
      `(("util-linux" ,util-linux)       ; setsid command, for the tests
@@ -980,14 +979,14 @@ precious backup space.
 (define-public burp
   (package
     (name "burp")
-    (version "2.3.2")
+    (version "2.3.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/burp/burp-" version
                                   "/burp-" version ".tar.bz2"))
               (sha256
                (base32
-                "1nkkn0nfydn39cl5rxd1wbmzizird6z05j9h2xr7xczdlhhjnaai"))))
+                "0r82mmfjm57yr4f34za3x3rkgc5z2c7nwbnsjjki16qfc9kjyai3"))))
     (build-system gnu-build-system)
     (inputs
      `(("librsync" ,librsync)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 37be1ffeb7..8fe8f3d9a5 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -553,9 +553,9 @@ wrapper for the cross-linker for that target, called 'TARGET-ld'."
                        #t)))))
     (synopsis "The linker wrapper")
     (description
-     "The linker wrapper (or 'ld-wrapper') wraps the linker to add any
-missing '-rpath' flags, and to detect any misuse of libraries outside of the
-store.")
+     "The linker wrapper (or @code{ld-wrapper}) wraps the linker to add any
+missing @code{-rpath} flags, and to detect any misuse of libraries outside of
+the store.")
     (home-page "https://www.gnu.org/software/guix//")
     (license gpl3+)))
 
@@ -961,8 +961,8 @@ with the Linux kernel.")
     (synopsis "All the locales supported by the GNU C Library")
     (description
      "This package provides all the locales supported by the GNU C Library,
-more than 400 in total.  To use them set the 'LOCPATH' environment variable to
-the 'share/locale' sub-directory of this package.")
+more than 400 in total.  To use them set the @code{LOCPATH} environment variable
+to the @code{share/locale} sub-directory of this package.")
     (outputs '("out"))                            ;110+ MiB
     (native-search-paths '())
     (arguments
@@ -1099,7 +1099,7 @@ command.")
 (define-public tzdata
   (package
     (name "tzdata")
-    (version "2018i")
+    (version "2019a")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1107,7 +1107,7 @@ command.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "1n80ih8agibagic401smqscz3xxqvs5bm5x3lk803g539kw5xi42"))))
+               "0wlpqm4asvi0waaz24xj20iq40gqfypmb4nldjhkfgm09bgnsdlh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
@@ -1157,7 +1157,7 @@ command.")
                                 version ".tar.gz"))
                           (sha256
                            (base32
-                            "1p1jxlnryaxknj0l768h3dmlk2jpqz5n5d24w9c9vyx6dj3xpb5a"))))))
+                            "1x9z8fpgnhzlsnps0hamb54ymaskjab7ys9m4i4gpk9hpiig2fc7"))))))
     (home-page "https://www.iana.org/time-zones")
     (synopsis "Database of current and historical time zones")
     (description "The Time Zone Database (often called tz or zoneinfo)
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 710b9fd07a..deb179c4d9 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -29,7 +29,11 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graph)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages web))
@@ -708,9 +712,96 @@ annotations.")
      "This is a manifest package for Illumina's EPIC methylation arrays.")
     (license license:artistic2.0)))
 
+(define-public r-do-db
+  (package
+    (name "r-do-db")
+    (version "2.9")
+    (source (origin
+              (method url-fetch)
+              ;; We cannot use bioconductor-uri here because this tarball is
+              ;; located under "data/annotation/" instead of "bioc/".
+              (uri (string-append "https://www.bioconductor.org/packages/"
+                                  "release/data/annotation/src/contrib/"
+                                  "DO.db_" version ".tar.gz"))
+              (sha256
+               (base32
+                "10bqqa124l61ivzy4mdd3z3ar9a6537qbxw23pc4y9w8a6dwnavn"))))
+    (properties
+     `((upstream-name . "DO.db")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)))
+    (home-page "https://www.bioconductor.org/packages/DO.db/")
+    (synopsis "Annotation maps describing the entire Disease Ontology")
+    (description
+     "This package provides a set of annotation maps describing the entire
+Disease Ontology.")
+    (license license:artistic2.0)))
+
 
 ;;; Experiment data
 
+(define-public r-abadata
+  (package
+    (name "r-abadata")
+    (version "1.12.0")
+    (source (origin
+              (method url-fetch)
+              ;; We cannot use bioconductor-uri here because this tarball is
+              ;; located under "data/experiment/" instead of "bioc/".
+              (uri (string-append "https://www.bioconductor.org/packages/"
+                                  "release/data/experiment/src/contrib/"
+                                  "ABAData_" version ".tar.gz"))
+              (sha256
+               (base32
+                "1bmj341xcymlrk02gss5vvrqc4ddas0rdw39lnpsj98hq6n11p5z"))))
+    (properties
+     `((upstream-name . "ABAData")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)))
+    (home-page "https://www.bioconductor.org/packages/ABAData/")
+    (synopsis "Gene expression in human brain regions from Allen Brain Atlas")
+    (description
+     "This package provides the data for the gene expression enrichment
+analysis conducted in the package ABAEnrichment.  The package includes three
+datasets which are derived from the Allen Brain Atlas:
+
+@enumerate
+@item Gene expression data from Human Brain (adults) averaged across donors,
+@item Gene expression data from the Developing Human Brain pooled into five
+  age categories and averaged across donors, and
+@item a developmental effect score based on the Developing Human Brain
+  expression data.
+@end enumerate
+
+All datasets are restricted to protein coding genes.")
+    (license license:gpl2+)))
+
+(define-public r-arrmdata
+  (package
+    (name "r-arrmdata")
+    (version "1.18.0")
+    (source (origin
+              (method url-fetch)
+              ;; We cannot use bioconductor-uri here because this tarball is
+              ;; located under "data/experiment/" instead of "bioc/".
+              (uri (string-append "https://www.bioconductor.org/packages/"
+                                  "release/data/experiment/src/contrib/"
+                                  "ARRmData_" version ".tar.gz"))
+              (sha256
+               (base32
+                "0r1y3zn7ly4k3ngx55vfavn9s6aidbddlv2fbmj7hj3hvpslmyly"))))
+    (properties
+     `((upstream-name . "ARRmData")))
+    (build-system r-build-system)
+    (home-page "https://www.bioconductor.org/packages/ARRmData/")
+    (synopsis "Example dataset for normalization of Illumina 450k methylation data")
+    (description
+     "This package provides raw beta values from 36 samples across 3 groups
+from Illumina 450k methylation arrays.")
+    (license license:artistic2.0)))
+
 (define-public r-hsmmsinglecell
   (package
     (name "r-hsmmsinglecell")
@@ -1530,14 +1621,14 @@ genes or proteins in these datasets.")
 (define-public r-inspect
   (package
     (name "r-inspect")
-    (version "1.12.1")
+    (version "1.12.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "INSPEcT" version))
        (sha256
         (base32
-         "07q5msw9rnamx957mbiawnv3p9kr5ahwawzvv9xzla7d3lkk62xp"))))
+         "1ykkr15b4bc2carwppf9yxzpl2n6lqpc6z6i2qy37vc6xffzgdx4"))))
     (properties `((upstream-name . "INSPEcT")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2521,3 +2612,1662 @@ 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)))
+
+;; This is a CRAN package, but it depends on packages from Bioconductor.
+(define-public r-gkmsvm
+  (package
+    (name "r-gkmsvm")
+    (version "0.79.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "gkmSVM" version))
+       (sha256
+        (base32
+         "04dakbgfvfalz4rm4fvvybp506dn5fbj5g86ybfhrc6wywjllsz3"))))
+    (properties `((upstream-name . "gkmSVM")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-kernlab" ,r-kernlab)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rocr" ,r-rocr)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-seqinr" ,r-seqinr)))
+    (home-page "https://cran.r-project.org/web/packages/gkmSVM")
+    (synopsis "Gapped-kmer support vector machine")
+    (description
+     "This R package provides tools for training gapped-kmer SVM classifiers
+for DNA and protein sequences.  This package supports several sequence
+kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.")
+    (license license:gpl2+)))
+
+(define-public r-triform
+  (package
+    (name "r-triform")
+    (version "1.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "triform" version))
+       (sha256
+        (base32
+         "12ca24pv1r5vbw3rq345jqg7x3prrbsxk6445zikpzfblwmw0b4s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-iranges" ,r-iranges)
+       ("r-yaml" ,r-yaml)))
+    (home-page "https://bioconductor.org/packages/triform/")
+    (synopsis "Find enriched regions in transcription factor ChIP-sequencing data")
+    (description
+     "The Triform algorithm uses model-free statistics to identify peak-like
+distributions of TF ChIP sequencing reads, taking advantage of an improved
+peak definition in combination with known profile characteristics.")
+    (license license:gpl2)))
+
+(define-public r-varianttools
+  (package
+    (name "r-varianttools")
+    (version "1.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "VariantTools" version))
+       (sha256
+        (base32
+         "1ml3pl7xnxvzr6zkypr80xzw6nffswk29gzxycn42473sc4ixn7j"))))
+    (properties `((upstream-name . "VariantTools")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-matrix" ,r-matrix)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://bioconductor.org/packages/VariantTools/")
+    (synopsis "Tools for exploratory analysis of variant calls")
+    (description
+     "Explore, diagnose, and compare variant calls using filters.  The
+VariantTools package supports a workflow for loading data, calling single
+sample variants and tumor-specific somatic mutations or other sample-specific
+variant types (e.g., RNA editing).  Most of the functions operate on
+alignments (BAM files) or datasets of called variants.  The user is expected
+to have already aligned the reads with a separate tool, e.g., GSNAP via
+gmapR.")
+    (license license:artistic2.0)))
+
+(define-public r-heatplus
+  (package
+    (name "r-heatplus")
+    (version "2.28.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "Heatplus" version))
+       (sha256
+        (base32
+         "0drspjzgb23ra2kdvpxhsd8mdifsf97fcf668llyz2hr0r39fc48"))))
+    (properties `((upstream-name . "Heatplus")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcolorbrewer" ,r-rcolorbrewer)))
+    (home-page "https://github.com/alexploner/Heatplus")
+    (synopsis "Heatmaps with row and/or column covariates and colored clusters")
+    (description
+     "This package provides tools to display a rectangular heatmap (intensity
+plot) of a data matrix.  By default, both samples (columns) and features (row)
+of the matrix are sorted according to a hierarchical clustering, and the
+corresponding dendrogram is plotted.  Optionally, panels with additional
+information about samples and features can be added to the plot.")
+    (license license:gpl2+)))
+
+(define-public r-gosemsim
+  (package
+    (name "r-gosemsim")
+    (version "2.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "GOSemSim" version))
+       (sha256
+        (base32
+         "0ckihpy8jmgn2np1avprz76v9z7i5hqm2gj514c6dmmq3csbc7ib"))))
+    (properties `((upstream-name . "GOSemSim")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-go-db" ,r-go-db)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://guangchuangyu.github.io/software/GOSemSim")
+    (synopsis "GO-terms semantic similarity measures")
+    (description
+     "The semantic comparisons of @dfn{Gene Ontology} (GO) annotations provide
+quantitative ways to compute similarities between genes and gene groups, and
+have became important basis for many bioinformatics analysis approaches.
+GOSemSim is an R package for semantic similarity computation among GO terms,
+sets of GO terms, gene products and gene clusters.")
+    (license license:artistic2.0)))
+
+(define-public r-anota
+  (package
+    (name "r-anota")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "anota" version))
+       (sha256
+        (base32
+         "182fp6dpws516y0igvwn6936higfqvy25haa0xs273f8aczr9cf0"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-multtest" ,r-multtest)
+       ("r-qvalue" ,r-qvalue)))
+    (home-page "https://bioconductor.org/packages/anota/")
+    (synopsis "Analysis of translational activity")
+    (description
+     "Genome wide studies of translational control is emerging as a tool to
+study verious biological conditions.  The output from such analysis is both
+the mRNA level (e.g. cytosolic mRNA level) and the levl of mRNA actively
+involved in translation (the actively translating mRNA level) for each mRNA.
+The standard analysis of such data strives towards identifying differential
+translational between two or more sample classes - i.e.  differences in
+actively translated mRNA levels that are independent of underlying differences
+in cytosolic mRNA levels.  This package allows for such analysis using partial
+variances and the random variance model.  As 10s of thousands of mRNAs are
+analyzed in parallell the library performs a number of tests to assure that
+the data set is suitable for such analysis.")
+    (license license:gpl3)))
+
+(define-public r-sigpathway
+  (package
+    (name "r-sigpathway")
+    (version "1.50.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (bioconductor-uri "sigPathway" version))
+        (sha256
+          (base32
+            "0pygrla2q2151981gshzv51jnj60h1df3vby5gsxqvxn2pdr4bv3"))))
+    (properties `((upstream-name . "sigPathway")))
+    (build-system r-build-system)
+    (home-page "https://www.pnas.org/cgi/doi/10.1073/pnas.0506577102")
+    (synopsis "Pathway analysis")
+    (description
+     "This package is used to conduct pathway analysis by calculating the NT_k
+and NE_k statistics in a statistical framework for determining whether a
+specified group of genes for a pathway has a coordinated association with a
+phenotype of interest.")
+    (license license:gpl2)))
+
+(define-public r-fgsea
+  (package
+    (name "r-fgsea")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "fgsea" version))
+       (sha256
+        (base32
+         "0cxxvlmg340l5l5fz4abbwppiri0ibg4navvq5k3wg511mz8ma2q"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocparallel" ,r-biocparallel)
+       ("r-data-table" ,r-data-table)
+       ("r-fastmatch" ,r-fastmatch)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/ctlab/fgsea/")
+    (synopsis "Fast gene set enrichment analysis")
+    (description
+     "The package implements an algorithm for fast gene set enrichment
+analysis.  Using the fast algorithm allows to make more permutations and get
+more fine grained p-values, which allows to use accurate stantard approaches
+to multiple hypothesis correction.")
+    (license license:expat)))
+
+(define-public r-dose
+  (package
+    (name "r-dose")
+    (version "3.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "DOSE" version))
+       (sha256
+        (base32
+         "1gh7dhvfc71kawxcfx8xqlir7mwvg5mmz4lqrdrvw5knvi2h3mfa"))))
+    (properties `((upstream-name . "DOSE")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-do-db" ,r-do-db)
+       ("r-fgsea" ,r-fgsea)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gosemsim" ,r-gosemsim)
+       ("r-qvalue" ,r-qvalue)
+       ("r-reshape2" ,r-reshape2)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://guangchuangyu.github.io/software/DOSE/")
+    (synopsis "Disease ontology semantic and enrichment analysis")
+    (description
+     "This package implements five methods proposed by Resnik, Schlicker,
+Jiang, Lin and Wang, respectively, for measuring semantic similarities among
+@dfn{Disease ontology} (DO) terms and gene products.  Enrichment analyses
+including hypergeometric model and gene set enrichment analysis are also
+implemented for discovering disease associations of high-throughput biological
+data.")
+    (license license:artistic2.0)))
+
+(define-public r-enrichplot
+  (package
+    (name "r-enrichplot")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "enrichplot" version))
+       (sha256
+        (base32
+         "0cxqfpy6py4k3z3lnlkiwx89r4ymfpdc4hm25dfpazqgjflz5is7"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-cowplot" ,r-cowplot)
+       ("r-dose" ,r-dose)
+       ("r-europepmc" ,r-europepmc)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggplotify" ,r-ggplotify)
+       ("r-ggraph" ,r-ggraph)
+       ("r-ggridges" ,r-ggridges)
+       ("r-gosemsim" ,r-gosemsim)
+       ("r-gridextra" ,r-gridextra)
+       ("r-igraph" ,r-igraph)
+       ("r-purrr" ,r-purrr)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-reshape2" ,r-reshape2)
+       ("r-upsetr" ,r-upsetr)))
+    (home-page "https://github.com/GuangchuangYu/enrichplot")
+    (synopsis "Visualization of functional enrichment result")
+    (description
+     "The enrichplot package implements several visualization methods for
+interpreting functional enrichment results obtained from ORA or GSEA analyses.
+All the visualization methods are developed based on ggplot2 graphics.")
+    (license license:artistic2.0)))
+
+(define-public r-clusterprofiler
+  (package
+    (name "r-clusterprofiler")
+    (version "3.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "clusterProfiler" version))
+       (sha256
+        (base32
+         "1v4fh8ll7zk8yhbaa0nq9xvqrb05kyvbpwkqpnjf07s873805rxm"))))
+    (properties
+     `((upstream-name . "clusterProfiler")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-dose" ,r-dose)
+       ("r-enrichplot" ,r-enrichplot)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-go-db" ,r-go-db)
+       ("r-gosemsim" ,r-gosemsim)
+       ("r-magrittr" ,r-magrittr)
+       ("r-plyr" ,r-plyr)
+       ("r-qvalue" ,r-qvalue)
+       ("r-rvcheck" ,r-rvcheck)
+       ("r-tidyr" ,r-tidyr)))
+    (home-page "https://guangchuangyu.github.io/software/clusterProfiler/")
+    (synopsis "Analysis and visualization of functional profiles for gene clusters")
+    (description
+     "This package implements methods to analyze and visualize functional
+profiles (GO and KEGG) of gene and gene clusters.")
+    (license license:artistic2.0)))
+
+(define-public r-mlinterfaces
+  (package
+    (name "r-mlinterfaces")
+    (version "1.62.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MLInterfaces" version))
+       (sha256
+        (base32
+         "1h0x1p2h8x1h276wxx6kcnb4c4s5sglnmd58iigl81a224x8gxwp"))))
+    (properties `((upstream-name . "MLInterfaces")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotate" ,r-annotate)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-cluster" ,r-cluster)
+       ("r-fpc" ,r-fpc)
+       ("r-gbm" ,r-gbm)
+       ("r-gdata" ,r-gdata)
+       ("r-genefilter" ,r-genefilter)
+       ("r-ggvis" ,r-ggvis)
+       ("r-hwriter" ,r-hwriter)
+       ("r-mass" ,r-mass)
+       ("r-mlbench" ,r-mlbench)
+       ("r-pls" ,r-pls)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-rda" ,r-rda)
+       ("r-rpart" ,r-rpart)
+       ("r-sfsmisc" ,r-sfsmisc)
+       ("r-shiny" ,r-shiny)
+       ("r-threejs" ,r-threejs)))
+    (home-page "https://bioconductor.org/packages/MLInterfaces/")
+    (synopsis "Interfaces to R machine learning procedures")
+    (description
+     "This package provides uniform interfaces to machine learning code for
+data in R and Bioconductor containers.")
+    ;; Any version of the LGPL.
+    (license license:lgpl2.1+)))
+
+(define-public r-annaffy
+  (package
+    (name "r-annaffy")
+    (version "1.54.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "annaffy" version))
+       (sha256
+        (base32
+         "16c6allp4vlx0g3nffanrm0mkkf8s2n31dccw4bflnx2pr81bmd5"))))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-reference-to-non-free-data
+           (lambda _
+             (substitute* "DESCRIPTION"
+               ((", KEGG.db") ""))
+             #t)))))
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-dbi" ,r-dbi)
+       ("r-go-db" ,r-go-db)))
+    (home-page "https://bioconductor.org/packages/annaffy/")
+    (synopsis "Annotation tools for Affymetrix biological metadata")
+    (description
+     "This package provides functions for handling data from Bioconductor
+Affymetrix annotation data packages.  It produces compact HTML and text
+reports including experimental data and URL links to many online databases.
+It allows searching of biological metadata using various criteria.")
+    ;; Any version of the LGPL according to the DESCRIPTION file.  A copy of
+    ;; the LGPL 2.1 is included.
+    (license license:lgpl2.1+)))
+
+(define-public r-a4core
+  (package
+    (name "r-a4core")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4Core" version))
+       (sha256
+        (base32
+         "1d62afxkfp9zbp59ijcn4wd1gdynygw013av41wq8bfm3cx6f9zr"))))
+    (properties `((upstream-name . "a4Core")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-glmnet" ,r-glmnet)))
+    (home-page "https://bioconductor.org/packages/a4Core")
+    (synopsis "Automated Affymetrix array analysis core package")
+    (description
+     "This is the core package for the automated analysis of Affymetrix
+arrays.")
+    (license license:gpl3)))
+
+(define-public r-a4classif
+  (package
+    (name "r-a4classif")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4Classif" version))
+       (sha256
+        (base32
+         "02l77a59865ly3bydv74ff2l2wfb0x5s283g1nx6g1qrw3ly982j"))))
+    (properties `((upstream-name . "a4Classif")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-a4core" ,r-a4core)
+       ("r-a4preproc" ,r-a4preproc)
+       ("r-glmnet" ,r-glmnet)
+       ("r-mlinterfaces" ,r-mlinterfaces)
+       ("r-pamr" ,r-pamr)
+       ("r-rocr" ,r-rocr)
+       ("r-varselrf" ,r-varselrf)))
+    (home-page "https://bioconductor.org/packages/a4Classif/")
+    (synopsis "Automated Affymetrix array analysis classification package")
+    (description
+     "This is the classification package for the automated analysis of
+Affymetrix arrays.")
+    (license license:gpl3)))
+
+(define-public r-a4preproc
+  (package
+    (name "r-a4preproc")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4Preproc" version))
+       (sha256
+        (base32
+         "1dd3fqcc7nr2zbi46k0mnqkh42mfxk894ixfpqg7i9np2523p5gp"))))
+    (properties `((upstream-name . "a4Preproc")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)))
+    (home-page "https://bioconductor.org/packages/a4Preproc/")
+    (synopsis "Automated Affymetrix array analysis preprocessing package")
+    (description
+     "This is a package for the automated analysis of Affymetrix arrays.  It
+is used for preprocessing the arrays.")
+    (license license:gpl3)))
+
+(define-public r-a4reporting
+  (package
+    (name "r-a4reporting")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4Reporting" version))
+       (sha256
+        (base32
+         "124774z3bfdjgxx2ad40795h92aam21yfx0rw0n01nk2wf6k7xc4"))))
+    (properties `((upstream-name . "a4Reporting")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annaffy" ,r-annaffy)
+       ("r-xtable" ,r-xtable)))
+    (home-page "https://bioconductor.org/packages/a4Reporting/")
+    (synopsis "Automated Affymetrix array analysis reporting package")
+    (description
+     "This is a package for the automated analysis of Affymetrix arrays.  It
+provides reporting features.")
+    (license license:gpl3)))
+
+(define-public r-a4base
+  (package
+    (name "r-a4base")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4Base" version))
+       (sha256
+        (base32
+         "0k9k3bv99msbwf2y416cz316ssaha2dxvmaddbl7z9037p8mjr70"))))
+    (properties `((upstream-name . "a4Base")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-a4core" ,r-a4core)
+       ("r-a4preproc" ,r-a4preproc)
+       ("r-annaffy" ,r-annaffy)
+       ("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-genefilter" ,r-genefilter)
+       ("r-glmnet" ,r-glmnet)
+       ("r-gplots" ,r-gplots)
+       ("r-limma" ,r-limma)
+       ("r-mpm" ,r-mpm)
+       ("r-multtest" ,r-multtest)))
+    (home-page "https://bioconductor.org/packages/a4Base/")
+    (synopsis "Automated Affymetrix array analysis base package")
+    (description
+     "This package provides basic features for the automated analysis of
+Affymetrix arrays.")
+    (license license:gpl3)))
+
+(define-public r-a4
+  (package
+    (name "r-a4")
+    (version "1.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "a4" version))
+       (sha256
+        (base32
+         "1iqjy35rqx3m2y0dm2bk4cnzdm1qvbi608bfmrid88w6wmwz3qlk"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-a4base" ,r-a4base)
+       ("r-a4classif" ,r-a4classif)
+       ("r-a4core" ,r-a4core)
+       ("r-a4preproc" ,r-a4preproc)
+       ("r-a4reporting" ,r-a4reporting)))
+    (home-page "https://bioconductor.org/packages/a4/")
+    (synopsis "Automated Affymetrix array analysis umbrella package")
+    (description
+     "This package provides a software suite for the automated analysis of
+Affymetrix arrays.")
+    (license license:gpl3)))
+
+(define-public r-abseqr
+  (package
+    (name "r-abseqr")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "abseqR" version))
+       (sha256
+        (base32
+         "0w0ngxnilcrxlixsz7ls3zm99gyabxwn7w1r3r45n96d4aj075ry"))))
+    (properties `((upstream-name . "abseqR")))
+    (build-system r-build-system)
+    (inputs
+     `(("pandoc" ,ghc-pandoc)))
+    (propagated-inputs
+     `(("r-biocparallel" ,r-biocparallel)
+       ("r-biocstyle" ,r-biocstyle)
+       ("r-circlize" ,r-circlize)
+       ("r-flexdashboard" ,r-flexdashboard)
+       ("r-ggcorrplot" ,r-ggcorrplot)
+       ("r-ggdendro" ,r-ggdendro)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-knitr" ,r-knitr)
+       ("r-plotly" ,r-plotly)
+       ("r-plyr" ,r-plyr)
+       ("r-png" ,r-png)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("r-stringr" ,r-stringr)
+       ("r-vegan" ,r-vegan)
+       ("r-venndiagram" ,r-venndiagram)))
+    (home-page "https://github.com/malhamdoosh/abseqR")
+    (synopsis "Reporting and data analysis for Rep-Seq datasets of antibody libraries")
+    (description
+     "AbSeq is a comprehensive bioinformatic pipeline for the analysis of
+sequencing datasets generated from antibody libraries and abseqR is one of its
+packages.  AbseqR empowers the users of abseqPy with plotting and reporting
+capabilities and allows them to generate interactive HTML reports for the
+convenience of viewing and sharing with other researchers.  Additionally,
+abseqR extends abseqPy to compare multiple repertoire analyses and perform
+further downstream analysis on its output.")
+    (license license:gpl3)))
+
+(define-public r-bacon
+  (package
+    (name "r-bacon")
+    (version "1.10.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "bacon" version))
+       (sha256
+        (base32
+         "1pd3p1cfggiy08458vplsy3s1zm5jqqcwrv4fks8ra2kf97j38df"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocparallel" ,r-biocparallel)
+       ("r-ellipse" ,r-ellipse)
+       ("r-ggplot2" ,r-ggplot2)))
+    (home-page "https://bioconductor.org/packages/bacon/")
+    (synopsis "Controlling bias and inflation in association studies")
+    (description
+     "Bacon can be used to remove inflation and bias often observed in
+epigenome- and transcriptome-wide association studies.  To this end bacon
+constructs an empirical null distribution using a Gibbs Sampling algorithm by
+fitting a three-component normal mixture on z-scores.")
+    (license license:gpl2+)))
+
+(define-public r-rgadem
+  (package
+    (name "r-rgadem")
+    (version "2.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "rGADEM" version))
+       (sha256
+        (base32
+         "1a3mvxabp7yb275cv1wr0rzyvjhnsaysk2hnmll4z4cci171z2j2"))))
+    (properties `((upstream-name . "rGADEM")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-iranges" ,r-iranges)
+       ("r-seqlogo" ,r-seqlogo)))
+    (home-page "https://bioconductor.org/packages/rGADEM/")
+    (synopsis "De novo sequence motif discovery")
+    (description
+     "rGADEM is an efficient de novo motif discovery tool for large-scale
+genomic sequence data.")
+    (license license:artistic2.0)))
+
+(define-public r-motiv
+  (package
+    (name "r-motiv")
+    (version "1.38.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MotIV" version))
+       (sha256
+        (base32
+         "1qrpydwc5bn8f0843qkyhw6920xk8kvq452ird0ij96g6faiv9a8"))))
+    (properties `((upstream-name . "MotIV")))
+    (build-system r-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-iranges" ,r-iranges)
+       ("r-lattice" ,r-lattice)
+       ("r-rgadem" ,r-rgadem)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/MotIV/")
+    (synopsis "Motif identification and validation")
+    (description
+     "This package is used for the identification and validation of sequence
+motifs.  It makes use of STAMP for comparing a set of motifs to a given
+database (e.g. JASPAR).  It can also be used to visualize motifs, motif
+distributions, modules and filter motifs.")
+    (license license:gpl2)))
+
+(define-public r-motifstack
+  (package
+    (name "r-motifstack")
+    (version "1.26.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "motifStack" version))
+       (sha256
+        (base32
+         "1c4w39ilc4ca4wgi1b6iypadkbxvqjw7k2br0d7q03niw9qjkhxf"))))
+    (properties `((upstream-name . "motifStack")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-biostrings" ,r-biostrings)
+       ("r-grimport" ,r-grimport)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-motiv" ,r-motiv)
+       ("r-scales" ,r-scales)
+       ("r-xml" ,r-xml)))
+    (home-page "https://bioconductor.org/packages/motifStack/")
+    (synopsis "Plot stacked logos for DNA, RNA and amino acid sequences")
+    (description
+     "The motifStack package is designed for graphic representation of
+multiple motifs with different similarity scores.  It works with both DNA/RNA
+sequence motifs and amino acid sequence motifs.  In addition, it provides the
+flexibility for users to customize the graphic parameters such as the font
+type and symbol colors.")
+    (license license:gpl2+)))
+
+(define-public r-genomicscores
+  (package
+    (name "r-genomicscores")
+    (version "1.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "GenomicScores" version))
+       (sha256
+        (base32
+         "0lrhkcblvnki6kncwpavs01gbcz22yza6ma8zvfmbrrkfaxqzh8n"))))
+    (properties `((upstream-name . "GenomicScores")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationhub" ,r-annotationhub)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xml" ,r-xml)))
+    (home-page "https://github.com/rcastelo/GenomicScores/")
+    (synopsis "Work with genome-wide position-specific scores")
+    (description
+     "This package provides infrastructure to store and access genome-wide
+position-specific scores within R and Bioconductor.")
+    (license license:artistic2.0)))
+
+(define-public r-atacseqqc
+  (package
+    (name "r-atacseqqc")
+    (version "1.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ATACseqQC" version))
+       (sha256
+        (base32
+         "1rblvqar11fib6ip2hq0756vqi6qmncf90jw6i5p5lrgzmaxy8hn"))))
+    (properties `((upstream-name . "ATACseqQC")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-chippeakanno" ,r-chippeakanno)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-genomicscores" ,r-genomicscores)
+       ("r-iranges" ,r-iranges)
+       ("r-kernsmooth" ,r-kernsmooth)
+       ("r-limma" ,r-limma)
+       ("r-motifstack" ,r-motifstack)
+       ("r-preseqr" ,r-preseqr)
+       ("r-randomforest" ,r-randomforest)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/ATACseqQC/")
+    (synopsis "ATAC-seq quality control")
+    (description
+     "ATAC-seq, an assay for Transposase-Accessible Chromatin using
+sequencing, is a rapid and sensitive method for chromatin accessibility
+analysis.  It was developed as an alternative method to MNase-seq, FAIRE-seq
+and DNAse-seq.  The ATACseqQC package was developed to help users to quickly
+assess whether their ATAC-seq experiment is successful.  It includes
+diagnostic plots of fragment size distribution, proportion of mitochondria
+reads, nucleosome positioning pattern, and CTCF or other Transcript Factor
+footprints.")
+    (license license:gpl2+)))
+
+(define-public r-gofuncr
+  (package
+    (name "r-gofuncr")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "GOfuncR" version))
+       (sha256
+        (base32
+         "021kgcbm8n2yalhzab11cyppwznlkglynnh45wsgy9i2vi2n2znk"))))
+    (properties `((upstream-name . "GOfuncR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-gtools" ,r-gtools)
+       ("r-iranges" ,r-iranges)
+       ("r-mapplots" ,r-mapplots)
+       ("r-rcpp" ,r-rcpp)
+       ("r-vioplot" ,r-vioplot)))
+    (home-page "https://bioconductor.org/packages/GOfuncR/")
+    (synopsis "Gene ontology enrichment using FUNC")
+    (description
+     "GOfuncR performs a gene ontology enrichment analysis based on the
+ontology enrichment software FUNC.  GO-annotations are obtained from
+OrganismDb or OrgDb packages (@code{Homo.sapiens} by default); the GO-graph is
+included in the package and updated regularly.  GOfuncR provides the standard
+candidate vs background enrichment analysis using the hypergeometric test, as
+well as three additional tests:
+
+@enumerate
+@item the Wilcoxon rank-sum test that is used when genes are ranked,
+@item a binomial test that is used when genes are associated with two counts,
+  and
+@item a Chi-square or Fisher's exact test that is used in cases when genes are
+associated with four counts.
+@end enumerate
+
+To correct for multiple testing and interdependency of the tests, family-wise
+error rates are computed based on random permutations of the gene-associated
+variables.  GOfuncR also provides tools for exploring the ontology graph and
+the annotations, and options to take gene-length or spatial clustering of
+genes into account.  It is also possible to provide custom gene coordinates,
+annotations and ontologies.")
+    (license license:gpl2+)))
+
+(define-public r-abaenrichment
+  (package
+    (name "r-abaenrichment")
+    (version "1.12.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ABAEnrichment" version))
+       (sha256
+        (base32
+         "0bvanqmg1smyckh16m2qn7d68zq4j7n74sgsnbgms5jngbp9158v"))))
+    (properties `((upstream-name . "ABAEnrichment")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-abadata" ,r-abadata)
+       ("r-data-table" ,r-data-table)
+       ("r-gofuncr" ,r-gofuncr)
+       ("r-gplots" ,r-gplots)
+       ("r-gtools" ,r-gtools)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://bioconductor.org/packages/ABAEnrichment/")
+    (synopsis "Gene expression enrichment in human brain regions")
+    (description
+     "The package ABAEnrichment is designed to test for enrichment of user
+defined candidate genes in the set of expressed genes in different human brain
+regions.  The core function @code{aba_enrich} integrates the expression of the
+candidate gene set (averaged across donors) and the structural information of
+the brain using an ontology, both provided by the Allen Brain Atlas project.")
+    (license license:gpl2+)))
+
+(define-public r-annotationfuncs
+  (package
+    (name "r-annotationfuncs")
+    (version "1.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "AnnotationFuncs" version))
+       (sha256
+        (base32
+         "1x11mfabh7kbp39y5rkmrpjkaawx7ab5anfmciamrmrcw1kddbss"))))
+    (properties
+     `((upstream-name . "AnnotationFuncs")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-dbi" ,r-dbi)))
+    (home-page "https://www.iysik.com/r/annotationfuncs")
+    (synopsis "Annotation translation functions")
+    (description
+     "This package provides functions for handling translating between
+different identifieres using the Biocore Data Team data-packages (e.g.
+@code{org.Bt.eg.db}).")
+    (license license:gpl2)))
+
+(define-public r-annotationtools
+  (package
+    (name "r-annotationtools")
+    (version "1.56.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "annotationTools" version))
+       (sha256
+        (base32
+         "0hqy0mq6pkn05p2dv4pw24p697yvikhdn351adf2ynldy6f3sl9z"))))
+    (properties
+     `((upstream-name . "annotationTools")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-biobase" ,r-biobase)))
+    (home-page "https://bioconductor.org/packages/annotationTools/")
+    (synopsis "Annotate microarrays and perform gene expression analyses")
+    (description
+     "This package provides functions to annotate microarrays, find orthologs,
+and integrate heterogeneous gene expression profiles using annotation and
+other molecular biology information available as flat file database (plain
+text files).")
+    ;; Any version of the GPL.
+    (license (list license:gpl2+))))
+
+(define-public r-allelicimbalance
+  (package
+    (name "r-allelicimbalance")
+    (version "1.20.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "AllelicImbalance" version))
+       (sha256
+        (base32
+         "03524lj6aw9cskbpxzjmi9g708x6p94mf26yz4j941g1d0mc3z91"))))
+    (properties
+     `((upstream-name . "AllelicImbalance")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicfeatures" ,r-genomicfeatures)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-gridextra" ,r-gridextra)
+       ("r-gviz" ,r-gviz)
+       ("r-iranges" ,r-iranges)
+       ("r-lattice" ,r-lattice)
+       ("r-latticeextra" ,r-latticeextra)
+       ("r-nlme" ,r-nlme)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-seqinr" ,r-seqinr)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://github.com/pappewaio/AllelicImbalance")
+    (synopsis "Investigate allele-specific expression")
+    (description
+     "This package provides a framework for allele-specific expression
+investigation using RNA-seq data.")
+    (license license:gpl3)))
+
+(define-public r-aucell
+  (package
+    (name "r-aucell")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "AUCell" version))
+       (sha256
+        (base32
+         "1kdrs0521cyb8wlc4i3idfprrcy2f9w6kl56hfa94n0brmx62ya9"))))
+    (properties `((upstream-name . "AUCell")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-gseabase" ,r-gseabase)
+       ("r-mixtools" ,r-mixtools)
+       ("r-r-utils" ,r-r-utils)
+       ("r-shiny" ,r-shiny)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "https://bioconductor.org/packages/AUCell/")
+    (synopsis "Analysis of gene set activity in single-cell RNA-seq data")
+    (description
+     "AUCell allows to identify cells with active gene sets (e.g. signatures,
+gene modules, etc) in single-cell RNA-seq data.  AUCell uses the @dfn{Area
+Under the Curve} (AUC) to calculate whether a critical subset of the input
+gene set is enriched within the expressed genes for each cell.  The
+distribution of AUC scores across all the cells allows exploring the relative
+expression of the signature.  Since the scoring method is ranking-based,
+AUCell is independent of the gene expression units and the normalization
+procedure.  In addition, since the cells are evaluated individually, it can
+easily be applied to bigger datasets, subsetting the expression matrix if
+needed.")
+    (license license:gpl3)))
+
+(define-public r-ebimage
+  (package
+    (name "r-ebimage")
+    (version "4.24.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "EBImage" version))
+       (sha256
+        (base32
+         "18v2zr7xh0d0xbs7mxa2b6xjqlqiml0hji27gq1351xp5bf2pxvx"))))
+    (properties `((upstream-name . "EBImage")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-abind" ,r-abind)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-fftwtools" ,r-fftwtools)
+       ("r-htmltools" ,r-htmltools)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-jpeg" ,r-jpeg)
+       ("r-locfit" ,r-locfit)
+       ("r-png" ,r-png)
+       ("r-rcurl" ,r-rcurl)
+       ("r-tiff" ,r-tiff)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr))) ; for vignettes
+    (home-page "https://github.com/aoles/EBImage")
+    (synopsis "Image processing and analysis toolbox for R")
+    (description
+     "EBImage provides general purpose functionality for image processing and
+analysis.  In the context of (high-throughput) microscopy-based cellular
+assays, EBImage offers tools to segment cells and extract quantitative
+cellular descriptors.  This allows the automation of such tasks using the R
+programming language and facilitates the use of other tools in the R
+environment for signal processing, statistical modeling, machine learning and
+visualization with image data.")
+    ;; Any version of the LGPL.
+    (license license:lgpl2.1+)))
+
+(define-public r-yamss
+  (package
+    (name "r-yamss")
+    (version "1.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "yamss" version))
+       (sha256
+        (base32
+         "13pln09j08fjsr7bj17apy4j0sr79n7jzshi8jbnz57jil7k6ia9"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-data-table" ,r-data-table)
+       ("r-ebimage" ,r-ebimage)
+       ("r-iranges" ,r-iranges)
+       ("r-limma" ,r-limma)
+       ("r-matrix" ,r-matrix)
+       ("r-mzr" ,r-mzr)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment"
+        ,r-summarizedexperiment)))
+    (home-page "https://github.com/hansenlab/yamss")
+    (synopsis "Tools for high-throughput metabolomics")
+    (description
+     "This package provides tools to analyze and visualize high-throughput
+metabolomics data acquired using chromatography-mass spectrometry.  These tools
+preprocess data in a way that enables reliable and powerful differential
+analysis.")
+    (license license:artistic2.0)))
+
+(define-public r-gtrellis
+  (package
+    (name "r-gtrellis")
+    (version "1.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "gtrellis" version))
+       (sha256
+        (base32
+         "17c43vs6m6hj90x5is0pbcpcv59gg9z98c47hnvlypgcqch38h6v"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-circlize" ,r-circlize)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-getoptlong" ,r-getoptlong)
+       ("r-iranges" ,r-iranges)))
+    (home-page "https://github.com/jokergoo/gtrellis")
+    (synopsis "Genome level Trellis layout")
+    (description
+     "Genome level Trellis graph visualizes genomic data conditioned by
+genomic categories (e.g. chromosomes).  For each genomic category, multiple
+dimensional data which are represented as tracks describe different features
+from different aspects.  This package provides high flexibility to arrange
+genomic categories and to add self-defined graphics in the plot.")
+    (license license:expat)))
+
+(define-public r-somaticsignatures
+  (package
+    (name "r-somaticsignatures")
+    (version "2.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "SomaticSignatures" version))
+       (sha256
+        (base32
+         "013dslbyq55a41d3n842brjk2bq1kxw0r18mb6drgbxx2sflzc02"))))
+    (properties
+     `((upstream-name . "SomaticSignatures")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggbio" ,r-ggbio)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-iranges" ,r-iranges)
+       ("r-nmf" ,r-nmf)
+       ("r-pcamethods" ,r-pcamethods)
+       ("r-proxy" ,r-proxy)
+       ("r-reshape2" ,r-reshape2)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://github.com/juliangehring/SomaticSignatures")
+    (synopsis "Somatic signatures")
+    (description
+     "This package identifies mutational signatures of @dfn{single nucleotide
+variants} (SNVs).  It provides a infrastructure related to the methodology
+described in Nik-Zainal (2012, Cell), with flexibility in the matrix
+decomposition algorithms.")
+    (license license:expat)))
+
+(define-public r-yapsa
+  (package
+    (name "r-yapsa")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "YAPSA" version))
+       (sha256
+        (base32
+         "1agacimdd1m5yja2xbcsb83mns4svpxbjcsfrvm9ydqdj737i10j"))))
+    (properties `((upstream-name . "YAPSA")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-circlize" ,r-circlize)
+       ("r-complexheatmap" ,r-complexheatmap)
+       ("r-corrplot" ,r-corrplot)
+       ("r-dendextend" ,r-dendextend)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-getoptlong" ,r-getoptlong)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-gtrellis" ,r-gtrellis)
+       ("r-keggrest" ,r-keggrest)
+       ("r-lsei" ,r-lsei)
+       ("r-pmcmr" ,r-pmcmr)
+       ("r-reshape2" ,r-reshape2)
+       ("r-somaticsignatures" ,r-somaticsignatures)
+       ("r-variantannotation" ,r-variantannotation)))
+    (home-page "https://bioconductor.org/packages/YAPSA/")
+    (synopsis "Yet another package for signature analysis")
+    (description
+     "This package provides functions and routines useful in the analysis of
+somatic signatures (cf. L. Alexandrov et al., Nature 2013).  In particular,
+functions to perform a signature analysis with known signatures and a
+signature analysis on @dfn{stratified mutational catalogue} (SMC) are
+provided.")
+    (license license:gpl3)))
+
+(define-public r-gcrma
+  (package
+    (name "r-gcrma")
+    (version "2.54.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "gcrma" version))
+       (sha256
+        (base32
+         "1v5fi98gdmj002ryq0rgsg2l4x3m3w5pz4h3bx4v8lk15azafgim"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-affyio" ,r-affyio)
+       ("r-biobase" ,r-biobase)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-biostrings" ,r-biostrings)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://bioconductor.org/packages/gcrma/")
+    (synopsis "Background adjustment using sequence information")
+    (description
+     "Gcrma adjusts for background intensities in Affymetrix array data which
+include optical noise and @dfn{non-specific binding} (NSB).  The main function
+@code{gcrma} converts background adjusted probe intensities to expression
+measures using the same normalization and summarization methods as a
+@dfn{Robust Multiarray Average} (RMA).  Gcrma uses probe sequence information
+to estimate probe affinity to NSB.  The sequence information is summarized in
+a more complex way than the simple GC content.  Instead, the base types (A, T,
+G or C) at each position along the probe determine the affinity of each probe.
+The parameters of the position-specific base contributions to the probe
+affinity is estimated in an NSB experiment in which only NSB but no
+gene-specific bidning is expected.")
+    ;; Any version of the LGPL
+    (license license:lgpl2.1+)))
+
+(define-public r-simpleaffy
+  (package
+    (name "r-simpleaffy")
+    (version "2.58.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "simpleaffy" version))
+       (sha256
+        (base32
+         "0bry0d2vw0w2rrpnmfm1kl5v4rdclypmy33jvs9l43vd6vx2ra9s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-gcrma" ,r-gcrma)
+       ("r-genefilter" ,r-genefilter)))
+    (home-page "https://bioconductor.org/packages/simpleaffy/")
+    (synopsis "Very simple high level analysis of Affymetrix data")
+    (description
+     "This package provides high level functions for reading Affy @file{.CEL}
+files, phenotypic data, and then computing simple things with it, such as
+t-tests, fold changes and the like.  It makes heavy use of the @code{affy}
+library.  It also has some basic scatter plot functions and mechanisms for
+generating high resolution journal figures.")
+    (license license:gpl2+)))
+
+(define-public r-yaqcaffy
+  (package
+    (name "r-yaqcaffy")
+    (version "1.42.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "yaqcaffy" version))
+       (sha256
+        (base32
+         "192n1zvd54nm9q71vyb6dcr7ia6givf4bjwf6542jjig085lwhxk"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-simpleaffy" ,r-simpleaffy)))
+    (home-page "https://bioconductor.org/packages/yaqcaffy/")
+    (synopsis "Affymetrix quality control and reproducibility analysis")
+    (description
+     "This is a package that can be used for quality control of Affymetrix
+GeneChip expression data and reproducibility analysis of human whole genome
+chips with the MAQC reference datasets.")
+    (license license:artistic2.0)))
+
+(define-public r-quantro
+  (package
+    (name "r-quantro")
+    (version "1.16.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "quantro" version))
+       (sha256
+        (base32
+         "1777gjgn855f04yv7hx70h9l8idmjzamkpazaq2cdr8qzhxwy2ib"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-doparallel" ,r-doparallel)
+       ("r-foreach" ,r-foreach)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-iterators" ,r-iterators)
+       ("r-minfi" ,r-minfi)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)))
+    (home-page "https://bioconductor.org/packages/quantro/")
+    (synopsis "Test for when to use quantile normalization")
+    (description
+     "This package provides a data-driven test for the assumptions of quantile
+normalization using raw data such as objects that inherit eSets (e.g.
+ExpressionSet, MethylSet).  Group level information about each sample (such as
+Tumor / Normal status) must also be provided because the test assesses if
+there are global differences in the distributions between the user-defined
+groups.")
+    (license license:gpl3+)))
+
+(define-public r-yarn
+  (package
+    (name "r-yarn")
+    (version "1.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "yarn" version))
+       (sha256
+        (base32
+         "0c84x1zq34hadpsyaa873r8kg0jcxp09c2z63377hlmhsll90l7s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biomart" ,r-biomart)
+       ("r-downloader" ,r-downloader)
+       ("r-edger" ,r-edger)
+       ("r-gplots" ,r-gplots)
+       ("r-limma" ,r-limma)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-preprocesscore" ,r-preprocesscore)
+       ("r-quantro" ,r-quantro)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-readr" ,r-readr)))
+    (home-page "https://bioconductor.org/packages/yarn/")
+    (synopsis "Robust multi-condition RNA-Seq preprocessing and normalization")
+    (description
+     "Expedite large RNA-Seq analyses using a combination of previously
+developed tools.  YARN is meant to make it easier for the user in performing
+basic mis-annotation quality control, filtering, and condition-aware
+normalization.  YARN leverages many Bioconductor tools and statistical
+techniques to account for the large heterogeneity and sparsity found in very
+large RNA-seq experiments.")
+    (license license:artistic2.0)))
+
+(define-public r-roar
+  (package
+    (name "r-roar")
+    (version "1.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "roar" version))
+       (sha256
+        (base32
+         "15650s9vs7dvmqpvrs4xwn6j4kh14yqsx4daqyhhxxr68kn8mklw"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "https://github.com/vodkatad/roar/")
+    (synopsis "Identify differential APA usage from RNA-seq alignments")
+    (description
+     "This package provides tools for identifying preferential usage of APA
+sites, comparing two biological conditions, starting from known alternative
+sites and alignments obtained from standard RNA-seq experiments.")
+    (license license:gpl3)))
+
+(define-public r-xbseq
+  (package
+    (name "r-xbseq")
+    (version "1.14.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "XBSeq" version))
+       (sha256
+        (base32
+         "0na0jiqfy40bzl243gqc2214k4hibv6v4ndiqwq0c5f78cyr6lph"))))
+    (properties `((upstream-name . "XBSeq")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-deseq2" ,r-deseq2)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-locfit" ,r-locfit)
+       ("r-magrittr" ,r-magrittr)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-pracma" ,r-pracma)
+       ("r-roar" ,r-roar)))
+    (home-page "https://github.com/Liuy12/XBSeq")
+    (synopsis "Test for differential expression for RNA-seq data")
+    (description
+     "XBSeq is a novel algorithm for testing RNA-seq @dfn{differential
+expression} (DE), where a statistical model was established based on the
+assumption that observed signals are the convolution of true expression
+signals and sequencing noises.  The mapped reads in non-exonic regions are
+considered as sequencing noises, which follows a Poisson distribution.  Given
+measurable observed signal and background noise from RNA-seq data, true
+expression signals, assuming governed by the negative binomial distribution,
+can be delineated and thus the accurate detection of differential expressed
+genes.")
+    (license license:gpl3+)))
+
+(define-public r-massspecwavelet
+  (package
+    (name "r-massspecwavelet")
+    (version "1.48.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "MassSpecWavelet" version))
+       (sha256
+        (base32
+         "1xcr568a36b570rldy27wq4a2jn7yf5f6fddlzgx6x944jdn3ckz"))))
+    (properties
+     `((upstream-name . "MassSpecWavelet")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-waveslim" ,r-waveslim)))
+    (home-page "https://bioconductor.org/packages/MassSpecWavelet/")
+    (synopsis "Mass spectrum processing by wavelet-based algorithms")
+    (description
+     "The MassSpecWavelet package aims to process @dfn{Mass Spectrometry} (MS)
+data mainly through the use of wavelet transforms.  It supports peak detection
+based on @dfn{Continuous Wavelet Transform} (CWT).")
+    (license license:lgpl2.0+)))
+
+(define-public r-xcms
+  (package
+    (name "r-xcms")
+    (version "3.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "xcms" version))
+       (sha256
+        (base32
+         "073f25m7y8z4560k93d99fv72pr7nrgrp054zssi7jhas4l3ddww"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-lattice" ,r-lattice)
+       ("r-massspecwavelet" ,r-massspecwavelet)
+       ("r-msnbase" ,r-msnbase)
+       ("r-multtest" ,r-multtest)
+       ("r-mzr" ,r-mzr)
+       ("r-plyr" ,r-plyr)
+       ("r-protgenerics" ,r-protgenerics)
+       ("r-rann" ,r-rann)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-robustbase" ,r-robustbase)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/xcms/")
+    (synopsis "LC/MS and GC/MS mass spectrometry data analysis")
+    (description
+     "This package provides a framework for processing and visualization of
+chromatographically separated and single-spectra mass spectral data.  It
+imports from AIA/ANDI NetCDF, mzXML, mzData and mzML files.  It preprocesses
+data for high-throughput, untargeted analyte profiling.")
+    (license license:gpl2+)))
+
+(define-public r-wrench
+  (package
+    (name "r-wrench")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "Wrench" version))
+       (sha256
+        (base32
+         "12gfdj2p52pah67bimz14xcwmcb4c2snjwswj0fns7v3v1h9rlqg"))))
+    (properties `((upstream-name . "Wrench")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-limma" ,r-limma)
+       ("r-locfit" ,r-locfit)
+       ("r-matrixstats" ,r-matrixstats)))
+    (home-page "https://github.com/HCBravoLab/Wrench")
+    (synopsis "Wrench normalization for sparse count data")
+    (description
+     "Wrench is a package for normalization sparse genomic count data, like
+that arising from 16s metagenomic surveys.")
+    (license license:artistic2.0)))
+
+(define-public r-wiggleplotr
+  (package
+    (name "r-wiggleplotr")
+    (version "1.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "wiggleplotr" version))
+       (sha256
+        (base32
+         "12fhbskkjwv4d9bdy3gab8n9pcf7qpwiwgx0248as445vfw8dil3"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-assertthat" ,r-assertthat)
+       ("r-cowplot" ,r-cowplot)
+       ("r-dplyr" ,r-dplyr)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-iranges" ,r-iranges)
+       ("r-purrr" ,r-purrr)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "https://bioconductor.org/packages/wiggleplotr/")
+    (synopsis "Make read coverage plots from BigWig files")
+    (description
+     "This package provides tools to visualize read coverage from sequencing
+experiments together with genomic annotations (genes, transcripts, peaks).
+Introns of long transcripts can be rescaled to a fixed length for better
+visualization of exonic read coverage.")
+    (license license:asl2.0)))
+
+(define-public r-widgettools
+  (package
+    (name "r-widgettools")
+    (version "1.60.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "widgetTools" version))
+       (sha256
+        (base32
+         "0mz69pdr6q69avsvs6r5ncdkdmgwfislpil4v18dsflw4j454gwf"))))
+    (properties `((upstream-name . "widgetTools")))
+    (build-system r-build-system)
+    (home-page "https://bioconductor.org/packages/widgetTools/")
+    (synopsis "Tools for creating interactive tcltk widgets")
+    (description
+     "This packages contains tools to support the construction of tcltk
+widgets in R.")
+    ;; Any version of the LGPL.
+    (license license:lgpl3+)))
+
+(define-public r-webbioc
+  (package
+    (name "r-webbioc")
+    (version "1.54.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "webbioc" version))
+       (sha256
+        (base32
+         "16n6wc9q51wfpmh9y77p53sqdqdd8pn50c67vf6h4n7gv5wgnpwi"))))
+    (build-system r-build-system)
+    (inputs
+     `(("netpbm" ,netpbm)
+       ("perl" ,perl)))
+    (propagated-inputs
+     `(("r-affy" ,r-affy)
+       ("r-annaffy" ,r-annaffy)
+       ("r-biobase" ,r-biobase)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-gcrma" ,r-gcrma)
+       ("r-multtest" ,r-multtest)
+       ("r-qvalue" ,r-qvalue)
+       ("r-vsn" ,r-vsn)))
+    (home-page "https://www.bioconductor.org/")
+    (synopsis "Bioconductor web interface")
+    (description
+     "This package provides an integrated web interface for doing microarray
+analysis using several of the Bioconductor packages.  It is intended to be
+deployed as a centralized bioinformatics resource for use by many users.
+Currently only Affymetrix oligonucleotide analysis is supported.")
+    (license license:gpl2+)))
+
+(define-public r-zfpkm
+  (package
+    (name "r-zfpkm")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "zFPKM" version))
+       (sha256
+        (base32
+         "0rvfrjxxvfng9fxxn316gm96v4rahx62vlk3axr2bzjbi1r4s8v5"))))
+    (properties `((upstream-name . "zFPKM")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-checkmate" ,r-checkmate)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)
+       ("r-tidyr" ,r-tidyr)))
+    (home-page "https://github.com/ronammar/zFPKM/")
+    (synopsis "Functions to facilitate zFPKM transformations")
+    (description
+     "This is a package to perform the zFPKM transform on RNA-seq FPKM data.
+This algorithm is based on the publication by Hart et al., 2013 (Pubmed ID
+24215113).")
+    (license license:gpl3)))
+
+(define-public r-rbowtie2
+  (package
+    (name "r-rbowtie2")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "Rbowtie2" version))
+       (sha256
+        (base32
+         "045cmfwqzcj4zn6r16hkpmr5sd5y0mxvrs5yynf460fdz2p418cr"))))
+    (properties `((upstream-name . "Rbowtie2")))
+    (build-system r-build-system)
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://bioconductor.org/packages/Rbowtie2/")
+    (synopsis "R wrapper for Bowtie2 and AdapterRemoval")
+    (description
+     "This package provides an R wrapper of the popular @code{bowtie2}
+sequencing reads aligner and @code{AdapterRemoval}, a convenient tool for
+rapid adapter trimming, identification, and read merging.")
+    (license license:gpl3+)))
+
+(define-public r-progeny
+  (package
+    (name "r-progeny")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "progeny" version))
+       (sha256
+        (base32
+         "02z09rbzi305jrwzai8zayxi82563lxcaldp4r9pw564qkbl7pk7"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-biobase" ,r-biobase)))
+    (home-page "https://github.com/saezlab/progeny")
+    (synopsis "Pathway responsive gene activity inference")
+    (description
+     "This package provides a function to infer pathway activity from gene
+expression.  It contains the linear model inferred in the publication
+\"Perturbation-response genes reveal signaling footprints in cancer gene
+expression\".")
+    (license license:asl2.0)))
+
+(define-public r-arrmnormalization
+  (package
+    (name "r-arrmnormalization")
+    (version "1.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "ARRmNormalization" version))
+       (sha256
+        (base32
+         "09wfd4vqfvmkpqn9dwqly1dz4h1ckh621jbwj1dab6q4z0dfmzmd"))))
+    (properties
+     `((upstream-name . "ARRmNormalization")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-arrmdata" ,r-arrmdata)))
+    (home-page "https://bioconductor.org/packages/ARRmNormalization/")
+    (synopsis "Adaptive robust regression normalization for methylation data")
+    (description
+     "This is a package to perform the @dfn{Adaptive Robust Regression
+method} (ARRm) for the normalization of methylation data from the Illumina
+Infinium HumanMethylation 450k assay.")
+    (license license:artistic2.0)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 1836939970..8a49e1e350 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2325,23 +2325,21 @@ files.  The code was previously part of the cutadapt tool.")
 (define-public cutadapt
   (package
     (name "cutadapt")
-    (version "1.18")
+    (version "2.1")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/marcelm/cutadapt.git")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
+              (method url-fetch)
+              (uri (pypi-uri "cutadapt" version))
               (sha256
                (base32
-                "08bbfwyc0kvcd95jf2s95xiv9s3cbsxm39ydl0qck3fw3cviwxpg"))))
+                "1vqmsfkm6llxzmsz9wcfcvzx9a9f8iabvwik2rbyn7nc4wm25z89"))))
     (build-system python-build-system)
     (inputs
      `(("python-dnaio" ,python-dnaio)
        ("python-xopen" ,python-xopen)))
     (native-inputs
      `(("python-cython" ,python-cython)
-       ("python-pytest" ,python-pytest)))
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://cutadapt.readthedocs.io/en/stable/")
     (synopsis "Remove adapter sequences from nucleotide sequencing reads")
     (description
@@ -6792,14 +6790,14 @@ databases.  Packages produced are intended to be used with AnnotationDbi.")
 (define-public r-rbgl
   (package
     (name "r-rbgl")
-    (version "1.58.1")
+    (version "1.58.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "RBGL" version))
        (sha256
         (base32
-         "1l5x2icv9di1lr3gqfi0vjnyd9xc3l77yc42ippqd4cadj3d1pzf"))))
+         "0vhnh47pswnp27c0zqcbnnsayfmq3cxcgrs9g860555ldqfl4cyl"))))
     (properties `((upstream-name . "RBGL")))
     (build-system r-build-system)
     (propagated-inputs `(("r-graph" ,r-graph)))
@@ -7014,29 +7012,6 @@ annotation infrastructure.")
      "This package provides a pipeline for the analysis of GRO-seq data.")
     (license license:gpl3+)))
 
-(define-public r-sparql
-  (package
-  (name "r-sparql")
-  (version "1.16")
-  (source (origin
-           (method url-fetch)
-           (uri (cran-uri "SPARQL" version))
-           (sha256
-            (base32
-             "0gak1q06yyhdmcxb2n3v0h9gr1vqd0viqji52wpw211qp6r6dcrc"))))
-  (properties `((upstream-name . "SPARQL")))
-  (build-system r-build-system)
-  (propagated-inputs
-   `(("r-rcurl" ,r-rcurl)
-     ("r-xml" ,r-xml)))
-  (home-page "https://cran.r-project.org/web/packages/SPARQL")
-  (synopsis "SPARQL client for R")
-  (description "This package provides an interface to use SPARQL to pose
-SELECT or UPDATE queries to an end-point.")
-  ;; The only license indication is found in the DESCRIPTION file,
-  ;; which states GPL-3.  So we cannot assume GPLv3+.
-  (license license:gpl3)))
-
 (define-public vsearch
   (package
     (name "vsearch")
@@ -7243,32 +7218,6 @@ BLAST, KEGG, GenBank, MEDLINE and GO.")
     ;; (LGPLv2.1+) and scripts in samples (which have GPL2 and GPL2+)
     (license (list license:ruby license:lgpl2.1+ license:gpl2+ ))))
 
-(define-public r-acsnminer
-  (package
-    (name "r-acsnminer")
-    (version "0.16.8.25")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "ACSNMineR" version))
-              (sha256
-               (base32
-                "0gh604s8qall6zfjlwcg2ilxjvz08dplf9k5g47idhv43scm748l"))))
-    (properties `((upstream-name . "ACSNMineR")))
-    (build-system r-build-system)
-    (propagated-inputs
-      `(("r-ggplot2" ,r-ggplot2)
-        ("r-gridextra" ,r-gridextra)))
-    (home-page "https://cran.r-project.org/web/packages/ACSNMineR")
-    (synopsis "Gene enrichment analysis")
-    (description
-     "This package provides tools to compute and represent gene set enrichment
-or depletion from your data based on pre-saved maps from the @dfn{Atlas of
-Cancer Signalling Networks} (ACSN) or user imported maps.  The gene set
-enrichment can be run with hypergeometric test or Fisher exact test, and can
-use multiple corrections.  Visualization of data can be done either by
-barplots or heatmaps.")
-    (license license:gpl2+)))
-
 (define-public r-biocinstaller
   (package
     (name "r-biocinstaller")
@@ -7315,30 +7264,6 @@ categorize packages in a Bioconductor package repository according to keywords,
 also known as views, in a controlled vocabulary.")
     (license license:artistic2.0)))
 
-(define-public r-bookdown
-  (package
-    (name "r-bookdown")
-    (version "0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "bookdown" version))
-              (sha256
-               (base32
-                "0vg1s1w0l9pm95asqb21yf39mfk1nc9rdhmlys9xwr7p7i7rsz32"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-htmltools" ,r-htmltools)
-       ("r-knitr" ,r-knitr)
-       ("r-rmarkdown" ,r-rmarkdown)
-       ("r-tinytex" ,r-tinytex)
-       ("r-yaml" ,r-yaml)
-       ("r-xfun" ,r-xfun)))
-    (home-page "https://github.com/rstudio/bookdown")
-    (synopsis "Authoring books and technical documents with R markdown")
-    (description "This package provides output formats and utilities for
-authoring books and technical documents with R Markdown.")
-    (license license:gpl3)))
-
 (define-public r-biocstyle
   (package
     (name "r-biocstyle")
@@ -7412,29 +7337,6 @@ functionality.")
 checks on R packages that are to be submitted to the Bioconductor repository.")
     (license license:artistic2.0)))
 
-(define-public r-optparse
-  (package
-    (name "r-optparse")
-    (version "1.6.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "optparse" version))
-       (sha256
-        (base32
-         "04vyb6dhcga30mvghsg1p052jmf69xqxkvh3hzqz7dscyppy76w1"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-getopt" ,r-getopt)))
-    (home-page
-     "https://github.com/trevorld/optparse")
-    (synopsis "Command line option parser")
-    (description
-     "This package provides a command line parser inspired by Python's
-@code{optparse} library to be used with Rscript to write shebang scripts
-that accept short and long options.")
-    (license license:gpl2+)))
-
 (define-public r-s4vectors
   (package
     (name "r-s4vectors")
@@ -7462,31 +7364,6 @@ In addition, a few low-level concrete subclasses of general interest (e.g.
 S4Vectors package itself.")
     (license license:artistic2.0)))
 
-(define-public r-seqinr
-  (package
-    (name "r-seqinr")
-    (version "3.4-5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "seqinr" version))
-        (sha256
-          (base32
-            "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-ade4" ,r-ade4)
-       ("r-segmented" ,r-segmented)))
-    (inputs
-     `(("zlib" ,zlib)))
-    (home-page "http://seqinr.r-forge.r-project.org/")
-    (synopsis "Biological sequences retrieval and analysis")
-    (description
-     "This package provides tools for exploratory data analysis and data
-visualization of biological sequence (DNA and protein) data.  It also includes
-utilities for sequence data management under the ACNUC system.")
-    (license license:gpl2+)))
-
 (define-public r-iranges
   (package
     (name "r-iranges")
@@ -7888,10 +7765,10 @@ biological sequences or sets of sequences.")
     (home-page "https://bioconductor.org/packages/release/bioc/html/Rsamtools.html")
     (synopsis "Interface to samtools, bcftools, and tabix")
     (description
-     "This package provides an interface to the 'samtools', 'bcftools', and
-'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA,
-binary variant call (BCF) and compressed indexed tab-delimited (tabix)
-files.")
+     "This package provides an interface to the @code{samtools},
+@code{bcftools}, and @code{tabix} utilities for manipulating SAM (Sequence
+Alignment / Map), FASTA, binary variant call (BCF) and compressed indexed
+tab-delimited (tabix) files.")
     (license license:expat)))
 
 (define-public r-delayedarray
@@ -8039,13 +7916,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.6")
+    (version "1.34.8")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "1cz7qx324dmsrkzyhm956cfgr08gpily5rpym7hc8zz5kbl6i3ra"))))
+                "1sxp86hdsg32l2c85jgic65gy92d8kxsm01264hrx6yikdhicjax"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8413,6 +8290,9 @@ secondary structure and comparative analysis in R.")
          "13fv78sk5g0gqfl3ks3rps3zc1k66a4lzxvgn36r7ix43yxk7hnr"))))
     (properties `((upstream-name . "Rhtslib")))
     (build-system r-build-system)
+    ;; Without this a temporary directory ends up in the Rhtslib.so binary,
+    ;; which makes R abort the build.
+    (arguments '(#:configure-flags '("--no-staged-install")))
     (propagated-inputs
      `(("r-zlibbioc" ,r-zlibbioc)))
     (inputs
@@ -8467,6 +8347,7 @@ paired-end data.")
               (sha256
                (base32
                 "0ss5hcg2m7gjji6dd23zxa5bd5a7knwcnada4qs5q2l4clgk39ad"))))
+    (properties `((upstream-name . "RCAS")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -8587,45 +8468,6 @@ characterization and visualization of a wide range of mutational patterns
 in SNV base substitution data.")
     (license license:expat)))
 
-(define-public r-wgcna
-  (package
-    (name "r-wgcna")
-    (version "1.66")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "WGCNA" version))
-       (sha256
-        (base32
-         "0rhnyhzfn93yp24jz9v6dzrmyizwzdw070a7idm0k33w1cm8sjqv"))))
-    (properties `((upstream-name . "WGCNA")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-annotationdbi" ,r-annotationdbi)
-       ("r-doparallel" ,r-doparallel)
-       ("r-dynamictreecut" ,r-dynamictreecut)
-       ("r-fastcluster" ,r-fastcluster)
-       ("r-foreach" ,r-foreach)
-       ("r-go-db" ,r-go-db)
-       ("r-hmisc" ,r-hmisc)
-       ("r-impute" ,r-impute)
-       ("r-rcpp" ,r-rcpp)
-       ("r-robust" ,r-robust)
-       ("r-survival" ,r-survival)
-       ("r-matrixstats" ,r-matrixstats)
-       ("r-preprocesscore" ,r-preprocesscore)))
-    (home-page
-     "http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA/")
-    (synopsis "Weighted correlation network analysis")
-    (description
-     "This package provides functions necessary to perform Weighted
-Correlation Network Analysis on high-dimensional data.  It includes functions
-for rudimentary data cleaning, construction and summarization of correlation
-networks, module identification and functions for relating both variables and
-modules to sample traits.  It also includes a number of utility functions for
-data manipulation and visualization.")
-    (license license:gpl2+)))
-
 (define-public r-chipkernels
   (let ((commit "c9cfcacb626b1221094fb3490ea7bac0fd625372")
         (revision "1"))
@@ -8693,39 +8535,6 @@ bound and non bound genomic regions to accurately identify transcription
 factors bound at the specific regions.")
     (license license:gpl2+)))
 
-(define-public r-gkmsvm
-  (package
-    (name "r-gkmsvm")
-    (version "0.79.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "gkmSVM" version))
-       (sha256
-        (base32
-         "04dakbgfvfalz4rm4fvvybp506dn5fbj5g86ybfhrc6wywjllsz3"))))
-    (properties `((upstream-name . "gkmSVM")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-biocgenerics" ,r-biocgenerics)
-       ("r-biostrings" ,r-biostrings)
-       ("r-genomeinfodb" ,r-genomeinfodb)
-       ("r-genomicranges" ,r-genomicranges)
-       ("r-iranges" ,r-iranges)
-       ("r-kernlab" ,r-kernlab)
-       ("r-rcpp" ,r-rcpp)
-       ("r-rocr" ,r-rocr)
-       ("r-rtracklayer" ,r-rtracklayer)
-       ("r-s4vectors" ,r-s4vectors)
-       ("r-seqinr" ,r-seqinr)))
-    (home-page "https://cran.r-project.org/web/packages/gkmSVM")
-    (synopsis "Gapped-kmer support vector machine")
-    (description
-     "This R package provides tools for training gapped-kmer SVM classifiers
-for DNA and protein sequences.  This package supports several sequence
-kernels, including: gkmSVM, kmer-SVM, mismatch kernel and wildcard kernel.")
-    (license license:gpl2+)))
-
 (define-public r-tximport
   (package
     (name "r-tximport")
@@ -9632,40 +9441,33 @@ and irregular enzymatic cleavages, mass measurement accuracy, etc.")
 (define-public r-seurat
   (package
     (name "r-seurat")
-    (version "2.3.4")
+    (version "3.0.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "Seurat" version))
               (sha256
                (base32
-                "0l8bv4i9nzz26mirnva10mq6pimibj24vk7vpvfypgn7xk4942hd"))))
+                "183lm2wk0i3g114jbdf7pb4ssizr48qzqv3cknbsiackr8kvpsvc"))))
     (properties `((upstream-name . "Seurat")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
        ("r-cluster" ,r-cluster)
        ("r-cowplot" ,r-cowplot)
-       ("r-dosnow" ,r-dosnow)
-       ("r-dplyr" ,r-dplyr)
-       ("r-dtw" ,r-dtw)
        ("r-fitdistrplus" ,r-fitdistrplus)
-       ("r-foreach" ,r-foreach)
-       ("r-fpc" ,r-fpc)
+       ("r-future" ,r-future)
+       ("r-future-apply" ,r-future-apply)
        ("r-ggplot2" ,r-ggplot2)
+       ("r-ggrepel" ,r-ggrepel)
        ("r-ggridges" ,r-ggridges)
-       ("r-gplots" ,r-gplots)
-       ("r-hdf5r" ,r-hdf5r)
-       ("r-hmisc" ,r-hmisc)
-       ("r-httr" ,r-httr)
        ("r-ica" ,r-ica)
        ("r-igraph" ,r-igraph)
        ("r-irlba" ,r-irlba)
-       ("r-lars" ,r-lars)
+       ("r-kernsmooth" ,r-kernsmooth)
        ("r-lmtest" ,r-lmtest)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
        ("r-metap" ,r-metap)
-       ("r-mixtools" ,r-mixtools)
        ("r-pbapply" ,r-pbapply)
        ("r-plotly" ,r-plotly)
        ("r-png" ,r-png)
@@ -9674,12 +9476,14 @@ and irregular enzymatic cleavages, mass measurement accuracy, etc.")
        ("r-rcpp" ,r-rcpp)
        ("r-rcppeigen" ,r-rcppeigen)
        ("r-rcppprogress" ,r-rcppprogress)
-       ("r-reshape2" ,r-reshape2)
        ("r-reticulate" ,r-reticulate)
+       ("r-rlang" ,r-rlang)
        ("r-rocr" ,r-rocr)
+       ("r-rsvd" ,r-rsvd)
        ("r-rtsne" ,r-rtsne)
+       ("r-scales" ,r-scales)
+       ("r-sctransform" ,r-sctransform)
        ("r-sdmtools" ,r-sdmtools)
-       ("r-tidyr" ,r-tidyr)
        ("r-tsne" ,r-tsne)))
     (home-page "http://www.satijalab.org/seurat")
     (synopsis "Seurat is an R toolkit for single cell genomics")
@@ -10026,14 +9830,14 @@ originally made available by Holmes, Harris, and Quince, 2012, PLoS ONE 7(2):
 (define-public r-ensembldb
   (package
     (name "r-ensembldb")
-    (version "2.6.7")
+    (version "2.6.8")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ensembldb" version))
        (sha256
         (base32
-         "1wqq0m1fgvgkzq5zr2s9cj2s7qkg9lx3dwwsqixzs5fn52p4dn7f"))))
+         "0gijx2l2y00h6gfj3gfr7rd4vva6qf2vkfdfy5gdmvqlxy84ka38"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -10152,6 +9956,16 @@ effort and encourages consistency.")
         (base32
          "0wq49qqzkcn8s19xgaxf2s1j1a563d7pbhhvris6fhxfdjsz4934"))))
     (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; See https://github.com/tengfei/ggbio/issues/117
+         ;; This fix will be included in the next release.
+         (add-after 'unpack 'fix-typo
+           (lambda _
+             (substitute* "R/GGbio-class.R"
+               (("fechable") "fetchable"))
+             #t)))))
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
        ("r-annotationfilter" ,r-annotationfilter)
@@ -10352,14 +10166,14 @@ by Ernst and Kellis.")
 (define-public r-ldblock
   (package
     (name "r-ldblock")
-    (version "1.12.0")
+    (version "1.12.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ldblock" version))
        (sha256
         (base32
-         "0xbf4pmhrk5fnd1iz5wzjvdr75v114bwpznhcig4wiqmxc27sips"))))
+         "01lf74pby7si2g3kgc10qzr6lkcbigqcgqs2j3anc38vzxv0zhwv"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biocgenerics" ,r-biocgenerics)
@@ -10384,14 +10198,14 @@ defining LD blocks.")
 (define-public r-gqtlstats
   (package
     (name "r-gqtlstats")
-    (version "1.14.0")
+    (version "1.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gQTLstats" version))
        (sha256
         (base32
-         "1sg9kw59dlayj7qxql9pd93d4hmml504sa3kkfpzfh3xri7m5pxf"))))
+         "1rkbnb3h02fdksc4nacqvmq4jgbj9fz4hm7j51yr2ggcgcykwraa"))))
     (properties `((upstream-name . "gQTLstats")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10625,14 +10439,14 @@ block processing.")
 (define-public r-rhdf5lib
   (package
     (name "r-rhdf5lib")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhdf5lib" version))
        (sha256
         (base32
-         "06bxd3wz8lrvh2hzvmjpdv4lvzj5lz9353bw5b3zb98cb8w9r2j5"))
+         "0hjhjvg2kss71fkmxlbgnyyy1agwzgq57rxkgkm4riw82x2rvw7q"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -10861,14 +10675,14 @@ memory usage and processing time is minimized.")
 (define-public r-phangorn
   (package
     (name "r-phangorn")
-    (version "2.4.0")
+    (version "2.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "phangorn" version))
        (sha256
         (base32
-         "0xc8k552nxczy19jr0xjjagrzc8x6lafasgk2c099ls8bc1yml1i"))))
+         "1bv86yfk5r015s7ij6v4zz7bagwrw9m13yfs5853drxb19d5h1m3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
@@ -11075,23 +10889,31 @@ with narrow binding events such as transcription factor ChIP-seq.")
 (define-public trim-galore
   (package
     (name "trim-galore")
-    (version "0.4.5")
+    (version "0.6.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/FelixKrueger/TrimGalore.git")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0x5892l48c816pf00wmnz5vq0zq6170d3xc8zrxncd4jcz7h1p71"))))
+         "1y31wbxwkm9xqzr5zv1pk5q418whnmlmgmfyxxpnl12h83m2i9iv"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
+         (replace 'configure
+           (lambda _
+             ;; Trim Galore tries to figure out what version of Python
+             ;; cutadapt is using by looking at the shebang.  Of course that
+             ;; doesn't work, because cutadapt is wrapped in a shell script.
+             (substitute* "trim_galore"
+               (("my \\$python_return.*")
+                "my $python_return = \"Python 3.999\";\n"))
+             #t))
          (delete 'build)
          (add-after 'unpack 'hardcode-tool-references
            (lambda* (#:key inputs #:allow-other-keys)
@@ -11100,14 +10922,18 @@ with narrow binding events such as transcription factor ChIP-seq.")
                 (string-append "$path_to_cutadapt = '"
                                (assoc-ref inputs "cutadapt")
                                "/bin/cutadapt'"))
-               (("\\| gzip")
-                (string-append "| "
+               (("\\$compression_path = \"gzip\"")
+                (string-append "$compression_path = \""
                                (assoc-ref inputs "gzip")
-                               "/bin/gzip"))
+                               "/bin/gzip\""))
                (("\"gunzip")
                 (string-append "\""
                                (assoc-ref inputs "gzip")
-                               "/bin/gunzip")))
+                               "/bin/gunzip"))
+               (("\"pigz")
+                (string-append "\""
+                               (assoc-ref inputs "pigz")
+                               "/bin/pigz")))
              #t))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
@@ -11119,6 +10945,7 @@ with narrow binding events such as transcription factor ChIP-seq.")
     (inputs
      `(("gzip" ,gzip)
        ("perl" ,perl)
+       ("pigz" ,pigz)
        ("cutadapt" ,cutadapt)))
     (native-inputs
      `(("unzip" ,unzip)))
@@ -12220,6 +12047,23 @@ graphs.  This library makes it easy to work with @file{.loom} files for
 single-cell RNA-seq data.")
     (license license:bsd-3)))
 
+;; pigx-scrnaseq does not work with the latest version of loompy.
+(define-public python-loompy-for-pigx-scrnaseq
+  (package (inherit python-loompy)
+    (name "python-loompy")
+    (version "2.0.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/linnarsson-lab/loompy.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0pjyl532pl8sbv71yci6h0agchn0naw2qjcwj50n6afrsahbsag3"))))
+    ;; There are none.
+    (arguments '(#:tests? #f))))
+
 ;; We cannot use the latest commit because it requires Java 9.
 (define-public java-forester
   (let ((commit "86b07efe302d5094b42deed9260f719a4c4ac2e6")
@@ -12833,7 +12677,7 @@ expression report comparing samples in an easily configurable manner.")
 (define-public pigx-chipseq
   (package
     (name "pigx-chipseq")
-    (version "0.0.31")
+    (version "0.0.40")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/BIMSBbioinfo/pigx_chipseq/"
@@ -12841,7 +12685,7 @@ expression report comparing samples in an easily configurable manner.")
                                   "/pigx_chipseq-" version ".tar.gz"))
               (sha256
                (base32
-                "0l3vd9xwqzap3mmyj8xwqp84kj7scbq308diqnwg2albphl75xqs"))))
+                "0y9x62cfwzhsp82imnawyamxp58bcb00yjxdy44spylqnjdlsaj8"))))
     (build-system gnu-build-system)
     ;; parts of the tests rely on access to the network
     (arguments '(#:tests? #f))
@@ -12990,7 +12834,7 @@ methylation and segmentation.")
        ("python-pandas" ,python-pandas)
        ("python-magic" ,python-magic)
        ("python-numpy" ,python-numpy)
-       ("python-loompy" ,python-loompy)
+       ("python-loompy" ,python-loompy-for-pigx-scrnaseq)
        ("ghc-pandoc" ,ghc-pandoc)
        ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
        ("samtools" ,samtools)
@@ -13461,31 +13305,57 @@ in RNA-seq data.")
 (define-public python-scanpy
   (package
     (name "python-scanpy")
-    (version "1.2.2")
+    (version "1.4")
+    ;; Fetch from git because the pypi tarball does not include tests.
     (source
      (origin
-       (method url-fetch)
-       (uri (pypi-uri "scanpy" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/theislab/scanpy.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1ak7bxms5a0yvf65prppq2g38clkv7c7jnjbnfpkh3xxv7q512jz"))))
+         "0zn6x6c0cnm1a20i6isigwb51g3pr9zpjk8r1minjqnxi5yc9pm4"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; These tests require Internet access.
+             (delete-file-recursively "scanpy/tests/notebooks")
+             (delete-file "scanpy/tests/test_clustering.py")
+
+             ;; TODO: I can't get the plotting tests to work, even with Xvfb.
+             (delete-file "scanpy/tests/test_plotting.py")
+             (delete-file "scanpy/tests/test_preprocessing.py")
+             (delete-file "scanpy/tests/test_read_10x.py")
+
+             (setenv "PYTHONPATH"
+                     (string-append (getcwd) ":"
+                                    (getenv "PYTHONPATH")))
+             (invoke "pytest")
+             #t)))))
     (propagated-inputs
      `(("python-anndata" ,python-anndata)
+       ("python-h5py" ,python-h5py)
        ("python-igraph" ,python-igraph)
-       ("python-numba" ,python-numba)
        ("python-joblib" ,python-joblib)
+       ("python-louvain" ,python-louvain)
+       ("python-matplotlib" ,python-matplotlib)
        ("python-natsort" ,python-natsort)
        ("python-networkx" ,python-networkx)
-       ("python-statsmodels" ,python-statsmodels)
-       ("python-scikit-learn" ,python-scikit-learn)
-       ("python-matplotlib" ,python-matplotlib)
+       ("python-numba" ,python-numba)
        ("python-pandas" ,python-pandas)
+       ("python-scikit-learn" ,python-scikit-learn)
        ("python-scipy" ,python-scipy)
        ("python-seaborn" ,python-seaborn)
-       ("python-h5py" ,python-h5py)
+       ("python-statsmodels" ,python-statsmodels)
        ("python-tables" ,python-tables)))
-    (home-page "http://github.com/theislab/scanpy")
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/theislab/scanpy")
     (synopsis "Single-Cell Analysis in Python.")
     (description "Scanpy is a scalable toolkit for analyzing single-cell gene
 expression data.  It includes preprocessing, visualization, clustering,
@@ -13494,6 +13364,38 @@ Python-based implementation efficiently deals with datasets of more than one
 million cells.")
     (license license:bsd-3)))
 
+(define-public python-bbknn
+  (package
+    (name "python-bbknn")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bbknn" version))
+       (sha256
+        (base32
+         "1qgdganvj3lyxj84v7alm23b9vqhwpn8z0115qndpnpy90qxynwz"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-annoy" ,python-annoy)
+       ("python-cython" ,python-cython)
+       ("python-faiss" ,python-faiss)
+       ("python-numpy" ,python-numpy)
+       ("python-scanpy" ,python-scanpy)))
+    (home-page "https://github.com/Teichlab/bbknn")
+    (synopsis "Batch balanced KNN")
+    (description "BBKNN is a batch effect removal tool that can be directly
+used in the Scanpy workflow.  It serves as an alternative to
+@code{scanpy.api.pp.neighbors()}, with both functions creating a neighbour
+graph for subsequent use in clustering, pseudotime and UMAP visualisation.  If
+technical artifacts are present in the data, they will make it challenging to
+link corresponding cell types across different batches.  BBKNN actively
+combats this effect by splitting your data into batches and finding a smaller
+number of neighbours for each cell within each of the groups.  This helps
+create connections between analogous cells in different batches without
+altering the counts or PCA space.")
+    (license license:expat)))
+
 (define-public gffcompare
   (let ((commit "be56ef4349ea3966c12c6397f85e49e047361c41")
         (revision "1"))
@@ -14661,3 +14563,227 @@ 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+)))
+
+(define-public pplacer
+  (let ((commit "807f6f3"))
+    (package
+      (name "pplacer")
+      ;; The commit should be updated with each version change.
+      (version "1.1.alpha19")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/matsen/pplacer.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
+      (build-system ocaml-build-system)
+      (arguments
+       `(#:modules ((guix build ocaml-build-system)
+                    (guix build utils)
+                    (ice-9 ftw))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'fix-build-with-latest-ocaml
+             (lambda _
+               (substitute* "myocamlbuild.ml"
+                 (("dep \\[\"c_pam\"\\]" m)
+                  (string-append "flag [\"ocaml\"; \"compile\"] (A \"-unsafe-string\");\n"
+                                 m))
+                 (("let run_and_read" m)
+                  (string-append "
+let split s ch =
+  let x = ref [] in
+  let rec go s =
+    let pos = String.index s ch in
+    x := (String.before s pos)::!x;
+    go (String.after s (pos + 1))
+  in
+  try go s
+  with Not_found -> !x
+let split_nl s = split s '\\n'
+let before_space s =
+  try String.before s (String.index s ' ')
+  with Not_found -> s
+
+" m))
+                 (("run_and_read \"ocamlfind list \\| cut -d' ' -f1\"" m)
+                  (string-append "List.map before_space (split_nl & " m ")"))
+                 (("    blank_sep_strings &") "")
+                 (("      Lexing.from_string &") ""))
+               #t))
+           (add-after 'unpack 'replace-bundled-cddlib
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
+                      (local-dir "cddlib_guix"))
+                 (mkdir local-dir)
+                 (with-directory-excursion local-dir
+                   (invoke "tar" "xvf" cddlib-src))
+                 (let ((cddlib-src-folder
+                        (string-append local-dir "/"
+                                       (list-ref (scandir local-dir) 2)
+                                       "/lib-src")))
+                   (for-each make-file-writable (find-files "cdd_src" ".*"))
+                   (for-each
+                    (lambda (file)
+                      (copy-file file
+                                 (string-append "cdd_src/" (basename file))))
+                    (find-files cddlib-src-folder ".*[ch]$")))
+                 #t)))
+           (add-after 'unpack 'fix-makefile
+             (lambda _
+               ;; Remove system calls to 'git'.
+               (substitute* "Makefile"
+                 (("^DESCRIPT:=pplacer-.*")
+                  (string-append
+                   "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
+               (substitute* "myocamlbuild.ml"
+                 (("git describe --tags --long .*\\\" with")
+                  (string-append
+                   "echo -n v" ,version "-" ,commit "\" with")))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (copy-recursively "bin" bin))
+               #t)))))
+      (inputs
+       `(("zlib" ,zlib "static")
+         ("gsl" ,gsl)
+         ("ocaml-ounit" ,ocaml-ounit)
+         ("ocaml-batteries" ,ocaml-batteries)
+         ("ocaml-camlzip" ,camlzip)
+         ("ocaml-csv" ,ocaml-csv)
+         ("ocaml-sqlite3" ,ocaml-sqlite3)
+         ("ocaml-xmlm" ,ocaml-xmlm)
+         ("ocaml-mcl" ,ocaml-mcl)
+         ("ocaml-gsl" ,ocaml-gsl-1)))
+      (native-inputs
+       `(("cddlib-src" ,(package-source cddlib))
+         ("ocamlbuild" ,ocamlbuild)
+         ("pkg-config" ,pkg-config)))
+      (propagated-inputs
+       `(("pplacer-scripts" ,pplacer-scripts)))
+      (synopsis "Phylogenetic placement of biological sequences")
+      (description
+       "Pplacer places query sequences on a fixed reference phylogenetic tree
+to maximize phylogenetic likelihood or posterior probability according to a
+reference alignment.  Pplacer is designed to be fast, to give useful
+information about uncertainty, and to offer advanced visualization and
+downstream analysis.")
+      (home-page "http://matsen.fhcrc.org/pplacer")
+      (license license:gpl3))))
+
+;; This package is installed alongside 'pplacer'.  It is a separate package so
+;; that it can use the python-build-system for the scripts that are
+;; distributed alongside the main OCaml binaries.
+(define pplacer-scripts
+  (package
+    (inherit pplacer)
+    (name "pplacer-scripts")
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-scripts-dir
+           (lambda _ (chdir "scripts") #t))
+         (replace 'check
+           (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t))
+         (add-after 'install 'wrap-executables
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin:"
+                            (assoc-ref inputs "infernal") "/bin")))
+                 (display path)
+                 (wrap-program (string-append bin "/refpkg_align.py")
+                   `("PATH" ":" prefix (,path))))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin")))
+                 (wrap-program (string-append bin "/hrefpkg_query.py")
+                   `("PATH" ":" prefix (,path)))))
+             #t)))))
+    (inputs
+     `(("infernal" ,infernal)
+       ("hmmer" ,hmmer)))
+    (propagated-inputs
+     `(("python-biopython" ,python2-biopython)
+       ("taxtastic" ,taxtastic)))
+    (synopsis "Pplacer Python scripts")))
+
+(define-public python2-checkm-genome
+  (package
+    (name "python2-checkm-genome")
+    (version "1.0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "checkm-genome" version))
+       (sha256
+        (base32
+         "0bm8gpxjmzxsxxl8lzwqhgx8g1dlnmp6znz7wv3hgb0gdjbf9dzz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f)) ; some tests are interactive
+    (propagated-inputs
+     `(("python-dendropy" ,python2-dendropy)
+       ("python-matplotlib" ,python2-matplotlib)
+       ("python-numpy" ,python2-numpy)
+       ("python-pysam" ,python2-pysam)
+       ("python-scipy" ,python2-scipy)))
+    (home-page "http://pypi.python.org/pypi/checkm/")
+    (synopsis "Assess the quality of putative genome bins")
+    (description
+     "CheckM provides a set of tools for assessing the quality of genomes
+recovered from isolates, single cells, or metagenomes.  It provides robust
+estimates of genome completeness and contamination by using collocated sets of
+genes that are ubiquitous and single-copy within a phylogenetic lineage.
+Assessment of genome quality can also be examined using plots depicting key
+genomic characteristics (e.g., GC, coding density) which highlight sequences
+outside the expected distributions of a typical genome.  CheckM also provides
+tools for identifying genome bins that are likely candidates for merging based
+on marker set compatibility, similarity in genomic characteristics, and
+proximity within a reference genome.")
+    (license license:gpl3+)))
+
+(define-public umi-tools
+  (package
+    (name "umi-tools")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "umi_tools" version))
+       (sha256
+        (base32
+         "08y3vz1vcx09whmbsn722lcs6jl9wyrh9i4p3k8j4cb1i32bij4a"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-pandas" ,python-pandas)
+       ("python-future" ,python-future)
+       ("python-scipy" ,python-scipy)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-regex" ,python-regex)
+       ("python-pysam" ,python-pysam)))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-cython" ,python-cython)))
+    (home-page "https://github.com/CGATOxford/UMI-tools")
+    (synopsis "Tools for analyzing unique modular identifiers")
+    (description "This package provides tools for dealing with @dfn{Unique
+Molecular Identifiers} (UMIs) and @dfn{Random Molecular Tags} (RMTs) in
+genetic sequences.  There are six tools: the @code{extract} and
+@code{whitelist} commands are used to prepare a fastq containg UMIs @code{+/-}
+cell barcodes for alignment.  The remaining commands, @code{group},
+@code{dedup}, and @{count}/@code{count_tab}, are used to identify PCR
+duplicates using the UMIs and perform different levels of analysis depending
+on the needs of the user.")
+    (license license:expat)))
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index d6ef7d52b5..6e6e69ff3b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -90,7 +90,8 @@
               (base32
                "03vvdfhdmf16121v7xs8is2krwnv15wpkhkf16a4yf8nsfc3f2w1"))
              (patches (search-patches "grub-check-error-efibootmgr.patch"
-                                      "grub-binutils-compat.patch"))))
+                                      "grub-binutils-compat.patch"
+                                      "grub-efi-fat-serial-number.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -378,7 +379,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 (define u-boot
   (package
     (name "u-boot")
-    (version "2019.01")
+    (version "2019.04")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -386,7 +387,10 @@ tree binary files.  These are board description files used by Linux and BSD.")
                     "u-boot-" version ".tar.bz2"))
               (sha256
                (base32
-                "08hwsmh5xsb1gcxsv8gvx00bai938dm5y3889n8jif3a8rd7xgah"))))
+                "1vwv4bgbl7fjcm073zrphn17hnz5h5h778f88ivdsgbb2lnpgdvn"))
+              (patches
+               (search-patches
+                "u-boot-fix-mkimage-header-verification.patch"))))
     (native-inputs
      `(("bc" ,bc)
        ("bison" ,bison)
@@ -441,6 +445,10 @@ also initializes the boards (RAM etc).")
               (("def test_ctrl_c")
                "@pytest.mark.skip(reason='Guix has problems with SIGINT')
 def test_ctrl_c"))
+             ;; Test against the tools being installed rather than tools built
+             ;; for "sandbox" target.
+             (substitute* "test/image/test-imagetools.sh"
+               (("BASEDIR=sandbox") "BASEDIR=."))
              (for-each (lambda (file)
                               (substitute* file
                                   ;; Disable signatures, due to GPL/Openssl
@@ -483,12 +491,19 @@ def test_ctrl_c"))
            (delete 'check)
            (add-after 'install 'check
              (lambda* (#:key make-flags test-target #:allow-other-keys)
-               (apply invoke "make" "mrproper" make-flags)
-               (setenv "SDL_VIDEODRIVER" "dummy")
-               (setenv "PAGER" "cat")
-               (apply invoke "make" test-target make-flags)
-               (symlink "build-sandbox_spl" "sandbox")
-               (invoke "test/image/test-imagetools.sh"))))))
+               (invoke "test/image/test-imagetools.sh")))
+           ;; Only run full test suite on x86_64 systems, as many tests
+           ;; assume x86_64.
+           ,@(if (string-match "^x86_64-linux"
+                               (or (%current-target-system)
+                                   (%current-system)))
+                 '((add-after 'check 'check-x86
+                     (lambda* (#:key make-flags test-target #:allow-other-keys)
+                       (apply invoke "make" "mrproper" make-flags)
+                       (setenv "SDL_VIDEODRIVER" "dummy")
+                       (setenv "PAGER" "cat")
+                       (apply invoke "make" test-target make-flags))))
+                 '()))))
     (description "U-Boot is a bootloader used mostly for ARM boards.  It
 also initializes the boards (RAM etc).  This package provides its
 board-independent tools.")))
@@ -577,8 +592,32 @@ board-independent tools.")))
 (define-public u-boot-malta
   (make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
 
-(define-public u-boot-beagle-bone-black
-  (make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf"))
+(define-public u-boot-am335x-boneblack
+  (let ((base (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")))
+    (package
+      (inherit base)
+      (name "u-boot-am335x-boneblack")
+      (description "U-Boot is a bootloader used mostly for ARM boards. It
+also initializes the boards (RAM etc).
+
+This U-Boot is built for the BeagleBone Black, which was removed upstream,
+adjusted from the am335x_evm build with several device trees removed so that
+it fits within common partitioning schemes.")
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-after 'unpack 'patch-defconfig
+               ;; Patch out other devicetrees to build image small enough to
+               ;; fit within typical partitioning schemes where the first
+               ;; partition begins at sector 2048.
+               (lambda _
+                 (substitute* "configs/am335x_evm_defconfig"
+                   (("CONFIG_OF_LIST=.*$") "CONFIG_OF_LIST=\"am335x-evm am335x-boneblack\"\n"))
+                 #t)))))))))
+
+(define-public u-boot-am335x-evm
+  (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf"))
 
 (define-public (make-u-boot-sunxi64-package board triplet)
   (let ((base (make-u-boot-package board triplet)))
@@ -637,7 +676,7 @@ board-independent tools.")))
 also initializes the boards (RAM etc).
 
 This U-Boot is built for Novena.  Be advised that this version, contrary
-to Novena upstream, does not load u-boot.img from the first patition.")
+to Novena upstream, does not load u-boot.img from the first partition.")
       (arguments
        (substitute-keyword-arguments (package-arguments base)
          ((#:phases phases)
@@ -647,7 +686,7 @@ to Novena upstream, does not load u-boot.img from the first patition.")
                ;; allowing it to be installed at a device offset.
                (lambda _
                  (substitute* "configs/novena_defconfig"
-                   (("CONFIG_SPL_FAT_SUPPORT=y") "# CONFIG_SPL_FAT_SUPPORT is not set"))
+                   (("CONFIG_SPL_FS_FAT=y") "# CONFIG_SPL_FS_FAT is not set"))
                  #t)))))))))
 
 (define-public u-boot-cubieboard
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 3b20e84a91..2629ebb6dd 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -38,7 +38,8 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml))
 
 (define-public tcc
   (package
@@ -257,3 +258,32 @@ typing conventions?
 every project that needs to deal with sizes in bytes.  It is written in the C
 language with thin bindings for other languages.")
     (license license:lgpl2.1+)))
+
+(define-public udunits
+  (package
+    (name "udunits")
+    (version "2.2.26")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "ftp://ftp.unidata.ucar.edu/pub/udunits/"
+                                  "udunits-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0v9mqw4drnkzkm57331ail6yvs9485jmi37s40lhvmf7r5lli3rn"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("expat" ,expat)))
+    (home-page "https://www.unidata.ucar.edu/software/udunits/")
+    (synopsis "C library for units of physical quantities and value-conversion utils")
+    (description
+     "The UDUNITS-2 package provides support for units of physical quantities.
+Its three main components are:
+
+@enumerate
+@item @code{udunits2lib}, a C library for units of physical quantities;
+@item @code{udunits2prog}, a utility for obtaining the definition of a unit
+  and for converting numeric values between compatible units; and
+@item an extensive database of units.
+@end enumerate\n")
+    ;; Like the BSD-3 license but with an extra anti patent clause.
+    (license (license:non-copyleft "file://COPYRIGHT"))))
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 226d8f57e2..2969228ee9 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -96,13 +96,13 @@ data units.")
 (define-public khal
   (package
     (name "khal")
-    (version "0.9.10")
+    (version "0.10.1")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "khal" version))
              (sha256
               (base32
-               "03h0j0d3xyqh98x5v2gv63wv3g91hip3vsaxvybsn5iz331d23h4"))))
+               "1r8bkgjwkh7i8ygvsv51h1cnax50sb183vafg66x5snxf3dgjl6l"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -122,22 +122,14 @@ data units.")
             (setenv "TZ"
                     (string-append (assoc-ref inputs "tzdata")
                                    "/share/zoneinfo/Zulu"))
-            (invoke "py.test" "tests" "-k"
-                    (string-append
-                     ;; These tests are known to fail in when not
-                     ;; running in a TTY:
-                     ;; https://github.com/pimutils/khal/issues/683
-                     "not test_printics_read_from_stdin "
-                     "and not test_import_from_stdin "
-                     ;; https://github.com/pimutils/khal/issues/825
-                     "and not test_description_and_location_and_categories")))))))
+            (invoke "py.test" "tests"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)
        ("python-pytest-cov" ,python-pytest-cov)
        ("python-setuptools-scm" ,python-setuptools-scm)
        ;; Required for tests
        ("python-freezegun" ,python-freezegun)
-       ("tzdata" ,tzdata)
+       ("tzdata" ,tzdata-for-tests)
        ("vdirsyncer" ,vdirsyncer)
        ;; Required to build manpage
        ("python-sphinxcontrib-newsfeed" ,python-sphinxcontrib-newsfeed)
@@ -154,7 +146,7 @@ data units.")
     (synopsis "Console calendar program")
     (description "Khal is a standards based console calendar program,
 able to synchronize with CalDAV servers through vdirsyncer.")
-    (home-page "http://lostpackets.de/khal/")
+    (home-page "https://lostpackets.de/khal/")
     (license license:expat)))
 
 (define-public remind
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 50bf3abcb9..2193a94f86 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; 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, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -336,13 +336,15 @@ or @command{xorrisofs} to create ISO 9660 images.")
   (package
     (name "dvdisaster")
     (version "0.79.5")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
-                                 version ".tar.bz2"))
-             (sha256
-              (base32
-               "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
+    (source
+     (origin
+       (method url-fetch)
+       ;; Update this (and update HOME-PAGE) when/if one reappears.
+       (uri (string-append "https://web.archive.org/web/20180428070843/"
+                           "http://dvdisaster.net/downloads/dvdisaster-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32 "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
     (build-system gnu-build-system)
     (inputs
      `(("gtk+" ,gtk+-2)))
@@ -384,7 +386,8 @@ or @command{xorrisofs} to create ISO 9660 images.")
                (copy-file "contrib/dvdisaster48.xpm"
                           (string-append datadir "/pixmaps/dvdisaster.xpm"))
                #t))))))
-    (home-page "http://dvdisaster.net/en/index.html")
+    (home-page (string-append "https://web.archive.org/web/20180428070843/"
+                              "http://dvdisaster.net/en/index.html"))
     (synopsis "Error correcting codes for optical media images")
     (description "Optical media (CD,DVD,BD) keep their data only for a
 finite time (typically for many years).  After that time, data loss develops
@@ -656,7 +659,7 @@ information is written to standard error.")
 (define-public asunder
   (package
     (name "asunder")
-    (version "2.8")
+    (version "2.9.3")
     (source (origin
               (method url-fetch)
               (uri
@@ -665,7 +668,7 @@ information is written to standard error.")
                               ".tar.bz2"))
               (sha256
                (base32
-                "1nq9kd4rd4k2kibf57gdbm0zw2gxa234vvvdhxkm8g5bhx5h3iyq"))))
+                "1630i1df06y840v3fgdf75jxw1s8kwbfn5bhi0686viah0scccw5"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:out-of-source? #f
@@ -860,3 +863,108 @@ Supported extensions to ISO 9660 are Rock Ridge, Joliet, AAIP, zisofs.")
 blanking CD-RW media, creating ISO-9660 file system images, extracting audio
 CD data, and more.  It's mostly compatible with @code{cdrtools}.")
     (license gpl2+)))
+
+(define-public libmirage
+  (package
+    (name "libmirage")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/libmirage-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1ydph33sfxplp4872dp8ghp574jk5d4qr8hqz61qnznq1b11cnbr"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("glib" ,glib)))
+    (arguments
+     ;; No tests.
+     '(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "CD-ROM image access library")
+    (description "libMirage is a CD-ROM image access library.  It supports the
+following formats: B6T, C2D, CCD, CDI, CIF, CUE, ISO, MDS, MDX, NRG, TOC.  It
+is written in C and based on GLib.  Its aim is to provide uniform access to
+the data stored in various image formats.")
+    (license gpl2+)))
+
+(define-public cdemu-daemon
+  (package
+    (name "cdemu-daemon")
+    (version "3.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/cdemu-daemon/cdemu-daemon-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "171qqcziqgf6dd9n8xs9hc71krhjiyx9qr767s8znidyjj88hbc4"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("libmirage" ,libmirage)
+       ("glib" ,glib)
+       ("ao" ,ao)))
+    (arguments
+     ;; No tests.
+     '(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "CD/DVD-ROM device emulator")
+    (description "CDemu is a software suite designed to emulate an optical
+drive and disc (including CD-ROMs and DVD-ROMs).")
+    (license gpl2+)))
+
+(define-public cdemu-client
+  (package
+    (name "cdemu-client")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://downloads.sourceforge.net/cdemu/cdemu-client-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1zwz987pb2pakfk9kz8a6xa9hq1ip48cn4ryl9z85dik8k2sizm9"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("python" ,python)
+       ("python-pygobject" ,python-pygobject)
+       ("cdemu-daemon" ,cdemu-daemon)))
+    (arguments
+     ;; No tests.
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'patch-shebang
+           (lambda* (#:key outputs #:allow-other-keys)
+             (patch-shebang (string-append (assoc-ref outputs "out")
+                                           "/bin/cdemu"))
+             #t))
+         (add-after 'patch-shebang 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref outputs "out")
+                                        "/bin/cdemu")))
+               (wrap-program prog
+                 `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))
+               #t))))))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "Command-line client for controlling cdemu-daemon")
+    (description "CDEmu client is a simple command-line client for controlling
+CDEmu daemon.
+
+It provides a way to perform the key tasks related to controlling the CDEmu
+daemon, such as loading and unloading devices, displaying devices' status and
+retrieving/setting devices' debug masks.")
+    (license gpl2+)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 186f4ba09a..6103f8e3f7 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -29,6 +29,7 @@
 ;;; 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>
+;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -468,13 +469,14 @@ test coverage and has a web user interface that will refresh automatically.")
     (version "1.8.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/google/googletest/archive/"
-                           "release-" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/google/googletest.git")
+              (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1n5p1m2m3fjrjdj752lf92f9wq3pl5cbsfrb49jqbg52ghkz99jq"))))
+         "0bjlljmbf8glnd9qjabx73w6pd7ibv43yiyngqvmvgxsabzr8399"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
@@ -2004,13 +2006,13 @@ create data based on random numbers and yet remain repeatable.")
 (define-public python-nose-timer
   (package
     (name "python-nose-timer")
-    (version "0.7.4")
+    (version "0.7.5")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "nose-timer" version))
         (sha256
-          (base32 "04inck7l1sgkjbiinhifxk45wk2b3czbwh1x2a390hi183fq1q12"))))
+          (base32 "05wzkc88vbzw62pqkvhl33211b90kns0lny70b7qw62rcg4flzk4"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-nose" ,python-nose)
@@ -2246,3 +2248,52 @@ record the properties and behaviour of particular devices, and to run a
 program or test suite under a test bed with the previously recorded devices
 loaded.")
     (license license:lgpl2.1+)))
+
+(define-public python-pyfakefs
+  (package
+    (name "python-pyfakefs")
+    (version "3.5.8")
+    (source (origin
+              (method url-fetch)
+              ;; We use the PyPI URL because there is no proper release
+              ;; available from GitHub.  The GitHub project only provides
+              ;; autogenerated tarballs, which are known to change in place.
+              (uri (pypi-uri "pyfakefs" version))
+              (sha256
+               (base32
+                "0qb9jp0bqhc0dv0rn805fv99029fvx135f3bvka6scfkcl6jgllc"))
+              (patches (search-patches
+                        "python-pyfakefs-remove-bad-test.patch"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; The default test suite does not run these extra tests.
+         (add-after 'check 'check-pytest-plugin
+           (lambda _
+             (invoke
+              "python" "-m" "pytest"
+              "pyfakefs/pytest_tests/pytest_plugin_test.py")
+             #t)))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (build-system python-build-system)
+    ;; Guix lint doesn't like that this is a permanent redirect to the GitHub
+    ;; page, but the pyfakefs documentation asks us to use this specific URL
+    ;; when linking to the project.  Honor their request.
+    (home-page "http://pyfakefs.org/")
+    ;; TRANSLATORS: In the synopsis, "Mock" is a verb.
+    (synopsis "Mock file system interactions in tests")
+    (description
+     "This package provides a Python library intended for use in automated
+tests.  One difficulty when testing software is that the code under test might
+need to read or write to files in the local file system.  If the file system
+is not set up in just the right way, it might cause a spurious error during
+the test.  The pyfakefs library provides a solution to problems like this by
+mocking file system interactions.  In other words, it arranges for the code
+under test to interact with a fake file system instead of the real file
+system.  The code under test requires no modification to work with pyfakefs.")
+    (license license:asl2.0)))
+
+(define-public python2-pyfakefs
+  (package-with-python2 python-pyfakefs))
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 7d0042872e..7e9f00f4c4 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -558,7 +558,7 @@ strings.")
     (synopsis "MIT/GNU Scheme compatibility library for Chez Scheme")
     (description "This package provides a set of MIT/GNU Scheme compatibility
 libraries for Chez Scheme.  The main goal was to provide the functionality
-required to port the program 'Scmutils' to Chez Scheme.")
+required to port the program @code{Scmutils} to Chez Scheme.")
     (license gpl3+)))
 
 (define-public chez-scmutils
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 7d49b06ce3..41cc10a8bb 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -40,7 +40,6 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
@@ -51,6 +50,7 @@
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages ninja)
   #:use-module (gnu packages node)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
@@ -80,11 +80,9 @@
     "chrome/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
     "courgette/third_party/bsdiff" ;BSD-2, BSD protection license
     "courgette/third_party/divsufsort" ;Expat
-    "net/third_party/http2" ;BSD-3
     "net/third_party/mozilla_security_manager" ;MPL-1.1/GPL2+/LGPL2.1+
     "net/third_party/nss" ;MPL-2.0
     "net/third_party/quic" ;BSD-3
-    "net/third_party/spdy" ;BSD-3
     "net/third_party/uri_template" ;ASL2.0
     "third_party/abseil-cpp" ;ASL2.0
     "third_party/adobe/flash/flapper_version.h" ;no license, trivial
@@ -95,9 +93,6 @@
     "third_party/angle/src/third_party/compiler" ;BSD-2
     "third_party/angle/src/third_party/libXNVCtrl" ;Expat
     "third_party/angle/src/third_party/trace_event" ;BSD-3
-    "third_party/angle/third_party/glslang" ;BSD-3
-    "third_party/angle/third_party/spirv-headers" ;Expat
-    "third_party/angle/third_party/spirv-tools" ;Expat
     "third_party/angle/third_party/vulkan-headers" ;ASL2.0
     "third_party/angle/third_party/vulkan-loader" ;ASL2.0
     "third_party/angle/third_party/vulkan-tools" ;ASL2.0
@@ -125,9 +120,12 @@
     "third_party/crashpad/crashpad/third_party/zlib/zlib_crashpad.h" ;Zlib
     "third_party/crc32c" ;BSD-3
     "third_party/cros_system_api" ;BSD-3
+    "third_party/dav1d" ;BSD-2
     "third_party/dom_distiller_js" ;BSD-3
+    "third_party/emoji-segmenter" ;ASL2.0
     "third_party/fips181" ;BSD-3
     "third_party/flatbuffers" ;ASL2.0
+    "third_party/glslang" ;BSD-3, Expat, ASL2.0
     "third_party/google_input_tools" ;ASL2.0
     "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
     "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
@@ -206,6 +204,7 @@
     "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
     "third_party/zlib/google" ;BSD-3
     "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
+    "v8/src/third_party/siphash" ;Public domain
     "v8/src/third_party/utf8-decoder" ;Expat
     "v8/src/third_party/valgrind" ;BSD-4
     "v8/third_party/inspector_protocol" ;BSD-3
@@ -224,8 +223,9 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %chromium-version "72.0.3626.121")
-(define %ungoogled-revision "a80839c418de8843dfcd6c13a557f12d26a0a17a")
+(define %chromium-version "74.0.3729.131")
+(define %ungoogled-revision "9e33022f3ac7de2a12e3c7a7923799c9bbbf8194")
+(define %debian-revision "debian/74.0.3729.108-1")
 (define package-revision "0")
 
 (define %package-version (string-append %chromium-version "-"
@@ -233,29 +233,43 @@ from forcing GEXP-PROMISE."
                                         (string-take %ungoogled-revision 7)))
 
 ;; This is a "computed" origin that does the following:
-;; 1) Runs the Ungoogled scripts on a pristine Chromium tarball.
-;; 2) Prunes all third_party folders that are not explicitly preserved.
-;; 3) Adjusts "GN" build files such that system libraries are preferred.
+;; *) Runs the Ungoogled scripts on a pristine Chromium tarball.
+;; *) Applies Debians Chromium patches, for their unbundling and GCC work.
+;; *) Prunes all third_party directories that are not explicitly preserved.
+;; *) Adjusts "GN" build files such that system libraries are preferred.
 (define ungoogled-chromium-source
-  (let* ((chromium-source
-          (origin
-            (method url-fetch)
-            (uri (string-append "https://commondatastorage.googleapis.com"
-                                "/chromium-browser-official/chromium-"
-                                %chromium-version ".tar.xz"))
-            (sha256
-             (base32
-              "07xwmlvmzfga61nrimqmzl7s29jb4kc94nkzwwlb7sh6nr55a7jc"))))
-         (ungoogled-source
-          (origin
-            (method git-fetch)
-            (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
-                                (commit %ungoogled-revision)))
-            (file-name (git-file-name "ungoogled-chromium"
-                                      (string-take %ungoogled-revision 7)))
-            (sha256
-             (base32
-              "0rgirbxbgjdm3s2kzgj101rjq0clr7x2a7b37kfx2q629z4qlrpc")))))
+  (let ((chromium-source
+         (origin
+           (method url-fetch)
+           (uri (string-append "https://commondatastorage.googleapis.com"
+                               "/chromium-browser-official/chromium-"
+                               %chromium-version ".tar.xz"))
+           (sha256
+            (base32
+             "11m9mlzrqzmz7rhl0ff7lry2s4yjrdkfi36qfv48m1cg5y2cfy6i"))))
+        (ungoogled-source
+         (origin
+           (method git-fetch)
+           (uri (git-reference (url "https://github.com/Eloston/ungoogled-chromium")
+                               (commit %ungoogled-revision)))
+           (file-name (git-file-name "ungoogled-chromium"
+                                     (string-take %ungoogled-revision 7)))
+           (sha256
+            (base32
+             "08whx582p3a2nivkj7kwin09a8acybr00z6344smb9xjlxy9rkp4"))))
+        (debian-source
+         (origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://salsa.debian.org/chromium-team/chromium.git")
+                 (commit %debian-revision)))
+           (file-name (git-file-name "debian-chromium-packaging"
+                                     (if (string-prefix? "debian/" %debian-revision)
+                                         (cadr (string-split %debian-revision #\/))
+                                         (string-take %debian-revision 7))))
+           (sha256
+            (base32
+             "1bn0c86sxkkxgdz0i88y0zh4zr39l6379r2rhgk3b3qbvwz25s3j")))))
 
     (origin
       (method computed-origin-method)
@@ -265,7 +279,10 @@ from forcing GEXP-PROMISE."
        (delay
          (with-imported-modules '((guix build utils))
            #~(begin
-               (use-modules (guix build utils))
+               (use-modules (guix build utils)
+                            (ice-9 rdelim)
+                            (srfi srfi-1)
+                            (srfi srfi-26))
                (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
                      (preserved-files (list #$@%preserved-third-party-files)))
 
@@ -281,41 +298,62 @@ from forcing GEXP-PROMISE."
 
                  (with-directory-excursion "/tmp/ungoogled"
 
-                   ;; Create a custom "bundle" that inherits from linux_rooted
-                   ;; and adds an additional patch.
-                   (format #t "Creating Guix config bundle...~%")
-                   (force-output)
-                   (mkdir-p "config_bundles/guix")
-                   (call-with-output-file "config_bundles/guix/bundlemeta.ini"
-                     (lambda (port)
-                       (format port
-                               "[bundle]
-display_name = GNU Guix
-depends = linux_rooted\n")))
-                   (call-with-output-file "config_bundles/guix/patch_order.list"
-                     (lambda (port)
-                       (format port "debian_buster/system/openjpeg.patch\n")))
-
                    (format #t "Unpacking chromium tarball...~%")
                    (force-output)
                    (invoke "tar" "xf" #+chromium-source)
 
                    (format #t "Ungooglifying...~%")
                    (force-output)
-                   (invoke "python3" "run_buildkit_cli.py" "prune"
-                           "-b" "config_bundles/guix" chromium-dir)
-                   (invoke "python3" "run_buildkit_cli.py" "patches" "apply"
-                           "-b" "config_bundles/guix" chromium-dir)
-                   (invoke "python3" "run_buildkit_cli.py" "domains" "apply"
-                           "-b" "config_bundles/linux_rooted"
+                   (invoke "python3" "utils/prune_binaries.py" chromium-dir
+                           "pruning.list")
+                   (invoke "python3" "utils/patches.py" "apply"
+                           chromium-dir "patches")
+                   (invoke "python3" "utils/domain_substitution.py" "apply" "-r"
+                           "domain_regex.list" "-f" "domain_substitution.list"
                            "-c" "/tmp/domainscache.tar.gz" chromium-dir)
 
                    (with-directory-excursion chromium-dir
+
+                     (format #t "applying Debian patches...~%")
+                     (force-output)
+                     (let* ((debian  #+debian-source)
+                            (patches (string-append debian "/debian/patches"))
+                            (series  (string-append patches "/series"))
+                            (grep-q (lambda (query file)
+                                      (with-input-from-file file
+                                        (lambda ()
+                                          (let loop ((line (read-line))
+                                                     (match #f))
+                                            (if (or match (eof-object? line))
+                                                (if match #t #f)
+                                                (loop (read-line)
+                                                      (string-contains line query)))))))))
+                       (with-input-from-file series
+                         (lambda ()
+                           (let loop ((line (read-line)))
+                             (unless (eof-object? line)
+                               (when (and (> (string-length line) 1)
+                                          ;; Skip the Debian-specific ones.
+                                          (not (string-prefix? "debianization/" line))
+                                          (not (string-prefix? "gcc6/" line))
+                                          ;; And those that conflict with Ungoogled.
+                                          (not (any (cute string-suffix? <> line)
+                                                    '("widevine-buildflag.patch"
+                                                      "signin.patch"
+                                                      "third-party-cookies.patch")))
+                                          ;; Ungoogled includes a subset of the Debian
+                                          ;; patches.  Exclude those already present.
+                                          (not (grep-q line "../patches/series")))
+                                 (invoke "patch" "--force" "-p1" "--input"
+                                         (string-append patches "/" line)
+                                         "--no-backup-if-mismatch"))
+                               (loop (read-line)))))))
+
                      (format #t "Pruning third party files...~%")
                      (force-output)
                      (apply invoke "python"
-                             "build/linux/unbundle/remove_bundled_libraries.py"
-                             "--do-remove" preserved-files)
+                            "build/linux/unbundle/remove_bundled_libraries.py"
+                            "--do-remove" preserved-files)
 
                      (format #t "Replacing GN files...~%")
                      (force-output)
@@ -421,13 +459,19 @@ depends = linux_rooted\n")))
              "use_system_lcms2=true"
              "use_system_libdrm=true"
              "use_system_libjpeg=true"
+             "use_system_libopenjpeg2=true"
              "use_system_libpng=true"
              "use_system_zlib=true"
              "use_gnome_keyring=false"  ;deprecated by libsecret
              "use_openh264=true"
              "use_pulseaudio=true"
              "link_pulseaudio=true"
-             "use_vaapi=true"
+
+             ;; VA-API acceleration is currently only supported on x86_64-linux.
+             ,@(if (string-prefix? "x86_64" (or (%current-target-system)
+                                                (%current-system)))
+                   '("use_vaapi=true")
+                   '())
 
              ;; Don't arbitrarily restrict formats supported by system ffmpeg.
              "proprietary_codecs=true"
@@ -502,12 +546,13 @@ depends = linux_rooted\n")))
              (substitute* "third_party/webrtc/rtc_base/strings/json.h"
                (("#include \"third_party/jsoncpp/") "#include \"json/"))
 
-             (substitute* "media/base/decode_capabilities.cc"
-               (("third_party/libvpx/source/libvpx/") ""))
-
-             (substitute* "ui/gfx/skia_util.h"
+             (substitute* '("ui/gfx/skia_util.h"
+                            "components/viz/common/resources/resource_format_utils.h")
                (("third_party/vulkan/include/") ""))
 
+             (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
+               (("\\.\\./\\.\\./include/third_party/vulkan/") ""))
+
              ;; Building chromedriver embeds some files using the ZIP
              ;; format which doesn't support timestamps before
              ;; 1980. Therefore, advance the timestamps of the files
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index a76867f426..c7a1645fd1 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2449,7 +2449,7 @@ COREUTILS-FINAL vs. COREUTILS, etc."
     (description
      "This package provides a complete GCC tool chain for C/C++ development to
 be installed in user profiles.  This includes GCC, as well as libc (headers
-and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
+and binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
     (home-page "https://gcc.gnu.org/")
     (outputs '("out" "debug" "static"))
 
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 7412b97aef..4324ac4d96 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -158,8 +158,8 @@ the @code{zlib} source.")
    (home-page "https://savannah.nongnu.org/projects/fastjar")
    (synopsis "Replacement for Sun's 'jar' utility")
    (description
-    "FastJar is an attempt to create a much faster replacement for Sun's 'jar'
-utility.  Instead of being written in Java, FastJar is written in C.")
+    "FastJar is an attempt to create a much faster replacement for Sun's
+@code{jar} utility.  Instead of being written in Java, FastJar is written in C.")
    (license license:gpl2+)))
 
 (define-public libtar
diff --git a/gnu/packages/conky.scm b/gnu/packages/conky.scm
index c3b72ea063..2b32bf8791 100644
--- a/gnu/packages/conky.scm
+++ b/gnu/packages/conky.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -37,16 +37,16 @@
   (package
     (name "conky")
     (home-page "https://github.com/brndnmtthws/conky")
-    (version "1.11.2")
+    (version "1.11.3")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url home-page)
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0yalcpwx85smh6nnvxxsgqi344nk7jzlkkam7yjghm87df4v7xmx"))))
+        (base32 "0pdl31xvmy8niagzqx9sd2b6hc6lzwfiaz66m4djf1gz9bksc8qv"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; there are no tests
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 1290dd010d..39262b87da 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,15 +44,14 @@
 (define-public connman
   (package
     (name "connman")
-    (version "1.36")
+    (version "1.37")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kernel.org/linux/network/connman/"
-                            name "-" version ".tar.xz"))
+                            "connman-" version ".tar.xz"))
     (sha256
-     (base32
-      "0x00dq5c2frz06md3g5y0jh5kbcj2hrfl5qjcqga8gs4ri0xp2f7"))))
+     (base32 "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -63,8 +62,6 @@
              "--enable-vpnc"
              "--enable-pptp"
              "--enable-l2tp"
-             ;; location for daemon state files and internal configuration
-             ;; needs to be writeable
              "--localstatedir=/var"
              (string-append
               "--with-dbusconfdir=" (assoc-ref %outputs "out") "/etc")
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 4e8f12248f..e0af0dd1a9 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -72,16 +72,14 @@ operating system functions.")
 
 (define-public rct
   (let* ((commit "b3e6f41d9844ef64420e628e0c65ed98278a843a")
-         (revision "2")
-         (version (git-version "0.0.0" revision commit)))
+         (revision "2"))
     (package
       (name "rct")
-      (version version)
-      (home-page "https://github.com/Andersbakken/rct")
+      (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url home-page)
+                      (url "https://github.com/Andersbakken/rct")
                       (commit commit)))
                 (sha256
                  (base32
@@ -99,6 +97,7 @@ operating system functions.")
       (inputs
        `(("openssl" ,openssl)
          ("zlib" ,zlib)))
+      (home-page "https://github.com/Andersbakken/rct")
       (synopsis "C++ library providing Qt-like APIs on top of the STL")
       (description "Rct is a set of C++ tools that provide nicer (more Qt-like)
  APIs on top of Standard Template Library (@dfn{STL}) classes.")
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 5a3762fd7a..3942c2fb0c 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -40,19 +40,24 @@
   #:use-module (guix build-system r)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages graph)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages javascript)
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages machine-learning)
@@ -60,6 +65,7 @@
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -72,14 +78,14 @@
 (define-public r-clipr
   (package
     (name "r-clipr")
-    (version "0.5.0")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "clipr" version))
        (sha256
         (base32
-         "1grx0lyww1cxmdvsr44wmbhz9i6zmiwxbchb97gxrfi9gy5kyc7x"))))
+         "0k9kimkmmj9k7290sxiqn4kd1vvm4w7q9a44wp0w30b7yjpavx2m"))))
     (build-system r-build-system)
     (home-page "https://github.com/mdlincoln/clipr")
     (synopsis "Read and write from the system clipboard")
@@ -113,14 +119,14 @@ are not used.")
 (define-public r-sys
   (package
     (name "r-sys")
-    (version "3.1")
+    (version "3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sys" version))
        (sha256
         (base32
-         "0aj3wcyah3r7c9s3rbs0c8nifd4vqmkzg9fqkrb7f838ww0qw24q"))))
+         "1k5vk5q9wa5sin0n226i05nymg469s24f6lx64yyhb7yc624j698"))))
     (build-system r-build-system)
     (home-page "https://github.com/jeroen/sys")
     (synopsis "Powerful and reliable tools for running system commands in R")
@@ -236,14 +242,14 @@ single step.")
 (define-public r-rvest
   (package
     (name "r-rvest")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rvest" version))
        (sha256
         (base32
-         "04mv99z8dixywx96kfy4215g6ib23s7qvd77hcf9pxqxzcvqhvhd"))))
+         "0vsm38w83zf0djcrc5ymb1ysg88hmgq2w937ql7pqgvk5px8f2mi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-httr" ,r-httr)
@@ -394,13 +400,13 @@ into a pipeline of data manipulation and visualisation.")
 (define-public r-httpuv
   (package
     (name "r-httpuv")
-    (version "1.5.0")
+    (version "1.5.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "httpuv" version))
               (sha256
                (base32
-                "19m9514yj5sg0rz1zvi8w1z98srnrql4iirgr794fkaap6bs7i2f"))))
+                "042piypg4c8sqrlcdl3dwajkafkbglsky3x7d0jpjv8s5wxnpfxm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -786,14 +792,14 @@ application framework for R, making it easy to create attractive dashboards.")
 (define-public r-shinyfiles
   (package
     (name "r-shinyfiles")
-    (version "0.7.2")
+    (version "0.7.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "shinyFiles" version))
        (sha256
         (base32
-         "0dlcjrw96x72grg6j915070x8x98l7629pn86gf148iknflm7gd5"))))
+         "01as3l9ffj5dwac0vviais2x5l3027zxlj67kcvkdwxaj5hql33i"))))
     (properties `((upstream-name . "shinyFiles")))
     (build-system r-build-system)
     (propagated-inputs
@@ -889,14 +895,14 @@ work well on small screens.")
 (define-public r-feather
   (package
     (name "r-feather")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "feather" version))
        (sha256
         (base32
-         "138vnlwhkwayyim4rbx6rnf91kzhfij6v2f91ppx2174ky5611h6"))))
+         "0ls8lmygyjq60467s88h66d7fczjp1d3a2106rfq4dx9lyfvdfsa"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-hms" ,r-hms)
@@ -923,8 +929,8 @@ data store designed for maximum speed.")
     (home-page "https://cran.r-project.org/web/packages/maps")
     (synopsis "Draw geographical maps")
     (description "This package provides an R module for display of maps.
-Projection code and larger maps are in separate packages ('mapproj' and
-'mapdata').")
+Projection code and larger maps are in separate packages (@code{mapproj} and
+@code{mapdata}).")
     (license license:gpl2)))
 
 (define-public r-mapproj
@@ -1218,14 +1224,14 @@ error stream.")
 (define-public r-pls
   (package
     (name "r-pls")
-    (version "2.7-0")
+    (version "2.7-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pls" version))
        (sha256
         (base32
-         "0xaqqgmdvfh7g7v1m4bcwjqzph68b9cq3bn4kjisfsadl54i5p2x"))))
+         "0jw3zl5z06023zxr74phnvwax8m3i4a4i6lsqiq6j15aq9zq3zgq"))))
     (build-system r-build-system)
     (home-page "http://mevik.net/work/software/pls.html")
     (synopsis "Partial Least Squares and Principal Component Regression")
@@ -1345,9 +1351,9 @@ a seamless integration of R and C++.  Many R data types and objects can be
 mapped back and forth to C++ equivalents which facilitates both writing of new
 code as well as easier integration of third-party libraries.  Documentation
 about Rcpp is provided by several vignettes included in this package, via the
-'Rcpp Gallery' site at <http://gallery.rcpp.org>, the paper by Eddelbuettel
+@code{Rcpp Gallery} site at <http://gallery.rcpp.org>, the paper by Eddelbuettel
 and Francois (2011, JSS), and the book by Eddelbuettel (2013, Springer); see
-'citation(\"Rcpp\")' for details on these last two.")
+@code{citation(\"Rcpp\")} for details on these last two.")
     (license license:gpl2+)))
 
 (define-public r-bindr
@@ -1479,14 +1485,14 @@ validation and filtering on the values, making options invisible or private.")
 (define-public r-circlize
   (package
     (name "r-circlize")
-    (version "0.4.5")
+    (version "0.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "circlize" version))
        (sha256
         (base32
-         "0qhn9jzw7gd0jp9rmqrlbmy5ql6hjsa68pkp0acfz1h215dl8ah9"))))
+         "1yjnb88pnzk5c1p0vjxykc7cr3394ln5axviqcf12ajibvy8rj6f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-colorspace" ,r-colorspace)
@@ -1899,14 +1905,14 @@ quantile mixture from L-moments and trimmed L-moments.")
 (define-public r-distillery
   (package
     (name "r-distillery")
-    (version "1.0-4")
+    (version "1.0-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "distillery" version))
        (sha256
         (base32
-         "1m0pgmlvk7bsb6q3kxagnq422babk61sf73naavac68v8x2q8fix"))))
+         "1mi3ig9jq0kd7yrwc5m37lmrw04p1b4lirnbsxi10z3n5yay4429"))))
     (build-system r-build-system)
     (home-page "http://www.ral.ucar.edu/staff/ericg")
     (synopsis "Functions for confidence intervals and object information")
@@ -1920,19 +1926,18 @@ SpatialVx.")
 (define-public r-extremes
   (package
     (name "r-extremes")
-    (version "2.0-9")
+    (version "2.0-10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "extRemes" version))
        (sha256
         (base32
-         "0cpvcajk9xyy7662nqkyx333vrxpwsc5nmv0bfnhsbgijz5y0hvm"))))
+         "08fj72gpq2d6695hbm3cgwgal64z009ykrirby7g6r0akfcsx5ic"))))
     (properties `((upstream-name . "extRemes")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-car" ,r-car)
-       ("r-distillery" ,r-distillery)
+     `(("r-distillery" ,r-distillery)
        ("r-lmoments" ,r-lmoments)))
     (home-page "http://www.assessment.ucar.edu/toolkit/")
     (synopsis "Extreme value analysis")
@@ -1945,14 +1950,14 @@ or excesses over a high threshold.")
 (define-public r-lmtest
   (package
     (name "r-lmtest")
-    (version "0.9-36")
+    (version "0.9-37")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lmtest" version))
        (sha256
         (base32
-         "0sym9sm1vl6bbgq01jhz1plxqmgh8hrgrn7rw0mwvsalcn6id7xy"))))
+         "02nasm0j2vwkhz11dxqixs23msy1s3yj0jps6949fmgh9gwjkjfx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-zoo" ,r-zoo)))
@@ -2476,20 +2481,20 @@ to access PostgreSQL database systems.")
 (define-public r-geometry
   (package
     (name "r-geometry")
-    (version "0.4.0")
+    (version "0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "geometry" version))
        (sha256
         (base32
-         "0lpih1a93jz021krdv78zf6fq95g8i0xw4r9aj5gq36a0vzc3i0y"))))
+         "0v3ivaw8vbjyxg08dd573qk3kqfyknj5hli9503dza6p6xz0dzmm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magic" ,r-magic)
        ("r-lpsolve" ,r-lpsolve)
        ("r-rcpp" ,r-rcpp)
-       ("r-cppprogress" ,r-rcppprogress)))
+       ("r-rcppprogress" ,r-rcppprogress)))
     (home-page "http://geometry.r-forge.r-project.org/")
     (synopsis "Mesh generation and surface tesselation")
     (description
@@ -2510,14 +2515,14 @@ Delaunay triangulation and convex hull computation.")
 (define-public r-ddalpha
   (package
     (name "r-ddalpha")
-    (version "1.3.8")
+    (version "1.3.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ddalpha" version))
        (sha256
         (base32
-         "0gi0hl14ghgf65zxsvgzh9z6xx1nyi49cpx192lmwrwqn3dy7ba0"))))
+         "1vzs0cvl6xw3h9i00rg3hs02xwgxcnh8326y10kxmhs3qq4m7nb2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -2588,14 +2593,14 @@ provided.")
 (define-public r-ipred
   (package
     (name "r-ipred")
-    (version "0.9-8")
+    (version "0.9-9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ipred" version))
        (sha256
         (base32
-         "01xcg3c121ndfpz9dirqxszknh4yb1p222p7f1wbwwhdrg1i27cw"))))
+         "0vs1hqfx7yd0xdbmfsf2gim7spkni0845cj6gswn0nhdfdq7ma0d"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -2669,14 +2674,14 @@ by base R methods related to model fitting.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "0bmf38yvwalqf5j5yrr48nsk5k3n75s0gwcw621hp5lgrgvnp7ns"))))
+         "0qmclih5dm5sqzy4hplcfy677kr12pm9pnpv3r319g14dd27pbqn"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
@@ -2862,14 +2867,14 @@ with the package @code{optim}.")
 (define-public r-ordinal
   (package
     (name "r-ordinal")
-    (version "2019.3-9")
+    (version "2019.4-25")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ordinal" version))
        (sha256
         (base32
-         "0xsr2715ghh1q5hjnx7d8lyavzfvpi370blm1xdljn3p4kar8ldi"))))
+         "1pvrkly4x12w32n7w1qljdwzqnlkv7rfa7rx0nz5vbiw29xas4i8"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -3045,14 +3050,14 @@ programming} (SQP) based solver).")
 (define-public r-hardyweinberg
   (package
     (name "r-hardyweinberg")
-    (version "1.6.1")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "HardyWeinberg" version))
        (sha256
         (base32
-         "16n8qanxx0p5ny5zqxafn8hwb1xv94y1wig1iql8as5a5qh8lwcz"))))
+         "15i7b444hikkfgqmx2ki827998xwra38k9v7a7kavwz6zmq5mmv9"))))
     (properties `((upstream-name . "HardyWeinberg")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3312,14 +3317,14 @@ normalizations, minimum variance matching, and so on.")
 (define-public r-sdmtools
   (package
     (name "r-sdmtools")
-    (version "1.1-221")
+    (version "1.1-221.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "SDMTools" version))
        (sha256
         (base32
-         "1kacrpamshv7wz83yn45sfbw4m9c44xrrngzcklnwx8gcxx2knm6"))))
+         "1fsgnlc7glawimzijp11j53g5bnfp1mdq9wb0754idmxcdi8a99q"))))
     (properties `((upstream-name . "SDMTools")))
     (build-system r-build-system)
     (propagated-inputs `(("r-r-utils" ,r-r-utils)))
@@ -3612,14 +3617,14 @@ iVAT).")
 (define-public r-xfun
   (package
     (name "r-xfun")
-    (version "0.5")
+    (version "0.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xfun" version))
        (sha256
         (base32
-         "1wkrapc490r9l9z6mz623zn9ijq64mckc17xg2s7n3s9yaxj98lb"))))
+         "123wmnykmlq9prqx1g9ij9vyqx25pib2jnqjrwy39rfmzbsypbx3"))))
     (build-system r-build-system)
     (home-page "https://github.com/yihui/xfun")
     (synopsis "Miscellaneous functions")
@@ -3696,14 +3701,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.11")
+    (version "0.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "017g0niwmx8qafsn9b01gp60j5fgwxch0dnkmjgpxxr1k4h1r64x"))))
+         "03ggxbd4y1ipcmjw5ixa6g6wg4ydargnln7g08bdrdi96zyyq1fh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -3745,14 +3750,14 @@ published results; and a routine for graphical display.")
 (define-public r-network
   (package
     (name "r-network")
-    (version "1.14-377")
+    (version "1.15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "network" version))
        (sha256
         (base32
-         "0iiy5n17kysrdfs20zr7qald4lwkvws0axi1qkr8f7vzv7w04g01"))))
+         "1cscw5978fyixhkicf06c4b2g1yf6gyi8vx86cz3dy75d41mrgjw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magrittr" ,r-magrittr)
@@ -3944,14 +3949,14 @@ Fisher's method), and Sidak correction.")
 (define-public r-quantmod
   (package
     (name "r-quantmod")
-    (version "0.4-13")
+    (version "0.4-14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantmod" version))
        (sha256
         (base32
-         "16aldg96z7amp5mr90nb8127yy04gxsihfr26km5p3cx3j117yv0"))))
+         "1csljagnpkr1mmc18h70b64zbyj07kx972nip9dng39jfg7ilnyr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-curl" ,r-curl)
@@ -5176,14 +5181,14 @@ obtain a better initial configuration in non-metric MDS.")
 (define-public r-reticulate
   (package
     (name "r-reticulate")
-    (version "1.11.1")
+    (version "1.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reticulate" version))
        (sha256
         (base32
-         "1cyb92dvv9iibsk28i0gm5hm2xqbsn0y6d67id74c8rhai9y8i9v"))))
+         "0pqr1rcs8yg9nlh729mvlws93cqhpmv49j9bcgarh7vxzkwyv0kb"))))
     (build-system r-build-system)
     (inputs `(("python" ,python)))
     (propagated-inputs
@@ -5484,14 +5489,14 @@ results to the user.")
 (define-public r-hdf5r
   (package
     (name "r-hdf5r")
-    (version "1.0.1")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "hdf5r" version))
        (sha256
         (base32
-         "0h222q80li8rs3cv4c5lvv3g91ygd51w43ay6fwyk9q9d315vwrj"))))
+         "10gynjwaaxks8y9c2fl8k040j0nbwn372nil70009yfk9wrkx0aq"))))
     (build-system r-build-system)
     (inputs
      `(("hdf5" ,hdf5)
@@ -5534,14 +5539,14 @@ patterned after functions in the snow package.")
 (define-public r-polynom
   (package
     (name "r-polynom")
-    (version "1.3-9")
+    (version "1.4-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "polynom" version))
        (sha256
         (base32
-         "1s4xxv5rvpigawknvq27v9vzvs83phfsj5h8mim2lmf5bj950nnk"))))
+         "1pflscwc0qzdf0y60j7s0dkglgmz18xajywfbn6s263idyr8idy5"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/polynom/")
     (synopsis "Functions for univariate polynomial manipulations")
@@ -5600,14 +5605,14 @@ hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.")
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "0.10-1")
+    (version "0.11-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "0bbjnw88h54v40hzim00i8yd3p4rk9i84zfdmgcbnylscwvsf0av"))))
+         "11cd27s6zp5cxnwxcvz6rjf00y0r7aq8ywhzwpf1r4xy1z44kd4g"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5627,14 +5632,14 @@ references and Rd files.")
 (define-public r-officer
   (package
     (name "r-officer")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "officer" version))
        (sha256
         (base32
-         "1ggdp8pbspn24sjshx1h48klivrx401vwk2df49j4wpwxh6dx26y"))))
+         "1m4b3mcn5j5q3nq0jp1nranh4rdb8vxcpabn6ryqk9m6709fvhjz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -5815,14 +5820,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.1.2")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "0cy00j4m9r690hrjdmv8wzwn8mbnkjd3g527nvsmid64h9jgks5f"))))
+         "0fn9cd5qxqlpjv3d05mk66k5z5ll60x5la51mby5h7k4l6bqmsiz"))))
     (build-system r-build-system)
     (home-page "https://easystats.github.io/insight/")
     (synopsis "Easy access to model information for various model objects")
@@ -5947,21 +5952,21 @@ functions.")
 (define-public r-flextable
   (package
     (name "r-flextable")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flextable" version))
        (sha256
         (base32
-         "0arxgal67ahsq8v0zbvc767qadn7lg3f7mmqa9gjjz6sri0y6gsx"))))
+         "0sabdvkdlx5i1nr7nz68cappwsibzsjxpmiz3yp948ckbfmkdb27"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-data-table" ,r-data-table)
+     `(("r-base64enc" ,r-base64enc)
+       ("r-data-table" ,r-data-table)
        ("r-gdtools" ,r-gdtools)
        ("r-htmltools" ,r-htmltools)
        ("r-knitr" ,r-knitr)
-       ("r-magick" ,r-magick)
        ("r-officer" ,r-officer)
        ("r-rlang" ,r-rlang)
        ("r-rmarkdown" ,r-rmarkdown)
@@ -6054,14 +6059,14 @@ Venn diagram, heatmap).")
 (define-public r-getopt
   (package
     (name "r-getopt")
-    (version "1.20.2")
+    (version "1.20.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "getopt" version))
        (sha256
         (base32
-         "13p35lbpy7i578752fa71sbfvcsqw5qfa9p6kf8b5m3c5p9i4v1x"))))
+         "0zzmzgwl9a4y3s34600vmih22d6y32294f9bvxrnmffnvkgmy7sk"))))
     (build-system r-build-system)
     (home-page "https://github.com/trevorld/getopt")
     (synopsis "Command-line option processor for R")
@@ -7188,6 +7193,26 @@ replicating the evaluation as many times as specified, and returning the results
 conveniently wrapped into a data frame.")
     (license license:gpl2+)))
 
+(define-public r-mitools
+  (package
+    (name "r-mitools")
+    (version "2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "mitools" version))
+       (sha256
+        (base32
+         "0c2x2n1p53lcw0vx4vmy5j7m2f95i7g2iwbryl89imr99rvz617j"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-dbi" ,r-dbi)))
+    (home-page "https://cran.r-project.org/web/packages/mitools/")
+    (synopsis "Tools for multiple imputation of missing data")
+    (description
+     "This package provides tools to perform analyses and combine results from
+multiple-imputation datasets.")
+    (license license:gpl2)))
+
 (define-public r-magick
   (package
     (name "r-magick")
@@ -7224,19 +7249,20 @@ console, resulting in an interactive editing environment.")
 (define-public r-survey
   (package
     (name "r-survey")
-    (version "3.35-1")
+    (version "3.36")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "survey" version))
        (sha256
         (base32
-         "1nv4sdfmidvyjgvp3zvn5iw35bb8w0v7095is2pdy8cckkgdvr8i"))))
+         "0xclsy4ram4k48vzh5m5bpmknnpwxnss85v73s4czsjj5ffjxwwh"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)
        ("r-matrix" ,r-matrix)
        ("r-minqa" ,r-minqa)
+       ("r-mitools" ,r-mitools)
        ("r-numderiv" ,r-numderiv)
        ("r-survival" ,r-survival)))
     (home-page "http://r-survey.r-forge.r-project.org/survey/")
@@ -7506,14 +7532,14 @@ observation.")
 (define-public r-sandwich
   (package
     (name "r-sandwich")
-    (version "2.5-0")
+    (version "2.5-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sandwich" version))
        (sha256
         (base32
-         "168kq5kk34xbhfsxsanard9zriyp6cw0s09ralzb57kk42pl9hbc"))))
+         "1mk685b9wq7k566pbml52rj96i5h6b3vf215k9picgmq296nzvyv"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-zoo" ,r-zoo)))
@@ -7579,14 +7605,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.3.3")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "1hpal1vq6gryzvgfvv9f328idg0mgjvlfnhaj069dhb7zqfwhzlk"))))
+         "09gxphan34c615y4lhjdqkg5cz4ih9b1r3bb4chs3mwmiav1rxqn"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -7804,6 +7830,58 @@ Laplace approximation.  Gradients are calculated using automatic
 differentiation.")
     (license license:agpl3+)))
 
+(define-public r-bayestestr
+  (package
+    (name "r-bayestestr")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "bayestestR" version))
+       (sha256
+        (base32
+         "1m6gj55z3shm3m3mgqj8nk73wij67y617sl04rbj400wz9qrhfva"))))
+    (properties `((upstream-name . "bayestestR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-insight" ,r-insight)))
+    (home-page "https://github.com/easystats/bayestestR")
+    (synopsis "Describe Bayesian models and posterior distributions")
+    (description
+     "This package provides utilities to understand and describe posterior
+distributions and Bayesian models.  It includes point-estimates such as
+@dfn{Maximum A Posteriori} (MAP), measures of dispersion such as @dfn{Highest
+Density Interval} (HDI), and indices used for null-hypothesis testing (such as
+ROPE percentage and pd).")
+    (license license:gpl3)))
+
+(define-public r-performance
+  (package
+    (name "r-performance")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "performance" version))
+       (sha256
+        (base32
+         "19lfx25hkavzbycrh6hq4v24a0dz4s60ryq6jyihjlxgrb9g7cnw"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bayestestr" ,r-bayestestr)
+       ("r-insight" ,r-insight)))
+    (home-page "https://easystats.github.io/performance/")
+    (synopsis "Assessment of regression models performance")
+    (description
+     "This package provides utilities for computing measures to assess model
+quality, which are not directly provided by R's @code{base} or @code{stats}
+packages.  These include e.g. measures like r-squared, intraclass correlation
+coefficient, root mean squared error or functions to check models for
+overdispersion, singularity or zero-inflation and more.  Functions apply to a
+large variety of regression models, including generalized linear models, mixed
+effects models and Bayesian models.")
+    (license license:gpl3)))
+
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
@@ -7841,29 +7919,32 @@ results using @code{ggplot2}.")
 (define-public r-sjplot
   (package
     (name "r-sjplot")
-    (version "2.6.2")
+    (version "2.6.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjPlot" version))
        (sha256
         (base32
-         "0x9pbchmz4qf4c9bi52dhhgv1phfj03q1hnxic8vndl6xwib63cy"))))
+         "0h1mkmp5mrkbf7y3zh6m4cnm737cpg1m5si0lrmal7j2ixqicwjy"))))
     (properties `((upstream-name . "sjPlot")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-broom" ,r-broom)
+     `(("r-bayestestr" ,r-bayestestr)
+       ("r-broom" ,r-broom)
        ("r-dplyr" ,r-dplyr)
        ("r-forcats" ,r-forcats)
        ("r-ggeffects" ,r-ggeffects)
        ("r-ggplot2" ,r-ggplot2)
        ("r-glmmtmb" ,r-glmmtmb)
+       ("r-insight" ,r-insight)
        ("r-knitr" ,r-knitr)
        ("r-lme4" ,r-lme4)
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-modelr" ,r-modelr)
        ("r-nlme" ,r-nlme)
+       ("r-performance" ,r-performance)
        ("r-psych" ,r-psych)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
@@ -7974,14 +8055,14 @@ terminals that do not support Unicode.")
 (define-public r-usethis
   (package
     (name "r-usethis")
-    (version "1.4.0")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "usethis" version))
        (sha256
         (base32
-         "1gadckx3sxz9gxvpkprj9x7zcgg2nz5m4q0vi76ya9li1v03rwwn"))))
+         "0pn6ka3726psaqlx573g6nxi90apf0rn5m4k2lz1jr66xdc19sag"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-clipr" ,r-clipr)
@@ -7993,10 +8074,13 @@ terminals that do not support Unicode.")
        ("r-gh" ,r-gh)
        ("r-git2r" ,r-git2r)
        ("r-glue" ,r-glue)
+       ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
        ("r-rprojroot" ,r-rprojroot)
        ("r-rstudioapi" ,r-rstudioapi)
-       ("r-whisker" ,r-whisker)))
+       ("r-whisker" ,r-whisker)
+       ("r-withr" ,r-withr)
+       ("r-yaml" ,r-yaml)))
     (home-page "https://github.com/r-lib/usethis")
     (synopsis "Automate R package and project setup")
     (description
@@ -8032,14 +8116,14 @@ more information about packages, and where they were installed from.")
 (define-public r-remotes
   (package
     (name "r-remotes")
-    (version "2.0.2")
+    (version "2.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "remotes" version))
        (sha256
         (base32
-         "0rsjxmhwpr51ilsdjfqn06mj8yr2d7nckcn3arv1ljn23qfkpcxa"))))
+         "1jbn4kjimcr82zv5lnqxqa2487a96vn6jxf7wc6gnpxr6k06d61p"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/remotes#readme")
     (synopsis "R package installation from remote repositories")
@@ -8156,14 +8240,14 @@ ways.")
 (define-public r-summarytools
   (package
     (name "r-summarytools")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "summarytools" version))
        (sha256
         (base32
-         "1q83kii6prqf9z5v8cxj1q2944kx9x7dcxyqix3m883a94dmgivy"))))
+         "1wfbkgvicaic37zgpr6zcm4a58yx43p59h0sqggdj44ncqs7147f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
@@ -8176,6 +8260,7 @@ ways.")
        ("r-pryr" ,r-pryr)
        ("r-rapportools" ,r-rapportools)
        ("r-rcurl" ,r-rcurl)
+       ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)))
     (home-page "https://github.com/dcomtois/summarytools")
     (synopsis "Tools to quickly and neatly summarize data")
@@ -8800,14 +8885,14 @@ parametrizations of Nolan.")
 (define-public r-gsl
   (package
     (name "r-gsl")
-    (version "2.1-5")
+    (version "2.1-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gsl" version))
        (sha256
         (base32
-         "18kzgwmyfqg570gn2b33fm6mj87fiaa4a3bx954yrj8iq28im71v"))))
+         "0p4rh7npp6qbfc5sxjq86xjn7c9ivf3pd60qf1hldwckjqin7m7m"))))
     (build-system r-build-system)
     (inputs
      `(("gsl" ,gsl)))
@@ -9206,14 +9291,14 @@ definiteness of a matrix.")
 (define-public r-rspectra
   (package
     (name "r-rspectra")
-    (version "0.13-1")
+    (version "0.14-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RSpectra" version))
        (sha256
         (base32
-         "1sw80chwyyjzf5px278l6xmp94yhwrlj5xh8d3wlw3dnvdkycca7"))))
+         "12w5vnz39gyciza0fl7fw4f9i9kjw763h3mvk1sxd97c5dsn26jg"))))
     (properties `((upstream-name . "RSpectra")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9302,14 +9387,14 @@ the first time as the statistic.")
 (define-public r-splitstackshape
   (package
     (name "r-splitstackshape")
-    (version "1.4.6")
+    (version "1.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "splitstackshape" version))
        (sha256
         (base32
-         "03w6h64ga4zqilffdway4l38l5cbman4yrspkzhbigds12aqz25r"))))
+         "0mpyf2kkfdl69pdc6brl1r6101vyc6pgr7z17s55ppg3y71k4q35"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)))
@@ -10258,14 +10343,14 @@ Differences with other sparse matrix packages are:
 (define-public r-fields
   (package
     (name "r-fields")
-    (version "9.6")
+    (version "9.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fields" version))
        (sha256
         (base32
-         "1v7z48a8jmdcil28rj8c3455k6rssr5v9qi6dyhhpbb193bj8121"))))
+         "0hsr6r0zyv8zqkfyd9fmjk6v901m2r8pmswvsmps6w5zvpi0p5kw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-maps" ,r-maps)
@@ -10613,14 +10698,14 @@ regression coefficients can be conducted via jackknifing.")
 (define-public r-huge
   (package
     (name "r-huge")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "huge" version))
        (sha256
         (base32
-         "06s22i2cdn6g2r8kq5csyspinayh8dxxg9gkwcf4sa1lmrgb0bf9"))))
+         "1j93gvi1jyq3ld9jhdqhrpm2is54rk3ilmf3yw7fx6gva0y6hjqd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)
@@ -11586,19 +11671,20 @@ compatible with @code{rzmq} are also provided.")
 (define-public r-repr
   (package
     (name "r-repr")
-    (version "0.19.2")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "repr" version))
        (sha256
         (base32
-         "1mhhzakkagb8z568yx3p2ixs8fcifm7f8l2yq285zrz8jmnpckfx"))))
+         "0j8z4sl67fgnbywkhgg0bns68mbgf9iqnw4qiym2rjy1b08fpclq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
        ("r-htmltools" ,r-htmltools)
-       ("r-jsonlite" ,r-jsonlite)))
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-pillar" ,r-pillar)))
     (home-page "https://cran.r-project.org/web/packages/repr/")
     (synopsis "Serializable representations")
     (description
@@ -11632,14 +11718,14 @@ running IRkernel session.")
 (define-public r-irkernel
   (package
     (name "r-irkernel")
-    (version "0.8.15")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "IRkernel" version))
        (sha256
         (base32
-         "1n0nc3paij8fgbp7l2b4405zk9k4y3gdi2bz6z8x6j0h5mi6k6a6"))))
+         "0i5gpis2g30zi96h9r9awbw4724xd6p4sv8y7shyfzgc4qccpizp"))))
     (properties `((upstream-name . "IRkernel")))
     (build-system r-build-system)
     (arguments
@@ -11801,14 +11887,14 @@ al. (2010).")
 (define-public r-reinforcelearn
   (package
     (name "r-reinforcelearn")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "reinforcelearn" version))
        (sha256
         (base32
-         "0naakmyb14d2cf7cy5ir52qh3bp51gvs6hyhfi3f72yl2jfnnpzg"))))
+         "176z2q69p24i29a8sh19xxn2zl3h1z2ixdssr5i6m4yvkvdrvv3b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
@@ -11823,3 +11909,2122 @@ 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)))
+
+(define-public r-lemon
+  (package
+    (name "r-lemon")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "lemon" version))
+       (sha256
+        (base32
+         "0wsn5bfg10wq4dnrgpyraz2bzx9p19c7hf1pwj3h4zmpqfgsdbpw"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-gtable" ,r-gtable)
+       ("r-knitr" ,r-knitr)
+       ("r-lattice" ,r-lattice)
+       ("r-plyr" ,r-plyr)
+       ("r-scales" ,r-scales)))
+    (home-page "https://github.com/stefanedwards/lemon")
+    (synopsis "Freshen up your ggplot2 plots")
+    (description
+     "This package provides functions for working with legends and axis lines
+of ggplot2, facets that repeat axis lines on all panels, and some knitr
+extensions.")
+    (license license:gpl3)))
+
+(define-public r-wgaim
+  (package
+    (name "r-wgaim")
+    (version "1.4-11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "wgaim" version))
+       (sha256
+        (base32
+         "1jjyp100dcjjczp61xlvhmy48ynniqcys535vzbgswhr7fvijymg"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lattice" ,r-lattice)
+       ("r-qtl" ,r-qtl)))
+    (home-page "https://cran.r-project.org/web/packages/wgaim")
+    (synopsis "Whole genome average interval mapping for QTL detection")
+    (description
+     "This package integrates sophisticated mixed modelling methods with a
+whole genome approach to detecting significant QTL in linkage maps.")
+    (license license:gpl2+)))
+
+(define-public r-bedr
+  (package
+    (name "r-bedr")
+    (version "1.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "bedr" version))
+       (sha256
+        (base32
+         "0zpqvyjgwyqawxm8qrhcv8zq2b3yxgcqkkc87br29yrl7sjb8h6j"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-r-utils" ,r-r-utils)
+       ("r-testthat" ,r-testthat)
+       ("r-venndiagram" ,r-venndiagram)
+       ("r-yaml" ,r-yaml)
+       ("bedops" ,bedops)
+       ("bedtools" ,bedtools)
+       ("htslib" ,htslib))) ; for tabix
+    (native-inputs
+     `(("r-knitr" ,r-knitr))) ; for vignettes
+    (home-page "https://cran.r-project.org/web/packages/bedr")
+    (synopsis "Genomic region processing")
+    (description
+     "This package is for genomic regions processing using command line tools
+such as BEDTools, BEDOPS and Tabix.  These tools offer scalable and efficient
+utilities to perform genome arithmetic e.g indexing, formatting and merging.
+The bedr package's API enhances access to these tools as well as offers
+additional utilities for genomic regions processing.")
+    (license license:gpl2)))
+
+(define-public r-partitions
+  (package
+    (name "r-partitions")
+    (version "1.9-19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "partitions" version))
+       (sha256
+        (base32
+         "1pklfnjdc094c8nzkqcdvqzdh8v3p5n8jbg4pf9678iw648saiyx"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-gmp" ,r-gmp)
+       ("r-polynom" ,r-polynom)))
+    (home-page "https://cran.r-project.org/web/packages/partitions")
+    (synopsis "Additive partitions of integers")
+    (description
+     "This package provides tools to enumerates the partitions, unequal
+partitions, and restricted partitions of an integer; the three corresponding
+partition functions are also given.")
+    ;; Any version of the GPL
+    (license license:gpl2+)))
+
+(define-public r-brobdingnag
+  (package
+    (name "r-brobdingnag")
+    (version "1.2-6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Brobdingnag" version))
+       (sha256
+        (base32
+         "1m3ajvcksqfck5l5hj5xiflj4ry6d896ybv4f0xxks8chgnwmv0r"))))
+    (properties `((upstream-name . "Brobdingnag")))
+    (build-system r-build-system)
+    (home-page "https://github.com/RobinHankin/Brobdingnag.git")
+    (synopsis "Very large numbers in R")
+    (description
+     "This package handles very large numbers in R.  Real numbers are held
+using their natural logarithms, plus a logical flag indicating sign.  The
+package includes a vignette that gives a step-by-step introduction to using S4
+methods.")
+    ;; Any version of the GPL
+    (license license:gpl2+)))
+
+(define-public r-untb
+  (package
+    (name "r-untb")
+    (version "1.7-4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "untb" version))
+       (sha256
+        (base32
+         "1i7m4vfslsix98dwx4jlrsldm7fhhfp25gr7aapcxqxms7ryaby6"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-brobdingnag" ,r-brobdingnag)
+       ("r-partitions" ,r-partitions)
+       ("r-polynom" ,r-polynom)))
+    (home-page "https://github.com/RobinHankin/untb.git")
+    (synopsis "Ecological drift under the UNTB")
+    (description
+     "This package provides numerical simulations, and visualizations, of
+Hubbell's @dfn{Unified Neutral Theory of Biodiversity} (UNTB).")
+    (license license:gpl2+)))
+
+(define-public r-stepwise
+  (package
+    (name "r-stepwise")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "stepwise" version))
+       (sha256
+        (base32
+         "1lbx1bxwkf9dw6q46w40pp7h5nkxgghmx8rkpaymm6iybc7gyir2"))))
+    (build-system r-build-system)
+    (home-page "http://stat.sfu.ca/statgen/research/stepwise.html")
+    (synopsis "Stepwise detection of recombination breakpoints")
+    (description
+     "This package provides a stepwise approach to identifying recombination
+breakpoints in a genomic sequence alignment.")
+    (license license:gpl2+)))
+
+(define-public r-snpmaxsel
+  (package
+    (name "r-snpmaxsel")
+    (version "1.0-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "SNPmaxsel" version))
+       (sha256
+        (base32
+         "0pjvixwqzjd3jwccc8yqq9c76afvbmfq0z1w0cwyj8bblrjpx13z"))))
+    (properties `((upstream-name . "SNPmaxsel")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-combinat" ,r-combinat)
+       ("r-mvtnorm" ,r-mvtnorm)))
+    (home-page "https://cran.r-project.org/web/packages/SNPmaxsel/index.html")
+    (synopsis "Maximally selected statistics for SNP data")
+    (description
+     "This package implements asymptotic methods related to maximally selected
+statistics, with applications to @dfn{single-nucleotide polymorphism} (SNP)
+data.")
+    (license license:gpl2+)))
+
+(define-public r-acsnminer
+  (package
+    (name "r-acsnminer")
+    (version "0.16.8.25")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "ACSNMineR" version))
+              (sha256
+               (base32
+                "0gh604s8qall6zfjlwcg2ilxjvz08dplf9k5g47idhv43scm748l"))))
+    (properties `((upstream-name . "ACSNMineR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)))
+    (home-page "https://cran.r-project.org/web/packages/ACSNMineR")
+    (synopsis "Gene enrichment analysis")
+    (description
+     "This package provides tools to compute and represent gene set enrichment
+or depletion from your data based on pre-saved maps from the @dfn{Atlas of
+Cancer Signalling Networks} (ACSN) or user imported maps.  The gene set
+enrichment can be run with hypergeometric test or Fisher exact test, and can
+use multiple corrections.  Visualization of data can be done either by
+barplots or heatmaps.")
+    (license license:gpl2+)))
+
+(define-public r-seqinr
+  (package
+    (name "r-seqinr")
+    (version "3.4-5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "seqinr" version))
+       (sha256
+        (base32
+         "17zv0n5cji17izwmwg0jcbxbjl3w5rls91w15svcnlpxjms38ahn"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-segmented" ,r-segmented)))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "http://seqinr.r-forge.r-project.org/")
+    (synopsis "Biological sequences retrieval and analysis")
+    (description
+     "This package provides tools for exploratory data analysis and data
+visualization of biological sequence (DNA and protein) data.  It also includes
+utilities for sequence data management under the ACNUC system.")
+    (license license:gpl2+)))
+
+(define-public r-units
+  (package
+    (name "r-units")
+    (version "0.6-2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "units" version))
+        (sha256
+          (base32
+            "0w7iwp8c66d5gj4rsb8c87vb0ja39hym6fmfnqaqwb3is1snfa2y"))))
+    (build-system r-build-system)
+    (inputs
+     `(("udunits" ,udunits)))
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/r-quantities/units/")
+    (synopsis "Measurement Units for R Vectors")
+    (description
+      "This package provides support for measurement units in R vectors,
+matrices and arrays: automatic propagation, conversion, derivation and
+simplification of units; raising errors in case of unit incompatibility.  It
+is compatible with the @code{POSIXct}, @code{Date} and @code{difftime}
+classes.")
+    (license license:gpl2)))
+
+(define-public r-classint
+  (package
+    (name "r-classint")
+    (version "0.3-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "classInt" version))
+       (sha256
+        (base32
+         "0c2z6shlxa928xa20yl956r06lx20mji3mwipdvmj3f4z5g6hgm9"))))
+    (properties `((upstream-name . "classInt")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-class" ,r-class)
+       ("r-e1071" ,r-e1071)
+       ("r-kernsmooth" ,r-kernsmooth)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://github.com/r-spatial/classInt/")
+    (synopsis "Choose univariate class intervals")
+    (description
+     "This package provides selected commonly used methods for choosing
+univariate class intervals for mapping or other graphics purposes.")
+    (license license:gpl2+)))
+
+(define-public r-spdata
+  (package
+    (name "r-spdata")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "spData" version))
+       (sha256
+        (base32
+         "162cqb331ki43jx4r8lpkjpn2l712figd896rnawg9j1jmjyl96y"))))
+    (properties `((upstream-name . "spData")))
+    (build-system r-build-system)
+    (home-page "https://github.com/Nowosad/spData")
+    (synopsis "Datasets for spatial analysis")
+    (description
+     "This a package containing diverse spatial datasets for demonstrating,
+benchmarking and teaching spatial data analysis.  It includes R data of class
+@code{sf}, @code{Spatial}, and @code{nb}.  It also contains data stored in a
+range of file formats including GeoJSON, ESRI Shapefile and GeoPackage.  Some
+of the datasets are designed to illustrate specific analysis techniques.
+@code{cycle_hire()} and @code{cycle_hire_osm()}, for example, are designed to
+illustrate point pattern analysis techniques.")
+    (license license:cc0)))
+
+(define-public r-learnbayes
+  (package
+    (name "r-learnbayes")
+    (version "2.15.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "LearnBayes" version))
+       (sha256
+        (base32
+         "0ch54v2zz2yyyk0lvn5rfikdmyz1qh9j1wk3585wl8v58mc0h4cv"))))
+    (properties `((upstream-name . "LearnBayes")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/LearnBayes")
+    (synopsis "Functions for learning Bayesian inference")
+    (description
+     "This package provides a collection of functions helpful in learning the
+basic tenets of Bayesian statistical inference.  It contains functions for
+summarizing basic one and two parameter posterior distributions and predictive
+distributions.  It contains MCMC algorithms for summarizing posterior
+distributions defined by the user.  It also contains functions for regression
+models, hierarchical models, Bayesian tests, and illustrations of Gibbs
+sampling.")
+    (license license:gpl2+)))
+
+(define-public r-deldir
+  (package
+    (name "r-deldir")
+    (version "0.1-16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "deldir" version))
+       (sha256
+        (base32
+         "0549kj0hlkdyvm5axsm3np30wg53fm2pxybijzw0avlgsd2y2n2q"))))
+    (build-system r-build-system)
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://cran.r-project.org/web/packages/deldir")
+    (synopsis "Delaunay triangulation and Dirichlet (Voronoi) tessellation")
+    (description
+     "This package provides tools for calculating the Delaunay triangulation
+and the Dirichlet or Voronoi tessellation (with respect to the entire plane)
+of a planar point set.  It plots triangulations and tessellations in various
+ways, clips tessellations to sub-windows, calculates perimeters of
+tessellations, and summarizes information about the tiles of the
+tessellation.")
+    (license license:gpl2+)))
+
+(define-public r-sf
+  (package
+    (name "r-sf")
+    (version "0.7-4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sf" version))
+       (sha256
+        (base32
+         "0vnyr7xyfcl928kbrb1k8l4fkd0cjrfq486g6gxpvy5j0cc2h4i1"))))
+    (build-system r-build-system)
+    (inputs
+     `(("gdal" ,gdal)
+       ("geos" ,geos)
+       ("proj" ,proj.4)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-classint" ,r-classint)
+       ("r-dbi" ,r-dbi)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rcpp" ,r-rcpp)
+       ("r-units" ,r-units)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/r-spatial/sf/")
+    (synopsis "Simple features for R")
+    (description
+     "This package provides support for simple features, a standardized way to
+encode spatial vector data.  It binds to GDAL for reading and writing data, to
+GEOS for geometrical operations, and to PROJ for projection conversions and
+datum transformations.")
+    ;; Either of these licenses
+    (license (list license:gpl2 license:expat))))
+
+(define-public r-spdep
+  (package
+    (name "r-spdep")
+    (version "1.1-2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "spdep" version))
+       (sha256
+        (base32
+         "06mk81kc1ml2wjc8wwwgr0wasjcr4mwrxpfa8vfc373bmnha635s"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-boot" ,r-boot)
+       ("r-coda" ,r-coda)
+       ("r-deldir" ,r-deldir)
+       ("r-expm" ,r-expm)
+       ("r-gmodels" ,r-gmodels)
+       ("r-learnbayes" ,r-learnbayes)
+       ("r-mass" ,r-mass)
+       ("r-matrix" ,r-matrix)
+       ("r-nlme" ,r-nlme)
+       ("r-sf" ,r-sf)
+       ("r-sp" ,r-sp)
+       ("r-spdata" ,r-spdata)))
+    (home-page "https://github.com/r-spatial/spdep/")
+    (synopsis "Spatial dependence: weighting schemes, statistics and models")
+    (description
+     "This package provides a collection of functions to create spatial
+weights matrix objects from polygon contiguities, from point patterns by
+distance and tessellations, for summarizing these objects, and for permitting
+their use in spatial data analysis, including regional aggregation by minimum
+spanning tree.")
+    (license license:gpl2+)))
+
+(define-public r-adegenet
+  (package
+    (name "r-adegenet")
+    (version "2.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "adegenet" version))
+       (sha256
+        (base32
+         "0ynfblp0hbd3dp3k86fn1wyhqr28lk6hs2bg4q7gyf0sfdfzwhrh"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-ape" ,r-ape)
+       ("r-boot" ,r-boot)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-igraph" ,r-igraph)
+       ("r-mass" ,r-mass)
+       ("r-reshape2" ,r-reshape2)
+       ("r-seqinr" ,r-seqinr)
+       ("r-shiny" ,r-shiny)
+       ("r-spdep" ,r-spdep)
+       ("r-vegan" ,r-vegan)))
+    (home-page "https://github.com/thibautjombart/adegenet")
+    (synopsis "Exploratory analysis of genetic and genomic data")
+    (description
+     "This package provides a toolset for the exploration of genetic and
+genomic data.  Adegenet provides formal (S4) classes for storing and handling
+various genetic data, including genetic markers with varying ploidy and
+hierarchical population structure (@code{genind} class), alleles counts by
+populations (@code{genpop}), and genome-wide SNP data (@code{genlight}).  It
+also implements original multivariate methods (DAPC, sPCA), graphics,
+statistical tests, simulation tools, distance and similarity measures, and
+several spatial methods.  A range of both empirical and simulated datasets is
+also provided to illustrate various methods.")
+    (license license:gpl2+)))
+
+(define-public r-pegas
+  (package
+    (name "r-pegas")
+    (version "0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "pegas" version))
+       (sha256
+        (base32
+         "0l21bapzbjcvblbvks3jh9rpy9hng1ccd7f0glhqw695lc737bpx"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-adegenet" ,r-adegenet)
+       ("r-ape" ,r-ape)))
+    (home-page "http://ape-package.ird.fr/pegas.html")
+    (synopsis "Population and evolutionary genetics analysis system")
+    (description
+     "This package provides functions for reading, writing, plotting,
+analysing, and manipulating allelic and haplotypic data, including from VCF
+files, and for the analysis of population nucleotide sequences and
+micro-satellites including coalescent analyses, linkage disequilibrium,
+population structure (Fst, Amova) and equilibrium (HWE), haplotype networks,
+minimum spanning tree and network, and median-joining networks.")
+    (license license:gpl2+)))
+
+(define-public r-rmetasim
+  (package
+    (name "r-rmetasim")
+    (version "3.1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rmetasim" version))
+       (sha256
+        (base32
+         "0sz4mdprdi6sgkfwfdvh2hr9nxiwq17sw0vggq3cvs7lzb0i6m9r"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-adegenet" ,r-adegenet)
+       ("r-gtools" ,r-gtools)
+       ("r-pegas" ,r-pegas)))
+    (home-page "https://cran.r-project.org/web/packages/rmetasim")
+    (synopsis "Individual-based population genetic simulation environment")
+    (description
+     "This package provides an interface between R and the metasim simulation
+engine.  The simulation environment is documented in: Strand, A.(2002),
+Metasim 1.0: an individual-based environment for simulating population
+genetics of complex population dynamics.")
+    ;; Any GPL version
+    (license license:gpl2+)))
+
+(define-public r-genetics
+  (package
+    (name "r-genetics")
+    (version "1.3.8.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "genetics" version))
+       (sha256
+        (base32
+         "1v0ylnia6c44v356dsmnkx6054vcxazpzsrdh3yph5ch5vg6gjrh"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-combinat" ,r-combinat)
+       ("r-gdata" ,r-gdata)
+       ("r-gtools" ,r-gtools)
+       ("r-mass" ,r-mass)
+       ("r-mvtnorm" ,r-mvtnorm)))
+    (home-page "https://cran.r-project.org/web/packages/genetics/")
+    (synopsis "Population genetics")
+    (description
+     "This package provides classes and methods for handling genetic data.
+It includes classes to represent genotypes and haplotypes at single markers up
+to multiple markers on multiple chromosomes.  Function include allele
+frequencies, flagging homo/heterozygotes, flagging carriers of certain
+alleles, estimating and testing for Hardy-Weinberg disequilibrium, estimating
+and testing for linkage disequilibrium, ...")
+    ;; Any GPL version.
+    (license license:gpl2+)))
+
+(define-public r-snp-plotter
+  (package
+    (name "r-snp-plotter")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "snp.plotter" version))
+       (sha256
+        (base32
+         "16apsqvkah5l0d5qcwp3lq2jspkb6n62wzr0wskmj84jblx483vv"))))
+    (properties `((upstream-name . "snp.plotter")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-genetics" ,r-genetics)))
+    (home-page "https://cran.r-project.org/web/packages/snp.plotter/")
+    (synopsis "Plot p-values using single SNP and/or haplotype data")
+    (description
+     "This package helps you create plots of p-values using single SNP and/or
+haplotype data.  Main features of the package include options to display a
+@dfn{linkage disequilibrium} (LD) plot and the ability to plot multiple
+datasets simultaneously.  Plots can be created using global and/or individual
+haplotype p-values along with single SNP p-values.  Images are created as
+either PDF/EPS files.")
+    (license license:gpl2+)))
+
+(define-public r-polspline
+  (package
+    (name "r-polspline")
+    (version "1.1.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "polspline" version))
+       (sha256
+        (base32
+         "0g4s5nwi13yfs6b169yw8vrs48nvjyc014k2v7ybcxarl8z81va0"))))
+    (build-system r-build-system)
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://cran.r-project.org/web/packages/polspline/")
+    (synopsis "Polynomial spline routines")
+    (description
+     "This package provides routines for the polynomial spline fitting
+routines hazard regression, hazard estimation with flexible tails, logspline,
+lspec, polyclass, and polymars.")
+    (license license:gpl2+)))
+
+(define-public r-rms
+  (package
+    (name "r-rms")
+    (version "5.1-3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rms" version))
+       (sha256
+        (base32
+         "0drbr3g0x5pbxyzy50wnf92rbal8izizrcqslqhg0gsfg9adjih9"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-hmisc" ,r-hmisc)
+       ("r-htmltable" ,r-htmltable)
+       ("r-htmltools" ,r-htmltools)
+       ("r-lattice" ,r-lattice)
+       ("r-multcomp" ,r-multcomp)
+       ("r-nlme" ,r-nlme)
+       ("r-polspline" ,r-polspline)
+       ("r-quantreg" ,r-quantreg)
+       ("r-rpart" ,r-rpart)
+       ("r-sparsem" ,r-sparsem)
+       ("r-survival" ,r-survival)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "http://biostat.mc.vanderbilt.edu/rms")
+    (synopsis "Regression modeling strategies")
+    (description
+     "This is a package for regression modeling, testing, estimation,
+validation, graphics, prediction, and typesetting by storing enhanced model
+design attributes in the fit.  The rms package is a collection of functions
+that assist with and streamline modeling.  It also contains functions for
+binary and ordinal logistic regression models, ordinal models for continuous Y
+with a variety of distribution families, and the Buckley-James multiple
+regression model for right-censored responses, and implements penalized
+maximum likelihood estimation for logistic and ordinary linear models.  The
+package works with almost any regression model, but it was especially written
+to work with binary or ordinal regression models, Cox regression, accelerated
+failure time models, ordinary linear models, the Buckley-James model,
+generalized least squares for serially or spatially correlated observations,
+generalized linear models, and quantile regression.")
+    (license license:gpl2+)))
+
+(define-public r-haplo-stats
+  (package
+    (name "r-haplo-stats")
+    (version "1.7.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "haplo.stats" version))
+       (sha256
+        (base32
+         "19kxascqq5qz0zdxx0w837ji207y1z2ggxkl4vmlbay03k2dw2mx"))))
+    (properties `((upstream-name . "haplo.stats")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rms" ,r-rms)))
+    (native-inputs
+     `(("r-r-rsp" ,r-r-rsp))) ; for vignettes
+    (home-page "https://www.mayo.edu/research/labs/statistical-genetics-genetic-epidemiology/software")
+    (synopsis "Analysis of haplotypes when linkage phase is ambiguous")
+    (description
+     "This package provides routines for the analysis of indirectly measured
+haplotypes.  The statistical methods assume that all subjects are unrelated
+and that haplotypes are ambiguous (due to unknown linkage phase of the genetic
+markers).  The main functions are: @code{haplo.em()}, @code{haplo.glm()},
+@code{haplo.score()}, and @code{haplo.power()}; all of which have detailed
+examples in the vignette.")
+    (license license:gpl2+)))
+
+(define-public r-bqtl
+  (package
+    (name "r-bqtl")
+    (version "1.0-32")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "bqtl" version))
+       (sha256
+        (base32
+         "0jjqgsm9fmvz5nkgz608xfljjpmaf4rs4f7kxvpqn4b1l9s5lhci"))))
+    (build-system r-build-system)
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "http://famprevmed.ucsd.edu/faculty/cberry/bqtl/")
+    (synopsis "Bayesian QTL mapping toolkit")
+    (description
+     "This is a QTL mapping toolkit for inbred crosses and recombinant inbred
+lines.  It includes maximum likelihood and Bayesian tools.")
+    (license license:gpl2+)))
+
+(define-public r-ibdreg
+  (package
+    (name "r-ibdreg")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ibdreg" version))
+       (sha256
+        (base32
+         "1kaa5q1byi30wzr0mw4w2cv1ssxprzcwf91wrpqwkgcsdy7dkh2g"))))
+    (build-system r-build-system)
+    (home-page "https://www.mayo.edu/research/labs/\
+statistical-genetics-genetic-epidemiology/software")
+    (synopsis "Regression methods for IBD linkage with covariates")
+    (description
+     "This package provides a method to test genetic linkage with covariates
+by regression methods with response IBD sharing for relative pairs.  Account
+for correlations of IBD statistics and covariates for relative pairs within
+the same pedigree.")
+    (license license:gpl2+)))
+
+(define-public r-dlmap
+  (package
+    (name "r-dlmap")
+    (version "1.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "dlmap" version))
+       (sha256
+        (base32
+         "0s6wlkggkm3qndwyvw72xv1n0mcjb7ss3ajbq2ll6rv30splq0db"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ibdreg" ,r-ibdreg)
+       ("r-mgcv" ,r-mgcv)
+       ("r-nlme" ,r-nlme)
+       ("r-qtl" ,r-qtl)
+       ("r-wgaim" ,r-wgaim)))
+    (home-page "https://cran.r-project.org/web/packages/dlmap/")
+    (synopsis "Detection localization mapping for QTL")
+    (description
+     "This is package for QTL mapping in a mixed model framework with separate
+detection and localization stages.  The first stage detects the number of QTL
+on each chromosome based on the genetic variation due to grouped markers on
+the chromosome; the second stage uses this information to determine the most
+likely QTL positions.  The mixed model can accommodate general fixed and
+random effects, including spatial effects in field trials and pedigree
+effects.  It is applicable to backcrosses, doubled haploids, recombinant
+inbred lines, F2 intercrosses, and association mapping populations.")
+    (license license:gpl2)))
+
+(define-public r-ldheatmap
+  (package
+    (name "r-ldheatmap")
+    (version "0.99-5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "LDheatmap" version))
+       (sha256
+        (base32
+         "0il3g3n3bzv74lz7dlhyiwc2x2417v6yhx2g47pahxdzqa09kf4s"))))
+    (properties `((upstream-name . "LDheatmap")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-genetics" ,r-genetics)
+       ("r-snpstats" ,r-snpstats)))
+    (home-page "http://stat.sfu.ca/statgen/research/ldheatmap.html")
+    (synopsis "Graphical display of pairwise linkage disequilibria between SNPs")
+    (description
+     "This package provides tools to produce a graphical display, as a heat
+map, of measures of pairwise linkage disequilibria between SNPs.  Users may
+optionally include the physical locations or genetic map distances of each SNP
+on the plot.")
+    (license license:gpl3)))
+
+(define-public r-hwde
+  (package
+    (name "r-hwde")
+    (version "0.67")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "hwde" version))
+       (sha256
+        (base32
+         "0wb2f9i5qi7w77ygh8bvydfpr7j5x8dyvnnhdkajaz0wdcpkyaqy"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/hwde/")
+    (synopsis "Models and tests for departure from Hardy-Weinberg equilibrium")
+    (description
+     "This package fits models for genotypic disequilibria, as described in
+Huttley and Wilson (2000), Weir (1996) and Weir and Wilson (1986).  Contrast
+terms are available that account for first order interactions between loci.
+It also implements, for a single locus in a single population, a conditional
+exact test for Hardy-Weinberg equilibrium.")
+    (license license:gpl2+)))
+
+(define-public r-tdthap
+  (package
+    (name "r-tdthap")
+    (version "1.1-9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "tdthap" version))
+       (sha256
+        (base32
+         "0y01x0hcf0rw06cpn4pk17b0shf4v2c9was7vfs0zhsbq8qcwx7r"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/tdthap/")
+    (synopsis "TDT tests for extended haplotypes")
+    (description
+     "Functions and examples are provided for transmission/disequilibrium
+tests for extended marker haplotypes, as in Clayton, D. and Jones, H. (1999)
+\"Transmission/disequilibrium tests for extended marker haplotypes\".")
+    (license license:artistic2.0)))
+
+(define-public r-sparql
+  (package
+    (name "r-sparql")
+    (version "1.16")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "SPARQL" version))
+              (sha256
+               (base32
+                "0gak1q06yyhdmcxb2n3v0h9gr1vqd0viqji52wpw211qp6r6dcrc"))))
+    (properties `((upstream-name . "SPARQL")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcurl" ,r-rcurl)
+       ("r-xml" ,r-xml)))
+    (home-page "https://cran.r-project.org/web/packages/SPARQL")
+    (synopsis "SPARQL client for R")
+    (description "This package provides an interface to use SPARQL to pose
+SELECT or UPDATE queries to an end-point.")
+    ;; The only license indication is found in the DESCRIPTION file,
+    ;; which states GPL-3.  So we cannot assume GPLv3+.
+    (license license:gpl3)))
+
+(define-public r-bookdown
+  (package
+    (name "r-bookdown")
+    (version "0.9")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "bookdown" version))
+              (sha256
+               (base32
+                "0vg1s1w0l9pm95asqb21yf39mfk1nc9rdhmlys9xwr7p7i7rsz32"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-htmltools" ,r-htmltools)
+       ("r-knitr" ,r-knitr)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("r-tinytex" ,r-tinytex)
+       ("r-yaml" ,r-yaml)
+       ("r-xfun" ,r-xfun)))
+    (home-page "https://github.com/rstudio/bookdown")
+    (synopsis "Authoring books and technical documents with R markdown")
+    (description "This package provides output formats and utilities for
+authoring books and technical documents with R Markdown.")
+    (license license:gpl3)))
+
+(define-public r-optparse
+  (package
+    (name "r-optparse")
+    (version "1.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "optparse" version))
+       (sha256
+        (base32
+         "0zrp6jakjhawrwfri270ym83vj5a7nvjk0w6b41z41ahw2da99dm"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-getopt" ,r-getopt)))
+    (home-page "https://github.com/trevorld/optparse")
+    (synopsis "Command line option parser")
+    (description
+     "This package provides a command line parser inspired by Python's
+@code{optparse} library to be used with Rscript to write shebang scripts
+that accept short and long options.")
+    (license license:gpl2+)))
+
+(define-public r-wgcna
+  (package
+    (name "r-wgcna")
+    (version "1.67")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "WGCNA" version))
+       (sha256
+        (base32
+         "09387w85lxvwr8ax2i2h602b4dgfv4wbvsl9aj1q0b1vfs4rkk69"))))
+    (properties `((upstream-name . "WGCNA")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-doparallel" ,r-doparallel)
+       ("r-dynamictreecut" ,r-dynamictreecut)
+       ("r-fastcluster" ,r-fastcluster)
+       ("r-foreach" ,r-foreach)
+       ("r-go-db" ,r-go-db)
+       ("r-hmisc" ,r-hmisc)
+       ("r-impute" ,r-impute)
+       ("r-rcpp" ,r-rcpp)
+       ("r-robust" ,r-robust)
+       ("r-survival" ,r-survival)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-preprocesscore" ,r-preprocesscore)))
+    (home-page
+     "http://www.genetics.ucla.edu/labs/horvath/CoexpressionNetwork/Rpackages/WGCNA/")
+    (synopsis "Weighted correlation network analysis")
+    (description
+     "This package provides functions necessary to perform Weighted
+Correlation Network Analysis on high-dimensional data.  It includes functions
+for rudimentary data cleaning, construction and summarization of correlation
+networks, module identification and functions for relating both variables and
+modules to sample traits.  It also includes a number of utility functions for
+data manipulation and visualization.")
+    (license license:gpl2+)))
+
+(define-public r-kernlab
+  (package
+    (name "r-kernlab")
+    (version "0.9-27")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "kernlab" version))
+       (sha256
+        (base32
+         "1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/kernlab")
+    (synopsis "Kernel-based machine learning tools")
+    (description
+     "This package provides kernel-based machine learning methods for
+classification, regression, clustering, novelty detection, quantile regression
+and dimensionality reduction.  Among other methods @code{kernlab} includes
+Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes
+and a QP solver.")
+    (license license:gpl2)))
+
+(define-public r-hierfstat
+  (package
+    (name "r-hierfstat")
+    (version "0.04-22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "hierfstat" version))
+       (sha256
+        (base32
+         "1fav2v2996v5kb1ffa6v5wxfm921syxg6as034vd3j4jfhdibyfx"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ade4" ,r-ade4)
+       ("r-adegenet" ,r-adegenet)
+       ("r-gtools" ,r-gtools)))
+    (home-page "https://cran.r-project.org/web/packages/hierfstat/")
+    (synopsis "Estimation and tests of hierarchical F-statistics")
+    (description
+     "This package allows the estimation of hierarchical F-statistics from
+haploid or diploid genetic data with any numbers of levels in the hierarchy,
+following the algorithm of Yang (Evolution, 1998, 52(4):950-956).  Functions
+are also given to test via randomisations the significance of each F and
+variance components, using the likelihood-ratio statistics G.")
+    (license license:gpl2+)))
+
+(define-public r-hapassoc
+  (package
+    (name "r-hapassoc")
+    (version "1.2-8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "hapassoc" version))
+       (sha256
+        (base32
+         "0qs5jl0snzfchgpp6pabncwywxcmi743g91jvjiyyzw0lw85yv4s"))))
+    (build-system r-build-system)
+    (home-page "http://stat.sfu.ca/statgen/research/hapassoc.html")
+    (synopsis "Inference of trait associations with SNP haplotypes")
+    (description
+     "Hapassoc performs likelihood inference of trait associations with
+haplotypes and other covariates in @dfn{generalized linear models} (GLMs). The
+functions are developed primarily for data collected in cohort or
+cross-sectional studies.  They can accommodate uncertain haplotype phase and
+handle missing genotypes at some SNPs.")
+    (license license:gpl2)))
+
+(define-public r-sampling
+  (package
+    (name "r-sampling")
+    (version "2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sampling" version))
+       (sha256
+        (base32
+         "06pj7dan0mknpsblmlnk7am78qrnwgnql5vvx7vmbfvib7rj6s9m"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lpsolve" ,r-lpsolve)
+       ("r-mass" ,r-mass)))
+    (home-page "https://cran.r-project.org/web/packages/sampling/")
+    (synopsis "Survey sampling")
+    (description
+     "This package provides functions for drawing and calibrating samples.")
+    (license license:gpl2+)))
+
+(define-public r-r2html
+  (package
+    (name "r-r2html")
+    (version "2.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "R2HTML" version))
+       (sha256
+        (base32
+         "00kxny7hajs9r2kw63qk7d03ggdxx2j1g8vbrmzp806y8aczvik9"))))
+    (properties `((upstream-name . "R2HTML")))
+    (build-system r-build-system)
+    (home-page "https://github.com/nalimilan/R2HTML")
+    (synopsis "HTML export for R objects")
+    (description
+     "This package includes HTML functions and methods to write in an HTML
+file.  Thus, making HTML reports is easy.  It includes a function that allows
+redirection on the fly, which appears to be very useful for teaching purposes,
+as the student can keep a copy of the produced output to keep all that they
+did during the course.  The package comes with a vignette describing how to
+write HTML reports for statistical analysis.  Finally, a driver for Sweave
+allows to parse HTML flat files containing R code and to automatically write
+the corresponding outputs (tables and graphs).")
+    (license license:gpl2+)))
+
+(define-public r-rjava
+  (package
+    (name "r-rjava")
+    (version "0.9-11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rJava" version))
+       (sha256
+        (base32
+         "0s9cjy1wh7snmbqwznh8f1r4ipylr7mgda4a979z963a8lqy32n2"))))
+    (properties `((upstream-name . "rJava")))
+    (build-system r-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build r-build-system)
+                  (ice-9 match))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-JAVA_HOME
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jdk (assoc-ref inputs "jdk")))
+               (setenv "JAVA_HOME" jdk)
+               (setenv "JAVA" (which "java"))
+               (setenv "JAR" (which "jar"))
+               (setenv "JAVAC" (which "javac"))
+               (setenv "JAVAH" (which "javah"))
+               (setenv "JAVA_CPPFLAGS"
+                       (string-append "-I" jdk "/include "
+                                      "-I" jdk "/include/linux"))
+               (match (find-files (string-append jdk "/jre/lib/") "libjvm.so")
+                 ((lib) (setenv "JAVA_LIBS" lib))
+                 (_ (error "Could not find libjvm.so"))))
+             #t)))))
+    (inputs
+     `(("icu4c" ,icu4c)
+       ("jdk" ,icedtea-8 "jdk")
+       ("pcre" ,pcre)
+       ("zlib" ,zlib)))
+    (home-page "http://www.rforge.net/rJava/")
+    (synopsis "Low-Level R to Java interface")
+    (description
+     "This package provides a low-level interface to the Java VM very much
+like .C/.Call and friends.  It allows the creation of objects, calling methods
+and accessing fields.")
+    (license license:gpl2)))
+
+(define-public r-svmisc
+  (package
+    (name "r-svmisc")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "svMisc" version))
+       (sha256
+        (base32
+         "01r2a73wx2sh1njky961fxabx5wgddqqjqba6vjg0f3h8r3abmn2"))))
+    (properties `((upstream-name . "svMisc")))
+    (build-system r-build-system)
+    (home-page "https://github.com/SciViews/svMisc")
+    (synopsis "Miscellaneous functions for SciViews")
+    (description
+     "This package provides miscellaneous functions for SciViews or general
+use, including tools to manage a temporary environment attached to the search
+path for temporary variables you do not want to @code{save()} or
+@code{load()}; test the current platform; showing progress bars, etc.")
+    (license license:gpl2)))
+
+(define-public r-xyz
+  (package
+    (name "r-xyz")
+    (version "0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "xyz" version))
+       (sha256
+        (base32
+         "13w4sb4pvgciwr8wsz785dafj2k2kpx7znz46r5d32wx88vkycp4"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://cran.r-project.org/web/packages/xyz/")
+    (synopsis "Algorithm for fast interaction search in high-dimensional data")
+    (description
+     "High dimensional interaction search by brute force requires a quadratic
+computational cost in the number of variables.  The xyz algorithm provably
+finds strong interactions in almost linear time.  For details of the algorithm
+see: G. Thanei, N. Meinshausen and R. Shah (2016).  The xyz algorithm for fast
+interaction search in high-dimensional data.")
+    ;; Any version of the GPL.
+    (license license:gpl2+)))
+
+(define-public r-rttf2pt1
+  (package
+    (name "r-rttf2pt1")
+    (version "1.3.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Rttf2pt1" version))
+       (sha256
+        (base32
+         "12hf9r3mhjr9sawdvf7qhjf1zph2q64f77i81jwvy7awidbm0kja"))))
+    (properties `((upstream-name . "Rttf2pt1")))
+    (build-system r-build-system)
+    (home-page "https://github.com/wch/Rttf2pt1")
+    (synopsis "Font conversion utility")
+    (description
+     "This package contains the program @code{ttf2pt1}, for use with the
+@code{extrafont} package.")
+    ;; Most of the files are covered under the Expat license.  Some files are
+    ;; covered under BSD-3.  Deviations for individual files are recorded in
+    ;; the LICENSE file.
+    (license (list license:bsd-3 license:expat
+                   (license:non-copyleft "file://LICENSE")))))
+
+(define-public r-extrafontdb
+  (package
+    (name "r-extrafontdb")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "extrafontdb" version))
+       (sha256
+        (base32
+         "115n42hfvv5h4nn4cfkfmkmn968py4lpy8zd0d6w5yylwpzbm8gs"))))
+    (build-system r-build-system)
+    (home-page "https://github.com/wch/extrafontdb")
+    (synopsis "Database for the extrafont package")
+    (description
+     "This package holds the database for the @code{extrafont} package.")
+    (license license:gpl2)))
+
+(define-public r-extrafont
+  (package
+    (name "r-extrafont")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "extrafont" version))
+       (sha256
+        (base32
+         "0b9k2n9sk23bh45hjgnkxpjyvpdrz1hx7kmxvmb4nhlhm1wpsv9g"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-extrafontdb" ,r-extrafontdb)
+       ("r-rttf2pt1" ,r-rttf2pt1)))
+    (home-page "https://github.com/wch/extrafont")
+    (synopsis "Tools for using fonts in R")
+    (description
+     "The extrafont package makes it easier to use fonts other than the basic
+PostScript fonts that R uses.  Fonts that are imported into extrafont can be
+used with PDF or PostScript output files.  There are two hurdles for using
+fonts in PDF (or Postscript) output files:
+
+@enumerate
+@item Making R aware of the font and the dimensions of the characters.
+@item Embedding the fonts in the PDF file so that the PDF can be displayed
+  properly on a device that doesn't have the font.  This is usually needed if
+  you want to print the PDF file or share it with others.
+@end enumerate
+
+The extrafont package makes both of these things easier.")
+    (license license:gpl2)))
+
+(define-public r-xkcd
+  (package
+    (name "r-xkcd")
+    (version "0.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "xkcd" version))
+       (sha256
+        (base32
+         "1z2y0ihn68ppay7xkglhw7djki5654g6z4bbpyy41if57z9q554f"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-extrafont" ,r-extrafont)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-hmisc" ,r-hmisc)))
+    (home-page "https://cran.r-project.org/web/packages/xkcd/")
+    (synopsis "Plot ggplot2 graphics in the XKCD style")
+    (description
+     "This package provides the means to plot ggplot2 graphs in the style of
+the XKCD web comic.")
+    (license license:gpl3)))
+
+(define-public r-msigdbr
+  (package
+    (name "r-msigdbr")
+    (version "6.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "msigdbr" version))
+       (sha256
+        (base32
+         "1264j1hs74kq7hyh68vfynadfi6mdpq46qm1hnwzkzzhmbzpb9cg"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rlang" ,r-rlang)
+       ("r-tibble" ,r-tibble)))
+    (home-page "https://github.com/igordot/msigdbr")
+    (synopsis "MSigDB gene sets for multiple organisms")
+    (description
+     "This package provides the @dfn{Molecular Signatures Database} (MSigDB)
+gene sets typically used with the @dfn{Gene Set Enrichment Analysis} (GSEA)
+software in a standard R data frame with key-value pairs.  Included are the
+original human gene symbols and Entrez IDs as well as the equivalents for
+various frequently studied model organisms such as mouse, rat, pig, fly, and
+yeast.")
+    ;; The package is covered under the Expat license, but the upstream MSigDB
+    ;; files are made available under the Creative Commons Attribution 4.0
+    ;; International license.
+    (license (list license:expat license:cc-by4.0))))
+
+(define-public r-gridgraphics
+  (package
+    (name "r-gridgraphics")
+    (version "0.3-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "gridGraphics" version))
+       (sha256
+        (base32
+         "1p94flvq5h3x817pl1m0aj3sim87x6zdbpv9xrgdnqw3rxfzwgqs"))))
+    (properties `((upstream-name . "gridGraphics")))
+    (build-system r-build-system)
+    (home-page "https://github.com/pmur002/gridgraphics")
+    (synopsis "Redraw base graphics using @code{grid} graphics")
+    (description
+     "This package provides functions to convert a page of plots drawn with
+the @code{graphics} package into identical output drawn with the @code{grid}
+package.  The result looks like the original @code{graphics}-based plot, but
+consists of @code{grid} grobs and viewports that can then be manipulated with
+@code{grid} functions (e.g., edit grobs and revisit viewports).")
+    (license license:gpl2+)))
+
+(define-public r-farver
+  (package
+    (name "r-farver")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "farver" version))
+       (sha256
+        (base32
+         "1dllgx121al374gyp9pjv1m8ip4imm8zhbgyh1970dsz2c4z71i0"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/thomasp85/farver")
+    (synopsis "Vectorized color conversion and comparison")
+    (description
+     "The encoding of color can be handled in many different ways, using
+different color spaces.  As different color spaces have different uses,
+efficient conversion between these representations are important.  This
+package provides a set of functions that gives access to very fast color space
+conversion and comparisons implemented in C++, and offers 100-fold speed
+improvements over the @code{convertColor} function in the @code{grDevices}
+package.")
+    (license license:expat)))
+
+(define-public r-ggplotify
+  (package
+    (name "r-ggplotify")
+    (version "0.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggplotify" version))
+       (sha256
+        (base32
+         "14hqlpvnaq5psz1ljcpw9isa06827rg3fm5c1dx159rsjfi56yby"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gridgraphics" ,r-gridgraphics)
+       ("r-rvcheck" ,r-rvcheck)))
+    (home-page "https://github.com/GuangchuangYu/ggplotify")
+    (synopsis "Convert plots to @code{grob} or @code{ggplot} object")
+    (description
+     "This package provides tools to convert plot function calls (using
+expression or formula) to @code{grob} or @code{ggplot} objects that are
+compatible with the @code{grid} and @code{ggplot2} environment.  With this
+package, we are able to e.g. use @code{cowplot} to align plots produced by
+@code{base} graphics, @code{grid}, @code{lattice}, @code{vcd} etc. by
+converting them to @code{ggplot} objects.")
+    (license license:artistic2.0)))
+
+(define-public r-triebeard
+  (package
+    (name "r-triebeard")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "triebeard" version))
+       (sha256
+        (base32
+         "1hqyz57gph02c9fdc07lxz113bbklif3g18sw8jan6pakhhdc7dz"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/Ironholds/triebeard/")
+    (synopsis "Radix trees in Rcpp")
+    (description
+     "Radix trees, or tries, are key-value data structures optimized for
+efficient lookups, similar in purpose to hash tables.  This package provides
+an implementation of radix trees for use in R programming and in developing
+packages with Rcpp.")
+    (license license:expat)))
+
+(define-public r-tweenr
+  (package
+    (name "r-tweenr")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "tweenr" version))
+       (sha256
+        (base32
+         "0sq90pbln6lkc2q3zflhkxxwpqdw5dd7igrxhdnlynkdrmi83mpg"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-farver" ,r-farver)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rlang" ,r-rlang)))
+    (home-page "https://github.com/thomasp85/tweenr")
+    (synopsis "Interpolate data for smooth animations")
+    (description
+     "In order to create smooth animation between states of data, tweening is
+necessary.  This package provides a range of functions for creating tweened
+data that can be used as basis for animation.  Furthermore it adds a number of
+vectorized interpolaters for common R data types such as numeric, date and
+color.")
+    (license license:expat)))
+
+(define-public r-polyclip
+  (package
+    (name "r-polyclip")
+    (version "1.10-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "polyclip" version))
+       (sha256
+        (base32
+         "0jyk4maqiblvj095jd59dr76kbniyli3v3xvy0a72ljszq6vrnkl"))))
+    (build-system r-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "http://www.angusj.com/delphi/clipper.php")
+    (synopsis "Polygon clipping")
+    (description
+     "This package provides an R port of the library Clipper.  It performs
+polygon clipping operations (intersection, union, set minus, set difference)
+for polygonal regions of arbitrary complexity, including holes.  It computes
+offset polygons (spatial buffer zones, morphological dilations, Minkowski
+dilations) for polygonal regions and polygonal lines.  It computes the
+Minkowski Sum of general polygons.  There is a function for removing
+self-intersections from polygon data.")
+    (license license:boost1.0)))
+
+(define-public r-urltools
+  (package
+    (name "r-urltools")
+    (version "1.7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "urltools" version))
+       (sha256
+        (base32
+         "04x3my655dd287cbsszbnf75q0swmjlxxrblcsay7a8n3df3a830"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)
+       ("r-triebeard" ,r-triebeard)))
+    (home-page "https://github.com/Ironholds/urltools/")
+    (synopsis "Vectorized tools for URL handling and parsing")
+    (description
+     "This package provides a toolkit for all URL-handling needs, including
+encoding and decoding, parsing, parameter extraction and modification.  All
+functions are designed to be both fast and entirely vectorized.  It is
+intended to be useful for people dealing with web-related datasets, such as
+server-side logs, although may be useful for other situations involving large
+sets of URLs.")
+    (license license:expat)))
+
+(define-public r-ggforce
+  (package
+    (name "r-ggforce")
+    (version "0.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggforce" version))
+       (sha256
+        (base32
+         "0snxx9zhcccxa7pz9pf3bjqmcmv9mz4m47v81hklnhm25jj40xg2"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gtable" ,r-gtable)
+       ("r-mass" ,r-mass)
+       ("r-polyclip" ,r-polyclip)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)
+       ("r-rlang" ,r-rlang)
+       ("r-scales" ,r-scales)
+       ("r-tweenr" ,r-tweenr)))
+    (home-page "https://ggforce.data-imaginist.com")
+    (synopsis "Accelerating ggplot2")
+    (description
+     "The aim of the ggplot2 package is to aid in visual data investigations.
+This focus has led to a lack of facilities for composing specialized plots.
+Thi package aims to be a collection of mainly new statistics and geometries
+that fills this gap.")
+    (license license:expat)))
+
+(define-public r-europepmc
+  (package
+    (name "r-europepmc")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "europepmc" version))
+       (sha256
+        (base32
+         "1ngqs1sqzkbwv98dd5z4cxj8bnz41wyd0g060a2vpqi3s99s4i2h"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dplyr" ,r-dplyr)
+       ("r-httr" ,r-httr)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-plyr" ,r-plyr)
+       ("r-progress" ,r-progress)
+       ("r-purrr" ,r-purrr)
+       ("r-urltools" ,r-urltools)
+       ("r-xml2" ,r-xml2)))
+    (home-page "https://github.com/ropensci/europepmc/")
+    (synopsis "R Interface to the Europe PubMed Central RESTful Web Service")
+    (description
+     "This package provides an R Client for the
+@url{https://europepmc.org/RestfulWebService,Europe PubMed Central RESTful Web
+Service}.  It gives access to both metadata on life science literature and
+open access full texts.  Europe PMC indexes all PubMed content and other
+literature sources including Agricola, a bibliographic database of citations
+to the agricultural literature, or Biological Patents.  In addition to
+bibliographic metadata, the client allows users to fetch citations and
+reference lists.  Links between life-science literature and other EBI
+databases, including ENA, PDB or ChEMBL are also accessible.")
+    (license license:gpl3)))
+
+(define-public r-ggraph
+  (package
+    (name "r-ggraph")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggraph" version))
+       (sha256
+        (base32
+         "0fpmp326mryd1k1qvacjadksrnhbla8h960i18lmrimzrag7692c"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-digest" ,r-digest)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggforce" ,r-ggforce)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggrepel" ,r-ggrepel)
+       ("r-gtable" ,r-gtable)
+       ("r-igraph" ,r-igraph)
+       ("r-mass" ,r-mass)
+       ("r-plyr" ,r-plyr)
+       ("r-rcpp" ,r-rcpp)
+       ("r-scales" ,r-scales)
+       ("r-viridis" ,r-viridis)))
+    (home-page "https://cran.r-project.org/web/packages/ggraph/")
+    (synopsis "Implementation of grammar of graphics for graphs and networks")
+    (description
+     "The grammar of graphics as implemented in ggplot2 is a poor fit for
+graph and network visualizations due to its reliance on tabular data input.
+The ggraph package is an extension of the ggplot2 API tailored to graph
+visualizations and provides the same flexible approach to building up plots
+layer by layer.")
+    (license license:gpl3)))
+
+(define-public r-varselrf
+  (package
+    (name "r-varselrf")
+    (version "0.7-8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "varSelRF" version))
+       (sha256
+        (base32
+         "0h49rl1j13yfh97rsfsyh9s2c4wajny4rzms2qw77d0cavxqg53i"))))
+    (properties `((upstream-name . "varSelRF")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-randomforest" ,r-randomforest)))
+    (home-page "http://ligarto.org/rdiaz/Software/Software.html")
+    (synopsis "Variable selection using random forests")
+    (description
+     "This package provides tools for the variable selection from random
+forests using both backwards variable elimination (for the selection of small
+sets of non-redundant variables) and selection based on the importance
+spectrum (somewhat similar to scree plots; for the selection of large,
+potentially highly-correlated variables).  The main applications are in
+high-dimensional data (e.g., microarray data, and other genomics and
+proteomics applications).")
+    (license license:gpl2+)))
+
+(define-public r-pamr
+  (package
+    (name "r-pamr")
+    (version "1.56.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "pamr" version))
+       (sha256
+        (base32
+         "0ycpgkk23y3zzkb42n2skcyl35ps1n7jmyzfj7pbxr3f6gr2grfh"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-cluster" ,r-cluster)
+       ("r-survival" ,r-survival)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://cran.r-project.org/web/packages/pamr/")
+    (synopsis "Prediction Analysis for Microarrays")
+    (description
+     "This package provides some functions for sample classification in
+microarrays.")
+    (license license:gpl2)))
+
+(define-public r-rda
+  (package
+    (name "r-rda")
+    (version "1.0.2-2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rda" version))
+       (sha256
+        (base32
+         "1y4fawslr3i6crjaxhsdb47kfsqkyszdx6avq3r5far5a4pvc639"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/rda/")
+    (synopsis "Shrunken centroids regularized discriminant analysis")
+    (description
+     "This package provides tools for shrunken centroids regularized
+discriminant analysis for the purpose of classifying high dimensional data.")
+    (license license:gpl2+)))
+
+(define-public r-ggvis
+  (package
+    (name "r-ggvis")
+    (version "0.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggvis" version))
+       (sha256
+        (base32
+         "1bxggjr2313kfy895j0fvrv4bg7yh2z87907lk48i1kn5c9flchk"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-assertthat" ,r-assertthat)
+       ("r-dplyr" ,r-dplyr)
+       ("r-htmltools" ,r-htmltools)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-lazyeval" ,r-lazyeval)
+       ("r-magrittr" ,r-magrittr)
+       ("r-shiny" ,r-shiny)))
+    (home-page "https://ggvis.rstudio.com/")
+    (synopsis "Interactive grammar of graphics")
+    (description
+     "This package is a data visualization package for R providing an
+implementation of an interactive grammar of graphics, taking the best parts of
+ggplot2, combining them with the reactive framework of Shiny and drawing web
+graphics using Vega.")
+    (license license:gpl2)))
+
+(define-public r-gbm
+  (package
+    (name "r-gbm")
+    (version "2.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "gbm" version))
+       (sha256
+        (base32
+         "0vs6ljaqhwwpgr8wlbhmm4v147rd82kl16rpaijqiylxcc8dxyq6"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-gridextra" ,r-gridextra)
+       ("r-lattice" ,r-lattice)
+       ("r-survival" ,r-survival)))
+    (home-page "https://github.com/gbm-developers/gbm")
+    (synopsis "Generalized boosted regression models")
+    (description
+     "This package is an implementation of extensions to Freund and Schapire's
+AdaBoost algorithm and Friedman's gradient boosting machine.  It includes
+regression methods for least squares, absolute loss, t-distribution loss,
+quantile regression, logistic, multinomial logistic, Poisson, Cox proportional
+hazards partial likelihood, AdaBoost exponential loss, Huberized hinge loss,
+and Learning to Rank measures (LambdaMart).")
+    (license license:gpl2+)))
+
+(define-public r-threejs
+  (package
+    (name "r-threejs")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "threejs" version))
+       (sha256
+        (base32
+         "1s3rdlzy7man6177ycayg6xsh6k8y1r9rdj9yzn3b93j2rs0nxbi"))))
+    (build-system r-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build r-build-system)
+                  (srfi srfi-1)
+                  (ice-9 popen))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'process-javascript
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "inst"
+               (call-with-values
+                   (lambda ()
+                     (unzip2
+                      `((,(assoc-ref inputs "js-jquery")
+                         "htmlwidgets/lib/jquery/jquery.min.js")
+                        (,(assoc-ref inputs "js-threejs-85")
+                         "htmlwidgets/lib/threejs-85/three.min.js"))))
+                 (lambda (sources targets)
+                   (for-each (lambda (source target)
+                               (format #t "Processing ~a --> ~a~%"
+                                       source target)
+                               (delete-file target)
+                               (let ((minified (open-pipe* OPEN_READ "uglify-js" source)))
+                                 (call-with-output-file target
+                                   (lambda (port)
+                                     (dump-port minified port)))))
+                             sources targets))))
+             #t)))))
+    (propagated-inputs
+     `(("r-base64enc" ,r-base64enc)
+       ("r-crosstalk" ,r-crosstalk)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-igraph" ,r-igraph)))
+    (native-inputs
+     `(("uglify-js" ,uglify-js)
+       ("js-jquery"
+        ,(origin
+           (method url-fetch)
+           (uri "https://code.jquery.com/jquery-3.3.1.js")
+           (sha256
+            (base32
+             "1b8zxrp6xwzpw25apn8j4qws0f6sr7qr7h2va5h1mjyfqvn29anq"))))
+       ("js-threejs-85"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/mrdoob/three.js/r85/build/three.js")
+           (sha256
+            (base32
+             "17khh3dmijdjw4qb9qih1rqhxgrmm3pc6w8lzdx6rf6a3mrc9xnl"))))))
+    (home-page "https://bwlewis.github.io/rthreejs")
+    (synopsis "Interactive 3D scatter plots, networks and globes")
+    (description
+     "Create interactive 3D scatter plots, network plots, and globes in R
+using the three.js visualization library.")
+    (license license:expat)))
+
+(define-public r-mlbench
+  (package
+    (name "r-mlbench")
+    (version "2.1-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "mlbench" version))
+       (sha256
+        (base32
+         "1rp035qxfgh5ail92zjh9jh57dj0b8babw3wsg29v8ricpal30bl"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/mlbench/")
+    (synopsis "Machine learning benchmark problems")
+    (description
+     "This package provides a collection of artificial and real-world machine
+learning benchmark problems, including, e.g., several data sets from the UCI
+repository.")
+    (license license:gpl2)))
+
+(define-public r-mpm
+  (package
+    (name "r-mpm")
+    (version "1.0-22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "mpm" version))
+       (sha256
+        (base32
+         "0wijw8v0wmbfrda5564cmnp788qmlkk21yn5cp5qk8aprm9l1fnk"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-kernsmooth" ,r-kernsmooth)
+       ("r-mass" ,r-mass)))
+    (home-page "http://mpm.r-forge.r-project.org")
+    (synopsis "Multivariate projection methods")
+    (description
+     "This is a package for exploratory graphical analysis of multivariate
+data, specifically gene expression data with different projection methods:
+principal component analysis, correspondence analysis, spectral map
+analysis.")
+    (license license:gpl2+)))
+
+(define-public r-png
+  (package
+    (name "r-png")
+    (version "0.1-7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "png" version))
+              (sha256
+               (base32
+                "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2"))))
+    (build-system r-build-system)
+    (inputs
+     `(("libpng" ,libpng)
+       ("zlib" ,zlib)))
+    (home-page "http://www.rforge.net/png/")
+    (synopsis "Read and write PNG images")
+    (description
+     "This package provides an easy and simple way to read, write and display
+bitmap images stored in the PNG format.  It can read and write both files and
+in-memory raw vectors.")
+    ;; Any of these GPL versions.
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public r-ggcorrplot
+  (package
+    (name "r-ggcorrplot")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggcorrplot" version))
+       (sha256
+        (base32
+         "12sxvd9kjgszpbk35m7fj1wv7x40bp79c0g0by1xax70r3495h93"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-reshape2" ,r-reshape2)))
+    (home-page "http://www.sthda.com/english/wiki/ggcorrplot")
+    (synopsis "Visualization of a correlation matrix using ggplot2")
+    (description
+     "The ggcorrplot package can be used to visualize easily a correlation
+matrix using ggplot2.  It provides a solution for reordering the correlation
+matrix and displays the significance level on the plot.  It also includes a
+function for computing a matrix of correlation p-values.")
+    (license license:gpl2)))
+
+(define-public r-flexdashboard
+  (package
+    (name "r-flexdashboard")
+    (version "0.5.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "flexdashboard" version))
+       (sha256
+        (base32
+         "0fy3nbrr67zqgd44r2mc850s5sp0hzfcw3zqs15m8kxzj1aw067x"))))
+    (build-system r-build-system)
+    (arguments
+     `(#:modules ((guix build utils)
+                  (guix build r-build-system)
+                  (srfi srfi-1)
+                  (srfi srfi-26)
+                  (ice-9 popen)
+                  (ice-9 textual-ports))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'process-javascript
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "inst"
+               ;; Concatenate all components of prism.js
+               (let ((contents (string-join
+                                (map (lambda (name)
+                                       (call-with-input-file
+                                           (assoc-ref inputs name)
+                                         get-string-all))
+                                     (list "js-prism"
+                                           "js-prism-r"
+                                           "js-prism-line-numbers"))
+                                "\n")))
+                 (call-with-output-file "prism-src.js"
+                   (cut display contents <>)))
+               (call-with-values
+                   (lambda ()
+                     (unzip2
+                      `(("www/stickytableheaders/jquery.stickytableheaders.js"
+                         "www/stickytableheaders/jquery.stickytableheaders.min.js")
+                        ("www/sly/sly.js"
+                         "www/sly/sly.min.js")
+                        ("prism-src.js"
+                         "www/prism/prism.js")
+                        (,(assoc-ref inputs "js-raphael")
+                         "htmlwidgets/lib/raphael/raphael-2.1.4.min.js")
+                        (,(assoc-ref inputs "js-featherlight")
+                         "www/featherlight/featherlight.min.js"))))
+                 (lambda (sources targets)
+                   (for-each (lambda (source target)
+                               (format #t "Processing ~a --> ~a~%"
+                                       source target)
+                               (delete-file target)
+                               (let ((minified (open-pipe* OPEN_READ "uglify-js" source)))
+                                 (call-with-output-file target
+                                   (lambda (port)
+                                     (dump-port minified port)))))
+                             sources targets))))
+             #t)))))
+    (propagated-inputs
+     `(("r-htmltools" ,r-htmltools)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-knitr" ,r-knitr)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("r-shiny" ,r-shiny)))
+    (native-inputs
+     `(("uglify-js" ,uglify-js)
+       ("js-raphael"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/DmitryBaranovskiy/raphael/v2.1.4/raphael.js")
+           (sha256
+            (base32
+             "1h4c4akrgcj7wra9j1z1rv2406j0yf68y9c0wg8v7w9ibw2iwf1x"))))
+       ("js-prism"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/prism.js")
+           (sha256
+            (base32
+             "0gqa9irbp9k8p5r3d98cszajzhjnssnl43nrsc5aiy7ki52z500c"))))
+       ("js-prism-r"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/components/prism-r.js")
+           (sha256
+            (base32
+             "1x31glci7wdgr2305njy0bm2lncb0jyn0j1s2g72rqi29xid9aki"))))
+       ("js-prism-line-numbers"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/PrismJS/prism/v1.16.0/plugins/line-numbers/prism-line-numbers.js")
+           (sha256
+            (base32
+             "1543wgf3iynrilyb27jq8px3h5gvfz5xmdib5ik2ki400c1sl991"))))
+       ("js-featherlight"
+        ,(origin
+           (method url-fetch)
+           (uri "https://raw.githubusercontent.com/noelboss/featherlight/1.3.4/src/featherlight.js")
+           (sha256
+            (base32
+             "14kkhwzvp8rxq2mrck5i0xcm8v5rqwqhwnmncbng8h4qq42zx3sb"))))))
+    (home-page "https://rmarkdown.rstudio.com/flexdashboard")
+    (synopsis "R Markdown format for flexible dashboards")
+    (description
+     "This package provides an R Markdown format for converting an R Markdown
+document to a grid-oriented dashboard.  The dashboard flexibly adapts the size
+of its components to the containing web page.")
+    (license license:expat)))
+
+(define-public r-preseqr
+  (package
+    (name "r-preseqr")
+    (version "4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "preseqR" version))
+       (sha256
+        (base32
+         "1g2rnnmi45649vpy6z45v5i3wxm54s138ajqrzwi3a5r7x3xnhq1"))))
+    (properties `((upstream-name . "preseqR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-polynom" ,r-polynom)))
+    (home-page "https://cran.r-project.org/web/packages/preseqR/")
+    (synopsis "Predicting species accumulation curves")
+    (description
+     "This package can be used to predict the r-species accumulation
+curve (r-SAC), which is the number of species represented at least r times as
+a function of the sampling effort.  When r = 1, the curve is known as the
+species accumulation curve, or the library complexity curve in high-throughput
+genomic sequencing.  The package includes both parametric and nonparametric
+methods, as described by Deng C, et al. (2018).")
+    (license license:gpl3)))
+
+(define-public r-mapplots
+  (package
+    (name "r-mapplots")
+    (version "1.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "mapplots" version))
+       (sha256
+        (base32
+         "18s2y66f8vi8g2r8a25zbgp2xm079r8v8qxv0w71h8krycs6vs9p"))))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/mapplots/")
+    (synopsis "Data visualization on maps")
+    (description
+     "This package helps you create simple maps; add sub-plots like pie plots
+to a map or any other plot; format, plot and export gridded data.  The package
+was developed for displaying fisheries data but most functions can be used for
+more generic data visualisation.")
+    (license license:gpl2+)))
+
+(define-public r-pmcmr
+  (package
+    (name "r-pmcmr")
+    (version "4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "PMCMR" version))
+       (sha256
+        (base32
+         "09bvdj2h1086r2cgy3myrhlylplxxlliv8nwx09c8kb1vn02i2ij"))))
+    (properties `((upstream-name . "PMCMR")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/PMCMR/")
+    (synopsis "Calculate pairwise multiple comparisons of mean rank sums")
+    (description
+     "This is a deprecated package for calculating pairwise multiple
+comparisons of mean rank sums.  This package is superseded by the novel
+PMCMRplus package.  The PMCMR package is no longer maintained, but kept for
+compatibility of reverse depending packages for some time.")
+    (license license:gpl3+)))
+
+(define-public r-downloader
+  (package
+    (name "r-downloader")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "downloader" version))
+       (sha256
+        (base32
+         "1axggnsc27zzgr7snf41j3zd1vp3nfpmq4zj4d01axc709dyg40q"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-digest" ,r-digest)))
+    (home-page "https://github.com/wch/downloader")
+    (synopsis "Download files over HTTP and HTTPS")
+    (description
+     "This package provides a wrapper for the @code{download.file} function,
+making it possible to download files over HTTPS across platforms.  The
+@code{RCurl} package provides this functionality (and much more) but has
+external dependencies.  This package has is implemented purely in R.")
+    (license license:gpl2)))
+
+(define-public r-rex
+  (package
+    (name "r-rex")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rex" version))
+       (sha256
+        (base32
+         "0alsadgjgass3wr8y5d247j12qqzg454sc84vpskclrkmz778g5x"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lazyeval" ,r-lazyeval)
+       ("r-magrittr" ,r-magrittr)))
+    (home-page "https://github.com/kevinushey/rex")
+    (synopsis "Friendly regular expressions")
+    (description
+     "This package provides a friendly interface for the construction of
+regular expressions.  Regular expressions are a very powerful feature, however
+they are often difficult to interpret.  Rex allows you to build complex
+regular expressions from human readable expressions")
+    (license license:expat)))
+
+(define-public r-sctransform
+  (package
+    (name "r-sctransform")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sctransform" version))
+       (sha256
+        (base32
+         "1r5kiqqs318q59h2i8m7c6nhghp9w6q26ss2y5a390lkhsawgx6p"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-future" ,r-future)
+       ("r-future-apply" ,r-future-apply)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)
+       ("r-mass" ,r-mass)
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)
+       ("r-reshape2" ,r-reshape2)))
+    (home-page "https://github.com/ChristophH/sctransform")
+    (synopsis "Variance stabilizing transformations for Single Cell UMI Data")
+    (description
+     "This package provides a normalization method for single-cell UMI count
+data using a variance stabilizing transformation.  The transformation is based
+on a negative binomial regression model with regularized parameters.  As part
+of the same regression framework, this package also provides functions for
+batch correction, and data correction.")
+    (license license:gpl3)))
+
+(define-public r-styler
+  (package
+    (name "r-styler")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "styler" version))
+       (sha256
+        (base32
+         "1z24mi88snbz1avjw9phq0lzmigddvycc56s83nxzr9w9z85mh05"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-backports" ,r-backports)
+       ("r-cli" ,r-cli)
+       ("r-magrittr" ,r-magrittr)
+       ("r-purrr" ,r-purrr)
+       ("r-rematch2" ,r-rematch2)
+       ("r-rlang" ,r-rlang)
+       ("r-rprojroot" ,r-rprojroot)
+       ("r-tibble" ,r-tibble)
+       ("r-withr" ,r-withr)
+       ("r-xfun" ,r-xfun)))
+    (home-page "https://github.com/r-lib/styler")
+    (synopsis "Non-invasive pretty printing of R code")
+    (description
+     "This is a package for pretty-printing R code without changing the user's
+formatting intent.")
+    (license license:gpl3)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 38e556469a..19870d9542 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -131,15 +131,16 @@ communication, encryption, decryption, signatures, etc.")
 (define-public signify
   (package
     (name "signify")
-    (version "24")
+    (version "25")
+    (home-page "https://github.com/aperezdc/signify")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/aperezdc/signify/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0594vyvkq176xxzaz9xbq8qs0xdnr8s9gkd1prblwpdvnzmw0xvc"))))
+                "0zg0rffxwj2a71s1bllhrn491xsmirg9sshpq8f3vl25lv4c2cnq"))))
     (build-system gnu-build-system)
     ;; TODO Build with libwaive (described in README.md), to implement something
     ;; like OpenBSD's pledge().
@@ -159,7 +160,6 @@ communication, encryption, decryption, signatures, etc.")
     (description "The signify utility creates and verifies cryptographic
 signatures using the elliptic curve Ed25519.  This is a Linux port of the
 OpenBSD tool of the same name.")
-    (home-page "https://github.com/aperezdc/signify")
     ;; This package includes third-party code that was originally released under
     ;; various non-copyleft licenses. See the source files for clarification.
     (license (list license:bsd-3 license:bsd-4 license:expat license:isc
@@ -208,9 +208,9 @@ OpenBSD tool of the same name.")
          (add-after 'unpack 'unpack-googletest
            (lambda* (#:key inputs #:allow-other-keys)
              (mkdir-p "vendor/github.com/google/googletest")
-             (invoke "tar" "xvf" (assoc-ref inputs "googletest-source")
-                     "-C" "vendor/github.com/google/googletest"
-                     "--strip-components=1")))
+             (copy-recursively (assoc-ref inputs "googletest-source")
+                               "vendor/github.com/google/googletest")
+             #t))
          (add-before 'check 'make-unittests
            (lambda _
              (invoke "make" "unittests"))))))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index d8458f98d5..748f67ba1e 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -57,7 +57,7 @@
 (define-public cups-filters
   (package
     (name "cups-filters")
-    (version "1.22.2")
+    (version "1.22.3")
     (source(origin
               (method url-fetch)
               (uri
@@ -65,7 +65,7 @@
                               "cups-filters-" version ".tar.xz"))
               (sha256
                (base32
-                "06gy3wv6p7kswz3mjn17f17mqpadvqj2riwc42kksnvp8x0h08cw"))
+                "11vilv80l3q7hz8vyhclvjcnlgk93r7p9dvg634186iddjzls0j3"))
               (modules '((guix build utils)))
               (snippet
                ;; install backends, banners and filters to cups-filters output
@@ -639,14 +639,14 @@ printer/driver specific, but spooler-independent PPD file.")
 (define-public foo2zjs
   (package
     (name "foo2zjs")
-    (version "20180910")
+    (version "20190413")
     (source (origin
               (method url-fetch)
               ;; XXX: This is an unversioned URL!
               (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
               (sha256
                (base32
-                "1clddqy4y4vvws0lllv1v90dfiihihdc23bn93c544yb3fvmwmr6"))))
+                "00k22vmghxls7rk2hrbz9v17wi5z8vdk3fmsp2lrfghfcad8nhpx"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 276fe5c41b..c8c1b0ca0d 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -48,24 +48,6 @@
   #: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")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 71e7c1b938..e77209d391 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -82,6 +82,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
@@ -239,32 +240,19 @@ ElasticSearch server")
 (define-public leveldb
   (package
     (name "leveldb")
-    (version "1.20")
+    (version "1.21")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/google/leveldb"
-                                  "/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/google/leveldb")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r36bcrj6b2afsp4aw1gjai3jbs1c7734pxpc1jz7hh9nasyiazm"))))
-    (build-system gnu-build-system)
+                "00v0w6883z7a6204894j59nd5v6dazn3c8hvh3sbczv4wiabppw2"))))
+    (build-system cmake-build-system)
     (arguments
-     '(#:make-flags (list "CC=gcc")
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'install
-           ;; There is no install target, so we do it here.
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib"))
-                    (include (string-append out "/include")))
-               (for-each (lambda (file)
-                           (install-file file lib))
-                         (find-files "out-shared" "^libleveldb\\.so.*$"))
-               (copy-recursively "include" include)
-               #t))))))
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON" "-DLEVELDB_BUILD_TESTS=ON")))
     (inputs
      `(("snappy" ,snappy)))
     (home-page "http://leveldb.org/")
@@ -277,14 +265,14 @@ mapping from string keys to string values.")
 (define-public memcached
   (package
     (name "memcached")
-    (version "1.5.12")
+    (version "1.5.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://memcached.org/files/memcached-" version ".tar.gz"))
        (sha256
-        (base32 "0aav15f0lh8k4i62aza2bdv4s8vv65j38pz2zc4v45snd3arfby0"))))
+        (base32 "0qsdkjrns4f02lmabq8c7mzl5n4382q2p6a0dvmsjdcpjisagqb1"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -987,7 +975,7 @@ data in a single database.  RocksDB is partially based on @code{LevelDB}.")
     (home-page "https://github.com/tialaramex/sparql-query/")
     (synopsis "Command-line tool for accessing SPARQL endpoints over HTTP")
     (description "Sparql-query is a command-line tool for accessing SPARQL
-endpoints over HTTP.  It has been intentionally designed to 'feel' similar to
+endpoints over HTTP.  It has been intentionally designed to @code{feel} similar to
 tools for interrogating SQL databases.  For example, you can enter a query over
 several lines, using a semi-colon at the end of a line to indicate the end of
 your query.  It also supports readline so that you can more easily recall and
@@ -997,6 +985,92 @@ for example from a shell script.")
     ;; others (like sparql-query.c) contain a GPLv2+ license header.
     (license (list license:gpl3+))))
 
+(define-public sqitch
+  (package
+    (name "sqitch")
+    (version "0.9999")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/App-Sqitch-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1cvj8grs3bzc4g7dw1zc26g4biv1frav18sq0fkvi2kk0q1aigzm"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-check-environment
+           (lambda _
+             (setenv "TZ" "UTC")
+             (setenv "HOME" "/tmp")
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (getenv "PERL5LIB")))
+               (wrap-program (string-append out "/bin/sqitch")
+                 `("PERL5LIB" ":" prefix
+                   (,(string-append out "/lib/perl5/site_perl"
+                                    ":"
+                                    path)))))
+             #t)))))
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-io-pager" ,perl-io-pager)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-dir" ,perl-test-dir)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-file" ,perl-test-file)
+       ("perl-test-file-contents" ,perl-test-file-contents)
+       ("perl-test-mockmodule" ,perl-test-mockmodule)
+       ("perl-test-nowarnings" ,perl-test-nowarnings)
+       ("perl-test-warn" ,perl-test-warn)))
+    (inputs
+     `(("perl-class-xsaccessor" ,perl-class-xsaccessor)
+       ("perl-clone" ,perl-clone)
+       ("perl-config-gitlike" ,perl-config-gitlike)
+       ("perl-datetime" ,perl-datetime)
+       ("perl-datetime-timezone" ,perl-datetime-timezone)
+       ("perl-dbd-pg" ,perl-dbd-pg)
+       ("perl-dbi" ,perl-dbi)
+       ("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-encode-locale" ,perl-encode-locale)
+       ("perl-file-homedir" ,perl-file-homedir)
+       ("perl-hash-merge" ,perl-hash-merge)
+       ("perl-ipc-run3" ,perl-ipc-run3)
+       ("perl-ipc-system-simple" ,perl-ipc-system-simple)
+       ("perl-libintl-perl" ,perl-libintl-perl)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-moo" ,perl-moo)
+       ("perl-mysql-config" ,perl-mysql-config)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
+       ("perl-string-formatter" ,perl-string-formatter)
+       ("perl-string-shellquote" ,perl-string-shellquote)
+       ("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-template-tiny" ,perl-template-tiny)
+       ("perl-template-toolkit" ,perl-template-toolkit)
+       ("perl-throwable" ,perl-throwable)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-type-tiny" ,perl-type-tiny)
+       ("perl-type-tiny-xs" ,perl-type-tiny-xs)
+       ("perl-uri" ,perl-uri)
+       ("perl-uri-db" ,perl-uri-db)))
+    (home-page "https://sqitch.org/")
+    (synopsis "Database change management tool")
+    (description
+     "Sqitch is a standalone change management system for database schemas,
+which uses SQL to describe changes.")
+    (license license:x11)))
+
 (define-public sqlcrush
   ;; Unfortunately, there is no proper upstream release and may never be.
   (let ((commit "b5f6868f189566a26eecc78d0f0659813c1aa98a")
@@ -1332,6 +1406,29 @@ module, and nothing else.")
     (license license:perl-license)
     (home-page "https://metacpan.org/release/DBD-SQLite")))
 
+(define-public perl-mysql-config
+  (package
+    (name "perl-mysql-config")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DA/DARREN/MySQL-Config-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1svn7ccw2gc4cazvc58j84rxhnc9vs01zpird0l8460598j475qr"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/MySQL-Config")
+    (synopsis "Parse and utilize MySQL's /etc/my.cnf and ~/.my.cnf files")
+    (description
+     "@code{MySQL::Config} emulates the @code{load_defaults} function from
+libmysqlclient.  It will fill an aray with long options, ready to be parsed by
+@code{Getopt::Long}.")
+    (license license:perl-license)))
+
 (define-public perl-sql-abstract
   (package
     (name "perl-sql-abstract")
@@ -1845,13 +1942,13 @@ for ODBC.")
 (define-public python-pyodbc
   (package
     (name "python-pyodbc")
-    (version "4.0.25")
+    (version "4.0.26")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyodbc" version))
        (sha256
-        (base32 "1bbwrb812w5i0x56jfn0l86mxc2ck904hl8y87mziay96znwia0f"))
+        (base32 "1qrxnf7ji5hml7z4y669k4wmk3iz2pcsr05bnn1n912asash09z5"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system python-build-system)
     (inputs
@@ -2092,13 +2189,13 @@ Database API 2.0T.")
 (define-public python-sqlalchemy
   (package
     (name "python-sqlalchemy")
-    (version "1.3.1")
+    (version "1.3.3")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "SQLAlchemy" version))
       (sha256
-       (base32 "12sr36646sipf9ac3n2xh8z0w5pz4d3dvw5qjv2kzvcls6wvf7vq"))))
+       (base32 "06c3lcv7nijsgqsjaaa4djrwlzgh9f910zlqxkmgq22h6jl4rici"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-cython" ,python-cython) ; for C extensions
@@ -2474,15 +2571,15 @@ reasonable substitute.")
 (define-public python-redis
   (package
     (name "python-redis")
-    (version "3.2.0")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "redis" version))
        (sha256
-        (base32 "0m1b88wg1w6xdwg0siky5k86x8sh6smhbr42ixz41ra81lv34jbj"))))
+        (base32 "0wwj8il4c3aff15xwwcjfci367zxsakq05ps1a2il6yavp91i94c"))))
     (build-system python-build-system)
-    ;; Tests require a running Redis server
+    ;; Tests require a running Redis server.
     (arguments '(#:tests? #f))
     ;; As long as we are not running test, we do not need this input :-)
     ;;(native-inputs
diff --git a/gnu/packages/dc.scm b/gnu/packages/dc.scm
index 29d5e451d2..2ef118339f 100644
--- a/gnu/packages/dc.scm
+++ b/gnu/packages/dc.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,14 +33,14 @@
 (define-public ncdc
   (package
     (name "ncdc")
-    (version "1.20")
+    (version "1.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://dev.yorhel.nl/download/ncdc-" version
                            ".tar.gz"))
        (sha256 (base32
-                "0ccn7dqbqpqsbglqyalz32c20rjvf1pw0zr88jyvd2b2vxbqi6ca"))))
+                "10hrk7pcvfl9cj6d0kr4qf3l068ikqhccbg7lf25pr2kln9lz412"))))
     (build-system gnu-build-system)
     (inputs
      `(("bzip2" ,bzip2)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 49e40ee9cd..b035951e26 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2019 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, 2019 Rutger Helling <rhelling@mykolab.com>
@@ -92,11 +92,10 @@ program to exhibit a bug.")
     ;; home-page pointing to a bsd-2 license.
     (license bsd-3)))
 
-;; Newer versions depend on LLVM and Clang >= 4, which have yet to be packaged.
 (define-public c-reduce
   (package
     (name "c-reduce")
-    (version "2.6.0")
+    (version "2.8.0")
     (source
      (origin
       (method url-fetch)
@@ -105,12 +104,12 @@ program to exhibit a bug.")
                            "creduce-" version ".tar.gz")))
       (sha256
        (base32
-        "0pf5q0n8vkdcr1wrkxn2jzxv0xkrir13bwmqfw3jpbm3dh2c3b6d"))))
+        "1vqx73ymfscvlyig03972a5m7ar3gx2yv6m8c6h2mibz792j5xkp"))))
     (build-system gnu-build-system)
     (inputs
      `(("astyle"          ,astyle)
-       ("llvm"            ,llvm-3.9.1)
-       ("clang"           ,clang-3.9.1)
+       ("llvm"            ,llvm-6)
+       ("clang"           ,clang-6)
        ("flex"            ,flex)
        ("indent"          ,indent)
        ("perl"            ,perl)
@@ -118,11 +117,16 @@ program to exhibit a bug.")
        ("file-which"      ,perl-file-which)
        ("getopt-tabular"  ,perl-getopt-tabular)
        ("regex-common"    ,perl-regexp-common)
-       ("sys-cpu"         ,perl-sys-cpu)
        ("term-readkey"    ,perl-term-readkey)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "tests"
+               ;; Running all tests can take a looong time, and tests 4 and 5
+               ;; require frama-c or kcc.  So run just one for sanity.
+               (invoke "./run_tests" "1"))))
          (add-after 'install 'set-load-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
              ;; Tell creduce where to find the perl modules it needs.
@@ -137,7 +141,7 @@ program to exhibit a bug.")
                                           ,(package-version perl)))
                          '("term-readkey"    "exporter-lite"
                            "file-which"      "getopt-tabular"
-                           "regex-common"    "sys-cpu")))))
+                           "regex-common")))))
              #t)))))
     (home-page "https://embed.cs.utah.edu/creduce")
     (synopsis "Reducer for interesting code")
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index e0cd7604b6..ee038ac8f5 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -218,15 +218,15 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
 (define-public grammalecte
   (package
     (name "grammalecte")
-    (version "0.6.5")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch/zipbomb)
-       (uri (string-append "https://www.dicollecte.org/grammalecte/zip/"
+       (uri (string-append "https://grammalecte.net/grammalecte/zip/"
                            "Grammalecte-fr-v" version ".zip"))
        (sha256
         (base32
-         "11byjs3ggdhia5f4vyfqfvbbczsfqimll98h98g7hlsrm7vrifb0"))))
+         "0p005mqgmckkbif3syv3d90rr1zsm5n5vvac5b29nn8g4v8jjpfs"))))
     (build-system python-build-system)
     (home-page "https://grammalecte.net")
     (synopsis  "French spelling and grammar checker")
@@ -245,7 +245,7 @@ and a Python library.")
 (define-public translate-shell
   (package
     (name "translate-shell")
-    (version "0.9.6.9")
+    (version "0.9.6.10")
     (source
       (origin
         (method git-fetch)
@@ -254,13 +254,12 @@ and a Python library.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32
-          "1xyf0vdxmbgqcgsr1gvgwh1q4fh080h68radkim6pfcwzffliszm"))))
+         (base32 "1dmh3flldfhnqfay3a6c5hanqcjwrmbly1bq8mlk022qfi1fv33y"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (delete 'configure)            ; no configure phase
+         (delete 'configure)            ; no configure script
          (add-after 'unpack 'remove-unnecessary-file
            ;; This file gets generated during the build phase.
            (lambda _
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 006a381e26..c8d2af88ca 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -46,11 +46,11 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
@@ -808,9 +808,9 @@ LVM D-Bus API).")
        ("json-glib" ,json-glib)
        ("libblkid" ,util-linux)))
     (home-page "https://rmlint.rtfd.org")
-    (synopsis "Remove duplicates and other lint from the filesystem")
+    (synopsis "Remove duplicates and other lint from the file system")
     (description "@command{rmlint} finds space waste and other broken things
-on your filesystem and offers to remove it.  @command{rmlint} can find:
+on your file system and offers to remove it.  @command{rmlint} can find:
 
 @itemize
 @item duplicate files and duplicate directories,
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 502cdde7da..15e7971b4f 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -49,92 +49,10 @@
   #:use-module (gnu packages xfce)
   #:use-module (gnu packages xorg))
 
-(define-public greenisland
-  (package
-    (name "greenisland")
-    (version "0.9.0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/greenisland/greenisland"
-                    "/releases/download/v" version "/"
-                    "greenisland-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1flmha31hmii6m2mdvmn1q5dc0fhnvgc4lp1b4wgkz20y7x4f1fm"))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("extra-cmake-modules" ,extra-cmake-modules)
-       ("dbus" ,dbus)
-       ("glib:bin" ,glib "bin")
-       ("pkg-config" ,pkg-config)
-       ("xorg-server" ,xorg-server)))
-    (inputs
-     `(("elogind" ,elogind)
-       ("eudev" ,eudev)
-       ("fontconfig" ,fontconfig)
-       ("freetype" ,freetype)
-       ("glib" ,glib)
-       ("libdrm" ,libdrm)
-       ("libinput" ,libinput-minimal)
-       ("libxcursor" ,libxcursor)
-       ("libxkbcommon" ,libxkbcommon)
-       ("libx11" ,libx11)
-       ("mesa" ,mesa)
-       ("qtbase" ,qtbase)
-       ("qtdeclarative" ,qtdeclarative)
-       ("wayland" ,wayland)
-       ("wayland-protocols" ,wayland-protocols)
-       ("xcb-util-cursor" ,xcb-util-cursor)))
-    (arguments
-     `(#:configure-flags
-       (list (string-append "-DPLUGIN_INSTALL_DIR="
-                            (assoc-ref %outputs "out") "/plugins")
-             (string-append "-DQML_INSTALL_DIR="
-                            (assoc-ref %outputs "out") "/qml"))
-       #:modules ((guix build cmake-build-system)
-                  (guix build qt-utils)
-                  (guix build utils))
-       #:imported-modules (,@%cmake-build-system-modules
-                           (guix build qt-utils))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'disable-udev-tests
-           (lambda _ ; FIXME: Build env doesn't contain /dev/sda
-             (substitute* "tests/auto/platform/tst_udev.cpp"
-               (("QVERIFY") "// QVERIFY")
-               (("QCOMPARE") "// QCOMPARE"))))
-         (replace 'check
-           (lambda _
-             (setenv "DBUS_FATAL_WARNINGS" "0")
-             (invoke "dbus-launch" "ctest" ".")))
-         (add-before 'check 'check-setup
-           (lambda _
-             (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output
-             ;; make Qt render "offscreen", required for tests
-             (setenv "QT_QPA_PLATFORM" "offscreen")
-             (setenv "XDG_RUNTIME_DIR" (getcwd))
-             #t))
-         (add-after 'install 'wrap-programs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-qt-program out "greenisland")
-               (wrap-qt-program out "greenisland-launcher")
-               (wrap-qt-program out "greenisland-screencaster")
-               (wrap-qt-program out "greenisland-wayland-scanner")
-               #t))))))
-    (synopsis "QtQuick Wayland compositor and shell for desktop and mobile")
-    (description "Green Island provides a full blown Wayland compositor for
-QtQuick as well as pluggable hardware abstraction, extensions, tools and a
-Qt-style API for Wayland clients.")
-    (home-page "http://hawaiios.org")
-    ;; Choice of license at the user's opinion.
-    (license (list license:gpl2 license:gpl3 license:lgpl2.1 license:lgpl3))))
-
 (define-public sddm
   (package
     (name "sddm")
-    (version "0.18.0")
+    (version "0.18.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -143,7 +61,7 @@ Qt-style API for Wayland clients.")
                     "sddm-" version ".tar.xz"))
               (sha256
                (base32
-                "0icyi9nqgbp2v6dwh3n3jzff9jv2xy8d4rbsz89hd65x7c3hrv87"))))
+                "0nilrhwlyvkngjgxfc08n73c16azgmw80pvx0a78xqww9y3hv4xh"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 8fd29d533a..8ea9dca16a 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -519,9 +519,9 @@ project aims to bulk update given objects using one query over Django ORM.")
          (replace 'check
            (lambda _
              ;; the next version will need "make test"
-             (and (zero? (system* "flake8" "contact_form"))
-                  (zero? (system* "coverage" "run" "contact_form/runtests.py"))
-                  (zero? (system* "coverage" "report" "-m" "--fail-under" "0"))))))))
+             (invoke "flake8" "contact_form")
+             (invoke "coverage" "run" "contact_form/runtests.py")
+             (invoke "coverage" "report" "-m" "--fail-under" "0"))))))
     (native-inputs
      `(("python-coverage" ,python-coverage)
        ("python-flake8" ,python-flake8)))
@@ -577,8 +577,7 @@ entries, photos, book chapters, or anything else.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _
-             (zero? (system* "./test_project/manage.py" "test")))))))
+           (lambda _ (invoke "./test_project/manage.py" "test"))))))
     (propagated-inputs
      `(("python-django" ,python-django)))
     (native-inputs
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 2530b8a3c7..3b0c799dc3 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2017 Frederick Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.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.
 ;;;
@@ -81,15 +81,15 @@ and freshness without requiring additional information from the user.")
     (package
       (name "ldc")
       (version "0.17.4")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://github.com/ldc-developers/ldc/archive/v"
-                      version ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1kw0j378k6bh0k66dvx99bjq8ilp8bb24w3jrmibn8rhmqv0d5q8"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ldc-developers/ldc.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0nnrjavfmpfp7bib04isqlxvyzh6mlvsdan0gxysdz96hlg4hcq8"))))
       (build-system cmake-build-system)
       (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
       (properties
@@ -101,14 +101,19 @@ and freshness without requiring additional information from the user.")
          (modify-phases %standard-phases
            (add-after 'unpack 'unpack-submodule-sources
              (lambda* (#:key inputs #:allow-other-keys)
-               (let ((unpack (lambda (source target)
-                               (with-directory-excursion target
-                                 (zero? (system* "tar" "xvf"
-                                                 (assoc-ref inputs source)
-                                                 "--strip-components=1"))))))
-                 (and (unpack "phobos-src" "runtime/phobos")
-                      (unpack "druntime-src" "runtime/druntime")
-                      (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
+               (let ((unpack (lambda (input target)
+                               (let ((source (assoc-ref inputs input)))
+                                 ;; Git checkouts are directories as long as
+                                 ;; there are no patches; tarballs otherwise.
+                                 (if (file-is-directory? source)
+                                     (copy-recursively source target)
+                                     (with-directory-excursion target
+                                       (invoke "tar" "xvf" source
+                                               "--strip-components=1")))))))
+                 (unpack "phobos-src" "runtime/phobos")
+                 (unpack "druntime-src" "runtime/druntime")
+                 (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")
+                 #t)))
            (add-after 'unpack-submodule-sources 'patch-dmd2
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* "dmd2/root/port.c"
@@ -146,32 +151,32 @@ and freshness without requiring additional information from the user.")
          ("unzip" ,unzip)
          ("phobos-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/phobos/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/phobos.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "phobos" version))
              (sha256
-              (base32
-               "16x36kp46mqiihxx7jvr1d3mv3b96yfmhinb9lzinh2m4clr85wz"))
+              (base32 "0i7gh99w4mi0hdv16261jcdiqyv1nkjdcwy9prw32s0lvplx8fdy"))
              (patches (search-patches "ldc-bootstrap-disable-tests.patch"))))
          ("druntime-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/druntime/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/druntime.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "druntime" version))
              (sha256
-              (base32
-               "0iw2xxhcbsc5f1707dgdzhff528363l4faqdk513gaxs2dhfx8vx"))))
+              (base32 "0alabm3bbvs94msvxz5psiwk4f51cw9h82z1p5hhsnf8ja6d0am7"))))
          ("dmd-testsuite-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
-                   version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (commit (string-append "ldc-v" version))))
+             (file-name (git-file-name "dmd-testsuite" version))
              (sha256
-              (base32
-               "0z6ch930wjkg2vlnqkbliwxxxifad6ydsdpwdxwnajkb2kaxsjx4"))))))
+              (base32 "05qr4cgb4scfqzbw1l5pk72kil074mvj9d55b165ljyr51sgwgbl"))))))
       (home-page "http://wiki.dlang.org/LDC")
       (synopsis "LLVM-based compiler for the D programming language")
       (description
@@ -194,28 +199,33 @@ bootstrapping more recent compilers written in D.")
       (inherit ldc-bootstrap)
       (name "ldc")
       (version "1.10.0")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append
-                      "https://github.com/ldc-developers/ldc/archive/v"
-                      version ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "16b1h9kwfggjw6ykc6sfs26ak6vypylsx9wmvp5m6x3cvi6g70yi"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ldc-developers/ldc.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qcb2rn01wql7y8qp31blbv3hwmnh3zjgzi2n7k168cxr6rrdhlp"))))
       (arguments
        `(#:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'unpack-submodule-sources
              (lambda* (#:key inputs #:allow-other-keys)
-               (let ((unpack (lambda (source target)
-                               (with-directory-excursion target
-                                 (zero? (system* "tar" "xvf"
-                                                 (assoc-ref inputs source)
-                                                 "--strip-components=1"))))))
-                 (and (unpack "phobos-src" "runtime/phobos")
-                      (unpack "druntime-src" "runtime/druntime")
-                      (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
+               (let ((unpack (lambda (input target)
+                               (let ((source (assoc-ref inputs input)))
+                                 ;; Git checkouts are directories as long as
+                                 ;; there are no patches; tarballs otherwise.
+                                 (if (file-is-directory? source)
+                                     (copy-recursively source target)
+                                     (with-directory-excursion target
+                                       (invoke "tar" "xvf" source
+                                               "--strip-components=1")))))))
+                 (unpack "phobos-src" "runtime/phobos")
+                 (unpack "druntime-src" "runtime/druntime")
+                 (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")
+                 #t)))
            (add-after 'unpack-submodule-sources 'patch-phobos
              (lambda* (#:key inputs #:allow-other-keys)
                (substitute* '("runtime/phobos/std/process.d"
@@ -223,7 +233,7 @@ bootstrapping more recent compilers written in D.")
                  (("/bin/sh") (which "sh"))
                  (("echo") (which "echo")))
                (substitute* "tests/d2/dmd-testsuite/Makefile"
-                            (("/bin/bash") (which "bash")))
+                 (("/bin/bash") (which "bash")))
                ;; disable unittests in the following files. We are discussing with
                ;; upstream
                (substitute* '("runtime/phobos/std/net/curl.d"
@@ -240,14 +250,14 @@ bootstrapping more recent compilers written in D.")
                (delete-file "tests/plugins/addFuncEntryCall/testPlugin.d")
                ;; the following tests requires AVX instruction set in the CPU.
                (substitute* "tests/d2/dmd-testsuite/runnable/test_cdvecfill.d"
-                (("^// DISABLED: ") "^// DISABLED: linux64 "))
+                 (("^// DISABLED: ") "^// DISABLED: linux64 "))
                #t))
            (replace 'check
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      ;; some tests call into gdb binary which needs SHELL and CC set
-                      (setenv "SHELL" (which "sh"))
-                      (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
-                      (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; some tests call into gdb binary which needs SHELL and CC set
+               (setenv "SHELL" (which "sh"))
+               (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
+               (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
       (native-inputs
        `(("llvm" ,llvm-6)
          ("clang" ,clang-6)
@@ -258,13 +268,13 @@ bootstrapping more recent compilers written in D.")
          ("gdb" ,gdb)
          ("phobos-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/phobos/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/phobos.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "phobos" older-version))
              (sha256
-              (base32
-               "0cpmrww00xf1qx38bcc22rr05qw41p00p45yb5fbwnfaccfwdn0s"))
+              (base32 "1gmlwnjdcf6s5aahadxsif9l5nyaj0rrn379g6fmhcvdk64kf509"))
              ;; This patch deactivates some tests that depend on network access
              ;; to pass.  It also deactivates some tests that have some reliance
              ;; on timezone.
@@ -277,36 +287,37 @@ bootstrapping more recent compilers written in D.")
              (patches (search-patches "ldc-disable-phobos-tests.patch"))))
          ("druntime-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/druntime/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/druntime.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "druntime" older-version))
              (sha256
-              (base32
-               "1akh2vdi98jih8642yjbvv2vavxzrmq24kz8i3kfidg5ndqyv222"))))
+              (base32 "0a3yyjcnpvm5fbdczf76fx08kl154w17w06hlxf0j3p1p4jc85aj"))))
          ("dmd-testsuite-src"
           ,(origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
-                   older-version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (commit (string-append "ldc-v" older-version))))
+             (file-name (git-file-name "dmd-testsuite" older-version))
              (sha256
-              (base32
-               "0z5x07qrbkpksshaymp11ir6jlmg9wjicxn6zhp8cya6i1ha9p99")))))))))
+              (base32 "0mm3rliki1nqiqfaha7ssvm156aa398vpvf4v6895m7nn1mz7rss")))))))))
 
 (define-public dub
   (package
     (name "dub")
     (version "1.7.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/dlang/dub/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1jvr1mmq8j77wnsrsg7x2xv8yfljqd6x8gn6yy7dd6h6y3cf408q"))))
-   (build-system gnu-build-system)
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dlang/dub.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "073ibvgm1gphcqs1yjrav9ryp677nh3b194nxmvicwgvdc0sb6w9"))))
+    (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; it would have tested itself by installing some packages (vibe etc)
        #:phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 461d9f8c0c..ec10254c97 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,6 +52,7 @@
   #: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 swig)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
@@ -106,7 +108,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.12.3-P4")
+    (version "9.12.4-P1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -114,7 +116,9 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     "/bind-" version ".tar.gz"))
               (sha256
                (base32
-                "01pj47z5582rd538dmbzf1msw4jc8j4zr0zx4ciy88r6qr9l80fi"))))
+                "1if7zc5gzrfd28csc63v9bjwrc0rgvm1x9yx058946hc5gp5lyp2"))
+              (patches
+               (search-patches "bind-fix-unused-pk11-ecc-constants.patch"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
@@ -122,7 +126,9 @@ and BOOTP/TFTP for network booting of diskless machines.")
      `(("libcap" ,libcap)
        ("libxml2" ,libxml2)
        ("openssl" ,openssl)
-       ("p11-kit" ,p11-kit)))
+       ("p11-kit" ,p11-kit)
+       ("python" ,python)
+       ("python-ply" ,python-ply)))
     (native-inputs `(("perl" ,perl)
                      ("net-tools" ,net-tools)))
     (arguments
@@ -294,14 +300,14 @@ asynchronous fashion.")
 (define-public nsd
   (package
     (name "nsd")
-    (version "4.1.26")
+    (version "4.1.27")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1x0mvj4872dzj1rr9adnchdm4dhn41xmc459p5j4s0r13m1l32lz"))))
+        (base32 "1sjfbwr4vq25304hr9vmd9j821g2vzv8lpy95hpsravc80q5zaqv"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -569,23 +575,21 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (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
-                "1vw7xx7bm440jwrpvdd04vrp6ccz2b11swcn9msvs62hf0kdjjj9"))
-              (patches
-               (search-patches "knot-include-system-lmdb-header.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Delete bundled libraries.
-                  (with-directory-excursion "src/contrib"
-                    (delete-file-recursively "lmdb"))
-                  #t))))
+    (version "2.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://secure.nic.cz/files/knot-dns/"
+                           "knot-" version ".tar.xz"))
+       (sha256
+        (base32 "1im2wb8hl394mzni1wavmvfqd7il8s28kcz8w3s4v05nbhzg06xj"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete bundled libraries.
+           (with-directory-excursion "src/contrib"
+             (delete-file-recursively "lmdb"))
+           #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -809,3 +813,53 @@ mDNS resolver as well as an announcer.  mDNS (Multicast Domain Name System) is
 a zero-config service that allows one to resolve host names to IP addresses in
 local networks.")
     (license license:lgpl2.1)))
+
+(define-public public-suffix-list
+  ;; Mozilla releases the official list here:
+  ;;
+  ;;   https://publicsuffix.org/list/public_suffix_list.dat
+  ;;
+  ;; However, Mozilla syncs that file from the GitHub repository periodically,
+  ;; so its contents will change over time.  If you update this commit, please
+  ;; make sure that the new commit refers to a list which is identical to the
+  ;; officially published list available from the URL above.
+  (let ((commit "9375b697baddb0827a5995c81bd3c75877a0b35d"))
+    (package
+      (name "public-suffix-list")
+      (version (git-version "0" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/publicsuffix/list.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1sm7pni01rnl4ldzi8z8nc4cbgq8nxda9gwc68v0s3ij7jd1jmik"))))
+      (build-system trivial-build-system)
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let* ((out (assoc-ref %outputs "out"))
+                  ;; Install to /share because that is where "read-only
+                  ;; architecture-independent data files" should go (see:
+                  ;; (standards) Directory Variables).  Include the version in
+                  ;; the directory name so that if multiple versions are ever
+                  ;; installed in the same profile, they will not conflict.
+                  (destination (string-append
+                                out "/share/public-suffix-list-" ,version))
+                  (source (assoc-ref %build-inputs "source")))
+             (with-directory-excursion source
+             (install-file "public_suffix_list.dat" destination)
+             (install-file "LICENSE" destination))
+             #t))))
+      (home-page "https://publicsuffix.org/")
+      (synopsis "Database of current and historical DNS suffixes")
+      (description "This is the Public Suffix List maintained by Mozilla.  A
+\"public suffix\" is one under which Internet users can (or historically
+could) directly register names in the Domain Name System (DNS).  Some examples
+of public suffixes are .com, .co.uk and pvt.k12.ma.us.  This is a list of all
+known public suffixes.")
+      (license license:mpl2.0))))
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 88fc7fc6ec..39e7e8108b 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.3")
+(define %docker-version "18.09.5")
 
 (define-public python-docker-py
   (package
@@ -227,6 +227,8 @@ network attachments.")
     (home-page "http://containerd.io/")
     (license license:asl2.0)))
 
+;; TODO: Patch out modprobes for ip_vs, nf_conntrack,
+;; brige, nf_conntrack_netlink, aufs.
 (define-public docker
   (package
     (name "docker")
@@ -239,10 +241,11 @@ network attachments.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "06yr5xwr181lalh8z1lk07nxlp7hn38aq8cyqjk617dfy4lz0ixx"))
+       (base32 "0cirpd9l2qazp2jyanwzvrkx2m98nksjdvn43ff38p89w6133ipb"))
       (patches
        (search-patches "docker-engine-test-noinstall.patch"
-                       "docker-fix-tests.patch"))))
+                       "docker-fix-tests.patch"
+                       "docker-use-fewer-modprobes.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules
@@ -484,7 +487,7 @@ provisioning etc.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "09j1i668p330gjz5vw5pss8ghxh1mz7rl2q9ykp02q9p112zhy4j"))))
+       (base32 "0mxxjzkwdny8p2dmyjich7x1gn7hdlfppzjy2skk2k5bwv7nxpmi"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/docker/cli"
diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm
index 7328e442cf..31b7f58758 100644
--- a/gnu/packages/dunst.scm
+++ b/gnu/packages/dunst.scm
@@ -73,6 +73,6 @@
     (synopsis "Customizable and lightweight notification daemon")
     (description
      "Dunst is a highly configurable and minimalistic notification daemon.
-It provides 'org.freedesktop.Notifications' D-Bus service, so it is
+It provides @code{org.freedesktop.Notifications} D-Bus service, so it is
 started automatically on the first call via D-Bus.")
     (license license:bsd-3)))
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 1f8263b9c5..99f49eb7a7 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -96,14 +96,14 @@ Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
   (package
     (name "libabigail")
     (home-page "https://sourceware.org/libabigail/")
-    (version "1.5")
+    (version "1.6")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://sourceware.org/pub/" name
-                                  "/" name "-" version ".tar.gz"))
+              (uri (string-append "https://sourceware.org/pub/libabigail/"
+                                  "libabigail-" version ".tar.gz"))
               (sha256
                (base32
-                "0srfnkbm386sl2n85686nl28da6ksbs7jgnfks9k0n61c772aas4"))))
+                "04j07lhvwbp6qp8pdwbf7iqnr7kgpabmqylsw4invpmzwnyp6g6g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static"
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0f040b2b07..f2e815c630 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
 ;;; Copyright © 2019 Dimakakos Dimos <bendersteed@teknik.io>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
+;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -722,6 +723,29 @@ can take association lists, hash tables, and in some cases vectors (where the
 index is considered the key).")
     (license license:gpl3+)))
 
+(define-public emacs-ace-jump-mode
+  (package
+    (name "emacs-ace-jump-mode")
+    (version "2.0")
+    (home-page "https://github.com/winterTTr/ace-jump-mode")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1bwvzh056ls2v7y26a0s4j5mj582dmds04lx4x6iqihs04ss74bb"))
+              (file-name (git-file-name name version))))
+    (build-system emacs-build-system)
+    (synopsis "Cursor location minor mode for fast navigation")
+    (description "Ace-jump-mode is a fast/direct cursor location minor
+mode.  It creates an N-Branch search tree internally and marks all
+the possible position with predefined keys in within the whole Emacs
+view.  This allows you to move to the character, word, or line almost
+directly.")
+    (license license:gpl3+)))
+
 (define-public emacs-anaphora
   (package
     (name "emacs-anaphora")
@@ -750,7 +774,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
 (define-public emacs-xr
   (package
     (name "emacs-xr")
-    (version "1.9")
+    (version "1.10")
     (source
      (origin
        (method url-fetch)
@@ -758,7 +782,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
              "https://elpa.gnu.org/packages/xr-" version ".tar"))
        (sha256
         (base32
-         "1mcild3034f4c1x8x05w9q0ps70i1nihvih22cmh3wj4cgllg5w0"))))
+         "16p68rj5h609pnbp7y0jiiq1zkbksh4qqi1q8yby3ldj5x9sfpwc"))))
     (build-system emacs-build-system)
     (home-page "http://elpa.gnu.org/packages/xr.html")
     (synopsis "Convert string regexp to rx notation")
@@ -777,6 +801,29 @@ skip set strings, which are arguments to @code{skip-chars-forward} and
 @code{skip-chars-backward}.")
     (license license:gpl3+)))
 
+(define-public emacs-relint
+  (package
+    (name "emacs-relint")
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/relint-" version ".el"))
+       (sha256
+        (base32
+         "17nyy3zqpqgs22lrrpdm0k56xnhj5l3y2y3lnmhcqw63xksgbsyk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-xr" ,emacs-xr)))
+    (home-page "https://github.com/mattiase/relint")
+    (synopsis "Elisp regexp mistake finder")
+    (description
+     "Relint (regular expression lint) scans Elisp files for mistakes in
+regexps, including deprecated syntax and bad practice.  It also checks the
+regexp-like arguments to @code{skip-chars-forward} and
+@code{skip-chars-backward}.")
+    (license license:gpl3+)))
+
 
 ;;;
 ;;; Web browsing.
@@ -1094,6 +1141,34 @@ within a specified width.  It is useful for displaying long track titles.")
 ;;; Miscellaneous.
 ;;;
 
+(define-public emacs-ace-link
+  (package
+    (name "emacs-ace-link")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/ace-link.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "147dz79vg4ym5wg3d544bw2khdb2j3hr73rw4qfm64wf0q2dj0vk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-avy" ,emacs-avy)))
+    (home-page "https://github.com/abo-abo/ace-link")
+    (synopsis "Quickly follow links in Emacs")
+    (description
+     "Currently, to jump to a link in a @code{Info-mode}, @code{help-mode},
+@code{woman-mode}, @code{org-mode}, @code{eww-mode}, @code{compilation-mode},
+@code{goto-address-mode} buffer, you can tab through the links to select the
+one you want.  This is an O(N) operation, where the N is the amount of links.
+This package turns this into an O(1) operation.  It does so by assigning a
+letter to each link using avy.")
+    (license license:gpl3+)))
+
 (define-public emacs-bbdb
   (package
     (name "emacs-bbdb")
@@ -1158,19 +1233,45 @@ always indented.  It reindents after every change, making it more reliable
 than @code{electric-indent-mode}.")
     (license license:gpl2+)))
 
+(define-public emacs-link-hint
+  ;; Last release was in 2015.
+  (let ((commit "d74a483652486260c052941fedeadddb1ea71f88")
+        (revision "1"))
+    (package
+      (name "emacs-link-hint")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/noctuid/link-hint.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0dghxd165fbds6czy9bfwpid3i4irgp3q08n9mg57sfifi0cmij0"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-avy" ,emacs-avy)))
+      (home-page "https://github.com/noctuid/link-hint.el")
+      (synopsis "Vimperator-style link-hinting in Emacs")
+      (description "This package provides commands for visiting and acting on
+links.")
+      (license license:gpl3+))))
+
 (define-public emacs-ag
   (package
     (name "emacs-ag")
     (version "0.47")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Wilfred/ag.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/Wilfred/ag.el.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rlmp6wnyhqfg86dbz17r914msp58favn4kd4yrdwyia265a4lar"))))
+                "15kp99vwyi7hb1jkq3lwvqzw3v62ycixsq6y4pd1x0nn2v5p5m5r"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -1262,13 +1363,14 @@ or XEmacs.")
     (version "0.2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sebastiansturm/autothemer/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/sebastiansturm/autothemer.git")
+              (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0rd28r9wfrbll212am4ih9hrvypx785aff76va2cbfxdwm9kixsa"))))
+         "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -1322,14 +1424,14 @@ searches.  Unlike code@{emacs-wiki.el}, it can be combined with any format.")
     (version "1.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/kiwanami/emacs-calfw/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/kiwanami/emacs-calfw.git")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1zr91xr0f1xfcv78yxka8vs5ximmq2ixmqf2pkb57kwwnxlypq4i"))))
+         "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-howm" ,emacs-howm)))
@@ -1343,17 +1445,17 @@ Emacs buffer.")
 (define-public emacs-direnv
   (package
     (name "emacs-direnv")
-    (version "1.2.0")
+    (version "1.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/wbolster/emacs-direnv/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/wbolster/emacs-direnv.git")
+              (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0m9nxawklhiiysyibzzhh2zkxgq1fskqvaqb06f7r8dnhabfy9fr"))))
+         "02blhinkkfh3iai6j1k5swplf5mkwijy3p7wy38rnd1gnyj2z4la"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("dash" ,emacs-dash)
@@ -1461,13 +1563,14 @@ written in the Go programming language.")
     (name "emacs-google-maps")
     (version "1.0.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/jd/google-maps.el/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/jd/google-maps.el.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs"))))
+                "183igr5lp20zcqi7rc01fk76sfxdhksd74i11v16gdsifdkjimd0"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/jd/google-maps.el")
     (synopsis "Access Google Maps from Emacs")
@@ -1487,7 +1590,7 @@ Maps directly inside Emacs.")
                 (uri (git-reference
                       (url "https://github.com/ppareit/graphviz-dot-mode.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0j1r2rspaakw37b0mx7pwpvdsvixq9sw3xjbww5piihzpdxz58z1"))))
@@ -1527,24 +1630,18 @@ diagrams.")
 (define-public emacs-mmm-mode
   (package
     (name "emacs-mmm-mode")
-    (version "0.5.5")
+    (version "0.5.7")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/purcell/mmm-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/purcell/mmm-mode.git")
+              (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0c5ing3hcr74k78hqhrfwiv6m3n8hqfrw89j2x34vf60f4iyqzqc"))))
+         "0lxd55yhz0ag7v1ydff55bg4h8snq5lbk8cjwxqpyq6gh4v7md1h"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autogen
-           (lambda _
-             (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -1562,14 +1659,14 @@ single buffer.")
     (name "emacs-tablist")
     (version "0.70")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/politza/tablist/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/politza/tablist.git")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "177d6s7ym1mwz1nhnl09r14z3n093g9a2szm97xsaig0c204xz9c"))))
+                "0gy9hxm7bca0l1hfy2pzn86avpifrz3bs8xzpicj4kxw5wi4ygns"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/politza/tablist")
     (synopsis "Extension for @code{tabulated-list-mode}")
@@ -1684,7 +1781,7 @@ and stored in memory.")
               (uri (git-reference
                     (url "https://notabug.org/alezost/emacs-bui.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x"))))
@@ -1783,7 +1880,7 @@ management tasks from Emacs.  To begin with, run @code{M-x guix-about} or
               (uri (git-reference
                     (url "https://notabug.org/alezost/emacs-build-farm.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"))))
@@ -1804,15 +1901,15 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
   (package
     (name "emacs-d-mode")
     (version "2.0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
-                    "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "127aa77ix3p7w4g339bx026df9y649dahlr3v359z0hs40zjz3kd"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fzplvi1sm8k2sabfdvrd7j2xypwqh0g9v1mxa75dajdmcd85zpj"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-undercover" ,emacs-undercover)))
@@ -1870,7 +1967,7 @@ in the center.")
               (uri (git-reference
                     (url "http://dr-qubit.org/git/undo-tree.git")
                     (commit (string-append "release/" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1hnh2mnmw179gr094r561w6cw1haid0lpvpqvkc24wpj82vphzpa"))))
@@ -1886,19 +1983,19 @@ allows easily move between them.")
   (package
     (name "emacs-s")
     (version "1.12.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/magnars/s.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0xbl75863pcm806zg0x1lw7qznzjq2c8320k8js7apyag8q4srvh"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/s.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1g8mqd13llj007al4nlxxx4z2lcsg3wk970mgjn0avwrhjjgdmmv"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
-       #:emacs ,emacs ; FIXME: tests fail with emacs-minimal
+       #:emacs ,emacs                   ; FIXME: tests fail with emacs-minimal
        #:test-command '("./run-tests.sh")))
     (home-page "https://github.com/magnars/s.el")
     (synopsis "Emacs string manipulation library")
@@ -1912,13 +2009,13 @@ strings.")
     (version "20160630")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/zk-phi/symon/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/zk-phi/symon.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz"))))
+        (base32 "1q7di9s8k710nx98wnqnbkkhdimrn0jf6z4xkm4c78l6s5idjwlz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/zk-phi/symon")
     (synopsis "Tiny graphical system monitor")
@@ -1980,15 +2077,15 @@ files and directories.")
   (package
     (name "emacs-git-gutter")
     (version "0.90")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://github.com/syohex/" name "/archive/"
-                   version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
-             (sha256
-              (base32
-               "1nmhvhpq1l56mj2yq3ag23rw3x4xgnsy8szp30s26l0yjnkhc4qg"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-git-gutter.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1abagq0psip7cgsqbfjv72qy60ywsny0ibsfcn74ldj6a9v17mz5"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-git-gutter")
     (synopsis "See and manage hunks of text in a version control system")
@@ -2061,13 +2158,13 @@ This package also includes relevant snippets for yasnippet.")
     (version "1.25.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/el-mock.el/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/el-mock.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
+        (base32 "13mv1rhgkwiww2wh5w926jz7idppp492wir1vdl245c5x50dh4f7"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rejeep/el-mock.el")
     (synopsis "Tiny mock and stub framework in Emacs Lisp")
@@ -2083,13 +2180,13 @@ Expectations, but it can be used in other contexts.")
     (version "0.3.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/ecukes/espuds/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ecukes/espuds.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
+        (base32 "16r4j27j9yfdiy841w9q5ykkc6n3wrm7hvfacagb32mydk821ijg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
@@ -2130,15 +2227,15 @@ port of @code{cl-spark} to Emacs Lisp.")
   (package
     (name "emacs-es-mode")
     (version "4.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/dakrone/es-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0y86qdcb3g7fkcb4pzsjh3syzql6w3314hg1wqxq4a8bbk3y0cgr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dakrone/es-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qhfnd5anp5qrmravv7ks5ix763xnki2f5jwcyj70qyxwr0l60cg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
@@ -2162,13 +2259,13 @@ mode, which displays information about Elasticsearch clusters.")
     (version "0.11.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/expand-region.el"
-                           "/archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/expand-region.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "08dy1f411sh9wwww53rjw80idcf3vpki6ba2arl4hl5jcw9651g0"))))
+        (base32 "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magnars/expand-region.el")
     (synopsis "Increase selected region by semantic units")
@@ -2184,13 +2281,13 @@ keep pressing the key until it selects what you want.  There's also
     (version "1.89")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
-                           "/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alpaker/Fill-Column-Indicator.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "09ab01np14bdcsr38xf95kpnvxzqr46mdjmphg3pigwnx39a3jvg"))))
+        (base32 "010kf8jsly74y7m6mmkn1h6y205kz23zphs50zgy2nag2p88rz9y"))))
     (build-system emacs-build-system)
     (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
     (synopsis "Graphically indicate the fill column")
@@ -2203,15 +2300,15 @@ column by drawing a thin line down the length of the editing window.")
   (package
     (name "emacs-grep-a-lot")
     (version "1.0.7")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
-                    (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
+             (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ZungBang/emacs-grep-a-lot")
     (synopsis "Enables multiple grep buffers in Emacs")
@@ -2225,13 +2322,13 @@ column by drawing a thin line down the length of the editing window.")
     (version "2.5.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/nonsequitur/inf-ruby/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nonsequitur/inf-ruby.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
+        (base32 "1r452h6cyypqlc59q8dx5smkwhck4qjcg1pf9qdw539cpva5q77z"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/nonsequitur/inf-ruby")
     (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
@@ -2268,13 +2365,13 @@ IRC bouncer with ERC.")
     (version "0.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cask/shut-up/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cask/shut-up.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
+        (base32 "103yvfgkj78i4bnv1fwk76izsa8h4wyj3vwj1vq7xggj607hkxzq"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/cask/shut-up")
     (synopsis "Silence Emacs")
@@ -2288,13 +2385,13 @@ Emacs shell script.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sviridov/undercover.el/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sviridov/undercover.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
+        (base32 "06qcvbp5rd0kh3ibrxj5p6r578lwsrgd7yj5c6slwmkdmna2fj33"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -2312,13 +2409,13 @@ Lisp.")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/tarsius/paren-face/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tarsius/paren-face.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
+        (base32 "0f128gqn170s6hl62n44i9asais75ns1mpvb4l8vzy1sc0v16c0k"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/paren-face")
     (synopsis "Face for parentheses in lisp modes")
@@ -2337,13 +2434,13 @@ subconsciously blend out the parentheses.")
     (version "0.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/purcell/page-break-lines/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/page-break-lines.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
+        (base32 "1wp974716ih2cz9kdmdz7xwjy1qnnfzdzlfr9kchknagw8d9nn12"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/page-break-lines")
     (synopsis "Display page breaks as tidy horizontal lines")
@@ -2358,13 +2455,13 @@ as horizontal rules.")
     (version "1.4.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/skeeto/emacs-web-server/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/emacs-web-server.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
+        (base32 "1qmkc0w28l53zzf5yd2grrk1sq222g5qnsm35ph25s1cfvc1qb2g"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/skeeto/emacs-http-server")
     (synopsis "HTTP server in pure Emacs Lisp")
@@ -2379,13 +2476,13 @@ serve files and directory listings.")
     (version "1.6.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/skewer-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
+        (base32 "05jndz0c26q60s416vqgvr66axdmxb7qsr2g70fvl5iqavnayhpv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-simple-httpd" ,emacs-simple-httpd)
@@ -2409,7 +2506,7 @@ in Lisp modes.")
               (uri (git-reference
                     (url "https://github.com/akicho8/string-inflection")
                     (commit "a150e7bdda60b7824d3a936750ce23f73b0e4edd")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k"))))
@@ -2440,13 +2537,13 @@ naming style of a symbol.  It supports different naming conventions such as:
     (version "0.2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sabof/stripe-buffer/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sabof/stripe-buffer.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik"))))
+        (base32 "035ym1c1vzg6hjsnd258z4dkrfc11lj4c0y4gpgybhk54dq3w9dk"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sabof/stripe-buffer/")
     (synopsis "Add stripes to list buffers")
@@ -2461,13 +2558,13 @@ tables.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/rich-minority/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/rich-minority.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
+        (base32 "11hwf9y5ax207w6rwrsmi3pmn7pn7ap6iys0z8hni2f5zzxjrmx3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Malabarba/rich-minority")
     (synopsis "Clean-up and beautify the list of minor modes")
@@ -2482,13 +2579,13 @@ mode-line.")
     (version "0.8.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/dgutov/robe/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dgutov/robe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vp45y99fwj88z04ah4yppz4z568qcib646az6m9az5ar0f203br"))))
+        (base32 "0ll7ivxqnglfb0i70ly6qq2yfw9cyi3vq3lmj4s6h6c1c7rm3gcq"))))
     (build-system emacs-build-system)
     (arguments
      '(#:include (cons "^lib\\/" %default-include)))
@@ -2503,19 +2600,44 @@ definitions, modules and classes, display method documentation and provide
 method and constant name completion.")
     (license license:gpl3+)))
 
+(define-public emacs-robot-mode
+  (let ((commit "32846e7e80ae3471b7c07f9709dcaa4f9b9ed4a0")
+        (revision "1"))
+    (package
+      (name "emacs-robot-mode")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      ;; A better maintained fork of robot-mode.
+                      (url "https://github.com/jvalkeejarvi/robot-mode.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1i8wf7m0gml8zvvmlgppjzv78b432686p1qdbzgclc7qfcvzag0d"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/jvalkeejarvi/robot-mode")
+      (synopsis "Emacs mode for Robot Framework")
+      (description "This major mode facilitates editing Robot Framework source
+files with features such as syntax highlighting, comments, finding keywords,
+completing keywords and smart indentation.")
+      (license license:gpl3+))))
+
 (define-public emacs-rspec
   (package
     (name "emacs-rspec")
     (version "1.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/pezra/rspec-mode/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pezra/rspec-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1j0a7ms5516nlg60qfyn730pfxys6acm0rgyxh5xfkpi6jafgpvw"))))
+        (base32 "0hrn5n7aaymwimk511kjij44vqaxbmhly1gwmlmsrnbvvma7f2mp"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/pezra/rspec-mode")
     (synopsis "Provides a rspec mode for working with RSpec")
@@ -2534,13 +2656,13 @@ snippets for yasnippet.")
     (version "2.12.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/smart-mode-line.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1hn8s6laijmg7w1bgwdfrki6h9vxkbgr8rmmssvd5yqyad5w2sba"))))
+        (base32 "1gs4ay9hdg8gmia4ir74qawk80pqwv99hp4yhy108kpfry5mrq6z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-rich-minority" ,emacs-rich-minority)))
@@ -2583,13 +2705,13 @@ the speedbar window.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DamienCassou/shell-switcher"
-                           "/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/shell-switcher.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
+        (base32 "0ia7sdip4hl27avckv3qpqgm3k4ynvp3xxq1cy53bqfzzx0gcria"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/DamienCassou/shell-switcher")
     (synopsis "Provide fast switching between shell buffers")
@@ -2606,7 +2728,7 @@ the speedbar window.")
               (uri (git-reference
                     (commit "880706469338ab59b5bb7dbe8460016f89755364")
                     (url "https://github.com/gregsexton/ob-ipython.git")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
@@ -2622,14 +2744,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.16")
+    (version "0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "0y3bq803c7820h15g66d1648skxfhlfa2v6vincj6xk5ssp44s9p"))))
+                "0zclh2nxj5p10n214sxyxy3ca07l5s9p5spk0xp1smr6nzn0w7gb"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -2677,10 +2799,10 @@ framework for Emacs Lisp to be used with @code{ert}.")
               (uri (git-reference
                     (url home-page)
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"))
-              (file-name (string-append name "-" version))))
+                "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -2720,10 +2842,10 @@ for asynchronous tasks.")
               (uri (git-reference
                     (url home-page)
                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
-              (file-name (string-append name "-" version))))
+                "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)))
@@ -2742,13 +2864,13 @@ build jobs.")
     (version "0.9.7")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/company-mode/company-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/company-mode/company-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "19flv38f2qhxda8lbk2ckywvibd72vbzmn4hchqz6d8acsknh4sb"))))
+        (base32 "1gpapjxs4l6fmmj22q0q1pyhj1yd9j5iqfqnjf1abskkj69lqkpj"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -2783,10 +2905,10 @@ These are distributed in separate files and can be used individually.")
               (uri (git-reference
                     (url (string-append home-page ".git"))
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"))))
     (build-system emacs-build-system)
     (inputs `(("server" ,emacs-irony-mode-server)))
     (arguments `(#:phases
@@ -2802,7 +2924,7 @@ These are distributed in separate files and can be used individually.")
     (description "Irony-mode provides Clang-assisted syntax checking and
 completion for C, C++, and ObjC in GNU Emacs.  Using @code{libclang} it can
 provide syntax checking and autocompletion on compiler level which is very
-resistent against false positives.  It also integrates well with other
+resistant against false positives.  It also integrates well with other
 packages like @code{eldoc-mode} and especially @code{company-mode} as
 described on the homepage.")
     (license license:gpl3+)))
@@ -2855,9 +2977,9 @@ with irony-mode using clang-tooling.")
               (uri (git-reference
                     (url "https://github.com/Sarcasm/flycheck-irony.git")
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
-               (base32 "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996"))
-              (file-name (string-append name "-" version))))
+               (base32 "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996"))))
     (build-system emacs-build-system)
     (inputs
      `(("irony-mode" ,emacs-irony-mode)
@@ -2879,8 +3001,9 @@ irony-mode do the syntax checking.")
        (uri (git-reference
              (url "https://github.com/ikirill/irony-eldoc.git")
              (commit "0df5831eaae264a25422b061eb2792aadde8b3f2")))
-       (sha256 (base32 "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd"))
-       (file-name (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd"))))
     (build-system emacs-build-system)
     (inputs
      `(("irony-mode" ,emacs-irony-mode)))
@@ -2896,14 +3019,13 @@ for the current function or variable in the minibuffer.")
     (version "2.3.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/expez/company-quickhelp/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/expez/company-quickhelp.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xrn2z1dgk5gmkmp2jkn9g83ckk39lqp5pyyv8rl7f6gqvib3qh0"))))
+        (base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-pos-tip" ,emacs-pos-tip)
@@ -2920,13 +3042,13 @@ completion candidate when using the Company text completion framework.")
     (version "1.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/multiple-cursors.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
+        (base32 "1ijgvzv5r44xqvz751fd5drbvrspapw6xwv47582w255j363r6ss"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magnars/multiple-cursors.el")
     (synopsis "Multiple cursors for Emacs")
@@ -2945,10 +3067,10 @@ simultaneous cursors.")
               (uri (git-reference
                     (url home-page)
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
-              (file-name (string-append name "-" version))))
+                "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))))
     (build-system emacs-build-system)
     (synopsis "Minor mode for typographic editing")
     (description
@@ -2959,6 +3081,34 @@ automatically inserts a Unicode opening or closing quotation mark, depending
 on context.")
     (license license:gpl3+)))
 
+(define-public emacs-company-lsp
+  (package
+    (name "emacs-company-lsp")
+    (version "2.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tigersoldier/company-lsp.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1hy1x2w0yp5brm7714d1hziz3rpkywb5jp3yj78ibmi9ifny9vri"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-lsp-mode" ,emacs-lsp-mode)
+       ("emacs-company" ,emacs-company)
+       ("emacs-s" ,emacs-s)
+       ("emacs-dash" ,emacs-dash)))
+    (home-page "https://github.com/tigersoldier/company-lsp")
+    (synopsis "Completion for @code{lsp-mode}")
+    (description
+     "This package provides completion features that are not possible with
+@code{lsp-mode} and @code{company-capf} alone, including support for trigger
+characters and asynchronous fetching of completion candidates.")
+    (license license:gpl3+)))
+
 (define-public emacs-scheme-complete
   (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
     (package
@@ -2966,11 +3116,11 @@ on context.")
       (version (string-append "20151223." (string-take commit 8)))
       (source
        (origin
-         (file-name (string-append name "-" version))
          (method git-fetch)
          (uri (git-reference
                (url "https://github.com/ashinn/scheme-complete.git")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
@@ -2999,7 +3149,7 @@ to a key in your preferred mode.")
          (uri (git-reference
                (url "https://github.com/supercollider/scel.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw"))))
@@ -3037,6 +3187,33 @@ to a key in your preferred mode.")
 SuperCollider is a platform for audio synthesis and algorithmic composition.")
       (license license:gpl2+))))
 
+(define-public emacs-company-auctex
+  (let ((commit "48c42c58ce2f0e693301b0cb2d085055410c1b25")
+        (revision "1"))
+    (package
+      (name "emacs-company-auctex")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alexeyr/company-auctex")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "10qn7frn5wcmrlci3v6iliqzj7r9dls87h9zp3xkgrgn4bqprfp8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-yasnippet" ,emacs-yasnippet)
+         ("emacs-auctex" ,emacs-auctex)
+         ("emacs-company" ,emacs-company)))
+      (home-page "https://github.com/alexeyr/company-auctex/")
+      (synopsis "Completion for @code{AUCTeX}")
+      (description
+       "This package provides a group of backends permitting auto-completion
+for @code{AUCTeX}.")
+      (license license:gpl3+))))
+
 (define-public emacs-mit-scheme-doc
   (package
     (name "emacs-mit-scheme-doc")
@@ -3086,13 +3263,13 @@ identifiers in the MIT-Scheme documentation.")
     (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
     (source
      (origin
-       (file-name (string-append name "-" version ".tar.gz"))
-       (method url-fetch)
-       (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
-                           "/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fedeinthemix/emacs-constants.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
+        (base32 "0f5sh6b45a8p9kancjp9jk44ws8ww6x50a0i6zgyyvr7dbvii1a0"))))
     (build-system emacs-build-system)
     (synopsis "Enter definition of constants into an Emacs buffer")
     (description
@@ -3106,13 +3283,13 @@ constants and units into an Emacs buffer.")
     (version "1.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/magnars/tagedit/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/magnars/tagedit.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
+        (base32 "0kq40g46s8kgiafrhdq99h79rz9h5fvgz59k7ralmf86bl4sdmdb"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
@@ -3130,14 +3307,13 @@ in @code{html-mode}.")
     (version "2.23")
     (source
      (origin
-       (file-name (string-append name "-" version ".tar.gz"))
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/slime/slime/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/slime/slime.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "01gkrqfpifcx1vipwrbhns2r4s8izp3z1w4p41azc943s1a2d5nc"))))
+        (base32 "0i637n0ragpbj39hqx65nx5k99xf0464c4w6w1qpzykm6z42grky"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -3147,6 +3323,10 @@ in @code{html-mode}.")
                    "^contrib/Makefile$" "^contrib/README.md$")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (add-before 'install 'configure
            (lambda* _
              (emacs-substitute-variables "slime.el"
@@ -3190,15 +3370,15 @@ for compilation, debugging, documentation lookup, and so on.")
   (package
     (name "emacs-popup")
     (version "0.5.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/auto-complete/popup-el/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/auto-complete/popup-el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y538siabcf1n00wr4iz5gbxfndw661kx2mn9w1g4lg7yi4n0h0h"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/auto-complete/popup-el")
     (synopsis "Visual Popup User Interface for Emacs")
@@ -3208,6 +3388,78 @@ This provides a basic API and common UI widgets such as popup tooltips
 and popup menus.")
     (license license:gpl3+)))
 
+(define-public emacs-python-environment
+  (package
+    (name "emacs-python-environment")
+    (version "0.0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tkf/emacs-python-environment/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-deferred" ,emacs-deferred)))
+    (home-page "https://github.com/tkf/emacs-python-environment")
+    (synopsis "Provides a @code{virtualenv} API in Emacs Lisp")
+    (description
+     "This package permits automated installation of tools written in Python.")
+    (license license:gpl3+)))
+
+(define-public emacs-jedi
+  (package
+    (name "emacs-jedi")
+    (version "0.2.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tkf/emacs-jedi/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0xbp9fcxgbf298w05hvf52z41kk7r52975ailgdn8sg60xc98fa7"))))
+    (build-system emacs-build-system)
+    (native-inputs
+     `(("emacs-mocker" ,emacs-mocker)))
+    (propagated-inputs
+     `(("emacs-auto-complete" ,emacs-auto-complete)
+       ("emacs-python-environment" ,emacs-python-environment)
+       ("emacs-epc" ,emacs-epc)))
+    (home-page "https://github.com/tkf/emacs-jedi")
+    (synopsis "Provides Python completion in Emacs")
+    (description
+     "This package provides completion in Python buffers and also helps find
+the locations of docstrings, arguments, and functions.")
+    (license license:gpl3+)))
+
+(define-public emacs-company-jedi
+  (package
+    (name "emacs-company-jedi")
+    (version "0.04")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/syohex/emacs-company-jedi")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ihqapp4dv92794rsgyq0rmhwika60cmradqd4bn9b72ss6plxs1"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-jedi" ,emacs-jedi)
+       ("emacs-company" ,emacs-company)))
+    (home-page "https://github.com/syohex/emacs-company-jedi")
+    (synopsis "Provides Python completion in @code{company-mode}")
+    (description
+     "This package provides a Company backend for Python.")
+    (license license:gpl3+)))
+
 (define-public emacs-puppet-mode
   (let ((commit "b3ed5057166a4f49dfa9be638523a348b55a2fd2")
         (revision "1"))
@@ -3248,7 +3500,7 @@ linting of manifests and integration with Puppet Debugger.")
          (uri (git-reference
                (url "https://github.com/chrisdone/god-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
@@ -3268,13 +3520,13 @@ insertion mode.  When enabled all keys are implicitly prefixed with
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/paradoxxxzero/jinja2-mode/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/paradoxxxzero/jinja2-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0cgxjab1kla2zc2fj7bzib6i7snp08zshandmp9kqcm85l262xpn"))))
+        (base32 "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/paradoxxxzero/jinja2-mode")
     (synopsis "Major mode for jinja2")
@@ -3283,6 +3535,32 @@ insertion mode.  When enabled all keys are implicitly prefixed with
 sgml/html integration, and indentation (working with sgml).")
     (license license:gpl3+)))
 
+(define-public emacs-company-cabal
+  ;; The latest version is 0.3.0, but no release has been provided after 0.2.1.
+  (let ((commit "62112a7259e24bd6c08885629a185afe512b7d3d")
+        (revision "1"))
+    (package
+      (name "emacs-company-cabal")
+      (version (git-version "0.3.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/iquiw/company-cabal/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1gf45xwjzdm8i4q6c6khk4dbg1mmp2r0awz2sjr4dcr2dbd1n7mg"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)))
+      (home-page "https://github.com/iquiw/company-cabal/")
+      (synopsis "Company completion for Haskell Cabal files")
+      (description
+       "This package allows for completion of field names, section names,
+field values, and more within @code{haskell-cabal-mode}.")
+      (license license:gpl3+))))
+
 (define-public emacs-rfcview
   (package
     (name "emacs-rfcview")
@@ -3337,13 +3615,13 @@ number.")
     (version "0.2.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sabof/org-bullets/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sabof/org-bullets.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
+        (base32 "10nr4sjffnqbllv6gmak6pviyynrb7pi5nvrq331h5alm3xcpq0w"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sabof/org-bullets")
     (synopsis "Show bullets in org-mode as UTF-8 characters")
@@ -3358,14 +3636,13 @@ number.")
     (version "2.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/lolownia/org-pomodoro/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lolownia/org-pomodoro.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1jalsggw3q5kvj353f84x4nl04a5vmq07h75ggppy1627lb31zm4"))))
+        (base32 "0r5shgikm34d66i2hblyknbblpg92lb2zc9x4bcb28xkh7m9d0xv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-alert" ,emacs-alert)))
@@ -3385,15 +3662,15 @@ started with 20 minutes.  All values are customizable.")
   (package
     (name "emacs-org-trello")
     (version "0.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/org-trello/org-trello/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0549mnf5cgwn8b8jbl38fljbaxmh1605sv9j8f3lsa95jhs1zpa0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/org-trello/org-trello.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0m5hyhb6211hdmyp1bq6f3fklfgw3957knd96bfdafj727vdnlzm"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -3409,6 +3686,31 @@ started with 20 minutes.  All values are customizable.")
 organizer.")
     (license license:gpl3+)))
 
+(define-public emacs-company-flow
+  (let ((commit "76ef585c70d2a3206c2eadf24ba61e59124c3a16")
+        (revision "1"))
+    (package
+      (name "emacs-company-flow")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/aaronjensen/company-flow/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0zs9cblnbkxa0dxw4lyllmybqizxcdx96gv8jlhx20nrjpi78piw"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/aaronjensen/company-flow/")
+      (synopsis "Flow backend for @code{company-mode}")
+      (description
+       "This package provides completion for JavaScript files utilizing Flow.")
+      (license license:gpl3+))))
+
 (define-public emacs-atom-one-dark-theme
   (let ((commit "1f1185bf667a38d3d0d180ce85fd4c131818aae2")
         (revision "0"))
@@ -3434,15 +3736,15 @@ organizer.")
   (package
     (name "emacs-zenburn-theme")
     (version "2.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/bbatsov/zenburn-emacs/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0qc9d1rwq55yzh8shbppyd6izy1grpyr8kqh5zdgm7c5jccngpr4"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bbatsov/zenburn-emacs.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n87r5hs7h5r8dgfid66skpzcypl9hssr9m3npp916g6jfsi782f"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/bbatsov/zenburn-emacs")
     (synopsis "Low contrast color theme for Emacs")
@@ -3535,19 +3837,44 @@ of sixteen colors suitable for a wide range of applications.  Base16 is not a
 single theme but a set of guidelines with numerous implementations.")
     (license license:expat)))
 
-(define-public emacs-smartparens
+(define-public emacs-prescient
   (package
-    (name "emacs-smartparens")
-    (version "1.11.0")
+    (name "emacs-prescient")
+    (version "2.2.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Fuco1/smartparens/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/raxod502/prescient.el/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0q5as813xs8y29i3v2rm97phd6m7xsmmw6hwbvx57gwmi8i1c409"))))
+                "1ncplx5p3cffyzg9ygzqqxj0vpvwrz9rp2n4z6c375a78fyydrk0"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-company" ,emacs-company)
+       ("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/raxod502/prescient.el/")
+    (synopsis "Library that sorts and filters lists of candidates")
+    (description
+     "This package provides a library for sorting and filtering, as well as
+extensions for @code{ivy-mode} and @code{company-mode} that make use of the
+library.")
+    (license license:gpl3+)))
+
+(define-public emacs-smartparens
+  (package
+    (name "emacs-smartparens")
+    (version "1.11.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fuco1/smartparens.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0zij2f2rjjym98w68jkp10n1ckpfprlkk217c3fg16hz5nq4vnm6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -3570,15 +3897,15 @@ well as completely new features.")
   (package
     (name "emacs-highlight-symbol")
     (version "1.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/nschum/highlight-symbol.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1n7k1qns0fn0jsyc0hrjac5nzk21xw48yc30vyrhwvc51h0b9g90"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nschum/highlight-symbol.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "09z13kv2g21kjjkkm3iyaz93sdjmdy2d563r8n7r7ng94acrn7f6"))))
     (build-system emacs-build-system)
     (home-page "https://nschum.de/src/emacs/highlight-symbol")
     (synopsis "Automatic and manual symbol highlighting for Emacs")
@@ -3783,7 +4110,7 @@ parallel.")
               (uri (git-reference
                     (url "https://github.com/tkf/emacs-request.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0wyxqbb35yqf6ci47531lk32d6fppamx9d8826kdz983vm87him7"))))
@@ -3859,7 +4186,7 @@ automatically.")
        (uri (git-reference
              (url "https://github.com/abo-abo/swiper.git")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "009n8zjycs62cv4i1k9adbb284wz2w3r13xki2740sj34k683v13"))))
@@ -3926,13 +4253,13 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Yevgnen/ivy-rich/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Yevgnen/ivy-rich.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "14r3mx5rkd4wz0ls5pv5w6c7la3z9iy93d3jfind3xyg4kywy95c"))))
+        (base32 "0ayf3dwfhafcbqnckm65zy8nc1rv9ji939qfn53wbhxkrgqdicgz"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ivy" ,emacs-ivy)))
@@ -3951,13 +4278,13 @@ show icons as well.")
     (version "0.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/abo-abo/avy/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/avy.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
+        (base32 "0rq9ab264565z83cly743nbhrd9m967apmnlhqr1gy8dm4hcy7nm"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/abo-abo/avy")
     (synopsis "Tree-based completion for Emacs")
@@ -3980,13 +4307,13 @@ windows.")
     (version "0.9.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/abo-abo/ace-window.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
+        (base32 "07mcdzjmgrqdvjs94f2n5bkrf5vrq2fwzz256wbm3wzqxqkfy1q6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-avy" ,emacs-avy)))
@@ -4005,13 +4332,13 @@ highlighted.  Pressing that character will switch to that window.")
     (version "0.9.9.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/victorhge/iedit/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/victorhge/iedit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
+        (base32 "1pwkrm98vlpzsy5iwwfksdaz3zzyi7bvdf5fglhsn4ssf47p787g"))))
     (build-system emacs-build-system)
     (home-page "http://www.emacswiki.org/emacs/Iedit")
     (synopsis "Edit multiple regions in the same way simultaneously")
@@ -4110,15 +4437,15 @@ state and will work even without lispy being enabled.")
   (package
     (name "emacs-clojure-mode")
     (version "5.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/clojure-emacs/clojure-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1f4k1hncy5ygh4izn7mqfp744nnisrp9ywn2njknbjxx34ai1q88"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/clojure-emacs/clojure-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qadymqzs5fn1sb347xzfw8lqq6s85vvkh4kzm35m61g5i2lm86y"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -4139,15 +4466,15 @@ It is recommended to use @code{clojure-mode} with paredit or smartparens.")
   (package
     (name "emacs-epl")
     (version "0.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/cask/epl/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cask/epl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0sjxd5y5hxhrbgfkpwx6m724r3841b53hgc61a0g5zwispw5pmrr"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/cask/epl")
     (synopsis "Emacs Package Library")
@@ -4158,6 +4485,30 @@ The purpose of this library is to wrap all the quirks and hassle of
 @code{package.el} into a sane API.")
     (license license:gpl3+)))
 
+(define-public emacs-counsel-projectile
+  (package
+    (name "emacs-counsel-projectile")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ericdanan/counsel-projectile")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1inc4ndl0ysfwvxk4avbgpj4qi9rc93da6476a5c81xmwpsv8wmq"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)
+       ("emacs-projectile" ,emacs-projectile)))
+    (home-page "https://github.com/ericdanan/counsel-projectile")
+    (synopsis "Enhance Projectile with Ivy")
+    (description
+     "This package uses Ivy to provide additional actions for Projectile
+commands and replacements for existing functions.")
+    (license license:gpl3+)))
+
 (define-public emacs-queue
   (package
     (name "emacs-queue")
@@ -4184,15 +4535,15 @@ be removed from the front.  This type of data structure is sometimes called an
   (package
     (name "emacs-pkg-info")
     (version "0.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/lunaryorn/pkg-info.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lunaryorn/pkg-info.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0nk12dcppdyhav6m6yf7abpywyd7amxd4237zsfd32w4zxsx39k1"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-epl" ,emacs-epl)))
     (home-page "https://github.com/lunaryorn/pkg-info.el")
@@ -4224,14 +4575,15 @@ ongoing operations.")
   (package
     (name "emacs-sparql-mode")
     (version "2.0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ljos/sparql-mode/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1s93mkllxnhy7fw616cnnc2danacdlarys0g3cn89drh0llh53cv"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ljos/sparql-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ywhqk6n5k0l85zjwbnrivnvxjzqipqrggv06lify6yv18qmyl6s"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ljos/sparql-mode")
     (synopsis "SPARQL mode for Emacs")
@@ -4263,6 +4615,31 @@ Emacs default configuration in uncontroversial ways that nearly everyone can
 agree upon.")
     (license license:gpl3+)))
 
+(define-public emacs-undohist-el
+  (let ((commit "d2239a5f736724ceb9e3b6bcaa86f4064805cda0")
+        (revision "1"))
+    (package
+      (name "emacs-undohist-el")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/m2ym/undohist-el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1c0daw246ky7b1x5b8h55x79pl1pjqk1k348l487bdd8zdj4w9wx"))
+         (patches
+          (search-patches "emacs-undohist-ignored.patch"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/m2ym/undohist-el")
+      (synopsis "Save undo history between sessions")
+      (description "This package allows persistent use of undo history for
+individual file buffers.")
+      (license license:gpl3+))))
+
 (define-public emacs-eprime
   (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f"))
     (package
@@ -4299,7 +4676,7 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
          (uri (git-reference
                (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
@@ -4339,15 +4716,16 @@ to all the other commands, too.")
 (define-public emacs-js2-mode
   (package
     (name "emacs-js2-mode")
-    (version "20180301")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mooz/js2-mode/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "13aghgwaqrmbf3pbifcry52kya454wnh1gbdh5805n1n6xgjm5w3"))))
+    (version "20190219")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mooz/js2-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0766bbr4piia9vfr4ivd2gwi8dxah654adv6h28ylz4q8xmfzm1b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mooz/js2-mode/")
     (synopsis "Improved JavaScript editing mode for Emacs")
@@ -4524,14 +4902,15 @@ If you want to mark a folder manually as a project just create an empty
   (package
     (name "emacs-elfeed")
     (version "3.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/skeeto/elfeed/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1wkdrxr6zzqb48czqqv34l87bx8aqjk1739ddqg933aqh241kfvn"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/elfeed.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "01x4ww63lvn04c7f3ab5vx2s20xqisvv8213qwswz7vr9nxja5yi"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -4552,7 +4931,7 @@ and RSS, with a user interface inspired by notmuch.")
               (uri (git-reference
                     (url "https://github.com/sigma/el-x.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1i6j44ssxm1xdg0mf91nh1lnprwsaxsx8vsrf720nan7mfr283h5"))))
@@ -4585,7 +4964,7 @@ provide the historic behavior of @code{flet}, as well as
               (uri (git-reference
                     (url "https://github.com/sigma/mocker.el.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1lav7am41v63xgavq8pr88y828jmd1cxd4prjq7jlbxm6nvrwxh2"))))
@@ -4613,7 +4992,7 @@ maximizes flexibility (at the expense of conciseness).")
               (uri (git-reference
                     (url "https://github.com/technomancy/find-file-in-project.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1sdnyqv69mipbgs9yax88m9b6crsa59rjhwrih197pifl4089awr"))))
@@ -4646,7 +5025,7 @@ functions to assist in reviewing changes on files.")
               (uri (git-reference
                     (url "https://github.com/jorgenschaefer/pyvenv.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"))))
@@ -4677,7 +5056,7 @@ environments (virtualenv) inside Emacs.")
               (uri (git-reference
                     (url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git")
                     (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "00l54k75qk24a0znzl4ij3s3nrnr2wy9ha3za8apphzlm98m907k"))))
@@ -4701,7 +5080,7 @@ indentation (space indentation only).
               (uri (git-reference
                     (url "https://github.com/jorgenschaefer/elpy.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis"))))
@@ -4857,15 +5236,15 @@ window edge.")
   (package
     (name "emacs-writeroom")
     (version "3.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/joostkremers/writeroom-mode/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0yqgp5h3kvvpgva4azakb2wnjl7gsyh45glf75crspv3xyq57f2r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joostkremers/writeroom-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13nbls5qxz5z8firjxaip8m9vzfbbpxmwrmr01njbk4axpwrpj0z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-visual-fill-column" ,emacs-visual-fill-column)))
@@ -4971,42 +5350,40 @@ Dust.js, React/JSX, Angularjs, ejs, etc.")
     (license license:gpl3+)))
 
 (define-public emacs-wgrep
-  (let ((commit "414be70bd313e482cd9f0b70fd2daad4ee23497c"))
-    ;; Late commit fixes compatibility issue with Emacs 26+.
-    (package
-      (name "emacs-wgrep")
-      (version (git-version "2.1.10" "1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/mhayashi1120/Emacs-wgrep")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1sdhd587q3pg92lhiayph87azhalmf1gzrnsprkmqvnphv7mvks9"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
-      (synopsis "Edit a grep buffer and apply those changes to the files")
-      (description
-       "Emacs wgrep allows you to edit a grep buffer and apply those changes
-to the file buffer.  Several backends are supported beside the classic grep:
-ack, ag, helm and pt.")
-      (license license:gpl3+))))
-
-(define-public emacs-helm
   (package
-    (name "emacs-helm")
-    (version "3.1")
+    (name "emacs-wgrep")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://github.com/" name "/helm/archive/v"
+                    "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
                     version ".tar.gz"))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0ymykcsbcgq2kskqc0ddigg0kfznxx3j02mkd5r3c3n8gn3kgz84"))))
+                "1cssqbg03fjb6xwf7idv1l3jjsh9r5r232ryi11czqlxfiv658bj"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
+    (synopsis "Edit a grep buffer and apply those changes to the files")
+    (description
+     "Emacs wgrep allows you to edit a grep buffer and apply those changes
+to the file buffer.  Several backends are supported beside the classic grep:
+ack, ag, helm and pt.")
+    (license license:gpl3+)))
+
+(define-public emacs-helm
+  (package
+    (name "emacs-helm")
+    (version "3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-helm/helm.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x3nv8zvp8vvl30bm2d83hd7zxb0ca64pc8kwb81ml9al6r3mm01"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -5027,16 +5404,15 @@ not tied in the trap of backward compatibility.")
   (package
     (name "emacs-helm-swoop")
     (version "1.7.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/ShingoFukuyama/helm-swoop/archive/"
-                    version
-                    ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ssivsjzlnkg049cg993l8fp09l5nhpz6asj7w5c91zp5kpc6fh7"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ShingoFukuyama/helm-swoop.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0b23j1bkpg4pm310hqdhgnl4mxsj05gpl08b6kb2ja4fzrg6adsk"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -5051,16 +5427,15 @@ for search-based navigation of buffers.")
   (package
     (name "emacs-helm-projectile")
     (version "0.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/bbatsov/helm-projectile/archive/v"
-                    version
-                    ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bbatsov/helm-projectile.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0lph38p112fridighqcizpsyzjbv7qr3d8prbfj6w6q6gfl6cna4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -5084,7 +5459,7 @@ for search-based navigation of buffers.")
          (uri (git-reference
                (url "https://github.com/abo-abo/helm-make.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam"))))
@@ -5102,7 +5477,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "0.20.0")
+    (version "0.21.0")
     (source
      (origin
        (method git-fetch)
@@ -5112,7 +5487,7 @@ target will call @code{compile} on it.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0lfhzg9c931jbx27hpshk3l76gwbp6ggf668sqa77xrvymwdlsnw"))))
+         "0lbrwj67fnvynkdkzvnzp3p8vqlz0ldrcs317vg60bqfhx7hvqkj"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ; Don't exclude 'cider-test.el'.
@@ -5240,7 +5615,7 @@ news items, openrc and runscripts.")
        (uri (git-reference
              (url "https://github.com/emacs-evil/evil")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q"))))
@@ -5267,7 +5642,7 @@ extensions.")
                 (uri (git-reference
                       (url "https://github.com/emacs-evil/evil-collection")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "09v97nk7qawphfijzqxzi2y63ydmfq7hsgpljjxwkykrc5h0kdlj"))))
@@ -5305,24 +5680,279 @@ go to the second most recent edit, etc.  Negative argument, @kbd{C-u -}, is
 used for reverse direction.")
     (license license:gpl2+)))
 
+(define-public emacs-janpath-evil-numbers
+  (let ((commit "d988041c1fe6e941dc8d591390750b237f71f524")
+        (version "0.5")
+        (revision "1"))
+    (package
+      (name "emacs-janpath-evil-numbers")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/janpath/evil-numbers")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16zixhxxcb83m82f2cfiardfn99j3w41v6vh1qk6j9pplrlfw70v"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/janpath/evil-numbers")
+      (synopsis "Increment and decrement numeric literals")
+      (description
+       "This package provides functionality to search for a number up to the
+end of a line and increment or decrement it.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-exchange
+  (let ((commit "47691537815150715e64e6f6ec79be7746c96120")
+        (version "0.41")
+        (revision "1"))
+    (package
+      (name "emacs-evil-exchange")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Dewdrops/evil-exchange")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0bjpn4yqig17ddym6wqq5fm1b294q74hzcbj9a6gs97fqiwf88xa"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/Dewdrops/evil-exchange")
+      (synopsis "Exchange text easily within Evil")
+      (description
+       "This package, a port of @code{vim-exchange}, provides an Evil operator
+for exchanging text.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-replace-with-register
+  (let ((commit "91cc7bf21a94703c441cc9212214075b226b7f67")
+        (version "0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-replace-with-register")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Dewdrops/evil-ReplaceWithRegister")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "14rpn76qrf287s3y2agmddcxi27r226i53ixjvd694ss039g0r11"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/Dewdrops/evil-ReplaceWithRegister")
+      (synopsis "Quickly replace text with the contents of a register")
+      (description
+       "This package provides an Evil operator for replacing text with the
+contents of a register.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-indent-plus
+  (let ((commit "0c7501e6efed661242c3a20e0a6c79a6455c2c40")
+        (version "1.0.0")
+        (revision "1"))
+    (package
+      (name "emacs-evil-indent-plus")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/TheBB/evil-indent-plus")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1g6r1ydscwjvmhh1zg4q3nap4avk8lb9msdqrh7dff6pla0r2qs6"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/TheBB/evil-indent-plus")
+      (synopsis "Text objects based on indentation")
+      (description
+       "This package adds new text objects for @code{evil-mode} based on
+blocks having the same or higher indentation, including or excluding
+surrounding lines.")
+      (license license:gpl2+))))
+
+(define-public emacs-evil-text-object-python
+  (let ((commit "9a064fe6475429145cbcc3b270fcc963b67adb15")
+        (version "1.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-text-object-python")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/wbolster/evil-text-object-python")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "074zpm6mmr1wfl6d5xdf8jk1fs4ccpbzf4ahhkwga9g71xiplszv"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/wbolster/evil-text-object-python")
+      (synopsis "Text objects for Python")
+      (description
+       "This package provides @code{evil-mode} text objects for Python.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-lion
+  (let ((commit "6b03593f5dd6e7c9ca02207f9a73615cf94c93ab")
+        (version "0.0.2")
+        (revision "1"))
+    (package
+      (name "emacs-evil-lion")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edkolev/evil-lion")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1a162hynp0jcsn50c1w5a02mrw9w3q05c7lkqzqd25px3d0p772q"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/edkolev/evil-lion")
+      (synopsis "Align operator for @code{evil-mode}")
+      (description
+       "This package, a port of @code{vim-lion}, provides an operator for
+aligning text objects based on separators.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-expat
+  (let ((commit "4c344ea19b789002d759a202ffbf594730d2c59a")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-evil-expat")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edkolev/evil-expat")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16v7fnldxag6l1lsnrnhdjkga9qi78lbdfbb82k6pmv04991mbkr"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/edkolev/evil-expat")
+      (synopsis "Extra @code{ex} commands for @code{evil-mode}")
+      (description
+       "This package provides additional commands for the @code{ex} command
+line, including functions for version control with Git and for copying and
+pasting into and from @code{tmux} paste buffers.")
+      (license license:gpl3+))))
+
+(define-public emacs-evil-nerd-commenter
+  (package
+    (name "emacs-evil-nerd-commenter")
+    (version "3.3.6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/evil-nerd-commenter")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0074i9lvfs5hkbf63g1xh3n7dbmkax30bppkx2cd394c7zlsvzzk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+    (home-page "https://github.com/redguardtoo/evil-nerd-commenter")
+    (synopsis "Comment and uncomment lines efficiently")
+    (description
+     "This package provides text objects and operators for comments within
+@code{evil-mode}.")
+    (license license:gpl3+)))
+
+(define-public emacs-evil-visual-replace
+  (package
+    (name "emacs-evil-visual-replace")
+    (version "0.0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/troyp/evil-visual-replace")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1gfyrq7xfzmzh3x8k5f08n027dlbwi0pkkxf9c39fkxp4jngibsz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+    (home-page "https://github.com/troyp/evil-visual-replace")
+    (synopsis "Replacement commands for @code{evil-mode} visual blocks")
+    (description
+     "This package provides versions of @code{query-replace} and
+@code{replace-regexp} that work for @code{evil-mode} visual blocks.")
+    (license license:gpl2+)))
+
+(define-public emacs-evil-visualstar
+  (let ((commit "06c053d8f7381f91c53311b1234872ca96ced752")
+        (version "0.0.2")
+        (revision "1"))
+    (package
+      (name "emacs-evil-visualstar")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/bling/evil-visualstar")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0mkbzw12fav945icibc2293m5haxqr3hzkyli2cf4ssk6yvn0x4c"))))
+      (build-system emacs-build-system)
+      (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (home-page "https://github.com/bling/evil-visualstar")
+      (synopsis "Instantly search using the visual selection")
+      (description
+       "This package provides @code{evil-mode} functions for using selected text
+to search.")
+      (license license:gpl3+))))
+
 (define-public emacs-monroe
   (package
     (name "emacs-monroe")
     (version "0.3.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/sanel/monroe/archive/"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-          (base32
-            "0icdx8shkd951phlnmcq1vqaxp1l667q5rjscskc5r22aylakh4w"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sanel/monroe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "101lfrykdbv37spkbw7zihhx26bc1lhjyxbanrcp9880bxj04jiy"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sanel/monroe")
     (synopsis "Clojure nREPL client for Emacs")
     (description
-      "Monroe is a nREPL client for Emacs, focused on simplicity and easy
+     "Monroe is a nREPL client for Emacs, focused on simplicity and easy
 distribution, primarily targeting Clojure users")
     (license license:gpl3+)))
 
@@ -5395,14 +6025,14 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update its sha256
     ;; checksum as well.
-    (version "9.2.2")
+    (version "9.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "02fq3x4haady2vagg9b363ynsrxzpijfp420qhciy7x8y7m89abw"))))
+                "0hqy4lns9q5p0l1ylgmlckqprn9sbasszhznanmv0rsh0gzhsbyw"))))
     (build-system emacs-build-system)
     (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -5416,14 +6046,14 @@ programming and reproducible research.")
   (package
     (inherit emacs-org)
     (name "emacs-org-contrib")
-    (version "20190311")
+    (version "20190402")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
                                   version ".tar"))
               (sha256
                (base32
-                "189p0f70j7z3hh72ay8cxa9n8xkcj06dlw765fwnqd2mm72vx0nb"))))
+                "0hbrhhq6sa0gz4ylzr54raxandqs4y953894b0hlr553b8sfl1wk"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -5517,7 +6147,7 @@ known loosely as deftheme.  Many mode-specific customizations are included.")
          (uri (git-reference
                (url home-page)
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
@@ -5545,7 +6175,7 @@ known loosely as deftheme.  Many mode-specific customizations are included.")
          (uri (git-reference
                (url "https://github.com/djcb/dream-theme")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk"))))
@@ -5589,14 +6219,13 @@ extensibility.")
     (version "1.1.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/ajc/nginx-mode/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ajc/nginx-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bzyrj6zz1hm67bkhw23bam7qc869s3zg7m1rb1c3aa4n0aw90cq"))))
+        (base32 "17dh5pr3gh6adrbqx588gimxbb2fr7iv2qrxv6r48w2727l344xs"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ajc/nginx-mode")
     (synopsis "Emacs major mode for editing nginx config files")
@@ -5652,14 +6281,13 @@ procedures for emacs-lisp-mode.")
     (version "2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Wilfred/ht.el/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/ht.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0fsi27gdrh2dgwdbq43vnw5sz25war6shlxaclr60fl7krpxjkzf"))))
+        (base32 "1p3qa7g0wa0wbviv2f8bda39cjys3naayk5xjm3nxxmqsyy8papx"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
     (home-page "https://github.com/Wilfred/ht.el")
@@ -5675,14 +6303,13 @@ provides functions to convert hash tables from and to alists and plists.")
     (version "0.3.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/aki2o/log4e/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/aki2o/log4e.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
+        (base32 "1l28n7a0v2zkknc70i1wn6qb5i21dkhfizzk8wcj28v44cgzk022"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -5706,14 +6333,13 @@ you to deal with multiple log levels.")
     (version "0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/tekai/gntp.el/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tekai/gntp.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
+        (base32 "1nvyjjjydrimpxy4cpg90si7sr8lmldbhlcm2mx8npklp9pn5y3a"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tekai/gntp.el")
     (synopsis "Growl Notification Protocol for Emacs")
@@ -5730,14 +6356,13 @@ notifications.")
     (version "1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/jwiegley/alert/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jwiegley/alert.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
+        (base32 "1vpc3q40m6dcrslki4bg725j4kv6c6xfxwjjl1ilg7la49fwwf26"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-gntp" ,emacs-gntp)
@@ -5750,20 +6375,48 @@ interface and multiple, selectable \"styles\", whose use is fully
 customizable by the user.")
     (license license:gpl2+)))
 
+(define-public emacs-zones
+  (let ((commit "353fc38a6544eb59887bee045e373406f1d038a5")
+        (revision "1"))
+    (package
+      (name "emacs-zones")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/zones.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0gwnw2giii2a14nlh62xp45f47cw6ikqphhzpmcw6c7mn9x5z2ar"))
+         (patches
+          (search-patches
+           "emacs-zones-called-interactively.patch"))))
+      (build-system emacs-build-system)
+      (home-page "https://www.emacswiki.org/emacs/Zones")
+      (synopsis "Define and act on multiple zones of buffer text")
+      (description "Library @file{zones.el} lets you easily define and
+subsequently act on multiple zones of buffer text.  You can think of this as
+enlarging the notion of region.  In effect, it can remove the requirement of
+target text being a contiguous sequence of characters.  A set of buffer zones
+is, in effect, a (typically) noncontiguous set of text.")
+      (license license:gpl3+))))
+
 (define-public emacs-mu4e-alert
   (package
     (name "emacs-mu4e-alert")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/iqbalansari/mu4e-alert/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iqbalansari/mu4e-alert.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj"))))
+        (base32 "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-alert" ,emacs-alert)
@@ -5842,7 +6495,7 @@ abbreviation and automatically expand it into function templates.")
          (uri (git-reference
                (url "https://github.com/AndreaCrotti/yasnippet-snippets")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9"))))
@@ -5888,7 +6541,7 @@ To make YASnippet aware of these snippets, add the above directory to
                 (uri (git-reference
                       (url "https://github.com/emacs-jp/helm-c-yasnippet")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8"))))
@@ -5950,14 +6603,13 @@ above over the network.")
     (version "1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/skeeto/emacs-memoize/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/skeeto/emacs-memoize.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "05ijgwi4ymxx31vpjm2pn356j85cykknajn14lrzz8pn5sh0vrg4"))))
+        (base32 "04qgnlg4x6va7x364dhj1wbjmz8p5iq2vk36mn9198k2vxmijwzk"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -5976,14 +6628,13 @@ memoizing functions.")
     (version "0.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/coldnew/linum-relative/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/coldnew/linum-relative.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0s4frvr27866lw1rn3jal9wj5rkz9fx4yiszqv7w06azsdgsqksv"))))
+        (base32 "11bjnqqwvr9zrvz5dlm8a0yw4zg9ysh3jdiq5a6iw09d3f0h1v2s"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/coldnew/linum-relative")
     (synopsis "Relative line numbering for Emacs")
@@ -5997,14 +6648,13 @@ number on the left margin in Emacs.")
     (version "1.1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/nonsequitur/idle-highlight-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nonsequitur/idle-highlight-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl"))))
+        (base32 "0x4w1ksrw7dicl84zpf4d4scg672dyan9g95jkn6zvri0lr8xciv"))))
     (build-system emacs-build-system)
     (home-page "https://www.emacswiki.org/emacs/IdleHighlight")
     (synopsis "Highlights all occurrences of the word the point is on")
@@ -6020,14 +6670,13 @@ number on the left margin in Emacs.")
     (version "1.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/marsmining/ox-twbs/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/marsmining/ox-twbs.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1zaq8dczq5wijjk36114k2x3hfrqig3lyx6djril6wyk67vczyqs"))))
+        (base32 "0kd45p8y7ykadmai4jn1x1pgpafyqggwb1ccbjzalxw4k9wmd45f"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/marsmining/ox-twbs")
     (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap")
@@ -6044,14 +6693,13 @@ jQuery and Bootstrap resources included via osscdn.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/daimrod/highlight-sexp/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/daimrod/highlight-sexp.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0jwx87qkln1rg9wmv4qkgkml935fh2pkgrg5x4ca6n5dgb4q6rj1"))))
+        (base32 "12cyk2q5g6p4ac2hykw1cag7dp1prjjnck5f7nalwwaklmy62y79"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/daimrod/highlight-sexp")
     (synopsis "Minor mode that highlights the s-exp at the current position")
@@ -6071,7 +6719,7 @@ jQuery and Bootstrap resources included via osscdn.")
          (uri (git-reference
                (url "https://github.com/zk-phi/highlight-stages.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"))
@@ -6218,14 +6866,13 @@ the hunks and revert them selectively.")
     (version "0.45")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/myrjola/diminish.el/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/myrjola/diminish.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9"))))
+        (base32 "0qpgfgp8hrzz4vdifxq8h25n0a0jlzgf7aa1fpy6r0080v5rqbb6"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/myrjola/diminish.el")
     (synopsis "Diminish minor modes with no modeline display")
@@ -6274,7 +6921,7 @@ performance-oriented and tidy.")
                 (uri (git-reference
                       (url "https://github.com/pkmoore/strace-mode")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f"))))
@@ -6318,14 +6965,13 @@ source file, @file{jl-encrypt.el}.")
     (version "1.53")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/hniksic/emacs-htmlize/archive/release/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hniksic/emacs-htmlize.git")
+             (commit (string-append "release/" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1lzaf9m1qr9dhw4nn53g6wszk2vqw95gpsbrc3y85bams4cn24ga"))))
+        (base32 "0dr235c0z8is3pi5xdgqyqljg6px0b2aya6qb79zkyi477bmz4ip"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/hniksic/emacs-htmlize")
     (synopsis "Convert buffer text and decorations to HTML")
@@ -6340,14 +6986,13 @@ fonts is supported.")
     (version "0.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/philjackson/xmlgen/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/philjackson/xmlgen.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r"))))
+        (base32 "096i29v0badx0a6339h9ckdz78zj59gbjdp7vj7vhkq9d830392s"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -6367,14 +7012,13 @@ conversion for Emacs Lisp.")
     (version "4.7")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/cdominik/cdlatex/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cdominik/cdlatex.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp"))))
+        (base32 "1jj9vmhc4s3ych08bjm1c2xwi81z1p20rj7bvxrgvb5aga2ghi9d"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-auctex" ,emacs-auctex)))
@@ -6392,15 +7036,15 @@ constructs.")
   (package
     (name "emacs-cnfonts")
     (version "0.9.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/cnfonts/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1l6cgcvc6md1zq97ccczankpyi0k4vjx6apflny6kjq3p33lyhf4"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/cnfonts.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "11d44lf0m0kbzq1mvyqkl4aprys0xqaarp08nij57xnynin1rynx"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/cnfonts")
     (synopsis "Emacs Chinese fonts setup tool")
@@ -6435,15 +7079,15 @@ browser.")
   (package
     (name "emacs-pos-tip")
     (version "0.4.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/pitkali/pos-tip/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12jqfy26vjk7lq0aa8yn8zqj8c85fkvx7y9prj0pcn4wqiz2ad2r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pitkali/pos-tip.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0w8bnspnk871qndp18hs0wk4x9x31xr9rwbvf5dc8mcbnj29ch33"))))
     (build-system emacs-build-system)
     ;; The following functions and variables needed by emacs-pos-tip are
     ;; not included in emacs-minimal:
@@ -6461,15 +7105,15 @@ function to be used by other frontend programs.")
   (package
     (name "emacs-pyim-basedict")
     (version "0.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/pyim-basedict/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0nfgxviavkgrpyfsw60xsws4fk51fcmgl8fp6zf4ibqjjbp53n3n"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/pyim-basedict.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0576r8ap9gp91ycjf1d47pn13kxp0f9fysn09zlq44hr0s1y2y5d"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/pyim-basedict")
     (synopsis "Input method dictionary of pyim")
@@ -6529,15 +7173,15 @@ posframe is a child frame displayed within its root window's buffer.
   (package
     (name "emacs-el2org")
     (version "0.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/el2org/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0gd3km1swwvg2w0kdi7370f54wgrflxn63gjgssfjc1iyc9sbqwq"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/el2org.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0mzddqny6wpg1fv99xrvlv7rxmaifvmy5bvj4in4pldhm4cx4q1b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/el2org")
     (synopsis "Convert Emacs-lisp file to org file")
@@ -6549,15 +7193,15 @@ to org file, you can use this tool to write orgify commentary.")
   (package
     (name "emacs-mustache")
     (version "0.23")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Wilfred/mustache.el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0k9lcgil7kykkv1ylrgwy1g13ldjjmgi2cwmysgyb2vlj3jbwpdj"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/mustache.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n2ymd92qpvsby6ms0l3kjhdzzc47rri2aiscc6bs07hm4mjpr9q"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -6576,15 +7220,15 @@ and lambdas.")
   (package
     (name "emacs-org2web")
     (version "0.9.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/tumashu/org2web/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1c0ixcphlhp4c4qdiwq40bc3yp1gp1llp8pxrk4s7ny9n68s52zp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/org2web.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0wsvfn409a2ivbich8b8zqza78sprirg4bl7igx536ydqclmi0n7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -6679,7 +7323,7 @@ It should enable you to implement low-level X11 applications.")
                      Name=~a~@
                      Comment=~a~@
                      Exec=~a~@
-                     TryExec=~@*~a~@
+                     TryExec=~:*~a~@
                      Type=Application~%" ,name ,synopsis exwm-executable)))
                ;; Add a shell wrapper to bin
                (with-output-to-file exwm-executable
@@ -6801,14 +7445,13 @@ on mouse-control.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/bruceravel/gnuplot-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bruceravel/gnuplot-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i"))))
+        (base32 "0bwri3cvm2vr27kyqkrddm28fs08axnd4nm9amfgp54xp20bn4yn"))))
     (build-system gnu-build-system)
     (native-inputs `(("emacs" ,emacs-minimal)))
     (arguments
@@ -6883,14 +7526,13 @@ pressed simultaneously or a single key quickly pressed twice.")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/timcharper/evil-surround/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/timcharper/evil-surround.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r"))))
+        (base32 "1smv7sqhm1l2bi9fmispnlmjssidblwkmiiycj1n3ag54q27z031"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -6906,14 +7548,13 @@ addition of surrounding pairs, such as parantheses and quotes, in evil mode.")
     (version "2.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/linktohack/evil-commentary/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/linktohack/evil-commentary.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230"))))
+        (base32 "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -6932,13 +7573,13 @@ lines, and @code{gc} to comment out the target of a motion.")
     (version "0.4.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/ansi.el/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/ansi.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8"))))
+        (base32 "1hbddxarr40ygvaw4pwaivq2l4f0brszw73w1r50lkjlggb7bl3g"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -6959,13 +7600,13 @@ as bold, underscore or italic.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rejeep/commander.el/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/commander.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y"))))
+        (base32 "1j6hhyzww7wfwk6bllbb5mk4hw4qs8hsgfbfdifsam9c6i4spm45"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7042,14 +7683,13 @@ running tests easier.")
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/purcell/disable-mouse/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/disable-mouse.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0haqpq23r1wx04lsqrrg3p5visg9hx5i36dg55ab003wfsrlrzbc"))))
+        (base32 "1v1y5hf6k6ng7xsvgb27nh740d14m6l4krr0paccda8zgm4mw357"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/disable-mouse")
     (synopsis "Disable mouse commands globally")
@@ -7065,13 +7705,13 @@ running a customisable handler command (@code{ignore} by default). ")
     (version "0.0.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/gongo/json-reformat/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gongo/json-reformat.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "11fbq4scrgr7m0iwnzcrn2g7xvqwm2gf82sa7zy1l0nil7265p28"))
+        (base32 "0qp4n2k6s69jj4gwwimkpadjv245y54wk3bxb1x96f034gkp81vs"))
        (patches (search-patches "emacs-json-reformat-fix-tests.patch"))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -7085,6 +7725,10 @@ running a customisable handler command (@code{ignore} by default). ")
        #:test-command '("ert-runner")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'check 'make-tests-writable
+           (lambda _
+             (for-each make-file-writable (find-files "test"))
+             #t))
          (add-before 'check 'delete-json-objects-order-test
            (lambda _
              (emacs-batch-edit-file "test/json-reformat-test.el"
@@ -7107,13 +7751,13 @@ running a customisable handler command (@code{ignore} by default). ")
     (version "1.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Sterlingg/json-snatcher/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Sterlingg/json-snatcher.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1nfiwsifpdiz0lbrqa77nl0crnfrv5h85ans9b0g5rggnmyshcfb"))))
+        (base32 "05zsgnk7grgw9jzwl80h5sxfpifxlr37b4mkbvx7mjq4z14xc2jw"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/sterlingg/json-snatcher")
     (synopsis "Grabs the path to JSON values in a JSON file")
@@ -7127,13 +7771,13 @@ a @url{http://json.org/, JSON} file.")
     (version "1.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/joshwnj/json-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joshwnj/json-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06h45p4cn767pk9sqi2zb1c65wy5gyyijqxzpglp80zwxhvajdz5"))))
+        (base32 "0i79lqzdg59vkqwjd3q092xxn9vhxspb1vn4pkis0vfvn46g01jy"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-json-reformat" ,emacs-json-reformat)
@@ -7212,7 +7856,7 @@ the actual transformations.")
       (license license:gpl2+))))
 
 (define-public emacs-dired-hacks
-  (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36")
+  (let ((commit "2c1234592aee91dcd9401bcd67213e6a4a464fd9")
         (revision "1"))
     (package
       (name "emacs-dired-hacks")
@@ -7223,10 +7867,10 @@ the actual transformations.")
                 (uri (git-reference
                       (url "https://github.com/Fuco1/dired-hacks.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx"))))
+                  "1g7mky41cahpryzj6frdgzdymknpqq7pidzfjj9304887kijmhj3"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -7264,6 +7908,7 @@ the actual transformations.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference (url home-page) (commit commit)))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0lvwvq6sl80sha9fq5m4568sg534dhmifyjqw75bqddcbf3by84x"))))
@@ -7282,14 +7927,13 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
     (version "3.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/justbur/emacs-which-key/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/justbur/emacs-which-key.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1g8k0js21bc8mlw6hvmg93zgfjhil77c30cv1hf85y4qb9ldvika"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1dh6kr00wmql46whjkvnl953zngiv5j99ypvr1b3cb2174623afb"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -7316,7 +7960,7 @@ settings).")
               (uri (git-reference
                     (url "https://github.com/lewang/ws-butler.git")
                     (commit "323b651dd70ee40a25accc940b8f80c3a3185205")))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb"))))
@@ -7339,14 +7983,13 @@ characters from end of lines.")
     (version "0.8.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/et2010/org-edit-latex/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/et2010/org-edit-latex.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1y4h6wrs8286h9pbsv4d8fr67a885vz8b2k80qgv5qddipi2i78p"))))
+        (base32 "0zcllyhx9n9vcr5w87h0hfz25v52lvh5fi717cb7mf3jh89zh842"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-auctex" ,emacs-auctex)
@@ -7364,15 +8007,15 @@ src block.")
   (package
     (name "emacs-emamux")
     (version "0.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/syohex/emacs-emamux/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0wlqg4icy037bj70b0qmhvwvmiwhagpnx6pnxhq6gzy1hvwlilkx"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-emamux.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19y69qw79miim9cz5ji54gwspjkcp9g2c1xr5s7jj2fiabnxax6b"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-emamux")
     (synopsis "Manipulate Tmux from Emacs")
@@ -7410,14 +8053,13 @@ editing RPM spec files.")
     (version "0.18")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-git-messenger/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-git-messenger.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "17mqki6g0wx46fn7dcbcc2pjxik7vvrcb1j9jzxim8b9psbsbnp9"))))
+        (base32 "04fnby2nblk8l70gv09asxkmnn53fh1pdfs77ix44npp99fyw8ix"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-popup" ,emacs-popup)))
@@ -7439,13 +8081,13 @@ internally.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/tumashu/gitpatch/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tumashu/gitpatch.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1yj6pmic541lcnscjin300k380qp9xdfprs55xg1q57jrkq6f6k7"))))
+        (base32 "1jj12pjwza6cq8a3kr8nqnmm3vxs0wam8h983irry4xr4ifywsn4"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tumashu/gitpatch")
     (synopsis "Mail git patch from Emacs")
@@ -7487,13 +8129,13 @@ the nick color and the background color
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/hrs/engine-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hrs/engine-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vm4p7pcp1vnwwxvps1bhm7i7hkabqqxl898knxf2hqvxys76684"))))
+        (base32 "02xas46nl28mascqsyr1zcd4hn15bh0fjv2xlxv1kmrj0pis94ml"))))
     (build-system emacs-build-system)
     (synopsis "Minor mode for defining and querying search engines")
     (description "@code{engine-mode} is a global minor mode for Emacs.  It
@@ -7565,14 +8207,13 @@ Idris.")
     (version "0.10.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/rmuslimov/browse-at-remote/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rmuslimov/browse-at-remote.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0ymslsp6i1naw25zckv25bf4aaq6qwkbkn95qyzlwg869l802686"))))
+        (base32 "0vhia7xmszcb3lxrb8wh93a3knjfzj48h8nhj4fh8zj1pjz6args"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-f" ,emacs-f)
@@ -7655,7 +8296,7 @@ well as Github-style emojis like @code{:smile:}.  It provides a minor mode
        (uri (git-reference
              (url "https://github.com/ahyatt/emacs-websocket.git")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52"))))
@@ -7786,25 +8427,28 @@ messaging service.")
    (version "2.1.0")
    (source
     (origin
-      (method url-fetch)
-      (uri (string-append
-            "https://github.com/szermatt/emacs-bash-completion/archive/v"
-            version ".tar.gz"))
-      (file-name (string-append name "-" version ".tar.gz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/szermatt/emacs-bash-completion.git")
+            (commit version)))
+      (file-name (git-file-name name version))
       (sha256
-       (base32
-        "1z0qck3v3ra6ivacn8n04w1v33a4xn01xx860761q31qzsv3sksq"))))
+       (base32 "1a1wxcqzh0javjmxwi3lng5i99xiylm8lm04kv4q1lh9bli6vmv0"))))
    (inputs `(("bash" ,bash)))
    (build-system emacs-build-system)
    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'install 'configure
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((bash (assoc-ref inputs "bash")))
-               (emacs-substitute-variables "bash-completion.el"
-                 ("bash-completion-prog" (string-append bash "/bin/bash"))))
-             #t)))))
+    `(#:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'make-git-checkout-writable
+          (λ _
+            (for-each make-file-writable (find-files "."))
+            #t))
+        (add-before 'install 'configure
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((bash (assoc-ref inputs "bash")))
+              (emacs-substitute-variables "bash-completion.el"
+                ("bash-completion-prog" (string-append bash "/bin/bash"))))
+            #t)))))
    (home-page "https://github.com/szermatt/emacs-bash-completion")
    (synopsis "Bash completion for the shell buffer")
    (description
@@ -7857,15 +8501,15 @@ in a generalized CSV (character-separated values) format.")
   (package
     (name "emacs-transmission")
     (version "0.12.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/holomorph/transmission/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1rrlgn96gi1ljfwbwvlyyxbq75xzamlbdhq1bpyadxxmxcvlmk3n"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/holomorph/transmission.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0kvg2gawsgy440x1fsl2c4pkxwp3zirq9rzixanklk0ryijhd3ry"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/holomorph/transmission")
     (synopsis "Emacs interface to a Transmission session")
@@ -7948,31 +8592,25 @@ for external literate programming tools for exporting, weaving and tangling.")
   (package
     (name "eless")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/kaushalmodi/eless/archive/"
-                    "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0gjnnhgw5xs1w3qfnkvwa2nv44gnxr8pkhx3c7qig45p8nh1461h"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kaushalmodi/eless.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0jr7vhh4vw69llhi0fh9ljscljkszkj0acdxl04da5hvqv6pnqbb"))))
     (build-system trivial-build-system)
     (inputs
      `(("bash" ,bash)))
-    (native-inputs
-     `(("tar" ,tar)
-       ("gzip" ,gzip)))
     (arguments
      `(#:modules ((guix build utils))
        #:builder
        (begin
          (use-modules (guix build utils))
-         (setenv "PATH" (string-append
-                         (assoc-ref %build-inputs "tar") "/bin" ":"
-                         (assoc-ref %build-inputs "gzip") "/bin"))
-         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
-         (chdir (string-append "eless" "-" ,version))
+         (copy-recursively (assoc-ref %build-inputs "source") "source")
+         (chdir "source")
          (substitute* "eless" (("/usr/bin/env bash")
                                (string-append (assoc-ref %build-inputs "bash")
                                               "/bin/bash")))
@@ -8005,17 +8643,16 @@ Feautures:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "2.2.6")
+    (version "2.2.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/redguardtoo/evil-matchit/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/evil-matchit.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1yp9sl6542317mn1060ri90zyf6bs6qylagndhqy02p368q31rhi"))))
+        (base32 "12if45pxfndy3d7r4gd3zx4d3jk4d64fdmwkhc3y5zhqq9h9iy4c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -8032,14 +8669,13 @@ evil mode using @kbd{%}.  It is a port of @code{matchit} for Vim.")
     (version "0.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/expez/evil-smartparens/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/expez/evil-smartparens.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1bwzdd3054d407d5j4m3njsbvmc9r8zzp33m32pj3b3irxrl68q0"))))
+        (base32 "1di4qz5fbrlwbg16c2j0m7y8zqfxw027qd7zqmc3rwk9znbhg7wl"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)
@@ -8057,13 +8693,13 @@ emulates Vim features and provides Vim-like key bindings.")
     (version "0.1.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/blorbx/evil-quickscope/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/blorbx/evil-quickscope.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1r26a412mmar7vbf89zcifswiwpdg30mjzj32xdyqss57aqi83ma"))))
+        (base32 "1ja9ggj70wf0nmma4xnc1zdzg2crq9h1cv3cj7cgwjmllflgkfq7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -8086,14 +8722,13 @@ features and provides Vim-like key bindings.")
     (version "1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/dbrock/bongo/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dbrock/bongo.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1pcsyyrvj7djjjwpaswd1i782hvqvlvs39cy9ns0k795si6xd64d"))))
+        (base32 "1q3ws2vn062dh7ci6jn2k2bcn7szh3ap64sgwkzdd6f1pas37fnr"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/dbrock/bongo")
     (synopsis "Media player for Emacs")
@@ -8201,7 +8836,7 @@ formatting rules for that language.")
        (uri (git-reference
              (url "https://github.com/nicferrier/emacs-kv.git")
              (commit "721148475bce38a70e0b678ba8aa923652e8900e")))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))))
@@ -8317,40 +8952,34 @@ Features:
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cute-jumper/epipe/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cute-jumper/epipe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "05a036852g4j63k1mhvyfrcsgkl9lczayi7x61570ysw3cli5wp5"))))
+        (base32 "0lkisi1s7sn12nx8zh58qmsxwnk1rjwryj18wcbr148xqz3swg57"))))
     (build-system trivial-build-system)
     (inputs
      `(("bash" ,bash)
        ("perl" ,perl)))
-    (native-inputs
-     `(("tar" ,tar)
-       ("gzip" ,gzip)))
     (arguments
      `(#:modules
        ((guix build utils))
        #:builder
        (begin
          (use-modules (guix build utils))
-         ;; Extract source
-         (setenv "PATH" (string-append
-                         (assoc-ref %build-inputs "tar") "/bin" ":"
-                         (assoc-ref %build-inputs "gzip") "/bin"))
-         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
-         (chdir (string-append ,name "-" ,version))
-         ;; Patch shebangs
+         ;; Extract source.
+         (copy-recursively (assoc-ref %build-inputs "source") "source")
+         (chdir "source")
+         ;; Patch shebangs.
          (substitute* "epipe"
            (("/usr/bin/env bash")
             (string-append (assoc-ref %build-inputs "bash") "/bin/bash")))
          (patch-shebang "epipe.pl"
                         (list (string-append (assoc-ref %build-inputs "perl")
                                              "/bin")))
-         ;; Installation
+         ;; Install.
          (for-each (lambda (file)
                      (install-file file (string-append %output "/bin")))
                    '("epipe" "epipe.pl"))
@@ -8367,14 +8996,13 @@ the pipeline, featuring the support for running @code{emacsclient}.")
     (version "0.03")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-hcl-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-hcl-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pvw74qpwh0znqzp6syp4wxjqs7dp1hbn5h7xfk97mff9l5d8k6x"))))
+        (base32 "0jqrgq15jz6pvx38pnwkizzfiih0d3nxqphyrc92nqpcyimg8b6g"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-hcl-mode")
     (synopsis "Major mode for the Hashicorp Configuration Language")
@@ -8390,14 +9018,13 @@ highlighting and indentation support.")
     (version "0.06")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/syohex/emacs-terraform-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-terraform-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0h9267ifdjmcin4sj8slxydbacx4bqicbvg8pa1qq2l72h9m5381"))))
+        (base32 "05hn8kskx9lcgn7bzgam99c629zlryir2pickwrqndacjrqpdykx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-hcl-mode" ,emacs-hcl-mode)))
@@ -8460,13 +9087,13 @@ directories of plain text notes, inspired by Notational Velocity.")
     (version "0.62")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/syohex/emacs-anzu/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-anzu.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "16cg3897x5znbmgk7sdy0qyd0fbic9dmmz0dchq2vz5z29yhg4cz"))))
+        (base32 "1lzvc0ihcbplir4hqfyxfqpsd78arz15gk92kmq4f8ggbkl37fan"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-anzu")
     (synopsis "Show number of matches in mode-line while searching")
@@ -8481,13 +9108,14 @@ Anzu.zim.")
     (name "emacs-emmet-mode")
     (version "1.0.8")
     (source (origin
-	      (method url-fetch)
-	      (uri (string-append "https://github.com/smihica/emmet-mode"
-				  "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-	      (sha256
-	       (base32
-		"0g3p22yabfcp98cfv9dgl9il2m2pd53isq2q11vb3s7qyn31f7zj"))))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/smihica/emmet-mode.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dsa85bk33j90h1ypaz1ylqh9yp2xvlga237h3kwa5y3sb0d5ydi"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/smihica/emmet-mode")
     (synopsis "Unofficial Emmet's support for Emacs")
@@ -8561,15 +9189,15 @@ standard Unix password manager\").")
   (package
     (name "emacs-pass")
     (version "1.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/NicolasPetton/pass/archive/"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "0aiz90gklk0cb8n4v1s3l0mx6pp2b7f4k2c0fjpihwmga13yklwn"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/NicolasPetton/pass.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05h4hacv3yygyjcjj004qbyqjpkl4pyhwgp25gsz8mw5c66l70cx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-password-store" ,emacs-password-store)
@@ -8650,13 +9278,13 @@ match and total match information in the mode-line in various search modes.")
   (version "2.0.0")
   (source
     (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/skeeto/elisp-finalize/archive/"
-                          version ".tar.gz"))
-      (file-name (string-append name "-" version ".tar.gz"))
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/skeeto/elisp-finalize.git")
+            (commit version)))
+      (file-name (git-file-name name version))
       (sha256
-        (base32
-         "077fycy3i5f0kjw5z3rhf4kld5lbk2idz690nkwhkz04vppk4q4x"))))
+        (base32 "1gvlm4i62af5jscwz0jccc8ra0grprxpg2rlq91d5nn8dn5lpy79"))))
   (build-system emacs-build-system)
   (propagated-inputs
     `(("emacs-cl-generic" ,emacs-cl-generic)))
@@ -8825,13 +9453,13 @@ Emacs.")
     (version "0.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/purcell/elisp-slime-nav/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/elisp-slime-nav.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vq7ym1q47p97gxrv45c9gm96d23xbp237vkmakikj6grngxjfb2"))))
+        (base32 "11vyy0bvzbs1h1kggikrvhd658j7c730w0pdp6qkm60rigvfi1ih"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/elisp-slime-nav")
     (synopsis "Make @code{M-.} and @code{M-,} work for elisp like they do in SLIME")
@@ -8845,16 +9473,15 @@ in @code{emacs-lisp-mode}, together with an elisp equivalent of
   (package
     (name "emacs-dedicated")
     (version "1.0.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/emacsorphanage/dedicated/archive/"
-                    version
-                    ".tar.gz"))
-              (sha256
-               (base32
-                "0nhbkp278cvcznb5rp3jp9ii3mjgb79zx8iwfrw7zfk3yg8688ni"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacsorphanage/dedicated.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0pba9s0h37sxyqh733vi6k5raa4cs7aradipf3826inw36jcw414"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacsorphanage/dedicated")
     (synopsis "Emacs minor mode for toggling a windows's \"dedicated\" flag")
@@ -8879,7 +9506,7 @@ the source file.")
                 (uri (git-reference
                       (url "https://github.com/paul-issartel/nnreddit.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0j4h3bnga640250jdq8bwyja49r41ssrsjd6lba4gzzllqk02nbn"))))
@@ -8896,13 +9523,13 @@ newsreader.")
     (version "0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mickeynp/makey/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mickeynp/makey.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0kzl4q1wf2zhkx9nrymxa67n99iq0bj7zqhpaz4byksna1hsxfmv"))))
+        (base32 "1rr7vpm3xxzcaam3m8xni3ajy8ycyljix07n2jzczayri9sd8csy"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mickeynp/makey")
     (synopsis "Emacs interactive command-line mode")
@@ -8967,13 +9594,13 @@ outline-mode), so there is no such thing like an outshine mode, only
     (version "2.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/joostkremers/parsebib/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joostkremers/parsebib.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0cxagnmc5ab6idmb26axpizhr4sqglkncc59768yavn3p04jyq63"))))
+        (base32 "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joostkremers/parsebib")
     (synopsis "Library for parsing bib files")
@@ -8987,13 +9614,13 @@ outline-mode), so there is no such thing like an outshine mode, only
     (version "0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cpitclaudel/biblio.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cpitclaudel/biblio.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0vwrljmab8m1z83048gxx5mryml9f5pb3h0jpwkvqcl0ra152lzx"))))
+        (base32 "1gxjind6r235az59dr8liv03d8994mqb8a7m28j3c12q7p70aziz"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-seq" ,emacs-seq)
@@ -9022,7 +9649,7 @@ automatically fetched from well-curated sources, and formatted as BibTeX.")
          (uri (git-reference
                (url "https://github.com/tmalsburg/helm-bibtex.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "14lyx0vbqr97p3anzrsp7m3q0kqclyjcdwplpraim403fcklzbnz"))))
@@ -9119,15 +9746,15 @@ and @code{erc-send-modify-hook} to download and show images.")
   (package
     (name "emacs-helm-gtags")
     (version "1.5.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/syohex/emacs-helm-gtags/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1a10snhg6nnnan6w9a7mcziy26vxbsr3c35i0gcarnkdp2yqng36"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-helm-gtags.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0zyspn9rqfs3hkq8qx0q1w5qiv30ignbmycyv0vn3a6q7a5fsnhx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -9143,13 +9770,13 @@ and @code{erc-send-modify-hook} to download and show images.")
     (version "0.4.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/rolandwalker/list-utils/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rolandwalker/list-utils.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1xc1xh8c82h5gdjbgpdsdclgwxkxbb7h3x3a2bscpm41g8pnan4p"))))
+        (base32 "0ql159v7sxs33yh2l080kchrj52vk34knz50cvqi3ykpb7djg3sz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rolandwalker/list-utils")
     (synopsis "List-manipulation utility functions")
@@ -9162,13 +9789,13 @@ and @code{erc-send-modify-hook} to download and show images.")
     (version "2.0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/emacsfodder/move-text/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacsfodder/move-text.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1sjfja9r25692pgcldgnjzkapzy970m14jh9l4pajysiqcdk72g0"))))
+        (base32 "06jxk5g23822gfmwrxhc34zand3dr8p2wjh1zs3j61ibz6n0nmz1"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/emacsfodder/move-text")
     (synopsis "Move current line or region with M-up or M-down")
@@ -9225,14 +9852,13 @@ orient yourself in the code, and tell which statements are at a given level.")
     (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/DamienCassou/hierarchy/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/hierarchy.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1a463v5zk6zis2p8cs4mads3iyxh266yahi6j6y0paggfl2yhkc8"))))
+        (base32 "1kykbb1sil5cycfa5aj8dhsxc5yrx1641i2np5kwdjid6ahdlz5r"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/DamienCassou/hierarchy")
     (synopsis "Library to create and display hierarchy structures")
@@ -9253,7 +9879,7 @@ navigate and display hierarchy structures.")
          (uri (git-reference
                (url "https://github.com/emacsorphanage/tree-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "13bbdhdmqg4x9yghanhr8fsbsxbnypzxdxgicz31sjjm675kpnix"))))
@@ -9276,7 +9902,7 @@ navigate and display hierarchy structures.")
                 (uri (git-reference
                       (url "https://github.com/ahungry/md4rd.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0mvv1mvsrpkrmikcpfqf2zbawnzgq33j6zjdrlv48mcw57xb2ak9"))))
@@ -9331,15 +9957,15 @@ navigate and display hierarchy structures.")
   (package
     (name "emacs-datetime")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/doublep/datetime/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12wqpj67rjij2ki7nmw38rz3k2bsq68pk6zswknlcn9qhp1zd9w9"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/doublep/datetime.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fdswqi53qx924lib7nd9dazn0916xf1ybrh3bcn3f8cn6b8ikg5"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/doublep/datetime/")
     (synopsis "Library to work with dates in Emacs")
@@ -9360,7 +9986,7 @@ timestamps and date-time format strings library for Emacs.")
          (uri (git-reference
                (url "https://github.com/theodorewiles/org-mind-map.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0jgkkgq7g64zckrmjib0hvz0qy3ynz5vz13qbmlpf096l3bb65wn"))))
@@ -9379,13 +10005,13 @@ timestamps and date-time format strings library for Emacs.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mojochao/npm-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mojochao/npm-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1kq1ww22dwf8c2i2b4z2ldbbmnihj65kb7n5vzvwkch9h4hxpqh5"))))
+        (base32 "1mh6nbffciw4yhv049kdhh796ysj1x21ndm3fwymhskb3dy0w1ss"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/mojochao/npm-mode")
     (synopsis "Minor mode for working with @code{npm} projects")
@@ -9424,7 +10050,7 @@ functions provided by @file{subr.el}.")
          (uri (git-reference
                (url "https://github.com/re5et/itail.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "044nzxh1hq41faxw3lix0wy78vfz304pjcaa5a11dqfz7q3gx5cv"))))
@@ -9443,13 +10069,13 @@ tramp.")
     (version "1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Wilfred/loop.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/loop.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1z3rhh3zyjabz36410yz0lp4a0qwwj0387as662wvx3z9y54jia9"))))
+        (base32 "1gs95xnmnn8aa4794k7h8mw1sz1nfdh9v0caqj6yvnsdnwy74n5x"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Wilfred/loop.el")
     (synopsis "Imperative loop structures for Emacs")
@@ -9464,13 +10090,13 @@ continue.")
     (version "1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Wilfred/elisp-refs/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/elisp-refs.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "02nzcn3v14n7mp7q32j5r4wdlpsw3zixzh6cf0cdyarfir6dly3p"))))
+        (base32 "0w7k91xf69zc0zkjrw8h8sjdjf9xq9qs5zhvajhd718lzf93564b"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -9499,7 +10125,7 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
          (uri (git-reference
                (url "https://github.com/bbatsov/crux.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1fdxvv25cs01sg6fmvmzxpzvs50i6v8n2jya60lbavxqqhi0sbxd"))))
@@ -9516,13 +10142,13 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
     (version "1.13")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/stsquad/emacs_chrome/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stsquad/emacs_chrome.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1r92kqggslqasza718z4ka883mqfbnibdm43f0j9gaipk0msm2wf"))))
+        (base32 "12dp1xj09jrp0kxp9xb6cak9dn6zkyis1wfn4fnhzmxxnrd8c5rn"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -9598,7 +10224,7 @@ macro takes a first argument (whose value must be an alist) and a body.")
          (uri (git-reference
                (url "https://github.com/jschaf/esup.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "04lxmd0h7mfjjl0qghrycgff0vcv950j1wqv0dbkr61jxp64n5fv"))))
@@ -9616,13 +10242,13 @@ your Emacs.")
     (version "0.03")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/syohex/emacs-sourcemap/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-sourcemap.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0bmd5l3cx2iyl7vxn84xdhs80b07kpdpfwki28lh5d0kmm5qs6m6"))))
+        (base32 "115g2mfpbfywp8xnag4gsb50klfvplqfh928a5mabb5s8v4a3582"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/syohex/emacs-sourcemap")
     (synopsis "Sourcemap parser")
@@ -9639,7 +10265,7 @@ your Emacs.")
                 (uri (git-reference
                       (url "https://github.com/joddie/macrostep.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"))))
@@ -9685,13 +10311,13 @@ until the top-level form is no longer a macro call.")
     (version "2.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Fanael/parent-mode/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/parent-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0gxbl5s1w96v6v55b7aaansgw4sxhzfx9nrsvpk3pfhsibs6yqjd"))))
+        (base32 "0i5bc7lyyrx6swqlrp9l5x72yzwi53qn6ldrfs99gh08b3yvsnni"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/parent-mode")
     (synopsis "Get major mode's parent modes")
@@ -9773,13 +10399,13 @@ until the top-level form is no longer a macro call.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DamienCassou/beginend/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DamienCassou/beginend.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0z4rbwffh9vxfvcrlvym4p73z7gf72q0b5iv33llbpcpbijknnrq"))))
+        (base32 "1jbhg73g1rrkbwql5vi2b0ys9avfazmwzwgd90gkzwavw0ch9cvl"))))
     ;; TODO: Run tests.
     (build-system emacs-build-system)
     (inputs
@@ -9805,7 +10431,7 @@ key again.")
          (uri (git-reference
                (url "https://github.com/dimitri/mbsync-el.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0yj93y2mpxlir8x73znlg1slxlv4blm1vjv5h2w3j8lxg8bxvmn6"))))
@@ -9829,7 +10455,7 @@ within Emacs.")
          (uri (git-reference
                (url "https://github.com/purcell/ibuffer-projectile.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1nd26cwwdpnwj0g4w393rd59klpyr6wqrnyr6scmwb5d06bsm44n"))))
@@ -9879,13 +10505,13 @@ documentation.")
     (version "1.0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/hylang/hy-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hylang/hy-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0b4pvbr2hf77bq2vsyfsv653q0dab7qzq85wc7kdziw7687jdf2z"))))
+        (base32 "1jxximiznz7fw9ys5k6plw85zrbzvxidql7py1fdi425fdp4058z"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -9901,13 +10527,13 @@ documentation.")
     (version "0.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/yasuyk/web-beautify/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/yasuyk/web-beautify.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1j57hwid74id4swkx2g0iljfawx0k9c7qjrwqc0mv657x9p78hcs"))))
+        (base32 "0vms7zz3ym53wf1zdrkbf2ky2xjr1v134ngsd0jr8azyi8siw84d"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/yasuyk/web-beautify")
     (synopsis "Format HTML, CSS and JavaScript, JSON")
@@ -9986,7 +10612,7 @@ their meaning for the current Emacs major-mode.")
          (uri (git-reference
                (url "https://github.com/jkitchin/org-ref.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1rxz0bjdsayk0slv23i07d9xhj2m7s4hsc81wc2d1cs52dkr5zmz"))))
@@ -10064,15 +10690,15 @@ files.")
   (package
     (name "emacs-add-hooks")
     (version "3.1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/nickmccurdy/add-hooks/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "03a28gb3298g7pc2qji9hi44p4d99ljp5mpi9cmg42ldv8fl6549"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nickmccurdy/add-hooks.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jv9fpcsm572zg0j1mbpbfkqgdlqapy89xhhj19pswkhjns1y2wl"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/nickmccurdy/add-hooks/")
     (synopsis "Emacs function for setting multiple hooks")
@@ -10086,13 +10712,13 @@ duplicate hook and function names further into a single declarative call.")
     (version "0.9.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Malabarba/fancy-narrow/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Malabarba/fancy-narrow.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0rf2rnzg82pdqch041yyx3f9ddixffkk9s2ydzg8hwy66sg3385n"))))
+        (base32 "0vcr1gnqawvc1yclqs23jvxm6bqix8kpflf1c7znb0wzxmz9kx7y"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Malabarba/fancy-narrow/releases")
     (synopsis "Imitate @code{narrow-to-region} with more eye candy")
@@ -10111,14 +10737,13 @@ buffer.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/for-GET/know-your-http-well/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/for-GET/know-your-http-well.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1y3kwz88awcgwaivlswq0q4g2i02762r23lpwg61bfqy5lrjjqnj"))))
+        (base32 "1lppggnii2r9fvlhh33gbdrwb50za8lnalavlq9s86ngndn4n94k"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -10178,7 +10803,7 @@ buffer.")
          (uri (git-reference
                (url "https://github.com/zk-phi/download-region.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0v52djg39b6k2snizd9x0qc009ws5y0ywqsfwhqgcbs5ymzh7dsc"))))
@@ -10193,15 +10818,15 @@ downloading manager for Emacs.")
   (package
     (name "emacs-helpful")
     (version "0.15")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Wilfred/helpful/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1xmvhphzb4hbg647dz4lafy6hd19b7bk3lxni6irqrzdsrclhzn6"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Wilfred/helpful.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1rqnx7672175288yqaslw0d9vw04j6psw7mys8j9zcp2i72hlvkn"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-elisp-refs" ,emacs-elisp-refs)))
@@ -10232,15 +10857,15 @@ and doesn't require memorisation of commands.
   (package
     (name "emacs-logview")
     (version "0.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/doublep/logview/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1vd11ppm46ldqsiwhqgw91p34gbjh1y82r9mxcn9r2gj65nvhxcp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/doublep/logview.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qhzs75pxnaksbhczmpdcy2zmrqavlzkzss7ik5nv2wf9vs0sn02"))))
     (propagated-inputs
      `(("emacs-datetime" ,emacs-datetime)))
     (build-system emacs-build-system)
@@ -10282,15 +10907,15 @@ functions.")
   (package
     (name "emacs-benchmark-init")
     (version "1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/dholm/benchmark-init-el/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0szyqr4nncwz4vd5gww1vz31kf9r2lx25p4d0d09pm35974x53kz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dholm/benchmark-init-el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kyn1izm5sbqbp9whnhk9dn3yc7zy8bz5san5w3ivi3rpx15fh94"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/dholm/benchmark-init-el")
     (synopsis "Benchmark Emacs @code{require} and @code{load} calls")
@@ -10362,13 +10987,13 @@ buffer with each of your todos.")
     (version "0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cosmicexplorer/f3/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cosmicexplorer/f3.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06b8i1jvklm5k3k90n65f197l1miq1xlxqkqpbppw4h3rhl4y98h"))))
+        (base32 "1qg48zbjdjqimw4516ymrsilz41zkib9321q0caf9474s9xyp2bi"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -10414,7 +11039,7 @@ buffer with each of your todos.")
          (uri (git-reference
                (url "https://github.com/nashamri/academic-phrases.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0qfzsq8jh05w4zkr0cvq3i1hdn97bq344vcqjg46sib26x3wpz6r"))))
@@ -10447,7 +11072,7 @@ browse the phrases by the paper section and fill-in the blanks if required.")
                 (uri (git-reference
                       (url "https://github.com/abo-abo/auto-yasnippet.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1i8k2qiyzd5rq0zplk4xb5nfa5mp0ibxbzwqj6c7877waq7244xk"))))
@@ -10478,14 +11103,13 @@ yasnippet fields and mirrors to be.")
     (version "0.2.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Fanael/highlight-numbers/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/highlight-numbers.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "030v5p11d4n0581ncv499l1fqrmfziy756q6378x2bv22ixghqqp"))))
+        (base32 "1r07mpyr7rhd7bkg778hx6vbhb4n9ixgzkpszhgks7ri6ia38pj8"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-parent-mode" ,emacs-parent-mode)))
@@ -10558,7 +11182,7 @@ interactive behavior should be different.")
                 (uri (git-reference
                       (url "https://github.com/purcell/default-text-scale")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0zds01c3q5yny6ab1fxfkzzgn1kgl3q23lxxap905f4qd70v922h"))))
@@ -10575,13 +11199,13 @@ decreasing the default font size in all GUI Emacs frames.")
     (version "1.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/benma/visual-regexp.el/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/benma/visual-regexp.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1czmhvcivlcdyz7rfm0vd4a3xsgmy4qbvbl6yjxc217wrxqflr92"))))
+        (base32 "12zpmzwyp85dzsjpxd3279kpfi9yz3jwc1k9fnb3xv3pjiil5svg"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/benma/visual-regexp.el/")
     (synopsis "Regexp command with interactive visual feedback")
@@ -10602,7 +11226,7 @@ interactive visual feedback.")
          (uri (git-reference
                (url "https://github.com/Lindydancer/faceup.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1yzmy7flrhrh0i10bdszx8idx6r8h6czm4vm4q0z6fp5fw94zwrx"))))
@@ -10627,7 +11251,7 @@ perform regression test for packages that provide font-lock rules.")
          (uri (git-reference
                (url "https://github.com/greghendershott/racket-mode")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0vp4bbbplqvmnhjpl6ajrlydmrhqzil56cfbs18m5c5fddx0zlh7"))))
@@ -10659,7 +11283,7 @@ perform regression test for packages that provide font-lock rules.")
          (uri (git-reference
                (url "https://github.com/mkcms/grep-context.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1nqfa6kjzjshww4hnwg1c0vcr90bdjihy3kmixq3c3jkvxg99b62"))))
@@ -10687,7 +11311,7 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-firefox.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs"))))
@@ -10745,14 +11369,13 @@ decrease the number at point.")
     (version "0.1.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/Fanael/highlight-defined/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/highlight-defined.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1ryd66989b5byqdw8jmjrjf0c78iiz72wibld750skcnj5h5h506"))))
+        (base32 "08czwa165rnd5z0dwwdddn7zi5w63sdk31l47bj0598kbly01n7r"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/highlight-defined")
     (synopsis "Syntax highlighting of known Elisp symbols")
@@ -10767,13 +11390,13 @@ macros, faces and variables.  To enable call @code{highlight-defined-mode}. ")
     (version "0.4.10")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/DogLooksGood/parinfer-mode/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DogLooksGood/parinfer-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06ba9qi59sm9ih9m38fbr8kj4qkvrm58n0c0ngfjz60gnr9x9pcv"))))
+        (base32 "0v97ncb0w1slb0x8861l3yr1kqz6fgw1fwl1z9lz6hh8p2ih34sk"))))
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
        ("emacs-rainbow-delimiters" ,emacs-rainbow-delimiters)
@@ -10795,7 +11418,7 @@ keep Parens and Indentation inline with one another.")
               (uri (git-reference
                     (url "https://github.com/emacs-helm/helm-eww.git")
                     (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"))))
@@ -10820,7 +11443,7 @@ bookmarks and history.")
                 (uri (git-reference
                       (url "https://github.com/stumpwm/stumpwm-contrib.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1dfwsvz1c8w6j4jp0kzaz78ml3f5dp0a5pvf090kwpbpg176r7iq"))))
@@ -10862,14 +11485,13 @@ bookmarks and history.")
     (version "0.1.6")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/creichert/ido-vertical-mode.el/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/creichert/ido-vertical-mode.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0dprdxq8wvqd45dinwj92k0kixr07c8xvspa6i613mjcpxgwjg53"))))
+        (base32 "1lv82q639xjnmvby56nwqn23ijh6f163bk675s33dkingm8csj8k"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/creichert/ido-vertical-mode.el")
     (synopsis "Makes ido-mode display vertically")
@@ -10882,13 +11504,13 @@ bookmarks and history.")
     (version "0.1.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Fanael/wordgen.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fanael/wordgen.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1h2iyixdm49h53pwj9ics9gb9h3g6wa4hainpnjg6mfarf49jkmg"))))
+        (base32 "06vbc9ycz1nbjwjkg99y3lj6jwb6lnwnmkqf09yr00jjrrfhfash"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/Fanael/wordgen.el")
     (synopsis "Random word generator")
@@ -10932,7 +11554,7 @@ the previously visible buffer part after each scroll.")
          (uri (git-reference
                (url "https://github.com/dgutov/highlight-escape-sequences.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "05mc3w1f8ykf80914a1yddw6j8cmh0h57llm07xh89s53821v2is"))))
@@ -10949,14 +11571,13 @@ Emacs minor mode to escape sequences in code.")
     (version "1.2.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/rakanalh/emacs-dashboard/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rakanalh/emacs-dashboard.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1738lmbgq6gk24hcwic0qjyajr21l5xzhya4pv58dw1bhd6vxv9g"))))
+        (base32 "1hhh1kfsz87qfmh45wjf2r93rz79rq0vbyxlfrsl02092zjbl1zr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-page-break-lines" ,emacs-page-break-lines)))
@@ -10973,13 +11594,13 @@ sections for bookmarks, projectil projects, org-agenda and more. ")
     (version "1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/anwyn/slime-company/archive/"
-                           "v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/anwyn/slime-company.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1myl79pxj501xfr5qc5a24qddsn2l5iaamg7rf7fpny7mr9v70ar"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1hl1hqkc1pxga9k2k8k15d7dip7sfsmwf4wm4sh346m6nj606q8g"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-slime" ,emacs-slime)
@@ -11026,7 +11647,7 @@ interactive loop.")
          (uri (git-reference
                (url "https://github.com/xiongtx/eros.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0whlsq90v13fz69k3wjrwcwb9gkpfxqjd75mg3nrp85j9nwhb5i4"))))
@@ -11048,7 +11669,7 @@ interactive loop.")
          (uri (git-reference
                (url "https://github.com/tuhdo/semantic-stickyfunc-enhance.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "16dxjsr5nj20blww4xpd4jzgjprzzh1nwvb810ggdmp9paf4iy0g"))))
@@ -11068,14 +11689,13 @@ scroll up to read the function name and then scroll down to original position.")
     (version "4.4.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/ryuslash/git-auto-commit-mode/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ryuslash/git-auto-commit-mode.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "04avxmalsl3b7zi2vipfw9rb4wrwysnipsbch96skviql9axk870"))))
+        (base32 "0psmr7749nzxln4b500sl3vrf24x3qijp12ir0i5z4x25k72hrlh"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ryuslash/git-auto-commit-mode")
     (synopsis "Emacs Minor mode to automatically commit and push")
@@ -11092,14 +11712,13 @@ the current upstream.")
     (version "0.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/iquiw/company-restclient/archive/"
-             "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/iquiw/company-restclient.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1kr3f0wgqlk7r171bvb2kinv7fanwj2md01wdpx04qkgwcr1as00"))))
+        (base32 "0i1fh5lvqwlgn3g3fzh0xacxyljx6gkryipn133vfkv4jbns51n4"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-company" ,emacs-company)
@@ -11128,7 +11747,7 @@ It provides auto-completion for HTTP methods and headers in
          (uri (git-reference
                (url "https://github.com/nicferrier/emacs-noflet")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0g70gnmfi8n24jzfci9nrj0n9bn1qig7b8f9f325rin8h7x32ypf"))))
@@ -11158,14 +11777,13 @@ through the symbol: @command{this-fn}.")
     (version "0.5.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/jacktasia/dumb-jump/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jacktasia/dumb-jump.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07n0xjgpxjpf3vp9gxchkjpydyj0zm166930as0kwiwkhjlsirsf"))))
+        (base32 "00ph85vp8sa3k99qrdxfz4l8zx121q9xf47vvspzg26bk9l4nwin"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #f ; FIXME: Tests freeze when run.
@@ -11208,7 +11826,7 @@ Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
          (uri (git-reference
                (url "https://github.com/bgamari/dts-mode.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
@@ -11230,7 +11848,7 @@ device tree files.")
        (uri (git-reference
              (url "https://github.com/cbowdon/daemons.el")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "00bkzfaw3bqykcks610vk9wlpa2z360xn32bpsrycacwfv29j7g4"))))
@@ -11323,7 +11941,7 @@ matching regexps.")
        (uri (git-reference
              (url "https://github.com/dieggsy/esh-autosuggest")
              (commit version)))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "116pdjgpjy9b0psm5kzwkwy7dq8vn0p6dy75dl1zsy2xrjf1iqdw"))))
@@ -11353,7 +11971,7 @@ autosuggestions with:
          (uri (git-reference
                (url "https://gitlab.petton.fr/DamienCassou/desktop-environment")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0x73x5hy7w55jrzy3xvqhk90rrsznmxjqvsvwhh21qznv5w269xz"))))
@@ -11398,14 +12016,13 @@ This code is still alpha.")
     (version "20180518")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/egh/zotxt-emacs/archive/"
-             "23a4a9f74a658222027d53a9a83cd4bcc583ca8b"
-             ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/egh/zotxt-emacs.git")
+             (commit "23a4a9f74a658222027d53a9a83cd4bcc583ca8b")))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1qlibaciqgsva6fc7vv9krssjq00bi880396jk7llbi3c52q9n1y"))))
+        (base32 "09fq3w9yk9kn6bz7y9kgpiw612dvj3yzsdk734js6zgb0p8lfd2c"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)
@@ -11432,7 +12049,7 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
          (uri (git-reference
                (url "https://github.com/emacs-evil/evil-magit")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "134v7s03jvbhm70mavwab85r09i68g2a5bvriirh0chz1av2y16v"))))
@@ -11464,7 +12081,7 @@ describing the key binding changes.")
        (uri (git-reference
              (url "https://github.com/hlissner/evil-multiedit")
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3"))))
@@ -11493,7 +12110,7 @@ defaults.")
          (uri (git-reference
                (url "https://github.com/Somelauw/evil-org-mode")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "176hrw7y7nczffbyhsa167b8rvfacsmcafm2gpkrdjqlrikbmrhl"))))
@@ -11697,7 +12314,7 @@ on-line service.")
          (uri (git-reference
                (url "https://github.com/Sodel-the-Vociferous/helm-company")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1ciirsanhajdqm5iwl8k9ywf4jha1wdv4sc4d9kslyrfr9zn4q6k"))))
@@ -11723,7 +12340,7 @@ framework.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-descbinds")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1n89p56qwa243w1c85i5awnaf7piwjsvfi7nmnsrwm33hix5dknk"))))
@@ -11751,7 +12368,7 @@ you searched for and execute it, or view its documentation.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-emms")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1595r09y3rmwd46nnhvjja3hb8j2ila295ijxv61cg52ws4wginh"))))
@@ -11773,14 +12390,12 @@ from @code{emms-source-file-default-directory}.")
       (version (git-version "20180703" "2" commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/emacs-helm/helm-exwm/archive/"
-               commit
-               ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacs-helm/helm-exwm.git")
+               (commit commit)))
          (sha256
-          (base32
-           "0n7hdiajw5vxl8ha2r9r4cl4i7crza25348825wb6acwhhzijxcj"))))
+          (base32 "064ziinqa5sdv7rfjn0y278l12kld176fr88k4h78pgf2f2n7cd8"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -11806,7 +12421,7 @@ See @code{helm-exwm-switch-browser} for an example.")
          (uri (git-reference
                (url "https://github.com/yasuyk/helm-flycheck")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1a2yfxhz04klwhcandqvfzysxp6b7bxyxx1xk1x3kds5hif5fkl4"))))
@@ -11832,7 +12447,7 @@ See @code{helm-exwm-switch-browser} for an example.")
          (uri (git-reference
                (url "https://github.com/emacs-helm/helm-ls-git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0vsq1n3xl3ghy5zik2scm7jrs501n4kybdqd6yw6j0cv4jxdqbr0"))))
@@ -11865,14 +12480,12 @@ projects unrelated to current-buffer.
       (version (git-version  "20180513" "1" commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/emacs-helm/helm-mu/archive/"
-               commit
-               ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacs-helm/helm-mu.git")
+               (commit commit)))
          (sha256
-          (base32
-           "0qm4xi3i957scm50nar398pv4x8y03si10l77jb9ckjaviyq2hj9"))))
+          (base32 "1lh0ahxdc5b2z18m9p30gwg8sbg33sjwkjr38p7h5xsm5fm7i0fz"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -11899,6 +12512,7 @@ e.g: @code{from:Peter to:Anne flag:attach search term}.")
        (uri (git-reference
              (url "https://github.com/emacs-helm/helm-pass")
              (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "0vglaknmir3yv4iwibwn8r40ran8d04gcyp99hx73ldmf3zqpnxv"))))
@@ -11930,7 +12544,7 @@ provided by other Emacs packages dealing with pass:
          (uri (git-reference
                (url "https://github.com/mhayashi1120/Emacs-imagex")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0v66wk9nh0raih4jhrzmmyi5lbysjnmbv791vm2230ffi2hmwxnd"))))
@@ -11969,7 +12583,7 @@ image, rotate it, save modified images, and more.")
          (uri (git-reference
                (url "https://github.com/purcell/package-lint")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1hfricsgmy3x9snnd2p4xq6vnnv94qdsxxnxp07b3hqc9bhw31rq"))))
@@ -12037,7 +12651,7 @@ file.")
                "https://gitlab.com/Ambrevar/mu4e-conversation/"
                "repository/archive.tar.gz?ref="
                commit))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0b52hf9rm2afba9pvgink9bwqm705sk0y5qikp0ff5sk53wqvy29"))))
@@ -12396,7 +13010,7 @@ few (like NOTE).")
          (uri (git-reference
                (url "https://github.com/jwiegley/git-annex-el")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1mzv40gj7k10h7h5s43my8msgzjpj680qprqa9pp8nbyhl49v3wh"))))
@@ -12829,7 +13443,7 @@ Emacs.")
   (let ((commit "a0623667b07a4bf60980c97b078e9faed97ace79"))
     (package
       (name "emacs-matrix-client")
-      (version (git-version "0.0.0" "3" commit))
+      (version (git-version "0.0.0" "4" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -12840,6 +13454,18 @@ Emacs.")
                  (base32
                   "1zya8id3y9wzjaj7nplq7br6nhm3lsskv0fkn1xr1y77fzcfgcdb"))))
       (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'add-missing-require
+             ;; Fix a filter error at runtime due to a missing require.
+             ;; Reported upstream:
+             ;; <https://github.com/alphapapa/matrix-client.el/issues/76>
+             (lambda _
+               (substitute* "matrix-client-room.el"
+                 (("\\(require 'dash-functional\\)" all)
+                  (string-append all "\n" "(require 'anaphora)")))
+               #t)))))
       (propagated-inputs
        `(("a" ,emacs-a)
          ("anaphora" ,emacs-anaphora)
@@ -13209,13 +13835,13 @@ to open SQLite databases.")
     (version "1.2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/NixOS/nix-mode/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/NixOS/nix-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "06aqz0czznsj8835jqnk794sy2p6pa8kxfqwh0nl5d5vxivria6z"))))
+        (base32 "1vz3s2jx14nzy53f04d821n4f2s22ys5h9s7af6cnpynkwawyhhq"))))
     (build-system emacs-build-system)
     (inputs
      `(("emacs-company" ,emacs-company)
@@ -13262,7 +13888,7 @@ front end to mpc, a client for the @dfn{Music Player Daemon} (MPD).")
        (uri (git-reference
              (url "https://github.com/mkmcc/gnuplot-mode")
              (commit "601f6392986f0cba332c87678d31ae0d0a496ce7")))
-       (file-name (string-append name "-" version "-checkout"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "14f0yh1rjqc3337j4sbqzfb7pjim2c8a7wk1a73xkrdkmjn82vgb"))))
@@ -13395,7 +14021,7 @@ opposed to character-based).")
 (define-public emacs-disk-usage
   (package
     (name "emacs-disk-usage")
-    (version "1.3.0")
+    (version "1.3.3")
     (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage")
     (source
      (origin
@@ -13406,7 +14032,7 @@ opposed to character-based).")
              ".el"))
        (sha256
         (base32
-         "0ky6c34z7c6hd4yvcrcsidkfk2kvffkg63v02vch2i6hg1n6n028"))))
+         "0h1jwznd41gi0vg830ilfgm01q05zknikzahwasm9cizwm2wyizj"))))
     (build-system emacs-build-system)
     (synopsis "Sort and browse disk usage listings with Emacs")
     (description "Disk Usage is a file system analyzer: it offers a tabulated
@@ -13748,6 +14374,813 @@ 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-undo-propose-el
+  (let ((commit "5f1fa99a04369a959aad01b476fe4f34229f28cd")
+        (version "1.0.0")
+        (revision "1"))
+    (package
+      (name "emacs-undo-propose-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jackkamm/undo-propose-el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1p9h1fqmva07mcs46rqrg9vqn537b615as84s9b7xh76k1r8h1c0"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/jackkamm/undo-propose-el")
+      (synopsis "Simple and safe navigation of @code{undo} history")
+      (description "This package permits navigation of @code{undo} history in a
+temporary buffer, which is read-only save for @code{undo} commands, and
+subsequent committal of a chain of @code{undo} commands as a single edit in
+the @code{undo} history.")
+      (license license:gpl3+))))
+
+(define-public emacs-elisp-docstring-mode
+  (let ((commit "f512e509dd690f65133e55563ebbfd2dede5034f")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-elisp-docstring-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Fuco1/elisp-docstring-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0al8m75p359h4n82rf0dsl22qfdg9cwwywn5pn7x6gb96c7qrqaa"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/Fuco1/elisp-docstring-mode")
+      (synopsis "Major mode for editing Emacs Lisp docstrings")
+      (description "This package provides font lock and automatic escaping and
+unescaping of quotes.")
+      (license license:gpl3+))))
+
+(define-public emacs-vimrc-mode
+  (let ((commit "13bc150a870d5d4a95f1111e4740e2b22813c30e")
+        (version "0.3.1")
+        (revision "1"))
+    (package
+      (name "emacs-vimrc-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mcandre/vimrc-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0026dqs3hwygk2k2xfra90w5sfnxrfj7l69jz7sq5glavbf340pk"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/mcandre/vimrc-mode")
+      (synopsis "Major mode for Vimscript")
+      (description "This package provides font lock and @code{beginning-} and
+@code{end-of-defun} functions for Vimscript files.")
+      (license license:gpl3+))))
+
+(define-public emacs-flycheck-haskell
+  (let ((commit "32ddff87165a7d3a35e7318bee997b5b4bd41278")
+        (version "0.8")
+        (revision "79"))
+    (package
+      (name "emacs-flycheck-haskell")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/flycheck/flycheck-haskell")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "10pgsbagq6qj4mshq5sypv0q0khck92b30sc793b4g1pfpsxvgjn"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-seq" ,emacs-seq)
+         ("emacs-flycheck" ,emacs-flycheck)
+         ("emacs-haskell-mode" ,emacs-haskell-mode)
+         ("emacs-let-alist" ,emacs-let-alist)))
+      (home-page "https://github.com/flycheck/flycheck-haskell")
+      (synopsis "Flycheck for Haskell")
+      (description "This package configures syntax-checking for Haskell
+buffers.")
+      (license license:gpl3+))))
+
+(define-public emacs-js2-refactor-el
+  (let ((commit "79124b3274c43ad1f9ec6205fa362576552db02f")
+        (version "0.9.0")
+        (revision "27"))
+    (package
+      (name "emacs-js2-refactor-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/magnars/js2-refactor.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wswhlpbd3airrhyncb9vblqigwnqg9n96z0iis8jnz37q2whica"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)
+         ("emacs-js2-mode" ,emacs-js2-mode)
+         ("emacs-yasnippet" ,emacs-yasnippet)
+         ("emacs-multiple-cursors" ,emacs-multiple-cursors)))
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)
+         ("emacs-espuds" ,emacs-espuds)))
+      (home-page "https://github.com/magnars/js2-refactor.el")
+      (synopsis "JavaScript refactoring in Emacs")
+      (description "This package provides various refactoring functions for
+JavaScript.")
+      (license license:gpl3+))))
+
+(define-public emacs-prettier
+  (let ((commit "e9b73e81d3e1642aec682195f127a42dfb0b5774")
+        (version "0.1.0")
+        (revision "1"))
+    (package
+      (name "emacs-prettier")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/prettier/prettier-emacs")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0hj4fv3fgc60i6jrsx4a81s5c9fsxxafhhs3q2q1dypsscjci9ph"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/prettier/prettier-emacs")
+      (synopsis "Automatic formatting of JavaScript code")
+      (description "This package integrates Prettier with Emacs, and
+provides a minor mode that autoformats the buffer upon saving.")
+      (license license:expat))))
+
+(define-public emacs-fish-mode
+  (package
+    (name "emacs-fish-mode")
+    (version "0.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wwwjfy/emacs-fish")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0a74ghmjjrxfdhk4mvq6lar4w6l6lc4iilabs99smqr2fn5rsslq"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/wwwjfy/emacs-fish")
+    (synopsis "Major mode for Fish shell scripts")
+    (description "This package provides syntax highlighting and indentation
+functions for Fish shell scripts.")
+    (license license:gpl3+)))
+
+(define-public emacs-eshell-up
+  (let ((commit "9c100bae5c3020e8d9307e4332d3b64e7dc28519")
+        (version "0.0.3")
+        (revision "12"))
+    (package
+      (name "emacs-eshell-up")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/peterwvj/eshell-up")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "00zdbcncjabgj5mp47l1chymx5na18v2g4kj730dgmj3rnl3iz2q"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/peterwvj/eshell-up")
+      (synopsis "Quickly go to a parent directory in @code{Eshell}")
+      (description "This package provides quick navigation to a specific
+parent directory using @code{Eshell}.")
+      (license license:gpl3+))))
+
+(define-public emacs-tco-el
+  (let ((commit "482db5313f090b17ed22ccd856f0e141dc75afe6")
+        (version "0.3")
+        (revision "1"))
+    (package
+      (name "emacs-tco-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Wilfred/tco.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1z7xkbrqznk6ni687qqknp8labcyhl8y6576hjfri89fn21385y9"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/Wilfred/tco.el")
+      (synopsis "Tail-call optimization for Emacs Lisp")
+      (description "This package provides tail-call optimization for Emacs
+Lisp functions that call themselves in tail position.")
+      (license license:gpl3+))))
+
+(define-public emacs-equake
+  (let ((commit "ed15fd55cd4f2276161a6f712ed0b83cd10a8cdc")
+        (version "0.85")
+        (revision "1"))
+    (package
+      (name "emacs-equake")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/emacsomancer/equake/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "04kj88rlnn22gwmmv2gly2ibi6jka6l2cd4979pi6lhlvqqgjdnj"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-tco-el" ,emacs-tco-el)))
+      (home-page "https://gitlab.com/emacsomancer/equake/")
+      (synopsis "Drop-down console for @code{Eshell} and terminal emulators")
+      (description "This package provides a Quake-style drop-down console
+compatible with Emacs' shell modes.")
+      (license license:gpl3+))))
+
+(define-public emacs-vdiff
+  (let ((commit "09e15fc932bfd2febe1d4a65780a532394562b07")
+        (version "0.2.3")
+        (revision "1"))
+    (package
+      (name "emacs-vdiff")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/justbur/emacs-vdiff/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1gvqi5l4zs872nn4pmj603aza09d81qad2rgijzv268lif8z34db"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-hydra" ,emacs-hydra)))
+      (home-page "https://github.com/justbur/emacs-vdiff/")
+      (synopsis "Frontend for diffing based on vimdiff")
+      (description "This package permits comparisons of two or three buffers
+based on diff output.")
+      (license license:gpl3+))))
+
+(define-public emacs-vdiff-magit
+  ;; Need to use a more recent commit than the latest release version because
+  ;; of Magit and Transient
+  (let ((commit "b100d126c69e5c26a61ae05aa1778bcc4302b597")
+        (version "0.3.2")
+        (revision "8"))
+    (package
+      (name "emacs-vdiff-magit")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/justbur/emacs-vdiff-magit/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "16cjmrzflf2i1w01973sl944xrfanakba8sb4dpwi79d92xp03xy"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-vdiff" ,emacs-vdiff)
+         ("emacs-magit" ,emacs-magit)
+         ("emacs-transient" ,emacs-transient)))
+      (home-page "https://github.com/justbur/emacs-vdiff-magit/")
+      (synopsis "Frontend for diffing based on vimdiff")
+      (description "This package permits comparisons of two or three buffers
+based on diff output.")
+      (license license:gpl3+))))
+
+(define-public emacs-all-the-icons-dired
+  (let ((commit "980b7747d6c4a7992a1ec56afad908956db0a519")
+        (version "1.0")
+        (revision "1"))
+    (package
+      (name "emacs-all-the-icons-dired")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jtbm37/all-the-icons-dired/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1pvbgyxfj4j205nj1r02045f1y4wgavdsk7f45hxkkhms1rj8jyy"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-all-the-icons" ,emacs-all-the-icons)))
+      (home-page "https://github.com/jtbm37/all-the-icons-dired/")
+      (synopsis "Show icons for each file in @code{dired-mode}")
+      (description "This package allows icons from @file{all-the-icons.el} to
+be used in @code{dired-mode}.")
+      (license license:gpl3+))))
+
+(define-public emacs-exwm-edit
+  (let ((commit "961c0f3ea45766b888c73d7353da13d329538034")
+        (version "0.0.1")
+        (revision "1"))
+    (package
+      (name "emacs-exwm-edit")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/agzam/exwm-edit/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "087pk5ckx753qrn6xpka9khhlp7iqlz76w7861x90av2f5cgy6fw"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-exwm" ,emacs-exwm)))
+      (home-page "https://github.com/agzam/exwm-edit/")
+      (synopsis "Open temp buffers for editing text from EXWM buffers")
+      (description "This package facilitates editing text from EXWM buffers by
+generating a temp buffer in which any useful Emacs utilities and modes can be
+invoked.")
+      (license license:gpl3+))))
+
+(define-public emacs-ert-async
+  (package
+    (name "emacs-ert-async")
+    (version "0.1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/ert-async.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0hn9i405nfhjd1h9vnwj43nxbbz00khrwkjq0acfyxjaz1shfac9"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/rejeep/ert-async.el")
+    (synopsis "Async support for ERT")
+    (description "This package allows ERT to work with asynchronous tests.")
+    (license license:gpl3+)))
+
+(define-public emacs-prodigy-el
+  (let ((commit "701dccaa56de9e6a330c05bde33bce4f3b3d6a97")
+        (version "0.7.0")
+        (revision "28"))
+    (package
+      (name "emacs-prodigy-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rejeep/prodigy.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1vyvxawlayp2nra0q83146q2nzv8qwn5a4nj0sx1jc90a0a83vgj"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)
+         ("emacs-f" ,emacs-f)))
+      (native-inputs
+       `(("emacs-el-mock" ,emacs-el-mock)
+         ("emacs-ert-async" ,emacs-ert-async)))
+      (home-page "https://github.com/rejeep/prodigy.el")
+      (synopsis "Manage external services from within Emacs")
+      (description "This package provides a GUI for defining and monitoring services.")
+      (license license:gpl3+))))
+
+(define-public emacs-web-server
+  (let ((commit "cafa5b7582c57252a0884b2c33da9b18fb678713")
+        (version "0.1.1")
+        (revision "1"))
+    (package
+      (name "emacs-web-server")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/eschulte/emacs-web-server/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1c0lfqmbs5hvz3fh3c8wgp6ipwmxrwx9xj264bjpj3phixd5419y"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/eschulte/emacs-web-server/")
+      (synopsis "Web server with handlers in Emacs Lisp")
+      (description "This package supports HTTP GET and POST requests with
+url-encoded parameters, as well as web sockets.")
+      (license license:gpl3+))))
+
+(define-public emacs-markdown-preview-mode
+  (package
+    (name "emacs-markdown-preview-mode")
+    (version "0.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ancane/markdown-preview-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-markdown-mode" ,emacs-markdown-mode)
+       ("emacs-websocket" ,emacs-websocket)
+       ("emacs-web-server" ,emacs-web-server)))
+    (arguments '(#:include '("\\.el$" "\\.html$")))
+    (home-page "https://github.com/ancane/markdown-preview-mode")
+    (synopsis "Live web development in Emacs")
+    (description "This package provides a minor mode for preview of Markdown
+files, and sends rendered Markdown to a web browser.")
+    (license license:gpl3+)))
+
+(define-public emacs-dotenv-mode
+  (package
+    (name "emacs-dotenv-mode")
+    (version "0.2.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/preetpalS/emacs-dotenv-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fplkhxnsgdrg10iqsmw162zny2idz4vvv35spsb9j0hsk8imclc"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/preetpalS/emacs-dotenv-mode")
+    (synopsis "Major mode for @file{.env} files")
+    (description "This package provides syntax highlighting for @file{.env}
+files.")
+    (license license:gpl3+)))
+
+(define-public emacs-add-node-modules-path
+  (let ((commit "f31e69ccb681f882aebb806ce6e9478e3ac39708")
+        (version "1.2.0")
+        (revision "10"))
+    (package
+      (name "emacs-add-node-modules-path")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/codesuki/add-node-modules-path")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0p106bqmvdr8by5iv02bshm339qbrjcch2d15mrm4h3nav03v306"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/codesuki/add-node-modules-path")
+      (synopsis "Add @file{node_modules} to the buffer-local @file{exec-path}")
+      (description "This package searches the parent directories of the
+current file for the project's @file{node_modules/.bin/} directory, allowing
+Emacs to find project-specific installations of packages.")
+      (license license:expat))))
+
+(define-public emacs-flow-minor-mode
+  (let ((commit "d1b32a7dd0d33c6a00a106da5f4b2323602cbd3e")
+        (version "0.3")
+        (revision "4"))
+    (package
+      (name "emacs-flow-minor-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/an-sh/flow-minor-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "169r4ib9qg9q6fm3p0p23qs1qx4pa9pg1qvyq4ysr85i7kwygppl"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/an-sh/flow-minor-mode")
+      (synopsis "Minor mode for JavaScript Flow files")
+      (description "This package integrates Flow with Emacs, allowing for
+definition-jumping and type-checking on demand.")
+      (license license:bsd-3))))
+
+(define-public emacs-rjsx-mode
+  (let ((commit "03dd8d1683501e81b58674d64c3032b7b718402c")
+        (version "0.4.0")
+        (revision "35"))
+    (package
+      (name "emacs-rjsx-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/felipeochoa/rjsx-mode")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1kc44g9f38klpjklmz9n50a28nqv7prz6ck6ghdr6bnj1s98pb8a"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-js2-mode" ,emacs-js2-mode)))
+      (home-page "https://github.com/felipeochoa/rjsx-mode")
+      (synopsis "Major mode for JSX files")
+      (description "This package extends the parser of @code{js2-mode} to
+support JSX syntax.")
+      (license license:expat))))
+
+(define-public emacs-origami-el
+  (let ((commit "1f38085c8f9af7842765ed63f7d6dfe4dab59366")
+        (version "1.0")
+        (revision "1"))
+    (package
+      (name "emacs-origami-el")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gregsexton/origami.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0ha1qsz2p36pqa0sa2sp83lspbgx5lr7930qxnwd585liajzdd9x"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/gregsexton/origami.el")
+      (synopsis "Flexible text-folding")
+      (description "This package provides a minor mode for collapsing and
+expanding regions of text without modifying the actual contents.")
+      (license license:expat))))
+
+(define-public emacs-peep-dired
+  (let ((commit "c88a9a3050197840edfe145f11e0bb9488de32f4")
+        (version "0")
+        (revision "1"))
+    (package
+      (name "emacs-peep-dired")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/asok/peep-dired")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wy5qpnfri1gha2cnl6q20qar8dbl2mimpb43bnhmm2g3wgjyad6"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/asok/peep-dired")
+      (synopsis "Preview files in another window")
+      (description "This package provides a minor mode that allows files to be
+previewed by scrolling up and down within a @code{dired} buffer.")
+      (license license:gpl3+))))
+
+(define-public emacs-counsel-etags
+  (package
+    (name "emacs-counsel-etags")
+    (version "1.8.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/counsel-etags")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d8nlrbsyza6q7yqm9248bxxsf49qf6hchg3zwv0l11acn3w8np5"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/redguardtoo/counsel-etags")
+    (synopsis "Fast @code{Ctags}/@code{Etags} solution with @code{ivy-mode}")
+    (description "This package uses @code{ivy-mode} to facilitate navigating
+and searching through @code{Ctags} files.")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-dash
+  (let ((commit "192b862185df661439a06de644791171e899348a")
+        (version "1.3.0")
+        (revision "18"))
+    (package
+      (name "emacs-helm-dash")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/areina/helm-dash")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "06am5vnr4hsxkvh2b8q8kb80y5x1h3qyv7gwggswwhfa7w2vba3w"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
+      (home-page "https://github.com/areina/helm-dash")
+      (synopsis "Offline documentation browser for APIs using Dash docsets")
+      (description "This package uses Helm to install and navigate through
+Dash docsets.")
+      (license license:gpl3+))))
+
+(define-public emacs-counsel-dash
+  (let ((commit "07fa74a94ff4da5b6c8c4810f5e143e701b480d2")
+        (version "0.1.3")
+        (revision "3"))
+    (package
+      (name "emacs-counsel-dash")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nathankot/counsel-dash")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "17h2m9zsadq270mkq12kmdzmpbfjiwjbg8n1rg2apqnm1ndgcwf8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm-dash" ,emacs-helm-dash)
+         ("emacs-dash" ,emacs-dash)
+         ("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/nathankot/counsel-dash")
+      (synopsis "Offline documentation browser for APIs using Dash docsets")
+      (description "This package uses @code{ivy-mode} to install and navigate
+through Dash docsets.")
+      (license license:expat))))
+
+(define-public emacs-el-patch
+  (package
+    (name "emacs-el-patch")
+    (version "2.2.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/raxod502/el-patch")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18djslz177q6q33y82zmg2v6n9236a76kiqfvxdk4vbqzjbq82f7"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/raxod502/el-patch")
+    (synopsis "Future-proof your Emacs customizations")
+    (description "This package allows for an alternate definition of an Elisp
+function to be specified and for any differences from the original definition
+to be examined using Ediff.")
+    (license license:expat)))
+
+(define-public emacs-info-plus
+  (let ((commit "b837d710f7d58db586116cf6f75e75a9a074bc4b")
+        (version "5101")
+        (revision "55"))
+    (package
+      (name "emacs-info-plus")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/info-plus")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1knyjkdm4rcs3qrc51jllw46ph7ycq5zxnvl70ydchzfwava43h6"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/emacsmirror/info-plus")
+      (synopsis "Extensions to @file{info.el}")
+      (description "This package extends Emacs' @file{info.el} by allowing
+outline-enabled table of contents, additional metadata association for Info
+nodes, and more.")
+      (license license:gpl2+))))
+
+(define-public emacs-eval-sexp-fu-el
+  (package
+    (name "emacs-eval-sexp-fu-el")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hchbaw/eval-sexp-fu.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "01mpnpgmlnfbi2yw9dxz5iw72mw3lk223bj172i4fnx3xdrrxbij"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/hchbaw/eval-sexp-fu.el")
+    (synopsis "Enhancements for evaluating s-expressions")
+    (description "This package provides provides variants of
+@code{eval-last-sexp} that work on the containing list or s-expression, as
+well as an option for visually flashing evaluated s-expressions.")
+    (license license:gpl3+)))
+
+(define-public emacs-counsel-tramp
+  (package
+    (name "emacs-counsel-tramp")
+    (version "0.6.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/masasam/emacs-counsel-tramp")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0nz0733x2b9b5nkwivvhv5c8747dng451na1sdfbkx5x9fjs5gc7"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/masasam/emacs-counsel-tramp")
+    (synopsis "Ivy interface for TRAMP")
+    (description "This package allows @code{ivy-mode} to display and filter
+SSH servers.")
+    (license license:gpl3+)))
+
+(define-public emacs-eacl
+  (package
+    (name "emacs-eacl")
+    (version "2.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/redguardtoo/eacl")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ksn11sm3g1ja5lpjz3hrzzw8b480mfcb3q589m52qjgvvn5iyfv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/redguardtoo/eacl")
+    (synopsis "Auto-complete lines by using @code{grep} on a project")
+    (description "This package provides auto-completion cammands for single
+and multiple lines of code in a project.")
+    (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.
@@ -13852,3 +15285,52 @@ C-f} to advance by #xa4 characters.
        "This package provides an Emacs Helm interface for search suggestions
 and article extracts for Wikipedia.")
       (license license:gpl3+))))
+
+(define-public emacs-webfeeder
+  (package
+  (name "emacs-webfeeder")
+  (version "1.0.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (string-append
+             "https://elpa.gnu.org/packages/webfeeder-"
+             version
+             ".tar"))
+      (sha256
+        (base32
+          "06y5vxw9m6pmbrzb8v2i3w9dnhgqxz06vyx1knmgi9cczlrj4a64"))))
+  (build-system emacs-build-system)
+  (home-page "https://gitlab.com/Ambrevar/emacs-webfeeder")
+  (synopsis "Build RSS and Atom webfeeds from HTML files")
+  (description
+    "Webfeeder is an Emacs library to generate RSS and Atom feeds from HTML
+files.  The various elements of the HTML input are parsed with customizable
+functions (e.g. @code{webfeeder-title-function}).")
+  (license license:gpl3+)))
+
+(define-public emacs-evil-numbers
+  (let ((commit "6ea1c8c3a9b37bed63d48f1128e9a4910e68187e"))
+    (package
+      (name "emacs-evil-numbers")
+      (version (git-version "0.4" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/dieggsy/evil-numbers")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1aq95hj8x13py0pwsnc6wvd8cc5yv5qin8ym9js42y5966vwj4np"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/dieggsy/evil-numbers")
+      (synopsis "Increment and decrement numbers in Emacs")
+      (description "This package increments and decrements binary, octal,
+decimal and hex literals.  It works like C-a/C-x in Vim, i.e. searches for
+number up to EOL and then increments or decrements and keeps zero padding up
+(unlike in Vim).  When a region is active, as in Evil's visual mode, all the
+numbers within that region will be incremented/decremented (unlike in Vim).
+
+It is a fork of https://github.com/cofi/evil-numbers, which is unmaintained.")
+      (license license:gpl3+))))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index e00931c504..7c60cc6021 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
@@ -68,14 +68,14 @@
 (define-public emacs
   (package
     (name "emacs")
-    (version "26.1")
+    (version "26.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/emacs/emacs-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0b6k1wq44rc8gkvxhi1bbjxbz3cwg29qbq8mklq2az6p1hjgrx0w"))
+               "13n5m60i47k96mpv5pp6km2ph9rv2m5lmbpzj929v02vpsfyc70m"))
              (patches (search-patches "emacs-exec-path.patch"
                                       "emacs-fix-scheme-indent-function.patch"
                                       "emacs-source-date-epoch.patch"))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 5ea2b17197..a65998c369 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -1013,6 +1013,8 @@ SPI, I2C, JTAG.")
                             "uptools/atcmd/atinterf.c")
                (("/opt/freecalypso/loadtools")
                 (string-append (assoc-ref outputs "out") "/lib/freecalypso/loadtools"))
+               (("\\$\\{INSTALL_PREFIX\\}/loadtools")
+                (string-append (assoc-ref outputs "out") "/lib/freecalypso/loadtools"))
                (("/opt/freecalypso")
                 (assoc-ref outputs "out")))
              #t)))))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index b02e450f3e..bb5addd4a2 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -460,13 +460,13 @@ and Game Boy Color games.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-core/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-core.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
+        (base32 "116fndl6652zrp1r6ag4xv3dzp1x52mlvadj8xwflq07fd5rhri1"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -508,13 +508,13 @@ core library.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-audio-sdl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
+        (base32 "0z19amfg9vr2pqjjri1ipc7hs681fzjcnb0f9y7bjhp5n8d7p6bb"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -554,13 +554,13 @@ SDL audio plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-input-sdl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
+        (base32 "1dyazfbdjycdfslq8jixqiqhziw0rlkvach2r9dz91229jmkyc9c"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -599,13 +599,13 @@ SDL input plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-hle.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
+        (base32 "0pi31qzjjp7aypdvvnz6ms18g09c4gqzxi6328zj8sji94b75gf0"))))
     (build-system gnu-build-system)
     (inputs
      `(("mupen64plus-core" ,mupen64plus-core)))
@@ -641,13 +641,13 @@ high-level emulation (HLE) RSP processor plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-z64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
+        (base32 "0nfyjns9k8xbg3aqs7593nfaxvlj72h3l8h467442xlk8ajfcylx"))))
     (build-system gnu-build-system)
     (inputs
      `(("mupen64plus-core" ,mupen64plus-core)))
@@ -683,13 +683,13 @@ Z64 RSP processor plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-arachnoid.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
+        (base32 "1v9fqwpb6pawr8z5cm2ki7bqkks4iyr5c4jy4v5khj6h8zcv55gc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -729,13 +729,13 @@ Arachnoid video plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
+        (base32 "0qn5za7g7796kh2ag3xpmhbqg0yf71g9liz6ks0rha8pz73lgs01"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -783,13 +783,13 @@ Glide64 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64mk2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
+        (base32 "08pm28a36dpr0cvr8pzw0n5ksdazp7jqvlmqfy2lwb4dm0cwhkqd"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -833,13 +833,13 @@ Glide64MK2 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-rice.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
+        (base32 "0rpmbcq67gsj5h5jjis146378qc1mskskvx20y1ikx59yhbamh13"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -881,13 +881,13 @@ Rice Video plugin.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-video-z64.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))
+        (base32 "04qa2fdd6dakpk2v0d4l80xh9b4h8gm71g80c0wyyxdhmhwk1r9c"))
        (patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -936,13 +936,13 @@ Z64 video plugin.")
     (version "2.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mupen64plus/mupen64plus-ui-console.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
+        (base32 "0vrf98qa6a0y3647kslsv644fag233dxh5dcr1yncjiiwickcr5a"))
        (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -999,21 +999,21 @@ towards a working Mupen64Plus for casual users.")
   (package
     (name "nestopia-ue")
     (version "1.48")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/rdanbrook/nestopia/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "184y05z4k4a4m4022niy625kan0rklh8gcxyynxli1fss2sjjrpv"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; We don't need libretro for the GNU/Linux build.
-                  (delete-file-recursively "libretro")
-                  #t))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rdanbrook/nestopia.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19c8vx5yxbysl0sszk5blfngwacshdgwbf44g1qaxvq8ywiyxmb4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; We don't need libretro for the GNU/Linux build.
+           (delete-file-recursively "libretro")
+           #t))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1185,7 +1185,7 @@ play them on systems for which they were never designed!")
 (define-public mame
   (package
     (name "mame")
-    (version "0.206")
+    (version "0.209")
     (source
      (origin
        (method git-fetch)
@@ -1195,7 +1195,7 @@ play them on systems for which they were never designed!")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0i01h5ars1yd96ndmzhk47931hf261m8frqz1ha7s2gy52f0q86y"))
+         "08qvwmx8wbfkqxiccmcff86dsrlq6wjxf6blnhhrsbzic1ji99bh"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -1333,7 +1333,8 @@ play them on systems for which they were never designed!")
                #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python-sphinx" ,python-sphinx)
+       ("sphinx" ,python-sphinx)
+       ("sphinxcontrib-svg2pdfconverter" ,python-sphinxcontrib-svg2pdfconverter)
        ("texinfo" ,texinfo)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 4ac76e35b0..78a9930802 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018, 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -85,6 +85,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages tex)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xorg))
 
@@ -554,43 +555,65 @@ multipole-accelerated algorithm.")
 (define-public fritzing
   (package
     (name "fritzing")
-    (version "0.9.2b")
+    (version "0.9.3b")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/fritzing/"
-                                  "fritzing-app/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fritzing/fritzing-app.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "15rwjp4xdj9w1z9f709rz9p0k2mi9k9idma9hvzkj5j8p04mg7yd"))))
+                "0hpyc550xfhr6gmnc85nq60w00rm0ljm0y744dp0z88ikl04f4s3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (and (zero? (system* "tar"
-                                  "-xvf" (assoc-ref inputs "fritzing-parts-db")
-                                  "-C" "parts"))
-                  (zero? (system* "qmake"
-                                  (string-append "PREFIX="
-                                                 (assoc-ref outputs "out"))
-                                  "phoenix.pro"))))))))
+             (copy-recursively (assoc-ref inputs "fritzing-parts-db")
+                               "parts")
+             ;; Make compatible with libgit2 > 0.24
+             (substitute* "src/version/partschecker.cpp"
+               (("error = git_remote_connect\\(remote, GIT_DIRECTION_FETCH, &callbacks\\)")
+                "error = git_remote_connect(remote, GIT_DIRECTION_FETCH, &callbacks, NULL, NULL)"))
+
+             ;; Use system libgit2 and boost.
+             (substitute* "phoenix.pro"
+               (("^LIBGIT2INCLUDE =.*")
+                (string-append "LIBGIT2INCLUDE="
+                               (assoc-ref inputs "libgit2") "/include\n"))
+               (("^    LIBGIT2LIB =.*")
+                (string-append "    LIBGIT2LIB="
+                               (assoc-ref inputs "libgit2") "/lib\n")))
+             ;; This file checks for old versions of Boost, insisting on
+             ;; having us download the boost sources and placing them in the
+             ;; build directory.
+             (substitute* "pri/utils.pri"
+               (("error\\(") "message("))
+
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "qmake"
+                       (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib")
+                       (string-append "PREFIX=" out)
+                       "phoenix.pro")))))))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtserialport" ,qtserialport)
        ("qtsvg" ,qtsvg)
+       ("libgit2" ,libgit2)
        ("boost" ,boost)
        ("zlib" ,zlib)
        ("fritzing-parts-db"
         ,(origin
-           (method url-fetch)
-           (uri (string-append "https://github.com/fritzing/"
-                               "fritzing-parts/archive/" version ".tar.gz"))
-           (file-name (string-append "fritzing-parts-" version ".tar.gz"))
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/fritzing/fritzing-parts.git")
+                 (commit version)))
+           (file-name (git-file-name "fritzing-parts" version))
            (sha256
             (base32
-             "0jqr8yjg7177f3pk1fcns584r0qavwpr280nggsi2ff3pwk5wpsz"))))))
+             "1d2v8k7p176j0lczx4vx9n9gbg3vw09n2c4b6w0wj5wqmifywhc1"))))))
     (home-page "http://fritzing.org")
     (synopsis "Electronic circuit design")
     (description
@@ -1916,15 +1939,15 @@ simulator backends @code{Qucsator}, @code{ngspice} and @code{Xyce}.")
 (define-public librepcb
   (package
     (name "librepcb")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://download.librepcb.org/releases/0.1.0/librepcb-"
-                           version "-source.zip"))
+       (uri (string-append "https://download.librepcb.org/releases/"
+                           version "/librepcb-" version "-source.zip"))
        (sha256
         (base32
-         "0affvwwgs1j2wx6bb3zfa2jbfxpckklr8cka2nkswca0p82wd3dv"))))
+         "08lm95kr5gqyqyy4hcii0micqa6ryhbv0harvdndmpvi4ix1ggi8"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1985,3 +2008,57 @@ editors.")
 slicing software to x3g files for standalone 3D printing on common 3D
 printers.")
     (license license:gpl2+)))
+
+(define-public gnucap
+  (package
+    (name "gnucap")
+    (version "20171003")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://git.savannah.gnu.org/cgit/gnucap.git/snapshot/gnucap-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "16m09xa685qhj5fqq3bcgakrwnb74xhf5f7rpqkkf9fg8plzbb1g"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("readline" ,readline)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Set correct rpath so that gnucap finds libgnucap.so.
+               (substitute* (list "apps/configure" "lib/configure"
+                                  "main/configure" "modelgen/configure")
+                 (("LDFLAGS =")
+                  (string-append "LDFLAGS = -Wl,-rpath=" out "/lib")))
+               ;; gnucap uses a hand-written configure script that expects the
+               ;; --prefix argument to be the first argument passed to it.
+               (invoke "./configure" (string-append "--prefix=" out)))))
+         (replace 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (libpath "../lib/O:../apps/O"))
+               (with-directory-excursion "tests"
+                 ;; Make test return non-zero exit code when a test fails.
+                 (substitute* "test"
+                   (("/bin/sh") "/bin/sh -e")
+                   (("\\|\\| echo \"\\*\\*\\*\\* \\$ii fails \\*\\*\\*\\*\"") ""))
+                 ;; Fix expected plugin search path for test c_attach.1.gc
+                 (substitute* "==out/c_attach.1.gc.out"
+                   (("/usr/local/lib/gnucap")
+                    (string-append libpath ":" out "/lib/gnucap")))
+                 ;; Set library path so that gnucap can find libgnucap.so
+                 ;; while running the tests.
+                 (setenv "LD_LIBRARY_PATH" libpath)
+                 (invoke "./test" "../main/O/gnucap" "" "test-output" "==out"))))))))
+    (home-page "https://www.gnu.org/software/gnucap/")
+    (synopsis "Mixed analog and digital circuit simulator")
+    (description "GNUcap is a circuit analysis package.  It offers a general
+purpose circuit simulator and can perform DC and transient analyses, fourier
+analysis and AC analysis.  The engine is designed to do true mixed-mode
+simulation.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index d2853e62d6..790be1a59e 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -185,7 +185,7 @@ removable devices or support for multimedia.")
 (define-public terminology
   (package
     (name "terminology")
-    (version "1.3.2")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -193,7 +193,7 @@ removable devices or support for multimedia.")
                               "terminology/terminology-" version ".tar.xz"))
               (sha256
                (base32
-                "1kclxzadmk272s9spa7n704pcb1c611ixxrq88w5zk22va0i25xm"))
+                "0q1y7fadj42n23aspx9y8hm4w4xlc316wc3415wnf75ibsx08ngd"))
               (modules '((guix build utils)))
               ;; Remove the bundled fonts.
               (snippet
@@ -204,11 +204,24 @@ removable devices or support for multimedia.")
                   #t))))
     (build-system meson-build-system)
     (arguments
-     '(#:phases
+     `(#:configure-flags '("-Dtests=true")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'set-home-directory
            ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
-           (lambda _ (setenv "HOME" "/tmp") #t)))))
+           (lambda _ (setenv "HOME" "/tmp") #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion
+               (string-append "../" ,name "-" ,version "/tests")
+               (invoke "sh" "run_tests.sh" "--verbose"
+                       "-t" "../../build/src/bin/tytest"))))
+         (add-after 'install 'remove-test-binary
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; This file is not meant to be installed.
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/bin/tytest"))
+             #t)))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("perl" ,perl)
diff --git a/gnu/packages/entr.scm b/gnu/packages/entr.scm
index 19667ce23f..d0111452df 100644
--- a/gnu/packages/entr.scm
+++ b/gnu/packages/entr.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,14 +28,14 @@
 (define-public entr
   (package
     (name "entr")
-    (version "4.1")
+    (version "4.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://entrproject.org/code/entr-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0y7gvyf0iykpf3gfw09m21hy51m6qn4cpkbrm4nnn7pwrwycj0y5"))))
+                "0w2xkf77jikcjh15fp9g7661ss30pz3jbnh261vqpaqavwah4c17"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 9c38b53581..4fba7ee0c8 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -23,6 +23,7 @@
 (define-module (gnu packages erlang)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system emacs)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
@@ -212,3 +213,21 @@ built-in support for concurrency, distribution and fault tolerance.")
     ;; have other licenses. See 'system/COPYRIGHT' in the source distribution.
     (license (list license:asl2.0 license:bsd-2 license:bsd-3 license:expat
                    license:lgpl2.0+ license:tcl/tk license:zlib))))
+
+(define-public emacs-erlang
+  (package
+    (name "emacs-erlang")
+    (version (package-version erlang))
+    (source (package-source erlang))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'set-emacs-load-path 'change-working-directory
+           (lambda _ (chdir "lib/tools/emacs") #t)))))
+    (home-page "https://www.erlang.org/")
+    (synopsis "Erlang major mode for Emacs")
+    (description
+     "This package provides an Emacs major mode for editing Erlang source
+files.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index c778ebd21e..3a7e3284a9 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -322,7 +322,7 @@ network.  LIBNFS offers three different APIs, for different use :
        `(("bzip2" ,bzip2)
          ("fuse" ,fuse)
          ("zlib" ,zlib)))
-      (synopsis "Read-only FUSE driver for the APFS filesystem")
+      (synopsis "Read-only FUSE driver for the APFS file system")
       (description "APFS-FUSE is a read-only FUSE driver for the @dfn{Apple File
 System} (APFS).  It is currently in an experimental state — it may not be able
 to read all files, and it does not support all the compression methods in
diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm
index 24ed37a9d2..9ba51d1b74 100644
--- a/gnu/packages/file.scm
+++ b/gnu/packages/file.scm
@@ -43,7 +43,9 @@
 
    ;; When cross-compiling, this package depends upon a native install of
    ;; itself.
-   (self-native-input? #t)
+   (native-inputs (if (%current-target-system)
+                      `(("self" ,this-package))
+                      '()))
 
    (synopsis "File type guesser")
    (description
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 4eb0d57a36..9a210b474f 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -139,7 +139,7 @@ line client and a client based on Qt.")
 (define-public ledger
   (package
     (name "ledger")
-    (version "3.1.2")
+    (version "3.1.3")
     (source
      (origin
        (method git-fetch)
@@ -148,8 +148,7 @@ line client and a client based on Qt.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0hwnipj2m9p95hhyv6kyq54m27g14r58gnsy2my883kxhpcyb2vc"))
-       (patches (search-patches "ledger-fix-uninitialized.patch"))))
+        (base32 "0bfnrqrd6wqgsngfpqi30xh6yy86pwl25iwzrqy44q31r0zl4mm3"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -242,6 +241,13 @@ in ability, and easy to use.")
          #:tests? #f ; there are none
          #:phases
          (modify-phases %standard-phases
+           (add-before 'build 'patch-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((ledger (assoc-ref inputs "ledger")))
+                 (make-file-writable "ledger-exec.el")
+                 (emacs-substitute-variables "ledger-exec.el"
+                   ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
+               #t))
            (add-after 'build 'build-doc
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((target (string-append (assoc-ref outputs "out")
@@ -261,6 +267,8 @@ in ability, and easy to use.")
                  (rename-file orig-dir dest-dir)
                  (emacs-generate-autoloads ,name dest-dir)
                  #t))))))
+      (inputs
+       `(("ledger" ,ledger)))
       (native-inputs
        `(("emacs-minimal" ,emacs-minimal)
          ("texinfo" ,texinfo)))
@@ -391,7 +399,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
   (package
     (inherit electrum)
     (name "electron-cash")
-    (version "3.3.6")
+    (version "4.0.1")
     (source
      (origin
        (method url-fetch)
@@ -402,7 +410,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
                            ".tar.gz"))
        (sha256
         (base32
-         "110apc376wm4yd9ghpffiipwdn8rzyr3z7ncpp2516wbz4mmyhxc"))
+         "16fi03f23yb5r9s64x1a9wrxnvivlbawvrbq4d486yclzl1r7y48"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -628,7 +636,7 @@ Monero GUI client.")
 (define-public python-trezor-agent
   (package
     (name "python-trezor-agent")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
      (origin
        (method git-fetch)
@@ -637,7 +645,7 @@ Monero GUI client.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0i4igkxi8fwdlbhg6nx27lhnc9v9nmrw4j5fvpnc202n6yjlc7x7"))))
+        (base32 "0q99vbfd3h85s8rnjipnmldixabqmmlk5w9karv6f0rhyi54f4zv"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -734,14 +742,14 @@ Ledger Blue/Nano S.")
 (define-public python-trezor
   (package
     (name "python-trezor")
-    (version "0.11.1")
+    (version "0.11.2")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "trezor" version))
         (sha256
           (base32
-            "064yds8f4px0c6grkkanpdjx022g4q87ihzhkmdv9qanv0hz6hv0"))))
+            "1f0zfki12mnhidkfxpx2lpq1xim8f35i2d64bx9lf4m26xxv9x56"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -780,14 +788,14 @@ TREZOR Hardware Wallet.")
 (define-public python-keepkey
   (package
     (name "python-keepkey")
-    (version "6.0.2")
+    (version "6.0.3")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "keepkey" version))
         (sha256
           (base32
-            "16j8hnxj9r4b2w6kfncmny09pb1al8ppmn59qxzl3qmh1xhpy45g"))))
+            "0z3d0m6364v9dv0njs4cd5m5ai6j6v35xaaxfxl90m9vmyxy81vd"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -926,7 +934,7 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ")
 (define-public python-duniterpy
   (package
     (name "python-duniterpy")
-    (version "0.52.0")
+    (version "0.53.0")
     (source
      (origin
        (method git-fetch)
@@ -937,7 +945,7 @@ Luhn and family of ISO/IEC 7064 check digit algorithms. ")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "07liba2d21hb8m3n6yccfamq9yq0ryywh18vs9g2sgywfsnv82lh"))))
+         "1km585xlv6dm693s5x6apcnx3ixvz08g8yjfclszhy4jakhpv0ya"))))
     (build-system python-build-system)
     (arguments
      ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'".
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 0f3e1009ac..4df4b22843 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -377,7 +377,7 @@ Virtual Machines.  OVMF contains a sample UEFI firmware for QEMU and KVM.")
 (define* (make-arm-trusted-firmware platform #:optional (arch "aarch64"))
   (package
     (name (string-append "arm-trusted-firmware-" platform))
-    (version "1.5")
+    (version "2.1")
     (source
       (origin
         (method git-fetch)
@@ -388,7 +388,7 @@ Virtual Machines.  OVMF contains a sample UEFI firmware for QEMU and KVM.")
         (file-name (git-file-name "arm-trusted-firmware" version))
        (sha256
         (base32
-         "1gm0bn2llzfzz9bfsz11fhwxj5lxvyrq7bc13fjj033nljzxn7k8"))))
+         "1gy5qskrjy8n3kxdcm1dx8b45l5b75n0pm8pq80wl6xic1ycy24r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -448,25 +448,10 @@ such as:
                    license:bsd-2)))) ; libfdt
 
 (define-public arm-trusted-firmware-sun50i-a64
-  (let ((base (make-arm-trusted-firmware "sun50i_a64"))
-        ;; Use unreleased version which enables additional features needed for
-        ;; LCD support
-        (commit "98aab97484b27e40aa74a93e5d1c1ac037a7e0b8")
-        (revision "2"))
+  (let ((base (make-arm-trusted-firmware "sun50i_a64")))
     (package
       (inherit base)
-      (name "arm-trusted-firmware-sun50i-a64")
-      (version (git-version "2.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/ARM-software/arm-trusted-firmware.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "0z5si034vcn4m68zaixc5v8fs1c7vxbh7n4hggxs55p0jg01dan5")))))))
+      (name "arm-trusted-firmware-sun50i-a64"))))
 
 (define-public arm-trusted-firmware-puma-rk3399
   (let ((base (make-arm-trusted-firmware "rk3399"))
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 20e14417e4..f0547a1a8a 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -48,16 +48,15 @@
 (define-public flashrom
   (package
     (name "flashrom")
-    ;; XXX: The CFLAGS=... line below can probably be removed when updating.
-    (version "1.0")
+    (version "1.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://download.flashrom.org/releases/flashrom-"
+                    "https://download.flashrom.org/releases/flashrom-v"
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0r7fkpfc8w51n8ffbhclj4wa3kwrk0ijv1acwpw5myx5bchzl0ip"))))
+                "0i6yrrl69hrqmwd7azj7x3j46m0qpvzmk3b5basym7mnlpfzhyfm"))))
     (build-system gnu-build-system)
     (inputs `(("dmidecode" ,dmidecode)
               ("pciutils" ,pciutils)
@@ -67,9 +66,6 @@
     (arguments
      '(#:make-flags
        (list "CC=gcc"
-             ;; The default includes ‘-Wall -Werror’, causing the build to fail
-             ;; with deprecation warnings against libusb versions >= 1.0.22.
-             "CFLAGS=-Os -Wshadow"
              (string-append "PREFIX=" %output)
              "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
        #:tests? #f                      ; no 'check' target
@@ -131,15 +127,14 @@ brick your device.")
 (define-public avrdude
   (package
     (name "avrdude")
-    (version "6.1")
+    (version "6.3")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://savannah/avrdude/avrdude-"
                           version ".tar.gz"))
       (sha256
-       (base32
-        "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y"))))
+       (base32 "15m1w1qad3dj7r8n5ng1qqcaiyx1gyd6hnc3p2apgjllccdp77qg"))))
     (build-system gnu-build-system)
     (inputs
      `(("libelf" ,libelf)
@@ -152,8 +147,8 @@ brick your device.")
     (synopsis "AVR downloader and uploader")
     (description
      "AVRDUDE is a utility to download/upload/manipulate the ROM and
-EEPROM contents of AVR microcontrollers using the in-system programming
-technique (ISP).")
+EEPROM contents of AVR microcontrollers using the @acronym{ISP, in-system
+programming} technique.")
     (license license:gpl2+)))
 
 (define-public dfu-programmer
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index a0d1f13931..40d5e7e513 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -42,7 +42,7 @@
 (define-public fltk
   (package
     (name "fltk")
-    (version "1.3.4-2")
+    (version "1.3.5")
     (source
      (origin
       (method url-fetch)
@@ -51,7 +51,7 @@
                           "/fltk-" version "-source.tar.gz"))
       (sha256
        (base32
-        "0459rm1gl5x3famiqma7ja7k6hvan8p5l8lgshvqfl4rik0lklr5"))))
+        "00jp24z1818k9n6nn6lx7qflqf2k13g4kxr0p8v1d37kanhb4ac7"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 6988443e94..6405ce42bb 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
@@ -384,14 +384,14 @@ for long periods of working with computers (8 or more hours per day).")
     (name "font-adobe-source-han-sans")
     (version "1.004")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/adobe-fonts/source-han-sans/archive/"
-                    version "R.tar.gz"))
-              (file-name (string-append "source-han-sans-" version "R.tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/adobe-fonts/source-han-sans.git")
+                     (commit (string-append version "R"))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ssx0fw90sy6mj8fv8fv4dgzszpqwbmwpjnlx16g4pvaqzdmybbz"))))
+                "0zm884d8fp5gvirq324050kqv7am9khyqhs9kk4r4rr3jzn61jpk"))))
     (outputs '("out"                 ; OpenType/CFF Collection (OTC), 121 MiB.
                "cn" "jp" "kr" "tw")) ; Region-specific Subset OpenType/CFF.
     (build-system trivial-build-system)
@@ -400,20 +400,12 @@ for long periods of working with computers (8 or more hours per day).")
        #:builder
        (begin
          (use-modules (guix build utils))
-         (let ((tar  (string-append (assoc-ref %build-inputs
-                                               "tar")
-                                    "/bin/tar"))
-               (PATH (string-append (assoc-ref %build-inputs
-                                               "gzip")
-                                    "/bin"))
-               (install-opentype-fonts
+         (let ((install-opentype-fonts
                 (lambda (fonts-dir out)
                   (copy-recursively fonts-dir
                                     (string-append (assoc-ref %outputs out)
                                                    "/share/fonts/opentype")))))
-           (setenv "PATH" PATH)
-           (invoke tar "xvf" (assoc-ref %build-inputs "source"))
-           (chdir (string-append "source-han-sans-" ,version "R"))
+           (chdir (assoc-ref %build-inputs "source"))
            (install-opentype-fonts "OTC" "out")
            (install-opentype-fonts "SubsetOTF/CN" "cn")
            (install-opentype-fonts "SubsetOTF/JP" "jp")
@@ -421,9 +413,6 @@ for long periods of working with computers (8 or more hours per day).")
            (install-opentype-fonts "SubsetOTF/TW" "tw")
            (for-each delete-file (find-files %output "\\.zip$"))
            #t))))
-    (native-inputs
-     `(("gzip" ,gzip)
-       ("tar" ,tar)))
     (home-page "https://github.com/adobe-fonts/source-han-sans")
     (synopsis "Pan-CJK fonts")
     (description
@@ -933,13 +922,14 @@ Sans Pro family.")
     (name "font-fira-sans")
     (version "4.202")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mozilla/Fira/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mozilla/Fira.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1r6zdnqqp4bgq5nmgqbj0vvj7x1h9w912851ggbl9wc7fdjnjqnq"))))
+                "116j26gdj5g1r124b4669372f7490vfjqw7apiwp2ggl0am5xd0w"))))
     (build-system font-build-system)
     (home-page "https://mozilla.github.io/Fira/")
     (synopsis "Mozilla's Fira Sans Font")
@@ -997,13 +987,14 @@ vector graphics.")
     (version "1.11.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/sunaku/tamzen-font/archive/"
-                           "Tamzen-" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/sunaku/tamzen-font.git")
+              (commit (string-append "Tamzen-" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1ryd7gp6qiwaqw73jqbmh4kwlriyd8xykh4j7z90z8xp9fm7lrys"))))
+         "17kgmvg6q32mqhx9g44hjvzv0si0mnpprga4z7na930g2zdd8846"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -1011,30 +1002,19 @@ vector graphics.")
        (begin
          (use-modules (guix build utils))
 
-         (let ((tar      (string-append (assoc-ref %build-inputs "tar")
-                                        "/bin/tar"))
-               (PATH     (string-append (assoc-ref %build-inputs "gzip")
-                                        "/bin"))
-               (font-dir (string-append %output "/share/fonts/misc"))
-               (psf-dir (string-append %output "/share/kbd/consolefonts"))
-               (src-pcf-dir (string-append "tamzen-font-Tamzen-"
-                                            ,version "/pcf")))
-           (setenv "PATH" PATH)
-           (invoke tar "xvf" (assoc-ref %build-inputs "source"))
+         (let* ((out      (assoc-ref %outputs "out"))
+                (font-dir (string-append out "/share/fonts/misc"))
+                (psf-dir  (string-append out "/share/kbd/consolefonts")))
+           (chdir (assoc-ref %build-inputs "source"))
            (mkdir-p font-dir)
            (mkdir-p psf-dir)
-           (chdir src-pcf-dir)
            (for-each (lambda (pcf)
                        (install-file pcf font-dir))
-                     (find-files "." "\\.pcf$"))
-           (chdir "../psf")
+                     (find-files "pcf" "\\.pcf$"))
            (for-each (lambda (psf)
                        (install-file psf psf-dir))
-                     (find-files "." "\\.psf$"))
+                     (find-files "psf" "\\.psf$"))
            #t))))
-    (native-inputs
-     `(("tar" ,tar)
-       ("gzip" ,gzip)))
     (home-page "https://github.com/sunaku/tamzen-font")
     (synopsis "Monospaced bitmap font for console and X11")
     (description
@@ -1106,15 +1086,15 @@ typeface, by mimicking Comic Sans while fixing its most obvious shortcomings.")
 (define-public font-iosevka
   (package
     (name "font-iosevka")
-    (version "1.12.5")
-    (source (origin
-              (method url-fetch/zipbomb)
-              (uri (string-append
-                    "https://github.com/be5invis/Iosevka/releases/download/v"
-                    version "/iosevka-pack-" version ".zip"))
-              (sha256
-               (base32
-                "0s3g6mk0ngwsrw9h9dqinb50cd9i8zhqdcmmh93fhyf4d87yfwyi"))))
+    (version "2.2.0")
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri (string-append "https://github.com/be5invis/Iosevka"
+                           "/releases/download/v" version
+                           "/ttc-iosevka-" version ".zip"))
+       (sha256
+        (base32 "14jfv6pkh1w44m89z2fn44kgmmqaf0057lk71advwfbm3q313y0x"))))
     (build-system font-build-system)
     (home-page "https://be5invis.github.io/Iosevka/")
     (synopsis "Coders' typeface, built from code")
@@ -1125,6 +1105,20 @@ programming.  Iosevka is completely generated from its source code.")
     (license (list license:silofl1.1 ; build artifacts (i.e. the fonts)
                    license:bsd-3)))) ; supporting code
 
+(define-public font-iosevka-slab
+  (package
+    (inherit font-iosevka)
+    (name "font-iosevka-slab")
+    (version (package-version font-iosevka))
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri (string-append "https://github.com/be5invis/Iosevka"
+                           "/releases/download/v" version
+                           "/ttc-iosevka-slab-" version ".zip"))
+       (sha256
+        (base32 "186d0pl13znysll3hvzm1ixn7ad616g6dhla55sbh6ki2j04b8ml"))))))
+
 (define-public font-go
   (let ((commit "f03a046406d4d7fbfd4ed29f554da8f6114049fc")
         (revision "1"))
@@ -1162,14 +1156,14 @@ monospace, slab-serif fonts.")
     (name "font-google-material-design-icons")
     (version "3.0.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/google/material-design-icons/archive/"
-                    version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/google/material-design-icons.git")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "018i3za9r6kf6svci33z09lc5pr5yz4164m8gzzwjzzqcrng0p5j"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "17q5brcqyyc8gbjdgpv38p89s60cwxjlwy2ljnrvas5cj0s62np0"))))
     (build-system font-build-system)
     (home-page "http://google.github.io/material-design-icons")
     (synopsis "Icon font of Google Material Design icons")
@@ -1188,13 +1182,14 @@ resolutions.")
     (version "20160623")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/antijingoist/open-dyslexic/"
-                           "archive/" version "-Stable.tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/antijingoist/open-dyslexic.git")
+              (commit (string-append version "-Stable"))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0al0j9kb32kfavcpq1kigsd36yzvf5yhzqhds0jkh7ngbxyxwkx4"))))
+         "0nr7s92nk1kbr459154idnib977ixc70z6g9mbra3lp73nyrmyvz"))))
     (build-system font-build-system)
     (home-page "https://opendyslexic.org")
     (synopsis "Font for dyslexics and high readability")
@@ -1402,3 +1397,30 @@ files (TTF).")
 formatting.")
     (home-page "https://madmalik.github.io/mononoki/")
     (license license:silofl1.1)))
+
+(define-public font-public-sans
+  (package
+    (name "font-public-sans")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/uswds/public-sans.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "12ccj7ph3pg962d52d3slbvd44gwfm6bb2846dxyf1xc5h2iwhdv"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; remove versions of predecessor font
+                  (delete-file-recursively "fonts/_archive")
+                  #t))))
+    (build-system font-build-system)
+    (home-page "https://public-sans.digital.gov/")
+    (synopsis "Neutral typeface for interfaces, text, and headings")
+    (description
+     "Public Sans is a strong, neutral, sans-serif typeface for text or
+display based on Libre Franklin.")
+    (license license:silofl1.1)))
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 24a1219ce5..83854ef9c6 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -301,14 +301,14 @@ Includes the actual FTDI connector.")
 (define-public gtkwave
   (package
     (name "gtkwave")
-    (version "3.3.99")
+    (version "3.3.100")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://gtkwave.sourceforge.net/"
-                                  name "-" version ".tar.gz"))
+                                  "gtkwave-" version ".tar.gz"))
               (sha256
                (base32
-                "0lc4y2vizrbxldjk5yw2i4y7pyprjdjqx3iafzjfnin694zp2630"))))
+                "1z60i5nh8dz8j9ii63fwaw7k0p3x0scp91478cxmdv4xhp4njlxa"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gperf" ,gperf)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 0c27cd69a4..fa8bb3cad1 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@pobox.com>
-;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -54,18 +54,20 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)                ;intltool
   #:use-module (gnu packages gnome)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
@@ -74,6 +76,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
@@ -149,31 +152,30 @@ freedesktop.org project.")
 (define-public libinput
   (package
     (name "libinput")
-    (version "1.12.6")
+    (version "1.13.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://freedesktop.org/software/libinput/"
                                   "libinput-" version ".tar.xz"))
               (sha256
                (base32
-                "0pgla0mc6mvyr1ljy10mcqvfz8i5z6yp7dbx2bcd70y67wx05d0j"))))
+                "0vb11fzd06xbagrnha2bbzmlfg04bbgb5w5rjrxrrz686mfwj9zb"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=false")))
     (native-inputs
      `(("check" ,check)
-       ("pkg-config" ,pkg-config)
-       ("valgrind" ,valgrind)))
-    (propagated-inputs
-     `(;; In Requires.private of libinput.pc.
-       ("libevdev" ,libevdev)
-       ("libudev" ,eudev)
-       ("libwacom" ,libwacom)
-       ("mtdev" ,mtdev)))
+       ("pkg-config" ,pkg-config)))
     (inputs
      `(("cairo" ,cairo)
        ("glib" ,glib)
-       ("gtk+" ,gtk+)))
+       ("gtk+" ,gtk+)
+       ("libevdev" ,libevdev)
+       ("libwacom" ,libwacom)
+       ("mtdev" ,mtdev)))
+    (propagated-inputs
+     `(;; libinput.h requires <libudev.h>, so propagate it.
+       ("udev" ,eudev)))
     (home-page "https://www.freedesktop.org/wiki/Software/libinput/")
     (synopsis "Input devices handling library")
     (description
@@ -184,9 +186,9 @@ other applications that need to directly deal with input devices.")
 (define-public libinput-minimal
   (package (inherit libinput)
     (name "libinput-minimal")
-    (inputs '())
-    (propagated-inputs
-     (alist-delete "libwacom" (package-propagated-inputs libinput)))
+    (inputs
+     (fold alist-delete (package-inputs libinput)
+           '("cairo" "glib" "gtk+" "libwacom")))
     (arguments
      (substitute-keyword-arguments (package-arguments libinput)
       ((#:configure-flags flags ''())
@@ -230,7 +232,7 @@ the freedesktop.org XDG Base Directory specification.")
 (define-public elogind
   (package
     (name "elogind")
-    (version "241.1")
+    (version "241.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -239,7 +241,7 @@ the freedesktop.org XDG Base Directory specification.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0a4irq4ycps3xcizjjr0gz3j46dyqvcwa4ncinpqpqlasi8l18nk"))))
+                "0jpb55prqq5cm3w2gy9766cbaqknjvbrbniyshb8bz1q31vf4jlq"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -307,6 +309,152 @@ the org.freedesktop.login1 interface over the system bus, allowing other parts
 of a the system to know what users are logged in, and where.")
     (license license:lgpl2.1+)))
 
+(define-public localed
+  ;; XXX: This package is extracted from systemd but we retain so little of it
+  ;; that it would make more sense to maintain a fork of the bits we need.
+  (package
+    (name "localed")
+    (version "241")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/systemd/systemd")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0sy91flzbhpq58k7v0294pa2gxpr0bk27rcnxlbhk2fi6nc51d28"))
+              (file-name (git-file-name name version))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Connect to the right location for our D-Bus daemon.
+                  (substitute* '("src/basic/def.h"
+                                 "src/libsystemd/sd-bus/sd-bus.c"
+                                 "src/stdio-bridge/stdio-bridge.c")
+                    (("/run/dbus/system_bus_socket")
+                     "/var/run/dbus/system_bus_socket"))
+
+                  ;; Don't insist on having systemd as PID 1 (otherwise
+                  ;; 'localectl' would exit without doing anything.)
+                  (substitute* "src/shared/bus-util.c"
+                    (("sd_booted\\(\\)")
+                     "(1)"))
+                  #t))
+              (patches (search-patches "localed-xorg-keyboard.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     ;; Try to build as little as possible (list of components taken from the
+     ;; top-level 'meson.build' file.)
+     (let ((components '("utmp"
+                         "hibernate"
+                         "environment-d"
+                         "binfmt"
+                         "coredump"
+                         "resolve"
+                         "logind"
+                         "hostnamed"
+                         "localed"
+                         "machined"
+                         "portabled"
+                         "networkd"
+                         "timedated"
+                         "timesyncd"
+                         "firstboot"
+                         "randomseed"
+                         "backlight"
+                         "vconsole"
+                         "quotacheck"
+                         "sysusers"
+                         "tmpfiles"
+                         "hwdb"
+                         "rfkill"
+                         "ldconfig"
+                         "efi"
+                         "tpm"
+                         "ima"
+                         "smack"
+                         "gshadow"
+                         "idn"
+                         "nss-myhostname"
+                         "nss-systemd")))
+       `(#:configure-flags ',(map (lambda (component)
+                                    (string-append "-D" component "=false"))
+                                  (delete "localed" components))
+
+         ;; It doesn't make sense to test all of systemd.
+         #:tests? #f
+
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'set-xkeyboard-config-file-name
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        ;; Set the file name to xkeyboard-config and kbd.
+                        ;; This is used by 'localectl list-x11-keymap-layouts'
+                        ;; and similar functions.
+                        (let ((xkb (assoc-ref inputs "xkeyboard-config"))
+                              (kbd (assoc-ref inputs "kbd")))
+                          (substitute* "src/locale/localectl.c"
+                            (("/usr/share/X11/xkb/rules")
+                             (string-append xkb "/share/X11/xkb/rules")))
+                          (substitute* "src/basic/def.h"
+                            (("/usr/share/keymaps")
+                             (string-append kbd "/share/keymaps")))
+                          #t)))
+                    (replace 'install
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        ;; Install 'localed', the D-Bus and polkit files, and
+                        ;; 'localectl'.
+                        (let* ((out (assoc-ref outputs "out"))
+                               (libexec (string-append out "/libexec/localed"))
+                               (bin     (string-append out "/bin"))
+                               (lib     (string-append out "/lib"))
+                               (dbus    (string-append out
+                                                       "/share/dbus-1/system-services"))
+                               (conf    (string-append out
+                                                       "/etc/dbus-1/system.d/"))
+                               (polkit  (string-append out
+                                                       "/share/polkit-1/actions"))
+                               (data    (string-append out "/share/systemd")))
+                          (define (source-file regexp)
+                            (car (find-files ".." regexp)))
+
+                          (mkdir-p libexec)
+                          (copy-file "systemd-localed"
+                                     (string-append libexec "/localed"))
+                          (install-file "localectl" bin)
+
+                          (let ((service-file (source-file
+                                               "\\.locale1\\.service$")))
+                            (substitute* service-file
+                              (("^Exec=.*$")
+                               (string-append "Exec=" libexec "/localed\n")))
+                            (install-file service-file dbus))
+                          (install-file (source-file "\\.locale1\\.policy$")
+                                        polkit)
+                          (install-file (source-file "\\.locale1\\.conf$")
+                                        conf)
+                          (for-each (lambda (file)
+                                      (install-file file lib))
+                                    (find-files "src/shared"
+                                                "libsystemd-shared.*\\.so"))
+
+                          (for-each (lambda (map)
+                                      (install-file map data))
+                                    (find-files ".." "^(kbd-model-map|language-fallback-map)$"))
+                          #t)))))))
+    (native-inputs (package-native-inputs elogind))
+    (inputs `(("libmount" ,util-linux)
+              ("xkeyboard-config" ,xkeyboard-config)
+              ("kbd" ,kbd)
+              ,@(package-inputs elogind)))
+    (home-page "https://www.freedesktop.org/wiki/Software/systemd/localed/")
+    (synopsis "Control the system locale and keyboard layout")
+    (description
+     "Localed is a tiny daemon that can be used to control the system locale
+and keyboard mapping from user programs.  It is used among other things by the
+GNOME Shell.  The @command{localectl} command-line tool allows you to interact
+with localed.  This package is extracted from the broader systemd package.")
+    (license license:lgpl2.1+)))
+
 (define-public packagekit
   (package
     (name "packagekit")
@@ -483,7 +631,7 @@ applications, X servers (rootless or fullscreen) or other display servers.")
 (define-public weston
   (package
     (name "weston")
-    (version "5.0.0")
+    (version "6.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -491,30 +639,40 @@ applications, X servers (rootless or fullscreen) or other display servers.")
                     "weston-" version ".tar.xz"))
               (sha256
                (base32
-                "1bsc9ry566mpk6fdwkqpvwq2j7m79d9cvh7d3lgf6igsphik98hm"))))
-    (build-system gnu-build-system)
+                "04p6hal5kalmdp5dxwh2h5qhkkb4dvbsk7l091zvvcq70slj6qsl"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("xorg-server" ,xorg-server)))
     (inputs
      `(("cairo" ,cairo-xcb)
+       ("colord" ,colord)
        ("dbus" ,dbus)
        ("elogind" ,elogind)
+       ("lcms" ,lcms)
+       ("libevdev" ,libevdev)
        ("libinput" ,libinput-minimal)
+       ("libjpeg" ,libjpeg)
        ("libunwind" ,libunwind)
+       ("libva" ,libva)
+       ("libwebp" ,libwebp)
        ("libxcursor" ,libxcursor)
        ("libxkbcommon" ,libxkbcommon)
+       ("libxml2" ,libxml2)
        ("mesa" ,mesa)
        ("mtdev" ,mtdev)
        ("linux-pam" ,linux-pam)
+       ("pango" ,pango)
        ("wayland" ,wayland)
        ("wayland-protocols" ,wayland-protocols)
        ("xorg-server-xwayland" ,xorg-server-xwayland)))
     (arguments
      `(#:configure-flags
-       (list "--disable-setuid-install"
-             "--enable-systemd-login"
-             (string-append "--with-xserver-path="
+       (list "-Dbackend-rdp=false" ; TODO: Enable.
+             "-Dremoting=false" ; TODO: Enable.
+             "-Dsimple-dmabuf-drm=auto"
+             "-Dsystemd=false"
+             (string-append "-Dxwayland-path="
                             (assoc-ref %build-inputs "xorg-server-xwayland")
                             "/bin/Xwayland"))
        #:parallel-tests? #f ; Parallel tests cause failures.
@@ -523,8 +681,8 @@ applications, X servers (rootless or fullscreen) or other display servers.")
          (add-before 'configure 'use-elogind
            (lambda _
              ;; Use elogind instead of systemd
-             (substitute* "configure"
-               (("libsystemd-login >= 198") "libelogind"))
+             (substitute* "libweston/meson.build"
+               (("libsystemd-login") "libelogind"))
              (substitute* '("libweston/launcher-logind.c"
                             "libweston/weston-launch.c")
                (("#include <systemd/sd-login.h>")
@@ -532,7 +690,8 @@ applications, X servers (rootless or fullscreen) or other display servers.")
              #t))
          (add-after 'configure 'patch-confdefs.h
            (lambda _
-             (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")))
+             (system "echo \"#define HAVE_SYSTEMD_LOGIN_209 1\" >> confdefs.h")
+             #t))
          (add-before 'check 'setup
            (lambda _
              (setenv "HOME" (getcwd))
@@ -761,7 +920,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
 (define-public libmbim
   (package
     (name "libmbim")
-    (version "1.18.0")
+    (version "1.18.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -769,7 +928,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "10mjjy860aakfd3h1yaj9l1jw816amrpwmyqlx37j21xv0l03x3c"))))
+                "0s4jsfsydp2vykv7lnimalp9i680aas1qcx7zdpjiic64b5g48vp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums
@@ -792,7 +951,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
 (define-public libqmi
   (package
     (name "libqmi")
-    (version "1.22.2")
+    (version "1.22.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -800,7 +959,7 @@ which speak the Mobile Interface Broadband Model (MBIM) protocol.")
                     "libqmi-" version ".tar.xz"))
               (sha256
                (base32
-                "09w20dsgr16bgbqw5ds7r6j2s6ihwyalh9zpbjhcn7cvm0afbwgi"))))
+                "1wgrrb9vb3myl8xgck8ik86876ycbg8crylybs3ssi21vrxqwnsc"))))
     (build-system gnu-build-system)
     (inputs
      `(("libgudev" ,libgudev)))
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index 3651b92e5d..96953d6fd5 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -134,9 +134,9 @@ reliability in mind.")
     (synopsis "Command-line File Transfer Protocol (FTP) client")
     (description
      "NcFTP Client (or just NcFTP) is a set of command-line programs to access
-File Transfer Protocol (FTP) servers.  This includes 'ncftp', an interactive
-FTP browser, as well as non-interactive commands such as 'ncftpput' and
-'ncftpget'.")
+File Transfer Protocol (FTP) servers.  This includes @code{ncftp}, an interactive
+FTP browser, as well as non-interactive commands such as @code{ncftpput} and
+@code{ncftpget}.")
     (license clarified-artistic)))
 
 
@@ -209,14 +209,14 @@ output.
 (define-public filezilla
   (package
     (name "filezilla")
-    (version "3.41.1")
+    (version "3.41.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.filezilla-project.org/client/"
                            "FileZilla_" version "_src.tar.bz2"))
        (sha256
-        (base32 "0mlv21054fk11rspbnig0q4gph1iqsqm4rpya3wl5is50p33vg5w"))))
+        (base32 "05zhvzvzkbns0cdxmlswvasfa6031y22dhfj9y5p85gi654f4fy2"))))
     (build-system gnu-build-system)
     (arguments
       ;; Don't let filezilla phone home to check for updates.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 25935aafcc..5dd22215b8 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -6,14 +6,15 @@
 ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Julian Graham <joolean@gmail.com>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +36,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix svn-download)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -431,7 +433,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.2.2")
+    (version "1.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -440,7 +442,7 @@ support.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ay4x1b6h5xfax1cqry2fklcmqi6a16klgmci4gkhga7as66lnnn"))))
+                "1nfyigfkl10n9r82p1qxhpr09jn2kwalh9n5r209bcaj8dxspph8"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -567,7 +569,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
 (define-public physfs
   (package
     (name "physfs")
-    (version "3.0.1")
+    (version "3.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -576,7 +578,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1wgj2zqpnfbnyyi1i7bq5pshcc9n5cvwlpzp8im67nb8662ryyxp"))))
+                "0qzqz4r88gvd8m7sh2z5hvqcr0jfr4wb2f77c19xycyn0rigfk9h"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; no check target
@@ -1072,16 +1074,16 @@ of use.")
 (define-public openmw
   (package
     (name "openmw")
-    (version "0.44.0")
+    (version "0.45.0")
     (source
      (origin
        (method url-fetch)
        (uri
         (string-append "https://github.com/OpenMW/openmw/archive/"
-                       name "-" version ".tar.gz"))
+                       "openmw-" version ".tar.gz"))
        (sha256
         (base32
-         "03fgm2f2r7y0aqlgp038pdlnllgvm3jimrp968p4nhz1sffvjzcy"))))
+         "0r0wgvv1faan8z8lbply8lks4hcnppifjrcz04l5zvq6yiqzjg5n"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
@@ -1329,3 +1331,106 @@ that parenthetically inclined game developers need to make 2D (and eventually
 @item REPL-driven development model
 @end enumerate\n")
     (license license:gpl3+)))
+
+(define-public bennu-game-development
+  (package
+    (name "bennu-game-development")
+    (version "348")
+    (source (origin
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url "http://svn.code.sf.net/p/bennugd/code")
+                    (revision (string->number version))))
+              (file-name (string-append name "-" version))
+              (sha256
+               (base32
+                "0wpzsbh4zi3931493dnyl5ffmh1b7fj2sx3mzrq304z9zs4d6lqq"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file-recursively "3rdparty") #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-configure-to-use-openssl
+           (lambda* (#:key outputs #:allow-other-keys)
+             (chdir "core")
+             (delete-file "configure")
+             (substitute* "configure.in"
+               (("i\\*86\\)")
+                "*)
+                COMMON_CFLAGS=\"$COMMON_CFLAGS -DUSE_OPENSSL\"
+                COMMON_LDFLAGS=\"$COMMON_LDFLAGS\"
+                LIBSSL=\"crypto\"
+                USE_OPENSSL=yes
+                ;;
+
+            i*86)"))
+               #t)))))
+    (inputs `(("openssl" ,openssl)
+              ("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("libtool" ,libtool)))
+    (synopsis "Programming language to create games")
+    (description "Bennu Game Development, also known as bennudg, is a
+programming language tailored at game development.  It is the successor of
+Fenix.")
+    (home-page "https://sourceforge.net/projects/bennugd/")
+    (license license:zlib)))
+
+(define-public bennu-game-development-modules
+  (package
+    (inherit bennu-game-development)
+    (name "bennu-game-development-modules")
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-conflicting-definitions
+           (lambda _
+             (with-fluids ((%default-port-encoding #f))
+               (substitute* "core/include/fmath.h"
+                 (("extern fixed fmul\\( int x, int y \\);") "")
+                 (("extern fixed fdiv\\( int x, int y \\);") "")))
+             (chdir "modules"))))))
+    (inputs `(("zlib" ,zlib)
+              ("libpng" ,libpng)
+              ("openssl" ,openssl)
+              ("sdl-mixer" ,sdl-mixer)
+              ("bennu-game-development" ,bennu-game-development)))
+    (synopsis "Modules for the Bennu Game Development programming language")
+    (description "This package contains a collection of modules for the Bennu
+Game Development programming language, from CD handling through SDL to
+joystick support.")))
+
+(define-public plib
+  (package
+    (name "plib")
+    (version "1.8.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://plib.sourceforge.net/dist/"
+                                  "plib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0cha71mflpa10vh2l7ipyqk67dq2y0k5xbafwdks03fwdyzj4ns8"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("mesa" ,mesa)
+       ("libxi" ,libxi)
+       ("libxmu" ,libxmu)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://plib.sourceforge.net/")
+    (synopsis "Suite of portable game libraries")
+    (description "PLIB is a set of libraries that will permit programmers to
+write games and other realtime interactive applications that are 100% portable
+across a wide range of hardware and operating systems.  PLIB includes sound
+effects, music, a complete 3D engine, font rendering, a simple Windowing
+library, a game scripting language, a GUI, networking, 3D math library and a
+collection of handy utility functions.  All are 100% portable across nearly
+all modern computing platforms.  Each library component is fairly independent
+of the others")
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index eac0ae376f..6875acdcac 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5,9 +5,9 @@
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
-;;; Copyright © 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
@@ -17,7 +17,7 @@
 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
 ;;; 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, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
@@ -30,7 +30,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
@@ -38,6 +38,7 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -104,6 +105,8 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-crypto)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
@@ -112,8 +115,8 @@
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages lua)
-  #:use-module (gnu packages haskell)
   #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mp3)
@@ -156,7 +159,6 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
-  #:use-module (guix build-system haskell)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system python)
@@ -165,14 +167,138 @@
   #:use-module ((srfi srfi-1) #:hide (zip))
   #:use-module (srfi srfi-26))
 
+;; Data package for adanaxisgpl.
+(define adanaxis-mush
+  (let ((version "1.1.0"))
+    (origin
+      (method url-fetch)
+      (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
+                          version ".tar.gz"))
+      (sha256
+       (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
+
+(define-public adanaxisgpl
+  (package
+    (name "adanaxisgpl")
+    (version "1.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Necessary for building with gcc >=4.7.
+           (substitute* "src/Mushcore/MushcoreSingleton.h"
+             (("SingletonPtrSet\\(new SingletonType\\);")
+              "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
+           ;; Avoid an "invalid conversion from const char* to char*" error.
+           (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
+             (("char \\*end, \\*result;")
+              (string-append "const char *end;"
+                             "\n"
+                             "char *result;")))
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((data (assoc-ref inputs "adanaxis-mush"))
+                   (share (string-append (assoc-ref outputs "out")
+                                         "/share/" ,name "-" ,version)))
+               (mkdir-p share)
+               (invoke "tar" "xvf" data "-C" share)))))))
+    (native-inputs
+     `(("adanaxis-mush" ,adanaxis-mush))) ; game data
+    (inputs
+     `(("expat" ,expat)
+       ("freeglut" ,freeglut)
+       ("glu" ,glu)
+       ("libjpeg" ,libjpeg)
+       ("libogg" ,libogg)
+       ("libtiff" ,libtiff)
+       ("libvorbis" ,libvorbis)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("pcre" ,pcre)
+       ("sdl" ,sdl)
+       ("sdl-mixer" ,sdl-mixer)))
+    (home-page "https://www.mushware.com")
+    (synopsis "Action game in four spatial dimensions")
+    (description
+     "Adanaxis is a fast-moving first person shooter set in deep space, where
+the fundamentals of space itself are changed.  By adding another dimension to
+space this game provides an environment with movement in four directions and
+six planes of rotation.  Initially the game explains the 4D control system via
+a graphical sequence, before moving on to 30 levels of gameplay with numerous
+enemy, ally, weapon and mission types.  Features include simulated 4D texturing,
+mouse and joystick control, and original music.")
+    (license license:gpl2)))
+
+(define-public alex4
+  (package
+    (name "alex4")
+    (version "1.2-alpha")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/carstene1ns/alex4/archive/"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "0jj1g3v1a6lyfwp5g2ly0n9z65ryqck8jxvzr01kaqjj3lsfkrhg"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:make-flags
+       (list "-Csrc"
+             "CC=gcc"
+             "CFLAGS=-D_FILE_OFFSET_BITS=64"
+             (string-append "DATADIR=" (assoc-ref %outputs "out")
+                            "/share/" ,name)
+             (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (substitute* '("src/main.c"
+                            "src/shooter.c")
+               (("fcos") "fixcos")
+               (("fmul") "fixmul")
+               (("fsin") "fixsin"))
+             #t))
+         (add-after 'install 'install-data
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out")
+                                         "/share/" ,name)))
+               (install-file "alex4.ini" share)
+               #t))))))
+    (inputs
+     `(("allegro" ,allegro-4)
+       ("dumb" ,dumb-allegro4)))
+    (home-page "http://allegator.sourceforge.net/")
+    (synopsis "Retro platform game")
+    (description
+     "Guide Alex the Allegator through the jungle in order to save his
+girlfriend Lola from evil humans who want to make a pair of shoes out of her.
+Plenty of classic platforming in four nice colors guaranteed!
+
+The game includes a built-in editor so you can design and share your own maps.")
+    (license license:gpl2+)))
+
 (define-public armagetronad
   (package
     (name "armagetronad")
     (version "0.2.8.3.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name "/stable/"
-                                  version "/" name "-" version ".src.tar.gz"))
+              (uri (string-append "mirror://sourceforge/armagetronad/stable/"
+                                  version "/armagetronad-" version ".src.tar.gz"))
               (sha256
                (base32
                 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
@@ -186,14 +312,17 @@
        ("libjpeg-turbo" ,libjpeg-turbo)))
     (home-page "http://www.armagetronad.org")
     (synopsis "Tron clone in 3D")
-    (description "Armagetron is a multiplayer game in 3d that attempts to
-emulate and expand on the lightcycle sequence from the movie Tron.  It's
-an old school arcade game slung into the 21st century.  Highlights include
-a customizable playing arena, HUD, unique graphics, and AI bots.  For the
-more advanced player there are new game modes and a wide variety of physics
-settings to tweak as well.")
+    (description "Armagetron Advanced is a multiplayer game in 3d that
+attempts to emulate and expand on the lightcycle sequence from the movie Tron.
+It's an old school arcade game slung into the 21st century.  Highlights
+include a customizable playing arena, HUD, unique graphics, and AI bots.  For
+the more advanced player there are new game modes and a wide variety of
+physics settings to tweak as well.")
     (license license:gpl2+)))
 
+(define-public armagetron-advanced
+  (deprecated-package "armagetron-advanced" armagetronad))
+
 (define-public bastet
   (package
     (name "bastet")
@@ -313,15 +442,19 @@ canyons and wait for the long I-shaped block to clear four rows at a time.")
       (home-page "http://en.cataclysmdda.com/")
       (synopsis "Survival horror roguelike video game")
       (description
-       "Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic
-world.  Struggle to survive in a harsh, persistent, procedurally generated
-world.  Scavenge the remnants of a dead civilization for food, equipment, or,
-if you are lucky, a vehicle with a full tank of gas to get you out of Dodge.
-Fight to defeat or escape from a wide variety of powerful monstrosities, from
-zombies to giant insects to killer robots and things far stranger and deadlier,
-and against the others like yourself, that want what you have.")
+       "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
+in a post-apocalyptic world.  Struggle to survive in a harsh, persistent,
+procedurally generated world.  Scavenge the remnants of a dead civilization
+for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
+to get you out of Dodge.  Fight to defeat or escape from a wide variety of
+powerful monstrosities, from zombies to giant insects to killer robots and
+things far stranger and deadlier, and against the others like yourself, that
+want what you have.")
       (license license:cc-by-sa3.0))))
 
+(define-public cataclysm-dark-days-ahead
+  (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
+
 (define-public cowsay
   (package
     (name "cowsay")
@@ -330,7 +463,7 @@ and against the others like yourself, that want what you have.")
               (method url-fetch)
               (uri (string-append "https://github.com/tnalpgge/"
                                   "rank-amateur-cowsay/archive/"
-                                  name "-" version ".tar.gz"))
+                                  "cowsay-" version ".tar.gz"))
               (sha256
                (base32
                 "12w7apbf6a9qffk92r32b16w22na2fjcqbl32rn0n7zw5hrp3f6q"))))
@@ -363,80 +496,82 @@ tired of cows, a variety of other ASCII-art messengers are available.")
 
 (define-public freedoom
   (package
-   (name "freedoom")
-   (version "0.11.3")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "https://github.com/" name "/" name
-                                "/archive/v" version ".tar.gz"))
-            (file-name (string-append name "-" version ".tar.gz"))
-            (sha256
-             (base32
-              "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q"))))
-   (build-system gnu-build-system)
-   (arguments
-    '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out")))
-      #:parallel-build? #f
-      #:tests? #f ; no check target
-      #:phases
-      (modify-phases %standard-phases
-        (delete 'bootstrap)
-        (replace 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((dejavu (assoc-ref inputs "font-dejavu"))
-                          (freedoom (assoc-ref outputs "out"))
-                          (wad-dir (string-append freedoom "/share/games/doom")))
-                     ;; Replace the font-searching function in a shell
-                     ;; script with a direct path to the required font.
-                     ;; This is necessary because ImageMagick can only find the
-                     ;; most basic fonts while in the build environment.
-                     (substitute* "graphics/titlepic/create_caption"
-                       (("font=\\$\\(find_font.*$")
-                        (string-append
-                         "font=" dejavu
-                         "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n")))
-                     ;; Make icon creation reproducible.
-                     (substitute* "dist/Makefile"
-                       (("freedm.png")
-                        "-define png:exclude-chunks=date freedm.png")
-                       (("freedoom1.png")
-                        "-define png:exclude-chunks=date freedoom1.png")
-                       (("freedoom2.png")
-                        "-define png:exclude-chunks=date freedoom2.png"))
-                     ;; Make sure that the install scripts know where to find
-                     ;; the appropriate WAD files.
-                     (substitute* "dist/freedoom"
-                       (("IWAD=freedm.wad")
-                        (string-append "IWAD=" wad-dir "/freedm.wad"))
-                       (("IWAD=freedoom1.wad")
-                        (string-append "IWAD=" wad-dir "/freedoom1.wad"))
-                       (("IWAD=freedoom2.wad")
-                        (string-append "IWAD=" wad-dir "/freedoom2.wad")))
-                     #t))))))
-   (native-inputs
-    `(("asciidoc" ,asciidoc)
-      ("deutex" ,deutex)
-      ("font-dejavu" ,font-dejavu)
-      ("imagemagick" ,imagemagick)
-      ("python" ,python-2)))
-   (inputs
-    `(("prboom-plus" ,prboom-plus)))
-   (home-page "https://freedoom.github.io/")
-   (synopsis "Free content game based on the Doom engine")
-   (native-search-paths
-    (list (search-path-specification
-           (variable "DOOMWADDIR")
-           (files '("share/games/doom")))
-          (search-path-specification
-           (variable "DOOMWADPATH")
-           (files '("share/games/doom")))))
-   (description
-    "The Freedoom project aims to create a complete free content first person
+    (name "freedoom")
+    (version "0.11.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/freedoom/freedoom.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0k4dlgr82qk6i7dchp3nybq6awlfag2ivy3zzl1v6vhcrnbvssgl"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:parallel-build? #f
+       #:tests? #f                      ; no check target
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'bootstrap)
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((dejavu (assoc-ref inputs "font-dejavu"))
+                    (freedoom (assoc-ref outputs "out"))
+                    (wad-dir (string-append freedoom "/share/games/doom")))
+               ;; Replace the font-searching function in a shell
+               ;; script with a direct path to the required font.
+               ;; This is necessary because ImageMagick can only find the
+               ;; most basic fonts while in the build environment.
+               (substitute* "graphics/titlepic/create_caption"
+                 (("font=\\$\\(find_font.*$")
+                  (string-append
+                   "font=" dejavu
+                   "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n")))
+               ;; Make icon creation reproducible.
+               (substitute* "dist/Makefile"
+                 (("freedm.png")
+                  "-define png:exclude-chunks=date freedm.png")
+                 (("freedoom1.png")
+                  "-define png:exclude-chunks=date freedoom1.png")
+                 (("freedoom2.png")
+                  "-define png:exclude-chunks=date freedoom2.png"))
+               ;; Make sure that the install scripts know where to find
+               ;; the appropriate WAD files.
+               (substitute* "dist/freedoom"
+                 (("IWAD=freedm.wad")
+                  (string-append "IWAD=" wad-dir "/freedm.wad"))
+                 (("IWAD=freedoom1.wad")
+                  (string-append "IWAD=" wad-dir "/freedoom1.wad"))
+                 (("IWAD=freedoom2.wad")
+                  (string-append "IWAD=" wad-dir "/freedoom2.wad")))
+               #t))))))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("deutex" ,deutex)
+       ("font-dejavu" ,font-dejavu)
+       ("imagemagick" ,imagemagick)
+       ("python" ,python-2)))
+    (inputs
+     `(("prboom-plus" ,prboom-plus)))
+    (home-page "https://freedoom.github.io/")
+    (synopsis "Free content game based on the Doom engine")
+    (native-search-paths
+     (list (search-path-specification
+            (variable "DOOMWADDIR")
+            (files '("share/games/doom")))
+           (search-path-specification
+            (variable "DOOMWADPATH")
+            (files '("share/games/doom")))))
+    (description
+     "The Freedoom project aims to create a complete free content first person
 shooter game.  Freedoom by itself is just the raw material for a game: it must
 be paired with a compatible game engine (such as @code{prboom-plus}) to be
 played.  Freedoom complements the Doom engine with free levels, artwork, sound
 effects and music to make a completely free game.")
-   (license license:bsd-3)))
+    (license license:bsd-3)))
 
 (define-public freedroidrpg
   (package
@@ -680,13 +815,16 @@ destroying an ancient book using a special wand.")
                      ("pkg-config" ,pkg-config)))
     (home-page "http://gnubg.org")
     (synopsis "Backgammon game")
-    (description "The GNU backgammon application can be used for playing,
-analyzing and teaching the game.  It has an advanced evaluation engine based on
-artificial neural networks suitable for both beginners and advanced players.  In
-addition to a command-line interface, it also features an attractive, 3D
-representation of the playing board.")
+    (description "The GNU backgammon application (also known as \"gnubg\") can
+be used for playing, analyzing and teaching the game.  It has an advanced
+evaluation engine based on artificial neural networks suitable for both
+beginners and advanced players.  In addition to a command-line interface, it
+also features an attractive, 3D representation of the playing board.")
     (license license:gpl3+)))
 
+(define-public gnubackgammon
+  (deprecated-package "gnubackgammon" gnubg))
+
 (define-public gnubik
   (package
     (name "gnubik")
@@ -746,7 +884,7 @@ Chess).  It is similar to standard chess but this variant is far more complicate
      (origin
        (method url-fetch)
        (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
-                           name "-" version ".tar.gz"))
+                           "ltris-" version ".tar.gz"))
        (sha256
         (base32
          "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
@@ -786,8 +924,9 @@ watch your CPU playing while enjoying a cup of tea!")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append "https://www.nethack.org/download/"
-                            version "/" name "-361-src.tgz"))
+        (uri
+         (string-append "https://www.nethack.org/download/" version "/nethack-"
+                        (string-join (string-split version #\.) "") "-src.tgz"))
         (sha256
           (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b"))))
     (inputs
@@ -912,10 +1051,9 @@ role, and your gender.")
      (origin
        (method url-fetch)
        (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
-                           name "-" version ".tar.gz"))
+                           "pipewalker-" version ".tar.gz"))
        (sha256
-        (base32
-         "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
+        (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -950,11 +1088,10 @@ Every puzzle has a complete solution, although there may be more than one.")
    (version "2.5.1.4")
    (source (origin
             (method url-fetch)
-            (uri (string-append "mirror://sourceforge/" name "/" name "/"
-                                version "/" name "-" version ".tar.gz"))
+            (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
+                                version "/prboom-plus-" version ".tar.gz"))
             (sha256
-             (base32
-              "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
+             (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
             (modules '((guix build utils)))
             (snippet
              '(begin
@@ -1184,13 +1321,13 @@ can be explored and changed freely.")
     (version "2.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nevat/abbayedesmorts-gpl.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3"))
+        (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
        (modules '((guix build utils)))
        (snippet
         ;; Unbundle fonts.
@@ -1232,6 +1369,9 @@ them, called Jean Raymond, found an old church in which to hide, not knowing
 that beneath its ruins lay buried an ancient evil.")
     (license license:gpl3)))
 
+(define-public l-abbaye-des-morts
+  (deprecated-package "l-abbaye-des-morts" abbaye))
+
 (define-public angband
   (package
     (name "angband")
@@ -1667,7 +1807,7 @@ for common mesh file formats, and collision detection.")
                 (uri (git-reference
                       (url "https://github.com/thelaui/M.A.R.S..git")
                       (commit commit)))
-                (file-name (string-append name "-" version))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
@@ -1709,7 +1849,7 @@ match, cannon keep, and grave-itation pit.")
 (define minetest-data
   (package
     (name "minetest-data")
-    (version "5.0.0")
+    (version "5.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1718,7 +1858,7 @@ match, cannon keep, and grave-itation pit.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "186i1pna2f3fwa2001y8mw5131h0sndhfdxzfqq2gnr1m83sjm0w"))))
+                "1hw3n7qqpasq6bivxhq01kr0d58w0gp46s0baxixp1fakd79p8a7"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("source" ,source)))
@@ -1736,14 +1876,14 @@ match, cannon keep, and grave-itation pit.")
                      #t))))
     (synopsis "Main game data for the Minetest game engine")
     (description
-     "Game data for the Minetest infinite-world block sandox game.")
+     "Game data for the Minetest infinite-world block sandbox game.")
     (home-page "http://minetest.net")
     (license license:lgpl2.1+)))
 
 (define-public minetest
   (package
     (name "minetest")
-    (version "5.0.0")
+    (version "5.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1752,7 +1892,7 @@ match, cannon keep, and grave-itation pit.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b8n8nzlvmld1hl3zgs1xg4jbc1nsf1m2bn7fi794vdr06s6n911"))
+                "11i8fqjpdggqfdlx440k5758zy0nbf9phxan9r63mavc7mph88ay"))
               (modules '((guix build utils)))
               (snippet
                 '(begin
@@ -1779,7 +1919,7 @@ match, cannon keep, and grave-itation pit.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("curl" ,curl)
-       ("freetype" ,(@ (gnu packages fontutils) freetype))
+       ("freetype" ,freetype)
        ("gettext" ,gettext-minimal)
        ("gmp" ,gmp)
        ("irrlicht" ,irrlicht)
@@ -1892,7 +2032,7 @@ reference interpreter, using the Glk API.")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://fizmo.spellbreaker.org/source/"
-                                  name "-" version ".tar.gz"))
+                                  "fizmo-" version ".tar.gz"))
               (sha256
                (base32
                 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
@@ -1980,7 +2120,7 @@ This game is based on the GPL version of the famous game TuxRacer.")
 (define-public supertuxkart
   (package
     (name "supertuxkart")
-    (version "0.9.3")
+    (version "1.0")
     (source
      (origin
        (method url-fetch)
@@ -1988,55 +2128,36 @@ This game is based on the GPL version of the famous game TuxRacer.")
                            version "/supertuxkart-" version "-src.tar.xz"))
        (sha256
         (base32
-         "1c4w47ibj87lgwiqygq8qi7jiz6gklj4dwf5bs5zk15s0rqlw0fq"))
+         "106rlp99hq18b4q1kdri3pl06cc4v7iqfp1hp9k2f8751lzz923d"))
        (modules '((guix build utils)))
        (snippet
         ;; Delete bundled library sources
         '(begin
-           ;; FIXME: try to unbundle enet, and angelscript
+           ;; Supertuxkart uses modified versions of the Irrlicht engine
+           ;; and the bullet library.  The developers gave an explanation
+           ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
+           ;; FIXME: try to unbundle angelscript
            (for-each delete-file-recursively
                      '("lib/zlib"
                        "lib/libpng"
                        "lib/jpeglib"
                        "lib/glew"
-                       "lib/wiiuse"))
-           (substitute* "CMakeLists.txt"
-             ;; Supertuxkart uses modified versions of the Irrlicht engine
-             ;; and the bullet library.  The developers gave an explanation here:
-             ;; http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
-             (("add_subdirectory\\(.*/(glew|zlib)\"\\)") ""))
+                       "lib/wiiuse"
+                       "lib/enet"))
            #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; no check target
        #:configure-flags
        (list "-DUSE_WIIUSE=0"
-             ;; Do not use the bundled zlib
+             ;; Do not use the bundled zlib, glew and enet.
              "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
+             "-DUSE_SYSTEM_GLEW=TRUE"
+             "-DUSE_SYSTEM_ENET=TRUE"
              ;; FIXME: needs libopenglrecorder
              "-DBUILD_RECORDER=0"
              ;; Irrlicht returns an integer instead of a boolean
-             "-DCMAKE_C_FLAGS=-fpermissive")
-       #:phases
-       (modify-phases %standard-phases
-         ;; see https://github.com/supertuxkart/stk-code/issues/3557
-         (add-after 'unpack 'patch-for-mesa-18.3
-           (lambda _
-             (substitute* "src/graphics/gl_headers.hpp"
-               (("#if !defined\\(USE_GLES2\\)")
-                "#if !defined(USE_GLES2)\n#   define __gl_glext_h_"))
-             #t))
-         (add-after 'unpack 'unbundle
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "CMakeLists.txt"
-               (("glew")
-                (string-append (assoc-ref inputs "glew")
-                               "/lib/libGLEW.a"))
-               (("include_directories\\(\"\\$\\{PROJECT_SOURCE_DIR\\}/lib/glew/include\"\\)")
-                (string-append "include_directories(\""
-                               (assoc-ref inputs "glew")
-                               "/include\")")))
-             #t)))))
+             "-DCMAKE_C_FLAGS=-fpermissive")))
     (inputs
      `(("glew" ,glew)
        ("zlib" ,zlib)
@@ -2050,7 +2171,9 @@ This game is based on the GPL version of the famous game TuxRacer.")
        ("curl" ,curl)
        ;; The following input is needed to build the bundled and modified
        ;; version of irrlicht.
-       ("libjpeg" ,libjpeg)))
+       ("libjpeg" ,libjpeg)
+       ("openssl" ,openssl)
+       ("enet" ,enet)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://supertuxkart.net/")
@@ -2135,6 +2258,9 @@ experience and advance levels, and are carried over from one scenario to the
 next campaign.")
     (license license:gpl2+)))
 
+(define-public the-battle-for-wesnoth
+  (deprecated-package "the-battle-for-wesnoth" wesnoth))
+
 (define-public wesnoth-server
   (package
     (inherit wesnoth)
@@ -2151,6 +2277,9 @@ next campaign.")
     (description "This package contains a dedicated server for @emph{The
 Battle for Wesnoth}.")))
 
+(define-public the-battle-for-wesnoth-server
+  (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
+
 (define-public gamine
   (package
     (name "gamine")
@@ -2197,48 +2326,6 @@ on the screen and keyboard to display letters.")
     ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
     (license license:gpl3)))
 
-(define-public raincat
-  (package
-    (name "raincat")
-    (version "1.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://hackage.haskell.org/package/Raincat/"
-                           "Raincat-" version ".tar.gz"))
-       (sha256
-        (base32
-         "10y9zi22m6hf13c9h8zd9vg7mljpwbw0r3djb6r80bna701fdf6c"))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-executable
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/raincat")
-                 `("LD_LIBRARY_PATH" ":" =
-                   (,(string-append (assoc-ref inputs "freeglut")
-                                    "/lib"))))
-               #t))))))
-    (inputs
-     `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
-       ("ghc-random" ,ghc-random)
-       ("ghc-glut" ,ghc-glut)
-       ("freeglut" ,freeglut)
-       ("ghc-opengl" ,ghc-opengl)
-       ("ghc-sdl2" ,ghc-sdl2)
-       ("ghc-sdl2-image" ,ghc-sdl2-image)
-       ("ghc-sdl2-mixer" ,ghc-sdl2-mixer)))
-    (home-page "http://www.bysusanlin.com/raincat/")
-    (synopsis "Puzzle game with a cat in lead role")
-    (description "Project Raincat is a game developed by Carnegie Mellon
-students through GCS during the Fall 2008 semester.  Raincat features game
-play inspired from classics Lemmings and The Incredible Machine.  The project
-proved to be an excellent learning experience for the programmers.  Everything
-is programmed in Haskell.")
-    (license license:bsd-3)))
-
 (define-public manaplus
   (package
     (name "manaplus")
@@ -2599,12 +2686,13 @@ Transport Tycoon Deluxe.")
     (version "0.2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/OpenRCT2/OpenRCT2.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0yxaphgfq85piaacnnfy6lrvmnqmfj1891rxlkl5ndngq0zh0ysb"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1bfqmb6cbmsjcvj77vppy5lw1m4lkvxd1w3f218ah4788xnkysq2"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
@@ -2780,7 +2868,6 @@ is attributed to Albert Einstein.")
               (uri (string-append
                     "https://www.hoopajoo.net/static/projects/powwow-"
                     version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
                 "1gf0jc1vfv05lxij51n3c1dqn3aiiy2kj1v6q14an3wm7yl7cllp"))))
@@ -2800,58 +2887,59 @@ http://lavachat.symlynx.com/unix/")
   (let ((release "1.6.0")
         (revision 0)
         (data-sources
-         '(("acerspyro" "07mzgdahnr3w3w7kf8nmy20r199rimfx9ryqxjdr793sw0vawqd3")
-           ("actors" "1hkgscfhg0kmwgym0mw56fhcckzbb2hh3nsvd45v4mdfyk0xnrm7")
-           ("appleflap" "1q4xs3x904mrrbxzv6lpr3lywm8p6i8339ijzy9j091s2wdl51ka")
-           ("blendbrush" "004md2haysr9w8fj6l7bj9wcfjqrq9wx1rrjf9dv16k5sbrkqza9")
-           ("caustics" "1qmmv8ds70j1ixy4rvli309vbcyjq1l5j1wri6nbnjay10f9fcgq")
-           ("crosshairs" "0q1vadg5cai9i6igl6y08774fd05gav0kinbgb2757n47ig50bns")
-           ("dziq" "1s9248ky2qqy24z9c2vgpisz500dvsaj249pv1fkrxgsypjm1z6v")
-           ("elyvisions" "15synpms05996v4c4kdl0h899spl4z7si9kl8c4m7rvc2yvin1ga")
-           ("fonts" "1l4727ai8mphi7n3wcjp2lh3p47nh6w82s5dpqbbjpqr9gilb69j")
-           ("freezurbern" "0hcdbzs02mvpsfhmahhqjv6pd8lbsag1bm6rpy61ns5qwmhg96ys")
-           ("john" "1whyvlx87mb83kfb7jhhnwz9s7lry4li8l3xar61vmlqgmsnz33d")
-           ("jojo" "02wxa93f5al4rlnsdjpd0hlnca0ympnj8481lgdxx70hny8zi3qi")
-           ("jwin" "1gb4l7lbhr150hml1y0wbyx7266q5nslh6n494wwrrsvp11s2qk8")
-           ("luckystrike" "0wy2spvhx5k233fsl283250ym5bqvkk8i6i19sw3zvzyxp2p4yq9")
-           ("maps" "1dmvp9mskval606z5srjd909jpm6qz4fdcpaszkkhfr5ajbj30vq")
-           ("mayhem" "0hkzzx0rxda70ixw9lfh9v1dpsbn2dj86jrr3zxjgasbgaxw37ax")
-           ("mikeplus64" "144fxhp4qjqjw3gvhf7ym6rnfxvxc0zvd3f54jg1jgnccc1hfyah")
-           ("misc" "0bpvibyc6vjhbzsf67xxn85yq2h97xs96icbskwzs2wsd860kq8c")
-           ("nieb" "0d72wsibk9sg9nhin3fwzz9zljiccyln0fn42y2q2xbd4my23b1k")
-           ("nobiax" "19lr36ys98cmpp739svjar1j942fbxz6r062gi7ygh89zh9yrgfy")
-           ("particles" "02pnq8ksl7f6kqxss3aza98jssdq2s41rhkhki71ynavp2a5akar")
-           ("philipk" "1xkrb7wa1pyhbs4xxx7vnnzsxrqzswk7gjbdac7i7rj0lwnfaij2")
-           ("projectiles" "1hra0f1ifiddh16fv4pqcr2amf046lf445v0653zkyri43zgrj5f")
-           ("props" "0ff6a8pz62f4nsk4c9cr50kirw108a661y5j6fvlsjickw3xjmyv")
-           ("skyboxes" "1lq58dhrdiivq7llkiyqwpi3bwa89r8hbi98p7zjhw7wdn34i6n2")
-           ("snipergoth" "0d5qf01bxd4dlffgxf8i91zq6mbyjmfd00dpyligpfj6fdbz87gc")
-           ("sounds" "0z6jmxsr3w735hrdnxypdb0gi399pwkaycv9grjpiqy43j3ic7gj")
-           ("textures" "0k5a47g2z99xn17vw7bqbp0w726gxmk33g5gwmqvfhxxxzzwimvi")
-           ("torley" "12x23l8xcv9ard5v76lb210lvp66whsns2p3k3xkd1sabp5ixbd5")
-           ("trak" "03kmwj47yb3dqzb6k9kilna9ja8c6jcnblvbs72x15767fl496pb")
-           ("ulukai" "0vvd016a7x981ixif6dnlg45s0ak7i89pgyrgwy2fpd94nl2am15")
-           ("unnamed" "18sxvdha41njp6g8wn56mjy6w9x778c793gh8fr0h9cnysb5gfmi")
-           ("vanities" "1p38mc2566bmb4vdyr9n9s6fkwmynp2xlpdq2a97gzgi4nmm0232")
-           ("vegetation" "0pf3qvqzabdcri5za61z6m89b5hq7sd3q0idkazmx88a62mcclkb")
-           ("weapons" "1jr05y9qhhx53plvir35srvv3cmn6wa065p3bskx6h1x6dcbx3c6")
-           ("wicked" "14b9f92h8hccp7a015z6rqgbs8236sdyxnwsq991ylnap7cbwvam"))))
+         '(("acerspyro" "12b0bngl7hlxw4iwdbn99jp081yl6z1ic0s788nm349drbr2pck8")
+           ("actors" "0x7qqx67679q6ark9zz02skwhzgabid69kwi6zmhfpfgicn4927r")
+           ("appleflap" "08xslwqfqz3j4m03pv5ry2gdzj5k2ns51z8n6sln3sa94i9x8qkm")
+           ("blendbrush" "18zf5i2ax4p14x4c9nhk9fq6l1xgbxw62gm72vx59vbfdpjrw3cg")
+           ("caustics" "172fxwx7kbz5nmbjq98kr52ips505wb99fibgnpg8cj02syrya8k")
+           ("crosshairs" "14w8ysqzdsx9bzpfbl700jzngbh14rdghhjdf6zd6jlkvrl6754r")
+           ("dziq" "056imqszvp90j7cgz52ly0f31px64gsrmvm9k2c78ldbx87jnhc3")
+           ("elyvisions" "1bsgr0gr7njydj8fqclh0a27lrsyic3xfd5a4vwggw7g54azpgk2")
+           ("fonts" "00ibisza1qci0ghf2rynyf28l6r3nqhfzjf80k6gg76q4v7p1myx")
+           ("freezurbern" "07l9ldk9b82f12c13wcg5xxdf15bw0yjxk3vvk8v3ygrl2mwksyr")
+           ("john" "1jdmwkrdi5b9pivkm22rxhmkk1db9dx6l54wzcc23cvdz04ij93k")
+           ("jojo" "0f7kjy43fbk9kw8fip6bbw4gn3pryh0fndlahjfkaysrx98krdj3")
+           ("jwin" "0nc8dndnpqk2ad6316a8k6kgzsrkpwvk8s4gyh7aqfi4axfclril")
+           ("luckystrike" "04jiipqahphmvz5cd74dygr62dlvv6l4iglb8hzh4pp8frhls8bq")
+           ("maps" "0an46ipjvw4h0nxvb6qvnzp1cdkzlkiinqz4zh9lmxy1ds0gclim")
+           ("mayhem" "15k10imm2wr6c6fq35n4r99k7kz7n9zdnjlw6dmdq6fba67i6sbc")
+           ("mikeplus64" "0v4wiiivm3829j4phlavy22n4c6k6ib9ixxpdz7r6ysg5cdkaw33")
+           ("misc" "13rfgwrlfhflz6inbkg3fypyf8im0m49sw112b17qrw2zgp8i1rz")
+           ("nieb" "0z0h9jdn2gkkjil3vsvwidb1p2k09pi5n3wjxza12hhvqmcs7q8f")
+           ("nobiax" "08bfp4q6gbfis18bp1h4d0hqssk79jc4fhyjxnv21dbam4v4mnkn")
+           ("particles" "1vsx3fgg19xggxfhz3vlrh6nqhmw7kl9kmxrvb2j84blp00vd6z2")
+           ("philipk" "14irscg80607i5k5l2ci0n9nwibvda2f3xsykgv96d0vldrp5n5a")
+           ("projectiles" "09bnfsrywirwgjm6d7ff5nicx6w6b7w9568x9pb5q0ncaps3l85s")
+           ("props" "1dlabbprlkif8af3daf9nbgcwgxiymvj0yiphqhlri8ylfy2vpz4")
+           ("skyboxes" "14bi3md5y47cvb9ybipdvksz40gqsqw2r0lh3zzqb4acq367w18y")
+           ("snipergoth" "0m8rvvy5n8n9pm0b5cqvzsxsw51mqk8m7s1h3qc849b38isliwq2")
+           ("sounds" "0ivf3w5bphz5pzzx6kwcb67vbly1l19cgv3s0cyp8n87afiqj5rd")
+           ("textures" "0qdmgx7zbcqnb9rrga2izr93p5inirczhddfxs504rsnv0v8vyxm")
+           ("torley" "05ppyhghq859cbbxzj3dnl9fcx3ghy04ds1pylypwg2hsxzbjwcd")
+           ("trak" "0g3vq86q91a3syli38lwc8ca4ychfwsmmqf85kqzfzyd627ybclm")
+           ("ulukai" "0asa5fz400impklcg6dy2f7jiaqfc1sn1c36fpg8jd01gw66lw93")
+           ("unnamed" "0rz5683j7sfwkcycfypbv4b0ihp0qwn9rzskfsabwc1s5g324917")
+           ("vanities" "13f18783rc8cjf22p61zr8m5g1migzlx05fzl8xnbjdkqq4cdyix")
+           ("vegetation" "1y5d97nfmvax7y4fr0y5v0c8zb1ajkqwx76kjd4qc9n4spdsi5sc")
+           ("weapons" "103g1dhxv5ffz4ddg2xcbshbgv9606chsbas3pzk6h9ybqsyjrqh")
+           ("wicked" "1884rk34a2dj83gz82rc4zh3ch0dyj5221hvsr0a5h60578i7yj6"))))
     (package
       (name "red-eclipse")
       (version (if (zero? revision)
                    release
                    (string-append release "-"
                                   (number->string revision))))
-      (source (origin
-                (method url-fetch)
-                (uri (string-append "https://github.com/red-eclipse/base"
-                                    "/archive/v" release ".tar.gz"))
-                (file-name (string-append name "-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1vs9k6f5fgsiy1n72imlqm8khjwm8cryc08zwd4gr7yxlxv45bs0"))
-                (patches
-                 (search-patches "red-eclipse-remove-gamma-name-hack.patch"))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/red-eclipse/base.git")
+               (commit (string-append "v" release))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qy9kmq21wc4bdhwifasxc5dv1y5c53sn7dfmyc5y3zyz8wjyij4"))
+         (patches
+          (search-patches "red-eclipse-remove-gamma-name-hack.patch"))))
       (build-system gnu-build-system)
       (arguments
        `(#:tests? #f            ; no check target
@@ -2866,15 +2954,10 @@ http://lavachat.symlynx.com/unix/")
              (lambda* (#:key inputs #:allow-other-keys)
                (delete-file-recursively "data")
                (mkdir "data")
-               (for-each (lambda (name)
-                           (invoke "tar" "-xvf"
-                                   (assoc-ref inputs name)
-                                   "-Cdata"
-                                   "--transform"
-                                   (string-append "s/"
-                                                  name "-" ,release "/"
-                                                  name "/")))
-                         (list ,@(map car data-sources)))
+               (with-directory-excursion "data"
+                 (for-each (lambda (name)
+                             (copy-recursively (assoc-ref inputs name) name))
+                           (list ,@(map car data-sources))))
                #t))
            (add-after 'unpack-data 'add-store-data-package-path-as-default
              (lambda* (#:key outputs #:allow-other-keys)
@@ -2946,7 +3029,8 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
                    (chmod "redeclipse_linux" #o555)
                    (chmod "redeclipse_server_linux" #o555)))
                #t)))))
-      (native-inputs `(("pkg-config" ,pkg-config)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
       (inputs
        `(("curl" ,curl)
          ("glu" ,glu)
@@ -2958,13 +3042,14 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
                   ((name hash)
                    (list name
                          (origin
-                           (method url-fetch)
-                           (uri (string-append
-                                 "https://github.com/red-eclipse/"
-                                 name "/archive/v" release ".tar.gz"))
+                           (method git-fetch)
+                           (uri
+                            (git-reference
+                             (url (string-append "https://github.com/"
+                                                 "red-eclipse/" name ".git"))
+                             (commit (string-append "v" release))))
                            (sha256 (base32 hash))
-                           (file-name (string-append name "-" version
-                                                     ".tar.gz"))))))
+                           (file-name (git-file-name name version))))))
                 data-sources)))
       (home-page "http://redeclipse.net/")
       (synopsis "Arena shooter derived from the Cube 2 engine")
@@ -2986,7 +3071,7 @@ Red Eclipse provides fast paced and accessible gameplay.")
     (version "1.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://jxself.org/" name ".tar.gz"))
+              (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
               (sha256
                (base32
                 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
@@ -3103,14 +3188,15 @@ fullscreen, use F5 or Alt+Enter.")
   (package
     (name "warzone2100")
     (version "3.2.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name
-                                  "/releases/" version "/" name "-" version
-                                  ".tar.xz"))
-              (sha256
-               (base32
-                "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/warzone2100/archives/"
+                           "unsupported/Warzone2100-"
+                           (version-major+minor version) "/" version
+                           "/warzone2100-" version ".tar.xz"))
+       (sha256
+        (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-distributor=Guix")
@@ -3171,7 +3257,7 @@ tactics.")
               (uri (string-append
                     "mirror://savannah/starfighter/"
                     (version-major+minor version) "/"
-                    name "-" version "-src.tar.gz"))
+                    "starfighter-" version "-src.tar.gz"))
               (sha256
                (base32
                 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v"))))
@@ -3197,15 +3283,18 @@ in strikes against the evil corporation.")
                    license:cc0
                    license:public-domain))))
 
+(define-public project-starfighter
+  (deprecated-package "project-starfighter" starfighter))
+
 (define-public chromium-bsu
   (package
     (name "chromium-bsu")
     (version "0.9.16.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name
+              (uri (string-append "mirror://sourceforge/chromium-bsu"
                                   "/Chromium B.S.U. source code/"
-                                  name "-" version ".tar.gz"))
+                                  "chromium-bsu-" version ".tar.gz"))
               (sha256
                (base32
                 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
@@ -3476,7 +3565,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
      (origin (method url-fetch)
              (uri (string-append
                    "https://github.com/sgimenez/laby/archive/"
-                   name "-" version ".tar.gz"))
+                   "laby-" version ".tar.gz"))
              (sha256
               (base32
                "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf"))
@@ -3485,12 +3574,19 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
     (inputs
      `(("lablgtk" ,lablgtk)
        ("ocaml" ,ocaml)
-       ("ocaml-findlib" ,ocaml-findlib)))
+       ("ocaml-findlib" ,ocaml-findlib)
+       ("ocamlbuild" ,ocamlbuild)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
-         (add-before 'build 'setenv
+         (add-before 'build 'allow-unsafe-strings
+           ;; Fix a build failure with ocaml >=4.06.0.
+           ;; See <https://github.com/sgimenez/laby/issues/53>.
+           (lambda _
+             (setenv "OCAMLPARAM" "safe-string=0,_")
+             #t))
+         (add-before 'build 'set-library-path
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((lablgtk (assoc-ref inputs "lablgtk")))
                (setenv "LD_LIBRARY_PATH"
@@ -3559,7 +3655,7 @@ colors, pictures, and sounds.")
               (method url-fetch)
               (uri (string-append
                     "https://github.com/SimonLarsen/mrrescue/releases/"
-                    "download/" version "/" name version ".love"))
+                    "download/" version "/mrrescue" version ".love"))
               (file-name (string-append name "-" version ".love"))
               (sha256
                (base32
@@ -3628,8 +3724,8 @@ throwing people around in pseudo-randomly generated buildings.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://www.roguetemple.com/z/hyper/"
-                    name (string-join (string-split version #\.) "")
+                    "https://www.roguetemple.com/z/hyper/hyperrogue"
+                    (string-join (string-split version #\.) "")
                     "-src.tgz"))
               (sha256
                (base32
@@ -3706,7 +3802,7 @@ throwing people around in pseudo-randomly generated buildings.")
            (method url-fetch)
            (uri
             (string-append
-             "https://www.roguetemple.com/z/hyper/" name
+             "https://www.roguetemple.com/z/hyper/hyperrogue"
              (string-join (string-split version #\.) "")
              "-win.zip"))
            (sha256
@@ -3814,13 +3910,13 @@ to the Space Age.")
     (version "0.3.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/bartobri/no-more-secrets/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bartobri/no-more-secrets.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1kpx1rirc3i7fb4lymp0hx5rqr0s2ay4za261rw3bcy6d23l1kyg"))))
+        (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -4115,6 +4211,9 @@ small robot living in the nano world, repair its maker.")
     ;; for a statement from the author.
     (license license:public-domain)))
 
+(define-public kiki-the-nano-bot
+  (deprecated-package "kiki-the-nano-bot" kiki))
+
 (define-public teeworlds
   (package
     (name "teeworlds")
@@ -4404,10 +4503,13 @@ underwater realm quarrel among themselves or comment on the efforts of your
 fish.  The whole game is accompanied by quiet, comforting music.")
     (license license:gpl2+)))
 
+(define-public fish-fillets-ng
+  (deprecated-package "fish-fillets-ng" fillets-ng))
+
 (define-public crawl
   (package
     (name "crawl")
-    (version "0.23.1")
+    (version "0.23.2")
     (source
      (origin
        (method url-fetch)
@@ -4420,8 +4522,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
              (string-append "http://crawl.develz.org/release/stone_soup-"
                             version "-nodeps.tar.xz")))
        (sha256
-        (base32
-         "0c3mx49kpz6i2xvv2dwsaj9s7mm4mif1h2qdkfyi80lv2j1ay51h"))
+        (base32 "1hw10hqhh688mrqs9vxrl17y1dzfjzsmxz6izg1a9dzmjlhrc01a"))
        (patches (search-patches "crawl-upgrade-saves.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -4443,7 +4544,7 @@ fish.  The whole game is accompanied by quiet, comforting music.")
          (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
                (string-append "prefix=" out)
                "SAVEDIR=~/.crawl"
-               ;; Don't compile with SSE on systems which don't use it
+               ;; Don't compile with SSE on systems which don't have it.
                ,@(match (%current-system)
                    ((or "i686-linux" "x86_64-linux")
                     '())
@@ -4472,9 +4573,9 @@ fish.  The whole game is accompanied by quiet, comforting music.")
                     ;; Force command line build for test cases.
                     (append make-flags '("GAME=crawl" "TILES="))))))))
     (synopsis "Roguelike dungeon crawler game")
-    (description "Dungeon Crawl Stone Soup is a roguelike adventure through
-dungeons filled with dangerous monsters in a quest to find the mystifyingly
-fabulous Orb of Zot.")
+    (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
+for short) is a roguelike adventure through dungeons filled with dangerous
+monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
     (home-page "https://crawl.develz.org")
     (license (list license:gpl2+
                    license:bsd-2
@@ -4484,6 +4585,9 @@ fabulous Orb of Zot.")
                    license:zlib
                    license:asl2.0))))
 
+(define-public dungeon-crawl-stone-soup
+  (deprecated-package "dungeon-crawl-stone-soup" crawl))
+
 ;; The linter here claims that patch file names should start with the package
 ;; name. But, in this case, the patches are inherited from crawl with the
 ;; "crawl-" prefix instead of "crawl-tiles-".
@@ -4520,6 +4624,9 @@ fabulous Orb of Zot.")
        ("which" ,which)))
     (synopsis "Graphical roguelike dungeon crawler game")))
 
+(define-public dungeon-crawl-stone-soup-tiles
+  (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
+
 (define-public lugaru
   (package
     (name "lugaru")
@@ -4527,7 +4634,7 @@ fabulous Orb of Zot.")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
-                                  name "-" version ".tar.xz"))
+                                  "lugaru-" version ".tar.xz"))
               (sha256
                (base32
                 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
@@ -4678,11 +4785,11 @@ fight against their plot and save his fellow rabbits from slavery.")
                (setenv "JOBS" (string-append "-j" jobs))
                (setenv "CC" "gcc")
                (with-directory-excursion "build/workspaces"
-                 (zero? (system* "./update-workspaces.sh"
-                                 (string-append "--libdir=" lib)
-                                 (string-append "--datadir=" data)
-                                 ;; TODO: "--with-system-nvtt"
-                                 "--with-system-mozjs38"))))))
+                 (invoke "./update-workspaces.sh"
+                         (string-append "--libdir=" lib)
+                         (string-append "--datadir=" data)
+                         ;; TODO: "--with-system-nvtt"
+                         "--with-system-mozjs38")))))
          (delete 'check)
          (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -4716,7 +4823,7 @@ fight against their plot and save his fellow rabbits from slavery.")
          (add-after 'install 'check
            (lambda _
              (with-directory-excursion "system"
-               (zero? (system* "./test"))))))))
+               (invoke "./test")))))))
     (home-page "https://play0ad.com")
     (synopsis "3D real-time strategy game of ancient warfare")
     (description "0 A.D. is a real-time strategy (RTS) game of ancient
@@ -4778,7 +4885,7 @@ at their peak of economic growth and military prowess.
                (substitute* "Makefile"
                  ((".adoc.6:" line)
                   (string-append line " advent.adoc")))
-               (zero? (system* "make" ".adoc.6"))))
+               (invoke "make" ".adoc.6")))
            ;; There is no install target
            (replace 'install
              (lambda* (#:key outputs #:allow-other-keys)
@@ -4925,6 +5032,9 @@ intuitive mouse control, streamlined mechanics and deep, challenging combat,
 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
     (license license:gpl3+)))
 
+(define-public tales-of-maj-eyal
+  (deprecated-package "tales-of-maj-eyal" tome4))
+
 (define-public quakespasm
   (package
     (name "quakespasm")
@@ -5307,22 +5417,22 @@ You can save humanity and get programming skills!")
 (define-public gzdoom
   (package
     (name "gzdoom")
-    (version "3.3.0")
+    (version "3.7.2")
     (source (origin
               (method url-fetch)
               (uri
-               (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-g"
+               (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-src-g"
                               version ".zip"))
               (sha256
                (base32
-                "09a4kx3ry8pc9r578m7yprwa7zsdqxjpn10lyc92r5g9sx4l1m1a"))
+                "0182f160m8d0c3nywjw3dxvnz93xjs4cn8akx7137cha4s05wdq7"))
               (patches (search-patches "gzdoom-search-in-installed-share.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (delete-file-recursively "bzip2")
                   (delete-file-recursively "game-music-emu")
-                  (delete-file-recursively "jpeg-6b")
+                  (delete-file-recursively "jpeg")
                   (delete-file-recursively "zlib")
                   #t))))
     (arguments
@@ -5386,6 +5496,8 @@ renderer.  It improves modding support with ZDoom's advanced mapping features
 and the new ZScript language.  In addition to Doom, it supports Heretic, Hexen,
 Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
     (home-page "https://zdoom.org/index")
+    ;; The source uses x86 assembly
+    (supported-systems '("x86_64-linux" "i686-linux"))
     (license (list license:gpl3+         ; gzdoom game
                    license:lgpl3+        ; gzdoom renderer
                    license:expat         ; gdtoa
@@ -5393,6 +5505,34 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
                     "file://dumb/licence.txt"
                     "Dumb license, explicitly GPL compatible.")))))
 
+(define-public odamex
+  (package
+    (name "odamex")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/odamex/Odamex/" version "/"
+             "odamex-src-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sh6lqj7vsdmnqz17hw0b6vy7xx6dp41k2sdw99ympsfa2xd1d2j"))))
+    (build-system cmake-build-system)
+    (arguments `(#:tests? #f)) ; no tests.
+    (inputs
+     `(("sdl" ,sdl)
+       ("sdl-mixer" ,sdl-mixer)
+       ("zlib" ,zlib)
+       ("libpng" ,libpng)
+       ("alsa-lib" ,alsa-lib)))
+    (home-page "https://odamex.net/")
+    (synopsis "Multiplayer Doom port")
+    (description "Odamex is a modification of the Doom engine that
+allows players to easily join servers dedicated to playing Doom
+online.")
+    (license license:gpl2+)))
+
 (define-public fortune-mod
   (package
     (name "fortune-mod")
@@ -5402,7 +5542,7 @@ Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/shlomif/fortune-mod")
-             (commit (string-append name "-" version))))
+             (commit (string-append "fortune-mod-" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -5711,10 +5851,10 @@ open-source FPS of its kind.")
               (method url-fetch)
               (uri (list (string-append
                           "http://www.ifarchive.org/if-archive/infocom/interpreters/"
-                          name "/" name "-" version ".tar.gz")
+                          "frotz/frotz-" version ".tar.gz")
                          (string-append
                           "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
-                          name "/" name "-" version ".tar.gz")))
+                          "frotz/frotz-" version ".tar.gz")))
               (sha256
                (base32
                 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
@@ -5760,10 +5900,10 @@ ncurses for text display.")
               (method url-fetch)
               (uri (list (string-append
                           "http://www.ifarchive.org/if-archive/infocom/interpreters/"
-                          "frotz" "/" "frotz" "-" version ".tar.gz")
+                          "frotz/frotz-" version ".tar.gz")
                          (string-append
                           "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
-                          "frotz" "/" "frotz" "-" version ".tar.gz")))
+                          "frotz/frotz-" version ".tar.gz")))
               (sha256
                (base32
                 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
@@ -5865,9 +6005,9 @@ when packaged in Blorb container files or optionally from individual files.")
     (version "0.2.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/libmanette/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "libmanette-" version ".tar.xz"))
               (sha256
                (base32
                 "1lpprk2qz1lsqf9xj6kj2ciyc1zmjhj5lwd584qkh7jgz2x9y6wb"))))
@@ -5894,9 +6034,9 @@ GameController.")
     (version "3.31.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/quadrapassel/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "quadrapassel-" version ".tar.xz"))
               (sha256
                (base32
                 "08i01nsgfb502xzzrrcxxbs7awb0j1h4c08vmj0j18ipa1sz8vb8"))))
@@ -6037,6 +6177,22 @@ civilized than your own.")
                             "/lib/glib-2.0/include"))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'ensure-application-files-can-be-found
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
+                 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
+                  (string-append "\"" out
+                                 "/share/stepmania/GtkModule.so\"")))
+               (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
+                 (("Root = sDirOfExecutable")
+                  (string-append "Root = \"" out "/share/stepmania/\""))
+                 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
+                  (string-append "\"" out "/share/stepmania/" dir "\"")))
+               (substitute* "src/RageFileManager.cpp"
+                 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
+                  (string-append "\"" out "/share/stepmania/\""))))
+             #t))
          (add-after 'unpack 'fix-install-subdir
            ;; Installation would be done in "%out/stepmania-X.Y", but we
            ;; prefer the more common layout "%out/share/stepmania".
@@ -6192,15 +6348,19 @@ to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
        ("zip" ,zip)))
     (home-page "http://btanks.sourceforge.net")
     (synopsis "Multiplayer tank battle game")
-    (description "Battle Tanks is a funny battle game, where you can choose
-one of three vehicles and eliminate your enemy using the whole arsenal of
-weapons.  It has original cartoon-like graphics and cool music, it’s fun and
-dynamic, it has several network modes for deathmatch and cooperative.")
+    (description "Battle Tanks (also known as \"btanks\") is a funny battle
+game, where you can choose one of three vehicles and eliminate your enemy
+using the whole arsenal of weapons.  It has original cartoon-like graphics and
+cool music, it’s fun and dynamic, it has several network modes for deathmatch
+and cooperative.")
     ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
     ;; released under GPLv2 or later.  It comes with extra exceptions for the
     ;; developers.
     (license (list license:gpl2+ license:lgpl2.1+))))
 
+(define-public battle-tanks
+  (deprecated-package "battle-tanks" btanks))
+
 (define-public slingshot
   (package
     (name "slingshot")
@@ -6358,7 +6518,7 @@ the desired spell.")
 (define-public edgar
   (package
     (name "edgar")
-    (version "1.30")
+    (version "1.31")
     (source
      (origin
        (method url-fetch)
@@ -6366,10 +6526,9 @@ the desired spell.")
         (string-append "https://github.com/riksweeney/edgar/releases/download/"
                        version "/edgar-" version "-1.tar.gz"))
        (sha256
-        (base32
-         "0bhbs33dg0nb8wqlh6px1jj41j05f89ngdqwdkffabmjk7wq5isx"))))
+        (base32 "0i4851ci8a86ql4bhdq3xdfmf4b9z5zrd4xpc6vhi06697zgm13i"))))
     (build-system gnu-build-system)
-    (arguments '(#:tests? #f                    ; there are no tests
+    (arguments '(#:tests? #f            ; there are no tests
                  #:make-flags
                  (list "CC=gcc"
                        (string-append "PREFIX=" (assoc-ref %outputs "out"))
@@ -6379,14 +6538,13 @@ the desired spell.")
                    (delete 'configure)
                    (add-before 'build 'fix-env
                      (lambda* (#:key inputs #:allow-other-keys)
-                       (setenv "CPATH" (string-append (assoc-ref inputs "sdl")
-                                                      "/include/SDL/"))
+                       (setenv "CPATH"
+                               (string-append (assoc-ref inputs "sdl2-union")
+                                              "/include/SDL2"))
                        #t)))))
-    (inputs `(("sdl" ,sdl)
-              ("sdl-img" ,sdl-image)
-              ("sdl-mixer" ,sdl-mixer)
-              ("sdl-ttf" ,sdl-ttf)
-              ("zlib" ,zlib)))
+    (inputs
+     `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
+       ("zlib" ,zlib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("autoconf" ,autoconf)
@@ -6401,3 +6559,571 @@ 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+)))
+
+(define-public the-legend-of-edgar
+  (deprecated-package "the-legend-of-edgar" edgar))
+
+(define-public openclonk
+  (package
+    (name "openclonk")
+    (version "8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.openclonk.org/builds/release/" version "/"
+                    "openclonk-" version "-src.tar.bz2"))
+              (sha256
+               (base32
+                "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DAudio_TK=OpenAL")
+       #:test-target "tests"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'prepare-gmock
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir "gmock")
+             (copy-recursively (assoc-ref inputs "googlemock") "gmock")
+             (substitute* "tests/CMakeLists.txt"
+               (("/usr/src/gmock")
+                (string-append (getcwd) "/gmock/googlemock"))
+               (("/usr/src/gtest")
+                (string-append (getcwd) "/gmock/googletest"))
+               (("PATH_SUFFIXES \"src\" \"gtest\"")
+                "PATH_SUFFIXES \"src\""))
+             #t))
+         (add-after 'unpack 'add-libiberty
+           ;; Build fails upon linking executables without this.
+           (lambda _
+             (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
+               (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
+                (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
+             #t))
+         (add-after 'add-libiberty 'lax-freealut-requirement
+           ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
+           ;; it as 1.0.1.  Force minimal version.
+           (lambda _
+             (substitute* "cmake/FindAudio.cmake"
+               (("freealut>=1.1.0") "freealut>=1.0.1"))
+             #t))
+         (add-after 'lax-freealut-requirement 'fix-directories
+           ;; Prefer "$out/share/openclonk" over
+           ;; "$out/share/games/openclonk". Also install "openclonk"
+           ;; binary in "bin/", not "games/".
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("share/games/openclonk") "share/openclonk")
+               (("TARGETS openclonk DESTINATION games")
+                "TARGETS openclonk DESTINATION bin"))
+             #t)))))
+    (native-inputs
+     `(("googlemock" ,(package-source googletest))
+       ("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freealut" ,freealut)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("libiberty" ,libiberty)
+       ("libjpeg" ,libjpeg-turbo)
+       ("libogg" ,libogg)
+       ("libpng" ,libpng)
+       ("libvorbis" ,libvorbis)
+       ("libxrandr" ,libxrandr)
+       ("mesa" ,mesa)
+       ("miniupnpc" ,miniupnpc)
+       ("openal" ,openal)
+       ("qtbase" ,qtbase)
+       ("readline" ,readline)
+       ("sdl" ,sdl2)
+       ("tinyxml" ,tinyxml)
+       ("zlib" ,zlib)))
+    (home-page "https://www.openclonk.org/")
+    (synopsis
+     "Multiplayer action game where you control small and nimble humanoids")
+    (description "OpenClonk is a multiplayer action/tactics/skill game.  It is
+often referred to as a mixture of The Settlers and Worms.  In a simple 2D
+antfarm-style landscape, the player controls his crew of Clonks, small but
+robust humanoid beings.  The game encourages free play but the normal goal is
+to either exploit valuable resources from the earth by building a mine or
+fight each other on an arena-like map.")
+    ;; Software as a whole is licensed under ISC, artwork under CC-BY.
+    (license (list license:isc license:cc-by3.0))))
+
+(define-public flare-engine
+  (package
+    (name "flare-engine")
+    (version "1.09.01")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/flareteam/flare-engine.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1117nxir0zwz4pipx7sxj64p68ig6gbz94lkkjbgrk44lhs0hz8p"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
+    (inputs
+     `(("hicolor-icon-theme" ,hicolor-icon-theme)
+       ("python" ,python-wrapper)
+       ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
+    (home-page "http://www.flarerpg.org/")
+    (synopsis "Action Roleplaying Engine")
+    (description "Flare (Free Libre Action Roleplaying Engine) is a simple
+game engine built to handle a very specific kind of game: single-player 2D
+action RPGs.")
+    (license license:gpl3+)))
+
+(define-public flare-game
+  (package
+    (name "flare-game")
+    (version "1.09.01")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/flareteam/flare-game.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1hn2cchqsbvvgzqc6zvblnl3qrr6sp5rqxpsrcvdmbjm7b37x37b"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:configure-flags '("-DDATADIR=share/flare")
+       #:phases
+       (modify-phases %standard-phases
+         ;; Flare expects the mods to be located in the same folder.
+         ;; Yet, "default" mod is in the engine, whereas the others
+         ;; are in the current package.  Merge everything here with
+         ;; a symlink.
+         (add-after 'install 'add-default-mod
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (mods (string-append out "/share/flare/mods")))
+               (with-directory-excursion mods
+                 (symlink (string-append (assoc-ref inputs "flare-engine")
+                                         "/share/flare/mods/default")
+                          "default")))
+             #t))
+         (add-after 'install 'install-executable
+           ;; The package only provides assets for the game, the
+           ;; executable coming from "flare-engine".  Since more than
+           ;; one game may use the engine, we create a new executable,
+           ;; "flare-game", which launches the engine with appropriate
+           ;; parameters.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bash (string-append (assoc-ref inputs "bash")
+                                         "/bin/bash"))
+                    (flare (string-append (assoc-ref inputs "flare-engine")
+                                          "/bin/flare"))
+                    (script (string-append out "/bin/flare-game")))
+               (mkdir-p (dirname script))
+               (call-with-output-file script
+                 (lambda (port)
+                   (format port
+                           "#!~a
+exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
+                           bash
+                           flare
+                           out)))
+               (chmod script #o755))
+             #t)))))
+    (inputs
+     `(("flare-engine" ,flare-engine)))
+    (home-page "http://www.flarerpg.org/")
+    (synopsis "Fantasy action RPG using the FLARE engine")
+    (description "Flare is a single-player 2D action RPG with
+fast-paced action and a dark fantasy style.")
+    (license license:cc-by-sa3.0)))
+
+(define-public meritous
+  (package
+    (name "meritous")
+    (version "1.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/meritous/meritous.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:make-flags
+       (list "CC=gcc"
+             (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'fix-sdl-path
+           ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
+           ;; directory, not SDL-union provided as an input to the package.
+           ;; We force the latter with "--prefix=" option.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("sdl-config" command)
+                (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
+             #t))
+         (add-after 'unpack 'fix-crash
+           ;; XXX: Songs are not present in the repository, due to licensing
+           ;; issues.  Yet, the game tries to load them, and, since it cannot
+           ;; find them, crashes.  Users cannot add them back, the store being
+           ;; read-only, so we turn off background music altogether.
+           (lambda _
+             (substitute* "src/audio.c"
+               (("PlayBackgroundMusic\\(new_track\\);" all)
+                (string-append "// " all)))
+             #t)))))
+    (native-inputs
+     `(("intltool" ,intltool)))
+    (inputs
+     `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
+       ("zlib" ,zlib)))
+    (home-page "https://gitlab.com/meritous/meritous")
+    (synopsis "Action-adventure dungeon crawl game")
+    (description "Far below the surface of the planet is a place of limitless
+power.  Those that seek to control such a utopia will soon bring an end to
+themselves.  Seeking an end to the troubles that plague him, PSI user Merit
+journeys into the hallowed Orcus Dome in search of answers.
+
+Meritous is a action-adventure game with simple controls but a challenge to
+find a balance of power versus recovery time during real-time battles.  Set in
+a procedurally generated world, the player can explore thousands of rooms in
+search of powerful artifacts, tools to help them, and to eventually free the
+Orcus Dome from evil.")
+    (license license:gpl3+)))
+
+(define-public marble-marcher
+  (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
+        (revision "1"))
+    (package
+      (name "marble-marcher")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/HackerPoet/MarbleMarcher.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f  ; there are none
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'embed-asset-directory
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((assets (string-append (assoc-ref outputs "out")
+                                            "/share/marble-marcher/assets/")))
+                 ;; Some of the files we're patching are
+                 ;; ISO-8859-1-encoded, so choose it as the default
+                 ;; encoding so the byte encoding is preserved.
+                 (with-fluids ((%default-port-encoding #f))
+                   (substitute* "src/Resource.rc"
+                     (("../assets/icon.ico")
+                      (string-append assets "icon.ico")))
+                   (substitute* "src/Res.h"
+                     (("assets/") assets))))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (assets (string-append out "/share/marble-marcher/assets"))
+                      (bin (string-append out "/bin/")))
+                 (mkdir-p bin)
+                 (mkdir-p assets)
+                 (copy-recursively "../source/assets" assets)
+                 (install-file "MarbleMarcher" bin))
+               #t)))))
+      (inputs
+       `(("eigen" ,eigen)
+         ("mesa" ,mesa)
+         ("sfml" ,sfml)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (home-page "https://codeparade.itch.io/marblemarcher")
+      (synopsis "Guide a marble across fractal landscapes")
+      (description "Marble Marcher is a video game that uses a fractal physics
+engine and fully procedural rendering to produce beautiful and unique
+gameplay.  The game is played on the surface of evolving fractals.  The goal
+of the game is to get your marble to the flag as quickly as possible.  But be
+careful not to fall off the level or get crushed by the fractal!  There are 24
+levels to unlock.")
+      ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
+      (license (list license:gpl2+
+                     license:silofl1.1
+                     license:cc-by-sa3.0)))))
+
+;; This must be updated together with flightgear.
+(define simgear
+  (package
+    (name "simgear")
+    (version "2018.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/flightgear/release-"
+                                  (version-major+minor version) "/"
+                                  "simgear-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Skip tests that require internet access.
+             (invoke "ctest" "-E" "(http|dns)"))))))
+    (inputs
+     `(("boost" ,boost-for-mysql) ; fails with 1.69
+       ("curl" ,curl)
+       ("expat" ,expat)
+       ("mesa" ,mesa)
+       ("openal" ,openal)
+       ("openscenegraph" ,openscenegraph-3.4)
+       ("zlib" ,zlib)))
+    (home-page "https://home.flightgear.org/")
+    (synopsis "Libraries for 3D simulations and games")
+    (description "SimGear is a set of libraries designed to be used as
+building blocks for quickly assembling 3D simulations, games, and
+visualization applications.  SimGear is developed by the FlightGear project
+and also provides the base for the FlightGear Flight Simulator.")
+    (license license:lgpl2.0+)))
+
+(define-public flightgear
+  (package
+    (name "flightgear")
+    (version (package-version simgear))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/flightgear/release-"
+                                  (version-major+minor version) "/"
+                                  "flightgear-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; There are some bundled libraries.
+                  (for-each delete-file-recursively
+                            '("3rdparty/sqlite3/"))
+                  #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DSYSTEM_SQLITE=ON"
+             (string-append "-DFG_DATA_DIR="
+                            (assoc-ref %outputs "out")
+                            "/share/flightgear"))
+       ;; TODO: test cannot be run because the "run_test_suite" executable
+       ;; does not seem to be built.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/fgfs")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtdeclarative" "qtsvg")))
+                 `("QML2_IMPORT_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/qml"))
+                         '("qtdeclarative" "qtsvg"))))
+               #t)))
+         (add-after 'install 'install-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
+               (mkdir-p share)
+               (with-directory-excursion share
+                 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
+                         "--strip-components=1")))
+             #t)))))
+    (inputs
+     `(("boost" ,boost-for-mysql)       ; same as simgear
+       ("dbus" ,dbus)
+       ("eudev" ,eudev)
+       ("freeglut" ,freeglut)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("libpng" ,libpng)
+       ("openal" ,openal)
+       ("openscenegraph" ,openscenegraph-3.4)
+       ("plib" ,plib)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtsvg" ,qtsvg)
+       ("simgear" ,simgear)
+       ("speexdsp" ,speexdsp)
+       ("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)
+       ("flightgear-data"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "mirror://sourceforge/flightgear/release-"
+                               (version-major+minor version) "/"
+                               "FlightGear-" version "-data.tar.bz2"))
+           (sha256
+            (base32
+             "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
+    (home-page "https://home.flightgear.org/")
+    (synopsis "Flight simulator")
+    (description "The goal of the FlightGear project is to create a
+sophisticated flight simulator framework for use in research or academic
+environments, pilot training, as an industry engineering tool, for DIY-ers to
+pursue their favorite interesting flight simulation idea, and last but
+certainly not least as a fun, realistic, and challenging desktop flight
+simulator.")
+    (license license:gpl2+)))
+
+(define-public jumpnbump
+  (package
+    (name "jumpnbump")
+    (version "1.60")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/LibreGames/jumpnbump.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0gwi58ck4magvdim8wmxdqnsi0fqdpvqia9kcc7q73nqf34jjz3v"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list "CC=gcc"
+             (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:tests? #f                      ;no test
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure script
+         (add-after 'unpack 'fix-sdl-path
+           ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
+           ;; directory, not SDL-union provided as an input to the package.
+           ;; We force the latter with "--prefix=" option.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("sdl2-config" command)
+                (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
+             #t)))))
+    (inputs
+     `(("bzip2" ,bzip2)
+       ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)))   ;for msgfmt
+    (home-page "https://gitlab.com/LibreGames/jumpnbump")
+    (synopsis "Multiplayer platform game with bunnies")
+    (description "You, as a bunny, have to jump on your opponents to make them
+explode.  It is a true multiplayer game; you cannot play this alone.  You can
+play with up to four players simultaneously.  It has network support.")
+    (license license:gpl2+)))
+
+(define-public hedgewars
+  (package
+    (name "hedgewars")
+    (version "0.9.25")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.hedgewars.org/download/releases/"
+                                  "hedgewars-src-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "08x7fqpy0hpnbfq2k06g522xayi7s53bca819zfhalvqnqs76pdk"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
+     ;; Compiler, which we haven't packaged yet.  With the flag below, we use
+     ;; a Pascal to C translator and Clang instead.
+     `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-failing-test
+           ;; XXX: Remove single failing test.  Note: it is marked
+           ;; a "non-critical" test.
+           (lambda _
+             (delete-file-recursively "tests/lua_noncritical")
+             #t))
+         (add-after 'unpack 'fix-compiler
+           ;; XXX: Flag BUILD_ENGINE_C, as set above, implies using Clang to
+           ;; compile files.  However, using `clang' globally leads to the
+           ;; error: qtbase-5.11.3/include/qt5/QtCore/qglobal.h:45:12: fatal
+           ;; error: 'type_traits' file not found.
+           ;;
+           ;; Therefore, we make sure to use `c++' everywhere but in the
+           ;; engine.
+           (lambda _
+             (substitute* "project_files/hwc/CMakeLists.txt"
+               (("find_package\\(SDL2_ttf 2 REQUIRED\\)" all)
+                (string-append all "\n"
+                               "set(CMAKE_C_COMPILER ${CLANG_EXECUTABLE})\n"
+                               "set(CMAKE_CXX_COMPILER ${CLANG_EXECUTABLE})")))
+             (substitute* "CMakeLists.txt"
+               (("set\\(CMAKE_C(XX)?_COMPILER" all) (string-append "#" all)))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "ctest"))))))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("freeglut" ,freeglut)
+       ("ghc-entropy" ,ghc-entropy)
+       ("ghc-hslogger" ,ghc-hslogger)
+       ("ghc-network" ,ghc-network)
+       ("ghc-random" ,ghc-random)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-sandi" ,ghc-sandi)
+       ("ghc-sha" ,ghc-sha)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-zlib" ,ghc-zlib)
+       ("glew" ,glew)
+       ("libpng" ,libpng)
+       ("lua" ,lua-5.1)
+       ("physfs" ,physfs)
+       ("qtbase" ,qtbase)
+       ("sdl" ,(sdl-union
+                (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
+    (native-inputs
+     `(("clang" ,clang)
+       ("ghc" ,ghc)
+       ("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (home-page "https://hedgewars.org/")
+    (synopsis "Turn-based artillery game featuring fighting hedgehogs")
+    (description
+     "Hedgewars is a turn based strategy, artillery, action and comedy game,
+featuring the antics of pink hedgehogs with attitude as they battle from the
+depths of hell to the depths of space.
+
+As commander, it's your job to assemble your crack team of hedgehog soldiers
+and bring the war to your enemy.")
+    ;; Software as a whole is licensed under GPL-2 terms.  Artwork and
+    ;; scripts are distributed under various terms.
+    (license (list license:gpl2
+                   license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
+                   license:expat license:fdl1.3+ license:public-domain
+                   license:zlib))))
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 4761a277ae..0b95fbe613 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -746,14 +746,14 @@ to create databases that are optimized for rendering/tile/map-services.")
     (name "libosmium")
     (version "2.14.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/osmcode/libosmium/archive/v"
-                version ".tar.gz"))
-    (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0d9b46qiw7zkw1h9lygjdwqxnbhm3c7v8kydzw9f9f778cyagc94"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/osmcode/libosmium.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "123ri1l0a2b9fljgpwsl7z2w4i3kmgxz79d4ns9z4mwbp8sw0250"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("boost" ,boost)
@@ -776,20 +776,21 @@ OpenStreetMap data.")
   (package
     (name "osm2pgsql")
     (version "0.96.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/openstreetmap/osm2pgsql/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "08y7776r4l9v9177a4q6cfdri0lpirky96m6g699hwl7v1vhw0mn"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (delete-file-recursively "contrib/protozero")
-                  (delete-file-recursively "contrib/libosmium")
-                  #t))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openstreetmap/osm2pgsql.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "032cydh8ynaqfhdzmkvgbmqyjql668y6qln1l59l2s3ni9963bbl"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "contrib/protozero")
+           (delete-file-recursively "contrib/libosmium")
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f; tests fail because we need to setup a database
@@ -823,14 +824,15 @@ map, geocoding with Nominatim, or general analysis.")
   (package
     (name "tippecanoe")
     (version "1.31.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mapbox/tippecanoe/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1057na1dkgjaryr7jr15lqkxpam111d3l5zdpdkqzzzpxmdjxqcf"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mapbox/tippecanoe.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1m0x931a945sr7axyhcvpwh798m58hx1zxh6ikgf9gsgqhdhmszz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index d8c0050513..53a9b60fdb 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
@@ -47,6 +47,7 @@
 (define-public lcms
   (package
    (name "lcms")
+   (replacement lcms/fixed)
    (version "2.9")
    (source (origin
             (method url-fetch)
@@ -67,6 +68,14 @@ Consortium standard (ICC), approved as ISO 15076-1.")
    (home-page "http://www.littlecms.com/")
    (properties '((cpe-name . "little_cms_color_engine")))))
 
+(define lcms/fixed
+  (package
+    (inherit lcms)
+    (source
+      (origin
+        (inherit (package-source lcms))
+        (patches (search-patches "lcms-CVE-2018-16435.patch"))))))
+
 (define-public libpaper
   (package
    (name "libpaper")
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 575666fdeb..3ead5b32a3 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -118,7 +118,7 @@ buffers.")
 (define-public gimp
   (package
     (name "gimp")
-    (version "2.10.8")
+    (version "2.10.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.gimp.org/pub/gimp/v"
@@ -126,7 +126,7 @@ buffers.")
                                   "/gimp-" version ".tar.bz2"))
               (sha256
                (base32
-                "16sb4kslwin2jbgdb4nhks78pd0af8mvj8g5hap3hj946p7w2jfq"))))
+                "0xwck5nbpb945s1cyij3kfqw1pchbhx8i5vf5hgywyjw4r1z5l8j"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                            ; 9 MiB of gtk-doc HTML
@@ -368,5 +368,5 @@ MyPaint.")
      "This package provides resynthesizer plugins for GIMP, which encompasses
 tools for healing selections (content-aware fill), enlarging the canvas and
 healing the border, increasing the resolution while adding detail, and
-transfering the style of an image.")
+transferring the style of an image.")
     (license license:gpl3+)))
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 7ee267c9e2..72f450c5f7 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -120,7 +120,7 @@ as ASCII text.")
      "Freeglut is a completely Free/OpenSourced alternative to
 the OpenGL Utility Toolkit (GLUT) library.  GLUT was originally
 written by Mark Kilgard to support the sample programs in the
-second edition OpenGL 'RedBook'.  Since then, GLUT has been used
+second edition OpenGL @code{RedBook}.  Since then, GLUT has been used
 in a wide variety of practical applications because it is simple,
 widely available and highly portable.
 
@@ -158,6 +158,8 @@ the X-Consortium license.")
                (base32
                 "0nsn4s6vnv5xcgxcw6q031amvh2zfj2smy1r5mbnjj2548hxcn2l"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")))
     ;; The pkg-config file lists "freetype2" as Requires.private.
     (propagated-inputs `(("freetype" ,freetype)))
     (inputs `(("libx11" ,libx11)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e8c5659a09..08ac1f1358 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -33,6 +33,7 @@
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -112,6 +113,7 @@
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ninja)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
@@ -392,7 +394,7 @@ formats like PNG, SVG, PDF and EPS.")
        ("libsoup" ,libsoup)))
     (propagated-inputs
      `(("gcr" ,gcr)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("liboauth" ,liboauth)
        ("libxml2" ,libxml2)))
     (home-page "https://wiki.gnome.org/Projects/libgdata")
@@ -2322,7 +2324,7 @@ editors, IDEs, etc.")
   (package
     (inherit vte)
     (name "vte-ng")
-    (version "0.54.2.a")
+    (version "0.56.2.a")
     (home-page "https://github.com/thestinger/vte-ng")
     (source (origin
               (method git-fetch)
@@ -2330,10 +2332,11 @@ editors, IDEs, etc.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1r7d9m07cpdr4f7rw3yx33hmp4jmsk0dn5byq5wgksb2qjbc4ags"))))
+                "1lmba6i0abifmvvfb1q63ql6zh6d38148kp6skmkggiib2hi5dki"))))
     (native-inputs
      `(("gtk-doc" ,gtk-doc)
        ("gperf" ,gperf)
+       ("gcc" ,gcc-7)
        ("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
@@ -2342,6 +2345,9 @@ editors, IDEs, etc.")
      `(#:phases (modify-phases %standard-phases
                   (replace 'bootstrap
                     (lambda _
+                      ;; Work around GCC7 problem: <https://bugs.gnu.org/30756>.
+                      (for-each unsetenv '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+
                       (setenv "NOCONFIGURE" "true")
                       (invoke "sh" "autogen.sh"))))))
   (synopsis "Enhanced VTE terminal widget")
@@ -2665,7 +2671,7 @@ libxml to ease remote use of the RESTful API.")
 (define-public libsoup
   (package
     (name "libsoup")
-    (version "2.66.0")
+    (version "2.66.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libsoup/"
@@ -2673,7 +2679,7 @@ libxml to ease remote use of the RESTful API.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "08c9kkdhzy504gv23pfdm4sq3dd3j20sikwz6gv0qrwcdjnw5bai"))))
+                "1zs3bhspwg7fggxd7x1rrggpkcf2j9ch6dhncq9syh252z0vcb2a"))))
     (build-system meson-build-system)
     (outputs '("out" "doc"))
     (arguments
@@ -4308,15 +4314,15 @@ work and the interface is well tested.")
 (define-public eolie
   (package
     (name "eolie")
-    (version "0.9.52")
+    (version "0.9.60")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gitlab.gnome.org/World/eolie/"
-                                  "uploads/d95bf72958276c80dfaca8cce0e4e92c/"
+                                  "uploads/3b2ceb7eb15860587db6886bfdd8a91e/"
                                   "eolie-" version ".tar.xz"))
               (sha256
                (base32
-                "1s3b0rkm8sxmhzzi624snzqvz61i1rja5wxyzw6jg2kcdjcylwln"))))
+                "1s9gkzxa6457v6bh0q8n1ijq1chd2jwgvhk5kppsnya7kxvsx8qh"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -4375,9 +4381,9 @@ a secret password store, an adblocker, and a modern UI.")
     (version "3.28.3.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/epiphany/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "epiphany-" version ".tar.xz"))
               (sha256
                (base32
                 "1xz6xl6b0iihvczyr0cs1z5ifvpai6anb4m0ng1caiph06klc1b9"))))
@@ -5061,7 +5067,23 @@ window manager.")
               (sha256
                (base32
                 "035lmm21imr7ddpzffqabv53g3ggjscmqvlzy3j1qkv00zrlxg47"))))
+    (outputs '("out" "lib"))
     (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--libdir=" (assoc-ref %outputs "out") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-libgoa-output
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((lib (assoc-ref outputs "lib")))
+               (substitute* '("src/goa/Makefile.in" "src/goa/goa-1.0.pc.in")
+                 (("@prefix@") lib)
+                 (("@exec_prefix@") lib)
+                 (("@libdir@") (string-append lib "/lib"))
+                 (("@includedir@") (string-append lib "/include"))
+                 (("@datadir@") (string-append lib "/share")))
+               #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -5098,6 +5120,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
               (sha256
                (base32
                 "11sq795115vrcgxl9svscm6wg8isjj784c3d84qzb6z47zq92zj3"))))
+    (outputs '("out" "libedataserverui"))
     (build-system cmake-build-system)
     (arguments
      '(;; XXX FIXME: 11/85 tests are failing.
@@ -5138,7 +5161,28 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
                ;; CMakeLists.txt hard-codes runpath to just the libdir.
                ;; Remove it so the configure flag is respected.
                (("SET\\(CMAKE_INSTALL_RPATH .*") ""))
-             #t)))))
+             #t))
+         (add-after 'install 'split
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (libedsui (assoc-ref outputs "libedataserverui")))
+               (for-each (lambda (file)
+                           (mkdir-p (dirname (string-append libedsui file)))
+                           (rename-file (string-append out file)
+                                        (string-append libedsui file)))
+                         '("/lib/pkgconfig/libedataserverui-1.2.pc"
+                           "/lib/libedataserverui-1.2.so"
+                           "/lib/libedataserverui-1.2.so.2"
+                           "/lib/libedataserverui-1.2.so.2.0.0"
+                           "/lib/girepository-1.0/EDataServerUI-1.2.typelib"
+                           "/include/evolution-data-server/libedataserverui"
+                           "/share/gir-1.0/EDataServerUI-1.2.gir"
+                           "/share/vala/vapi/libedataserverui-1.2.vapi"
+                           "/share/vala/vapi/libedataserverui-1.2.deps"))
+               (substitute* (string-append libedsui "/lib/pkgconfig/"
+                                           "libedataserverui-1.2.pc")
+                 ((out) libedsui))
+               #t))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection)
@@ -5158,7 +5202,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
     (inputs
      `(("bdb" ,bdb)
        ("gcr" ,gcr)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("json-glib" ,json-glib)
        ("libgweather" ,libgweather)
        ("mit-krb5" ,mit-krb5)
@@ -5554,7 +5598,7 @@ libxml2.")
        (modify-phases %standard-phases
          (add-before
           'configure 'pre-configure
-          (lambda* (#:key inputs #:allow-other-keys)
+          (lambda* (#:key inputs outputs #:allow-other-keys)
             ;; We don't have <systemd/sd-daemon.h>.
             (substitute* '("common/gdm-log.c"
                            "daemon/gdm-server.c"
@@ -5622,7 +5666,40 @@ libxml2.")
               (("\"gnome-session\"")
                (string-append "\"" (assoc-ref inputs "gnome-session")
                               "/bin/gnome-session\"")))
+            ;; Do not automatically select the placeholder session.
+            (substitute* "daemon/gdm-session.c"
+              (("!g_str_has_suffix [(]base_name, \"\\.desktop\"[)]")
+               (string-append "!g_str_has_suffix (base_name, \".desktop\") || "
+                              "(g_strcmp0(search_dirs[i], \""
+                              (assoc-ref outputs "out") "/share/gdm/BuiltInSessions/"
+                              "\") == 0 && "
+                              "g_strcmp0(base_name, \"fail.desktop\") == 0)"))
+              (("g_error [(]\"GdmSession: no session desktop files installed, aborting\\.\\.\\.\"[)];")
+               "{ self->priv->fallback_session_name = g_strdup(\"fail\"); goto out; }"))
             #t))
+         ;; GDM requires that there be at least one desktop entry
+         ;; file.  This phase installs a hidden one that simply
+         ;; fails.  This enables users to use GDM with a
+         ;; '~/.xsession' script with no other desktop entry files.
+         ;; See <https://bugs.gnu.org/35068>.
+         (add-after 'install 'install-placeholder-desktop-entry
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (sessions (string-append out "/share/gdm/BuiltInSessions"))
+                    (fail (string-append sessions "/fail.desktop")))
+               (mkdir-p sessions)
+               (with-output-to-file fail
+                 (lambda ()
+                   (for-each
+                    display
+                    '("[Desktop Entry]\n"
+                      "Encoding=UTF-8\n"
+                      "Type=Application\n"
+                      "Name=Fail\n"
+                      "Comment=This session fails immediately.\n"
+                      "NoDisplay=true\n"
+                      "Exec=false\n"))))
+               #t)))
          ;; GDM needs GNOME Session to run these applications.  We link
          ;; their autostart files in `share/gdm/greeter/autostart'
          ;; because GDM explicitly tells GNOME Session to look there.
@@ -5774,6 +5851,7 @@ devices using the GNOME desktop.")
        ("gnome-bluetooth" ,gnome-bluetooth)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gnome-settings-daemon" ,gnome-settings-daemon)
        ("grilo" ,grilo)
        ("ibus" ,ibus)
@@ -5859,6 +5937,17 @@ properties, screen resolution, and other GNOME parameters.")
              ;; Convert the logo from SVG to PNG.
              (invoke "inkscape" "--export-png=data/theme/guix-logo.png"
                      "data/theme/guix-logo.svg")))
+         (add-before 'configure 'record-absolute-file-names
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "js/misc/ibusManager.js"
+               (("'ibus-daemon'")
+                (string-append "'" (assoc-ref inputs "ibus")
+                               "/bin/ibus-daemon'")))
+             (substitute* "js/ui/status/keyboard.js"
+               (("'gkbd-keyboard-display'")
+                (string-append "'" (assoc-ref inputs "libgnomekbd")
+                               "/bin/gkbd-keyboard-display'")))
+             #t))
          (add-before 'check 'pre-check
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Tests require a running X server.
@@ -5878,7 +5967,8 @@ properties, screen resolution, and other GNOME parameters.")
                  `("LD_LIBRARY_PATH" ":" prefix
                    ,(map (lambda (pkg)
                            (string-append (assoc-ref inputs pkg) "/lib"))
-                         '("gnome-bluetooth" "librsvg" "libgweather"))))
+                         '("gdk-pixbuf"
+                           "gnome-bluetooth" "librsvg" "libgweather"))))
                (for-each
                 (lambda (prog)
                   (wrap-program (string-append out "/bin/" prog)
@@ -5915,15 +6005,16 @@ properties, screen resolution, and other GNOME parameters.")
        ("evolution-data-server" ,evolution-data-server)
        ("gcr" ,gcr)
        ("gdm" ,gdm)
+       ("gdk-pixbuf" ,gdk-pixbuf+svg)
        ("gjs" ,gjs)
        ("gnome-bluetooth" ,gnome-bluetooth)
-       ("gnome-control-center" ,gnome-control-center)
        ("gnome-desktop" ,gnome-desktop)
        ("gnome-settings-daemon" ,gnome-settings-daemon)
        ("gst-plugins-base" ,gst-plugins-base)
        ("ibus" ,ibus)
        ("libcanberra" ,libcanberra)
        ("libcroco" ,libcroco)
+       ("libgnomekbd" ,libgnomekbd)               ;for gkbd-keyboard-display
        ("libgweather" ,libgweather)
        ("libsoup" ,libsoup)
        ("mesa-headers" ,mesa-headers)
@@ -6484,7 +6575,7 @@ library.")
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("gnome-online-accounts" ,gnome-online-accounts)
+     `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("json-glib" ,json-glib)
        ("rest" ,rest)))
     (home-page "https://wiki.gnome.org/Projects/Zapojit")
@@ -6557,9 +6648,10 @@ desktop.  It supports world clock, stop watch, alarms, and count down timer.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("evolution-data-server" ,evolution-data-server)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("libdazzle" ,libdazzle)
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
        ("libgweather" ,libgweather)
        ("geoclue" ,geoclue)))
     (home-page "https://wiki.gnome.org/Apps/Calendar")
@@ -6607,11 +6699,12 @@ desktop.  It supports multiple calendars, month, week and year view.")
     (inputs
      `(("rest" ,rest)                   ; For Todoist plugin
        ("json-glib" ,json-glib)         ; For Todoist plugin
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
        ("libical" ,libical)
        ("libpeas" ,libpeas)
        ("python-pygobject" ,python-pygobject)
        ("evolution-data-server" ,evolution-data-server)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
     (home-page "https://wiki.gnome.org/Apps/Todo")
     (synopsis "GNOME's ToDo Application")
@@ -6940,7 +7033,7 @@ compiled.")
        ("gobject-introspection" ,gobject-introspection)))
     (inputs
      `(("json-glib" ,json-glib)
-       ("gnome-online-accounts" ,gnome-online-accounts)
+       ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
        ("rest" ,rest)))
     (synopsis "GLib/GObject wrapper for the Facebook API")
     (description "This library allows you to use the Facebook API from
@@ -7822,6 +7915,7 @@ generic enough to work for everyone.")
        ("gtkspell3" ,gtkspell3)
        ("highlight" ,highlight)
        ("libcanberra" ,libcanberra)
+       ("libedataserverui" ,evolution-data-server "libedataserverui")
        ("libgweather" ,libgweather)
        ("libnotify" ,libnotify)
        ("libsoup" ,libsoup)
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index 2207dd3fae..5b4da97e5d 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -104,8 +104,7 @@
          (add-after 'unpack 'unpack-gmock
            (lambda* (#:key inputs #:allow-other-keys)
              (mkdir "gmock")
-             (invoke "tar" "xf" (assoc-ref inputs "googlemock")
-                     "-C" "gmock" "--strip-components=1")
+             (copy-recursively (assoc-ref inputs "googlemock") "gmock")
              (setenv "GMOCK_ROOT" (string-append (getcwd) "/gmock/googlemock"))
              #t))
          (add-after 'unpack 'set-env-vars
@@ -165,14 +164,14 @@
                                         ,@(transitive-input-references
                                            'inputs
                                            (map (lambda (l)
-                                                  (assoc l (inputs)))
+                                                  (assoc l (package-inputs this-package)))
                                                 '("perl-finance-quote"
                                                   "perl-date-manip"))))
                                        (list
                                         ,@(transitive-input-references
                                            'inputs
                                            (map (lambda (l)
-                                                  (assoc l (inputs)))
+                                                  (assoc l (package-inputs this-package)))
                                                 '("perl-finance-quote")))))))))
                        '("gnucash"
                          "gnc-fq-check"
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 19e99644dd..09fad6a268 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
-;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; 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>
@@ -35,7 +35,6 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -48,6 +47,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages perl)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 5f4badf4ef..47fcf5569d 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -223,14 +223,14 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.2.14")
+    (version "2.2.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "0yzqrg24j9fc4f8ss5pclyvg70a9z53sv89vl77xii8yvi3fvy8v"))))
+                "0m6lyphbb20i84isdxzfhcbzyc682hdrdv4aqkzmhrdksycf536b"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -368,7 +368,7 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.12.0")
+    (version "1.13.0")
     (source
      (origin
       (method url-fetch)
@@ -376,16 +376,7 @@ libskba (working with X.509 certificates and CMS data).")
                           ".tar.bz2"))
       (sha256
        (base32
-        "1n4c1q2ls7sqx1vpr3p5n8vbjkw6kqp8jxqa28p0x9j36wf9bp5l"))
-      ;; One test fails because the conflict keys have expired.  See
-      ;; https://dev.gnupg.org/T3815
-      (patches (list (origin
-                       (method url-fetch)
-                       (uri "https://dev.gnupg.org/rM66376f3e206a1aa791d712fb8577bb3490268f60?diff=1")
-                       (file-name "gpgme-fix-conflict-test-keys.patch")
-                       (sha256
-                        (base32
-                         "0j718iy5a9fhkrfs4gzrnm4ggi163prqf1i8lfmqczswvz88zfly")))))))
+        "0c6676g0yhfsmy32i1dgwh5cx0ja8vhcqf4k08zad177m53kxcnl"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gnupg" ,gnupg)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 4260dfc15d..afebc82cf1 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
@@ -45,7 +45,6 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
-  #:use-module (gnu packages check)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
@@ -70,6 +69,7 @@
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages rust)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
@@ -190,7 +190,7 @@ in C/C++.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://people.mozilla.org/~sstangl/"
+                    "https://anduin.linuxfromscratch.org/BLFS/mozjs/"
                     name "-" version ".tar.bz2"))
               (sha256
                (base32
@@ -404,158 +404,6 @@ in C/C++.")
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)))))
 
-(define-public nspr
-  (package
-    (name "nspr")
-    (version "4.21")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
-                   version "/src/nspr-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0nkbgk0x31nfm4xl8la0a3vrnpa8gzkh7g4k65p7n880n73k5shm"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("perl" ,perl)))
-    (arguments
-     `(#:tests? #f ; no check target
-       #:configure-flags (list "--enable-64bit"
-                               (string-append "LDFLAGS=-Wl,-rpath="
-                                              (assoc-ref %outputs "out")
-                                              "/lib"))
-       ;; Use fixed timestamps for reproducibility.
-       #:make-flags '("SH_DATE='1970-01-01 00:00:01'"
-                      ;; This is epoch 1 in microseconds.
-                      "SH_NOW=100000")
-       #:phases (modify-phases %standard-phases
-                  (add-before 'configure 'chdir
-                    (lambda _ (chdir "nspr") #t)))))
-    (home-page
-     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR")
-    (synopsis "Netscape API for system level and libc-like functions")
-    (description "Netscape Portable Runtime (@dfn{NSPR}) provides a
-platform-neutral API for system level and libc-like functions.  It is used
-in the Mozilla clients.")
-    (license license:mpl2.0)))
-
-(define-public nss
-  (package
-    (name "nss")
-    (version "3.43")
-    (source (origin
-              (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
-                     (string-append
-                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
-              (sha256
-               (base32
-                "1jp27w4w9nj5pkzrbc1zqj6pa09h2yy7vhzyx5fvg1q86fvw22zk"))
-              ;; Create nss.pc and nss-config.
-              (patches (search-patches "nss-pkgconfig.patch"
-                                       "nss-increase-test-timeout.patch"))))
-    (build-system gnu-build-system)
-    (outputs '("out" "bin"))
-    (arguments
-     `(#:parallel-build? #f ; not supported
-       #:make-flags
-       (let* ((out (assoc-ref %outputs "out"))
-              (nspr (string-append (assoc-ref %build-inputs "nspr")))
-              (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
-         (list "-C" "nss" (string-append "PREFIX=" out)
-               "NSDISTMODE=copy"
-               "NSS_USE_SYSTEM_SQLITE=1"
-               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
-               ;; Add $out/lib/nss to RPATH.
-               (string-append "RPATH=" rpath)
-               (string-append "LDFLAGS=" rpath)))
-       #:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 ftw)
-                  (ice-9 match)
-                  (srfi srfi-26))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda _
-             (setenv "CC" "gcc")
-             ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
-             ,@(match (%current-system)
-                 ((or "x86_64-linux" "aarch64-linux")
-                  `((setenv "USE_64" "1")))
-                 (_
-                  '()))
-             #t))
-         (replace 'check
-           (lambda _
-             ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
-             ;; The later requires a working DNS or /etc/hosts.
-             (setenv "DOMSUF" "localdomain")
-             (setenv "USE_IP" "TRUE")
-             (setenv "IP_ADDRESS" "127.0.0.1")
-
-             ;; The "PayPalEE.cert" certificate expires every six months,
-             ;; leading to test failures:
-             ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
-             ;; work around that, set the time to roughly the release date.
-             (invoke "faketime" "2019-02-01" "./nss/tests/all.sh")))
-           (replace 'install
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append (assoc-ref outputs "bin") "/bin"))
-                      (inc (string-append out "/include/nss"))
-                      (lib (string-append out "/lib/nss"))
-                      (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
-                             ((obj) (string-append "dist/" obj)))))
-                 ;; Install nss-config to $out/bin.
-                 (install-file (string-append obj "/bin/nss-config")
-                               (string-append out "/bin"))
-                 (delete-file (string-append obj "/bin/nss-config"))
-                 ;; Install nss.pc to $out/lib/pkgconfig.
-                 (install-file (string-append obj "/lib/pkgconfig/nss.pc")
-                               (string-append out "/lib/pkgconfig"))
-                 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
-                 (rmdir (string-append obj "/lib/pkgconfig"))
-                 ;; Install other files.
-                 (copy-recursively "dist/public/nss" inc)
-                 (copy-recursively (string-append obj "/bin") bin)
-                 (copy-recursively (string-append obj "/lib") lib)
-
-                 ;; FIXME: libgtest1.so is installed in the above step, and it's
-                 ;; (unnecessarily) linked with several NSS libraries, but
-                 ;; without the needed rpaths, causing the 'validate-runpath'
-                 ;; phase to fail.  Here we simply delete libgtest1.so, since it
-                 ;; seems to be used only during the tests.
-                 (delete-file (string-append lib "/libgtest1.so"))
-                 (delete-file (string-append lib "/libgtestutil.so"))
-
-                 #t))))))
-    (inputs
-     `(("sqlite" ,sqlite)
-       ("zlib" ,zlib)))
-    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
-    (native-inputs `(("perl" ,perl)
-                     ("libfaketime" ,libfaketime))) ;for tests
-
-    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
-    ;; another build is happening concurrently on the same machine.
-    (properties '((timeout . 216000)))  ; 60 hours
-
-    (home-page
-     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
-    (synopsis "Network Security Services")
-    (description
-     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
-support cross-platform development of security-enabled client and server
-applications.  Applications built with NSS can support SSL v2 and v3, TLS,
-PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
-security standards.")
-    (license license:mpl2.0)))
-
 (define (mozilla-patch file-name changeset hash)
   "Return an origin for CHANGESET from the mozilla-esr60 repository."
   (origin
@@ -578,7 +426,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "60.6.0-guix1")
+(define %icecat-version "60.6.1-guix1")
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -600,7 +448,7 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "1mc57dhwyjr6qjm3q617wvj306wi72548wjx7lz1dxkz6hndi03w"))))
+              "1x8419a1yg6igsq5ij3ymf1zmnb2wpm9dqcdfkv5wy43xgf7y0wl"))))
 
          (upstream-icecat-base-version "60.3.0") ; maybe older than base-version
          (upstream-icecat-gnu-version "1")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index cc896405cb..5caf7a89f8 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -775,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 "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
+  (let ((commit "b7391e95e576cacdcdd422573063bc057239113d")
+        (revision "3"))
     (package
       (name "go-golang-org-x-crypto-bcrypt")
       (version (git-version "0.0.0" revision commit))
@@ -789,7 +789,7 @@ expressing configuration which is easy for both humans and machines to read.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
+                  "1jqfh81mhgwcc6b9l0bs6rb0707s01qpvn7896i5bsmig46lc7zm"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/bcrypt"
@@ -801,186 +801,81 @@ password hashing function.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-blowfish
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-blowfish")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/blowfish"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "Blowfish in Go")
-      (description "This package provides a Go implementation of the Blowfish
-symmetric-key block cipher.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-blowfish")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/blowfish"
+       #:unpack-path "golang.org/x/crypto"))
+    (synopsis "Blowfish in Go")
+    (description "This package provides a Go implementation of the Blowfish
+symmetric-key block cipher.")))
 
 (define-public go-golang-org-x-crypto-pbkdf2
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-pbkdf2")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/pbkdf2"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "PBKDF2 in Go")
-      (description "This package provides a Go implementation of the PBKDF2 key
-derivation function.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-pbkdf2")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/pbkdf2"
+       #:unpack-path "golang.org/x/crypto"))
+    (synopsis "PBKDF2 in Go")
+    (description "This package provides a Go implementation of the PBKDF2 key
+derivation function.")))
 
 (define-public go-golang-org-x-crypto-tea
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-tea")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/tea"
-         #: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.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-tea")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/tea"
+       #: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.")))
 
 (define-public go-golang-org-x-crypto-salsa20
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-salsa20")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/salsa20"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "Salsa20 in Go")
-      (description "This packages provides a Go implementation of the Salsa20
-stream cipher.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-salsa20")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/salsa20"
+       #:unpack-path "golang.org/x/crypto"))
+    (synopsis "Salsa20 in Go")
+    (description "This packages provides a Go implementation of the Salsa20
+stream cipher.")))
 
 (define-public go-golang-org-x-crypto-cast5
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-cast5")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/cast5"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "Cast5 in Go")
-      (description "This packages provides a Go implementation of the Cast5
-symmetric-key block cipher.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-cast5")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/cast5"
+       #:unpack-path "golang.org/x/crypto"))
+    (synopsis "Cast5 in Go")
+    (description "This packages provides a Go implementation of the Cast5
+symmetric-key block cipher.")))
 
 (define-public go-golang-org-x-crypto-twofish
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-twofish")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/twofish"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "Twofish in Go")
-      (description "This packages provides a Go implementation of the Twofish
-symmetric-key block cipher.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-twofish")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/twofish"
+       #:unpack-path "golang.org/x/crypto"))
+    (synopsis "Twofish in Go")
+    (description "This packages provides a Go implementation of the Twofish
+symmetric-key block cipher.")))
 
 (define-public go-golang-org-x-crypto-xtea
-  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
-        (revision "2"))
-    (package
-      (name "go-golang-org-x-crypto-xtea")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/xtea"
-         #: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.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-xtea")
+    (arguments
+     `(#:import-path "golang.org/x/crypto/xtea"
+       #: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.")))
 
 (define-public go-golang-org-x-crypto-ed25519
   (package
@@ -1024,6 +919,8 @@ hash algorithm.")))
      (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
        ((#:import-path _)
         "golang.org/x/crypto/blake2s")))
+    (propagated-inputs
+     `(("go-golang-org-x-sys-cpu" ,go-golang-org-x-sys-cpu)))
     (synopsis "BLAKE2s in Go")
     (description "This package provides a Go implementation of the BLAKE2s
 hash algorithm.")))
@@ -1272,6 +1169,17 @@ for low-level interaction with the operating system.")
       (home-page "https://go.googlesource.com/sys")
       (license license:bsd-3))))
 
+(define-public go-golang-org-x-sys-cpu
+  (package
+    (inherit go-golang-org-x-sys-unix)
+    (name "go-golang-org-x-sys-cpu")
+    (arguments
+     '(#:import-path "golang.org/x/sys/cpu"
+       #:unpack-path "golang.org/x/sys"))
+    (synopsis "CPU feature detection")
+    (description "Thi spackage provides @code{cpu}, which offers tools for CPU
+feature detection in Go.")))
+
 (define-public go-golang-org-x-text-transform
   (let ((commit "e19ae1496984b1c655b8044a65c0300a3c878dd3")
         (revision "1"))
@@ -1354,60 +1262,40 @@ limiting in Go.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-ssh-terminal
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
-    (package
-      (name "go-golang-org-x-crypto-ssh-terminal")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
-      (build-system go-build-system)
-      (inputs
-       `(("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"))
-      (synopsis "Terminal functions for Go")
-      (description "This package provides @{terminal}, which implements
-support functions for dealing with terminals, as commonly found on UNIX
-systems.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
+  (package
+    (inherit go-golang-org-x-crypto-bcrypt)
+    (name "go-golang-org-x-crypto-ssh-terminal")
+    (inputs
+     `(("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"))
+    (synopsis "Terminal functions for Go")
+    (description "This package provides @{terminal}, which implements support
+functions for dealing with terminals, as commonly found on UNIX systems.")))
 
 (define-public go-github-com-burntsushi-toml
-  (let ((commit
-         "a368813c5e648fee92e5f6c30e3944ff9d5e8895")
-        (revision "0"))
-    (package
-      (name "go-github-com-burntsushi-toml")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/BurntSushi/toml.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1sjxs2lwc8jpln80s4rlzp7nprbcljhy5mz4rf9995gq93wqnym5"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/BurntSushi/toml"))
-      (home-page "https://github.com/BurntSushi/toml")
-      (synopsis "Toml parser and encoder for Go")
-      (description "This package is toml parser and encoder for Go.  The
-interface is similar to Go's standard library @code{json} and @code{xml}
-package.")
-      (license license:expat))))
+  (package
+    (name "go-github-com-burntsushi-toml")
+    (version "0.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/BurntSushi/toml.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/BurntSushi/toml"))
+    (home-page "https://github.com/BurntSushi/toml")
+    (synopsis "Toml parser and encoder for Go")
+    (description "This package is toml parser and encoder for Go.  The interface
+is similar to Go's standard library @code{json} and @code{xml} package.")
+    (license license:expat)))
 
 (define-public go-github-com-getsentry-raven-go
   (let ((commit
@@ -3280,8 +3168,9 @@ have super fancy logs.")
       (arguments
        '(#:import-path "github.com/kr/fs"))
       (home-page "https://github.com/kr/fs")
-      (synopsis "Filesystem-related functions for Go")
-      (description "Package fs provides filesystem-related functions.")
+      (synopsis "File-system-related functions for Go")
+      (description
+       "The fs package provides file-system-related Go functions.")
       (license license:bsd-3))))
 
 (define-public go-github-com-direnv-go-dotenv
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index 5b872908a5..badb7f867f 100644
--- a/gnu/packages/gpodder.scm
+++ b/gnu/packages/gpodder.scm
@@ -18,15 +18,90 @@
 
 (define-module (gnu packages gpodder)
   #:use-module (guix download)
+  #:use-module (guix git-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 freedesktop)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt))
 
+(define-public gpodder
+  (package
+    (name "gpodder")
+    (version "3.10.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gpodder/gpodder.git")
+             (commit version)))
+       (sha256
+        (base32
+         "0sx9rj6dpvd2xz7lak2yi0zlgr3lp2ng1fw23s39la9ly4g1835j"))
+       (file-name (git-file-name name version))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("intltool" ,intltool)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pycairo" ,python-pycairo)
+       ("python-dbus" ,python-dbus)
+       ("python-html5lib" ,python-html5lib)
+       ("python-mygpoclient" ,python-mygpoclient)
+       ("python-podcastparser" ,python-podcastparser)
+       ("xdg-utils" ,xdg-utils)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; Avoid needing xdg-utils as a propagated input.
+         (add-after 'unpack 'patch-xdg-open
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xdg-utils (assoc-ref inputs "xdg-utils")))
+               (substitute* "src/gpodder/util.py"
+                 (("xdg-open") (string-append xdg-utils "/bin/xdg-open")))
+               #t)))
+         ;; 'msgmerge' introduces non-determinism by resetting the
+         ;; POT-Creation-Date in .po files.
+         (add-before 'install 'do-not-run-msgmerge
+           (lambda _
+             (substitute* "makefile"
+               (("msgmerge") "true"))
+             #t))
+         (add-before 'install 'make-po-files-writable
+           (lambda _
+             (for-each
+               (lambda (f)
+                 (chmod f #o664))
+               (find-files "po"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "PREFIX" (assoc-ref outputs "out"))
+             (invoke "make" "install")
+             #t))
+         (add-after 'install 'wrap-gpodder
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/gpodder")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
+               #t))))))
+    (home-page "https://gpodder.github.io")
+    (synopsis "Simple podcast client")
+    (description "gPodder is a podcatcher, i.e. an application that allows
+podcast feeds (RSS, Atom, Youtube, Soundcloud, Vimeo and XSPF) to be
+subscribed to, checks for new episodes and allows the podcast to be saved
+locally for later listening.")
+    (license license:gpl3+)))
+
 (define-public libmygpo-qt
   (package
     (name "libmygpo-qt")
@@ -57,6 +132,36 @@
 and track podcasts.")
     (license license:lgpl2.1+)))
 
+(define-public python-mygpoclient
+  (package
+    (name "python-mygpoclient")
+    (version "1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "mygpoclient" version))
+       (sha256
+        (base32
+         "1fi5x6k1mngr0iviw2s4n1f3y2x7pwqy5ivkcrjdprzvwr37f0mh"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-minimock" ,python-minimock)
+       ("python-nose" ,python-nose)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "make" "test"))))))
+    (home-page "https://mygpoclient.readthedocs.io")
+    (synopsis "Python library for the gPodder web service")
+    (description "@code{mygpoclient} provides an easy and structured way to
+access the @url{https://gpodder.net} web services.  In addition to
+subscription list synchronization and storage, the API supports uploading and
+downloading episode status changes.")
+    (license license:gpl3+)))
+
 (define-public python-podcastparser
   (package
     (name "python-podcastparser")
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 7ed13d37c7..5bcc48dbe6 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #: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 r)
@@ -30,6 +33,7 @@
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages bioconductor)
   #:use-module (gnu packages bioinformatics)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cran)
   #:use-module (gnu packages graphviz)
@@ -40,6 +44,7 @@
   #: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 time)
   #:use-module (gnu packages xml))
 
@@ -100,14 +105,14 @@ more.")
 (define-public r-igraph
   (package
     (name "r-igraph")
-    (version "1.2.4")
+    (version "1.2.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "igraph" version))
        (sha256
         (base32
-         "1jwjjl0l4054w05bik17p2d6rj3lx68iv716phajhnbbmckfnj0h"))))
+         "1074y8mvprrqlkb4vwa2qc9l03r8d7p5vaaqacj4ljjs7dvcq6l9"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -239,3 +244,174 @@ subplots, multiple-axes, polar charts, and bubble charts. ")
 
 (define-public python2-plotly
   (package-with-python2 python-plotly))
+
+(define-public python-louvain
+  (package
+    (name "python-louvain")
+    (version "0.6.1")
+    ;; The tarball on Pypi does not include the tests.
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vtraag/louvain-igraph.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0w31537sifkf65sck1iaip5i6d8g64pa3wdwad83d6p9jwkck57k"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-ddt" ,python-ddt)
+       ("python-igraph" ,python-igraph)))
+    (inputs
+     `(("igraph" ,igraph)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/vtraag/louvain-igraph")
+    (synopsis "Algorithm for methods of community detection in large networks")
+    (description
+     "This package provides an implementation of the Louvain algorithm for use
+with igraph.  Louvain is a general algorithm for methods of community
+detection in large networks.
+
+This package has been superseded by the @code{leidenalg} package and should
+not be used for new projects.")
+    (license license:gpl3+)))
+
+(define-public faiss
+  (package
+    (name "faiss")
+    (version "1.5.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/facebookresearch/faiss.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0pk15jfa775cy2pqmzq62nhd6zfjxmpvz5h731197c28aq3zw39w"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "utils.cpp"
+                    (("#include <immintrin.h>")
+                     "#ifdef __SSE__\n#include <immintrin.h>\n#endif"))
+                  #t))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DBUILD_WITH_GPU=OFF"  ; thanks, but no thanks, CUDA.
+             "-DBUILD_TUTORIAL=OFF") ; we don't need those
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'prepare-build
+           (lambda _
+             (let ((features (list ,@(let ((system (or (%current-target-system)
+                                                       (%current-system))))
+                                       (cond
+                                        ((string-prefix? "x86_64" system)
+                                         '("-mavx" "-msse2" "-mpopcnt"))
+                                        ((string-prefix? "i686" system)
+                                         '("-msse2" "-mpopcnt"))
+                                        (else
+                                         '()))))))
+               (substitute* "CMakeLists.txt"
+                 (("-m64") "")
+                 (("-mpopcnt") "") ; only some architectures
+                 (("-msse4")
+                  (string-append
+                   (string-join features)
+                   " -I" (getcwd)))
+                 ;; Build also the shared library
+                 (("ARCHIVE DESTINATION lib")
+                  "LIBRARY DESTINATION lib")
+                 (("add_library.*" m)
+                  "\
+add_library(objlib OBJECT ${faiss_cpu_headers} ${faiss_cpu_cpp})
+set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
+add_library(${faiss_lib}_static STATIC $<TARGET_OBJECTS:objlib>)
+add_library(${faiss_lib} SHARED $<TARGET_OBJECTS:objlib>)
+install(TARGETS ${faiss_lib}_static ARCHIVE DESTINATION lib)
+\n")))
+
+             ;; See https://github.com/facebookresearch/faiss/issues/520
+             (substitute* "IndexScalarQuantizer.cpp"
+               (("#define USE_AVX") ""))
+
+             ;; Make header files available for compiling tests.
+             (mkdir-p "faiss")
+             (for-each (lambda (file)
+                         (mkdir-p (string-append "faiss/" (dirname file)))
+                         (copy-file file (string-append "faiss/" file)))
+                       (find-files "." "\\.h$"))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "make" "-C" "tests"
+                     (format #f "-j~a" (parallel-job-count)))))
+         (add-after 'install 'remove-tests
+           (lambda* (#:key outputs #:allow-other-keys)
+             (delete-file-recursively
+              (string-append (assoc-ref outputs "out")
+                             "/test"))
+             #t)))))
+    (inputs
+     `(("openblas" ,openblas)))
+    (native-inputs
+     `(("googletest" ,googletest)))
+    (home-page "https://github.com/facebookresearch/faiss")
+    (synopsis "Efficient similarity search and clustering of dense vectors")
+    (description "Faiss is a library for efficient similarity search and
+clustering of dense vectors.  It contains algorithms that search in sets of
+vectors of any size, up to ones that possibly do not fit in RAM.  It also
+contains supporting code for evaluation and parameter tuning.")
+    (license license:bsd-3)))
+
+(define-public python-faiss
+  (package (inherit faiss)
+    (name "python-faiss")
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "python") #t))
+         (add-after 'chdir 'build-swig
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-output-to-file "../makefile.inc"
+               (lambda ()
+                 (let ((python-version ,(version-major+minor (package-version python))))
+                   (format #t "\
+PYTHONCFLAGS =-I~a/include/python~am/ -I~a/lib/python~a/site-packages/numpy/core/include
+LIBS = -lpython~am -lfaiss
+SHAREDFLAGS = -shared -fopenmp
+CXXFLAGS = -fpermissive -std=c++11 -fopenmp -fPIC
+CPUFLAGS = ~{~a ~}~%"
+                           (assoc-ref inputs "python*") python-version
+                           (assoc-ref inputs "python-numpy") python-version
+                           python-version
+                           (list ,@(let ((system (or (%current-target-system)
+                                                     (%current-system))))
+                                     (cond
+                                       ((string-prefix? "x86_64" system)
+                                        '("-mavx" "-msse2" "-mpopcnt"))
+                                       ((string-prefix? "i686" system)
+                                        '("-msse2" "-mpopcnt"))
+                                       (else
+                                         '()))))))))
+             (substitute* "Makefile"
+               (("../libfaiss.a") ""))
+             (invoke "make" "cpu"))))))
+    (inputs
+     `(("faiss" ,faiss)
+       ("openblas" ,openblas)
+       ("python*" ,python)
+       ("swig" ,swig)))
+    (propagated-inputs
+     `(("python-matplotlib" ,python-matplotlib)
+       ("python-numpy" ,python-numpy)))
+    (description "Faiss is a library for efficient similarity search and
+clustering of dense vectors.  This package provides Python bindings to the
+Faiss library.")))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 11158bdfd1..f9baf49fe9 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
@@ -354,33 +354,23 @@ exception-handling library.")
     (version "1.10.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/OGRECave/" name
-                           "/archive/v" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/OGRECave/ogre.git")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "13bdh9v4026qf8w8rbfln2rmwf0rby1a8fz55zpdvpy105i6cbpz"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+         "072rzw9mxymbiypgkrbkk9h10rgly6gczik4dlmssk6xkpqckaqr"))))
     (build-system cmake-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'pre-configure
-           (lambda _
-             ;; It expects googletest source to be downloaded and
-             ;; be in a specific place.
-             (substitute* "Tests/CMakeLists.txt"
-               (("URL(.*)$" _ suffix)
-                (string-append "URL " suffix
-                               "\t\tURL_HASH "
-                               "MD5=16877098823401d1bf2ed7891d7dce36\n")))
-             #t))
-         (add-before 'build 'pre-build
            (lambda* (#:key inputs #:allow-other-keys)
-             (copy-file (assoc-ref inputs "googletest-source")
-                        (string-append (getcwd)
-                                       "/Tests/googletest-prefix/src/"
-                                       "release-1.8.0.tar.gz"))
+             (substitute* "Tests/CMakeLists.txt"
+               (("URL(.*)$")
+                (string-append "URL " (assoc-ref inputs "googletest-source"))))
              #t)))
        #:configure-flags
        (list "-DOGRE_BUILD_TESTS=TRUE"
@@ -548,6 +538,32 @@ virtual reality, scientific visualization and modeling.")
     ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
     (license license:lgpl2.1)))
 
+;; We need this for simgear
+(define-public openscenegraph-3.4
+  (package (inherit openscenegraph)
+    (name "openscenegraph")
+    (version "3.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openscenegraph/OpenSceneGraph")
+             (commit (string-append "OpenSceneGraph-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fbzg1ihjpxk6smlq80p3h3ggllbr16ihd2fxpfwzam8yr8yxip9"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments openscenegraph)
+       ((#:configure-flags flags)
+        `(cons
+          ;; The jpeg plugin requires conversion between integers and booleans
+          "-DCMAKE_CXX_FLAGS=-fpermissive"
+          ,flags))))
+    (inputs
+     `(("libjpeg" ,libjpeg)
+       ,@(package-inputs openscenegraph)))))
+
 (define-public povray
   (package
     (name "povray")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index f006795a16..0850c2bd5b 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index d4f019c814..03fd63837e 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -17,7 +17,7 @@
 ;;; 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>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
@@ -898,33 +898,30 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
     (license license:gpl3+)))
 
 (define-public guile-email
-  (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
-        (revision "1"))
-    (package
-      (name "guile-email")
-      (version (git-version "0.1.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://git.systemreboot.net/guile-email")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
-      (build-system gnu-build-system)
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (home-page "https://git.systemreboot.net/guile-email")
-      (synopsis "Guile email parser")
-      (description "This package provides an email parser written in pure
+  (package
+    (name "guile-email")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://git.systemreboot.net/guile-email/snapshot/guile-email-"
+             version ".tar.xz"))
+       (sha256
+        (base32
+         "0p2v8q2kkz8m6vf2rsjvz3dj1mvnx7dxakjf72dwkndbgk3rp79f"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (home-page "https://git.systemreboot.net/guile-email")
+    (synopsis "Guile email parser")
+    (description "This package provides an email parser written in pure
 Guile.")
-      (license license:agpl3+))))
+    (license license:agpl3+)))
 
 (define-public guile-debbugs-next
   (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
@@ -951,40 +948,37 @@ Guile.")
        `(("guile" ,guile-2.2)
          ("guile-email" ,guile-email))))))
 
-;; There has not been any release yet.
 (define-public guile-newt
-  (let ((commit "80c1e9e71945f833386d1632b52573e59325804f")
-        (revision "4"))
-    (package
-      (name "guile-newt")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/mothacehe/guile-newt")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:make-flags
-         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
-      (inputs
-       `(("guile" ,guile-2.2)
-         ("newt" ,newt)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (synopsis "Guile bindings to Newt")
-      (description
-       "This package provides bindings for Newt, a programming library for
+  (package
+    (name "guile-newt")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/mothacehe/guile-newt")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("newt" ,newt)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Guile bindings to Newt")
+    (description
+     "This package provides bindings for Newt, a programming library for
 color text mode, widget based user interfaces.  The bindings are written in pure
 Scheme by using Guile’s foreign function interface.")
-      (home-page "https://gitlab.com/mothacehe/guile-newt")
-      (license license:gpl3+))))
+    (home-page "https://gitlab.com/mothacehe/guile-newt")
+    (license license:gpl3+)))
 
 (define-public guile-mastodon
   (package
@@ -1015,42 +1009,39 @@ Scheme by using Guile’s foreign function interface.")
 microblogging service.")
     (license license:gpl3+)))
 
-;; There has not been any release yet.
 (define-public guile-parted
-  (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8")
-        (revision "0"))
-    (package
-      (name "guile-parted")
-      (version (string-append "0-" revision "." (string-take commit 9)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/mothacehe/guile-parted")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:make-flags
-         '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
-      (inputs
-       `(("guile" ,guile-2.2)
-         ("parted" ,parted)))
-      (propagated-inputs
-       `(("guile-bytestructures" ,guile-bytestructures)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (synopsis "Guile bindings to GNU Parted")
-      (description
-       "This package provides bindings for GNU Parted library, a C library
-allowing disk partition tables creation and manipulation. The bindings are
+  (package
+    (name "guile-parted")
+    (version "0.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/mothacehe/guile-parted")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("parted" ,parted)))
+    (propagated-inputs
+     `(("guile-bytestructures" ,guile-bytestructures)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Guile bindings to GNU Parted")
+    (description
+     "This package provides bindings for GNU Parted library, a C library
+allowing disk partition tables creation and manipulation.  The bindings are
 written in pure Scheme by using Guile's foreign function interface.")
-      (home-page "https://gitlab.com/mothacehe/guile-parted")
-      (license license:gpl3+))))
+    (home-page "https://gitlab.com/mothacehe/guile-parted")
+    (license license:gpl3+)))
 
 (define-public guile-xosd
   (package
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index daeadca610..d4dd10ba11 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -103,6 +103,12 @@
                       (substitute* "ice-9/popen.scm"
                         (("/bin/sh") (which "sh")))
                       #t)))))
+
+   ;; When cross-compiling, a native version of Guile itself is needed.
+   (native-inputs (if (%current-target-system)
+                      `(("self" ,this-package))
+                      '()))
+
    (inputs `(("gawk" ,gawk)
              ("readline" ,readline)))
 
@@ -111,9 +117,6 @@
    (propagated-inputs `(("gmp" ,gmp)
                         ("libltdl" ,libltdl)))
 
-   ;; When cross-compiling, a native version of Guile itself is needed.
-   (self-native-input? #t)
-
    (native-search-paths
     (list (search-path-specification
            (variable "GUILE_LOAD_PATH")
@@ -141,7 +144,12 @@ without requiring the source code to be rewritten.")
              (base32
               "10lxc6l5alf3lzbs3ihnbfy6dfcrsyf8667wa57f26vf4mk2ai78"))))
    (build-system gnu-build-system)
-   (native-inputs `(("pkgconfig" ,pkg-config)))
+
+   ;; When cross-compiling, a native version of Guile itself is needed.
+   (native-inputs `(,@(if (%current-target-system)
+                          `(("self" ,this-package))
+                          '())
+                    ("pkgconfig" ,pkg-config)))
    (inputs `(("libffi" ,libffi)
              ,@(libiconv-if-needed)
 
@@ -165,8 +173,6 @@ without requiring the source code to be rewritten.")
       ("bdw-gc" ,libgc)
       ("gmp" ,gmp)))
 
-   (self-native-input? #t)
-
    (outputs '("out" "debug"))
 
    (arguments
@@ -207,20 +213,6 @@ without requiring the source code to be rewritten.")
    (home-page "https://www.gnu.org/software/guile/")
    (license license:lgpl3+)))
 
-(define-public guile-2.0.13
-  ;; For testing a "minimal" Guix
-  (hidden-package
-   (package (inherit guile-2.0)
-     (name "guile")
-     (version "2.0.13")
-     (source (origin
-               (method url-fetch)
-               (uri (string-append "mirror://gnu/guile/guile-" version
-                                   ".tar.xz"))
-               (sha256
-                (base32
-                 "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p")))))))
-
 (define-public guile-2.2
   (package (inherit guile-2.0)
     (name "guile")
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 006a61c086..a735ecb011 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -38,14 +38,14 @@
 (define-public ddcutil
   (package
     (name "ddcutil")
-    (version "0.9.4")
+    (version "0.9.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.ddcutil.com/tarballs/"
                            "ddcutil-" version ".tar.gz"))
        (sha256
-        (base32 "1jqfip43sx3dnx86znmpy8dj4ikkfpgf8npgq66s7hqwwa99i7zc"))))
+        (base32 "18brwj54dkjylvpx7c6ksf7fzhdjffi60avyg7qbs8vw9awnsxqz"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
new file mode 100644
index 0000000000..d675863090
--- /dev/null
+++ b/gnu/packages/haskell-apps.scm
@@ -0,0 +1,400 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages haskell-apps)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system haskell)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages rsync)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages version-control))
+
+;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17
+;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000
+;; and results of search engines will show that if the protocol is http, https
+;; is never mentioned.
+(define-public darcs
+  (package
+    (name "darcs")
+    (version "2.14.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/darcs/"
+                           "darcs-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0zm2486gyhiga1amclbg92cd09bvki6vgh0ll75hv5kl72j61lb5"))
+       (modules '((guix build utils)))
+       ;; Remove time-dependent code for reproducibility.
+       (snippet
+        '(begin
+           (substitute* "darcs/darcs.hs"
+             (("__DATE__") "\"1970-01-01\"")
+             (("__TIME__") "\"00:00:00\""))
+           #t))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:configure-flags '("-fpkgconfig" "-fcurl" "-flibiconv" "-fthreaded"
+                           "-fnetwork-uri" "-fhttp" "--flag=executable"
+                           "--flag=library")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-sh
+           (lambda _
+             (substitute* "tests/issue538.sh"
+               (("/bin/sh") (which "sh")))
+             #t)))))
+    (inputs
+     `(("ghc-cmdargs" ,ghc-cmdargs)
+       ("ghc-split" ,ghc-split)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-findbin" ,ghc-findbin)
+       ("ghc-hunit" ,ghc-hunit)
+       ("ghc-async" ,ghc-async)
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base16-bytestring" ,ghc-base16-bytestring)
+       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
+       ("ghc-cryptohash" ,ghc-cryptohash)
+       ("ghc-data-ordlist" ,ghc-data-ordlist)
+       ("ghc-fgl" ,ghc-fgl)
+       ("ghc-system-filepath" ,ghc-system-filepath)
+       ("ghc-graphviz" ,ghc-graphviz)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-html" ,ghc-html)
+       ("ghc-mmap" ,ghc-mmap)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-parsec" ,ghc-parsec)
+       ("ghc-random" ,ghc-random)
+       ("ghc-regex-applicative" ,ghc-regex-applicative)
+       ("ghc-regex-compat-tdfa" ,ghc-regex-compat-tdfa)
+       ("ghc-sandi" ,ghc-sandi)
+       ("ghc-shelly" ,ghc-shelly)
+       ("ghc-tar" ,ghc-tar)
+       ("ghc-transformers-compat" ,ghc-transformers-compat)
+       ("ghc-unix-compat" ,ghc-unix-compat)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-vector" ,ghc-vector)
+       ("ghc-zip-archive" ,ghc-zip-archive)
+       ("ghc-zlib" ,ghc-zlib)
+       ("ghc-http" ,ghc-http)
+       ("curl" ,curl)
+       ("ghc" ,ghc)
+       ("ncurses" ,ncurses)
+       ("perl" ,perl)
+       ("libiconv" ,libiconv)
+       ("ghc-network" ,ghc-network)
+       ("ghc-network-uri" ,ghc-network-uri)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://darcs.net")
+    (synopsis "Distributed Revision Control System")
+    (description
+     "Darcs is a revision control system.  It is:
+
+@enumerate
+@item Distributed: Every user has access to the full command set, removing boundaries
+between server and client or committer and non-committers.
+@item Interactive: Darcs is easy to learn and efficient to use because it asks you
+questions in response to simple commands, giving you choices in your work flow.
+You can choose to record one change in a file, while ignoring another.  As you update
+from upstream, you can review each patch name, even the full diff for interesting
+patches.
+@item Smart: Originally developed by physicist David Roundy, darcs is based on a
+unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
+@end enumerate")
+    (license license:gpl2)))
+
+(define-public git-annex
+  (package
+    (name "git-annex")
+    (version "6.20180926")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "git-annex/git-annex-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1251rj8h63y30sfqk0zh670yhz14p256y59n3590pg015pf3575d"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:configure-flags
+       '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-shell
+           (lambda _
+             (substitute* "Utility/Shell.hs"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'configure 'factor-setup
+           (lambda _
+             ;; Factor out necessary build logic from the provided
+             ;; `Setup.hs' script.  The script as-is does not work because
+             ;; it cannot find its dependencies, and there is no obvious way
+             ;; to tell it where to look.  Note that we do not preserve the
+             ;; code that installs man pages here.
+             (call-with-output-file "PreConf.hs"
+               (lambda (out)
+                 (format out "import qualified Build.Configure as Configure~%")
+                 (format out "main = Configure.run Configure.tests~%")))
+             (call-with-output-file "Setup.hs"
+               (lambda (out)
+                 (format out "import Distribution.Simple~%")
+                 (format out "main = defaultMain~%")))
+             #t))
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (invoke "runhaskell" "PreConf.hs")
+             #t))
+         (replace 'check
+           (lambda _
+             ;; We need to set the path so that Git recognizes
+             ;; `git annex' as a custom command.
+             (setenv "PATH" (string-append (getenv "PATH") ":"
+                                           (getcwd) "/dist/build/git-annex"))
+             (with-directory-excursion "dist/build/git-annex"
+               (symlink "git-annex" "git-annex-shell"))
+             (invoke "git-annex" "test")
+             #t))
+         (add-after 'install 'install-symlinks
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (symlink (string-append bin "/git-annex")
+                        (string-append bin "/git-annex-shell"))
+               (symlink (string-append bin "/git-annex")
+                        (string-append bin "/git-remote-tor-annex"))
+               #t))))))
+    (inputs
+     `(("curl" ,curl)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-async" ,ghc-async)
+       ("ghc-bloomfilter" ,ghc-bloomfilter)
+       ("ghc-byteable" ,ghc-byteable)
+       ("ghc-case-insensitive" ,ghc-case-insensitive)
+       ("ghc-crypto-api" ,ghc-crypto-api)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-data-default" ,ghc-data-default)
+       ("ghc-disk-free-space" ,ghc-disk-free-space)
+       ("ghc-dlist" ,ghc-dlist)
+       ("ghc-edit-distance" ,ghc-edit-distance)
+       ("ghc-esqueleto" ,ghc-esqueleto)
+       ("ghc-exceptions" ,ghc-exceptions)
+       ("ghc-feed" ,ghc-feed)
+       ("ghc-free" ,ghc-free)
+       ("ghc-hslogger" ,ghc-hslogger)
+       ("ghc-http-client" ,ghc-http-client)
+       ("ghc-http-conduit" ,ghc-http-conduit)
+       ("ghc-http-types" ,ghc-http-types)
+       ("ghc-ifelse" ,ghc-ifelse)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-network" ,ghc-network)
+       ("ghc-old-locale" ,ghc-old-locale)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-persistent" ,ghc-persistent)
+       ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
+       ("ghc-persistent-template" ,ghc-persistent-template)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-random" ,ghc-random)
+       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
+       ("ghc-resourcet" ,ghc-resourcet)
+       ("ghc-safesemaphore" ,ghc-safesemaphore)
+       ("ghc-sandi" ,ghc-sandi)
+       ("ghc-securemem" ,ghc-securemem)
+       ("ghc-socks" ,ghc-socks)
+       ("ghc-split" ,ghc-split)
+       ("ghc-stm" ,ghc-stm)
+       ("ghc-stm-chans" ,ghc-stm-chans)
+       ("ghc-tagsoup" ,ghc-tagsoup)
+       ("ghc-text" ,ghc-text)
+       ("ghc-unix-compat" ,ghc-unix-compat)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-uuid" ,ghc-uuid)
+       ("git" ,git)
+       ("rsync" ,rsync)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+       ("ghc-tasty-rerun" ,ghc-tasty-rerun)))
+    (home-page "https://git-annex.branchable.com/")
+    (synopsis "Manage files with Git, without checking in their contents")
+    (description "This package allows managing files with Git, without
+checking the file contents into Git.  It can store files in many places,
+such as local hard drives and cloud storage services.  It can also be
+used to keep a folder in sync between computers.")
+    ;; The web app is released under the AGPLv3+.
+    (license (list license:gpl3+
+                   license:agpl3+))))
+
+(define-public ghc-sdl2
+  (package
+    (name "ghc-sdl2")
+    (version "2.4.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "sdl2/sdl2-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0p4b12fmxps0sbnkqdfy0qw19s355yrkw7fgw6xz53wzq706k991"))))
+    (build-system haskell-build-system)
+    (arguments '(#:tests? #f)) ; tests require graphical environment
+    (inputs
+     `(("ghc-exceptions" ,ghc-exceptions)
+       ("ghc-linear" ,ghc-linear)
+       ("ghc-statevar" ,ghc-statevar)
+       ("ghc-text" ,ghc-text)
+       ("ghc-vector" ,ghc-vector)
+       ("sdl2" ,sdl2)))
+    (native-inputs
+     `(("ghc-weigh" ,ghc-weigh)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://hackage.haskell.org/package/sdl2")
+    (synopsis "High- and low-level bindings to the SDL library")
+    (description
+     "This package contains bindings to the SDL 2 library, in both high- and
+low-level forms.  The @code{SDL} namespace contains high-level bindings, where
+enumerations are split into sum types, and we perform automatic
+error-checking.  The @code{SDL.Raw} namespace contains an almost 1-1
+translation of the C API into Haskell FFI calls.  As such, this does not
+contain sum types nor error checking.  Thus this namespace is suitable for
+building your own abstraction over SDL, but is not recommended for day-to-day
+programming.")
+    (license license:bsd-3)))
+
+(define-public ghc-sdl2-mixer
+  (package
+    (name "ghc-sdl2-mixer")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/sdl2-mixer/"
+                           "sdl2-mixer-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1k8avyccq5l9z7bwxigim312yaancxl1sr3q6a96bcm7pnhiak0g"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-data-default-class" ,ghc-data-default-class)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-sdl2" ,ghc-sdl2)
+       ("ghc-vector" ,ghc-vector)
+       ("sdl2-mixer" ,sdl2-mixer)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://hackage.haskell.org/package/sdl2-mixer")
+    (synopsis "Bindings to SDL2 mixer")
+    (description "This package provides Haskell bindings to
+@code{SDL2_mixer}.")
+    (license license:bsd-3)))
+
+(define-public ghc-sdl2-image
+  (package
+    (name "ghc-sdl2-image")
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/sdl2-image/"
+                           "sdl2-image-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pr6dkg73cy9z0w54lrkj9c5bhxj56nl92lxikjy8kz6nyr455rr"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-sdl2" ,ghc-sdl2)
+       ("ghc-text" ,ghc-text)
+       ("sdl2-image" ,sdl2-image)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://hackage.haskell.org/package/sdl2-image")
+    (synopsis "Bindings to SDL2_image")
+    (description "This package provides Haskell bindings to
+@code{SDL2_image}.")
+    (license license:expat)))
+
+(define-public raincat
+  (package
+    (name "raincat")
+    (version "1.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://hackage.haskell.org/package/Raincat/"
+                           "Raincat-" version ".tar.gz"))
+       (sha256
+        (base32
+         "10y9zi22m6hf13c9h8zd9vg7mljpwbw0r3djb6r80bna701fdf6c"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/raincat")
+                 `("LD_LIBRARY_PATH" ":" =
+                   (,(string-append (assoc-ref inputs "freeglut")
+                                    "/lib"))))
+               #t))))))
+    (inputs
+     `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
+       ("ghc-random" ,ghc-random)
+       ("ghc-glut" ,ghc-glut)
+       ("freeglut" ,freeglut)
+       ("ghc-opengl" ,ghc-opengl)
+       ("ghc-sdl2" ,ghc-sdl2)
+       ("ghc-sdl2-image" ,ghc-sdl2-image)
+       ("ghc-sdl2-mixer" ,ghc-sdl2-mixer)))
+    (home-page "http://www.bysusanlin.com/raincat/")
+    (synopsis "Puzzle game with a cat in lead role")
+    (description "Project Raincat is a game developed by Carnegie Mellon
+students through GCS during the Fall 2008 semester.  Raincat features game
+play inspired from classics Lemmings and The Incredible Machine.  The project
+proved to be an excellent learning experience for the programmers.  Everything
+is programmed in Haskell.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 19eb40eaa4..fa2bd0d652 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -148,9 +148,9 @@ Haskell test framework.")
      "https://github.com/feuerbach/tasty-golden")
     (synopsis "Golden tests support for tasty")
     (description
-     "This package provides support for 'golden testing'.  A @dfn{golden test}
-is an IO action that writes its result to a file.  To pass the test, this
-output file should be identical to the corresponding 'golden' file, which
+     "This package provides support for @code{golden testing}.  A @dfn{golden
+test} is an IO action that writes its result to a file.  To pass the test, this
+output file should be identical to the corresponding @code{golden} file, which
 contains the correct result for the test.")
     (license license:expat)))
 
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index 8f216a379d..8d28a77fc1 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -733,3 +733,46 @@ It also includes support for detached signatures, and thorough
 documentation on the design and implementation, including usage
 guidelines.")
     (license license:expat)))
+
+(define-public ghc-tls
+  (package
+    (name "ghc-tls")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://hackage.haskell.org/package/"
+                                  "tls/tls-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1y083724mym28n6xfaz7pcc7zqxdhjpaxpbvzxfbs25qq2px3smv"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-cereal" ,ghc-cereal)
+       ("ghc-data-default-class" ,ghc-data-default-class)
+       ("ghc-memory" ,ghc-memory)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-asn1-types" ,ghc-asn1-types)
+       ("ghc-asn1-encoding" ,ghc-asn1-encoding)
+       ("ghc-x509" ,ghc-x509)
+       ("ghc-x509-store" ,ghc-x509-store)
+       ("ghc-x509-validation" ,ghc-x509-validation)
+       ("ghc-async" ,ghc-async)
+       ("ghc-network" ,ghc-network)
+       ("ghc-hourglass" ,ghc-hourglass)))
+    (native-inputs
+     `(("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+       ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://github.com/vincenthz/hs-tls")
+    (synopsis
+     "TLS/SSL protocol native implementation (Server and Client)")
+    (description
+     "Native Haskell TLS and SSL protocol implementation for server and client.
+This provides a high-level implementation of a sensitive security protocol,
+eliminating a common set of security issues through the use of the advanced
+type system, high level constructions and common Haskell features.  Currently
+implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol, and support RSA and
+Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many
+extensions.")
+    (license license:bsd-3)))
+
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 2e404e2fcf..555fee12d4 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015, 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
@@ -27,7 +27,6 @@
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-crypto)
-  #:use-module (gnu packages tls)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -1244,3 +1243,108 @@ providing richtext field using Nic editor. ")
 Yesod related packages into one cohesive whole.  This is the version of Yesod,
 whereas most of the core code lives in @code{ghc-yesod-core}.")
     (license license:expat)))
+
+(define-public ghc-hxt-charproperties
+  (package
+    (name "ghc-hxt-charproperties")
+    (version "9.2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "hxt-charproperties/hxt-charproperties-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1mml8wglvagqq891rchgli6r8rnkwrqhgsxfl6kb5403pzb18rp4"))))
+    (build-system haskell-build-system)
+    (home-page "https://github.com/UweSchmidt/hxt")
+    (synopsis "Character properties and classes for XML and Unicode")
+    (description
+     "The modules provided by this package contain predicates for Unicode
+blocks and char properties and character predicates defined by XML.  The
+supported Unicode version is 7.0.0")
+    (license license:expat)))
+
+(define-public ghc-hxt-unicode
+  (package
+    (name "ghc-hxt-unicode")
+    (version "9.0.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/hxt-unicode/hxt-unicode-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0rj48cy8z4fl3zpg5bpa458kqr83adav6jnqv4i71dclpprj6n3v"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties)))
+    (home-page
+     "http://www.fh-wedel.de/~si/HXmlToolbox/index.html https://github.com/UweSchmidt/hxt")
+    (synopsis
+     "Unicode en-/decoding functions for utf8, iso-latin-* and other encodings")
+    (description
+     "This package provides Unicode encoding and decoding functions for
+encodings used in the Haskell XML Toolbox.  ISO Latin 1-16, utf8, utf16, ASCII
+are supported. Decoding is done with lazy functions, errors may be detected or
+ignored.")
+    (license license:expat)))
+
+(define-public ghc-hxt-regex-xmlschema
+  (package
+    (name "ghc-hxt-regex-xmlschema")
+    (version "9.2.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "hxt-regex-xmlschema/hxt-regex-xmlschema-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1c4jr0439f5yc05h7iz53fa47g6l2wrvqp6gvwf01mlqajk3nx7l"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties)
+       ("ghc-parsec" ,ghc-parsec)
+       ("ghc-text" ,ghc-text)
+       ("ghc-hunit" ,ghc-hunit)))
+    (home-page "http://www.haskell.org/haskellwiki/Regular_expressions_for_XML_Schema")
+    (synopsis "Regular expression library for W3C XML Schema regular expressions")
+    (description
+     "This library supports full W3C XML Schema regular expressions inclusive
+all Unicode character sets and blocks.  It is implemented by the technique of
+derivations of regular expressions.")
+    (license license:expat)))
+
+(define-public ghc-hxt
+  (package
+    (name "ghc-hxt")
+    (version "9.3.1.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/hxt/hxt-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1qq3ykgn355rx242xjcbqqksgvwr6k2fdj5phw4iv28qqxff6m8d"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-parsec" ,ghc-parsec)
+       ("ghc-hxt-charproperties" ,ghc-hxt-charproperties)
+       ("ghc-hxt-unicode" ,ghc-hxt-unicode)
+       ("ghc-hxt-regex-xmlschema" ,ghc-hxt-regex-xmlschema)
+       ("ghc-network-uri" ,ghc-network-uri)))
+    (home-page "https://github.com/UweSchmidt/hxt")
+    (synopsis "Collection of tools for processing XML with Haskell")
+    (description
+     "The Haskell XML Toolbox bases on the ideas of HaXml and HXML, but
+introduces a more general approach for processing XML with Haskell.")
+    (license license:expat)))
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 2a5ba2a706..61c6119322 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -12,7 +12,7 @@
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
 ;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Tonton <tonton@riseup.net>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -833,6 +833,28 @@ code pages on Windows.  On all other operating systems, the library does
 nothing.")
   (license license:bsd-3)))
 
+(define-public ghc-libffi
+  (package
+    (name "ghc-libffi")
+    (version "0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "libffi/libffi-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0g7jnhng3j7z5517aaqga0144aamibsbpgm3yynwyfzkq1kp0f28"))))
+    (build-system haskell-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("libffi" ,libffi)))
+    (home-page "http://hackage.haskell.org/package/libffi")
+    (synopsis "Haskell binding to libffi")
+    (description
+     "A binding to libffi, allowing C functions of types only known at runtime
+to be called from Haskell.")
+    (license license:bsd-3)))
+
 (define-public ghc-newtype-generics
   (package
     (name "ghc-newtype-generics")
@@ -1157,7 +1179,7 @@ them.")
     (synopsis
      "Support for manipulating Haskell source code")
     (description
-     "The 'haskell-src' package provides support for manipulating Haskell
+     "The @code{haskell-src} package provides support for manipulating Haskell
 source code.  The package provides a lexer, parser and pretty-printer, and a
 definition of a Haskell abstract syntax tree (AST).  Common uses of this
 package are to parse or generate Haskell 98 code.")
@@ -1313,7 +1335,7 @@ Happy works in a similar way to the yacc tool for C.")
 (define-public ghc-haskell-lexer
   (package
     (name "ghc-haskell-lexer")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
@@ -1321,8 +1343,7 @@ Happy works in a similar way to the yacc tool for C.")
              "https://hackage.haskell.org/package/haskell-lexer/haskell-lexer-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "0rj3r1pk88hh3sk3mj61whp8czz5kpxhbc78xlr04bxwqjrjmm6p"))))
+        (base32 "1wyxd8x33x4v5vxyzkhm610pl86gbkc8y439092fr1735q9g7kfq"))))
     (build-system haskell-build-system)
     (home-page "http://hackage.haskell.org/package/haskell-lexer")
     (synopsis "Fully compliant Haskell 98 lexer")
@@ -2360,11 +2381,11 @@ literals.")
      "Compression and decompression in the gzip and zlib formats")
     (description
      "This package provides a pure interface for compressing and decompressing
-streams of data represented as lazy 'ByteString's.  It uses the zlib C library
-so it has high performance.  It supports the 'zlib', 'gzip' and 'raw'
-compression formats.  It provides a convenient high level API suitable for
-most tasks and for the few cases where more control is needed it provides
-access to the full zlib feature set.")
+streams of data represented as lazy @code{ByteString}s.  It uses the zlib C
+library so it has high performance.  It supports the @code{zlib}, @code{gzip}
+and @code{raw} compression formats.  It provides a convenient high level API
+suitable for most tasks and for the few cases where more control is needed it
+provides access to the full zlib feature set.")
     (license license:bsd-3)))
 
 (define-public ghc-stm
@@ -2467,7 +2488,7 @@ are not exception safe and can be broken by @code{killThread}.")
      "An efficient packed, immutable Unicode text type (both strict and
 lazy), with a powerful loop fusion optimization framework.
 
-The 'Text' type represents Unicode character strings, in a time and
+The @code{Text} type represents Unicode character strings, in a time and
 space-efficient manner.  This package provides text processing
 capabilities that are optimized for performance critical use, both
 in terms of large data quantities and high speed.")
@@ -3800,10 +3821,10 @@ writing to stdout and other handles.")
      "https://github.com/basvandijk/case-insensitive")
     (synopsis "Case insensitive string comparison")
     (description
-     "The module 'Data.CaseInsensitive' provides the 'CI' type constructor
-which can be parameterised by a string-like type like: 'String', 'ByteString',
-'Text', etc..  Comparisons of values of the resulting type will be insensitive
-to cases.")
+     "The module @code{Data.CaseInsensitive} provides the @code{CI} type
+constructor which can be parameterised by a string-like type like:
+@code{String}, @code{ByteString}, @code{Text}, etc.  Comparisons of values of
+the resulting type will be insensitive to cases.")
     (license license:bsd-3)))
 
 (define-public ghc-syb
@@ -3830,7 +3851,7 @@ to cases.")
     (description "This package contains the generics system described in the
 /Scrap Your Boilerplate/ papers (see
 @uref{http://www.cs.uu.nl/wiki/GenericProgramming/SYB, the website}).  It
-defines the 'Data' class of types permitting folding and unfolding of
+defines the @code{Data} class of types permitting folding and unfolding of
 constructor applications, instances of this class for primitive types, and a
 variety of traversals.")
     (license license:bsd-3)))
@@ -4323,8 +4344,8 @@ interface.")
      "https://github.com/haskell/network-uri")
     (synopsis "Library for URI manipulation")
     (description "This package provides an URI manipulation interface.  In
-'network-2.6' the 'Network.URI' module was split off from the 'network'
-package into this package.")
+@code{network-2.6} the @code{Network.URI} module was split off from the
+@code{network} package into this package.")
     (license license:bsd-3)))
 
 (define-public ghc-ansi-terminal
@@ -5724,7 +5745,7 @@ using a simple box model.")
     (description
      "This package provides a @code{GHC.Generics}-based
 @code{Control.DeepSeq.Generics.genericRnf} function which can be used for
-providing an 'rnf' implementation.")
+providing an @code{rnf} implementation.")
     (license license:bsd-3)))
 
 (define-public ghc-string-qq
@@ -8462,6 +8483,7 @@ JSON (JavaScript Object Notation) is a lightweight data-interchange format.")
          (uri (git-reference
                (url "https://github.com/bitemyapp/esqueleto")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "0lz1qxms7cfg5p3j37inlych0r2fwhm8xbarcys3df9m7jy9nixa"))))
@@ -9430,7 +9452,7 @@ the community, with the missing features being added with pull-requests.")
      `(("ghc-rebase" ,ghc-rebase)))
     (home-page "https://github.com/nikita-volkov/rerebase")
     (synopsis "Reexports from ``base'' with many other standard libraries")
-    (description "A rich drop-in replacement for ``base''.  For details and
+    (description "A rich drop-in replacement for @code{base}.  For details and
 documentation please visit @uref{https://github.com/nikita-volkov/rerebase,
 the project's home page}.")
     (license license:expat)))
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 77aecce9f2..f652cca1c2 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -57,7 +57,7 @@
 (define-public ibus
   (package
     (name "ibus")
-    (version "1.5.19")
+    (version "1.5.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ibus/ibus/"
@@ -65,23 +65,15 @@
                                   version "/ibus-" version ".tar.gz"))
               (sha256
                (base32
-                "0a94bnpm24581317hdnihwr4cniriml10p4ffgxg14xhvaccfrjb"))))
+                "0d6hcbw6ai91jl87lqnyn8bxi5y5kba5i9nz7knknyh69g5fbwac"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f  ; tests fail because there's no connection to dbus
        #:configure-flags `("--disable-emoji-dict" ; cannot find emoji.json path
-                           "--disable-python2"
                            "--enable-python-library"
                            ,(string-append "--with-ucd-dir="
                                            (getcwd) "/ucd")
                            "--enable-wayland")
-       #:make-flags
-       (list "CC=gcc"
-             (string-append "pyoverridesdir="
-                            (assoc-ref %outputs "out")
-                            "/lib/python"
-                            ,(version-major+minor (package-version python))
-                            "/site-packages/gi/overrides/"))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'prepare-ucd-dir
@@ -90,6 +82,18 @@
              (symlink (assoc-ref inputs "unicode-blocks") "../ucd/Blocks.txt")
              (symlink (assoc-ref inputs "unicode-nameslist") "../ucd/NamesList.txt")
              #t))
+         (add-after 'unpack 'patch-python-target-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((root (string-append (assoc-ref outputs "out")
+                                        "/lib/python"
+                                        ,(version-major+minor (package-version python))
+                                        "/site-packages")))
+               (substitute* "configure"
+                 (("(py2?overridesdir)=.*" _ var)
+                  (string-append var "=" root "/gi/overrides/"))
+                 (("(pkgpython2dir=).*" _ var)
+                  (string-append var root "/ibus"))))
+             #t))
          (add-before 'configure 'disable-dconf-update
            (lambda _
              (substitute* "data/dconf/Makefile.in"
@@ -131,7 +135,7 @@
        ("gconf" ,gconf)
        ("gtk2" ,gtk+-2)
        ("gtk+" ,gtk+)
-       ("intltool" ,intltool)
+       ("gettext" ,gnu-gettext)
        ("json-glib" ,json-glib)
        ("libnotify" ,libnotify)
        ("libx11" ,libx11)
@@ -175,7 +179,7 @@ may also simplify input method development.")
 (define-public ibus-libpinyin
   (package
     (name "ibus-libpinyin")
-    (version "1.10.0")
+    (version "1.11.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libpinyin/ibus-libpinyin/"
@@ -183,7 +187,7 @@ may also simplify input method development.")
                                   "/ibus-libpinyin-" version ".tar.gz"))
               (sha256
                (base32
-                "0yq8aw4lddiviag8cnik6fp52vvk8lxv6bym13a3xya84c6zii3c"))))
+                "1sypbr5n96sf7mgqhxrwbawdmszgb6yi28iqkmfmb8xr93pwq7fq"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
@@ -209,6 +213,7 @@ may also simplify input method development.")
        ("sqlite" ,sqlite)
        ("python" ,python)
        ("pyxdg" ,python-pyxdg)
+       ("pygobject2" ,python-pygobject)
        ("gtk+" ,gtk+)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -224,15 +229,15 @@ ZhuYin (Bopomofo) input method based on libpinyin for IBus.")
 (define-public libpinyin
   (package
     (name "libpinyin")
-    (version "2.2.0")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libpinyin/libpinyin/"
                                   "releases/download/" version
-                                  "/libpinyin-2.2.0.tar.gz"))
+                                  "/libpinyin-" version ".tar.gz"))
               (sha256
                (base32
-                "1c4wxvcvjxvk23mcwqvsfsv4nhimx4kpjhabxa28gx1ih10l88gj"))))
+                "14969v6w8n1aiqphl2386dws7dmsdwbzyqnlz4kr8ppm39m9rp5k"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)
diff --git a/gnu/packages/idris.scm b/gnu/packages/idris.scm
index f80d6b3894..ec3eb15d63 100644
--- a/gnu/packages/idris.scm
+++ b/gnu/packages/idris.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2018 Alex ter Weele <alex.ter.weele@gmail.com>
+;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,11 +20,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages idris)
+  #:use-module (gnu packages)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
@@ -34,7 +38,7 @@
 (define-public idris
   (package
     (name "idris")
-    (version "1.3.0")
+    (version "1.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -42,8 +46,14 @@
                     "idris-" version "/idris-" version ".tar.gz"))
               (sha256
                (base32
-                "1w5i2z88li4niykwc6yrgxgfp25ll6ih95cip0ri7d8i7ik03c48"))))
+                "0fn9h58l592j72njwma1ia48h8h87wi2rjqfxs7j2lfmvgfv18fi"))
+              (patches (search-patches "idris-test-no-node.patch"))))
     (build-system haskell-build-system)
+    (native-inputs                      ;For tests
+     `(("perl" ,perl)
+       ("ghc-tasty" ,ghc-tasty)
+       ("ghc-tasty-golden" ,ghc-tasty-golden)
+       ("ghc-tasty-rerun" ,ghc-tasty-rerun)))
     (inputs
      `(("gmp" ,gmp)
        ("ncurses" ,ncurses)
@@ -60,6 +70,7 @@
        ("ghc-fingertree" ,ghc-fingertree)
        ("ghc-fsnotify" ,ghc-fsnotify)
        ("ghc-ieee754" ,ghc-ieee754)
+       ("ghc-libffi" ,ghc-libffi)
        ("ghc-megaparsec" ,ghc-megaparsec)
        ("ghc-network" ,ghc-network)
        ("ghc-optparse-applicative" ,ghc-optparse-applicative)
@@ -75,21 +86,16 @@
        ("ghc-vector-binary-instances" ,ghc-vector-binary-instances)
        ("ghc-zip-archive" ,ghc-zip-archive)))
     (arguments
-     `(#:tests? #f ; FIXME: Test suite doesn't run in a sandbox.
-       #:configure-flags
+     `(#:configure-flags
        (list (string-append "--datasubdir="
-                            (assoc-ref %outputs "out") "/lib/idris"))
+                            (assoc-ref %outputs "out") "/lib/idris")
+             "-fFFI" "-fGMP")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-cc-command
            (lambda _
              (setenv "CC" "gcc")
              #t))
-         (add-before 'configure 'update-constraints
-           (lambda _
-             (substitute* "idris.cabal"
-               (("aeson >= 0\\.6 && < 1\\.3")
-                "aeson >= 0.6 && < 1.4"))))
          (add-after 'install 'fix-libs-install-location
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -99,7 +105,15 @@
                 (lambda (module)
                   (symlink (string-append modules "/" module)
                            (string-append lib "/" module)))
-                '("prelude" "base" "contrib" "effects" "pruviloj"))))))))
+                '("prelude" "base" "contrib" "effects" "pruviloj")))))
+         (delete 'check)                ;Run check later
+         (add-after 'install 'check
+           (lambda* (#:key outputs #:allow-other-keys #:rest args)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "TASTY_NUM_THREADS" (number->string (parallel-job-count)))
+               (setenv "IDRIS_CC" "gcc") ;Needed for creating executables
+               (setenv "PATH" (string-append out "/bin:" (getenv "PATH")))
+               (apply (assoc-ref %standard-phases 'check) args)))))))
     (native-search-paths
      (list (search-path-specification
             (variable "IDRIS_LIBRARY_PATH")
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 54ce2d3b40..08b4be5148 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -87,6 +87,7 @@
   (package
    (name "libpng")
    (version "1.6.36")
+   (replacement libpng-1.6.37)
    (source (origin
             (method url-fetch)
             (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
@@ -112,6 +113,25 @@ library.  It supports almost all PNG features and is extensible.")
    (license license:zlib)
    (home-page "http://www.libpng.org/pub/png/libpng.html")))
 
+;; This graft exists to fix CVE-2018-14048, CVE-2018-14550, and CVE-2019-7317.
+(define-public libpng-1.6.37
+  (package
+    (inherit libpng)
+    (version "1.6.37")
+    (source (origin
+              (method url-fetch)
+              (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
+                                        version "/libpng-" version ".tar.xz")
+                         (string-append
+                          "ftp://ftp.simplesystems.org/pub/libpng/png/src"
+                          "/libpng16/libpng-" version ".tar.xz")
+                         (string-append
+                          "ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
+                          "/libpng16/libpng-" version ".tar.xz")))
+              (sha256
+               (base32
+                "1jl8in381z0128vgxnvn33nln6hzckl7l7j9nqvkaf1m9n1p0pjh"))))))
+
 ;; libpng-apng should be updated when the APNG patch is released:
 ;; <https://bugs.gnu.org/27556>
 (define-public libpng-apng
@@ -198,29 +218,6 @@ APNG patch provides APNG support to libpng.")
         (base32
          "1izw9ybm27llk8531w6h4jp4rk2rxy2s9vil16nwik5dp0amyqxl"))))))
 
-(define-public r-png
-  (package
-    (name "r-png")
-    (version "0.1-7")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "png" version))
-              (sha256
-               (base32
-                "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2"))))
-    (build-system r-build-system)
-    (inputs
-     `(("libpng" ,libpng)
-       ("zlib" ,zlib)))
-    (home-page "http://www.rforge.net/png/")
-    (synopsis "Read and write PNG images")
-    (description
-     "This package provides an easy and simple way to read, write and display
-bitmap images stored in the PNG format.  It can read and write both files and
-in-memory raw vectors.")
-    ;; Any of these GPL versions.
-    (license (list license:gpl2 license:gpl3))))
-
 (define-public pngcrush
   (package
    (name "pngcrush")
@@ -568,7 +565,7 @@ arithmetic ops.")
     (arguments '(#:configure-flags '("--disable-static")))
     (synopsis "Decoder of the JBIG2 image compression format")
     (description
-      "JBIG2 is designed for lossy or lossless encoding of 'bilevel' (1-bit
+      "JBIG2 is designed for lossy or lossless encoding of @code{bilevel} (1-bit
 monochrome) images at moderately high resolution, and in particular scanned
 paper documents.  In this domain it is very efficient, offering compression
 ratios on the order of 100:1.
@@ -584,6 +581,7 @@ work.")
   (package
     (name "openjpeg")
     (version "2.3.0")
+    (replacement openjpeg-2.3.1)
     (source
       (origin
         (method url-fetch)
@@ -617,6 +615,20 @@ error-resilience, a Java-viewer for j2k-images, ...")
     (home-page "https://github.com/uclouvain/openjpeg")
     (license license:bsd-2)))
 
+(define-public openjpeg-2.3.1
+  (package
+    (inherit openjpeg)
+    (version "2.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/uclouvain/openjpeg")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "openjpeg" version))
+              (sha256
+               (base32
+                "1dn98d2dfa1lqyxxmab6rrcv52dyhjr4g7i4xf2w54fqsx14ynrb"))))))
+
 (define-public openjpeg-1
   (package (inherit openjpeg)
     (name "openjpeg")
@@ -1161,13 +1173,13 @@ the programmer.")
     (version "1.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/myint/perceptualdiff/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "0zl6xmp971fffg7fzcz2fbgxg5x2w7l8qa65c008i4kbkc9016ps"))))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/myint/perceptualdiff.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0yys55f9i9g3wjjg0j2m0p0k21zwnid8520a8lrr30khm4k5gibp"))))
     (build-system cmake-build-system)
     (inputs `(("freeimage" ,freeimage)))
     (arguments
@@ -1500,15 +1512,14 @@ in-memory raw vectors.")
 (define-public gifsicle
   (package
    (name "gifsicle")
-   (version "1.91")
+   (version "1.92")
    (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://www.lcdf.org/gifsicle/gifsicle-"
+       (uri (string-append "https://www.lcdf.org/gifsicle/gifsicle-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "00586z1yz86qcblgmf16yly39n4lkjrscl52hvfxqk14m81fckha"))))
+        (base32 "0rffpzxcak19k6cngpxn73khvm3z1gswrqs90ycdzzb53p05ddas"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases
@@ -1523,9 +1534,9 @@ in-memory raw vectors.")
               (("/bin/rm")
                (which "rm")))
             #t)))))
-   (native-inputs `(("perl" ,perl))) ; Only for tests.
+   (native-inputs `(("perl" ,perl)))    ; only for tests
    (inputs `(("libx11" ,libx11)))
-   (home-page "http://www.lcdf.org/gifsicle/")
+   (home-page "https://www.lcdf.org/gifsicle/")
    (synopsis "Edit GIF images and animations")
    (description "Gifsicle is a command-line GIF image manipulation tool that:
 
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 7f3fc408e0..f69f452ee2 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -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-34")
+    (version "6.9.10-35")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1pm1lvbfw67780nch7w80dsvx7v8wbrpj43v3c9217dpz0l89442"))))
+               "1mc7f1i29w27nqsc8gmlqxyid16ik4ys0razggwajzs7mhxy3g8g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 6b8afd5f53..4f61f2ba66 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -152,7 +152,7 @@ that are shared between @command{go-ipfs/commands} and its rewrite
     (home-page "https://github.com/whyrusleeping/gx")
     (synopsis "Package management tool using IPFS")
     (description "@command{gx} is a packaging tool built around the
-distributed, content addressed filesystem IPFS.  It aims to be flexible,
+distributed, content addressed file system IPFS.  It aims to be flexible,
 powerful and simple.")
     (license license:expat)))
 
@@ -244,7 +244,7 @@ written in Go.")
                         #t))))))
     (home-page "https://ipfs.io")
     (synopsis "Go implementation of IPFS, a peer-to-peer hypermedia protocol")
-    (description "IPFS is a global, versioned, peer-to-peer filesystem.  It
+    (description "IPFS is a global, versioned, peer-to-peer file system.  It
 combines good ideas from Git, BitTorrent, Kademlia, SFS, and the Web.  It is
 like a single bittorrent swarm, exchanging git objects.  IPFS provides an
 interface as simple as the HTTP web, but with permanence built in.  You can
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 47dc89d373..9664d749fb 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -52,7 +52,6 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gl)
-  #:use-module (gnu packages gnuzilla) ;nss
   #:use-module (gnu packages ghostscript) ;lcms
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages groovy)
@@ -64,6 +63,7 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux) ;alsa
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
@@ -3225,7 +3225,7 @@ sharing common test data, and test runners for running tests.")
 (define-public java-plexus-utils
   (package
     (name "java-plexus-utils")
-    (version "3.0.24")
+    (version "3.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/codehaus-plexus/"
@@ -3233,7 +3233,7 @@ sharing common test data, and test runners for running tests.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1mlwpc6fms24slygv5yvi6fi9hcha2fh0v73p5znpi78bg36i2js"))))
+                "1ihfigar20lvk4pinii7dq05i173xphhw4iyrk6gjfy04m01j2lz"))))
     (build-system ant-build-system)
     ;; FIXME: The default build.xml does not include a target to install
     ;; javadoc files.
@@ -3266,7 +3266,8 @@ cli/shell/BourneShell.java"
                (delete-file "cli/CommandlineTest.java"))
              #t)))))
     (native-inputs
-     `(("java-junit" ,java-junit)))
+     `(("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-junit" ,java-junit)))
     (home-page "http://codehaus-plexus.github.io/plexus-utils/")
     (synopsis "Common utilities for the Plexus framework")
     (description "This package provides various Java utility classes for the
@@ -3415,14 +3416,14 @@ reusing it in maven.")
 (define-public java-plexus-archiver
   (package
     (name "java-plexus-archiver")
-    (version "3.5")
+    (version "4.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/codehaus-plexus/plexus-archiver"
                                   "/archive/plexus-archiver-" version ".tar.gz"))
               (sha256
                (base32
-                "0iv1j7khra6icqh3jndng3iipfmkc7l5jq2y802cm8r575v75pyv"))))
+                "0ry6i92gli0mvdmfih2vgs0lkf9yvx18h2ajxim66yg6yipnp0hg"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "plexus-archiver.jar"
@@ -3438,6 +3439,11 @@ reusing it in maven.")
              (delete-file
               "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")
              #t))
+         (add-before 'check 'fix-test-building
+           (lambda _
+             (substitute* "build.xml"
+               (("srcdir=\"src/test\"") "srcdir=\"src/test/java\""))
+             #t))
          (add-before 'build 'copy-resources
            (lambda _
              (mkdir-p "build/classes/META-INF/plexus")
@@ -3454,7 +3460,8 @@ reusing it in maven.")
        ("snappy" ,java-snappy)
        ("java-jsr305" ,java-jsr305)))
     (native-inputs
-     `(("junit" ,java-junit)
+     `(("java-hamcrest-core" ,java-hamcrest-core)
+       ("junit" ,java-junit)
        ("classworld" ,java-plexus-classworlds)
        ("xbean" ,java-geronimo-xbean-reflect)
        ("xz" ,java-tukaani-xz)
@@ -4027,16 +4034,18 @@ complex transformations and code analysis tools.")
   (package
     (name "java-cglib")
     (version "3.2.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/cglib/cglib/archive/RELEASE_"
-                    (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
-                    ".tar.gz"))
-              (file-name (string-append "cglib-" version ".tar.gz"))
-              (sha256
-               (base32
-                "162dvd4fln76ai8prfharf66pn6r56p3sxx683j5vdyccrd5hi1q"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cglib/cglib.git")
+             (commit (string-append
+                      "RELEASE_"
+                      (string-map (lambda (c) (if (char=? c #\.) #\_ c))
+                                  version)))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "186451jms2zfp47yd8kxd77az2cqal1my2br7klgyp8fpl4qfg8v"))))
     (build-system ant-build-system)
     (arguments
      `(;; FIXME: tests fail because junit runs
@@ -10294,7 +10303,7 @@ authentication, HTTP state management, and HTTP connection management.")
        ("java-commons-net" ,java-commons-net)
        ("java-jsch" ,java-jsch)))
     (home-page "http://commons.apache.org/proper/commons-vfs/")
-    (synopsis "Java filesystem library")
+    (synopsis "Java file system library")
     (description "Commons VFS provides a single API for accessing various
 different file systems.  It presents a uniform view of the files from various
 different sources, such as the files on local disk, on an HTTP server, or
@@ -10970,3 +10979,78 @@ class/interface/method definitions from source files complete with JavaDoc
 @code{@@tags}.  It is designed to be used by active code generators or
 documentation tools.")
     (license license:asl2.0)))
+
+(define-public java-jgit
+  (package
+    (name "java-jgit")
+    (version "4.7.0.201704051617-r")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "org/eclipse/jgit/org.eclipse.jgit/"
+                                  version "/org.eclipse.jgit-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f                      ; There are no tests to run.
+       #:jar-name "jgit.jar"
+       ;; JGit must be built with a JDK supporting Java 8.
+       #:jdk ,icedtea-8
+       ;; Target our older default JDK.
+       #:make-flags (list "-Dtarget=1.7")
+       #:phases
+       (modify-phases %standard-phases
+         ;; The jar file generated by the default build.xml does not include
+         ;; the text properties files, so we need to add them.
+         (add-after 'build 'add-properties
+           (lambda* (#:key jar-name #:allow-other-keys)
+             (with-directory-excursion "src"
+               (apply invoke "jar" "-uf"
+                      (string-append "../build/jar/" jar-name)
+                      (find-files "." "\\.properties$")))
+             #t)))))
+    (inputs
+     `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
+       ("java-javaewah" ,java-javaewah)
+       ("java-jsch" ,java-jsch)
+       ("java-slf4j-api" ,java-slf4j-api)))
+    (home-page "https://eclipse.org/jgit/")
+    (synopsis "Java library implementing the Git version control system")
+    (description "JGit is a lightweight, pure Java library implementing the
+Git version control system, providing repository access routines, support for
+network protocols, and core version control algorithms.")
+    (license license:edl1.0)))
+
+;; For axoloti.  This package can still be built with icedtea-7, which is
+;; currently used as the default JDK.
+(define-public java-jgit-4.2
+  (package (inherit java-jgit)
+    (version "4.2.0.201601211800-r")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "org/eclipse/jgit/org.eclipse.jgit/"
+                                  version "/org.eclipse.jgit-"
+                                  version "-sources.jar"))
+              (sha256
+               (base32
+                "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm"))))
+    (build-system ant-build-system)
+    (arguments
+     (substitute-keyword-arguments (package-arguments java-jgit)
+       ;; Build for default JDK.
+       ((#:jdk _) icedtea-7)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'use-latest-javaewah-API
+             (lambda _
+               (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java"
+                 (("wordinbits") "WORD_IN_BITS"))
+               #t))))))
+    (inputs
+     `(("java-javaewah" ,java-javaewah)
+       ("java-jsch" ,java-jsch)
+       ("java-slf4j-api" ,java-slf4j-api)))))
diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 10a1dfe0d1..ec735d8903 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -418,7 +418,7 @@ documentation.")
     (home-page "https://community.kde.org/Frameworks")
     (synopsis "Qt 5 addon providing access to numerous types of archives")
     (description "KArchive provides classes for easy reading, creation and
-manipulation of 'archive' formats like ZIP and TAR.
+manipulation of @code{archive} formats like ZIP and TAR.
 
 It also provides transparent compression and decompression of data, like the
 GZip format, via a subclass of QIODevice.")
@@ -2585,8 +2585,9 @@ in applications using the KDE Frameworks.")
     (synopsis "Library to speed up start of applications on KDE workspaces")
     (description "Kdeinit is a process launcher similar to init used for booting
 UNIX.  It launches processes by forking and then loading a dynamic library which
-contains a 'kdemain(...)' function.  Using kdeinit to launch KDE applications
-makes starting KDE applications faster and reduces memory consumption.")
+contains a @code{kdemain(@dots{})} function.  Using kdeinit to launch KDE
+applications makes starting KDE applications faster and reduces memory
+consumption.")
     ;; dual licensed
     (license (list license:lgpl2.0+ license:lgpl2.1+))))
 
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 23078d00a0..2427d35ea1 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.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 © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Mark Meyer <mark@ofosos.org>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -47,10 +47,12 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
 
 (define-public kdenlive
@@ -296,7 +298,7 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
      `(#:phases
        (modify-phases %standard-phases
          (delete 'check)
-         (add-after 'install 'check ;; add-after 'install
+         (add-after 'install 'check
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
@@ -306,9 +308,8 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
                (setenv "XDG_DATA_DIRS"
                        (string-append out "/share:"
                                       (getenv "XDG_DATA_DIRS")))
-               (zero?
-                (system* "ctest" "-R" ;; almost all tests require a display
-                         "filteringstrategy|kdevvarlengtharray|kdevhash"))))))))
+               (invoke "ctest" "-R" ; almost all tests require a display
+                       "filteringstrategy|kdevvarlengtharray|kdevhash")))))))
     (home-page "https://github.com/KDE/kdevplatform")
     (synopsis "Framework to build integrated development environments (IDEs)")
     (description "KDevPlatform is the basis of KDevelop and contains some
@@ -531,3 +532,79 @@ cards.")
 Using a plugin system it is possible to create notifications with many
 different notification systems.")
     (license license:lgpl3)))
+
+(define-public kdeconnect
+  (package
+    (name "kdeconnect")
+    (version "1.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "mirror://kde/stable/kdeconnect/"
+                            version "/src/kdeconnect-kde-"
+                            version ".tar.xz"))
+        (sha256
+         (base32
+          "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DBUILD_TESTING=ON")
+       #:tests? #f ; tests fail hard in our build environment
+       #:modules ((guix build cmake-build-system)
+                  (guix build qt-utils)
+                  (guix build utils))
+       #:imported-modules (,@%cmake-build-system-modules
+                            (guix build qt-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'check-setup
+           (lambda _
+             (setenv "QT_QPA_PLATFORM" "offscreen")
+             #t))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "QT_PLUGIN_PATH"
+                       (string-append out "/lib/qt5/plugins"
+                                      ":" (getenv "QT_PLUGIN_PATH")))
+               (wrap-qt-program out "../lib/libexec/kdeconnectd")
+               (wrap-qt-program out "kdeconnect-cli")
+               (wrap-qt-program out "kdeconnect-handler")
+               (wrap-qt-program out "kdeconnect-indicator"))
+             #t)))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("kdoctools" ,kdoctools)
+       ("libxtst" ,libxtst)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("kcmutils" ,kcmutils)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kdbusaddons" ,kdbusaddons)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kio" ,kio)
+       ("knotifications" ,knotifications)
+       ("kwayland" ,kwayland)
+       ("libfakekey" ,libfakekey)
+       ("qca" ,qca)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtx11extras" ,qtx11extras)))
+    (home-page "https://community.kde.org/KDEConnect")
+    (synopsis "Enable your devices to communicate with each other")
+    (description "KDE Connect is a project that enables all your devices to
+communicate with each other.  Here's a few things KDE Connect can do:
+@enumerate
+@item Receive your phone notifications on your desktop computer and reply to messages
+@item Control music playing on your desktop from your phone
+@item Use your phone as a remote control for your desktop
+@item Run predefined commands on your PC from connected devices
+@item Check your phones battery level from the desktop
+@item Ring your phone to help finding it
+@item Share files and links between devices
+@item Browse your phone from the desktop
+@item Control the desktop's volume from the phone
+@end enumerate")
+    (license (list license:gpl2 license:gpl3)))) ; dual licensed
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 3929909d10..e885aaab39 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -271,7 +271,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
 (define-public kodi
   (package
     (name "kodi")
-    (version "18.1")
+    (version "18.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -280,8 +280,9 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1w26aqvzxv4c70gcd1vw1pldapsc2xcacwq9b7dqx5m44j0zx1dc"))
-              (patches (search-patches "kodi-skip-test-449.patch"))
+                "1yzi8171p1mnszyf80lqkl05ql25n73s5gn8pcgvv4jph4yvasnq"))
+              (patches (search-patches "kodi-skip-test-449.patch"
+                                       "kodi-set-libcurl-ssl-parameters.patch"))
               (snippet
                '(begin
                   (use-modules (guix build utils))
diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm
index b5e20f30f8..7681677938 100644
--- a/gnu/packages/libedit.scm
+++ b/gnu/packages/libedit.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,15 +29,14 @@
 (define-public libedit
   (package
     (name "libedit")
-    (version "20181209-3.1")
+    (version "20190324-3.1")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "http://thrysoee.dk/editline"
-                          "/" name "-" version ".tar.gz"))
+                          "/libedit-" version ".tar.gz"))
       (sha256
-       (base32
-        "0r0hc4lg71xnn0vrrk2g7is42i0k0dra7cbw3fljq3q01c6df498"))))
+       (base32 "1bhvp8xkkgrg89k4ci1k8vjl3nhb6szd4ghy9lp4jrfgq58hz3xc"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index fa084794de..7fc2c1461b 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; 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 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -59,7 +59,6 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
@@ -67,6 +66,7 @@
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
@@ -558,8 +558,8 @@ Java.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://dev-www.libreoffice.org/src/" name "/"
-                          name "-" version ".tar.xz"))
+      (uri (string-append "https://dev-www.libreoffice.org/src/libpagemaker/"
+                          "libpagemaker-" version ".tar.xz"))
       (sha256 (base32
                "17ai8ajffr0ixxmmcv3k5vgjlcsix38ldb4fw2arild70pbsrbb6"))))
     (build-system gnu-build-system)
@@ -587,8 +587,8 @@ created by PageMaker version 6.x and 7.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://dev-www.libreoffice.org/src/" name "/"
-                          name "-" version ".tar.xz"))
+      (uri (string-append "http://dev-www.libreoffice.org/src/libvisio/"
+                          "libvisio-" version ".tar.xz"))
       (sha256 (base32
                "1yahpfl13qk6178irv8jn5ppxdn7isafqisyqsdw0lqxcz9h447y"))))
     (build-system gnu-build-system)
@@ -617,8 +617,8 @@ Microsoft Visio documents of all versions.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/libwpd/" name "/"
-                          name "-" version "/" name "-" version ".tar.xz"))
+      (uri (string-append "mirror://sourceforge/libwpd/libodfgen/"
+                          "libodfgen-" version "/libodfgen-" version ".tar.xz"))
       (sha256 (base32
                "0cdq48wlpp8m0qmndybv64r0m4vh0qsqx69cn6ms533cjlgljgij"))))
     (build-system gnu-build-system)
@@ -644,14 +644,14 @@ text documents, vector drawings, presentations and spreadsheets.")
 (define-public libmwaw
   (package
     (name "libmwaw")
-    (version "0.3.14")
+    (version "0.3.15")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/" name "/" name "/" name "-"
-                          version "/" name "-" version ".tar.xz"))
+      (uri (string-append "mirror://sourceforge/libmwaw/libmwaw/libmwaw-"
+                          version "/libmwaw-" version ".tar.xz"))
       (sha256 (base32
-               "1s9wyf8pyh3fbazq2d2b6fgi7s7bid60viw2xbdkmn2ywlfbza5c"))))
+               "1cdhm9yhanyv3w4vr73zhgyynmkhhkp3dyld7m11jd2yy04vnh04"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 7965466435..fe3f57c876 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -380,9 +380,9 @@ connections from and to iOS devices by connecting to a socket provided by a
     (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
-the device's filesystem, retrieve information about the device and it's
+the device's file system, retrieve information about the device and its
 internals, backup/restore the device, manage installed applications, retrieve
-addressbook/calendars/notes and bookmarks and (using libgpod) synchronize
+address books, calendars, notes, and bookmarks, and (using libgpod) synchronize
 music and video to the device.")
     (license license:lgpl2.1+)))
 
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 5a681d9c64..b39f45338f 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -77,7 +77,6 @@
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libunwind)
@@ -90,6 +89,7 @@
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages ninja)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pkg-config)
@@ -118,6 +118,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system linux-module)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -254,10 +255,17 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
          (file (string-append "linux-libre/" name)))
     (search-auxiliary-file file)))
 
+;; FIXME: merge into kernel-config
+(define* (kernel-config-veyron arch #:key variant)
+  "Return the absolute file name of the Linux-Libre build configuration file
+for ARCH and optionally VARIANT, or #f if there is no such configuration."
+  (let* ((name (string-append (if variant (string-append variant "-") "")
+                              (if (string=? "i386" arch) "i686" arch) "-veyron.conf"))
+         (file (string-append "linux-libre/" name)))
+    (search-auxiliary-file file)))
+
 (define %default-extra-linux-options
-  `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
-    ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t)
-    ;; Modules required for initrd:
+  `(;; Modules required for initrd:
     ("CONFIG_NET_9P" . m)
     ("CONFIG_NET_9P_VIRTIO" . m)
     ("CONFIG_VIRTIO_BLK" . m)
@@ -383,7 +391,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                     (kmod   (assoc-ref (or native-inputs inputs) "kmod")))
                ;; Install kernel image, kernel configuration and link map.
                (for-each (lambda (file) (install-file file out))
-                         (find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map)$"))
+                         (find-files "." "^(\\.config|bzImage|zImage|Image|vmlinuz|System\\.map|Module\\.symvers)$"))
                ;; Install device tree files
                (unless (null? (find-files "." "\\.dtb$"))
                  (mkdir-p dtbdir)
@@ -406,8 +414,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.3")
-(define %linux-libre-hash "1ivdqr3y8r2hmv3a1g0a641cr2ckl3x4arapw0j6nwd0sbcyncam")
+(define %linux-libre-version "5.0.10")
+(define %linux-libre-hash "1lcwpxz5ival8nmnh19x4b1bn19bifhi3mlarx85d783jg47jc3h")
 
 (define %linux-libre-5.0-patches
   (list %boot-logo-patch
@@ -420,8 +428,30 @@ 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.30")
-(define %linux-libre-4.19-hash "1i15cs7zb53hagllgga8jaz0j1p9b22j93iczwc2w587zzhzlvng")
+(define-public vhba-module
+  (package
+    (name "vhba-module")
+    (version "20170610")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.sourceforge.net/cdemu/vhba-module-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1v6r0bgx0a65vlh36b1l2965xybngbpga6rp54k4z74xk0zwjw3r"))))
+    (build-system linux-module-build-system)
+    (arguments
+     ;; TODO: No tests?
+     `(#:tests? #f))
+    (home-page "https://cdemu.sourceforge.io/")
+    (synopsis "Kernel module that emulates SCSI devices")
+    (description "VHBA module provides a Virtual (SCSI) HBA, which is the link
+between the CDemu userspace daemon and linux kernel.")
+    (license license:gpl2+)))
+
+(define %linux-libre-4.19-version "4.19.37")
+(define %linux-libre-4.19-hash "0cyw7sgvw0767pvnl2sg6j91az9x80m5pbpqmd1srzl06w2sff2j")
 
 (define %linux-libre-4.19-patches
   (list %boot-logo-patch
@@ -434,8 +464,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.107")
-(define %linux-libre-4.14-hash "19i17b8sjjvi99vya1vncjalysdy027hp35rrla68gjs28dyas7r")
+(define %linux-libre-4.14-version "4.14.114")
+(define %linux-libre-4.14-hash "0hc6vk8wh6dlr8lbfd269n3drgbw2swfhlgqs9kl13104jrxqqv4")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -444,16 +474,22 @@ 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.164"
-                    "06bbynvijqlk92bpppmnjijyfwr0sk01krqdw4hpgbrvlg3wdlbk"
+  (make-linux-libre "4.9.171"
+                    "10975y9q2yycc85synwmrqqfhq89f3fn66jxq7p2myv1n9m22fx5"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.176"
-                    "0c300zqmsadahs2fpzxh6cn7q3h7jxq69msd17rh8v3wnvql8vzx"
+  (make-linux-libre "4.4.179"
+                    "025jl50sgi3bxj8hxlihqyfshmfphrg6z3cfi043qwkc8sbdy3af"
                     '("x86_64-linux" "i686-linux")
-                    #:configuration-file kernel-config))
+                    #:configuration-file kernel-config
+                    #:extra-options
+                    (append
+                     `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html
+                       ;; This option was removed upstream in version 4.7.
+                       ("CONFIG_DEVPTS_MULTIPLE_INSTANCES" . #t))
+                     %default-extra-linux-options)))
 
 (define-public linux-libre-arm-generic
   (make-linux-libre %linux-libre-version
@@ -463,6 +499,14 @@ It has been modified to remove all non-free binary blobs.")
                     #:defconfig "multi_v7_defconfig"
                     #:extra-version "arm-generic"))
 
+(define-public linux-libre-arm-veyron
+  (make-linux-libre %linux-libre-version
+                    %linux-libre-hash
+                    '("armhf-linux")
+                    #:patches %linux-libre-5.0-patches
+                    #:configuration-file kernel-config-veyron
+                    #:extra-version "arm-veyron"))
+
 (define-public linux-libre-arm-generic-4.19
   (make-linux-libre %linux-libre-4.19-version
                     %linux-libre-4.19-hash
@@ -1426,14 +1470,14 @@ Linux-based operating systems.")
 (define-public bridge-utils
   (package
     (name "bridge-utils")
-    (version "1.5")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/bridge/bridge/"
-                                 "bridge-utils-" version ".tar.gz"))
-             (sha256
-              (base32
-               "12367cwqmi0yqphi6j8rkx97q8hw52yq2fx4k0xfclkcizxybya2"))))
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.kernel.org/pub/linux/utils/net/"
+                           "bridge-utils/bridge-utils-" version ".tar.xz"))
+       (sha256
+        (base32 "1j16kr44csyr4yqxly26l1yw2bh4nkiasgwvask2i2gvsnsyyryc"))))
     (build-system gnu-build-system)
 
     ;; The tarball lacks all the generated files.
@@ -1994,9 +2038,46 @@ system.")
     (description
      "This package contains keytable files and keyboard utilities compatible
 for systems using the Linux kernel.  This includes commands such as
-'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.")
+@code{loadkeys}, @code{setfont}, @code{kbdinfo}, and @code{chvt}.")
     (license license:gpl2+)))
 
+(define-public loadkeys-static
+  (package
+    (inherit kbd)
+    (name "loadkeys-static")
+    (arguments
+     (substitute-keyword-arguments (package-arguments kbd)
+       ((#:configure-flags flags ''())
+        `(append '("LDFLAGS=-static" "--disable-shared" "--disable-nls"
+                   "--disable-vlock"              ;so we don't need libpam
+                   "--disable-libkeymap")
+                 ,flags))
+       ((#:make-flags flags ''())
+        `(cons "LDFLAGS=-all-static" ,flags))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 ;; The binary keeps references to gzip, among other things,
+                 ;; which we don't need in the initrd, so strip references.
+                 (remove-store-references "src/loadkeys")
+
+                 (install-file "src/loadkeys"
+                               (string-append out "/bin"))
+                 #t)))
+           (delete 'post-install)))
+       ((#:strip-flags _ '())
+        ''("--strip-all"))
+       ((#:allowed-references _ '())
+        '())))
+
+    (synopsis "Statically-linked @command{loadkeys} program")
+
+    ;; This package is meant to be used internally in the initrd so don't
+    ;; expose it.
+    (properties '((hidden? . #t)))))
+
 (define-public inotify-tools
   (package
     (name "inotify-tools")
@@ -2263,7 +2344,7 @@ mapper.  Kernel components are part of Linux-libre.")
        #:tests? #f))
     (synopsis "Tools for manipulating Linux Wireless Extensions")
     (description "Wireless Tools are used to manipulate the now-deprecated
-Linux Wireless Extensions; consider using 'iw' instead.  The Wireless
+Linux Wireless Extensions; consider using @code{iw} instead.  The Wireless
 Extension was an interface allowing you to set Wireless LAN specific
 parameters and get the specific stats.  It is deprecated in favor the nl80211
 interface.")
@@ -2404,18 +2485,18 @@ country-specific regulations for the wireless spectrum.")
 (define-public lm-sensors
   (package
     (name "lm-sensors")
-    (version "3.4.0")
-    (source (origin
-              (method url-fetch)
-              (uri (list (string-append
-                           "https://github.com/groeck/lm-sensors/archive/V"
-                           (string-join (string-split version #\.) "-")
-                           ".tar.gz")))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0knb09s9lvx0wzfsaizx3xq58q6kllqf7nkbwvir0wkgn31c2d73"))
-              (patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
+    (version "3.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/groeck/lm-sensors.git")
+             (commit (string-append "V" (string-join
+                                         (string-split version #\.) "-")))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1mdrnb9r01z1xfdm6dpkywvf9yy9a4yzb59paih9sijwmigv19fj"))
+       (patches (search-patches "lm-sensors-hwmon-attrs.patch"))))
     (build-system gnu-build-system)
     (inputs `(("rrdtool" ,rrdtool)
               ("perl" ,perl)
@@ -2472,7 +2553,7 @@ country-specific regulations for the wireless spectrum.")
                 (string-append (assoc-ref inputs "coreutils")
                                "/bin/readlink -f")))
              #t)))))
-    (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
+    (home-page "https://hwmon.wiki.kernel.org/lm_sensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
      "Lm-sensors is a hardware health monitoring package for Linux.  It allows
@@ -2621,7 +2702,7 @@ in a digital read-out.")
 with support in the Linux kernel.  perf can instrument CPU performance
 counters, tracepoints, kprobes, and uprobes (dynamic tracing).  It is capable
 of lightweight profiling.  This package contains the user-land tools and in
-particular the 'perf' command.")
+particular the @code{perf} command.")
     (license (package-license linux-libre))))
 
 (define-public pflask
@@ -3278,7 +3359,7 @@ write access to exFAT devices.")
     (home-page "https://sourceforge.net/projects/fuseiso/")
     (synopsis "Mount ISO file system images")
     (description
-     "FuseISO is a FUSE module to mount ISO filesystem images (.iso, .nrg,
+     "FuseISO is a FUSE module to mount ISO file system images (.iso, .nrg,
 .bin, .mdf and .img files).  It supports plain ISO9660 Level 1 and 2, Rock
 Ridge, Joliet, and zisofs.")
     (license license:gpl2)))
@@ -3585,6 +3666,7 @@ from userspace.")
               (method url-fetch)
               (uri (string-append "https://tuxera.com/opensource/"
                                   "ntfs-3g_ntfsprogs-" version ".tgz"))
+              (patches (search-patches "ntfs-3g-CVE-2019-9755.patch"))
               (sha256
                (base32
                 "1mb228p80hv97pgk3myyvgp975r9mxq56c6bdn1n24kngcfh4niy"))
@@ -3610,7 +3692,7 @@ from userspace.")
          ;; If users install ntfs-3g, they probably want to make it the
          ;; default driver as well, so we opt for sensible defaults and link
          ;; mount.ntfs to mount.ntfs-3g.  (libmount tries to run mount.ntfs to
-         ;; mount NTFS filesystems.)
+         ;; mount NTFS file systems.)
          (add-after 'install 'install-link
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -3977,8 +4059,8 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
     (home-page "https://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
     (synopsis "Tools for loading and managing Linux kernel modules")
     (description
-     "Tools for loading and managing Linux kernel modules, such as `modprobe',
-`insmod', `lsmod', and more.")
+     "Tools for loading and managing Linux kernel modules, such as
+@code{modprobe}, @code{insmod}, @code{lsmod}, and more.")
     (license license:gpl2+)))
 
 (define-public mcelog
@@ -4057,7 +4139,7 @@ of flash storage.")
 (define-public libseccomp
   (package
     (name "libseccomp")
-    (version "2.4.0")
+    (version "2.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/seccomp/libseccomp/"
@@ -4065,7 +4147,7 @@ of flash storage.")
                                   "/libseccomp-" version ".tar.gz"))
               (sha256
                (base32
-                "0paj1szszpf8plykrd66jqg1x3kmqs395rbjskahld2bnplcfx1f"))))
+                "1s06h2cgk0xxwmhwj72z33bllafc1xqnxzk2yyra2rmg959778qw"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -4277,6 +4359,45 @@ set the screen to be pitch black at a vaĺue of 0 (or higher).
 Light is the successor of lightscript.")
     (license license:gpl3+)))
 
+(define-public brightnessctl
+  (let ((commit "6a791e7694aeeb5d027f71c6098e5182cf03371c"))
+    (package
+      (name "brightnessctl")
+      (version (git-version "0.4" "0" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/Hummer12007/brightnessctl/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1n1gb8ldgqv3vs565yhk1w4jfvrviczp94r8wqlkv5q6ab43c8w9"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:tests? #f                    ; no tests
+         #:make-flags (list "CC=gcc"
+                            (string-append "PREFIX=" %output)
+                            (string-append "UDEVDIR=" %output "/lib/udev/rules.d/"))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'adjust-udev-rules
+             (lambda _
+               (substitute* "90-brightnessctl.rules"
+                 (("/bin/") "/run/current-system/profile/bin/"))
+               #t)))))
+      (home-page "https://github.com/Hummer12007/brightnessctl")
+      (synopsis "Backlight and LED brightness control")
+      (description
+       "This program allows you read and control device brightness.  Devices
+include backlight and LEDs.  It can also preserve current brightness before
+applying the operation, such as on lid close.
+
+The appropriate permissions must be set on the backlight or LED control
+interface in sysfs, which can be accomplished with the included udev rules.")
+      (license license:expat))))
+
 (define-public tlp
   (package
     (name "tlp")
@@ -5129,9 +5250,9 @@ file systems.")
      `(("autoconf" ,autoconf)
        ("automake" ,automake)))
     (home-page "https://github.com/jeremie-koenig/genext2fs")
-    (synopsis "Generate ext2 filesystem as a normal user")
-    (description "This package provides a program to general an ext2
-filesystem as a normal (non-root) user.  It does not require you to mount
+    (synopsis "Generate ext2 file system as a normal user")
+    (description "This package provides a program to generate an ext2
+file system as a normal (non-root) user.  It does not require you to mount
 the image file to copy files on it, nor does it require that you become
 the superuser to make device nodes.")
     (license license:gpl2)))
diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm
index 627c79f979..5e77f1ddc2 100644
--- a/gnu/packages/lirc.scm
+++ b/gnu/packages/lirc.scm
@@ -96,10 +96,10 @@
     (synopsis "Linux Infrared Remote Control")
     (description
      "LIRC allows computers to send and receive IR signals of many commonly
-used remote controls.  The most important part of LIRC is the 'lircd' daemon
-that decodes IR signals received by the device drivers.  The second daemon
-program 'lircmd' allows to translate IR signals to mouse movements.  The
-user space applications allow you to control your computer with a remote
+used remote controls.  The most important part of LIRC is the @code{lircd}
+daemon that decodes IR signals received by the device drivers.  The second
+daemon program @code{lircmd} allows to translate IR signals to mouse movements.
+The user space applications allow you to control your computer with a remote
 control: you can send X events to applications, start programs and much more
 on just one button press.")
     (license license:gpl2+)))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 87dcf36372..4eeb801c70 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -12,6 +12,8 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +67,7 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages databases)
@@ -318,14 +321,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "1.4.16")
+    (version "1.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "1myg4wkxnbfn5nz38xy62r1jhjy07x3h0b04vg858n41chdsv4wd"))
+        (base32 "08z62qba0kmm15k93s2rq7ipi769895g8iwigcp20qjh6amwnwph"))
        (modules '((guix build utils)))
        (snippet
         ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
@@ -689,13 +692,13 @@ portable between implementations.")
     (version "1.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/sionescu/fiveam/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sionescu/fiveam.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "fiveam" version))
        (sha256
-        (base32 "0f48pcbhqs3wwwzjl5nk57d4hcbib4l9xblxc66b8c2fhvhmhxnv"))
-       (file-name (string-append "fiveam-" version ".tar.gz"))))
+        (base32 "1yx9716mk8pq9076q6cjx4c9lyax3amiccy37sh0913k2x8gsm4l"))))
     (inputs `(("alexandria" ,sbcl-alexandria)))
     (build-system asdf-build-system/sbcl)
     (synopsis "Common Lisp testing framework")
@@ -712,18 +715,18 @@ interactive development model in mind.")
   (sbcl-package->ecl-package sbcl-fiveam))
 
 (define-public sbcl-bordeaux-threads
-  (let ((commit "354abb0ae9f1d9324001e1a8abab3128d7420e0e")
+  (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f")
         (revision "1"))
     (package
       (name "sbcl-bordeaux-threads")
-      (version (git-version "0.8.5" revision commit))
+      (version (git-version "0.8.6" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                       (url "https://github.com/sionescu/bordeaux-threads.git")
                       (commit commit)))
                 (sha256
-                 (base32 "1hcfp21l6av1xj6z7r77sp6h4mwf9vvx4s745803sysq2qy2mwnq"))
+                 (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv"))
                 (file-name
                  (git-file-name "bordeaux-threads" version))))
       (inputs `(("alexandria" ,sbcl-alexandria)))
@@ -816,14 +819,21 @@ logical continuation of Stefil.  It focuses on interactive debugging.")
     (version "1.0.16")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/edicl/flexi-streams/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/flexi-streams.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "flexi-streams" version))
        (sha256
-        (base32 "1fb0jrwxr5c3i2lhy7kn30m1n0vggfzwjm1dacx6y5wf9wfsbamw"))
-       (file-name (string-append "flexi-streams-" version ".tar.gz"))))
+        (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc"))))
     (build-system asdf-build-system/sbcl)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t)))))
     (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
     (synopsis "Implementation of virtual bivalent streams for Common Lisp")
     (description "Flexi-streams is an implementation of \"virtual\" bivalent
@@ -846,13 +856,13 @@ streams which are similar to string streams.")
     (version "2.0.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/edicl/cl-ppcre/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/cl-ppcre.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cl-ppcre" version))
        (sha256
-        (base32 "1i7daxf0wnydb0pgwiym7qh2wy70n14lxd6dyv28sy0naa8p31gd"))
-       (file-name (string-append "cl-ppcre-" version ".tar.gz"))))
+        (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
     (synopsis "Portable regular expression library for Common Lisp")
@@ -971,18 +981,19 @@ from other CLXes around the net.")
   (package
     (name "stumpwm")
     (version "18.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/stumpwm/stumpwm/archive/"
-                    version ".tar.gz"))
-              (sha256
-               (base32 "177gxfk4c127i9crghx6fmkipznhgylvzgnjb2pna38g21gg6s39"))
-              (file-name (string-append "stumpwm-" version ".tar.gz"))
-              (patches
-               ;; This patch is included in the post-18.11 git master tree
-               ;; and can be removed when we move to the next release.
-               (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/stumpwm/stumpwm.git")
+             (commit version)))
+       (file-name (git-file-name "stumpwm" version))
+       (sha256
+        (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7"))
+       (patches
+        ;; This patch is included in the post-18.11 git master tree
+        ;; and can be removed when we move to the next release.
+        (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs `(("fiasco" ,sbcl-fiasco)
                      ("texinfo" ,texinfo)))
@@ -1467,7 +1478,7 @@ compressor.  It works on data produced by @code{parse-js} to generate a
 @item reduce variable names (usually to single letters)
 @item join consecutive @code{var} statements
 @item resolve simple binary expressions
-@item group most consecutive statements using the ``sequence'' operator (comma)
+@item group most consecutive statements using the @code{sequence} operator (comma)
 @item remove unnecessary blocks
 @item convert @code{IF} expressions in various ways that result in smaller code
 @item remove some unreachable code
@@ -1602,13 +1613,13 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
     (version "0.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/trivial-features/trivial-features/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trivial-features/trivial-features.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "trivial-features" version))
        (sha256
-        (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c"))
-       (file-name (string-append "trivial-features-" version ".tar.gz"))))
+        (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
     (build-system asdf-build-system/sbcl)
     (arguments '(#:tests? #f))
     (home-page "http://cliki.net/trivial-features")
@@ -1689,13 +1700,13 @@ with a focus on interactive development.")
     (version "0.5.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/cl-babel/babel/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cl-babel/babel.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "babel" version))
        (sha256
-        (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
@@ -2554,8 +2565,7 @@ which causes everything printed in the body to be displayed with the provided
 color.  It further provides functions which will print the argument with the
 named color.")
       (home-page "https://github.com/pnathan/cl-ansi-text")
-      ;; REVIEW: The actual license is LLGPL.  Should we add it to Guix?
-      (license license:lgpl3+))))
+      (license license:llgpl))))
 
 (define-public cl-ansi-text
   (sbcl-package->cl-source-package sbcl-cl-ansi-text))
@@ -2970,12 +2980,13 @@ non-consing thread safe queues and fibonacci priority queues.")
     (version "0.19.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/cffi/cffi/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cffi/cffi.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "cffi-bootstrap" version))
        (sha256
-        (base32 "07bc3c1fbfx17wgrvx6bh9byilfzfwv5n597cfdllm0vzwvbmiyk"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy"))))
     (build-system asdf-build-system/sbcl)
     (inputs
      `(("libffi" ,libffi)
@@ -3234,13 +3245,13 @@ precisely control behavior of the parser via Common Lisp restarts.")
     (version "0.21")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/trivial-garbage/trivial-garbage/archive/v"
-             version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trivial-garbage/trivial-garbage.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "trivial-garbage" version))
        (sha256
-        (base32 "0b244nlszkrqawsnp568clnx32xmvjmbbagbz7625w9n0yq7396y"))
-       (file-name (string-append "trivial-garbage-" version ".tar.gz"))))
+        (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("rt" ,sbcl-rt)))
@@ -3840,3 +3851,1440 @@ client and server.")
 
 (define-public ecl-trivial-clipboard
   (sbcl-package->ecl-package sbcl-trivial-clipboard))
+
+(define-public sbcl-trivial-backtrace
+  (let ((commit "ca81c011b86424a381a7563cea3b924f24e6fbeb")
+        (revision "1"))
+    (package
+     (name "sbcl-trivial-backtrace")
+     (version (git-version "0.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gwkkwg/trivial-backtrace.git")
+             (commit commit)))
+       (file-name (git-file-name "trivial-backtrace" version))
+       (sha256
+        (base32 "10p41p43skj6cimdg8skjy7372s8v2xpkg8djjy0l8rm45i654k1"))))
+     (build-system asdf-build-system/sbcl)
+     (inputs
+      `(("sbcl-lift" ,sbcl-lift)))
+     (home-page "https://common-lisp.net/project/trivial-backtrace/")
+     (synopsis "Portable simple API to work with backtraces in Common Lisp")
+     (description
+      "On of the many things that didn't quite get into the Common Lisp
+standard was how to get a Lisp to output its call stack when something has
+gone wrong.  As such, each Lisp has developed its own notion of what to
+display, how to display it, and what sort of arguments can be used to
+customize it.  @code{trivial-backtrace} is a simple solution to generating a
+backtrace portably.")
+     (license license:expat))))
+
+(define-public cl-trivial-backtrace
+  (sbcl-package->cl-source-package sbcl-trivial-backtrace))
+
+(define-public sbcl-rfc2388
+  (let ((commit "591bcf7e77f2c222c43953a80f8c297751dc0c4e")
+        (revision "1"))
+    (package
+     (name "sbcl-rfc2388")
+     (version (git-version "0.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jdz/rfc2388.git")
+             (commit commit)))
+       (file-name (git-file-name "rfc2388" version))
+       (sha256
+        (base32 "0phh5n3clhl9ji8jaxrajidn22d3f0aq87mlbfkkxlnx2pnw694k"))))
+     (build-system asdf-build-system/sbcl)
+     (home-page "https://github.com/jdz/rfc2388/")
+     (synopsis "An implementation of RFC 2388 in Common Lisp")
+     (description
+      "This package contains an implementation of RFC 2388, which is used to
+process form data posted with HTTP POST method using enctype
+\"multipart/form-data\".")
+     (license license:bsd-2))))
+
+(define-public cl-rfc2388
+  (sbcl-package->cl-source-package sbcl-rfc2388))
+
+(define-public sbcl-md5
+  (package
+    (name "sbcl-md5")
+    (version "2.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/pmai/md5/archive/release-" version ".tar.gz"))
+       (sha256
+        (base32 "19yl9n0pjdz5gw4qi711lka97xcd9f81ylg434hk7jwn9f2s6w11"))))
+    (build-system asdf-build-system/sbcl)
+    (home-page "https://github.com/pmai/md5")
+    (synopsis
+     "Common Lisp implementation of the MD5 Message-Digest Algorithm (RFC 1321)")
+    (description
+     "This package implements The MD5 Message-Digest Algorithm, as defined in
+RFC 1321 by R. Rivest, published April 1992.")
+    (license license:public-domain)))
+
+(define-public cl-md5
+  (sbcl-package->cl-source-package sbcl-md5))
+
+(define-public sbcl-cl+ssl
+  (let ((commit "b81c1135cf5700e870ce2573d5035d249e491788")
+        (revision "1"))
+    (package
+      (name "sbcl-cl+ssl")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/cl-plus-ssl/cl-plus-ssl.git")
+               (commit commit)))
+         (file-name (git-file-name "cl+ssl" version))
+         (sha256
+          (base32 "1845i1pafmqb6cdlr53yaqy67kjrhkvbx6c37ca15cw70vhdr3z9"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "src/reload.lisp"
+                 (("libssl.so" all)
+                  (string-append
+                   (assoc-ref inputs "openssl") "/lib/" all))))))))
+      (inputs
+       `(("openssl" ,openssl)
+         ("sbcl-cffi" ,sbcl-cffi)
+         ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
+         ("sbcl-flexi-streams" ,sbcl-flexi-streams)
+         ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
+      (home-page "http://common-lisp.net/project/cl-plus-ssl/")
+      (synopsis "Common Lisp bindings to OpenSSL")
+      (description
+       "This library is a fork of SSL-CMUCL.  The original SSL-CMUCL source
+code was written by Eric Marsden and includes contributions by Jochen Schmidt.
+Development into CL+SSL was done by David Lichteblau.")
+      (license license:expat))))
+
+(define-public cl-cl+ssl
+  (sbcl-package->cl-source-package sbcl-cl+ssl))
+
+(define-public sbcl-kmrcl
+  (let ((version "1.109.0")
+        (commit "5260068b2eb735af6796740c2db4955afac21636")
+        (revision "1"))
+    (package
+      (name "sbcl-kmrcl")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/kmrcl.git/")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1va7xjgzfv674bpsli674i7zj3f7wg5kxic41kz18r6hh4n52dfv"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed in a
+       ;; nested call to ASDF/OPERATE:OPERATE unless identically to toplevel
+       '(#:tests? #f))
+      (inputs
+       `(("sbcl-rt" ,sbcl-rt)))
+      (home-page "http://files.kpe.io/kmrcl/")
+      (synopsis "General utilities for Common Lisp programs")
+      (description
+       "KMRCL is a collection of utilities used by a number of Kevin
+Rosenberg's CL packages.")
+      (license license:llgpl))))
+
+(define-public cl-kmrcl
+  (sbcl-package->cl-source-package sbcl-kmrcl))
+
+(define-public sbcl-cl-base64
+  (let ((version "3.3.3"))
+    (package
+      (name "sbcl-cl-base64")
+      (version version)
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/cl-base64.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name "cl-base64" version))
+         (sha256
+          (base32 "1dw6j7n6gsd2qa0p0rbsjxj00acxx3i9ca1qkgl0liy8lpnwkypl"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed
+       ;; in a nested call to ASDF/OPERATE:OPERATE unless identically
+       ;; to toplevel
+       '(#:tests? #f))
+      (inputs
+       `(("sbcl-ptester" ,sbcl-ptester)
+         ("sbcl-kmrcl" ,sbcl-kmrcl)))
+      (home-page "http://files.kpe.io/cl-base64/")
+      (synopsis
+       "Common Lisp package to encode and decode base64 with URI support")
+      (description
+       "This package provides highly optimized base64 encoding and decoding.
+Besides conversion to and from strings, integer conversions are supported.
+Encoding with Uniform Resource Identifiers is supported by using a modified
+encoding table that uses only URI-compatible characters.")
+      (license license:bsd-3))))
+
+(define-public cl-base64
+  (sbcl-package->cl-source-package sbcl-cl-base64))
+
+(define-public sbcl-chunga
+  (package
+    (name "sbcl-chunga")
+    (version "1.1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/edicl/chunga/archive/v" version ".tar.gz"))
+       (sha256
+        (base32 "0ra17kyc9l7qbaw003ly111r1cbn4zixbfq1ydr9cxw10v30q1n7"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+    (home-page "https://edicl.github.io/chunga/")
+    (synopsis "Portable chunked streams for Common Lisp")
+    (description
+     "Chunga implements streams capable of chunked encoding on demand as
+defined in RFC 2616.")
+    (license license:bsd-2)))
+
+(define-public cl-chunga
+  (sbcl-package->cl-source-package sbcl-chunga))
+
+(define-public sbcl-cl-who
+  (let ((version "1.1.4")
+        (commit "2c08caa4bafba720409af9171feeba3f32e86d32")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-who")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edicl/cl-who.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0yjb6sr3yazm288m318kqvj9xk8rm9n1lpimgf65ymqv0i5agxsb"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
+      (home-page "https://edicl.github.io/cl-who/")
+      (synopsis "Yet another Lisp markup language")
+      (description
+       "There are plenty of Lisp Markup Languages out there - every Lisp
+programmer seems to write at least one during his career - and CL-WHO (where
+WHO means \"with-html-output\" for want of a better acronym) is probably just
+as good or bad as the next one.")
+      (license license:bsd-2))))
+
+(define-public cl-cl-who
+  (sbcl-package->cl-source-package sbcl-cl-who))
+
+(define-public sbcl-chipz
+  (let ((version "0.8")
+        (commit "75dfbc660a5a28161c57f115adf74c8a926bfc4d")
+        (revision "1"))
+    (package
+      (name "sbcl-chipz")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/froydnj/chipz.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
+      (home-page "http://method-combination.net/lisp/chipz/")
+      (synopsis
+       "Common Lisp library for decompressing deflate, zlib, gzip, and bzip2
+data")
+      (description
+       "DEFLATE data, defined in RFC1951, forms the core of popular
+compression formats such as zlib (RFC 1950) and gzip (RFC 1952).  As such,
+Chipz also provides for decompressing data in those formats as well.  BZIP2 is
+the format used by the popular compression tool bzip2.")
+      ;; The author describes it as "MIT-like"
+      (license license:expat))))
+
+(define-public cl-chipz
+  (sbcl-package->cl-source-package sbcl-chipz))
+
+(define-public sbcl-drakma
+  (let ((version "2.0.4")
+        (commit "7647c0ae842ff2058624e53979c7f297760c97a7")
+        (revision "1"))
+    (package
+      (name "sbcl-drakma")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edicl/drakma.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1c4i9wakhj5pxfyyykxshdmv3180sbkrx6fcyynikmc0jd0rh84r"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("sbcl-puri" ,sbcl-puri)
+         ("sbcl-cl-base64" ,sbcl-cl-base64)
+         ("sbcl-chunga" ,sbcl-chunga)
+         ("sbcl-flexi-streams" ,sbcl-flexi-streams)
+         ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
+         ("sbcl-chipz" ,sbcl-chipz)
+         ("sbcl-usocket" ,sbcl-usocket)
+         ("sbcl-cl+ssl" ,sbcl-cl+ssl)))
+      (native-inputs
+       `(("sbcl-fiveam" ,sbcl-fiveam)))
+      (home-page "https://edicl.github.io/drakma/")
+      (synopsis "HTTP client written in Common Lisp")
+      (description
+       "Drakma is a full-featured HTTP client implemented in Common Lisp.  It
+knows how to handle HTTP/1.1 chunking, persistent connections, re-usable
+sockets, SSL, continuable uploads, file uploads, cookies, and more.")
+      (license license:bsd-2))))
+
+(define-public cl-drakma
+  (sbcl-package->cl-source-package sbcl-drakma))
+
+(define-public sbcl-hunchentoot
+  (package
+    (name "sbcl-hunchentoot")
+    (version "1.2.38")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edicl/hunchentoot.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name "hunchentoot" version))
+       (sha256
+        (base32 "1anpcad7w045m4rsjs1f3xdhjwx5cppq1h0vlb3q7dz81fi3i6yq"))))
+    (build-system asdf-build-system/sbcl)
+    (native-inputs
+     `(("sbcl-cl-who" ,sbcl-cl-who)
+       ("sbcl-drakma" ,sbcl-drakma)))
+    (inputs
+     `(("sbcl-chunga" ,sbcl-chunga)
+       ("sbcl-cl-base64" ,sbcl-cl-base64)
+       ("sbcl-cl-fad" ,sbcl-cl-fad)
+       ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
+       ("sbcl-flexi-streams" ,sbcl-flexi-streams)
+       ("sbcl-cl+ssl" ,sbcl-cl+ssl)
+       ("sbcl-md5" ,sbcl-md5)
+       ("sbcl-rfc2388" ,sbcl-rfc2388)
+       ("sbcl-trivial-backtrace" ,sbcl-trivial-backtrace)
+       ("sbcl-usocket" ,sbcl-usocket)))
+    (home-page "https://edicl.github.io/hunchentoot/")
+    (synopsis "Web server written in Common Lisp")
+    (description
+     "Hunchentoot is a web server written in Common Lisp and at the same
+time a toolkit for building dynamic websites.  As a stand-alone web server,
+Hunchentoot is capable of HTTP/1.1 chunking (both directions), persistent
+connections (keep-alive), and SSL.")
+    (license license:bsd-2)))
+
+(define-public cl-hunchentoot
+  (sbcl-package->cl-source-package sbcl-hunchentoot))
+
+(define-public sbcl-trivial-types
+  (package
+    (name "sbcl-trivial-types")
+    (version "0.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/m2ym/trivial-types.git")
+             (commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1s4cp9bdlbn8447q7w7f1wkgwrbvfzp20mgs307l5pxvdslin341"))))
+    (build-system asdf-build-system/sbcl)
+    (home-page "https://github.com/m2ym/trivial-types")
+    (synopsis "Trivial type definitions for Common Lisp")
+    (description
+     "TRIVIAL-TYPES provides missing but important type definitions such as
+PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
+    (license license:llgpl)))
+
+(define-public cl-trivial-types
+  (sbcl-package->cl-source-package sbcl-trivial-types))
+
+(define-public sbcl-cl-syntax
+  (package
+    (name "sbcl-cl-syntax")
+    (version "0.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/m2ym/cl-syntax.git")
+             (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
+       (file-name (git-file-name "cl-syntax" version))
+       (sha256
+        (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
+    (build-system asdf-build-system/sbcl)
+    (arguments
+     '(#:asd-file "cl-syntax.asd"
+       #:asd-system-name "cl-syntax"))
+    (inputs `(("sbcl-trivial-types" ,sbcl-trivial-types)
+              ("sbcl-named-readtables" ,sbcl-named-readtables)))
+    (home-page "https://github.com/m2ym/cl-syntax")
+    (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
+    (description
+     "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and SLIME.")
+    (license license:llgpl)))
+
+(define-public cl-syntax
+  (sbcl-package->cl-source-package sbcl-cl-syntax))
+
+(define-public sbcl-cl-annot
+  (let ((commit "c99e69c15d935eabc671b483349a406e0da9518d")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-annot")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/m2ym/cl-annot.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1wq1gs9jjd5m6iwrv06c2d7i5dvqsfjcljgbspfbc93cg5xahk4n"))))
+      (build-system asdf-build-system/sbcl)
+    (arguments
+     '(#:asd-file "cl-annot.asd"
+       #:asd-system-name "cl-annot"))
+      (inputs
+       `(("sbcl-alexandria" ,sbcl-alexandria)))
+      (home-page "https://github.com/m2ym/cl-annot")
+      (synopsis "Python-like Annotation Syntax for Common Lisp.")
+      (description
+       "@code{cl-annot} is an general annotation library for Common Lisp.")
+      (license license:llgpl))))
+
+(define-public cl-annot
+  (sbcl-package->cl-source-package sbcl-cl-annot))
+
+(define-public sbcl-cl-syntax-annot
+  (package
+    (name "sbcl-cl-syntax-annot")
+    (version "0.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/m2ym/cl-syntax.git")
+             (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
+    (build-system asdf-build-system/sbcl)
+    (arguments
+     '(#:asd-file "cl-syntax-annot.asd"
+       #:asd-system-name "cl-syntax-annot"))
+    (inputs
+     `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
+       ("sbcl-cl-annot" ,sbcl-cl-annot)))
+    (home-page "https://github.com/m2ym/cl-syntax")
+    (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
+    (description
+     "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and
+SLIME.")
+    (license license:llgpl)))
+
+(define-public cl-syntax-annot
+  (sbcl-package->cl-source-package sbcl-cl-syntax-annot))
+
+(define-public sbcl-cl-utilities
+  (let ((commit "dce2d2f6387091ea90357a130fa6d13a6776884b")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-utilities")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method url-fetch)
+         (uri
+          (string-append
+           "https://gitlab.common-lisp.net/cl-utilities/cl-utilities/-/"
+           "archive/" commit "/cl-utilities-" commit ".tar.gz"))
+         (sha256
+          (base32 "1r46v730yf96nk2vb24qmagv9x96xvd08abqwhf02ghgydv1a7z2"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:asd-file "cl-utilities.asd"
+         #:asd-system-name "cl-utilities"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "rotate-byte.lisp"
+                 (("in-package :cl-utilities)" all)
+                  "in-package :cl-utilities)\n\n#+sbcl\n(require :sb-rotate-byte)")))))))
+      (home-page "http://common-lisp.net/project/cl-utilities")
+      (synopsis "A collection of semi-standard utilities")
+      (description
+       "On Cliki.net <http://www.cliki.net/Common%20Lisp%20Utilities>, there
+is a collection of Common Lisp Utilities, things that everybody writes since
+they're not part of the official standard.  There are some very useful things
+there; the only problems are that they aren't implemented as well as you'd
+like (some aren't implemented at all) and they aren't conveniently packaged
+and maintained.  It takes quite a bit of work to carefully implement utilities
+for common use, commented and documented, with error checking placed
+everywhere some dumb user might make a mistake.")
+      (license license:public-domain))))
+
+(define-public cl-utilities
+  (sbcl-package->cl-source-package sbcl-cl-utilities))
+
+(define-public sbcl-map-set
+  (let ((commit "7b4b545b68b8")
+        (revision "1"))
+    (package
+      (name "sbcl-map-set")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append
+               "https://bitbucket.org/tarballs_are_good/map-set/get/"
+               commit ".tar.gz"))
+         (sha256
+          (base32 "1sx5j5qdsy5fklspfammwb16kjrhkggdavm922a9q86jm5l0b239"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://bitbucket.org/tarballs_are_good/map-set")
+      (synopsis "Set-like data structure")
+      (description
+       "Implementation of a set-like data structure with constant time
+addition, removal, and random selection.")
+      (license license:bsd-3))))
+
+(define-public cl-map-set
+  (sbcl-package->cl-source-package sbcl-map-set))
+
+(define-public sbcl-quri
+  (let ((commit "76b75103f21ead092c9f715512fa82441ef61185")
+        (revision "1"))
+    (package
+      (name "sbcl-quri")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fukamachi/quri.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1ccbxsgzdibmzq33mmbmmz9vwl6l03xh6nbpsh1hkdvdcl7q0a60"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Tests fail with: Component QURI-ASD::QURI-TEST not found,
+       ;; required by #<SYSTEM "quri">. Why?
+       '(#:tests? #f))
+      (native-inputs `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+                       ("sbcl-prove" ,sbcl-prove)))
+      (inputs `(("sbcl-babel" ,sbcl-babel)
+                ("sbcl-split-sequence" ,sbcl-split-sequence)
+                ("sbcl-cl-utilities" ,sbcl-cl-utilities)
+                ("sbcl-alexandria" ,sbcl-alexandria)))
+      (home-page "https://github.com/fukamachi/quri")
+      (synopsis "Yet another URI library for Common Lisp")
+      (description
+       "QURI (pronounced \"Q-ree\") is yet another URI library for Common
+Lisp. It is intended to be a replacement of PURI.")
+      (license license:bsd-3))))
+
+(define-public cl-quri
+  (sbcl-package->cl-source-package sbcl-quri))
+
+(define-public sbcl-myway
+  (let ((commit "286230082a11f879c18b93f17ca571c5f676bfb7")
+        (revision "1"))
+    (package
+     (name "sbcl-myway")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/myway.git")
+             (commit commit)))
+       (file-name (git-file-name "myway" version))
+       (sha256
+        (base32 "0briia9bk3lbr0frnx39d1qg6i38dm4j6z9w3yga3d40k6df4a90"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Tests fail with: Component MYWAY-ASD::MYWAY-TEST not found, required
+      ;; by #<SYSTEM "myway">. Why?
+      '(#:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (inputs
+      `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
+        ("sbcl-quri" ,sbcl-quri)
+        ("sbcl-map-set" ,sbcl-map-set)))
+     (home-page "https://github.com/fukamachi/myway")
+     (synopsis "Sinatra-compatible URL routing library for Common Lisp")
+     (description "My Way is a Sinatra-compatible URL routing library.")
+     (license license:llgpl))))
+
+(define-public cl-myway
+  (sbcl-package->cl-source-package sbcl-myway))
+
+(define-public sbcl-xsubseq
+  (let ((commit "5ce430b3da5cda3a73b9cf5cee4df2843034422b")
+        (revision "1"))
+    (package
+     (name "sbcl-xsubseq")
+     (version (git-version "0.0.1" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/xsubseq")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1xz79q0p2mclf3sqjiwf6izdpb6xrsr350bv4mlmdlm6rg5r99px"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Tests fail with: Component XSUBSEQ-ASD::XSUBSEQ-TEST not found,
+      ;; required by #<SYSTEM "xsubseq">. Why?
+      '(#:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (home-page "https://github.com/fukamachi/xsubseq")
+     (synopsis "Efficient way to use \"subseq\"s in Common Lisp")
+     (description
+      "XSubseq provides functions to be able to handle \"subseq\"s more
+effieiently.")
+     (license license:bsd-2))))
+
+(define-public cl-xsubseq
+  (sbcl-package->cl-source-package sbcl-xsubseq))
+
+(define-public sbcl-smart-buffer
+  (let ((commit "09b9a9a0b3abaa37abe9a730f5aac2643dca4e62")
+        (revision "1"))
+    (package
+      (name "sbcl-smart-buffer")
+      (version (git-version "0.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fukamachi/smart-buffer")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qz1zzxx0wm5ff7gpgsq550a59p0qj594zfmm2rglj97dahj54l7"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Tests fail with: Component SMART-BUFFER-ASD::SMART-BUFFER-TEST not
+       ;; found, required by #<SYSTEM "smart-buffer">. Why?
+       `(#:tests? #f))
+      (native-inputs
+       `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+         ("sbcl-prove" ,sbcl-prove)))
+      (inputs
+       `(("sbcl-xsubseq" ,sbcl-xsubseq)
+         ("sbcl-flexi-streams" ,sbcl-flexi-streams)))
+      (home-page "https://github.com/fukamachi/smart-buffer")
+      (synopsis "Smart octets buffer")
+      (description
+       "Smart-buffer provides an output buffer which changes the destination
+depending on content size.")
+      (license license:bsd-3))))
+
+(define-public cl-smart-buffer
+  (sbcl-package->cl-source-package sbcl-smart-buffer))
+
+(define-public sbcl-fast-http
+  (let ((commit "f9e7597191bae380503e20724fd493a24d024935")
+        (revision "1"))
+    (package
+      (name "sbcl-fast-http")
+      (version (git-version "0.2.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fukamachi/fast-http")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qdmwv2zm0sizxdb8nnclgwl0nfjcbjaimbakavikijw7lr9b4jp"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found,
+       ;; required by #<SYSTEM "fast-http">. Why?
+       `(#:tests? #f))
+      (native-inputs
+       `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+         ("sbcl-prove" ,sbcl-prove)))
+      (inputs
+       `(("sbcl-alexandria" ,sbcl-alexandria)
+         ("sbcl-proc-parse" ,sbcl-proc-parse)
+         ("sbcl-xsubseq" ,sbcl-xsubseq)
+         ("sbcl-smart-buffer" ,sbcl-smart-buffer)
+         ("sbcl-cl-utilities" ,sbcl-cl-utilities)))
+      (home-page "https://github.com/fukamachi/fast-http")
+      (synopsis "HTTP request/response parser for Common Lisp")
+      (description
+       "@code{fast-http} is a HTTP request/response protocol parser for Common
+Lisp.")
+      ;; Author specified the MIT license
+      (license license:expat))))
+
+(define-public cl-fast-http
+  (sbcl-package->cl-source-package sbcl-fast-http))
+
+(define-public sbcl-static-vectors
+  (let ((commit "0681eac1f49370cde03e64b077251e8abf47d702")
+        (revision "1"))
+    (package
+     (name "sbcl-static-vectors")
+     (version (git-version "1.8.3" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sionescu/static-vectors.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "138nlsq14hv8785ycjm6jw3i6ablhq8vcwys7q09y80arcgrg6r3"))))
+     (native-inputs
+      `(("sbcl-fiveam" ,sbcl-fiveam)))
+     (inputs
+      `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
+        ("sbcl-cffi" ,sbcl-cffi)))
+     (build-system asdf-build-system/sbcl)
+     (home-page "http://common-lisp.net/projects/iolib/")
+     (synopsis "Allocate SIMPLE-ARRAYs in static memory")
+     (description
+      "With @code{static-vectors}, you can create vectors allocated in static
+memory.")
+     (license license:expat))))
+
+(define-public cl-static-vectors
+  (sbcl-package->cl-source-package sbcl-static-vectors))
+
+(define-public sbcl-marshal
+  (let ((commit "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec")
+        (revision "1"))
+    (package
+     (name "sbcl-marshal")
+     (version (git-version "1.3.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wlbr/cl-marshal.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08qs6fhk38xpkkjkpcj92mxx0lgy4ygrbbzrmnivdx281syr0gwh"))))
+     (build-system asdf-build-system/sbcl)
+     (home-page "https://github.com/wlbr/cl-marshal")
+     (synopsis "Simple (de)serialization of Lisp datastructures")
+     (description
+      "Simple and fast marshalling of Lisp datastructures.  Convert any object
+into a string representation, put it on a stream an revive it from there.
+Only minimal changes required to make your CLOS objects serializable.")
+     (license license:expat))))
+
+(define-public cl-marshal
+  (sbcl-package->cl-source-package sbcl-marshal))
+
+(define-public sbcl-checkl
+  (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
+        (revision "1"))
+    (package
+      (name "sbcl-checkl")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rpav/CheckL.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Error while trying to load definition for system checkl-test from
+       ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
+       ;; is undefined.
+       '(#:tests? #f))
+      (native-inputs
+       `(("sbcl-fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("sbcl-marshal" ,sbcl-marshal)))
+      (home-page "https://github.com/rpav/CheckL/")
+      (synopsis "Dynamic testing for Common Lisp")
+      (description
+       "CheckL lets you write tests dynamically, it checks resulting values
+against the last run.")
+      ;; The author specifies both LLGPL and "BSD", but the "BSD" license
+      ;; isn't specified anywhere, so I don't know which kind.  LLGPL is the
+      ;; stronger of the two and so I think only listing this should suffice.
+      (license license:llgpl))))
+
+(define-public cl-checkl
+  (sbcl-package->cl-source-package sbcl-checkl))
+
+(define-public sbcl-fast-io
+  (let ((commit "dc3a71db7e9b756a88781ae9c342fe9d4bbab51c")
+        (revision "1"))
+    (package
+     (name "sbcl-fast-io")
+     (version (git-version "1.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rpav/fast-io.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jsp6xvi26ln6fdy5j5zi05xvan8jsqdhisv552dy6xg6ws8i1yq"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Error while trying to load definition for system fast-io-test from
+      ;; pathname [...]/fast-io-test.asd: The function CHECKL:DEFINE-TEST-OP
+      ;; is undefined.
+      '(#:tests? #f))
+     (native-inputs
+      `(("sbcl-fiveam" ,sbcl-fiveam)
+        ("sbcl-checkl" ,sbcl-checkl)))
+     (inputs
+      `(("sbcl-alexandria" ,sbcl-alexandria)
+        ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
+        ("sbcl-static-vectors" ,sbcl-static-vectors)))
+     (home-page "https://github.com/rpav/fast-io")
+     (synopsis "Fast octet-vector/stream I/O for Common Lisp")
+     (description
+      "Fast-io is about improving performance to octet-vectors and octet
+streams (though primarily the former, while wrapping the latter).")
+     ;; Author specifies this as NewBSD which is an alias
+     (license license:bsd-3))))
+
+(define-public cl-fast-io
+  (sbcl-package->cl-source-package sbcl-fast-io))
+
+(define-public sbcl-jonathan
+  (let ((commit "1f448b4f7ac8265e56e1c02b32ce383e65316300")
+        (revision "1"))
+    (package
+     (name "sbcl-jonathan")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Rudolph-Miller/jonathan.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "14x4iwz3mbag5jzzzr4sb6ai0m9r4q4kyypbq32jmsk2dx1hi807"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Tests fail with: Component JONATHAN-ASD::JONATHAN-TEST not found,
+      ;; required by #<SYSTEM "jonathan">. Why?
+      `(#:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (inputs
+      `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
+        ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
+        ("sbcl-fast-io" ,sbcl-fast-io)
+        ("sbcl-proc-parse" ,sbcl-proc-parse)
+        ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)))
+     (home-page "http://rudolph-miller.github.io/jonathan/overview.html")
+     (synopsis "JSON encoder and decoder")
+     (description
+      "High performance JSON encoder and decoder.  Currently support: SBCL,
+CCL.")
+     ;; Author specifies the MIT license
+     (license license:expat))))
+
+(define-public cl-jonathan
+  (sbcl-package->cl-source-package sbcl-jonathan))
+
+(define-public sbcl-http-body
+  (let ((commit "dd01dc4f5842e3d29728552e5163acce8386eb73")
+        (revision "1"))
+    (package
+     (name "sbcl-http-body")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/http-body")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; Tests fail with: Component HTTP-BODY-ASD::HTTP-BODY-TEST not
+      ;; found, required by #<SYSTEM "http-body">. Why?
+      `(#:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (inputs
+      `(("sbcl-fast-http" ,sbcl-fast-http)
+        ("sbcl-jonathan" ,sbcl-jonathan)
+        ("sbcl-quri" ,sbcl-quri)))
+     (home-page "https://github.com/fukamachi/http-body")
+     (synopsis "HTTP POST data parser")
+     (description
+      "HTTP-Body parses HTTP POST data and returns POST parameters.  It
+supports application/x-www-form-urlencoded, application/json, and
+multipart/form-data.")
+     (license license:bsd-2))))
+
+(define-public cl-http-body
+  (sbcl-package->cl-source-package sbcl-http-body))
+
+(define-public sbcl-circular-streams
+  (let ((commit "e770bade1919c5e8533dd2078c93c3d3bbeb38df")
+        (revision "1"))
+    (package
+     (name "sbcl-circular-streams")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/circular-streams")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1wpw6d5cciyqcf92f7mvihak52pd5s47kk4qq6f0r2z2as68p5rs"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; The tests depend on cl-test-more which is now prove. Prove
+      ;; tests aren't working for some reason.
+      `(#:tests? #f))
+     (inputs
+      `(("sbcl-fast-io" ,sbcl-fast-io)
+        ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+     (home-page "https://github.com/fukamachi/circular-streams")
+     (synopsis "Circularly readable streams for Common Lisp")
+     (description
+      "Circular-Streams allows you to read streams circularly by wrapping real
+streams. Once you reach end-of-file of a stream, it's file position will be
+reset to 0 and you're able to read it again.")
+     (license license:llgpl))))
+
+(define-public cl-circular-streams
+  (sbcl-package->cl-source-package sbcl-circular-streams))
+
+(define-public sbcl-lack-request
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-request")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-request.asd"
+        #:asd-system-name "lack-request"
+        #:test-asd-file "t-lack-request.asd"
+        ;; XXX: Component :CLACK-TEST not found
+        #:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (inputs
+      `(("sbcl-quri" ,sbcl-quri)
+        ("sbcl-http-body" ,sbcl-http-body)
+        ("sbcl-circular-streams" ,sbcl-circular-streams)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-request
+  (sbcl-package->cl-source-package sbcl-lack-request))
+
+(define-public sbcl-local-time
+  (let ((commit "beac054eef428552b63d4ae7820c32ffef9a3015")
+        (revision "1"))
+    (package
+     (name "sbcl-local-time")
+     (version (git-version "1.0.6" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dlowe-net/local-time.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xhkmgxh41dg2wwlsp0h2l41jp144xn4gpxhh0lna6kh0560w2cc"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      ;; TODO: Component :STEFIL not found, required by #<SYSTEM
+      ;; "local-time/test">
+      '(#:tests? #f))
+     (native-inputs
+      `(("stefil" ,sbcl-hu.dwim.stefil)))
+     (inputs
+      `(("sbcl-cl-fad" ,sbcl-cl-fad)))
+     (home-page "https://common-lisp.net/project/local-time/")
+     (synopsis "Time manipulation library for Common Lisp")
+     (description
+      "The LOCAL-TIME library is a Common Lisp library for the manipulation of
+dates and times.  It is based almost entirely upon Erik Naggum's paper \"The
+Long Painful History of Time\".")
+     (license license:expat))))
+
+(define-public cl-local-time
+  (sbcl-package->cl-source-package sbcl-local-time))
+
+(define-public sbcl-lack-response
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-response")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-response.asd"
+        #:asd-system-name "lack-response"
+        ;; XXX: no tests for lack-response.
+        #:tests? #f))
+     (native-inputs
+      `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+        ("sbcl-prove" ,sbcl-prove)))
+     (inputs
+      `(("sbcl-quri" ,sbcl-quri)
+        ("sbcl-http-body" ,sbcl-http-body)
+        ("sbcl-circular-streams" ,sbcl-circular-streams)
+        ("sbcl-local-time" ,sbcl-local-time)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-response
+  (sbcl-package->cl-source-package sbcl-lack-response))
+
+(define-public sbcl-lack-component
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-component")
+     (version (git-version "0.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-component.asd"
+        #:asd-system-name "lack-component"
+        #:test-asd-file "t-lack-component.asd"
+        ;; XXX: Component :LACK-TEST not found
+        #:tests? #f))
+     (native-inputs
+      `(("prove-asdf" ,sbcl-prove-asdf)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-component
+  (sbcl-package->cl-source-package sbcl-lack-component))
+
+(define-public sbcl-lack-util
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-util")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-util.asd"
+        #:asd-system-name "lack-util"
+        #:test-asd-file "t-lack-util.asd"
+        ;; XXX: Component :LACK-TEST not found
+        #:tests? #f))
+     (native-inputs
+      `(("prove-asdf" ,sbcl-prove-asdf)))
+     (inputs
+      `(("sbcl-ironclad" ,sbcl-ironclad)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-util
+  (sbcl-package->cl-source-package sbcl-lack-util))
+
+(define-public sbcl-lack-middleware-backtrace
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-middleware-backtrace")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-middleware-backtrace.asd"
+        #:asd-system-name "lack-middleware-backtrace"
+        #:test-asd-file "t-lack-middleware-backtrace.asd"
+        ;; XXX: Component :LACK not found
+        #:tests? #f))
+     (native-inputs
+      `(("prove-asdf" ,sbcl-prove-asdf)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-middleware-backtrace
+  (sbcl-package->cl-source-package sbcl-lack-middleware-backtrace))
+
+(define-public sbcl-trivial-mimes
+  (let ((commit "303f8ac0aa6ca0bc139aa3c34822e623c3723fab")
+        (revision "1"))
+    (package
+      (name "sbcl-trivial-mimes")
+      (version (git-version "1.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/trivial-mimes.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "17jxgl47r695bvsb7wi3n2ws5rp1zzgvw0zii8cy5ggw4b4ayv6m"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after
+               'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((anchor "#p\"/etc/mime.types\""))
+                 (substitute* "mime-types.lisp"
+                   ((anchor all)
+                    (string-append
+                     anchor "\n"
+                     "(asdf:system-relative-pathname :trivial-mimes \"../../share/common-lisp/sbcl-source/trivial-mimes/mime.types\")")))))))))
+      (native-inputs
+       `(("stefil" ,sbcl-hu.dwim.stefil)))
+      (inputs
+       `(("sbcl-cl-fad" ,sbcl-cl-fad)))
+      (home-page "http://shinmera.github.io/trivial-mimes/")
+      (synopsis "Tiny Common Lisp library to detect mime types in files")
+      (description
+       "This is a teensy library that provides some functions to determine the
+mime-type of a file.")
+      (license license:artistic2.0))))
+
+(define-public cl-trivial-mimes
+  (sbcl-package->cl-source-package sbcl-trivial-mimes))
+
+(define-public sbcl-lack-middleware-static
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack-middleware-static")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:asd-file "lack-middleware-static.asd"
+        #:asd-system-name "lack-middleware-static"
+        #:test-asd-file "t-lack-middleware-static.asd"
+        ;; XXX: Component :LACK not found
+        #:tests? #f))
+     (native-inputs
+      `(("prove-asdf" ,sbcl-prove-asdf)))
+     (inputs
+      `(("sbcl-ironclad" ,sbcl-ironclad)
+        ("sbcl-trivial-mimes" ,sbcl-trivial-mimes)
+        ("sbcl-local-time" ,sbcl-local-time)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack-middleware-static
+  (sbcl-package->cl-source-package sbcl-lack-middleware-static))
+
+(define-public sbcl-lack
+  (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
+        (revision "1"))
+    (package
+     (name "sbcl-lack")
+     (version (git-version "0.1.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/lack.git")
+             (commit commit)))
+       (sha256
+        (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
+     (build-system asdf-build-system/sbcl)
+     (arguments
+      '(#:test-asd-file "t-lack.asd"
+        ;; XXX: Component :CLACK not found
+        #:tests? #f))
+     (native-inputs
+      `(("prove-asdf" ,sbcl-prove-asdf)))
+     (inputs
+      `(("sbcl-lack-component" ,sbcl-lack-component)
+        ("sbcl-lack-util" ,sbcl-lack-util)))
+     (home-page "https://github.com/fukamachi/lack")
+     (synopsis "Lack, the core of Clack")
+     (description
+      "Lack is a Common Lisp library which allows web applications to be
+constructed of modular components.  It was originally a part of Clack, however
+it's going to be rewritten as an individual project since Clack v2 with
+performance and simplicity in mind.")
+     (license license:llgpl))))
+
+(define-public cl-lack
+  (sbcl-package->cl-source-package sbcl-lack))
+
+(define-public sbcl-ningle
+  (let ((commit "50bd4f09b5a03a7249bd4d78265d6451563b25ad")
+        (revision "1"))
+    (package
+      (name "sbcl-ningle")
+      (version (git-version "0.3.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fukamachi/ningle.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1bsl8cnxhacb8p92z9n89vhk1ikmij5zavk0m2zvmj7iqm79jzgw"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; TODO: pull in clack-test
+       '(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'cleanup-files)
+           (delete 'cleanup)
+           (add-before 'cleanup 'combine-fasls
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lib (string-append out "/lib/sbcl"))
+                      (ningle-path (string-append lib "/ningle"))
+                      (fasl-files (find-files out "\\.fasl$")))
+                 (mkdir-p ningle-path)
+                 (let ((fasl-path (lambda (name)
+                                    (string-append ningle-path
+                                                   "/"
+                                                   (basename name)
+                                                   "--system.fasl"))))
+                   (for-each (lambda (file)
+                               (rename-file file
+                                            (fasl-path
+                                             (basename file ".fasl"))))
+                             fasl-files))
+                 fasl-files)
+               #t)))))
+      (native-inputs
+       `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
+         ("sbcl-prove" ,sbcl-prove)))
+      (inputs
+       `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
+         ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
+         ("sbcl-myway" ,sbcl-myway)
+         ("sbcl-lack-request" ,sbcl-lack-request)
+         ("sbcl-lack-response" ,sbcl-lack-response)
+         ("sbcl-lack-component" ,sbcl-lack-component)
+         ("sbcl-alexandria" ,sbcl-alexandria)
+         ("sbcl-babel" ,sbcl-babel)))
+      (home-page "http://8arrow.org/ningle/")
+      (synopsis "Super micro framework for Common Lisp")
+      (description
+       "Ningle is a lightweight web application framework for Common Lisp.")
+      (license license:llgpl))))
+
+(define-public cl-ningle
+  (sbcl-package->cl-source-package sbcl-ningle))
+
+(define-public sbcl-clack
+  (let ((commit "e3e032843bb1220ab96263c411aa7f2feb4746e0")
+        (revision "1"))
+    (package
+     (name "sbcl-clack")
+     (version (git-version "2.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fukamachi/clack.git")
+             (commit commit)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ymzs6qyrwhlj6cgqsnpyn6g5cbp7a3s1vgxwna20y2q7y4iacy0"))))
+     (build-system asdf-build-system/sbcl)
+     (inputs
+      `(("sbcl-lack" ,sbcl-lack)
+        ("sbcl-lack-middleware-backtrace" ,sbcl-lack-middleware-backtrace)
+        ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)))
+     (home-page "https://github.com/fukamachi/clack")
+     (synopsis "Web Application Environment for Common Lisp")
+     (description
+      "Clack is a web application environment for Common Lisp inspired by
+Python's WSGI and Ruby's Rack.")
+     (license license:llgpl))))
+
+(define-public cl-clack
+  (sbcl-package->cl-source-package sbcl-clack))
+
+(define-public sbcl-log4cl
+  (let ((commit "611e094458504b938d49de904eab141285328c7c")
+        (revision "1"))
+    (package
+      (name "sbcl-log4cl")
+      (build-system asdf-build-system/sbcl)
+      (version "1.1.2")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sharplispers/log4cl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "08jly0s0g26b56hhpfizxsb4j0yvbh946sd205gr42dkzv8l7dsc"))))
+      ;; FIXME: tests require stefil, sbcl-hu.dwim.stefil wont work
+      (arguments
+       `(#:tests? #f))
+      (inputs `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
+      (synopsis "Common Lisp logging framework, modeled after Log4J")
+      (home-page "https://github.com/7max/log4cl")
+      (description "This is a Common Lisp logging framework that can log at
+various levels and mix text with expressions.")
+      (license license:asl2.0))))
+
+(define-public cl-log4cl
+  (sbcl-package->cl-source-package sbcl-log4cl))
+
+(define-public ecl-log4cl
+  (sbcl-package->ecl-package sbcl-log4cl))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 3d46b02338..53884daf9b 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -40,7 +40,9 @@
   #:use-module (gnu packages bootstrap)           ;glibc-dynamic-linker
   #:use-module (gnu packages compression)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages mpi)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml))
 
@@ -282,6 +284,43 @@ code analysis tools.")
 use with Clang, targeting C++11, C++14 and above.")
     (license license:expat)))
 
+(define-public libomp
+  (package
+    (name "libomp")
+    (version (package-version llvm))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://releases.llvm.org/"
+                                  version  "/openmp-" version
+                                  ".src.tar.xz"))
+              (sha256
+               (base32
+                "030dkg5cypd7j9hq0mcqb5gs31lxwmzfq52j81l7v9ldcy5bf5mz"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (build-system cmake-build-system)
+    ;; XXX: Note this gets built with GCC because building with Clang itself
+    ;; fails (missing <atomic>, even when libcxx is added as an input.)
+    (arguments
+     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
+                           "-DOPENMP_TEST_C_COMPILER=clang"
+                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:test-target "check-libomptarget"))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("hwloc" ,hwloc "lib")))
+    (home-page "https://openmp.llvm.org")
+    (synopsis "OpenMP run-time support library")
+    (description
+     "This package provides the run-time support library developed by the LLVM
+project for the OpenMP multi-theaded programming extension.  This package
+notably provides @file{libgomp.so}, which is has a binary interface compatible
+with that of libgomp, the GNU Offloading and Multi Processing Library.")
+    (license license:expat)))
+
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 20b8bfa886..3e98ac45a3 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
 ;;; Copyright © 2018 Ben Woodcroft <donttrustben@gmail.com>
@@ -49,6 +49,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cran)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
@@ -65,12 +66,15 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages statistics)
+  #:use-module (gnu packages sqlite)
   #: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))
+  #:use-module (gnu packages xorg)
+  #:use-module (ice-9 match))
 
 (define-public fann
   ;; The last release is >100 commits behind, so we package from git.
@@ -107,18 +111,17 @@ connected and sparsely connected networks.")
 (define-public libsvm
   (package
     (name "libsvm")
-    (version "3.22")
+    (version "3.23")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.csie.ntu.edu.tw/~cjlin/libsvm/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "0zd7s19y5vb7agczl6456bn45cj1y64739sslaskw1qk7dywd0bd"))))
+        (base32 "0jpaq0rr92x38p4nk3gjan79ip67m6p80anb28z1d8601miysyi5"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ;no "check" target
+     `(#:tests? #f                      ; no "check" target
        #:phases (modify-phases %standard-phases
                   (delete 'configure)
                   (replace
@@ -147,7 +150,7 @@ classification.")
     (name "python-libsvm")
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ;no "check" target
+     `(#:tests? #f                      ; no "check" target
        #:make-flags '("-C" "python")
        #:phases
        (modify-phases %standard-phases
@@ -304,28 +307,46 @@ networks) based on simulation of (stochastic) flow in graphs.")
     (version "12-068oasis4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/fhcrc/mcl/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fhcrc/mcl.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1l5jbhwjpsj38x8b9698hfpkv75h8hn3kj0gihjhn8ym2cwwv110"))))
+         "0009dc3h2jp3qg5val452wngpqnbfyhbcxylghq0mrjqxx0jdq5p"))))
     (build-system ocaml-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-paths
            (lambda _
              (substitute* "configure"
-               (("SHELL = /bin/sh") (string-append "SHELL = "(which "sh"))))
+               (("/bin/sh") (which "sh")))
              (substitute* "setup.ml"
                (("LDFLAGS=-fPIC")
-                (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh"))))
+                (string-append "LDFLAGS=-fPIC\"; \"SHELL=" (which "sh")))
+               (("-std=c89") "-std=gnu99")
+
+               ;; This is a mutable string, which is no longer supported.  Use
+               ;; a byte buffer instead.
+               (("String.make \\(String.length s\\)")
+                "Bytes.make (String.length s)")
+
+               ;; These two belong together.
+               (("OASISString.replace_chars")
+                "Bytes.to_string (OASISString.replace_chars")
+               ((" s;")
+                " s);"))
+             (substitute* "myocamlbuild.ml"
+               (("std=c89") "std=gnu99"))
+             ;; Since we build with a more recent OCaml, we have to use C99 or
+             ;; later.  This causes problems with the old C code.
+             (substitute* "src/impala/matrix.c"
+               (("restrict") "restrict_"))
              #t)))))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)))
     (home-page "https://github.com/fhcrc/mcl")
     (synopsis "OCaml wrappers around MCL")
     (description
@@ -385,14 +406,14 @@ sample proximities between pairs of cases.")
 (define-public openfst
   (package
     (name "openfst")
-    (version "1.7.1")
+    (version "1.7.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.openfst.org/twiki/pub/FST/"
                                   "FstDownload/openfst-" version ".tar.gz"))
               (sha256
                (base32
-                "0x9wfcqd8hq4h349s7j77sr60h8xjdfshqw1m3a2n6z5bdr9qkm1"))))
+                "0fqgk8195kz21is09gwzwnrg7fr9526bi9mh4apyskapz27pbhr1"))))
     (build-system gnu-build-system)
     (home-page "http://www.openfst.org")
     (synopsis "Library for weighted finite-state transducers")
@@ -626,27 +647,62 @@ adaptive sparsity and the Wong algorithm for adaptively sparse gaussian
 geometric models.")
     (license license:lgpl3+)))
 
-(define-public r-kernlab
-  (package
-    (name "r-kernlab")
-    (version "0.9-27")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "kernlab" version))
-       (sha256
-        (base32
-         "1m0xqf6gyvwayz7w3c83y32ayvnlz0jicj8ijk808zq9sh7dbbgn"))))
-    (build-system r-build-system)
-    (home-page "https://cran.r-project.org/web/packages/kernlab")
-    (synopsis "Kernel-based machine learning tools")
-    (description
-     "This package provides kernel-based machine learning methods for
-classification, regression, clustering, novelty detection, quantile regression
-and dimensionality reduction.  Among other methods @code{kernlab} includes
-Support Vector Machines, Spectral Clustering, Kernel PCA, Gaussian Processes
-and a QP solver.")
-    (license license:gpl2)))
+(define-public gemmlowp-for-tensorflow
+  ;; The commit hash is taken from "tensorflow/workspace.bzl".
+  (let ((commit "38ebac7b059e84692f53e5938f97a9943c120d98")
+        (revision "2"))
+    (package
+      (name "gemmlowp")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "https://mirror.bazel.build/"
+                                    "github.com/google/gemmlowp/archive/"
+                                    commit ".zip"))
+                (file-name (string-append "gemmlowp-" version ".zip"))
+                (sha256
+                 (base32
+                  "0n56s2g8hrssm4w8qj1v58gfm56a04n9v992ixkmvk6zjiralzxq"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags
+         (list ,@(match (%current-system)
+                   ((or "x86_64-linux" "i686-linux")
+                    '("-DCMAKE_CXX_FLAGS=-msse4.1"))
+                   (_ '())))
+         #:phases
+         (modify-phases %standard-phases
+           ;; This directory contains the CMakeLists.txt.
+           (add-after 'unpack 'chdir
+             (lambda _ (chdir "contrib") #t))
+           ;; There is no install target
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lib (string-append out "/lib/"))
+                      (inc (string-append out "/include/")))
+                 (install-file "../build/libeight_bit_int_gemm.so" lib)
+                 (for-each (lambda (dir)
+                             (let ((target (string-append inc "/" dir)))
+                               (mkdir-p target)
+                               (for-each (lambda (h)
+                                           (install-file h target))
+                                         (find-files (string-append "../" dir)
+                                                     "\\.h$"))))
+                           '("meta" "profiling" "public" "fixedpoint"
+                             "eight_bit_int_gemm" "internal"))
+                 #t))))))
+      (native-inputs
+       `(("unzip" ,unzip)))
+      (home-page "https://github.com/google/gemmlowp")
+      (synopsis "Small self-contained low-precision GEMM library")
+      (description
+       "This is a small self-contained low-precision @dfn{general matrix
+multiplication} (GEMM) library.  It is not a full linear algebra library.
+Low-precision means that the input and output matrix entries are integers on
+at most 8 bits.  To avoid overflow, results are internally accumulated on more
+than 8 bits, and at the end only some significant 8 bits are kept.")
+      (license license:asl2.0))))
 
 (define-public dlib
   (package
@@ -1249,3 +1305,451 @@ 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)))
+
+;; Note that Tensorflow includes a "third_party" directory, which seems to not
+;; only contain modified subsets of upstream library source code, but also
+;; adapter headers provided by Google (such as the fft.h header, which is not
+;; part of the upstream project code).  The Tensorflow code includes headers
+;; from the "third_party" directory.  It does not look like we can replace
+;; these headers with unmodified upstream files, so we keep them.
+(define-public tensorflow
+  (package
+    (name "tensorflow")
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tensorflow/tensorflow.git")
+             (commit (string-append "v" version))))
+       (file-name (string-append "tensorflow-" version "-checkout"))
+       (sha256
+        (base32
+         "0a9kwha395g3wgxfwln5j8vn9nkspmd75xldrlqdq540w996g8xa"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; no "check" target
+       #:build-type "Release"
+       #:configure-flags
+       (let ((protobuf (assoc-ref %build-inputs "protobuf"))
+             (protobuf:native (assoc-ref %build-inputs "protobuf:native"))
+             (jsoncpp (assoc-ref %build-inputs "jsoncpp"))
+             (snappy (assoc-ref %build-inputs "snappy"))
+             (sqlite (assoc-ref %build-inputs "sqlite")))
+         (list
+          ;; Use protobuf from Guix
+          (string-append "-Dprotobuf_STATIC_LIBRARIES="
+                         protobuf "/lib/libprotobuf.so")
+          (string-append "-DPROTOBUF_PROTOC_EXECUTABLE="
+                         protobuf:native "/bin/protoc")
+
+          ;; Use snappy from Guix
+          (string-append "-Dsnappy_STATIC_LIBRARIES="
+                         snappy "/lib/libsnappy.so")
+          ;; Yes, this is not actually the include directory but a prefix...
+          (string-append "-Dsnappy_INCLUDE_DIR=" snappy)
+
+          ;; Use jsoncpp from Guix
+          (string-append "-Djsoncpp_STATIC_LIBRARIES="
+                         jsoncpp "/lib/libjsoncpp.so")
+          ;; Yes, this is not actually the include directory but a prefix...
+          (string-append "-Djsoncpp_INCLUDE_DIR=" jsoncpp)
+
+          ;; Use sqlite from Guix
+          (string-append "-Dsqlite_STATIC_LIBRARIES="
+                         sqlite "/lib/libsqlite.a")
+
+          ;; Use system libraries wherever possible.  Currently, this
+          ;; only affects zlib.
+          "-Dsystemlib_ALL=ON"
+          "-Dtensorflow_ENABLE_POSITION_INDEPENDENT_CODE=ON"
+          "-Dtensorflow_BUILD_SHARED_LIB=ON"
+          "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=OFF"
+          "-Dtensorflow_ENABLE_SSL_SUPPORT=OFF"
+          "-Dtensorflow_BUILD_CONTRIB_KERNELS=OFF"))
+       #:make-flags
+       (list "CC=gcc")
+       #:modules ((ice-9 ftw)
+                  (guix build utils)
+                  (guix build cmake-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-source-file-times-to-1980
+           ;; At the end of the tf_python_build_pip_package target, a ZIP
+           ;; archive should be generated via bdist_wheel, but it fails with
+           ;; "ZIP does not support timestamps before 1980".  Luckily,
+           ;; SOURCE_DATE_EPOCH is respected, which we set to some time in
+           ;; 1980.
+           (lambda _ (setenv "SOURCE_DATE_EPOCH" "315532800") #t))
+         ;; See https://github.com/tensorflow/tensorflow/issues/20517#issuecomment-406373913
+         (add-after 'unpack 'python3.7-compatibility
+           (lambda _
+             (substitute* '("tensorflow/python/eager/pywrap_tfe_src.cc"
+                            "tensorflow/python/lib/core/ndarray_tensor.cc"
+                            "tensorflow/python/lib/core/py_func.cc")
+               (("PyUnicode_AsUTF8") "(char *)PyUnicode_AsUTF8"))
+             (substitute* "tensorflow/c/eager/c_api.h"
+               (("unsigned char async")
+                "unsigned char is_async"))
+
+             ;; Remove dependency on tensorboard, a complicated but probably
+             ;; optional package.
+             (substitute* "tensorflow/tools/pip_package/setup.py"
+               ((".*'tensorboard >.*") ""))
+             #t))
+         (add-after 'python3.7-compatibility 'chdir
+           (lambda _ (chdir "tensorflow/contrib/cmake") #t))
+         (add-after 'chdir 'disable-downloads
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "external" "\\.cmake$")
+               (("GIT_REPOSITORY.*") "")
+               (("GIT_TAG.*") "")
+               (("PREFIX ")
+                "DOWNLOAD_COMMAND \"\"\nPREFIX "))
+
+             ;; Use packages from Guix
+             (let ((grpc (assoc-ref inputs "grpc")))
+               (substitute* "CMakeLists.txt"
+                 ;; Sqlite
+                 (("include\\(sqlite\\)") "")
+                 (("\\$\\{sqlite_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "sqlite")
+                                 "/lib/libsqlite3.so"))
+                 (("sqlite_copy_headers_to_destination") "")
+
+                 ;; PNG
+                 (("include\\(png\\)") "")
+                 (("\\$\\{png_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "libpng")
+                                 "/lib/libpng16.so"))
+                 (("png_copy_headers_to_destination") "")
+
+                 ;; JPEG
+                 (("include\\(jpeg\\)") "")
+                 (("\\$\\{jpeg_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "libjpeg")
+                                 "/lib/libjpeg.so"))
+                 (("jpeg_copy_headers_to_destination") "")
+
+                 ;; GIF
+                 (("include\\(gif\\)") "")
+                 (("\\$\\{gif_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "giflib")
+                                 "/lib/libgif.so"))
+                 (("gif_copy_headers_to_destination") "")
+
+                 ;; lmdb
+                 (("include\\(lmdb\\)") "")
+                 (("\\$\\{lmdb_STATIC_LIBRARIES\\}")
+                  (string-append (assoc-ref inputs "lmdb")
+                                 "/lib/liblmdb.so"))
+                 (("lmdb_copy_headers_to_destination") "")
+
+                 ;; Protobuf
+                 (("include\\(protobuf\\)") "")
+                 (("protobuf_copy_headers_to_destination") "")
+                 (("^ +protobuf") "")
+
+                 ;; gRPC
+                 (("include\\(grpc\\)")
+                  "find_package(grpc REQUIRED NAMES gRPC)")
+                 (("list\\(APPEND tensorflow_EXTERNAL_DEPENDENCIES grpc\\)") "")
+
+                 ;; Eigen
+                 (("include\\(eigen\\)")
+                  (string-append "find_package(eigen REQUIRED NAMES Eigen3)
+set(eigen_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/external/eigen_archive "
+                                 (assoc-ref inputs "eigen") "/include/eigen3)"))
+                 (("^ +eigen") "")
+
+                 ;; snappy
+                 (("include\\(snappy\\)")
+                  "add_definitions(-DTF_USE_SNAPPY)")
+                 (("list\\(APPEND tensorflow_EXTERNAL_DEPENDENCIES snappy\\)") "")
+
+                 ;; jsoncpp
+                 (("include\\(jsoncpp\\)") "")
+                 (("^ +jsoncpp") ""))
+
+               (substitute* "tf_core_framework.cmake"
+                 ((" grpc") "")
+                 (("\\$\\{GRPC_BUILD\\}/grpc_cpp_plugin")
+                  (which "grpc_cpp_plugin"))
+                 ;; Link with gRPC libraries
+                 (("add_library\\(tf_protos_cc.*" m)
+                  (string-append m
+                                 (format #f "\ntarget_link_libraries(tf_protos_cc PRIVATE \
+~a/lib/libgrpc++_unsecure.a \
+~a/lib/libgrpc_unsecure.a \
+~a/lib/libaddress_sorting.a \
+~a/lib/libgpr.a \
+~a//lib/libcares.so
+)\n"
+                                         grpc grpc grpc grpc
+                                         (assoc-ref inputs "c-ares"))))))
+             (substitute* "tf_tools.cmake"
+               (("add_dependencies\\(\\$\\{proto_text.*") ""))
+             ;; Remove dependency on bundled grpc
+             (substitute* "tf_core_distributed_runtime.cmake"
+               (("tf_core_cpu grpc") "tf_core_cpu"))
+
+             ;; This directory is a dependency of many targets.
+             (mkdir-p "protobuf")
+             #t))
+         (add-after 'configure 'unpack-third-party-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; This is needed to configure bundled packages properly.
+             (setenv "CONFIG_SHELL" (which "bash"))
+             (for-each
+              (lambda (name)
+                (let* ((what  (assoc-ref inputs (string-append name "-src")))
+                       (name* (string-map (lambda (c)
+                                            (if (char=? c #\-)
+                                                #\_ c)) name))
+                       (where (string-append "../build/" name* "/src/" name*)))
+                  (cond
+                   ((string-suffix? ".zip" what)
+                    (mkdir-p where)
+                    (with-directory-excursion where
+                      (invoke "unzip" what)))
+                   ((string-suffix? ".tar.gz" what)
+                    (mkdir-p where)
+                    (invoke "tar" "xf" what
+                            "-C" where "--strip-components=1"))
+                   (else
+                    (let ((parent (dirname where)))
+                      (mkdir-p parent)
+                      (with-directory-excursion parent
+                        (when (file-exists? name*)
+                          (delete-file-recursively name*))
+                        (copy-recursively what name*)
+                        (map make-file-writable
+                             (find-files name* ".*"))))))))
+              (list "boringssl"
+                    "cub"
+                    "double-conversion"
+                    "farmhash"
+                    "fft2d"
+                    "highwayhash"
+                    "nsync"
+                    "re2"))
+
+             (rename-file "../build/cub/src/cub/cub-1.8.0/"
+                          "../build/cub/src/cub/cub/")
+             #t))
+         (add-after 'unpack 'fix-python-build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (mkdir-p "protobuf-src")
+             (invoke "tar" "xf" (assoc-ref inputs "protobuf:src")
+                     "-C" "protobuf-src" "--strip-components=1")
+             (mkdir-p "eigen-src")
+             (invoke "tar" "xf" (assoc-ref inputs "eigen:src")
+                     "-C" "eigen-src" "--strip-components=1")
+
+             (substitute* "tensorflow/contrib/cmake/tf_python.cmake"
+               ;; Ensure that all Python dependencies can be found at build time.
+               (("PYTHONPATH=\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/tf_python" m)
+                (string-append m ":" (getenv "PYTHONPATH")))
+               ;; Take protobuf source files from our source package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/protobuf/src/protobuf/src/google")
+                (string-append (getcwd) "/protobuf-src/src/google")))
+
+             (substitute* '("tensorflow/contrib/cmake/tf_shared_lib.cmake"
+                            "tensorflow/contrib/cmake/tf_python.cmake")
+               ;; Take Eigen source files from our source package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/eigen/src/eigen/")
+                (string-append (getcwd) "/eigen-src/"))
+               ;; Take Eigen headers from our own package.
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/external/eigen_archive")
+                (string-append (assoc-ref inputs "eigen") "/include/eigen3")))
+
+             ;; Correct the RUNPATH of ops libraries generated for Python.
+             ;; TODO: this doesn't work :(
+             ;; /gnu/store/...-tensorflow-1.9.0/lib/python3.7/site-packages/tensorflow/contrib/seq2seq/python/ops/lib_beam_search_ops.so:
+             ;; warning: RUNPATH contains bogus entries: ("/tmp/guix-build-tensorflow-1.9.0.drv-0/source/tensorflow/contrib/build")
+             ;; /gnu/store/...-tensorflow-1.9.0/lib/python3.7/site-packages/tensorflow/contrib/seq2seq/python/ops/lib_beam_search_ops.so:
+             ;; error: depends on 'libpywrap_tensorflow_internal.so', which
+             ;; cannot be found in RUNPATH ...
+             (substitute* "tensorflow/contrib/cmake/tf_cc_ops.cmake"
+               (("set_target_properties.*")
+                (string-append "set_target_properties(${_AT_TARGET} PROPERTIES \
+COMPILE_FLAGS ${target_compile_flags} \
+INSTALL_RPATH_USE_LINK_PATH TRUE \
+INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
+             #t))
+         (add-after 'build 'build-pip-package
+           (lambda* (#:key outputs #:allow-other-keys)
+             (setenv "LDFLAGS"
+                     (string-append "-Wl,-rpath="
+                                    (assoc-ref outputs "out") "/lib"))
+             (invoke "make" "tf_python_build_pip_package")
+             #t))
+         (add-after 'build-pip-package 'install-python
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (wheel (car (find-files "../build/tf_python/dist/" "\\.whl$"))))
+               (invoke "python" "-m" "pip" "install" wheel
+                       (string-append "--prefix=" out))
+
+               ;; XXX: broken RUNPATH, see fix-python-build phase.
+               (delete-file
+                (string-append
+                 out "/lib/python3.7/site-packages/tensorflow/contrib/"
+                 "seq2seq/python/ops/lib_beam_search_ops.so"))
+               #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("protobuf:native" ,protobuf-next) ; protoc
+       ("protobuf:src" ,(package-source protobuf-next))
+       ("eigen:src" ,(package-source eigen-for-tensorflow))
+       ;; The commit hashes and URLs for third-party source code are taken
+       ;; from "tensorflow/workspace.bzl".
+       ("boringssl-src"
+        ,(let ((commit "ee7aa02")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://boringssl.googlesource.com/boringssl")
+                   (commit commit)))
+             (file-name (string-append "boringssl-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "1jf693q0nw0adsic6cgmbdx6g7wr4rj4vxa8j1hpn792fqhd8wgw")))))
+       ("cub-src"
+        ,(let ((version "1.8.0"))
+           (origin
+             (method url-fetch)
+             (uri (string-append "https://mirror.bazel.build/github.com/NVlabs/"
+                                 "cub/archive/" version ".zip"))
+             (file-name (string-append "cub-" version ".zip"))
+             (sha256
+              (base32
+               "1hsqikqridb90dkxkjr2918dcry6pfh46ccnwrzawl56aamhdykb")))))
+       ("double-conversion-src"
+        ,(let ((commit "5664746")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/double-conversion.git")
+                   (commit commit)))
+             (file-name
+              (git-file-name "double-conversion"
+                             (string-append "0-" revision "."
+                                            (string-take commit 7))))
+             (sha256
+              (base32
+               "1h5lppqqxcvdg5jq42i5msgwx20ryij3apvmndflngrgdpc04gn1")))))
+       ("farmhash-src"
+        ,(let ((commit "816a4ae622e964763ca0862d9dbd19324a1eaf45"))
+           (origin
+             (method url-fetch)
+             (uri (string-append
+                   "https://mirror.bazel.build/github.com/google/farmhash/archive/"
+                   commit ".tar.gz"))
+             (file-name (string-append "farmhash-0-" (string-take commit 7)
+                                       ".tar.gz"))
+             (sha256
+              (base32
+               "185b2xdxl4d4cnsnv6abg8s22gxvx8673jq2yaq85bz4cdy58q35")))))
+       ;; The license notice on the home page at
+       ;; http://www.kurims.kyoto-u.ac.jp/~ooura/fft.html says:
+       ;;   Copyright Takuya OOURA, 1996-2001
+       ;;
+       ;;   You may use, copy, modify and distribute this code for any purpose
+       ;;   (include commercial use) and without fee. Please refer to this
+       ;;   package when you modify this code.
+       ;;
+       ;; We take the identical tarball from the Bazel mirror, because the URL
+       ;; at the home page is not versioned and might change.
+       ("fft2d-src"
+        ,(origin
+           (method url-fetch)
+           (uri "https://mirror.bazel.build/www.kurims.kyoto-u.ac.jp/~ooura/fft.tgz")
+           (file-name "fft2d.tar.gz")
+           (sha256
+            (base32
+             "15jjkfvhqvl2c0753d2di8hz0pyzn598g74wqy79awdrf1y67fsj"))))
+       ("highwayhash-src"
+        ,(let ((commit "be5edafc2e1a455768e260ccd68ae7317b6690ee")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/highwayhash.git")
+                   (commit commit)))
+             (file-name (string-append "highwayhash-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "154jwf98cyy54hldr94pgjn85zynly3abpnc1avmb8a18lzwjyb6")))))
+       ("nsync-src"
+        ,(let ((version "0559ce013feac8db639ee1bf776aca0325d28777")
+               (revision "1"))
+           (origin
+             (method url-fetch)
+             (uri (string-append "https://mirror.bazel.build/"
+                                 "github.com/google/nsync/archive/"
+                                 version ".tar.gz"))
+             (file-name (string-append "nsync-0." revision
+                                       "-" (string-take version 7)
+                                       ".tar.gz"))
+             (sha256
+              (base32
+               "0qdkyqym34x739mmzv97ah5r7ph462v5xkxqxvidmcfqbi64b132")))))
+       ("re2-src"
+        ,(let ((commit "e7efc48")
+               (revision "1"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/google/re2")
+                   (commit commit)))
+             (file-name (string-append "re2-0-" revision
+                                       (string-take commit 7)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "161g9841rjfsy5pn52fcis0s9hdr7rxvb06pad38j5rppfihvign")))))
+       ("googletest" ,googletest)
+       ("swig" ,swig)
+       ("unzip" ,unzip)))
+    (propagated-inputs
+     `(("python-absl-py" ,python-absl-py)
+       ("python-astor" ,python-astor)
+       ("python-gast" ,python-gast)
+       ("python-grpcio" ,python-grpcio)
+       ("python-numpy" ,python-numpy)
+       ("python-protobuf" ,python-protobuf-next)
+       ("python-six" ,python-six)
+       ("python-termcolo" ,python-termcolor)
+       ("python-wheel" ,python-wheel)))
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("eigen" ,eigen-for-tensorflow)
+       ("gemmlowp" ,gemmlowp-for-tensorflow)
+       ("lmdb" ,lmdb)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("giflib" ,giflib)
+       ("grpc" ,grpc)
+       ("jsoncpp" ,jsoncpp-for-tensorflow)
+       ("snappy" ,snappy)
+       ("sqlite" ,sqlite)
+       ("protobuf" ,protobuf-next)
+       ("python" ,python-wrapper)
+       ("zlib" ,zlib)))
+    (home-page "https://tensorflow.org")
+    (synopsis "Machine learning framework")
+    (description
+     "TensorFlow is a flexible platform for building and training machine
+learning models.  It provides a library for high performance numerical
+computation and includes high level Python APIs, including both a sequential
+API for beginners that allows users to build models quickly by plugging
+together building blocks and a subclassing API with an imperative style for
+advanced research.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 9d09cade29..ddd01189fb 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; 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, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -95,6 +95,7 @@
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
@@ -110,6 +111,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
@@ -675,27 +677,27 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
 (define-public mu
   (package
     (name "mu")
-    (version "1.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/djcb/mu/releases/"
-                                  "download/v" version "/mu-"
-                                  version ".tar.xz"))
+                                  "download/" (version-major+minor version) "/"
+                                  "mu-" version ".tar.xz"))
               (sha256
                (base32
-                "04x5azl19gszw2h7argq666gf9xs4hy9q7w9cbqxvy08n56xqsln"))))
+                "0fh5bxvhjqv1p9z783lym8y1k3p4jcc3wg6wf7zl8s6w8krcfd7n"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")             ; for gtester
        ("emacs" ,emacs-minimal)
-       ("tzdata" ,tzdata-for-tests)))   ;for mu/test/test-mu-query.c
+       ("tzdata" ,tzdata-for-tests)))   ; for mu/test/test-mu-query.c
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
      `(("xapian" ,xapian)
        ("guile" ,guile-2.2)
        ("glib" ,glib)
-       ("gmime" ,gmime-2.6)))
+       ("gmime" ,gmime)))
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -917,51 +919,43 @@ ing, and tagging large collections of email messages.")
     (license gpl3+)))
 
 (define-public notmuch-addrlookup-c
-  ;; This commit includes a compatibility fix for notmuch-0.25, and is not
-  ;; currently part of any release.  Please update this package when
-  ;; notmuch-addrlookup-c-9 is released.
-  (let ((commit "88f156d04990a71c6ad6fc2757b537b44e3c4d00")
-        (revision "1"))          ;Guix package revision
-    (package
-      (name "notmuch-addrlookup-c")
-      (version (string-append "8-" revision "."
-                              (string-take commit 7)))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/aperezdc/notmuch-addrlookup-c.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "0v0wzs7qzy4n1hbql8s10qrwgalcxdzbxf8pj6cii1pv2jwmkxbm"))))
-      (build-system gnu-build-system)
-      (arguments
-       '(#:tests? #f ; no tests
-         #:make-flags (list "CC=gcc"
-                            (string-append "PREFIX="
-                                           (assoc-ref %outputs "out")))
-         #:phases (modify-phases %standard-phases
-                    (delete 'configure)
-                    ;; Remove vim code completion config, it's not needed to
-                    ;; build (or be patched).
-                    (add-before 'patch-source-shebangs 'delete-ycm-file
-                                (lambda _ (delete-file ".ycm_extra_conf.py")))
-                    (replace 'install
-                             (lambda* (#:key outputs #:allow-other-keys)
-                               (let ((bin (string-append
-                                           (assoc-ref outputs "out") "/bin")))
-                                 (install-file "notmuch-addrlookup" bin)))))))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)))
-      (inputs
-       `(("glib" ,glib)
-         ("notmuch" ,notmuch)))
-      (home-page "https://github.com/aperezdc/notmuch-addrlookup-c")
-      (synopsis "Address lookup tool for Notmuch")
-      (description "This is an address lookup tool using a Notmuch database,
+  (package
+    (name "notmuch-addrlookup-c")
+    (version (string-append "9"))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/aperezdc/notmuch-addrlookup-c.git")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1j3zdx161i1x4w0nic14ix5i8hd501rb31daf8api0k8855sx4rc"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:make-flags (list "CC=gcc")
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  ;; Remove vim code completion config, it's not needed to
+                  ;; build (or be patched).
+                  (add-before 'patch-source-shebangs 'delete-ycm-file
+                    (lambda _ (delete-file ".ycm_extra_conf.py")))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((bin (string-append
+                                  (assoc-ref outputs "out") "/bin")))
+                        (install-file "notmuch-addrlookup" bin)))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("notmuch" ,notmuch)))
+    (home-page "https://github.com/aperezdc/notmuch-addrlookup-c")
+    (synopsis "Address lookup tool for Notmuch")
+    (description "This is an address lookup tool using a Notmuch database,
 useful for email address completion.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public python-notmuch
   (package
@@ -1154,7 +1148,7 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.3")
+    (version "1.8.4")
     (source
      (origin
        (method url-fetch)
@@ -1162,7 +1156,7 @@ which can add many functionalities to the base client.")
                            "/msmtp-" version ".tar.xz"))
        (sha256
         (base32
-         "1d4jdgrx4czp66nnwdsy938lzr4llhwyy0715pwg0j6h6gyyxciw"))))
+         "1xr926lyy44baqdgv9q0sw5z6ll2cb4lx2g4lgpgbqn8bglpzpg5"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -1287,7 +1281,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.5")
+    (version "2.3.5.1")
     (source
      (origin
        (method url-fetch)
@@ -1295,7 +1289,8 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "1zxa9banams9nmk99sf1rqahr11cdqxhwi7hyz3ddxqidpn15qdz"))))
+        (base32
+         "0gy3qzwbp6zsyn44pcfq8iiv9iy9q7z6py30h60alb1vkr3rv3yp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1388,7 +1383,7 @@ How it works:
 @item This password digest is used as a symmetric secret to decrypt a libsodium secretbox.
 @item Inside the secretbox is stored a Curve25519 private key.
 @item The Curve25519 private key is used to decrypt each individual message,
-using lidsodium sealed boxes.
+using libsodium sealed boxes.
 @item New mail is encrypted as it arrives using the Curve25519 public key.
 @end enumerate\n")
     (license agpl3)))
@@ -1503,6 +1498,28 @@ locates email addresses in strings and returns a list of Email::Address
 objects found.  Alternatively you may construct objects manually.")
     (license perl-license)))
 
+(define-public perl-email-address-xs
+  (package
+    (name "perl-email-address-xs")
+    (version "1.04")
+    (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://cpan/authors/id/P/PA/PALI/"
+                          "Email-Address-XS-" version ".tar.gz"))
+      (sha256
+       (base32
+        "0gjrrl81z3sfwavgx5kwjd87gj44mlnbbqsm3dgdv1xllw26spwr"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Email-Address-XS")
+    (synopsis "Parse and format RFC 5322 email addresses and groups")
+    (description
+     "Email::Address::XS implements RFC 5322 parser and formatter of email
+addresses and groups.  Unlike Email::Address, this module does not use regular
+expressions for parsing but instead is implemented in XS and uses shared code
+from Dovecot IMAP server.")
+    (license perl-license)))
+
 (define-public perl-email-date-format
   (package
     (name "perl-email-date-format")
@@ -2865,3 +2882,79 @@ replacement for the @code{urlview} program.")
     (description "This package provides a TNEF stream reader library and
 related tools to process winmail.dat files.")
     (license gpl2+)))
+
+(define-public public-inbox
+  (let ((commit "3cf66514aea9e958999973b9f104473b6d800fbe")
+        (revision "0"))
+    (package
+     (name "public-inbox")
+     (version (git-version "1.0.0" revision commit))
+     (source
+      (origin (method git-fetch)
+              (uri (git-reference
+                    (url "https://public-inbox.org")
+                    (commit commit)))
+              (sha256
+               (base32
+                "1sxycwlm2n6p544gn9f0vf3xs6gz8vdswdhs2ha6fka8mgabvmdh"))
+              (file-name (git-file-name name version))))
+     (build-system perl-build-system)
+     (arguments
+      '(#:phases
+        (modify-phases %standard-phases
+          (add-before 'configure 'qualify-paths
+            (lambda _
+              ;; Use absolute paths for 'xapian-compact'.
+              (let ((xapian-compact (which "xapian-compact")))
+                (substitute* "script/public-inbox-compact"
+                  (("xapian-compact") xapian-compact)))
+              #t))
+          (add-before 'check 'pre-check
+            (lambda _
+              (substitute* "t/spawn.t"
+                (("\\['env'\\]") (string-append "['" (which "env") "']")))
+              #t))
+          (add-after 'install 'wrap-programs
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (for-each
+                 (lambda (prog)
+                   (wrap-program prog
+                     ;; Let those scripts find their perl modules.
+                     `("PERL5LIB" ":" prefix
+                       (,(string-append out "/lib/perl5/site_perl")
+                        ,(getenv "PERL5LIB")))
+                     ;; 'git' is invoked in various files of the PublicInbox
+                     ;; perl module.
+                     `("PATH" ":" prefix
+                       (,(string-append (assoc-ref inputs "git") "/bin")))))
+                 (find-files (string-append out "/bin"))))
+              #t)))))
+     (native-inputs
+      `(("git" ,git)
+        ("xapian" ,xapian)))
+     (inputs
+      `(("perl-danga-socket" ,perl-danga-socket)
+        ("perl-dbd-sqlite" ,perl-dbd-sqlite)
+        ("perl-dbi" ,perl-dbi)
+        ("perl-email-address-xs" ,perl-email-address-xs)
+        ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
+        ("perl-email-mime" ,perl-email-mime)
+        ("perl-email-simple" ,perl-email-simple)
+        ("perl-filesys-notify-simple" ,perl-filesys-notify-simple)
+        ("perl-plack-middleware-deflater" ,perl-plack-middleware-deflater)
+        ("perl-plack-middleware-reverseproxy" ,perl-plack-middleware-reverseproxy)
+        ("perl-plack" ,perl-plack)
+        ("perl-search-xapian" ,perl-search-xapian)
+        ("perl-timedate" ,perl-timedate)
+        ("perl-uri-escape" ,perl-uri-escape)
+        ;; For testing.
+        ("perl-ipc-run" ,perl-ipc-run)
+        ("perl-xml-feed" ,perl-xml-feed)))
+     (home-page "https://public-inbox.org/README.html")
+     (synopsis "Archive mailing lists in git repositories")
+     (description
+      "public-inbox implements the sharing of an email inbox via git to
+complement or replace traditional mailing lists.  Readers may read via NNTP,
+Atom feeds or HTML archives.")
+     (license agpl3+))))
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 16e9148506..0b668b4224 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -3,6 +3,8 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,7 +48,6 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
@@ -56,6 +57,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages messaging)
   #:use-module (gnu packages nettle)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages photo)
@@ -73,7 +75,7 @@
 (define-public mate-common
   (package
     (name "mate-common")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -82,7 +84,7 @@
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1005laf3z1h8qczm7pmwr40r842665cv6ykhjg7r93vldra48z6p"))))
+         "11lwckndizawbq993ws8lqp59vsc873zri0m8s1i5zyc4qx9f69z"))))
     (build-system gnu-build-system)
     (home-page "https://mate-desktop.org/")
     (synopsis "Common files for development of MATE packages")
@@ -91,10 +93,50 @@
 MATE applications.")
     (license license:gpl3+)))
 
+(define-public mate-power-manager
+  (package
+    (name "mate-power-manager")
+    (version "1.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pub.mate-desktop.org/releases/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "03c09h41qfz83wmjfvwzkq4xqc54aswmki4h034qcxbgfnyfmk1i"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("yelp-tools" ,yelp-tools)
+       ("glib" ,glib "bin") ; glib-gettextize
+       ("libtool" ,libtool)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("glib" ,glib)
+       ("dbus-glib" ,dbus-glib)
+       ("libgnome-keyring" ,libgnome-keyring)
+       ("cairo" ,cairo)
+       ("dbus" ,dbus)
+       ("libnotify" ,libnotify)
+       ("mate-panel" ,mate-panel)
+       ("libxrandr" ,libxrandr)
+       ("libcanberra" ,libcanberra)
+       ("upower" ,upower)))
+    (home-page "https://mate-desktop.org/")
+    (synopsis "A Power Manager for MATE")
+    (description
+     "MATE Power Manager is a MATE session daemon that acts as a policy agent on
+top of UPower. It listens to system events and responds with user-configurable
+actions.")
+    (license license:gpl3+)))
+
 (define-public mate-icon-theme
   (package
     (name "mate-icon-theme")
-    (version "1.18.2")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/"
@@ -102,7 +144,7 @@ MATE applications.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0si3li3kza7s45zhasjvqn5f85zpkn0x8i4kq1dlnqvjjqzkg4ch"))))
+                "090vfxpn1b1wwvkilv1j3cx4swdm4z0s7xyvhvqhdzj58zsf2000"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -117,7 +159,7 @@ MATE applications.")
 (define-public mate-icon-theme-faenza
   (package
     (name "mate-icon-theme-faenza")
-    (version "1.18.1")
+    (version "1.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/"
@@ -125,7 +167,7 @@ MATE applications.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0vc3wg9l5yrxm0xmligz4lw2g3nqj1dz8fwv90xvym8pbjds2849"))))
+                "000vr9cnbl2qlysf2gyg1lsjirqdzmwrnh6d3hyrsfc0r2vh4wna"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -155,7 +197,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
 (define-public mate-themes
   (package
     (name "mate-themes")
-    (version "3.22.16")
+    (version "3.22.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/themes/"
@@ -163,7 +205,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1k8qp2arjv4vj8kyjhjgyj5h46jy0darlfh48l5h25623z1firdj"))))
+                "1ycb8b8r0s8d1h1477135mynr53s5781gdb2ap8xlvj2g58492wq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -183,7 +225,7 @@ themes for both gtk+-2 and gtk+-3.")
 (define-public mate-desktop
   (package
     (name "mate-desktop")
-    (version "1.18.0")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/"
@@ -191,7 +233,7 @@ themes for both gtk+-2 and gtk+-3.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "12iv2y4dan962fs7vkkxbjkp77pbvjnwfa43ggr0zkdsc3ydjbbg"))))
+                "09gn840p6qds21kxab4pidjd53g76s76i7178fdibrz462mda217"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -203,6 +245,7 @@ themes for both gtk+-2 and gtk+-3.")
     (inputs
      `(("gtk+" ,gtk+)
        ("libxrandr" ,libxrandr)
+       ("iso-codes" ,iso-codes)
        ("startup-notification" ,startup-notification)))
     (propagated-inputs
      `(("dconf" ,dconf))) ; mate-desktop-2.0.pc
@@ -216,7 +259,7 @@ desktop and the mate-about program.")
 (define-public libmateweather
   (package
     (name "libmateweather")
-    (version "1.18.1")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/"
@@ -224,7 +267,7 @@ desktop and the mate-about program.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0z6vfh42fv9rqjrraqfpf6h9nd9h662bxy3l3r48j19xvxrwmx3a"))))
+                "1ribgcwl4ncfbcf9bkcbxrgc7yzajdnxg12837psngymkqswlp6a"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -262,7 +305,7 @@ the MATE desktop environment.")
 (define-public mate-terminal
   (package
     (name "mate-terminal")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -271,7 +314,7 @@ the MATE desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1zihm609d2d9cw53ry385whshjl1dnkifpk41g1ddm9f58hv4da1"))))
+         "16r492s34la2fs2cj1xr0r93wkjglwy77jyrc66i2ahs9gnivj4g"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -303,7 +346,7 @@ configurations (profiles).")
 (define-public mate-session-manager
   (package
     (name "mate-session-manager")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -312,7 +355,7 @@ configurations (profiles).")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0i0xq6041x2qmb26x9bawx0qpfkgjn6x9w3phnm9s7rc4s0z20ll"))))
+         "1kpfmgay01gm74paaxccs3lim4jfb4hsm7i85jfdypr51985pwyj"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list "--enable-elogind"
@@ -336,7 +379,20 @@ configurations (profiles).")
                (("#ifdef HAVE_SYSTEMD") "#if 0"))
              (substitute* "mate-session/gsm-autostart-app.c"
                (("#ifdef HAVE_SYSTEMD") "#if 0"))
-             #t)))))
+             #t))
+         (add-after 'install 'update-xsession-dot-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Record the absolute file name of 'mate-session' in the
+             ;; '.desktop' file.
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsession (string-append
+                               out "/share/xsessions/mate.desktop")))
+               (substitute* xsession
+                 (("^Exec=.*$")
+                  (string-append "Exec=" out "/bin/mate-session\n"))
+                 (("^TryExec=.*$")
+                  (string-append "Exec=" out "/bin/mate-session\n")))
+               #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)
@@ -358,7 +414,7 @@ configuration program to choose applications starting on login.")
 (define-public mate-settings-daemon
   (package
     (name "mate-settings-daemon")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -367,7 +423,7 @@ configuration program to choose applications starting on login.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "07b2jkxqv07njdrgkdck93d872p6lch1lrvi7ydnpicspg3rfid6"))))
+         "0yr5v6b9hdk20j29smbw1k4fkyg82i5vlflmgly0vi5whgc74gym"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -401,7 +457,7 @@ configuration program to choose applications starting on login.")
 (define-public libmatemixer
   (package
     (name "libmatemixer")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -410,7 +466,7 @@ configuration program to choose applications starting on login.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "09vyxnlnalws318gsafdfi5c6jwpp92pbafn1ddlqqds23ihk4mr"))))
+         "1v0gpr55gj4mj8hzxbhgzrmhaxvs2inxhsmirvjw39sc7iplvrh9"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -431,7 +487,7 @@ sound systems.")
 (define-public libmatekbd
   (package
     (name "libmatekbd")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -440,7 +496,7 @@ sound systems.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "030bl18qbjm7l92bp1bhs7v82bp8j3mv7c1j1a4gd89iz4611pq3"))))
+         "1dsr7618c92mhwabwhgxqsfp7gnf9zrz2z790jc5g085dxhg13y8"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -463,7 +519,7 @@ MATE desktop environment.")
 (define-public mate-menus
   (package
     (name "mate-menus")
-    (version "1.18.0")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/"
@@ -471,7 +527,7 @@ MATE desktop environment.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "05kyr37xqv6hm1rlvnqd5ng0x1n883brqynkirkk5drl56axnz7h"))))
+                "1lkakbf2f1815c146z4xp5f0h4lim6jzr02681wbvzalc6k97v5c"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -504,7 +560,7 @@ assorted menu related utility programs.")
 (define-public mate-applets
   (package
     (name "mate-applets")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -513,7 +569,7 @@ assorted menu related utility programs.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1nplr8i1mxbxd7pqhcy8j69v25nsp5dk9fq7ffrmjmp39lrf3fh5"))))
+         "0f5ym6z7awi0kw6i1sdkj2qly88sl692j5r1zhklihyz1z9a6j0h"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -578,7 +634,7 @@ Interactive Weather Information Network (IWIN).
 (define-public mate-media
   (package
     (name "mate-media")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -587,7 +643,7 @@ Interactive Weather Information Network (IWIN).
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1l0j71d07898wb6ily09sj1xczwrmcw13wyhxwns7sxw592nwi04"))))
+         "0jrxbz00vjas0yp3ixvyzfsdby2ac3p3bds9yd7q1437mmhf71mj"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -615,7 +671,7 @@ mate-volume-control, a MATE volume control application and applet.")
 (define-public mate-panel
   (package
     (name "mate-panel")
-    (version "1.18.4")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -624,7 +680,7 @@ mate-volume-control, a MATE volume control application and applet.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1n565ff1n7jrfx223i3cl3m69wjda506nvbn8gra7m1jwdfzpbw1"))))
+         "17l4ryy71bkszr6shm9dm31zcsd7m0digi1mmvdlib5hqzvc7li7"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -689,7 +745,7 @@ infamous 'Wanda the Fish'.")
 (define-public atril
   (package
     (name "atril")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -698,13 +754,12 @@ infamous 'Wanda the Fish'.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1wl332v80c0nzz7nw36d1pfmbiibvl3l0i4d25ihg6mg9wbc0145"))))
+         "1xd49j4qwrlg2nh2zvspf91yk033dp8a58dy9azqg2yz4bcvywxb"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list (string-append "--with-openjpeg="
                                               (assoc-ref %build-inputs "openjpeg"))
                                "--enable-introspection"
-                               "--with-gtk=3.0"
                                "--disable-schemas-compile"
                                ;; FIXME: Enable build of Caja extensions.
                                "--disable-caja")
@@ -794,7 +849,7 @@ infamous 'Wanda the Fish'.")
 (define-public caja
   (package
     (name "caja")
-    (version "1.18.3")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -803,7 +858,7 @@ infamous 'Wanda the Fish'.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0mljqcx7k8p27854zm7qzzn8ca6hs7hva9p43hp4p507z52caqmm"))))
+         "14x9n9q7vip5zp4mdgccj1p1dm4xn429g0bjw2v8iz7zmjb7vcgl"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-update-mimedb")
@@ -853,7 +908,7 @@ icons on the MATE desktop.  It works on local and remote file systems.")
 (define-public caja-extensions
   (package
     (name "caja-extensions")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -862,7 +917,7 @@ icons on the MATE desktop.  It works on local and remote file systems.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0hgala7zkfsa60jflq3s4n9yd11dhfdcla40l83cmgc3r1az7cmw"))))
+         "1h866jmdd3qpjzi7wjj11krwiaadnlf21844g1zqfb4jgrzj773p"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list "--enable-sendto"
@@ -908,7 +963,7 @@ icons on the MATE desktop.  It works on local and remote file systems.")
 (define-public mate-control-center
   (package
     (name "mate-control-center")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -917,7 +972,7 @@ icons on the MATE desktop.  It works on local and remote file systems.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0flnn0h8f5aqyccwrlv7qxchvr3kqmlfdga6wq28d55zkpv5m7dl"))))
+         "06wpfsxsiv7w3dl7p395r5vcxqbjlllydqbnvbr6yn0lrac15i71"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -968,7 +1023,7 @@ of various aspects of your desktop.")
 (define-public marco
   (package
     (name "marco")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -977,7 +1032,7 @@ of various aspects of your desktop.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0lwbp9wyd66hl5d7g272l8g3k1pb9s4s2p9fb04750a58w87d8k5"))))
+         "1i1pi1z9mrb6564mxcwb93jqpdppfv58c2viwmicsixis62hv5wx"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1019,7 +1074,7 @@ for use with MATE or as a standalone window manager.")
 (define-public mate-user-guide
   (package
     (name "mate-user-guide")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1028,7 +1083,7 @@ for use with MATE or as a standalone window manager.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0f3b46r9a3cywm7rpj08xlkfnlfr9db58xfcpix8i33qp50fxqmb"))))
+         "0ckn7h7l0qdgdx440dwx1h8i601s22sxlf5a7179hfirk9016j0z"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1059,7 +1114,7 @@ sessions, panels, menus, file management, and preferences.")
 (define-public mate-calc
   (package
     (name "mate-calc")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1068,7 +1123,7 @@ sessions, panels, menus, file management, and preferences.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0qfs6kx2nymbn6j3mnzgvk8p54ghc78jslsf4wjqsdq021qyl0ly"))))
+         "1njk6v7z3969ikvcrabr1lw5f5572vb14w064zm3mydj8cc5inlr"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -1091,7 +1146,7 @@ sessions, panels, menus, file management, and preferences.")
 (define-public mate-backgrounds
   (package
     (name "mate-backgrounds")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1100,7 +1155,7 @@ sessions, panels, menus, file management, and preferences.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "06q8ksjisijps2wn959arywsimhzd3j35mqkr048c26ck24d60zi"))))
+         "1j9ch04qi2q4mdcvb92w667ra9hpfdf2bfpi1dpw0nbph7r6qvj9"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)))
@@ -1114,7 +1169,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public mate-netbook
   (package
     (name "mate-netbook")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1123,7 +1178,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0zj4x9qis8dw0irxzb4va1189k8bqbvymxq3h7phnjwvr1m983gf"))))
+         "17p1wv9bcr3kvlahnxmxj786vka86nysi90x5xci6ilwyjlaxh0l"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -1148,7 +1203,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 @item Allows you to set basic rules for a window type, such as maximise|undecorate
 @item Allows exceptions to the rules, based on string matching for window name
 and window class.
-@item Allows 'reversing' of rules when the user manually changes something:
+@item Allows @code{reversing} of rules when the user manually changes something:
 Re-decorates windows on un-maximise.
 @end enumerate\n")
     (license license:gpl3+)))
@@ -1156,7 +1211,7 @@ Re-decorates windows on un-maximise.
 (define-public mate-screensaver
   (package
     (name "mate-screensaver")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1165,7 +1220,7 @@ Re-decorates windows on un-maximise.
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0dfi10faf1fnvrm7c7wnfqg35ygq09ws1vjyv8394jlf0nn39g9j"))))
+         "17fxyccsc410wbyxmds1sm7gjqbj6z46x5cjk1791hfzf0sh82sy"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags
@@ -1228,7 +1283,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public mate-utils
   (package
     (name "mate-utils")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1237,7 +1292,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0wr395dqfigj19ps0d76ycgwfljl9xxgs1a1g5wx6kcz5mvhzn5v"))))
+         "0kz95hicjksgkwaj83fdp2rnaygfgjbj0jsnwy4n0lj5q90j7r28"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -1281,7 +1336,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public eom
   (package
     (name "eom")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1290,7 +1345,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "00ns7g7qykakc89lijrw2vwy9x9ijqiyvmnd4sw0j6py90zs8m87"))))
+         "093vbip848bp9y603yasbrg1bcp68m64hma7zhi5m37x2r103r6l"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -1332,7 +1387,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public engrampa
   (package
     (name "engrampa")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1341,7 +1396,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0d98zhqqc7qdnxcf0195kd04xmhijc0w2qrn6q61zd0daiswnv98"))))
+         "16yjplfl2sqa7n6404hjn0vwkh0xkdch73q7n5czynihmh3azc7p"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags (list "--disable-schemas-compile"
@@ -1386,7 +1441,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public pluma
   (package
     (name "pluma")
-    (version "1.18.2")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1395,7 +1450,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1z0938yiygxipj2a77n9dv8v4253snrc5gbbnarcnim9xba2j3zz"))))
+         "07rr5asdjr9slmaijp4m8v9vxscihvm36mfrwlp3lv12kry42a05"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(; Tests can not succeed.
@@ -1437,7 +1492,7 @@ can be used as backgrounds in the MATE Desktop environment.")
 (define-public mate-system-monitor
   (package
     (name "mate-system-monitor")
-    (version "1.18.0")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1446,7 +1501,7 @@ can be used as backgrounds in the MATE Desktop environment.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "1wcvrl4lfnjkhywb311p29prf1qiab6iynb6q1fgfsl6za8hsz48"))))
+         "0rs0n5ivmvi355fp3ymcp1jj2sz9viw31475aw7zh7s1l7dn969x"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -1478,7 +1533,7 @@ MATE Desktop to monitor your system resources and usage.")
 (define-public mate-polkit
   (package
     (name "mate-polkit")
-    (version "1.18.1")
+    (version "1.22.0")
     (source
      (origin
        (method url-fetch)
@@ -1487,7 +1542,7 @@ MATE Desktop to monitor your system resources and usage.")
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "15vf2hnyjg8zsw3iiwjwi497yygkmvpnn6w1hik7dfw4a621w0gc"))))
+         "02r8n71xflhvw2hsf6g4svdahzyg3r4n6xamasyzqfhyn0mqmjy0"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -1551,6 +1606,7 @@ used to bring up authentication dialogs.")
        ("mate-terminal"             ,mate-terminal)
        ("mate-themes"               ,mate-themes)
        ("mate-icon-theme"           ,mate-icon-theme)
+       ("mate-power-manager"        ,mate-power-manager)
        ("mate-menu"                 ,mate-menus)
        ("mate-panel"                ,mate-panel)
        ("mate-control-center"       ,mate-control-center)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 5671b83c00..d59028599f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
@@ -606,8 +606,8 @@ problems in numerical linear algebra.")
 routines on parallel distributed memory machines.  ScaLAPACK solves dense and
 banded linear systems, least squares problems, eigenvalue problems, and
 singular value problems.")
-    (license (license:bsd-style "file://LICENSE"
-                                "See LICENSE in the distribution."))))
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
 
 (define-public gnuplot
   (package
@@ -650,13 +650,13 @@ plotting engine by third-party applications like Octave.")
     (version "2.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/OkoSanto/GCTP/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/OkoSanto/GCTP.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0l9aqnqynh9laicn5dxf3rsb1n14xiks79wbyqccirzmjqd1c1x4"))))
+        (base32 "11wqmd443b4nksdbzp1msdws3av948nmwq1xz80w6hka3ss2aigd"))))
     (native-inputs
      `(("fortran" ,gfortran)))
     (build-system gnu-build-system)
@@ -887,121 +887,130 @@ extremely large and complex data collections.")
 
 (define-public hdf-java
   (package
-   (name "hdf-java")
-   (version "3.3.2")
-   (source
-    (origin
-      (method url-fetch)
-      (uri (string-append
-            "http://www.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfjni-"
-            version "/src/CMake-hdfjava-" version ".tar.gz"))
-      (sha256
-       (base32 "0m1gp2aspcblqzmpqbdpfp6giskws85ds6p5gz8sx7asyp7wznpr"))
-      (modules '((guix build utils)))
-      (snippet ; Make sure we don't use the bundled sources and binaries.
-       `(begin
-          (for-each delete-file
-                    (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz"
-                          "HDF4.tar.gz" "HDF5.tar.gz"))
-          (delete-file-recursively ,(string-append "hdfjava-" version "/lib"))
-          #t))))
-   (build-system gnu-build-system)
-   (native-inputs
-    `(("jdk" ,icedtea "jdk")
-      ("automake" ,automake) ; For up to date 'config.guess' and 'config.sub'.
-      ;; For tests:
-      ("hamcrest-core" ,java-hamcrest-core)
-      ("junit" ,java-junit)
-      ("slf4j-simple" ,java-slf4j-simple)))
-   (inputs
-    `(("hdf4" ,hdf4)
-      ("hdf5" ,hdf5)
-      ("zlib" ,zlib)
-      ("libjpeg" ,libjpeg)
-      ("slf4j-api" ,java-slf4j-api)))
-   (arguments
-    `(#:configure-flags
-      (list (string-append "--target=" ,(or (%current-target-system) (%current-system)))
-            (string-append "--with-jdk=" (assoc-ref %build-inputs "jdk") "/include,"
-                           (assoc-ref %build-inputs "jdk") "/lib" )
-            (string-append "--with-hdf4=" (assoc-ref %build-inputs "hdf4") "/lib")
-            (string-append "--with-hdf5=" (assoc-ref %build-inputs "hdf5") "/lib"))
-
-      #:make-flags
-      (list (string-append "HDFLIB=" (assoc-ref %build-inputs "hdf4") "/lib")
-            (string-append "HDF5LIB=" (assoc-ref %build-inputs "hdf5") "/lib")
-            (string-append "ZLIB=" (assoc-ref %build-inputs "zlib") "/lib/libz.so")
-            (string-append "JPEGLIB="
-                           (assoc-ref %build-inputs "libjpeg") "/lib/libjpeg.so")
-            "LLEXT=so")
-
-      #:phases
-      (modify-phases %standard-phases
-        (add-before 'configure 'chdir-to-source
-          (lambda _ (chdir ,(string-append "hdfjava-" version))))
-        (add-before 'configure 'patch-build
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (substitute* "configure"
-              (("COPT=\"") "COPT=\"-O2 ") ; CFLAGS is ignored in Makefiles
-              (("/bin/cat") (which "cat")))
-            ;; Set classpath for compilation
-            (substitute* '("hdf/hdf5lib/Makefile.in"
-                           "hdf/hdf5lib/exceptions/Makefile.in"
-                           "hdf/hdflib/Makefile.in")
-              (("\\$\\(TOP\\)/lib/slf4j-api-1\\.7\\.5\\.jar")
-               (string-append (assoc-ref inputs "slf4j-api")
-                              "/share/java/slf4j-api.jar")))
-            ;; Replace outdated config.sub and config.guess:
-            (with-directory-excursion "config"
-              (for-each (lambda (file)
-                          (copy-file
-                           (string-append (assoc-ref inputs "automake")
-                                          "/share/automake-1.15/" file) file))
-                        '("config.sub" "config.guess")))
-            (mkdir-p (string-append (assoc-ref outputs "out")))
-            ;; Set classpath for tests
-            (let* ((build-dir (getcwd))
-                   (lib (string-append build-dir "/lib"))
-                   (jhdf (string-append lib "/jhdf.jar"))
-                   (jhdf5 (string-append lib "/jhdf5.jar"))
-                   (testjars
-                    (map (lambda (i)
-                           (string-append (assoc-ref inputs i)
-                                          "/share/java/" i ".jar"))
-                         '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple")))
-                   (class-path
-                    (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":")))
-
-              (substitute* '("test/hdf5lib/Makefile.in"
-                             "test/hdf5lib/junit.sh.in"
-                             "examples/runExample.sh.in")
-                (("/usr/bin/test")
-                 (string-append (assoc-ref inputs "coreutils")
-                                "/bin/test"))
-                (("/usr/bin/uname")
-                 (string-append (assoc-ref inputs "coreutils")
-                                "/bin/uname"))
-                (("CLASSPATH=[^\n]*")
-                 (string-append "CLASSPATH=" class-path)))
-              (setenv "CLASSPATH" class-path))
-            #t))
-        (add-before 'check 'build-examples
-          (lambda _
-            (zero? (apply system* `("javac"
-                                    ,@(find-files "examples" ".*\\.java")))))))
+    (name "hdf-java")
+    (version "3.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfjni-"
+             version "/src/CMake-hdfjava-" version ".tar.gz"))
+       (sha256
+        (base32 "0m1gp2aspcblqzmpqbdpfp6giskws85ds6p5gz8sx7asyp7wznpr"))
+       (modules '((guix build utils)))
+       (snippet     ; Make sure we don't use the bundled sources and binaries.
+        `(begin
+           (for-each delete-file
+                     (list "SZip.tar.gz" "ZLib.tar.gz" "JPEG8d.tar.gz"
+                           "HDF4.tar.gz" "HDF5.tar.gz"))
+           (delete-file-recursively ,(string-append "hdfjava-" version "/lib"))
+           #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("jdk" ,icedtea "jdk")
+       ("automake" ,automake) ; For up to date 'config.guess' and 'config.sub'.
+       ;; For tests:
+       ("hamcrest-core" ,java-hamcrest-core)
+       ("junit" ,java-junit)
+       ("slf4j-simple" ,java-slf4j-simple)))
+    (inputs
+     `(("hdf4" ,hdf4)
+       ("hdf5" ,hdf5)
+       ("zlib" ,zlib)
+       ("libjpeg" ,libjpeg)
+       ("slf4j-api" ,java-slf4j-api)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--target=" ,(or (%current-target-system) (%current-system)))
+             (string-append "--with-jdk=" (assoc-ref %build-inputs "jdk") "/include,"
+                            (assoc-ref %build-inputs "jdk") "/lib" )
+             (string-append "--with-hdf4=" (assoc-ref %build-inputs "hdf4") "/lib")
+             (string-append "--with-hdf5=" (assoc-ref %build-inputs "hdf5") "/lib"))
 
-      #:parallel-build? #f
+       #:make-flags
+       (list (string-append "HDFLIB=" (assoc-ref %build-inputs "hdf4") "/lib")
+             (string-append "HDF5LIB=" (assoc-ref %build-inputs "hdf5") "/lib")
+             (string-append "ZLIB=" (assoc-ref %build-inputs "zlib") "/lib/libz.so")
+             (string-append "JPEGLIB="
+                            (assoc-ref %build-inputs "libjpeg") "/lib/libjpeg.so")
+             "LLEXT=so")
 
-      #:parallel-tests? #f ))
-   (home-page "https://support.hdfgroup.org/products/java")
-   (synopsis "Java interface for the HDF4 and HDF5 libraries")
-   (description "Java HDF Interface (JHI) and Java HDF5 Interface (JHI5) use
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir-to-source
+           (lambda _ (chdir ,(string-append "hdfjava-" version)) #t))
+         (add-before 'configure 'patch-build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "configure"
+               (("COPT=\"") "COPT=\"-O2 ") ; CFLAGS is ignored in Makefiles
+               (("/bin/cat") (which "cat")))
+             ;; Set classpath for compilation
+             (substitute* '("hdf/hdf5lib/Makefile.in"
+                            "hdf/hdf5lib/exceptions/Makefile.in"
+                            "hdf/hdflib/Makefile.in")
+               (("\\$\\(TOP\\)/lib/slf4j-api-1\\.7\\.5\\.jar")
+                (string-append (assoc-ref inputs "slf4j-api")
+                               "/share/java/slf4j-api.jar")))
+             ;; Replace outdated config.sub and config.guess:
+             (with-directory-excursion "config"
+               (for-each (lambda (file)
+                           (install-file
+                            (string-append (assoc-ref inputs "automake")
+                                           "/share/automake-"
+                                           ,(version-major+minor (package-version automake))
+                                           "/" file) "."))
+                         '("config.sub" "config.guess")))
+
+             ;; Fix embedded version number
+             (let ((hdf5version (list ,@(string-split (package-version hdf5) #\.))))
+               (substitute* "hdf/hdf5lib/H5.java"
+                 (("1, 8, 19")
+                  (string-join hdf5version ", "))))
+
+             (mkdir-p (string-append (assoc-ref outputs "out")))
+             ;; Set classpath for tests
+             (let* ((build-dir (getcwd))
+                    (lib (string-append build-dir "/lib"))
+                    (jhdf (string-append lib "/jhdf.jar"))
+                    (jhdf5 (string-append lib "/jhdf5.jar"))
+                    (testjars
+                     (map (lambda (i)
+                            (string-append (assoc-ref inputs i)
+                                           "/share/java/" i ".jar"))
+                          '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple")))
+                    (class-path
+                     (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":")))
+
+               (substitute* '("test/hdf5lib/Makefile.in"
+                              "test/hdf5lib/junit.sh.in"
+                              "examples/runExample.sh.in")
+                 (("/usr/bin/test")
+                  (string-append (assoc-ref inputs "coreutils")
+                                 "/bin/test"))
+                 (("/usr/bin/uname")
+                  (string-append (assoc-ref inputs "coreutils")
+                                 "/bin/uname"))
+                 (("CLASSPATH=[^\n]*")
+                  (string-append "CLASSPATH=" class-path)))
+               (setenv "CLASSPATH" class-path))
+             #t))
+         (add-before 'check 'build-examples
+           (lambda _
+             (apply invoke `("javac"
+                             ,@(find-files "examples" ".*\\.java"))))))
+
+       #:parallel-build? #f
+
+       #:parallel-tests? #f ))
+    (home-page "https://support.hdfgroup.org/products/java")
+    (synopsis "Java interface for the HDF4 and HDF5 libraries")
+    (description "Java HDF Interface (JHI) and Java HDF5 Interface (JHI5) use
 the Java Native Interface to wrap the HDF4 and HDF5 libraries, which are
 implemented in C.")
 
-   ;; BSD-style license:
-   (license (license:x11-style
-             "https://support.hdfgroup.org/ftp/HDF5/hdf-java\
+    ;; BSD-style license:
+    (license (license:x11-style
+              "https://support.hdfgroup.org/ftp/HDF5/hdf-java\
 /current/src/unpacked/COPYING"))))
 
 (define-public hdf-eos2
@@ -1344,6 +1353,38 @@ large-scale nonlinear optimization.  It provides C++, C, and Fortran
 interfaces.")
     (license license:epl1.0)))
 
+(define-public clp
+  (package
+    (name "clp")
+    (version "1.17.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.coin-or.org/download/source/"
+                                  "Clp/Clp-" version ".tgz"))
+              (sha256
+               (base32
+                "1wdg820g3iikf9344ijwsc8sy6c0m6im42bzzizm6rlmkvnmxhk9"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Make sure we don't use the bundled software.
+               '(begin
+                  (delete-file-recursively "ThirdParty")
+                  #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openblas" ,openblas)))
+    (home-page "https://www.coin-or.org")
+    (synopsis "Linear programming solver")
+    (description
+     "CLP is a high quality linear programming solver.  Its main strengths are
+its dual and primal Simplex algorithms.  It also has a barrier algorithm for
+linear and quadratic objectives.  There are limited facilities for nonlinear
+and quadratic objectives using the Simplex algorithm.")
+    (license license:epl1.0)))
+
 (define-public ceres
   (package
     (name "ceres-solver")
@@ -1514,15 +1555,14 @@ script files.")
     (version "0.17.2")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://github.com/tpaviot/oce/archive/OCE-"
-               version
-               ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/tpaviot/oce.git")
+              (commit (string-append "OCE-" version))))
+        (file-name (git-file-name name version))
         (patches (search-patches "opencascade-oce-glibc-2.26.patch"))
         (sha256
-          (base32
-            "0vpmnb0k5y2f7lpmwx9pg9yfq24zjvnsak5alzacncfm1hv9b6cd"))))
+          (base32 "0rg5wzkvfmzfl6v2amyryb8dnjad0nn9kyr607wy2gch6rciah69"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -2166,14 +2206,14 @@ sparse system of linear equations A x = b using Guassian elimination.")
 (define-public r-quadprog
   (package
     (name "r-quadprog")
-    (version "1.5-5")
+    (version "1.5-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quadprog" version))
        (sha256
         (base32
-         "0jg3r6abmhp8r9vkbhpx9ldjfw6vyl1m4c5vwlyjhk1mi03656fr"))))
+         "1fnwaz70dhiq4av8apc4wr3yrrpwc2i6lksf8pfi6jw8vzzyahql"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -2187,12 +2227,12 @@ programming problems.")
 (define-public r-pracma
   (package
     (name "r-pracma")
-    (version "2.2.2")
+    (version "2.2.5")
     (source (origin
       (method url-fetch)
       (uri (cran-uri "pracma" version))
       (sha256
-        (base32 "18zhni05gwnxbphl6bmjjxmsgg5wwnnkwlb4g971cqyw3dsd83ki"))))
+        (base32 "0isd3s0i4mzmva8lkh0j76hwjy1w50q7d1n9lhxsnnkgalx3xs1g"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/pracma/")
     (synopsis "Practical numerical math functions")
@@ -2756,12 +2796,12 @@ to BMP, JPEG or PNG image formats.")
              ;; of Debian's Maxima package.
              ;; If Maxima can successfully run this, the binary to be installed
              ;; should be fine.
-             (zero?
-              (system
-               (string-append "./maxima-local "
-                              "--lisp=gcl "
-                              "--batch-string=\"run_testsuite();\" "
-                              "| grep -q \"No unexpected errors found\"")))))
+             (invoke "sh" "-c"
+                     (string-append
+                      "./maxima-local "
+                      "--lisp=gcl "
+                      "--batch-string=\"run_testsuite();\" "
+                      "| grep -q \"No unexpected errors found\""))))
          ;; Make sure the doc and emacs files are found in the
          ;; standard location.  Also configure maxima to find gnuplot
          ;; without having it on the PATH.
@@ -2809,7 +2849,7 @@ point numbers.")
 (define-public wxmaxima
   (package
     (name "wxmaxima")
-    (version "19.01.3")
+    (version "19.03.1")
     (source
      (origin
        (method git-fetch)
@@ -2819,7 +2859,7 @@ point numbers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1vwahx3zxkn3qlv4z0fm7v8wh0wspvs026alrh7ff7s0c2dcy95x"))))
+         "1qkf4jg86xnn3wk3782ffmfz12axb92dkjagcz3ffzw2wi1rclml"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)))
@@ -2911,13 +2951,13 @@ associated functions (eg. contiguous and non-contiguous submatrix views).")
       (version (string-append upstream-version "-" revision))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append "https://github.com/beltoforion/muparser/archive/v"
-                             upstream-version ".tar.gz"))
-         (file-name (string-append name "-" version ".tar.gz"))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/beltoforion/muparser.git")
+               (commit (string-append "v" upstream-version))))
+         (file-name (git-file-name name version))
          (sha256
-          (base32
-           "0277qsi5l23jsck1vhn383bmvc2n9l4a1dl5r9bf7hvjv9ayyrh6"))))
+          (base32 "0f0g4995xngf1pp3zr4p6ai2f8v6f8bxwa0k8ayjjiv1l8h44m24"))))
       (build-system gnu-build-system)
       (arguments
        `(#:configure-flags '("--enable-samples=no")
@@ -3047,13 +3087,13 @@ underway to allow BLIS to select the right optimized kernels at run time:
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; This is a home-made 'configure' script.
                       (let ((out (assoc-ref outputs "out")))
-                        (zero? (system* "./configure" "-p" out
-                                        "-d" "opt"
-                                        "--disable-static"
-                                        "--enable-shared"
-                                        "--enable-threading=openmp"
+                        (invoke "./configure" "-p" out
+                                "-d" "opt"
+                                "--disable-static"
+                                "--enable-shared"
+                                "--enable-threading=openmp"
 
-                                        ,implementation)))))
+                                ,implementation))))
                   (add-before 'check 'show-test-output
                     (lambda _
                       ;; By default "make check" is silent.  Make it verbose.
@@ -3105,13 +3145,13 @@ access to BLIS implementations via traditional BLAS routine calls.")
     (version "0.6.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/JuliaLang/openlibm/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaLang/openlibm.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0a5fpm8nra5ldhjk0cqd2rx1qh32wiarkxmcqcm5xl8z7l4kjm6l"))))
+        (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -3144,13 +3184,13 @@ environments.")
     (version "0.5.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/JuliaLang/openspecfun/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaLang/openspecfun.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1rs1bv8jq751fv9vq79890wqf9xlbjc7lvz3ighzyfczbyjcf18m"))))
+        (base32 "0pfw6l3ch7isz403llx7inxlvavqh01jh1hb9dpidi86sjjx9kfh"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ; no "check" target
@@ -3260,7 +3300,6 @@ packages.")
        #:substitutable? #f
 
        #:modules ((srfi srfi-26)
-                  (srfi srfi-1)
                   (guix build gnu-build-system)
                   (guix build utils))
        #:configure-flags
@@ -3293,11 +3332,11 @@ packages.")
              (let ((doc (string-append (assoc-ref outputs "doc")
                                        "/share/doc/atlas")))
                (mkdir-p doc)
-               (fold (lambda (file previous)
-                       (and previous (zero? (system* "cp" file doc))))
-                     #t (find-files "../ATLAS/doc" ".*")))))
+               (for-each (cut install-file <> doc)
+                         (find-files "../ATLAS/doc" ".*"))
+               #t)))
          (add-after 'check 'check-pt
-           (lambda _ (zero? (system* "make" "ptcheck"))))
+           (lambda _ (invoke "make" "ptcheck")))
          ;; Fix files required to run configure.
          (add-before 'configure 'fix-/bin/sh
            (lambda _
@@ -3332,9 +3371,9 @@ packages.")
                (chdir "../build")
                (format #t "build directory: ~s~%" (getcwd))
                (format #t "configure flags: ~s~%" flags)
-               (zero? (apply system* bash
-                             (string-append srcdir "/configure")
-                             flags))))))))
+               (apply invoke bash
+                      (string-append srcdir "/configure")
+                      flags)))))))
     (synopsis "Automatically Tuned Linear Algebra Software")
     (description
      "ATLAS is an automatically tuned linear algebra software library
@@ -3357,7 +3396,7 @@ Failure to do so will result in a library with poor performance.")
 (define-public glm
   (package
     (name "glm")
-    (version "0.9.9.4")
+    (version "0.9.9.5")
     (source
      (origin
        (method url-fetch)
@@ -3365,7 +3404,7 @@ Failure to do so will result in a library with poor performance.")
                            version  "/glm-" version ".zip"))
        (sha256
         (base32
-         "17vxbqzy4pxciq5i39bgpxz54f7ifqqmcqwwq7m6xfgikwqqqawp"))))
+         "1vmg7hb4xvsa77zpbwiw6lqc7pyaj56dihx6xriny5b9rrh4iqsg"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
@@ -3641,31 +3680,32 @@ set.")
 (define-public hypre
   (package
     (name "hypre")
-    (version "2.14.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/LLNL/hypre/archive/"
-                                  "v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0v515i73bvaz378h5465b1dy9v2gf924zy2q94cpq4qqarawvkqh"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Remove use of __DATE__ and __TIME__ for reproducibility;
-                  ;; substitute the tarball creation time.
-                  (substitute* "src/utilities/HYPRE_utilities.h"
-                    (("Date Compiled: .*$")
-                     "Date Compiled: Apr 11 2018 16:24:59 +0000\"\n"))
-                  #t))))
+    (version "2.15.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/LLNL/hypre.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lvh4ybqkriyqfg2zmic6mrg1981qv1i9vry1fdgsabn81hb71g4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove use of __DATE__ and __TIME__ for reproducibility;
+           ;; substitute the release date.
+           (substitute* "src/utilities/HYPRE_utilities.h"
+             (("Date Compiled: .*$")
+              "Date Compiled: Oct 19 2018 15:23:00 +0000\"\n"))
+           #t))))
     (build-system gnu-build-system)
-    (outputs '("out"                    ;6.1 MiB of headers and libraries
-               "doc"))                  ;4.8 MiB of documentation
+    (outputs '("out"                    ; 6.1 MiB of headers and libraries
+               "doc"))                  ; 4.8 MiB of documentation
     (native-inputs
      `(("doc++" ,doc++)
        ("netpbm" ,netpbm)
-       ("perl" ,perl)                   ;needed to run 'ppmquant' during tests
+       ("perl" ,perl)                   ; needed to run 'ppmquant' during tests
        ("texlive" ,(texlive-union (list texlive-generic-xypic
                                         texlive-fonts-xypic
                                         texlive-latex-hyperref
@@ -3711,16 +3751,14 @@ set.")
            (lambda _
              (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/hypre/lib"))
              (setenv "PATH" (string-append "." ":" (getenv "PATH")))
-             (and (system* "make" "check" "CHECKRUN=")
-                  (fold (lambda (filename result)
-                          (and result
-                               (let ((size (stat:size (stat filename))))
-                                 (when (not (zero? size))
-                                   (format #t "~a size ~d; error indication~%"
-                                           filename size))
-                                 (zero? size))))
-                        #t
-                        (find-files "test" ".*\\.err$")))))
+             (invoke "make" "check" "CHECKRUN=")
+             (for-each (lambda (filename)
+                         (let ((size (stat:size (stat filename))))
+                           (when (positive? size)
+                             (error (format #f "~a size ~d; error indication~%"
+                                            filename size)))))
+                       (find-files "test" ".*\\.err$"))
+             #t))
          (add-after 'install 'install-docs
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Custom install because docs/Makefile doesn't honor ${docdir}.
@@ -3729,7 +3767,7 @@ set.")
                (with-directory-excursion "docs"
                  (for-each (lambda (base)
                              (install-file (string-append base ".pdf") docdir)
-                             (copy-recursively base docdir)) ;html docs
+                             (copy-recursively base docdir)) ; html docs
                            '("HYPRE_usr_manual"
                              "HYPRE_ref_manual")))
                #t))))))
@@ -3904,10 +3942,10 @@ Longest Commons Subsequence of a set of strings.")
                                 (assoc-ref outputs "out"))
                         (chmod wrapper #o555))))
          (replace 'configure
-                  (lambda* (#:key inputs outputs #:allow-other-keys)
-                    (zero? (system* "./configure"
-                                    (string-append "--prefix="
-                                                   (assoc-ref outputs "out")))))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./configure"
+                     (string-append "--prefix="
+                                    (assoc-ref outputs "out"))))))))
     (inputs `(("scm" ,scm)))
     (native-inputs `(("unzip" ,unzip)
                      ("texinfo" ,texinfo)))
@@ -3943,8 +3981,7 @@ as equations, scalars, vectors, and matrices.")
              #t))
          (add-before 'configure 'bootstrap
            (lambda _
-             (zero?
-              (system* "python" "scripts/mk_make.py"))))
+             (invoke "python" "scripts/mk_make.py")))
          ;; work around gnu-build-system's setting --enable-fast-install
          ;; (z3's `configure' is a wrapper around the above python file,
          ;; which fails when passed --enable-fast-install)
@@ -3959,12 +3996,12 @@ as equations, scalars, vectors, and matrices.")
          (add-before 'check 'make-test-z3
            (lambda _
              ;; Build the test suite executable.
-             (zero? (system* "make" "test-z3" "-j"
-                             (number->string (parallel-job-count))))))
+             (invoke "make" "test-z3" "-j"
+                     (number->string (parallel-job-count)))))
          (replace 'check
            (lambda _
              ;; Run all the tests that don't require arguments.
-             (zero? (system* "./test-z3" "/a")))))))
+             (invoke "./test-z3" "/a"))))))
     (native-inputs
      `(("which" ,which)
        ("python" ,python-wrapper)))
@@ -4820,3 +4857,54 @@ implemented as callable objects, and bases of finite element spaces.")
 built on top of DUNE, the Distributed and Unified Numerics Environment.")
     ;; Either GPL version 2 with "runtime exception" or LGPLv3+.
     (license (list license:lgpl3+ license:gpl2))))
+
+(define-public mlucas
+  (package
+    (name "mlucas")
+    (version "18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://mersenneforum.org/mayer/src/C/mlucas_v" version ".txz"))
+       (sha256
+        (base32
+         "1ax12qj9lyvnx4vs3gx7l8r3wx5gjbsdswp5f00ik9z0wz7xf297"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("python2" ,python-2)))
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (chdir "src")
+             (call-with-output-file "Makefile"
+               (lambda (port)
+                 (format port "CC = gcc
+CFLAGS = -O3 ~a -DUSE_THREADS
+LDLIBS = -lm -lpthread -lrt
+Mlucas: $(addsuffix .o,$(basename $(wildcard *.c)))
+"
+                         ,(let ((system (or (%current-target-system)
+                                            (%current-system))))
+                            (cond
+                             ((string-prefix? "x86_64" system) "-DUSE_SSE2")
+                             (else ""))))))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (install-file "Mlucas" bin)
+               (install-file "primenet.py" bin))
+             #t)))))
+    (home-page "https://www.mersenne.org")
+    (synopsis "Great Internet Mersenne Prime Search (GIMPS) distributed computing client")
+    (description "Mlucas performs Lucas-Lehmer primality testing of Mersenne
+numbers in search of a world-record prime.  You may use it to test any
+suitable number as you wish, but it is preferable that you do so in a
+coordinated fashion, as part of the Great Internet Mersenne Prime
+Search (GIMPS).  Mlucas also includes a simple Python script for assignment
+management via the GIMPS project's Primenet server.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 2d7d54dd9d..d383f16255 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -686,13 +686,13 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
 (define-public maven-artifact
   (package
     (name "maven-artifact")
-    (version "3.6.0")
+    (version "3.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.apache.org/dist/maven/"
                                   "maven-3/" version "/source/"
                                   "apache-maven-" version "-src.tar.gz"))
-              (sha256 (base32 "17jrqfqwn569jgnv8m4pqc27csssb0rf6mznpq61l5bnbd6hl75k"))
+              (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 2a910c4bc6..94d4b0855c 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -492,14 +492,14 @@ compromised.")
 (define-public znc
   (package
     (name "znc")
-    (version "1.7.2")
+    (version "1.7.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://znc.in/releases/archive/znc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1ac2csl5jr56vahnxdynlvrhwlvcc1gqxvyifckc6cn5aj7ygd30"))))
+                "0g8i5hsl4kinpz1wp0a2zniidv3w2sd6awq8676fds516wcc6k0y"))))
     ;; TODO: autotools support has been deprecated, and new features like i18n
     ;; are only supported when building with cmake.
     (build-system gnu-build-system)
@@ -553,14 +553,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
 (define-public python-nbxmpp
   (package
     (name "python-nbxmpp")
-    (version "0.6.9")
+    (version "0.6.10")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "nbxmpp" version))
        (sha256
         (base32
-         "03f8dk4kb7ya0pg7v0a0kqms4c7f2bqan5wl4ig0mcwpdmppj3b6"))))
+         "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -578,7 +578,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
 (define-public gajim
   (package
     (name "gajim")
-    (version "1.1.2")
+    (version "1.1.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://gajim.org/downloads/"
@@ -586,7 +586,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
                                   "/gajim-" version ".tar.bz2"))
               (sha256
                (base32
-                "1lx03cgi58z54xb7mhs6bc715lc00w5mpysf9n3q8zgn759fm0rj"))))
+                "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1693,18 +1693,19 @@ building the IRC clients and bots.")
 (define-public toxic
   (package
     (name "toxic")
-    (version "0.8.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/JFreegman/toxic/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1dx6z7k0zpsd7dpysdy23f0hnm49qlikb0mq8fg0y01dsz9vxgak"))
-              (file-name (git-file-name name version))))
+    (version "0.8.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JFreegman/toxic.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests
+     `(#:tests? #f                      ; no tests
        #:make-flags
        (list
         "CC=gcc"
@@ -1721,7 +1722,7 @@ building the IRC clients and bots.")
      `(("c-toxcore" ,c-toxcore)
        ("curl" ,curl)
        ("freealut" ,freealut)
-       ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
+       ("gdk-pixbuf" ,gdk-pixbuf)       ; for libnotify.pc
        ("libconfig" ,libconfig)
        ("libnotify" ,libnotify)
        ("libpng" ,libpng)
@@ -1819,13 +1820,13 @@ QMatrixClient project.")
 (define-public hangups
   (package
     (name "hangups")
-    (version "0.4.6")
+    (version "0.4.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "hangups" version))
        (sha256
-        (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
+        (base32 "1jw4i58cd4j1ymsnhv9224xsi26w8y0qrj6z4nw50dnbl45b6aaa"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1847,6 +1848,9 @@ QMatrixClient project.")
        ("python-reparser" ,python-reparser)
        ("python-requests" ,python-requests)
        ("python-urwid" ,python-urwid)))
+    (native-inputs
+     `(("python-httpretty" ,python-httpretty)
+       ("python-pytest" ,python-pytest)))
     (home-page "https://hangups.readthedocs.io/")
     (synopsis "Instant messaging client for Google Hangouts")
     (description
diff --git a/gnu/packages/microcom.scm b/gnu/packages/microcom.scm
index 67fd5fe355..3a1ec1d3cb 100644
--- a/gnu/packages/microcom.scm
+++ b/gnu/packages/microcom.scm
@@ -46,6 +46,6 @@
     (synopsis "Minimalistic serial line terminal program")
  (description "Microcom is a minimalistic terminal program for accessing
 devices via a serial connection.  It features connection via RS232 serial
-interfaces (including setting of transfer rates) as well as in `telnetmode'
+interfaces (including setting of transfer rates) as well as in @code{telnetmode}
 as specified in rfc2217 and a (Linux specific) CAN mode.")
     (license gpl2+)))
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 4384406227..a34e002a8c 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -152,7 +152,7 @@ etc. via a Web interface.  Features include:
 (define-public zabbix-agentd
   (package
     (name "zabbix-agentd")
-    (version "4.0.2")
+    (version "4.2.0")
     (source
      (origin
        (method url-fetch)
@@ -161,7 +161,7 @@ etc. via a Web interface.  Features include:
              "/zabbix-" version ".tar.gz"))
        (sha256
         (base32
-         "033qb4b9y02jp2ijj8ny0a0yk1mzj0a8ihxrv11h7ln8kpl55vqw"))))
+         "1b9wx6z15jfg8yakb7mlaqqri1ia9i12rgk58c3nparzsjdd9p2c"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -427,16 +427,16 @@ written in Go with pluggable metric collectors.")
 (define-public fswatch
   (package
     (name "fswatch")
-    (version "1.13.0")
+    (version "1.14.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                       (url "https://github.com/emcrisostomo/fswatch.git")
                       (commit version)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r9m3rysqa1kdgghv2i6sv4zrd0v8idsbrp627ys642dl39svir3"))))
+                "1ihn7wp3y7ml2lm8drz2hc6fmgj8kygbygnw8mz7gjax88f9dbx7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index d408701814..99ca4f9007 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.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.
 ;;;
@@ -471,16 +471,16 @@ compression format (.mpc files).")
 (define-public eyed3
   (package
     (name "eyed3")
-    (version "0.8.8")
-    (source (origin
-             (method url-fetch)
-             (uri (pypi-uri "eyeD3" version))
-             (sha256
-              (base32
-               "197lszkyzm377ym5r0ssryfsiz20yjx8y4rii3wc81n92d1qzlaq"))))
+    (version "0.8.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "eyeD3" version))
+       (sha256
+        (base32 "1jb22n1jczxgbpcnfiw12r8dcs74556g1d09mzms44f52kgs7lgc"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f)) ; the required test data contains copyrighted material.
+     `(#:tests? #f))    ; the required test data contains copyrighted material
     (propagated-inputs
      `(("python-grako" ,python-grako)
        ("python-magic" ,python-magic)
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 5a9c438997..e479ccc34e 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016, 2018, 2019 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -91,7 +91,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.21.6")
+    (version "0.21.8")
     (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
-                "17z580gqwsr4xp3x124aapw96pl8hk91c43ld2x75606rim12kcd"))))
+                "0mwpkbjsljj1khlnnjanvw3pgxbhsdl0bh2k9bxnpijn2gqq7q13"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...
@@ -182,7 +182,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.33")
+    (version "0.34")
     (source (origin
               (method url-fetch)
               (uri
@@ -191,7 +191,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "19fp7xkpai4lq3vmpbppgh3ism7lg2sibv237c0sl5a0hls4mq4l"))))
+                "0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 952edca66e..461296f66b 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -161,7 +161,7 @@ bind processes, and much more.")
 (define-public openmpi
   (package
     (name "openmpi")
-    (version "4.0.0")
+    (version "4.0.1")
     (source
      (origin
       (method url-fetch)
@@ -169,8 +169,7 @@ bind processes, and much more.")
                           (version-major+minor version)
                           "/downloads/openmpi-" version ".tar.bz2"))
       (sha256
-       (base32
-        "0srnjwzsmyhka9hhnmqm86qck4w3xwjm8g6sbns58wzbrwv8l2rg"))))
+       (base32 "02cpzcp113gj5hb0j2xc0cqma2fn04i2i0bzf80r71120p9bdryc"))))
     (build-system gnu-build-system)
     (inputs
      `(("hwloc" ,hwloc "lib")
diff --git a/gnu/packages/mtools.scm b/gnu/packages/mtools.scm
index 5be3da0137..b93d5789b9 100644
--- a/gnu/packages/mtools.scm
+++ b/gnu/packages/mtools.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
@@ -23,20 +23,22 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages))
 
 (define-public mtools
   (package
     (name "mtools")
     (version "4.0.23")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "mirror://gnu/mtools/mtools-"
-                          version ".tar.bz2"))
-      (sha256
-       (base32
-        "1qwfxzr964fasxlzhllahk8mzh7c82s808wvly95dsqsflkdp27i"))))
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/mtools/mtools-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1qwfxzr964fasxlzhllahk8mzh7c82s808wvly95dsqsflkdp27i"))
+              (patches
+               (search-patches "mtools-mformat-uninitialized.patch"))))
     (build-system gnu-build-system)
     (home-page "https://www.gnu.org/software/mtools/")
     (synopsis "Access MS-DOS disks without mounting")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 5a2358f19a..aafe420d04 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
@@ -54,6 +54,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system go)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages apr)
   #:use-module (gnu packages audio)
@@ -81,6 +82,7 @@
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages game-development)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gettext)
@@ -93,6 +95,7 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages haskell)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
@@ -446,6 +449,51 @@ background while you work.")
     (home-page "http://www.denemo.org")
     (license license:gpl3+)))
 
+(define-public dumb
+  (package
+    (name "dumb")
+    (version "2.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kode54/dumb.git")
+             (commit version)))
+       (sha256
+        (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f ; no check target
+       #:configure-flags
+       (list "-DBUILD_SHARED_LIBS=ON"
+             "-DBUILD_EXAMPLES=OFF")))
+    (home-page "https://github.com/kode54/dumb")
+    (synopsis "Module audio renderer library")
+    (description
+     "DUMB is a tracker library with support for IT, XM, S3M and MOD files.  It
+targets maximum accuracy to the original formats, with low-pass resonant filters
+for the IT files, accurate timing and pitching, and three resampling quality
+settings (aliasing, linear interpolation and cubic interpolation).")
+    ;; The DUMB license is a bit peculiar.
+    ;; Clause 8 states that clauses 4, 5 and 6 are null and void, leaving only
+    ;; the first three clauses for genuine consideration.
+    ;; Clauses 1, 2 and 3 are analogous to clauses 1, 2 and 3 of the zlib
+    ;; license, a known free software license.
+    ;; Therefore, the DUMB license may be considered a free software license.
+    (license (license:fsf-free "file://LICENSE"))))
+
+(define-public dumb-allegro4
+  (package
+    (inherit dumb)
+    (name "dumb-allegro4")
+    (arguments
+     (substitute-keyword-arguments (package-arguments dumb)
+       ((#:configure-flags flags)
+        `(cons "-DBUILD_ALLEGRO4=ON" ,flags))))
+    (inputs
+     `(("allegro" ,allegro-4)))))
+
 (define-public hydrogen
   (package
     (name "hydrogen")
@@ -721,7 +769,16 @@ audio and video).")
     (arguments
      `(#:scons-flags (list (string-append "PREFIX=" %output))
        #:scons ,scons-python2
-       #:tests? #f)) ;no "check" target
+       #:tests? #f ; no "check" target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'replace-removed-scons-syntax
+           (lambda _
+             (substitute* "SConstruct"
+               (("BoolOption") "BoolVariable")
+               (("PathOption") "PathVariable")
+               (("Options") "Variables"))
+             #t)))))
     (inputs
      `(("boost" ,boost)
        ("jack" ,jack-1)
@@ -1307,7 +1364,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.9.6")
+    (version "0.9.7")
     (source (origin
               (method url-fetch)
               (uri
@@ -1315,7 +1372,7 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1hcngk7mxfrqf8v3r759x3wd0p02nc3q83j8m3k58p408y3mx7nr"))))
+                "0i70wm430fvksi3g985farrkhgb7mwhi7j06dl66cdj1n12jzzk7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1341,7 +1398,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.9.6")
+    (version "0.9.7")
     (source (origin
               (method url-fetch)
               (uri
@@ -1349,7 +1406,7 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0d0kskr9pzdckw7sz4djjkkkgz1fa83zrq5my6qlxn68wqdj6800"))))
+                "1361dqdasrc98q9hcjdwsjx6agfimwnay430887fryi3pslkyd81"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1376,7 +1433,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.9.6")
+    (version "0.9.7")
     (source (origin
               (method url-fetch)
               (uri
@@ -1384,7 +1441,7 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "16a5xix9pn0gl3fr6bv6zl1l9vrzgvy1q7xd8yxzfr3vi5s8x4z9"))))
+                "1vgmcjccpgqqlmmwfg6m91nph81p2xaxydjx82n4l1yrr9lidn9h"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1411,7 +1468,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.9.6")
+    (version "0.9.7")
     (source (origin
               (method url-fetch)
               (uri
@@ -1419,7 +1476,7 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0ddvlpjlg6zr9ckanqhisw0sgm8rxibvj1aj5dxzs9xb2wlwd8rr"))))
+                "1jd4bf6a1ipvg4yhb3xf3maqg68bx97ic9l57djmkirlrkh2a3wp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1630,7 +1687,7 @@ mixing, FFT scopes, MIDI automation and full scriptability in Scheme.")
     (home-page "http://bristol.sourceforge.net/")
     (synopsis "Synthesizer emulator")
     (description
-     "Bristol is an emulation package for a number of different 'classic'
+     "Bristol is an emulation package for a number of different @code{classic}
 synthesizers including additive and subtractive and a few organs.  The
 application consists of the engine, which is called bristol, and its own GUI
 library called brighton that represents all the emulations.  There are
@@ -2002,7 +2059,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
 (define-public zynaddsubfx
   (package
     (name "zynaddsubfx")
-    (version "3.0.3")
+    (version "3.0.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2010,7 +2067,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
                     version "/zynaddsubfx-" version ".tar.bz2"))
               (sha256
                (base32
-                "1hfpiqdm337gl4ynkmmp2qss2m5z8mzqzjrbiyg6w1v4js7l9phi"))))
+                "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -2222,14 +2279,14 @@ computer's keyboard.")
 (define-public aj-snapshot
   (package
     (name "aj-snapshot")
-    (version "0.9.8")
+    (version "0.9.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/aj-snapshot/"
                                   "aj-snapshot-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wilky1g2mb88v2z0520s7sw1dsn10iwanc8id5p6z1xsnhg7b6p"))))
+                "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil"))))
     (build-system gnu-build-system)
     (inputs
      `(("minixml" ,minixml)
diff --git a/gnu/packages/musl.scm b/gnu/packages/musl.scm
index 8592db1373..1356b8d14d 100644
--- a/gnu/packages/musl.scm
+++ b/gnu/packages/musl.scm
@@ -28,14 +28,14 @@
 (define-public musl
   (package
     (name "musl")
-    (version "1.1.21")
+    (version "1.1.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.musl-libc.org/releases/"
                                   "musl-" version ".tar.gz"))
               (sha256
                (base32
-                "0i2z52zgc86af1n1gjiz43hgd85mxjgvgn345zsybja9dxpvchn7"))))
+                "1qr9xqdzziy5bsyyqlh6k8yz056ll55d5yvc0gbhz61ginj422cb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; musl has no tests
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 057e8c3bd9..cb4ca996d4 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -30,7 +30,7 @@
 (define-public nano
   (package
     (name "nano")
-    (version "3.2")
+    (version "4.1")
     (source
      (origin
       (method url-fetch)
@@ -38,7 +38,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "0jb3zq0v84xb0chyynkcp2jhs9660wmpkic294p4p6c96npp69yi"))))
+        "1l11sa957g8njfz9v8q1f2m3w2xz1rf7i7dl37kgvmiql2bfbgc6"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index 9b5498688b..a35ff9b400 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 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 ng0 <ng0@n0.is>
@@ -196,9 +196,11 @@
                       ,patch-makefile-phase)
                     (add-after 'unpack 'remove-unneeded-shebang
                       ,remove-shebang-phase)))))
-    (self-native-input? #t)           ; for `tic'
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(,@(if (%current-target-system)
+             `(("self" ,this-package))            ;for `tic'
+             '())
+       ("pkg-config" ,pkg-config)))
     (native-search-paths
      (list (search-path-specification
             (variable "TERMINFO_DIRS")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 493c59148a..4fc9e52ec7 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -161,7 +161,7 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public socat
   (package
     (name "socat")
-    (version "1.7.3.2")
+    (version "1.7.3.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -169,7 +169,7 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0lcj6zpra33xhgvhmz9l3cqz10v8ybafb8dd1yqkwf1rhy01ymp3"))))
+                "0jnhjijyq74g3wa4ph0am83z6vq7qna7ac0xqjma8s4197z3zmhd"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f))                    ;no 'check' phase
     (inputs `(("openssl" ,openssl)))
@@ -547,7 +547,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.4.1")
+    (version "5.4.2")
     (source
      (origin
        (method url-fetch)
@@ -555,7 +555,7 @@ and up to 1 Mbit/s downstream.")
                            name "_" version ".tar.xz"))
        (sha256
         (base32
-         "0l7chmlvsl22r5cfm6fpm999z2n3sjrnx3ha8f8kf42cn4gmkriy"))))
+         "0mqzs0g2qxd29ihammisg9qf4503sr7d4zas26zjz4an78xkmqzf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
@@ -590,15 +590,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.0.0")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32
-         "17h0ixq7yr6scscjkidaj3dh5x6dfd3f97ggdxlklkz9nbsk0kxw"))))
+        (base32 "13605bpnnbqsdr8ybqnscbz9g422zmyymn4q5aci28vc1wylr1l6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -894,6 +893,30 @@ attacking, testing, and cracking.  All tools are command-line driven, which
 allows for heavy scripting.")
     (license (list license:gpl2+ license:bsd-3))))
 
+(define-public perl-danga-socket
+  (package
+    (name "perl-danga-socket")
+    (version "1.61")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BR/BRADFITZ/"
+                           "Danga-Socket-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0nciapvxnc922ms304af0vavz1kgyr45ard8wc659k9srqar4hwf"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sys-syscall" ,perl-sys-syscall)))
+    (home-page "https://metacpan.org/release/Danga-Socket")
+    (synopsis "Event loop and event-driven async socket base class")
+    (description
+     "Danga::Socket is an abstract base class for objects backed by a socket
+which provides the basic framework for event-driven asynchronous IO, designed
+to be fast.  Danga::Socket is both a base class for objects, and an event
+loop.")
+    (license license:perl-license)))
+
 (define-public perl-data-validate-ip
   (package
     (name "perl-data-validate-ip")
@@ -924,7 +947,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.19")
+  (version "1.20")
   (source
     (origin
       (method url-fetch)
@@ -935,7 +958,7 @@ private (reserved).")
         (string-append "mirror://cpan/authors/id/N/NL/NLNETLABS/Net-DNS-"
                        version ".tar.gz")))
       (sha256
-       (base32 "1myc23vz0m42yyg8iw7bf1pdrmx9ql6fhl2vwk1vwf55v6yphqi0"))))
+       (base32 "06z09igd42s0kg2ps5k7vpypg77zswfryqzbyalbllvjd0mnknbz"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -1108,8 +1131,8 @@ offline emulation of DNS.")
   (home-page "https://metacpan.org/release/Geo-IP")
   (synopsis
     "Look up location and network information by IP Address in Perl")
-  (description "The Perl module 'Geo::IP'.  It looks up location and network
-information by IP Address.")
+  (description "The Perl module @code{Geo::IP}.  It looks up location and
+network information by IP Address.")
   (license license:perl-license)))
 
 (define-public perl-io-socket-inet6
@@ -2177,84 +2200,80 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
     (license license:gpl3+)))
 
 (define-public hcxtools
-  (let* ((commit "2ecfc9a06c2028c47522ea566ccd82b2c1f94647"))
-    (package
-      (name "hcxtools")
-      (version (git-version "0.0.0" "1" commit))
-      (home-page "https://github.com/ZerBea/hcxtools")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url home-page)
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "1hzwrpmxjxl674if0pp5iq06mdi24k7ni7bh1h20isp4s40201n3"))
-                (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (inputs
-       `(("curl" ,curl)
-         ("libpcap" ,libpcap)
-         ("openssl" ,openssl)
-         ("zlib" ,zlib)))
-      (arguments
-       `(#:make-flags (list "CC=gcc"
-                            (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
-         #:tests? #f                    ;no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure)
-           (add-after 'unpack 'set-environment
-             (lambda* (#:key inputs #:allow-other-keys)
-               (setenv "C_INCLUDE_PATH"
-                     (string-append (assoc-ref inputs "curl")
-                                    "/include:"
-                                    (assoc-ref inputs "libpcap")
-                                    "/include:"
-                                    (assoc-ref inputs "openssl")
-                                    "/include:"
-                                    (assoc-ref inputs "zlib")
-                                    "/include:"
+  (package
+    (name "hcxtools")
+    (version "5.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ZerBea/hcxtools.git")
+             (commit version)))
+       (sha256
+        (base32 "1bkl0j6m5q091fas99s83aclcc5kfwacmkgmyg8565z2npvnj7nf"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("curl" ,curl)
+       ("libpcap" ,libpcap)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:make-flags
+       (list "CC=gcc"
+             (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
+       #:tests? #f                      ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'set-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "C_INCLUDE_PATH"
+                     (string-append (assoc-ref inputs "curl") "/include:"
+                                    (assoc-ref inputs "libpcap") "/include:"
+                                    (assoc-ref inputs "openssl") "/include:"
+                                    (assoc-ref inputs "zlib") "/include:"
                                     (getenv "C_INCLUDE_PATH")))
              #t)))))
-      (synopsis "Capture wlan traffic to hashcat and John the Ripper")
-      (description
-       "This package contains a small set of tools to capture and convert
+    (home-page "https://github.com/ZerBea/hcxtools")
+    (synopsis "Capture wlan traffic to hashcat and John the Ripper")
+    (description
+     "This package contains a small set of tools to capture and convert
 packets from wireless devices for use with hashcat or John the Ripper.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public hcxdumptool
-  (let* ((commit "f4799b5da82c5b030a6d99b02d1c1b9dc838ad36"))
-    (package
-      (name "hcxdumptool")
-      (version (git-version "0.0.0" "1" commit))
-      (home-page "https://github.com/ZerBea/hcxdumptool")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url home-page)
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "0qlsin0rws9sshn12faq4spmd0ffzssal36s71vhv6gkhhga7abl"))
-                (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:make-flags (list "CC=gcc"
-                            (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
-         #:tests? #f                    ;no tests
-         #:phases
-         (modify-phases %standard-phases
-           (delete 'configure))))
-      (synopsis "Small tool to capture packets from wlan devices")
-      (description
-       "Small tool to capture packets from WLAN devices.  After capturing,
+  (package
+    (name "hcxdumptool")
+    (version "5.1.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ZerBea/hcxdumptool.git")
+             (commit version)))
+       (sha256
+        (base32 "0h2cc2dfpc83325hwqkxwn0p8qfq5gh1dg0yb1nr8bnffy0b4r4v"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list "CC=gcc"
+             (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
+       #:tests? #f                      ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/ZerBea/hcxdumptool")
+    (synopsis "Small tool to capture packets from wlan devices")
+    (description
+     "Small tool to capture packets from WLAN devices.  After capturing,
 upload the \"uncleaned\" cap to @url{https://wpa-sec.stanev.org/?submit} to
 see if the access point or the client is vulnerable to a dictionary attack.
 Convert the cap file to hccapx format and/or to WPA-PMKID-PBKDF2
 hashline (16800) with @command{hcxpcaptool} from the @code{hcxtools} package
 and check if the WLAN key or the master key was transmitted unencrypted.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public dante
   (package
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
new file mode 100644
index 0000000000..480f64a046
--- /dev/null
+++ b/gnu/packages/nss.scm
@@ -0,0 +1,184 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;;
+;;; 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 nss)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages sqlite)
+  #:use-module (ice-9 match))
+
+(define-public nspr
+  (package
+    (name "nspr")
+    (version "4.21")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
+                   version "/src/nspr-" version ".tar.gz"))
+             (sha256
+              (base32
+               "0nkbgk0x31nfm4xl8la0a3vrnpa8gzkh7g4k65p7n880n73k5shm"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)))
+    (arguments
+     `(#:tests? #f ; no check target
+       #:configure-flags (list "--enable-64bit"
+                               (string-append "LDFLAGS=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib"))
+       ;; Use fixed timestamps for reproducibility.
+       #:make-flags '("SH_DATE='1970-01-01 00:00:01'"
+                      ;; This is epoch 1 in microseconds.
+                      "SH_NOW=100000")
+       #:phases (modify-phases %standard-phases
+                  (add-before 'configure 'chdir
+                    (lambda _ (chdir "nspr") #t)))))
+    (home-page
+     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR")
+    (synopsis "Netscape API for system level and libc-like functions")
+    (description "Netscape Portable Runtime (@dfn{NSPR}) provides a
+platform-neutral API for system level and libc-like functions.  It is used
+in the Mozilla clients.")
+    (license license:mpl2.0)))
+
+(define-public nss
+  (package
+    (name "nss")
+    (version "3.43")
+    (source (origin
+              (method url-fetch)
+              (uri (let ((version-with-underscores
+                          (string-join (string-split version #\.) "_")))
+                     (string-append
+                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+                      "releases/NSS_" version-with-underscores "_RTM/src/"
+                      "nss-" version ".tar.gz")))
+              (sha256
+               (base32
+                "1jp27w4w9nj5pkzrbc1zqj6pa09h2yy7vhzyx5fvg1q86fvw22zk"))
+              ;; Create nss.pc and nss-config.
+              (patches (search-patches "nss-pkgconfig.patch"
+                                       "nss-increase-test-timeout.patch"))))
+    (build-system gnu-build-system)
+    (outputs '("out" "bin"))
+    (arguments
+     `(#:parallel-build? #f ; not supported
+       #:make-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (nspr (string-append (assoc-ref %build-inputs "nspr")))
+              (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
+         (list "-C" "nss" (string-append "PREFIX=" out)
+               "NSDISTMODE=copy"
+               "NSS_USE_SYSTEM_SQLITE=1"
+               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
+               ;; Add $out/lib/nss to RPATH.
+               (string-append "RPATH=" rpath)
+               (string-append "LDFLAGS=" rpath)))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 match)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (setenv "CC" "gcc")
+             ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
+             ,@(match (%current-system)
+                 ((or "x86_64-linux" "aarch64-linux")
+                  `((setenv "USE_64" "1")))
+                 (_
+                  '()))
+             #t))
+         (replace 'check
+           (lambda _
+             ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
+             ;; The later requires a working DNS or /etc/hosts.
+             (setenv "DOMSUF" "localdomain")
+             (setenv "USE_IP" "TRUE")
+             (setenv "IP_ADDRESS" "127.0.0.1")
+
+             ;; The "PayPalEE.cert" certificate expires every six months,
+             ;; leading to test failures:
+             ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
+             ;; work around that, set the time to roughly the release date.
+             (invoke "faketime" "2019-02-01" "./nss/tests/all.sh")))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append (assoc-ref outputs "bin") "/bin"))
+                      (inc (string-append out "/include/nss"))
+                      (lib (string-append out "/lib/nss"))
+                      (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
+                             ((obj) (string-append "dist/" obj)))))
+                 ;; Install nss-config to $out/bin.
+                 (install-file (string-append obj "/bin/nss-config")
+                               (string-append out "/bin"))
+                 (delete-file (string-append obj "/bin/nss-config"))
+                 ;; Install nss.pc to $out/lib/pkgconfig.
+                 (install-file (string-append obj "/lib/pkgconfig/nss.pc")
+                               (string-append out "/lib/pkgconfig"))
+                 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
+                 (rmdir (string-append obj "/lib/pkgconfig"))
+                 ;; Install other files.
+                 (copy-recursively "dist/public/nss" inc)
+                 (copy-recursively (string-append obj "/bin") bin)
+                 (copy-recursively (string-append obj "/lib") lib)
+
+                 ;; FIXME: libgtest1.so is installed in the above step, and it's
+                 ;; (unnecessarily) linked with several NSS libraries, but
+                 ;; without the needed rpaths, causing the 'validate-runpath'
+                 ;; phase to fail.  Here we simply delete libgtest1.so, since it
+                 ;; seems to be used only during the tests.
+                 (delete-file (string-append lib "/libgtest1.so"))
+                 (delete-file (string-append lib "/libgtestutil.so"))
+
+                 #t))))))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
+    (native-inputs `(("perl" ,perl)
+                     ("libfaketime" ,libfaketime))) ;for tests
+
+    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
+    ;; another build is happening concurrently on the same machine.
+    (properties '((timeout . 216000)))  ; 60 hours
+
+    (home-page
+     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
+    (synopsis "Network Security Services")
+    (description
+     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
+support cross-platform development of security-enabled client and server
+applications.  Applications built with NSS can support SSL v2 and v3, TLS,
+PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
+security standards.")
+    (license license:mpl2.0)))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 801611beb1..33acbbec4e 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016-2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
 ;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
@@ -57,6 +57,7 @@
   #: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 sdl)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tex)
@@ -128,10 +129,10 @@
                          "/lib/ocaml/site-lib"))
     #:phases (modify-phases %standard-phases (delete 'configure))))
 
-(define-public ocaml-4.02
+(define-public ocaml-4.07
   (package
     (name "ocaml")
-    (version "4.02.3")
+    (version "4.07.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -140,12 +141,7 @@
                     "/ocaml-" version ".tar.xz"))
               (sha256
                (base32
-                "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3"))
-              (patches
-               (search-patches
-                "ocaml-CVE-2015-8869.patch"
-                "ocaml-Add-a-.file-directive.patch"
-                "ocaml-enable-ocamldoc-reproducibility.patch"))))
+                "1f07hgj5k45cylj1q3k5mk8yi02cwzx849b1fwnwia8xlcfqpr6z"))))
     (build-system gnu-build-system)
     (native-search-paths
      (list (search-path-specification
@@ -203,25 +199,7 @@ patch-/bin/sh-references: ~a: changing `\"/bin/sh\"' to `~a'~%"
          (add-after 'install 'check
            (lambda _
              (with-directory-excursion "testsuite"
-               (invoke "make" "all"))))
-         (add-before 'check 'prepare-socket-test
-           (lambda _
-             (format (current-error-port)
-                     "Spawning local test web server on port 8080~%")
-             (when (zero? (primitive-fork))
-               (run-server (lambda (request request-body)
-                             (values '((content-type . (text/plain)))
-                                     "Hello!"))
-                           'http '(#:port 8080)))
-             (let ((file "testsuite/tests/lib-threads/testsocket.ml"))
-               (format (current-error-port)
-                       "Patching ~a to use localhost port 8080~%"
-                       file)
-               (substitute* file
-                 (("caml.inria.fr") "localhost")
-                 (("80") "8080")
-                 (("HTTP1.0") "HTTP/1.0"))
-               #t))))))
+               (invoke "make" "all")))))))
     (home-page "https://ocaml.org/")
     (synopsis "The OCaml programming language")
     (description
@@ -234,44 +212,21 @@ functional, imperative and object-oriented styles of programming.")
     ;; distributed under lgpl2.0.
     (license (list license:qpl license:lgpl2.0))))
 
-(define-public ocaml-4.07
-  (package
-    (inherit ocaml-4.02)
-    (version "4.07.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://caml.inria.fr/pub/distrib/ocaml-"
-                    (version-major+minor version)
-                    "/ocaml-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1f07hgj5k45cylj1q3k5mk8yi02cwzx849b1fwnwia8xlcfqpr6z"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments ocaml-4.02)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (delete 'prepare-socket-test)
-           (replace 'check
-             (lambda _
-               (with-directory-excursion "testsuite"
-                 (invoke "make" "all"))
-               #t))))))))
-
 (define-public ocaml ocaml-4.07)
 
 (define-public ocamlbuild
   (package
     (name "ocamlbuild")
     (version "0.13.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/ocamlbuild/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1320cfkixs1xlng5av04pa5qjb3ynvi2kl3k1ngqzg5fpi29b0vr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/ocamlbuild.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0v37vjvdqw35yvj8ipmlzmwf1jhip0hbsmcbdcn9cnj12p3mr6k7"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -302,33 +257,201 @@ functional, imperative and object-oriented styles of programming.")
 for building OCaml library and programs.")
     (license license:lgpl2.1+)))
 
+(define-public ocaml-extlib
+  (package
+    (name "ocaml-extlib")
+    (version "1.7.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ygrek.org.ua/p/release/ocaml-extlib/"
+                                  "extlib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0wfs20v1yj5apdbj7214wdsr17ayh0qqq7ihidndvc8nmmwfa1dz"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (native-inputs
+      `(("ocaml-cppo" ,ocaml-cppo)))
+    (home-page "https://github.com/ygrek/ocaml-extlib")
+    (synopsis "Complete and small extension for OCaml standard library")
+    (description "This library adds new functions to OCaml standard library
+modules, modifies some functions in order to get better performances or
+safety (tail-recursive) and also provides new modules which should be useful
+for day to day programming.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-cudf
+  (package
+    (name "ocaml-cudf")
+    (version "0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri "https://gforge.inria.fr/frs/download.php/36602/cudf-0.9.tar.gz")
+        (sha256
+          (base32
+            "0771lwljqwwn3cryl0plny5a5dyyrj4z6bw66ha5n8yfbpcy8clr"))))
+    (build-system ocaml-build-system)
+    (propagated-inputs `(("ocaml-extlib" ,ocaml-extlib)))
+    (native-inputs
+      `(("perl" ,perl)
+        ("ocamlbuild" ,ocamlbuild)
+        ("ocaml-ounit" ,ocaml-ounit)))
+    (arguments
+     `(#:make-flags
+       (list
+         "all" "opt"
+         (string-append "BINDIR=" (assoc-ref %outputs "out")
+                        "/bin"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "http://www.mancoosi.org/cudf/")
+    (synopsis "CUDF library (part of the Mancoosi tools)")
+    (description "CUDF (for Common Upgradeability Description Format) is a
+format for describing upgrade scenarios in package-based Free and Open Source
+Software distribution.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-mccs
+  (package
+    (name "ocaml-mccs")
+    (version "1.1+9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/AltGr/ocaml-mccs")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1i0hhkrqi7rqlainlg5pc4hibbx6b5dp3x99gmav8c3sbfvlk9mc"))))
+    (build-system dune-build-system)
+    (propagated-inputs `(("ocaml-cudf" ,ocaml-cudf)))
+    (home-page "http://www.i3s.unice.fr/~cpjm/misc/")
+    (synopsis "Upgrade path problem solver")
+    (description "Mccs (Multi Criteria CUDF Solver) is a CUDF problem solver.
+Mccs take as input a CUDF problem and computes the best solution according to
+a set of criteria.  It relies on a Integer Programming solver or a
+Pseudo Boolean solver to achieve its task.  Mccs can use a wide set of
+underlying solvers like Cplex, Gurobi, Lpsolver, Glpk, CbC, SCIP or WBO.")
+    (license (list
+               license:bsd-3
+               license:gpl3+
+               ;; With static-linking exception
+               license:lgpl2.1+))))
+
+(define-public ocaml-dose3
+  (package
+    (name "ocaml-dose3")
+    (version "5.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri "https://gforge.inria.fr/frs/download.php/file/36063/dose3-5.0.1.tar.gz")
+              (sha256
+               (base32
+                "00yvyfm4j423zqndvgc1ycnmiffaa2l9ab40cyg23pf51qmzk2jm"))
+              (patches
+               (search-patches
+                "ocaml-dose3-add-unix-dependency.patch"
+                "ocaml-dose3-Fix-for-ocaml-4.06.patch"
+                "ocaml-dose3-dont-make-printconf.patch"
+                "ocaml-dose3-Install-mli-cmx-etc.patch"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
+       #:make-flags
+       (list (string-append "LIBDIR="
+                            (assoc-ref %outputs "out")
+                            "/lib/ocaml/site-lib"))))
+    (propagated-inputs
+      `(("ocaml-graph" ,ocaml-graph)
+        ("ocaml-cudf" ,ocaml-cudf)
+        ("ocaml-extlib" ,ocaml-extlib)
+        ("ocaml-re" ,ocaml-re)))
+    (native-inputs
+      `(("perl" ,perl)
+        ("python" ,python-2) ; for a test script
+        ("python2-pyyaml" ,python2-pyyaml) ; for a test script
+        ("ocaml-extlib" ,ocaml-extlib)
+        ("ocamlbuild" ,ocamlbuild)
+        ("ocaml-cppo" ,ocaml-cppo)))
+    (home-page "http://www.mancoosi.org/software/")
+    (synopsis "Package distribution management framework")
+    (description "Dose3 is a framework made of several OCaml libraries for
+managing distribution packages and their dependencies.  Though not tied to
+any particular distribution, dose3 constitutes a pool of libraries which
+enable analyzing packages coming from various distributions.  Besides basic
+functionalities for querying and setting package properties, dose3 also
+implements algorithms for solving more complex problems such as monitoring
+package evolutions, correct and complete dependency resolution and
+repository-wide uninstallability checks.")
+    ;; with static-linking exception
+    (license license:lgpl2.1+)))
+
+(define-public ocaml-opam-file-format
+  (package
+    (name "ocaml-opam-file-format")
+    (version "2.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ocaml/opam-file-format")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0fqb99asnair0043hhc8r158d6krv5nzvymd0xwycr5y72yrp0hv"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:tests? #f; No tests
+       #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
+                                         "/lib/ocaml/site-lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://opam.ocaml.org")
+    (synopsis "Parser and printer for the opam file syntax")
+    (description "This package contains a parser and a pretty-printer for
+the opam file fomat.")
+    ;; With static-linking exception
+    (license license:lgpl2.1+)))
+
 (define-public opam
   (package
     (name "opam")
-    (version "2.0.3")
+    (version "2.0.4")
     (source (origin
-              (method url-fetch)
-              ;; Use the '-full' version, which includes all the dependencies.
-              (uri (string-append
-                    "https://github.com/ocaml/opam/releases/download/"
-                    version "/opam-full-" version ".tar.gz")
-               ;; (string-append "https://github.com/ocaml/opam/archive/"
-               ;;                    version ".tar.gz")
-               )
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ocaml/opam")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qphm1grxx5j8li7f9qfpih4ylrnjl08b4ym8ma4ln44l56xm285"))))
-    (build-system gnu-build-system)
+                "1yx5k8v5vnnc20fmz5zx8kqd242j48qcknlk6vmkr7rkq886ipq2"))))
+    (build-system ocaml-build-system)
     (arguments
-     '(;; Sometimes, 'make -jX' would fail right after ./configure with
-       ;; "Fatal error: exception End_of_file".
-       #:parallel-build? #f
+     `(#:configure-flags
+       (list (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
 
        ;; For some reason, 'ocp-build' needs $TERM to be set.
-       #:make-flags `("TERM=screen"
-                      ,(string-append "SHELL="
-                                      (assoc-ref %build-inputs "bash")
-                                      "/bin/sh"))
+       #:make-flags
+       (list "TERM=screen"
+             (string-append "SHELL="
+                            (assoc-ref %build-inputs "bash")
+                            "/bin/sh"))
+
        #:test-target "tests"
 
        ;; FIXME: There's an obscure test failure:
@@ -354,12 +477,10 @@ for building OCaml library and programs.")
                          ;; isolated environment when building with opam.
                          ;; This is necessary for packages to find external
                          ;; dependencies, such as a C compiler, make, etc...
-                         (("^add_mounts ro /usr")
-                          "add_mounts ro /gnu /run/current-system /usr"))
+                         (("^add_sys_mounts /usr")
+                          "add_sys_mounts /gnu /run/current-system /usr"))
                        (substitute* "src/client/opamInitDefaults.ml"
                          (("\"bwrap\"") (string-append "\"" bwrap "\"")))
-                       ;; Build dependencies
-                       (apply invoke "make" "lib-ext" make-flags)
                        #t)))
                  (add-before 'check 'pre-check
                    (lambda _
@@ -368,7 +489,9 @@ for building OCaml library and programs.")
                      (invoke "git" "config" "--global" "user.name" "Guix")
                      #t)))))
     (native-inputs
-     `(("git" ,git)                               ;for the tests
+     `(("dune" ,dune)
+       ("git" ,git)                               ;for the tests
+       ("ocaml-cppo" ,ocaml-cppo)
        ("python" ,python)                         ;for the tests
        ("camlp4" ,camlp4)))
     (inputs
@@ -376,6 +499,12 @@ for building OCaml library and programs.")
        ("ncurses" ,ncurses)
        ("curl" ,curl)
        ("bubblewrap" ,bubblewrap)))
+    (propagated-inputs
+     `(("ocaml-cmdliner" ,ocaml-cmdliner)
+       ("ocaml-dose3" ,ocaml-dose3)
+       ("ocaml-mccs" ,ocaml-mccs)
+       ("ocaml-opam-file-format" ,ocaml-opam-file-format)
+       ("ocaml-re" ,ocaml-re)))
     (home-page "http://opam.ocamlpro.com/")
     (synopsis "Package manager for OCaml")
     (description
@@ -386,22 +515,25 @@ Git-friendly development workflow.")
     ;; The 'LICENSE' file waives some requirements compared to LGPLv3.
     (license license:lgpl3)))
 
-(define-public camlp4-4.02
+(define-public camlp4-4.07
   (package
     (name "camlp4")
-    (version "4.02+6")
+    (version "4.07+1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/camlp4/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0icdfzhsbgf89925gc8gl3fm8z2xzszzlib0v9dj5wyzkyv3a342"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ocaml/camlp4.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
+             (sha256
+              (base32
+               "0cxl4hkqcvspvkx4f2k83217rh6051fll9i2yz7cw6m3bq57mdvl"))))
     (build-system gnu-build-system)
-    (native-inputs `(("ocaml" ,ocaml-4.02)
-                     ("which" ,which)))
-    (inputs `(("ocaml" ,ocaml-4.02)))
+    (native-inputs
+     `(("ocaml" ,ocaml-4.07)
+       ("ocamlbuild" ,ocamlbuild)
+       ("which" ,which)))
+    (inputs `(("ocaml" ,ocaml-4.07)))
     (arguments
      '(#:tests? #f                                ;no documented test target
        ;; a race-condition will lead byte and native targets to  mkdir _build
@@ -442,42 +574,21 @@ syntax of OCaml.")
     ;; against the library to be released under any terms.
     (license license:lgpl2.0)))
 
-(define-public camlp4-4.07
-  (package
-    (inherit camlp4-4.02)
-    (name "camlp4")
-    (version "4.07+1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/camlp4/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "143hhxv1i6aq413z0i1pynrjcfl2g5gnh5r3863v6h9z0riqknzc"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (properties
-     `((ocaml4.02-variant . ,(delay camlp4-4.02))))
-    (native-inputs
-     `(("ocaml" ,ocaml-4.07)
-       ("ocamlbuild" ,ocamlbuild)
-       ("which" ,which)))
-    (inputs
-     `(("ocaml" ,ocaml-4.07)))))
-
 (define-public camlp4 camlp4-4.07)
 
 (define-public camlp5
   (package
     (name "camlp5")
     (version "7.07")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/camlp5/camlp5/archive/rel"
-                                  (string-delete #\. version) ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "148r6p93xlxi6v7kbsqv8i70r6av04cyn0109pwss5xj6fw97i52"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/camlp5/camlp5.git")
+             (commit (string-append "rel" (string-delete #\. version)))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c8v45553ccbqha2ypfranqlgw06rr5wjr2hlnrx5bf9jfq0h0dn"))))
     (build-system gnu-build-system)
     (inputs
      `(("ocaml" ,ocaml)))
@@ -556,14 +667,15 @@ written in Objective Caml.")
   (package
     (name "ocaml-num")
     (version "1.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/num/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1xlkd0svc0mgq5s7nrm2rjrsvg15i9wxqkc1kvwjp6sv8vv8bb04"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/num.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0a4mhxgs5hi81d227aygjx35696314swas0vzy3ig809jb7zq4h0"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -600,20 +712,25 @@ the OCaml core distribution.")
   (package
     (name "emacs-tuareg")
     (version "2.2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/tuareg/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ynpfc170f9jqx49biji9npfkvfpflbm29xf24wc7fnxxayr49ig"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/tuareg.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "06zxnn85fk5087iq0zxc5l5n9fz8r0367wylmynbfhc9711vccy6"))))
     (build-system gnu-build-system)
     (native-inputs `(("emacs" ,emacs-minimal)
                      ("opam" ,opam)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure)
          (add-before 'install 'fix-install-path
            (lambda* (#:key outputs #:allow-other-keys)
@@ -663,8 +780,6 @@ Emacs.")
              (let ((out (assoc-ref outputs "out")))
                (setenv "PREFIX" out))
              #t)))))
-    (properties
-     `((ocaml4.02-variant . ,(delay ocaml4.02-menhir))))
     (home-page "http://gallium.inria.fr/~fpottier/menhir")
     (synopsis "Parser generator")
     (description "Menhir is a parser generator.  It turns high-level grammar
@@ -676,12 +791,27 @@ Knuth’s LR(1) parser construction technique.")
     ;; are QPL licensed.
     (license (list license:gpl2+ license:qpl))))
 
-(define-public ocaml4.02-menhir
+(define-public ocaml-bigarray-compat
   (package
-    (inherit ocaml-menhir)
-    (name "ocaml4.02-menhir")
-    (inputs `(("ocaml" ,ocaml-4.02)))
-    (native-inputs '())))
+    (name "ocaml-bigarray-compat")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mirage/bigarray-compat")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06j1dwlpisxshdd0nab4n4x266gg1s1n8na16lpgw3fvcznwnimz"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:tests? #f)); no tests
+    (home-page "https://github.com/mirage/bigarray-compat")
+    (synopsis "OCaml compatibility library")
+    (description "This package contains a compatibility library for
+@code{Stdlib.Bigarray} in OCaml.")
+    (license license:isc)))
 
 (define-public lablgtk
   (package
@@ -694,8 +824,6 @@ Knuth’s LR(1) parser construction technique.")
                (base32
                 "1y38fdvswy6hmppm65qvgdk4pb3ghhnvz7n4ialf46340r1s5p2d"))))
     (build-system gnu-build-system)
-    (properties
-     `((ocaml4.02-variant . ,(delay ocaml4.02-lablgtk))))
     (native-inputs
      `(("camlp4" ,camlp4)
        ("ocaml" ,ocaml)
@@ -746,23 +874,6 @@ libglade (and it an generate OCaml code from .glade files),
 libpanel, librsvg and quartz.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-lablgtk
-  (package
-    (inherit lablgtk)
-    (name "ocaml4.02-lablgtk")
-    (version "2.18.5")
-    (source (origin
-              (method url-fetch)
-              (uri (ocaml-forge-uri name version 1627))
-              (sha256
-               (base32
-                "0cyj6sfdvzx8hw7553lhgwc0krlgvlza0ph3dk9gsxy047dm3wib"))))
-    (native-inputs
-     `(("camlp4" ,camlp4-4.02)
-       ("ocaml" ,ocaml-4.02)
-       ("findlib" ,ocaml4.02-findlib)
-       ("pkg-config" ,pkg-config)))))
-
 (define-public unison
   (package
     (name "unison")
@@ -905,15 +1016,6 @@ compilation and linkage, there are new frontends of the various OCaml
 compilers that can directly deal with packages.")
     (license license:x11)))
 
-(define-public ocaml4.02-findlib
-  (package
-    (inherit ocaml-findlib)
-    (name "ocaml4.02-findlib")
-    (native-inputs
-     `(("camlp4" ,camlp4-4.02)
-       ("m4" ,m4)
-       ("ocaml" ,ocaml-4.02)))))
-
 ;; note that some tests may hang for no obvious reason.
 (define-public ocaml-ounit
   (package
@@ -939,9 +1041,6 @@ compilers that can directly deal with packages.")
 other XUnit testing frameworks.")
     (license license:expat)))
 
-(define-public ocaml4.02-ounit
-  (package-with-ocaml4.02 ocaml-ounit))
-
 (define-public camlzip
   (package
     (name "camlzip")
@@ -984,9 +1083,6 @@ JAR format.  It provides functions for reading from and writing to compressed
 files in these formats.")
     (license license:lgpl2.1+)))
 
-(define-public ocaml4.02-camlzip
-  (package-with-ocaml4.02 camlzip))
-
 (define-public ocamlmod
   (package
     (name "ocamlmod")
@@ -1011,19 +1107,18 @@ files in these formats.")
     (description "Generate modules from OCaml source files.")
     (license license:lgpl2.1+))) ; with an exception
 
-(define-public ocaml4.02-ocamlmod
-  (package-with-ocaml4.02 ocamlmod))
-
 (define-public ocaml-zarith
   (package
     (name "ocaml-zarith")
-    (version "1.4.1")
+    (version "1.7")
     (source (origin
-              (method url-fetch)
-              (uri (ocaml-forge-uri "zarith" version 1574))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ocaml/Zarith")
+                     (commit (string-append "release-" version))))
               (sha256
                (base32
-                "0l36hzmfbvdai2kcgynh13vfdim5x2grnaw61fxqalyjm90c3di3"))))
+                "08x5xnamibhvxl50f1bb3jl9ym0hm6004hmc54xnrnrv7jxz9rvz"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("perl" ,perl)))
@@ -1043,25 +1138,23 @@ over big integers. Small integers are represented as Caml unboxed integers,
 for speed and space economy.")
     (license license:lgpl2.1+))) ; with an exception
 
-(define-public ocaml4.02-zarith
-  (package-with-ocaml4.02 ocaml-zarith))
-
 (define-public ocaml-frontc
   (package
     (name "ocaml-frontc")
-    (version "3.4")
+    (version "3.4.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://www.irit.fr/recherches/ARCHI/MARCH/"
-                                  "frontc/Frontc-" version ".tgz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/BinaryAnalysisPlatform/FrontC")
+                     (commit (string-append
+                               "V_" (string-join (string-split version #\.) "_")))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "16dz153s92dgbw1rrfwbhscy73did87kfmjwyh3qpvs748h1sc4g"))))
+                "1dq5nks0c9gsbr1m8k39m1bniawr5hqcy1r8x5px7naa95ch06ak"))))
     (build-system ocaml-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-after 'install 'install-meta
@@ -1082,6 +1175,7 @@ archive(native) = \"frontc.cmxa\""))))
        #:make-flags (list (string-append "PREFIX="
                                          (assoc-ref %outputs "out"))
                           "OCAML_SITE=$(LIB_DIR)/ocaml/")))
+    (properties `((upstream-name . "FrontC")))
     (home-page "https://www.irit.fr/FrontC")
     (synopsis "C parser and lexer library")
     (description "FrontC is an OCAML library providing a C parser and lexer.
@@ -1093,18 +1187,22 @@ GNU CC attributes.  It provides also a C pretty printer as an example of use.")
 (define-public ocaml-qcheck
   (package
     (name "ocaml-qcheck")
-    (version "0.5.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/c-cube/qcheck/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1zs1pg5cb1iry554v3cdmmiglsrwmsqa9x8zxmzb118fnk5d3ha6"))))
-    (build-system ocaml-build-system)
+    (version "0.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/c-cube/qcheck.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0w83v9ylycsssyn47q8wnkfbvhn5vn10z6i35n5965i2m1r0mmcf"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:test-target "."))
     (native-inputs
-     `(("ounit" ,ocaml-ounit)
+     `(("ocaml-alcotest" ,ocaml-alcotest)
+       ("ocaml-ounit" ,ocaml-ounit)
        ("ocamlbuild" ,ocamlbuild)))
     (home-page "https://github.com/c-cube/qcheck")
     (synopsis "QuickCheck inspired property-based testing for OCaml")
@@ -1114,34 +1212,26 @@ generated instances of the type. It provides combinators for generating
 instances and printing them.")
     (license license:lgpl3+)))
 
-(define-public ocaml4.02-qcheck
-  (package-with-ocaml4.02 ocaml-qcheck))
-
 (define-public ocaml-qtest
   (package
     (name "ocaml-qtest")
-    (version "2.8")
+    (version "2.9")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/vincent-hugot/qtest/"
-                                  "archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/vincent-hugot/qtest/")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ff4if64mc9c7wmhjdgnlnh6k6a713piqzr4043zzj4s5pw7smxk"))))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)))
+                "1ifxc8jndwah82g5k8xaa7jskbv866j4zpd0w41f0pskg4y0z9g1"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:jbuild? #t
+       #:test-target "tests"))
     (propagated-inputs
      `(("ounit" ,ocaml-ounit)
        ("qcheck" ,ocaml-qcheck)))
-    (arguments
-     `(#:tests? #f ; No test target.
-       #:make-flags
-       (list (string-append "BIN=" (assoc-ref %outputs "out") "/bin"))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
     (home-page "https://github.com/vincent-hugot/qtest")
     (synopsis "Inline (Unit) Tests for OCaml")
     (description "Qtest extracts inline unit tests written using a special
@@ -1150,22 +1240,22 @@ qcheck library.  The possibilities range from trivial tests -- extremely simple
 to use -- to sophisticated random generation of test cases.")
     (license license:lgpl3+)))
 
-(define-public ocaml4.02-qtest
-  (package-with-ocaml4.02 ocaml-qtest))
-
 (define-public ocaml-stringext
   (package
     (name "ocaml-stringext")
-    (version "1.4.3")
+    (version "1.5.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/rgrinberg/stringext"
-                                  "/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/rgrinberg/stringext")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "19g6lfn03iki9f8h91hi0yiqn0b3wkxyq08b3y23wgv6jw6mssfh"))))
-    (build-system ocaml-build-system)
+                "0035pyakk0r7pfhkrayvqncpv9mk6lssr455j3prmdcirh6s50d7"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:test-target "."))
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
        ("qtest" ,ocaml-qtest)))
@@ -1178,24 +1268,22 @@ full_split, cut, rcut, etc..")
     ;; where it says `mit'.
     (license license:expat)))
 
-(define-public ocaml4.02-stringext
-  (package-with-ocaml4.02 ocaml-stringext))
-
 (define-public ocaml-bisect
   (package
     (name "ocaml-bisect")
     (version "1.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/gasche/bisect/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0p67fppk5ifb63b00kxwrb1xg75hrqhknng3bsdyw3gxxqyjlpmx"))
-              (patches
-               (search-patches
-                "ocaml-bisect-fix-camlp4-in-another-directory.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/gasche/bisect.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hm5za61qydda6ri3887b4zqqbqilh42x712xnclm1rr7ggga2nh"))
+       (patches
+        (search-patches
+         "ocaml-bisect-fix-camlp4-in-another-directory.patch"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("camlp4" ,camlp4)
@@ -1225,36 +1313,25 @@ a camlp4-based tool that allows to instrument your application before running
 tests.  After application execution, it is possible to generate a report in HTML
 format that is the replica of the application source code annotated with code
 coverage information.")
-    (properties
-     `((ocaml4.02-variant . ,(delay ocaml4.02-bisect))))
     (license license:gpl3+)))
 
-(define-public ocaml4.02-bisect
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-bisect))))
-    (package
-      (inherit base)
-      (native-inputs
-       `(("camlp4" ,camlp4-4.02)
-         ("libxml2" ,libxml2)
-         ("which" ,which)))
-      (propagated-inputs
-       `(("camlp4" ,camlp4-4.02))))))
-
 (define-public dune
   (package
     (name "dune")
-    (version "1.6.3")
+    (version "1.9.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ocaml/dune/releases/"
                                   "download/" version "/dune-" version ".tbz"))
               (sha256
                (base32
-                "0dmf0wbfmgdy5plz1bjiisc2hjgblvxsnrqjmw2c8y45v1h23mdz"))))
+                "0z4jnj0a5vxjqlwksplhag9b3s3iqdcpcpjjzfazv5jdl5cf58f9"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f; require odoc
-       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          (string-append "LIBDIR=" (assoc-ref %outputs "out")
+                                         "/lib/ocaml/site-lib"))
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
@@ -1279,6 +1356,7 @@ following a very simple s-expression syntax.")
        (uri (git-reference
              (url (string-append home-page ".git"))
              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "16kas19iwm4afijv3yxd250s08absabmdcb4yj57wc8r4fmzv5dm"))))
@@ -1289,6 +1367,7 @@ following a very simple s-expression syntax.")
      `(("ocaml-ppx-derivers" ,ocaml-ppx-derivers)
        ("ocamlbuild" ,ocamlbuild)
        ("ocaml-result" ,ocaml-result)))
+    (properties `((upstream-name . "ocaml-migrate-parsetree")))
     (synopsis "OCaml parsetree convertor")
     (description "This library converts between parsetrees of different OCaml
 versions.  For each version, there is a snapshot of the parsetree and conversion
@@ -1313,6 +1392,7 @@ functions to the next and/or previous version.")
      `(#:test-target "."))
     (propagated-inputs
      `(("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)))
+    (properties `((upstream-name . "ppx_tools_versioned")))
     (home-page "https://github.com/let-def/ppx_tools_versioned")
     (synopsis "Variant of ppx_tools")
     (description "This package is a variant of ppx_tools based on
@@ -1344,8 +1424,6 @@ ocaml-migrate-parsetree")
     (arguments
      `(#:tests? #f; Tests fail to build
        #:jbuild? #t))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-bitstring))))
     (home-page "https://github.com/xguerin/bitstring")
     (synopsis "Bitstrings and bitstring matching for OCaml")
     (description "Adds Erlang-style bitstrings and matching over bitstrings as
@@ -1355,86 +1433,22 @@ as primitives to the language, making it exceptionally simple to use and very
 powerful.")
     (license license:isc)))
  
-(define-public ocaml4.02-bitstring
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-bitstring))))
-    (package
-      (inherit base)
-      (version "2.1.1")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append "https://github.com/xguerin/bitstring"
-                                    "/archive/v" version ".tar.gz"))
-                (file-name (string-append "ocaml-bitstring-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "0vy8ibrxccii1jbsk5q6yh1kxjigqvi7lhhcmizvd5gfhf7mfyc8"))
-                (patches (search-patches "ocaml-bitstring-fix-configure.patch"))))
-      (build-system ocaml-build-system)
-      (arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib
-         #:configure-flags
-         (list "CAMLP4OF=camlp4of" "--enable-coverage")
-         #:make-flags
-         (list (string-append "BISECTLIB="
-                              (assoc-ref %build-inputs "bisect")
-                              "/lib/ocaml/site-lib")
-               (string-append "OCAMLCFLAGS=-g -I "
-                              (assoc-ref %build-inputs "camlp4")
-                              "/lib/ocaml/site-lib/camlp4 -I "
-                              "$(BISECTLIB)/bisect")
-               (string-append "OCAMLOPTFLAGS=-g -I "
-                              (assoc-ref %build-inputs "camlp4")
-                              "/lib/ocaml/site-lib/camlp4 -I "
-                              "$(BISECTLIB)/bisect"))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'install 'link-lib
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (stubs (string-append out
-                                            "/lib/ocaml/site-lib/stubslibs"))
-                      (lib (string-append out
-                                          "/lib/ocaml/site-lib/bitstring")))
-                 (mkdir-p stubs)
-                 (symlink (string-append lib "/dllbitstring.so")
-                          (string-append stubs "/dllbitstring.so")))
-               #t))
-           (add-before 'configure 'fix-configure
-             (lambda* (#:key inputs #:allow-other-keys)
-               (substitute* "Makefile.in"
-                 (("@abs_top_builddir@")
-                  (string-append "@abs_top_builddir@:" (getenv "LIBRARY_PATH"))))
-               (substitute* "configure"
-                 (("-/bin/sh") (string-append "-" (assoc-ref inputs "bash")
-                                              "/bin/sh"))))))))
-      (native-inputs
-       `(("camlp4" ,camlp4-4.02)
-         ("time" ,time)
-         ("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("bisect" ,ocaml4.02-bisect)))
-      (propagated-inputs
-       `(("camlp4" ,camlp4-4.02))))))
-
 (define-public ocaml-result
   (package
     (name "ocaml-result")
-    (version "1.2")
+    (version "1.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/janestreet/result"
-                                  "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/janestreet/result")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1pgpfsgvhxnh0i37fkvp9j8nadns9hz9iqgabj4dr519j2gr1xvw"))))
-    (build-system ocaml-build-system)
+                "081ayblszn9pj2rqcif40x6cz2zda48vi45gy49rc2qfc4gszry3"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     `(#:test-target "."))
     (home-page "https://github.com/janestreet/result")
     (synopsis "Compatibility Result module")
     (description "Uses the new result type defined in OCaml >= 4.03 while
@@ -1442,20 +1456,17 @@ staying compatible with older version of OCaml should use the Result module
 defined in this library.")
     (license license:bsd-3)))
  
-(define-public ocaml4.02-result
-  (package-with-ocaml4.02 ocaml-result))
-
 (define-public ocaml-topkg
   (package
     (name "ocaml-topkg")
-    (version "0.8.1")
+    (version "1.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/topkg/releases/"
                                   "topkg-" version ".tbz"))
               (sha256
                (base32
-                "18rrh6fmf708z7dd30amljmcgaypj3kk49jrmrj68r4wnw8004j8"))))
+                "1df61vw6v5bg2mys045682ggv058yqkqb67w7r2gz85crs04d5fw"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("opam" ,opam)
@@ -1476,9 +1487,6 @@ configuration and to specify information about the package's distribution,
 creation and publication procedures.")
     (license license:isc)))
  
-(define-public ocaml4.02-topkg
-  (package-with-ocaml4.02 ocaml-topkg))
-
 (define-public ocaml-rresult
   (package
     (name "ocaml-rresult")
@@ -1510,9 +1518,6 @@ to operate on the result type available from OCaml 4.03 in the standard
 library.")
     (license license:isc)))
 
-(define-public ocaml4.02-rresult
-  (package-with-ocaml4.02 ocaml-rresult))
-
 (define-public ocaml-sqlite3
   (package
     (name "ocaml-sqlite3")
@@ -1543,26 +1548,24 @@ coexistence with the old (version 2) SQLite and its OCaml wrapper
 @code{ocaml-sqlite}.")
     (license license:expat)))
 
-(define-public ocaml4.02-sqlite3
-  (package-with-ocaml4.02 ocaml-sqlite3))
-
 (define-public ocaml-csv
   (package
     (name "ocaml-csv")
-    (version "1.6")
+    (version "2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append
-         "https://github.com/Chris00/ocaml-csv/releases/download/"
-         version "/csv-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/Chris00/ocaml-csv")
+              (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0rv7x843vn6scxj87hzl01yqrl26rc27lr8s7z6rp9vs745g05zj"))))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)))
+         "07qdw8bbvprk78x96pnm807rhs82ks6sxis1cf5nyng8b5nvm2mv"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:package "csv"
+       #:test-target "."))
     (home-page "https://github.com/Chris00/ocaml-csv")
     (synopsis "Pure OCaml functions to read and write CSV")
     (description
@@ -1572,20 +1575,17 @@ read and write files in this format as well as some convenience functions to
 manipulate such data.")
     (license (package-license camlp4))))
 
-(define-public ocaml4.02-csv
-  (package-with-ocaml4.02 ocaml-csv))
-
 (define-public ocaml-mtime
   (package
     (name "ocaml-mtime")
-    (version "0.8.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/mtime/releases/"
                                   "mtime-" version ".tbz"))
               (sha256
                (base32
-                "1hfx4ny2dkw6jf3jppz0640dafl5xgn8r2si9kpwzhmibal8qrah"))))
+                "1qb4ljwirrc3g8brh97s76rjky2cpmy7zm87y7iqd6pxix52ydk3"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
@@ -1594,8 +1594,7 @@ manipulate such data.")
      `(("topkg" ,ocaml-topkg)))
     (arguments
      `(#:tests? #f
-       #:build-flags
-       '("native=true" "native-dynlink=true" "jsoo=false")
+       #:build-flags (list "build" "--with-js_of_ocaml" "false")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))
@@ -1605,37 +1604,28 @@ manipulate such data.")
 spans without being subject to operating system calendar time adjustments.")
     (license license:isc)))
 
-(define-public ocaml4.02-mtime
-  (package-with-ocaml4.02 ocaml-mtime))
-
 (define-public ocaml-cmdliner
   (package
     (name "ocaml-cmdliner")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/cmdliner/releases/"
                                   "cmdliner-" version ".tbz"))
               (sha256
                (base32
-                "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1"))))
+                "0g3w4hvc1cx9x2yp5aqn6m2rl8lf9x1dn754hfq8m1sc1102lxna"))))
     (build-system ocaml-build-system)
     (inputs
      `(("ocaml-result" ,ocaml-result)))
     (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)
-       ("opam" ,opam)))
+     `(("ocamlbuild" ,ocamlbuild)))
     (arguments
      `(#:tests? #f
-       #:build-flags '("native=true" "native-dynlink=true")
+       #:make-flags (list (string-append "LIBDIR=" (assoc-ref %outputs "out")
+                                         "/lib/ocaml/site-lib/cmdliner"))
        #:phases
        (modify-phases %standard-phases
-         (replace 'install
-           ;; The makefile says 'adjust on cli invocation'
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "make" "install" (string-append "PREFIX=" out))
-               #t)))
          (delete 'configure))))
     (home-page "http://erratique.ch/software/cmdliner")
     (synopsis "Declarative definition of command line interfaces for OCaml")
@@ -1647,9 +1637,6 @@ generation. It supports programs with single or multiple commands and respects
 most of the POSIX and GNU conventions.")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-cmdliner
-  (package-with-ocaml4.02 ocaml-cmdliner))
-
 (define-public ocaml-fmt
   (package
     (name "ocaml-fmt")
@@ -1682,9 +1669,6 @@ most of the POSIX and GNU conventions.")
 functions.")
     (license license:isc)))
 
-(define-public ocaml4.02-fmt
-  (package-with-ocaml4.02 ocaml-fmt))
-
 (define-public ocaml-astring
   (package
     (name "ocaml-astring")
@@ -1718,34 +1702,29 @@ adds a few missing functions and fully exploits OCaml's newfound string
 immutability.")
     (license license:isc)))
 
-(define-public ocaml4.02-astring
-  (package-with-ocaml4.02 ocaml-astring))
-
 (define-public ocaml-alcotest
   (package
     (name "ocaml-alcotest")
-    (version "0.7.2")
+    (version "0.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mirage/alcotest/releases/"
                                   "download/" version "/alcotest-" version ".tbz"))
               (sha256
                 (base32
-                  "0g5lzk0gpfx4q8hyhr460gr4lab5wakfxsmhfwvb3yinxwzs95gc"))))
-    (build-system ocaml-build-system)
+                  "0szwjxvaahgynsx0apj81jxj3ki6yz4is9mh2wkcbx66qy7n6fvb"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:tests? #f
-       #:build-flags (list "build")
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     `(#:package "alcotest"
+       #:test-target "."))
     (native-inputs
-     `(("ocamlbuild" ,ocamlbuild)
-       ("opam" ,opam)
-       ("topkg" ,ocaml-topkg)))
+     `(("ocamlbuild" ,ocamlbuild)))
     (propagated-inputs
-     `(("fmt" ,ocaml-fmt)
-       ("astring" ,ocaml-astring)))
+     `(("ocaml-astring" ,ocaml-astring)
+       ("ocaml-cmdliner" ,ocaml-cmdliner)
+       ("ocaml-fmt" ,ocaml-fmt)
+       ("ocaml-result" ,ocaml-result)
+       ("ocaml-uuidm" ,ocaml-uuidm)))
     (home-page "https://github.com/mirage/alcotest")
     (synopsis "Lightweight OCaml test framework")
     (description "Alcotest exposes simple interface to perform unit tests.  It
@@ -1756,62 +1735,48 @@ displayed at the end of the run (with the full logs ready to inspect), with a
 simple (yet expressive) query language to select the tests to run.")
     (license license:isc)))
 
-(define-public ocaml4.02-alcotest
-  (package-with-ocaml4.02 ocaml-alcotest))
-
 (define-public ocaml-ppx-tools
   (package
     (name "ocaml-ppx-tools")
     (version "5.1+4.06.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/alainfrisch/ppx_tools/archive/"
-                            version ".tar.gz"))
-        (sha256 (base32
-                  "0mncpy9v2mcjgnj7s2vqpp2b1ixv54djicfx66ic9wny9d202gj1"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alainfrisch/ppx_tools.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256 (base32
+                "1ww4cspdpgjjsgiv71s0im5yjkr3544x96wsq1vpdacq7dr7zwiw"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases (delete 'configure))
        #:tests? #f))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-ppx-tools))))
+    (properties `((upstream-name . "ppx_tools")))
     (home-page "https://github.com/alainfrisch/ppx_tools")
     (synopsis "Tools for authors of ppx rewriters and other syntactic tools")
     (description "Tools for authors of ppx rewriters and other syntactic tools.")
     (license license:expat)))
 
-(define-public ocaml4.02-ppx-tools
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-ppx-tools))))
-    (package
-      (inherit base)
-      (version "5.0+4.02.0")
-      (source
-        (origin
-          (method url-fetch)
-          (uri (string-append "https://github.com/alainfrisch/ppx_tools/archive/"
-                              version ".tar.gz"))
-          (sha256 (base32
-                    "0rjg4rngi8k9873z4zq95zn9hj8qyw1vcrf11y15aqasfpqq16rc")))))))
-
 (define-public ocaml-react
   (package
     (name "ocaml-react")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "http://erratique.ch/software/react/releases/react-"
                             version ".tbz"))
         (sha256 (base32
-                  "0knhgbngphv5sp1yskfd97crf169qhpc0igr6w7vqw0q36lswyl8"))))
+                  "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"))))
     (build-system ocaml-build-system)
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
-       ("opam" ,opam)))
+       ("opam" ,opam)
+       ("ocaml-topkg" ,ocaml-topkg)))
     (arguments
      `(#:tests? #f
-       #:build-flags (list "native=true" "native-dynlink=true")
+       #:build-flags (list "build")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))
@@ -1823,13 +1788,10 @@ events and signals.  React doesn't define any primitive event or signal, it
 lets the client choose the concrete timeline.")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-react
-  (package-with-ocaml4.02 ocaml-react))
-
 (define-public ocaml-ssl
   (package
     (name "ocaml-ssl")
-    (version "0.5.5")
+    (version "0.5.7")
     (source
       (origin
         (method git-fetch)
@@ -1838,21 +1800,10 @@ lets the client choose the concrete timeline.")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256 (base32
-                  "0fviq8xhp3qk7pmkl7knchywsipxgb7p0z489hj8qnf2sx8xzdmy"))))
-    (build-system ocaml-build-system)
+                  "06zxqnwqkvf7pmj5s44jflkknv01czgbi4nbaac0ys1p7rv99y3x"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:tests? #f
-       #:make-flags (list "OCAMLFIND_LDCONF=ignore")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'bootstrap
-           (lambda* (#:key #:allow-other-keys)
-             (system* "sh" "bootstrap")
-             (substitute* "src/OCamlMakefile"
-               (("/bin/sh") (which "bash")))
-             (substitute* "configure"
-               (("/bin/sh") (which "bash")))
-             #t)))))
+     `(#:test-target "."))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -1865,9 +1816,6 @@ lets the client choose the concrete timeline.")
 through Transport Layer Security (@dfn{TLS}) encrypted connections.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-ssl
-  (package-with-ocaml4.02 ocaml-ssl))
-
 (define-public ocaml-lwt
   (package
     (name "ocaml-lwt")
@@ -1910,9 +1858,6 @@ process.  Also, in many cases, Lwt threads can interact without the need for
 locks or other synchronization primitives.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-lwt
-  (package-with-ocaml4.02 ocaml-lwt))
-
 (define-public ocaml-lwt-log
   (package
     (name "ocaml-lwt-log")
@@ -1931,15 +1876,13 @@ locks or other synchronization primitives.")
        #:jbuild? #t))
     (propagated-inputs
      `(("lwt" ,ocaml-lwt)))
+    (properties `((upstream-name . "lwt_log")))
     (home-page "https://github.com/aantron/lwt_log")
     (synopsis "Logging library")
     (description "This package provides a deprecated logging component for
 ocaml lwt.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-lwt-log
-  (package-with-ocaml4.02 ocaml-lwt-log))
-
 (define-public ocaml-logs
   (package
     (name "ocaml-logs")
@@ -1975,20 +1918,17 @@ performed on sources whose reporting level can be set independently.  Log
 message report is decoupled from logging and is handled by a reporter.")
     (license license:isc)))
 
-(define-public ocaml4.02-logs
-  (package-with-ocaml4.02 ocaml-logs))
-
 (define-public ocaml-fpath
   (package
     (name "ocaml-fpath")
-    (version "0.7.1")
+    (version "0.7.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/fpath/releases/"
                                   "fpath-" version ".tbz"))
               (sha256
                 (base32
-                  "05134ij27xjl6gaqsc65yl19vfj6cjxq3mbm9bf4mija8grdpn6g"))))
+                  "1hr05d8bpqmqcfdavn4rjk9rxr7v2zl84866f5knjifrm60sxqic"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f
@@ -2009,20 +1949,17 @@ POSIX or Windows conventions.  Fpath processes paths without accessing the
 file system and is independent from any system library.")
     (license license:isc)))
 
-(define-public ocaml4.02-fpath
-  (package-with-ocaml4.02 ocaml-fpath))
-
 (define-public ocaml-bos
   (package
     (name "ocaml-bos")
-    (version "0.1.4")
+    (version "0.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://erratique.ch/software/bos/releases/"
                                   "bos-" version ".tbz"))
               (sha256
                 (base32
-                  "1ly66lysk4w6mdy4k1n3ynlpfpq7lw4wshcpzgx58v6x613w5s7q"))))
+                  "1s10iqx8rgnxr5n93lf4blwirjf8nlm272yg5sipr7lsr35v49wc"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f
@@ -2048,9 +1985,6 @@ environment, parse command line arguments, interact with the file system and
 run command line programs.")
     (license license:isc)))
 
-(define-public ocaml4.02-bos
-  (package-with-ocaml4.02 ocaml-bos))
-
 (define-public ocaml-xmlm
   (package
     (name "ocaml-xmlm")
@@ -2080,21 +2014,19 @@ format.  It can process XML documents without a complete in-memory
 representation of the data.")
     (license license:isc)))
 
-(define-public ocaml4.02-xmlm
-  (package-with-ocaml4.02 ocaml-xmlm))
-
 (define-public ocaml-ulex
   (package
     (name "ocaml-ulex")
     (version "1.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/whitequark/ulex/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-                (base32
-                  "16gnbhqs6y2v89vw4igzvxdf2g8ybh5643636824aldcv8sscac0"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/whitequark/ulex.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08yf2x9a52l2y4savjqfjd2xy4pjd1rpla2ylrr9qrz1drpfw4ic"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -2112,9 +2044,6 @@ representation of the data.")
     (description "Lexer generator for Unicode and OCaml.")
     (license license:expat)))
 
-(define-public ocaml4.02-ulex
-  (package-with-ocaml4.02 ocaml-ulex))
-
 (define-public ocaml-uchar
   (package
     (name "ocaml-uchar")
@@ -2142,9 +2071,6 @@ representation of the data.")
 `Uchar` module introduced in OCaml 4.03.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-uchar
-  (package-with-ocaml4.02 ocaml-uchar))
-
 (define-public ocaml-uutf
   (package
     (name "ocaml-uutf")
@@ -2181,9 +2107,6 @@ Functions are also provided to fold over the characters of UTF encoded OCaml
 string values and to directly encode characters in OCaml Buffer.t values.")
     (license license:isc)))
 
-(define-public ocaml4.02-uutf
-  (package-with-ocaml4.02 ocaml-uutf))
-
 (define-public ocaml-jsonm
   (package
     (name "ocaml-jsonm")
@@ -2216,9 +2139,6 @@ the JSON data format.  It can process JSON text without blocking on IO and
 without a complete in-memory representation of the data.")
     (license license:isc)))
 
-(define-public ocaml4.02-jsonm
-  (package-with-ocaml4.02 ocaml-jsonm))
-
 (define-public ocaml-ocurl
   (package
     (name "ocaml-ocurl")
@@ -2247,9 +2167,6 @@ without a complete in-memory representation of the data.")
 multitude of other network protocols (FTP/SMTP/RTSP/etc).")
     (license license:isc)))
 
-(define-public ocaml4.02-ocurl
-  (package-with-ocaml4.02 ocaml-ocurl))
-
 (define-public ocaml-base64
   (package
     (name "ocaml-base64")
@@ -2283,27 +2200,28 @@ that represent binary data in an ASCII string format by translating it into a
 radix-64 representation.  It is specified in RFC 4648.")
     (license license:isc)))
 
-(define-public ocaml4.02-base64
-  (package-with-ocaml4.02 ocaml-base64))
-
 (define-public ocamlify
   (package
     (name "ocamlify")
-    (version "0.0.2")
+    (version "0.0.1")
     (source (origin
               (method url-fetch)
-              (uri (ocaml-forge-uri name version 1209))
+              (uri "https://download.ocamlcore.org/ocamlify/ocamlify/0.0.1/ocamlify-0.0.1.tar.gz")
               (sha256
                (base32
-                "1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii"))))
+                "1j9nb3vjqbdsx3d6jazixgrh776051zkrc06nsc5q5ilp1jhrwkm"))))
     (build-system ocaml-build-system)
     ; tests are done during build
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (delete 'check))))
+         (delete 'check)
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "ocaml" "setup.ml" "-configure" "--prefix"
+                     (assoc-ref outputs "out")))))))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)))
     (home-page "https://forge.ocamlcore.org/projects/ocamlify")
     (synopsis "Include files in OCaml code")
     (description "OCamlify allows to create OCaml source code by including
@@ -2335,8 +2253,6 @@ OCaml code.")
                      (lambda* (#:key outputs #:allow-other-keys)
                        (substitute* "mk/osconfig_unix.mk"
                                     (("CC = cc") "CC = gcc")))))))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-omake))))
     (native-inputs `(("hevea" ,hevea)))
     (home-page "http://projects.camlcity.org/projects/omake.html")
     (synopsis "Build system designed for scalability and portability")
@@ -2358,20 +2274,6 @@ many additional enhancements, including:
                    license:gpl2)))) ; OMake itself, with ocaml linking exception
                                     ; see LICENSE.OMake
 
-(define-public ocaml4.02-omake
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant omake))))
-    (package
-      (inherit base)
-      (version "0.10.2")
-      (source (origin
-                (method url-fetch)
-                (uri (string-append "http://download.camlcity.org/download/"
-                                    "omake-" version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1znnlkpz89hk44byvnl1pr92ym6hwfyyw2qm9clq446r6l2z4m64"))
-                (patches (search-patches "omake-fix-non-determinism.patch")))))))
-
 (define-public ocaml-batteries
   (package
     (name "ocaml-batteries")
@@ -2415,8 +2317,6 @@ many additional enhancements, including:
              (copy-file "_build/build/mkconf.byte" "build/mkconf.byte")
              (invoke "make" "all")
              #t)))))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-batteries))))
     (home-page "http://batteries.forge.ocamlcore.org/")
     (synopsis "Development platform for the OCaml programming language")
     (description "Define a standard set of libraries which may be expected on
@@ -2424,47 +2324,24 @@ every compliant installation of OCaml and organize these libraries into a
 hierarchy of modules.")
     (license license:lgpl2.1+)))
 
-(define-public ocaml4.02-batteries
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-batteries))))
-    (package
-      (inherit base)
-      (version "2.5.3")
-      (source (origin
-                (method url-fetch)
-                (uri (ocaml-forge-uri "batteries" version 1650))
-                (sha256
-                 (base32
-                  "1a97w3x2l1jr5x9kj5gqm1x6b0q9fjqdcsvls7arnl3bvzgsia0n"))))
-      (propagated-inputs '()))))
-
 (define-public ocaml-pcre
   (package
     (name "ocaml-pcre")
-    (version "7.2.3")
+    (version "7.4.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mmottl/pcre-ocaml/archive"
-                                  "/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mmottl/pcre-ocaml")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rj6dw79px4sj2kq0iss2nzq3rnsn9wivvc0f44wa1mppr6njfb3"))))
-    (build-system ocaml-build-system)
+                "11sd8g668h48790lamz0riw9jgnfkaif5qdfa0akcndwa6aj07jf"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'link-lib
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
-                    (lib (string-append out "/lib/ocaml/site-lib/pcre")))
-               (mkdir-p stubs)
-               (symlink (string-append lib "/dllpcre_stubs.so")
-                        (string-append stubs "/dllpcre_stubs.so")))
-             #t)))))
+     `(#:test-target "."))
     (native-inputs
-     `(("batteries" ,ocaml-batteries)
-       ("ocamlbuild" ,ocamlbuild)
+     `(("ocaml-base" ,ocaml-base)
        ("pcre:bin" ,pcre "bin")))
     (propagated-inputs `(("pcre" ,pcre)))
     (home-page "https://mmottl.github.io/pcre-ocaml")
@@ -2474,9 +2351,6 @@ matching and substitution, similar to the functionality offered by the Perl
 language.")
     (license license:lgpl2.1+))); with the OCaml link exception
 
-(define-public ocaml4.02-pcre
-  (package-with-ocaml4.02 ocaml-pcre))
-
 (define-public ocaml-expect
   (package
     (name "ocaml-expect")
@@ -2502,9 +2376,9 @@ language.")
 can match the question using a regular expression or a timeout.")
     (license license:lgpl2.1+))) ; with the OCaml static compilation exception
 
-(define-public ocaml4.02-fileutils
+(define-public ocaml-fileutils
   (package
-    (name "ocaml4.02-fileutils")
+    (name "ocaml-fileutils")
     (version "0.5.3")
     (source (origin
               (method url-fetch)
@@ -2513,11 +2387,9 @@ can match the question using a regular expression or a timeout.")
                (base32
                 "1rc4cqlvdhbs55i85zfbfhz938fsy4fj6kwlkfm3ra7bpwn8bmpd"))))
     (build-system ocaml-build-system)
-    (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib))
     (native-inputs
-     `(("ounit" ,ocaml4.02-ounit)))
+     `(("ocamlbuild" ,ocamlbuild)
+       ("ounit" ,ocaml-ounit)))
     (home-page "http://ocaml-fileutils.forge.ocamlcore.org")
     (synopsis "Pure OCaml functions to manipulate real file and filename")
     (description "Library to provide pure OCaml functions to manipulate real
@@ -2563,9 +2435,6 @@ system in your OCaml projects.  It helps to create standard entry points in your
 build system and allows external tools to analyse your project easily.")
     (license license:lgpl2.1+))) ; with ocaml static compilation exception
 
-(define-public ocaml4.02-oasis
-  (package-with-ocaml4.02 ocaml-oasis))
-
 (define-public ocaml-js-build-tools
   (package
     (name "ocaml-js-build-tools")
@@ -2589,137 +2458,6 @@ from the oasis build log
 @end enumerate")
     (license license:asl2.0)))
 
-(define-public ocaml4.02-js-build-tools
-  (package-with-ocaml4.02 ocaml-js-build-tools))
-
-(define-public ocaml4.02-bin-prot
-  (package
-    (name "ocaml4.02-bin-prot")
-    (version "113.33.03")
-    (source (janestreet-origin "bin_prot" version
-               "1ws8c017z8nbj3vw92ndvjk9011f71rmp3llncbv8r5fc76wqv3l"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/bin_prot/")
-    (synopsis "Binary protocol generator")
-    (description "This library contains functionality for reading and writing
-OCaml-values in a type-safe binary protocol.  It is extremely efficient,
-typically supporting type-safe marshalling and unmarshalling of even highly
-structured values at speeds sufficient to saturate a gigabit connection.  The
-protocol is also heavily optimized for size, making it ideal for long-term
-storage of large amounts of data.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-fieldslib
-  (package
-    (name "ocaml4.02-fieldslib")
-    (version "113.33.03")
-    (source (janestreet-origin "fieldslib" version
-               "1rm3bn54bzk2hlq8f3w067ak8s772w4a8f78i3yh79vxfzq8ncvv"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/fieldslib/")
-    (synopsis "Syntax extension to record fields")
-    (description "Syntax extension to define first class values representing
-record fields, to get and set record fields, iterate and fold over all fields
-of a record and create new record values.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-core
-  (package
-    (name "ocaml4.02-ppx-core")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_core" version
-               "0f69l4czhgssnhb5ds2j9dbqjyz8dp1y3i3x0i4h6pxnms20zbxa"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (inputs `(("ppx-tools" ,ocaml4.02-ppx-tools)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_core/")
-    (synopsis "Standard library for ppx rewriters")
-    (description "Ppx_core is a standard library for OCaml AST transformers.
-It contains:
-@enumerate
-@item various auto-generated AST traversal using an open recursion scheme
-@item helpers for building AST fragments
-@item helpers for matching AST fragments
-@item a framework for dealing with attributes and extension points.
-@end enumerate")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-optcomp
-  (package
-    (name "ocaml4.02-ppx-optcomp")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_optcomp" version
-               "13an8p2r7sd0d5lv54mlzrxdni47408bwqi3bjcx4m6005170q30"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_optcomp/")
-    (synopsis "Optional compilation for OCaml")
-    (description "Ppx_optcomp stands for Optional Compilation.  It is a tool
-used to handle optional compilations of pieces of code depending of the word
-size, the version of the compiler, ...")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-driver
-  (package
-    (name "ocaml4.02-ppx-driver")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_driver" version
-              "011zzr45897j49b7iiybb29k7pspcx36mlnp7nh6pxb8b0ga76fh"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-optcomp" ,ocaml4.02-ppx-optcomp)))
-    (propagated-inputs
-     `(("ppx-optcomp" ,ocaml4.02-ppx-optcomp)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_driver/")
-    (synopsis "Feature-full driver for OCaml AST transformers")
-    (description "A driver is an executable created from a set of OCaml AST
-transformers linked together with a command line frontend.  The aim is to
-provide a tool that can be used to:
-@enumerate
-@item easily view the pre-processed version of a file, no need to construct a
-      complex command line: @command{ppx file.ml} will do
-@item use a single executable to run several transformations: no need to fork
-      many times just for pre-processing
-@item improved errors for misspelled/misplaced attributes and extension points.
-@end enumerate")
-    (license license:asl2.0)))
-
 (define-public ocaml-cppo
   (package
     (name "ocaml-cppo")
@@ -2750,579 +2488,19 @@ programs.  It allows the definition of simple macros and file inclusion.  Cpp oi
 @end enumerate")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-cppo
-  (package-with-ocaml4.02 ocaml-cppo))
-
-;; this package is not reproducible. This is related to temporary filenames
-;; such as findlib_initxxxxx where xxxxx is random.
-(define-public ocaml4.02-ppx-deriving
-  (package
-    (name "ocaml4.02-ppx-deriving")
-    (version "4.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/whitequark/ppx_deriving//archive/v"
-                            version ".tar.gz"))
-        (sha256 (base32
-                  "1fr16g121j6zinwcprzlhx2py4271n9jzs2m9hq2f3qli2b1p0vl"))
-        (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("cppo" ,ocaml4.02-cppo)
-       ("ounit" ,ocaml4.02-ounit)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("result" ,ocaml4.02-result)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)))
-    (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-           (add-before 'install 'fix-environment
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; the installation procedures looks for the installed module
-               (setenv "OCAMLPATH"
-                       (string-append (getenv "OCAMLPATH") ":"
-                                      (getenv "OCAMLFIND_DESTDIR"))))))))
-    (home-page "https://github.com/whitequark/ppx_deriving/")
-    (synopsis "Type-driven code generation for OCaml >=4.02")
-    (description "Ppx_deriving provides common infrastructure for generating
-code based on type definitions, and a set of useful plugins for common tasks.")
-    (license license:expat)))
-
-(define-public ocaml4.02-ppx-type-conv
-  (package
-    (name "ocaml4.02-ppx-type-conv")
-    (version "113.33.03")
-    (source
-      (janestreet-origin "ppx_type_conv" version
-        "1sp602ads2f250nv4d4rgw54d14k7flyhb4w8ff084f657hhmxv2"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-deriving" ,ocaml4.02-ppx-deriving)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-driver" ,ocaml4.02-ppx-driver)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_type_conv/")
-    (synopsis "Support Library for type-driven code generators")
-    (description "The type_conv library factors out functionality needed by
-different preprocessors that generate code from type specifications.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-inline-test
-  (package
-    (name "ocaml4.02-ppx-inline-test")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_inline_test" version
-              "0859ni43fl39dd5g6cxfhq0prxmx59bd2bfq8jafp593ba4q0icq"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (propagated-inputs
-      `(("ppx-driver" ,ocaml4.02-ppx-driver)
-        ("ppx-tools" ,ocaml4.02-ppx-tools)
-        ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_inline_test/")
-    (synopsis "Syntax extension for writing in-line tests in ocaml code")
-    (description "Syntax extension for writing in-line tests in ocaml code.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-bench
-  (package
-    (name "ocaml4.02-ppx-bench")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_bench" version
-                   "1hky3y17qpb925rymf97wv54di9gaqdmkix7wpkjw14qzl512b68"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-inline-test" ,ocaml4.02-ppx-inline-test)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_bench/")
-    (synopsis "Syntax extension for writing in-line benchmarks in ocaml code")
-    (description "Syntax extension for writing in-line benchmarks in ocaml code.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-compare
-  (package
-    (name "ocaml4.02-ppx-compare")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_compare" version
-              "0bfhi33kq9l4q6zzc6svki2csracz5j4731c3npcy6cs73jynn0z"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_compare/")
-    (synopsis "Generation of comparison functions from types")
-    (description "Generation of fast comparison functions from type expressions
-and definitions.  Ppx_compare is a ppx rewriter that derives comparison functions
-from type representations.  The scaffolded functions are usually much faster
-than ocaml's Pervasives.compare.  Scaffolding functions also gives you more
-flexibility by allowing you to override them for a specific type and more safety
-by making sure that you only compare comparable values.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-sexplib
-  (package
-    (name "ocaml4.02-sexplib")
-    (version "113.33.03")
-    (source (janestreet-origin "sexplib" version
-              "1ffjmj8if9lyv965cgn2ld1xv7g52qsr8mqflbm515ck1i8l2ima"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/sexplib/")
-    (synopsis "Library for serializing OCaml values to and from S-expressions")
-    (description "Sexplib contains functionality for parsing and pretty-printing
-s-expressions.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-typerep
-  (package
-    (name "ocaml4.02-typerep")
-    (version "113.33.03")
-    (source (janestreet-origin "typerep" version
-              "1b9v5bmi824a9d4sx0f40ixq0yfcbiqxafg4a1jx95xg9199zafy"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/typerep/")
-    (synopsis "Typerep is a library for runtime types")
-    (description "Typerep is a library for runtime types.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-variantslib
-  (package
-    (name "ocaml4.02-variantslib")
-    (version "113.33.03")
-    (source (janestreet-origin "variantslib" version
-              "05vp799vl38fvl98ga5miwbzh09cnnpapi6q6gdvwyqi6w7s919n"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/variantslib")
-    (synopsis "OCaml variants as first class values")
-    (description "OCaml variants as first class values.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-sexp-conv
-  (package
-    (name "ocaml4.02-ppx-sexp-conv")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_sexp_conv" version
-              "1rbj6d5dl625gdxih34xcrdvikci6h8i2dl9x3wraa4qrgishiw7"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (propagated-inputs
-     `(("sexplib" ,ocaml4.02-sexplib)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_sexp_conv")
-    (synopsis "Generation of S-expression conversion functions from type definitions")
-    (description "Generation of S-expression conversion functions from type
-definitions.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-variants-conv
-  (package
-    (name "ocaml4.02-ppx-variants-conv")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_variants_conv" version
-              "0vnn2l1118cj72413d3f7frlw6yc09l8f64jlzkzbgb9bxpalx34"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-core" ,ocaml4.02-ppx-core)
-       ("variantslib" ,ocaml4.02-variantslib)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_variants_conv")
-    (synopsis "Generation of accessor and iteration functions for ocaml variant
-types")
-    (description "Generation of accessor and iteration functions for ocaml
-variant types.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-here
-  (package
-    (name "ocaml4.02-ppx-here")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_here" version
-              "1ay8lfxi0qg3ib2zkwh4h0vqk3gjmxaz572gzab0bbxyqn3z86v7"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_here")
-    (synopsis "Expands [%here] into its location")
-    (description "Expands [%here] into its location.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-assert
-  (package
-    (name "ocaml4.02-ppx-assert")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_assert" version
-              "1k5kxmqkibp5fk25pgz81f3c1r4mgvb5byzf6bnmxd24y60wn46p"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-compare" ,ocaml4.02-ppx-compare)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)
-       ("ppx-sexplib" ,ocaml4.02-sexplib)
-       ("ppx-here" ,ocaml4.02-ppx-here)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_assert")
-    (synopsis "Assert-like extension nodes that raise useful errors on failure")
-    (description "Assert-like extension nodes that raise useful errors on failure.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-enumerate
-  (package
-    (name "ocaml4.02-ppx-enumerate")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_enumerate" version
-              "15g7yfv9wg2h9r6k6q1zrhygmsl4xrfn25mrb0i4czjjivzmxjh4"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_enumerate")
-    (synopsis "Generate a list containing all values of a finite type")
-    (description "Ppx_enumerate is a ppx rewriter which generates a definition
-for the list of all values of a type (for a type which only has finitely
-many values).")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-let
-  (package
-    (name "ocaml4.02-ppx-let")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_let" version
-              "0gd6d3gdaqfwjcs7gaw1qxc30i584q6a86ndaj1bx1q63xqd6yx9"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_let")
-    (synopsis "Monadic let-bindings")
-    (description "A ppx rewriter for monadic and applicative let bindings,
-match expressions, and if expressions.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-typerep-conv
-  (package
-    (name "ocaml4.02-ppx-typerep-conv")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_typerep_conv" version
-              "0g0xqm9s1b2jjvxb8yp69281q2s3bwz6sibn10fvgcdawpa0rmrg"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("typerep" ,ocaml4.02-typerep)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_typerep_conv")
-    (synopsis "Generation of runtime types from type declarations")
-    (description "Automatic generation of runtime types from type definitions.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-sexp-value
-  (package
-    (name "ocaml4.02-ppx-sexp-value")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_sexp_value" version
-              "0m3ag23mbqm0i2pv1dzilfks15ipa5q60mf57a0cd3p0pvarq10g"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-here" ,ocaml4.02-ppx-here)
-       ("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_sexp_value/")
-    (synopsis "Simplify building s-expressions from ocaml values")
-    (description "A ppx rewriter that simplifies building s-expressions from
-ocaml values.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-pipebang
-  (package
-    (name "ocaml4.02-ppx-pipebang")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_pipebang" version
-              "1965c7hymp26ncmjs0pfxi2s5jlj60z2c9b194lgcwxqiav56pcw"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_pipebang/")
-    (synopsis "Inline reverse application operators `|>` and `|!`")
-    (description "A ppx rewriter that inlines reverse application operators
-@code{|>} and @code{|!}.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-bin-prot
-  (package
-    (name "ocaml4.02-ppx-bin-prot")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_bin_prot" version
-              "173kjv36giik11zgfvsbzwfbpr66dm2pcha9vf990jgzh8hqz39h"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("bin-prot" ,ocaml4.02-bin-prot)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_bin_prot/")
-    (synopsis "Generation of bin_prot readers and writers from types")
-    (description "Generation of binary serialization and deserialization
-functions from type definitions.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-fail
-  (package
-    (name "ocaml4.02-ppx-fail")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_fail" version
-              "1dwgad0f05gqp5rnwf9dcasidpfi7q3mrpazsw3a2vijjblbhjgn"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-here" ,ocaml4.02-ppx-here)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_fail/")
-    (synopsis "Add location to calls to failwiths")
-    (description "Syntax extension that makes [failwiths] always include a
-position.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-custom-printf
-  (package
-    (name "ocaml4.02-ppx-custom-printf")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_custom_printf" version
-              "11jlx0n87g2j1vyyp343dibx7lvvwig5j5q0nq0b80kbsq0k6yr8"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-driver" ,ocaml4.02-ppx-driver)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_custom_printf/")
-    (synopsis "Printf-style format-strings for user-defined string conversion")
-    (description "Extensions to printf-style format-strings for user-defined
-string conversion.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-sexp-message
-  (package
-    (name "ocaml4.02-ppx-sexp-message")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_sexp_message" version
-              "084w1l3gnyw4ri9vbn7bv9b2xkw1520qczfxpxdarfivdrz8xr68"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-here" ,ocaml4.02-ppx-here)
-       ("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_sexp_message/")
-    (synopsis "A ppx rewriter for easy construction of s-expressions")
-    (description "Ppx_sexp_message aims to ease the creation of s-expressions
-in OCaml.  This is mainly motivated by writing error and debugging messages,
-where one needs to construct a s-expression based on various element of the
-context such as function arguments.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-fields-conv
-  (package
-    (name "ocaml4.02-ppx-fields-conv")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_fields_conv" version
-              "1vzbdz27g5qhhfs7wx6rjf979q4xyssxqbmp6sc1sxknbghslbdv"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)
-       ("ppx-core" ,ocaml4.02-ppx-core)))
-    (propagated-inputs
-     `(("fieldslib" ,ocaml4.02-fieldslib)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-type-conv" ,ocaml4.02-ppx-type-conv)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_fields_conv/")
-    (synopsis "Generation of accessor and iteration functions for ocaml records")
-    (description "Ppx_fields_conv is a ppx rewriter that can be used to define
-first class values representing record fields, and additional routines, to get
-and set record fields, iterate and fold over all fields of a record and create
-new record values.")
-    (license license:asl2.0)))
-
 (define-public ocaml-seq
   (package
     (name "ocaml-seq")
     (version "0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/c-cube/seq/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "02lb2d9i12bxrz2ba5wygk2bycan316skqlyri0597q7j9210g8r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/c-cube/seq.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1cjpsc7q76yfgq9iyvswxgic4kfq2vcqdlmxjdjgd4lx87zvcwrv"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:tests? #f
@@ -3341,37 +2519,26 @@ new record values.")
 version=\"[distributed with ocaml]\"
 description=\"dummy package for compatibility\"
 requires=\"\"")))
-             #t))))))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-seq))))
+               #t))))))
     (home-page "https://github.com/c-cube/seq")
     (synopsis "OCaml's standard iterator type")
     (description "This package is a compatibility package for OCaml's
 standard iterator type starting from 4.07.")
     (license license:lgpl2.1+)))
 
-(define-public ocaml4.02-seq
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-seq))))
-    (package
-      (inherit base)
-      (arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib
-         #:tests? #f; no tests
-         #:phases (modify-phases %standard-phases (delete 'configure)))))))
-
 (define-public ocaml-re
   (package
     (name "ocaml-re")
-    (version "1.8.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml/ocaml-re//archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1pdb0mr6z5ax6szblr3f5lbdnqq9grm97cmsfjmdma60yrx2rqhd"))))
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml/ocaml-re.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "07ycb103mr4mrkxfd63cwlsn023xvcjp0ra0k7n2gwrg0mwxmfss"))))
     (build-system dune-build-system)
     (arguments
      `(#:tests? #f
@@ -3392,265 +2559,6 @@ standard iterator type starting from 4.07.")
 @end enumerate")
     (license license:expat)))
 
-(define-public ocaml4.02-re
-  (package-with-ocaml4.02 ocaml-re))
-
-(define-public ocaml4.02-ppx-expect
-  (package
-    (name "ocaml4.02-ppx-expect")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_expect" version
-              "03sbs4s5i8l9syr45v25f5hzy7msd2b47k2a9wsq9m43d4imgkrc"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("fieldslib" ,ocaml4.02-fieldslib)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("ppx-assert" ,ocaml4.02-ppx-assert)
-       ("ppx-compare" ,ocaml4.02-ppx-compare)
-       ("ppx-core" ,ocaml4.02-ppx-core)
-       ("ppx-custom-printf" ,ocaml4.02-ppx-custom-printf)
-       ("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-fields-conv" ,ocaml4.02-ppx-fields-conv)
-       ("ppx-inline-test" ,ocaml4.02-ppx-inline-test)
-       ("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-variants-conv" ,ocaml4.02-ppx-variants-conv)
-       ("re" ,ocaml4.02-re)
-       ("sexplib" ,ocaml4.02-sexplib)
-       ("variantslib" ,ocaml4.02-variantslib)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_expect/")
-    (synopsis "Cram like framework for OCaml")
-    (description "Expect-test is a framework for writing tests in OCaml, similar
-to Cram.  Expect-tests mimic the existing inline tests framework with the
-let%expect_test construct.  The body of an expect-test can contain
-output-generating code, interleaved with %expect extension expressions to denote
-the expected output.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-ppx-jane
-  (package
-    (name "ocaml4.02-ppx-jane")
-    (version "113.33.03")
-    (source (janestreet-origin "ppx_jane" version
-              "0bjxkhmzgm6x9dcvjwybbccn34khbvyyjimcbaja30fp6qcqk5yl"))
-    (build-system ocaml-build-system)
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("ppx-assert" ,ocaml4.02-ppx-assert)
-       ("ppx-bench" ,ocaml4.02-ppx-bench)
-       ("ppx-bin-prot" ,ocaml4.02-ppx-bin-prot)
-       ("ppx-compare" ,ocaml4.02-ppx-compare)
-       ("ppx-custom-printf" ,ocaml4.02-ppx-custom-printf)
-       ("ppx-deriving" ,ocaml4.02-ppx-deriving)
-       ("ppx-enumerate" ,ocaml4.02-ppx-enumerate)
-       ("ppx-expect" ,ocaml4.02-ppx-expect)
-       ("ppx-fail" ,ocaml4.02-ppx-fail)
-       ("ppx-fields-conv" ,ocaml4.02-ppx-fields-conv)
-       ("ppx-here" ,ocaml4.02-ppx-here)
-       ("ppx-inline-test" ,ocaml4.02-ppx-inline-test)
-       ("ppx-let" ,ocaml4.02-ppx-let)
-       ("ppx-pipebang" ,ocaml4.02-ppx-pipebang)
-       ("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("ppx-sexp-message" ,ocaml4.02-ppx-sexp-message)
-       ("ppx-sexp-value" ,ocaml4.02-ppx-sexp-value)
-       ("ppx-typerep-conv" ,ocaml4.02-ppx-typerep-conv)
-       ("ppx-variants-conv" ,ocaml4.02-ppx-variants-conv)))
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/ppx_jane/")
-    (synopsis "Standard Jane Street ppx rewriters")
-    (description "Ppx_jane is a ppx_driver including all standard ppx rewriters.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-core-kernel
-  (package
-    (name "ocaml4.02-core-kernel")
-    (version "113.33.03")
-    (source (janestreet-origin "core_kernel" version
-               "0fl23jrwivixawhxinbwaw9cabqnzn7fini7dxpxjjvkxdc8ip5y"))
-    (native-inputs
-     `(("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("bin_prot" ,ocaml4.02-bin-prot)
-       ("ppx-assert" ,ocaml4.02-ppx-assert)
-       ("ppx-bench" ,ocaml4.02-ppx-bench)
-       ("ppx-driver" ,ocaml4.02-ppx-driver)
-       ("ppx-expect" ,ocaml4.02-ppx-expect)
-       ("ppx-inline-test" ,ocaml4.02-ppx-inline-test)
-       ("typerep" ,ocaml4.02-typerep)
-       ("sexplib" ,ocaml4.02-sexplib)
-       ("variantslib" ,ocaml4.02-variantslib)
-       ("result" ,ocaml4.02-result)
-       ("fieldslib" ,ocaml4.02-fieldslib)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/core_kernel/")
-    (synopsis "Portable standard library for OCaml")
-    (description "Core is an alternative to the OCaml standard library.
-
-Core_kernel is the system-independent part of Core.  It is aimed for cases when
-the full Core is not available, such as in Javascript.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-async-kernel
-  (package
-    (name "ocaml4.02-async-kernel")
-    (version "113.33.03")
-    (source (janestreet-origin "async_kernel" version
-              "04bjsaa23j831r09r38x6xx9nhryvp0z5ihickvhxqa4fb2snyvd"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("core-kernel" ,ocaml4.02-core-kernel)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/async_kernel/")
-    (synopsis "Monadic concurrency library")
-    (description "Async-kernel is a library for concurrent programming in OCaml.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-async-rpc-kernel
-  (package
-    (name "ocaml4.02-async-rpc-kernel")
-    (version "113.33.03")
-    (source (janestreet-origin "async_rpc_kernel" version
-             "0y97h9pkb00v7jpf87m8cbb0ffkclj9g26ph6sq97q8dpisnkjwh"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("async-kernel" ,ocaml4.02-async-kernel)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/async_rpc_kernel/")
-    (synopsis "Platform-independent core of the Async RPC library")
-    (description "Async_rpc_kernel is the platform-independent core of
-the Async RPC library.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-core
-  (package
-    (name "ocaml4.02-core")
-    (version "113.33.03")
-    (source (janestreet-origin "core" version
-              "1znll157qg56g9d3247fjibv1hxv3r9wxgr4nhy19j2vzdh6a268"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("core-kernel" ,ocaml4.02-core-kernel)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/core/")
-    (synopsis "Alternative to OCaml's standard library")
-    (description "The Core suite of libraries is an alternative to OCaml's
-standard library that was developed by Jane Street.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-async-unix
-  (package
-    (name "ocaml4.02-async-unix")
-    (version "113.33.03")
-    (source (janestreet-origin "async_unix" version
-              "1fwl0lfrizllcfjk8hk8m7lsz9ha2jg6qgk4gssfyz377qvpcq4h"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("async-kernel" ,ocaml4.02-async-kernel)
-       ("core" ,ocaml4.02-core)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/async_unix")
-    (synopsis "Asynchronous execution library for Unix")
-    (description "Async_unix is an asynchronous execution library for Unix.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-async-extra
-  (package
-    (name "ocaml4.02-async-extra")
-    (version "113.33.03")
-    (source (janestreet-origin "async_extra" version
-              "1si8jgiq5xh5sl9f2b7f9p17p7zx5h1pg557x2cxywi2x7pxqg4f"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("async-rpc-kernel" ,ocaml4.02-async-rpc-kernel)
-       ("async-unix" ,ocaml4.02-async-unix)
-       ("core" ,ocaml4.02-core)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/async_extra")
-    (synopsis "Extra functionnalities for the async library")
-    (description "Async_extra provides additional functionnalities for the
-async library.")
-    (license license:asl2.0)))
-
-(define-public ocaml4.02-async
-  (package
-    (name "ocaml4.02-async")
-    (version "113.33.03")
-    (source (janestreet-origin "async" version
-              "0210fyhcs12kpmmd26015bgivkfd2wqkyn3c5wd7688d0f872y25"))
-    (native-inputs
-     `(("oasis" ,ocaml-oasis)
-       ("js-build-tools" ,ocaml4.02-js-build-tools)
-       ("ppx-jane" ,ocaml4.02-ppx-jane)
-       ("opam" ,opam)))
-    (propagated-inputs
-     `(("async-extra" ,ocaml4.02-async-extra)))
-    (build-system ocaml-build-system)
-    (arguments
-      (ensure-keyword-arguments janestreet-arguments
-       `(#:ocaml ,ocaml-4.02
-         #:findlib ,ocaml4.02-findlib)))
-    (home-page "https://github.com/janestreet/async")
-    (synopsis "Monadic concurrency library")
-    (description "Async is a library for concurrent programming in OCaml.")
-    (license license:asl2.0)))
-
 (define-public ocaml-ocplib-endian
   (package
     (name "ocaml-ocplib-endian")
@@ -3676,46 +2584,24 @@ strings, bytes and bigstring (Bigarrys of chars), and provides submodules for
 big- and little-endian, with their unsafe counter-parts.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-ocplib-endian
-  (package-with-ocaml4.02 ocaml-ocplib-endian))
-
-(define-public ocaml4.02-cstruct
+(define-public ocaml-cstruct
   (package
-    (name "ocaml4.02-cstruct")
-    (version "2.3.1")
+    (name "ocaml-cstruct")
+    (version "4.0.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ocaml-cstruct/"
-                                  "archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mirage/ocaml-cstruct")
+                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "15qpdc8421shq4pprdas9jznpva45229wkfqbwcxw9khaiiz7949"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
+                "0m4bz0digcsc8l2msfikwcbi1y371kccx6xnkwrz212mf5mp98bv"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:configure-flags
-       (list "--enable-lwt" "--enable-async")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'link-stubs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (stubs (string-append out "/lib/ocaml/site-lib/stubslibs"))
-                    (lib (string-append out "/lib/ocaml/site-lib/cstruct")))
-               (mkdir-p stubs)
-               (symlink (string-append lib "/dllcstruct_stubs.so")
-                        (string-append stubs "/dllcstruct_stubs.so"))))))))
+     `(#:package "cstruct"
+       #:test-target "."))
     (native-inputs
-     `(("ounit" ,ocaml4.02-ounit)
-       ("ppx-tools" ,ocaml4.02-ppx-tools)
-       ("camlp4" ,camlp4-4.02)))
-    (propagated-inputs
-     `(("ocplib-endian" ,ocaml4.02-ocplib-endian)
-       ("lwt" ,ocaml4.02-lwt)
-       ("async" ,ocaml4.02-async)
-       ("sexplib" ,ocaml4.02-sexplib)))
+     `(("ocaml-alcotest" ,ocaml-alcotest)))
     (home-page "https://github.com/mirage/ocaml-cstruct")
     (synopsis "Access C structures via a camlp4 extension")
     (description "Cstruct is a library and syntax extension to make it easier
@@ -3723,53 +2609,53 @@ to access C-like structures directly from OCaml.  It supports both reading and
 writing to these structures, and they are accessed via the Bigarray module.")
     (license license:isc)))
 
-(define-public ocaml4.02-hex
+(define-public ocaml-hex
   (package
-    (name "ocaml4.02-hex")
-    (version "1.0.0")
+    (name "ocaml-hex")
+    (version "1.4.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ocaml-hex/"
-                                  "archive/" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mirage/ocaml-hex")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0s63g0b8gfv2xm6fv6xg7bva8h76b5pcjb0zw3f8cygs0lq9072v"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
+                "0c8nhibcwy0ykzca4jn3gqb8ylq21ff88y82gl60wyzijr64rn0q"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib))
+     `(#:test-target "."))
     (propagated-inputs
-     `(("cstruct" ,ocaml4.02-cstruct)))
+     `(("ocaml-bigarray-compat" ,ocaml-bigarray-compat)
+       ("cstruct" ,ocaml-cstruct)))
     (home-page "https://github.com/mirage/ocaml-hex/")
     (synopsis "Minimal library providing hexadecimal converters")
     (description "Hex is a minimal library providing hexadecimal converters.")
     (license license:isc)))
 
-(define-public ocaml4.02-ezjsonm
+(define-public ocaml-ezjsonm
   (package
-    (name "ocaml4.02-ezjsonm")
-    (version "0.4.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ezjsonm/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1kag0z2xlk4rw73a240dmkxh9rj6psxxcxkm7d7z0rrj6hzjajgq"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
+    (name "ocaml-ezjsonm")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mirage/ezjsonm.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "064j9pzy01p3dv947khqyn7fkjbs3jmrqsg8limb4abnlaqxxs2s"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:package "ezjsonm"
+       #:test-target "."))
     (native-inputs
-     `(("alcotest" ,ocaml4.02-alcotest)))
+     `(("ocaml-alcotest" ,ocaml-alcotest)))
     (propagated-inputs
-     `(("hex" ,ocaml4.02-hex)
-       ("jsonm" ,ocaml4.02-jsonm)
-       ("lwt" ,ocaml4.02-lwt)
-       ("sexplib" ,ocaml4.02-sexplib)))
-    (arguments
-     `(#:configure-flags (list "--enable-lwt")
-       #:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib))
+     `(("ocaml-hex" ,ocaml-hex)
+       ("ocaml-jsonm" ,ocaml-jsonm)
+       ("ocaml-sexplib" ,ocaml-sexplib)))
     (home-page "https://github.com/mirage/ezjsonm/")
     (synopsis "Read and write JSON data")
     (description "Ezjsonm provides more convenient (but far less flexible) input
@@ -3778,30 +2664,35 @@ the need to write signal code, which is useful for quick scripts that manipulate
 JSON.")
     (license license:isc)))
 
-(define-public ocaml4.02-uri
+(define-public ocaml-uri
   (package
-    (name "ocaml4.02-uri")
-    (version "1.9.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mirage/ocaml-uri/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "02bzrag79prx261rxf9mlak749pwf4flpfl8p012x1xznv9m0clc"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
+    (name "ocaml-uri")
+    (version "2.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mirage/ocaml-uri.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ppbav41mszpjcl0zi3fyg958cxyfs57i7kvha4ds9ydn89bjmrh"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib))
+     `(#:test-target "."
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'update-deprecated
+           (lambda _
+             (substitute* "lib/uri.ml"
+               (("Re.get") "Re.Group.get")))))))
     (native-inputs
-     `(("ounit" ,ocaml4.02-ounit)))
+     `(("ocaml-ounit" ,ocaml-ounit)
+       ("ocaml-ppx-sexp-conv" ,ocaml-ppx-sexp-conv)))
     (propagated-inputs
-     `(("ppx-sexp-conv" ,ocaml4.02-ppx-sexp-conv)
-       ("re" ,ocaml4.02-re)
-       ("ppx-deriving" ,ocaml4.02-ppx-deriving)
-       ("sexplib" ,ocaml4.02-sexplib)
-       ("stringext" ,ocaml4.02-stringext)))
+     `(("ocaml-re" ,ocaml-re)
+       ("ocaml-sexplib0" ,ocaml-sexplib0)
+       ("ocaml-stringext" ,ocaml-stringext)))
     (home-page "https://github.com/mirage/ocaml-uri")
     (synopsis "RFC3986 URI/URL parsing library")
     (description "OCaml-uri is a library for parsing URI/URL in the RFC3986 format.")
@@ -3810,70 +2701,38 @@ JSON.")
 (define-public ocaml-easy-format
   (package
     (name "ocaml-easy-format")
-    (version "1.2.0")
+    (version "1.3.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mjambon/easy-format/"
-                                  "archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/mjambon/easy-format")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1zcz682y9figa84k7lgdjcab5qbzk3yy14ygfqp2dhhrvjygm252"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
+                "0jfncci15b8sf1y72yrxfjlsmhs9aavcd14vwz4d7kj8k9w9c4qk"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     `(#:jbuild? #t))
     (home-page "https://github.com/mjambon/easy-format")
     (synopsis "Interface to the Format module")
     (description "Easy-format is a high-level and functional interface to the
 Format module of the OCaml standard library.")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-easy-format
-  (package-with-ocaml4.02 ocaml-easy-format))
-
-(define-public optcomp
-  (package
-    (name "optcomp")
-    (version "1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/diml/optcomp/archive/"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0hhhb2gisah1h22zlg5iszbgqxdd7x85cwd57bd4mfkx9l7dh8jh"))
-              (file-name (string-append name "-" version ".tar.gz"))))
-    (build-system ocaml-build-system)
-    (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:use-make? #t
-       #:make-flags
-       (list (string-append "BUILDFLAGS=\"-cflags -I,"
-                            (assoc-ref %build-inputs "camlp4")
-                            "/lib/ocaml/site-lib/camlp4/Camlp4Parsers\""))))
-    (native-inputs `(("camlp4" ,camlp4-4.02)))
-    (propagated-inputs `(("camlp4" ,camlp4-4.02)))
-    (home-page "https://github.com/diml/optcomp")
-    (synopsis "Optional compilation for OCaml")
-    (description "Optcomp provides an optional compilation facility with
-cpp-like directives.")
-    (license license:bsd-3)))
-
 (define-public ocaml-piqilib
   (package
     (name "ocaml-piqilib")
     (version "0.6.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/alavrik/piqi/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1ssccnwqzfyf7syfq2fv4zyhwayxwd75rhq9y28mvq1w6qbww4l7"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alavrik/piqi.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0lyqllmfsxmwlg7qidy92kvxi9n39lvachmydcyi81f8p07ykd2d"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:phases
@@ -3922,9 +2781,6 @@ cpp-like directives.")
 tool and piqi-ocaml.")
     (license license:asl2.0)))
 
-(define-public ocaml4.02-piqilib
-  (package-with-ocaml4.02 ocaml-piqilib))
-
 (define-public ocaml-uuidm
   (package
     (name "ocaml-uuidm")
@@ -3956,9 +2812,6 @@ unique identifiers (UUIDs) version 3, 5 (named based with MD5, SHA-1 hashing)
 and 4 (random based) according to RFC 4122.")
     (license license:isc)))
 
-(define-public ocaml4.02-uuidm
-  (package-with-ocaml4.02 ocaml-uuidm))
-
 (define-public ocaml-graph
   (package
     (name "ocaml-graph")
@@ -3987,9 +2840,6 @@ and 4 (random based) according to RFC 4122.")
     (description "OCamlgraph is a generic graph library for OCaml.")
     (license license:lgpl2.1)))
 
-(define-public ocaml4.02-graph
-  (package-with-ocaml4.02 ocaml-graph))
-
 (define-public ocaml-piqi
   (package
     (name "ocaml-piqi")
@@ -4018,8 +2868,6 @@ and 4 (random based) according to RFC 4122.")
     (propagated-inputs
      `(("num" ,ocaml-num)
        ("piqilib" ,ocaml-piqilib)))
-    (properties
-      `((ocaml4.02-variant . ,(delay ocaml4.02-piqi))))
     (home-page "https://github.com/alavrik/piqi-ocaml")
     (synopsis "Protocol serialization system for OCaml")
     (description "Piqi is a multi-format data serialization system for OCaml.
@@ -4027,60 +2875,55 @@ It provides a uniform interface for serializing OCaml data structures to JSON,
 XML and Protocol Buffers formats.")
     (license license:asl2.0)))
 
-(define-public ocaml4.02-piqi
-  (let ((base (package-with-ocaml4.02 (strip-ocaml4.02-variant ocaml-piqi))))
-    (package
-      (inherit base)
-      (propagated-inputs
-       `(("piqilib" ,ocaml4.02-piqilib))))))
-
 (define-public bap
   (package
     (name "bap")
-    (version "1.3.0")
+    (version "1.6.0")
     (home-page "https://github.com/BinaryAnalysisPlatform/bap")
     (source (origin
-              (method url-fetch)
-              (uri (string-append home-page "/archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url home-page)
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0v95v9mp7mg8fj25ry0w7566zd9xp6cs8nnqj4l38q54fb1hfav9"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "0ryf2xb37pj2f9mc3p5prqgqrylph9qgq7q9jnbx8b03nzzpa6h6"))))
    (build-system ocaml-build-system)
    (native-inputs
-    `(("oasis" ,ocaml4.02-oasis)
+    `(("ocaml-oasis" ,ocaml-oasis)
       ("clang" ,clang-3.8)
-      ("ounit" ,ocaml4.02-ounit)))
+      ("ocaml-ounit" ,ocaml-ounit)))
    (propagated-inputs
-    `(("core-kernel" ,ocaml4.02-core-kernel)
-      ("ppx-driver" ,ocaml4.02-ppx-driver)
-      ("bin-prot" ,ocaml4.02-bin-prot)
-      ("uri" ,ocaml4.02-uri)
-      ("llvm" ,llvm-3.8)
-      ("gmp" ,gmp)
-      ("clang-runtime" ,clang-runtime)
-      ("fileutils" ,ocaml4.02-fileutils)
-      ("cmdliner" ,ocaml4.02-cmdliner)
-      ("zarith" ,ocaml4.02-zarith)
-      ("uuidm" ,ocaml4.02-uuidm)
-      ("camlzip" ,ocaml4.02-camlzip)
-      ("frontc" ,ocaml-frontc)
-      ("ezjsonm" ,ocaml4.02-ezjsonm)
-      ("ocurl" ,ocaml4.02-ocurl)
-      ("piqi" ,ocaml4.02-piqi)
-      ("ocamlgraph" ,ocaml4.02-graph)
-      ("bitstring" ,ocaml4.02-bitstring)
-      ("ppx-jane" ,ocaml4.02-ppx-jane)
-      ("re" ,ocaml4.02-re)))
-   (inputs `(("llvm" ,llvm-3.8)))
+    `(("camlzip" ,camlzip)
+      ("ocaml-bitstring" ,ocaml-bitstring)
+      ("ocaml-cmdliner" ,ocaml-cmdliner)
+      ("ocaml-core-kernel" ,ocaml-core-kernel)
+      ("ocaml-ezjsonm" ,ocaml-ezjsonm)
+      ("ocaml-fileutils" ,ocaml-fileutils)
+      ("ocaml-frontc" ,ocaml-frontc)
+      ("ocaml-graph" ,ocaml-graph)
+      ("ocaml-ocurl" ,ocaml-ocurl)
+      ("ocaml-piqi" ,ocaml-piqi)
+      ("ocaml-ppx-jane" ,ocaml-ppx-jane)
+      ("ocaml-uuidm" ,ocaml-uuidm)
+      ("ocaml-uri" ,ocaml-uri)
+      ("ocaml-zarith" ,ocaml-zarith)))
+   (inputs
+    `(("llvm" ,llvm-3.8)
+      ("gmp" ,gmp)))
    (arguments
-    `(#:ocaml ,ocaml-4.02
-      #:findlib ,ocaml4.02-findlib
-      #:use-make? #t
+    `(#:use-make? #t
       #:phases
       (modify-phases %standard-phases
         (replace 'configure
           (lambda* (#:key outputs inputs #:allow-other-keys)
+            ;; add write for user, to prevent a failure in the install phase
+            (for-each
+              (lambda (file)
+                (let ((stat (stat file)))
+                  (chmod file (+ #o200 (stat:mode stat)))))
+              (find-files "." "."))
             (invoke "./configure" "--prefix"
                     (assoc-ref outputs "out")
                     "--libdir"
@@ -4089,11 +2932,7 @@ XML and Protocol Buffers formats.")
                       "/lib/ocaml/site-lib")
                     "--with-llvm-version=3.8"
                     "--with-llvm-config=llvm-config"
-                    "--enable-everything")
-            (substitute* "plugins/objdump/objdump_main.ml"
-              (("Re_perl") "Re.Perl"))
-            (substitute* "oasis/objdump"
-              (("re.pcre") "re.pcre, re.perl")))))))
+                    "--enable-everything"))))))
    (synopsis "Binary Analysis Platform")
    (description "Binary Analysis Platform is a framework for writing program
 analysis tools, that target binary files.  The framework consists of a plethora
@@ -4118,7 +2957,14 @@ the plugins facilitate extensibility, and the frontends serve as entry points.")
      `(("camlp4" ,camlp4)))
     (arguments
      `(#:build-flags (list "--profile" "realease")
-       #:tests? #f))
+       #:test-target "camomile-test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-usr-share
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("Camomile/jbuild" "configure.ml")
+               (("/usr/share") (string-append (assoc-ref outputs "out") "/share")))
+             #t)))))
     (synopsis "Comprehensive Unicode library")
     (description "Camomile is a Unicode library for OCaml.  Camomile provides
 Unicode character type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about
@@ -4127,71 +2973,23 @@ library is currently designed for Unicode Standard 3.2.")
     ;; with an exception for linked libraries to use a different license
     (license license:lgpl2.0+)))
 
-(define-public ocaml4.02-camomile
-  (package-with-ocaml4.02 ocaml-camomile))
-
-(define-public ocaml-jbuilder
-  (package
-    (name "ocaml-jbuilder")
-    (version "1.0+beta16")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/janestreet/jbuilder/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1cy07pwvbrlysszs938yd74yyvvbgkffpb82qrjph77zf0h2gdi7"))))
-    (build-system ocaml-build-system)
-    (arguments
-     `(#:ocaml ,ocaml-4.02
-       #:findlib ,ocaml4.02-findlib
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (setenv "PREFIX" out))
-             #t)))))
-    (native-inputs
-     `(("menhir" ,ocaml4.02-menhir)))
-    (propagated-inputs
-     `(("opam" ,opam)))
-    (home-page "https://github.com/janestreet/jbuilder")
-    (synopsis "Composable build system for OCaml")
-    (description "Jbuilder is a build system designed for OCaml/Reason projects
-only.  It focuses on providing the user with a consistent experience and takes
-care of most of the low-level details of OCaml compilation.  All you have to do
-is provide a description of your project and Jbuilder will do the rest.")
-    (license license:asl2.0)))
-
 (define-public ocaml-zed
   (package
     (name "ocaml-zed")
     (version "1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/diml/zed/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "19m5vrj60vg1b63qfsv0aabdlzgn40cqmx65s3wafqi4fs9xp6jn"))))
-    (build-system ocaml-build-system)
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/diml/zed.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "00hhxcjf3bj3w2qm8nzs9x6vrqkadf4i0277s5whzy2rmiknj63v"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'build
-           (lambda _ (invoke "jbuilder" "build")))
-         (delete 'check)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (invoke "jbuilder" "install" "--prefix" out)))))))
-    (native-inputs
-     `(("jbuilder" ,ocaml-jbuilder)))
+     `(#:jbuild? #t
+       #:test-target "."))
     (propagated-inputs
      `(("camomile" ,ocaml-camomile)
        ("react" ,ocaml-react)))
@@ -4202,21 +3000,19 @@ to write text editors, edition widgets, readlines, etc.  You just have to
 connect an engine to your inputs and rendering functions to get an editor.")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-zed
-  (package-with-ocaml4.02 ocaml-zed))
-
 (define-public ocaml-lambda-term
   (package
     (name "ocaml-lambda-term")
     (version "1.13")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/diml/lambda-term/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/diml/lambda-term.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1hy5ryagqclgdm9lzh1qil5mrynlypv7mn6qm858hdcnmz9zzn0l"))))
+        (base32 "0wwib20b2ir3h2g9zwhzn04cv160psb805skp8v23wqgyn5cnbh8"))))
     (build-system dune-build-system)
     (arguments
      `(#:build-flags (list "--profile" "release")
@@ -4235,42 +3031,27 @@ manipulation than, for example, ncurses, by providing a native OCaml interface
 instead of bindings to a C library.")
     (license license:bsd-3)))
 
-(define-public ocaml4.02-lambda-term
-  (package-with-ocaml4.02 ocaml-lambda-term))
-
 (define-public ocaml-utop
   (package
     (name "ocaml-utop")
-    (version "2.2.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ocaml-community/utop/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1414snwmqaxs1x8wbpjf6fn3jsl01hq0phrr7639xmb5vh15mgd4"))))
-    (build-system gnu-build-system)
+    (version "2.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ocaml-community/utop.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xvibb97vzzh7yabr5ajhilriwz8cg4c506lxq0bd7ss3aci9han"))))
+    (build-system dune-build-system)
     (arguments
-     `(#:test-target "test"
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (libdir (string-append out "/lib/ocaml/site-lib")))
-               (mkdir-p libdir)
-               (invoke "jbuilder" "install"
-                       "--prefix" out
-                       "--libdir" libdir)))))))
+     `(#:jbuild? #t
+       #:test-target "."))
     (native-inputs
-     `(("ocaml" ,ocaml)
-       ("cppo" ,ocaml-cppo)
-       ("jbuilder" ,ocaml-jbuilder)))
+     `(("cppo" ,ocaml-cppo)))
     (propagated-inputs
-     `(("ocaml-findlib" ,ocaml-findlib)
-       ("lambda-term" ,ocaml-lambda-term)
+     `(("lambda-term" ,ocaml-lambda-term)
        ("lwt" ,ocaml-lwt)
        ("react" ,ocaml-react)
        ("camomile" ,ocaml-camomile)
@@ -4285,7 +3066,7 @@ sensitive completion, colors, and more.")
 (define-public ocaml-integers
   (package
     (name "ocaml-integers")
-    (version "0.2.2")
+    (version "0.3.0")
     (home-page "https://github.com/ocamllabs/ocaml-integers")
     (source (origin
               (method url-fetch)
@@ -4533,7 +3314,7 @@ syntax checking on dedukti files.")
 (define-public ocaml-ppx-inline-test
   (package
     (name "ocaml-ppx-inline-test")
-    (version "0.11.0")
+    (version "0.12.0")
     (home-page "https://github.com/janestreet/ppx_inline_test")
     (source
      (origin
@@ -4544,7 +3325,7 @@ syntax checking on dedukti files.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "11n94fz1asjf5vqdgriv0pvsa5lbfpqcyk525c7816w23vskcvq6"))))
+         "0nyz411zim94pzbxm2l2v2l9jishcxwvxhh142792g2s18r4vn50"))))
     (build-system dune-build-system)
     (arguments
      ;see home page README for further information
@@ -4556,6 +3337,7 @@ syntax checking on dedukti files.")
        ("ocaml-sexplib0" ,ocaml-sexplib0)
        ("ocaml-stdio" ,ocaml-stdio)
        ("ocaml-ppxlib" ,ocaml-ppxlib)))
+    (properties `((upstream-name . "ppx_inline_test")))
     (synopsis "Syntax extension for writing in-line tests in ocaml code")
     (description "This package contains a syntax extension for writing
 in-line tests in ocaml code.  It is part of Jane Street's PPX rewriters
@@ -4698,18 +3480,18 @@ than yojson), with 25-35% space savings.")
 (define-public ocaml-yojson
   (package
     (name "ocaml-yojson")
-    (version "1.4.1")
+    (version "1.7.0")
     (home-page "https://github.com/ocaml-community/yojson")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url (string-append home-page ".git"))
-             (commit (string-append "v" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0nwsfkmqpyfab4rxq76q8ff7giyanghw08094jyrp275v99zdjr9"))))
+         "0zncsw8bgbkh1pfvfc7nh628hfj84lgx6jwhp9ashj3z1z0w3xjn"))))
     (build-system dune-build-system)
     (arguments
      `(#:test-target "."))
@@ -4717,7 +3499,8 @@ than yojson), with 25-35% space savings.")
      `(("ocaml-biniou" ,ocaml-biniou)
        ("ocaml-easy-format" ,ocaml-easy-format)))
     (native-inputs
-     `(("ocaml-cppo" ,ocaml-cppo)))
+     `(("ocaml-alcotest" ,ocaml-alcotest)
+       ("ocaml-cppo" ,ocaml-cppo)))
     (synopsis "Low-level JSON library for OCaml")
     (description "Yojson is an optimized parsing and printing library for the
 JSON format.  It addresses a few shortcomings of json-wheel including 2x
@@ -4779,7 +3562,8 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
     (native-inputs
      `(("ocaml-findlib" ,ocaml-findlib)))
     (arguments
-     '(#:tests? #f)) ;; Errors in tests in version 3.2.2
+     '(#:jbuild? #t
+       #:tests? #f)) ;; Errors in tests in version 3.2.2
     (synopsis "Context sensitive completion for OCaml in Vim and Emacs")
     (description "Merlin is an editor service that provides modern IDE
 features for OCaml.  Emacs and Vim support is provided out-of-the-box.
@@ -4790,7 +3574,7 @@ Atom.")
 (define-public ocaml-gsl
   (package
     (name "ocaml-gsl")
-    (version "1.22.0")
+    (version "1.24.0")
     (source
      (origin
        (method url-fetch)
@@ -4800,10 +3584,22 @@ Atom.")
          version "/gsl-" version ".tbz"))
        (sha256
         (base32
-         "17vcswipliq1b2idbzx1z95kskn1a4q4s5v04igilg0f7lnkaarb"))))
-    (build-system ocaml-build-system)
+         "1l5zkkkg8sglsihrbf10ivq9s8xzl1y6ag89i4jqpnmi4m43fy34"))))
+    (build-system dune-build-system)
+    (arguments
+     `(#:test-target "."
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-gsl-directory
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/config/discover.ml"
+               (("/usr") (assoc-ref inputs "gsl")))
+             #t)))))
     (inputs
      `(("gsl" ,gsl)))
+    (propagated-inputs
+     `(("ocaml-base" ,ocaml-base)
+       ("ocaml-stdio" ,ocaml-stdio)))
     (home-page "https://mmottl.github.io/gsl-ocaml")
     (synopsis "Bindings to the GNU Scientific Library")
     (description
@@ -4811,6 +3607,26 @@ Atom.")
 the OCaml language.")
     (license license:gpl3+)))
 
+(define-public ocaml-gsl-1
+  (package
+    (inherit ocaml-gsl)
+    (version "1.19.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mmottl/gsl-ocaml"
+                                  "/releases/download/v"
+                                  version "/gsl-ocaml-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
+    (build-system ocaml-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (native-inputs
+     `(("ocamlbuild" ,ocamlbuild)))
+    (arguments '())
+    (propagated-inputs '())))
+
 (define-public cubicle
   (package
     (name "cubicle")
@@ -5024,6 +3840,7 @@ provided by companion libraries such as
     (build-system dune-build-system)
     (arguments
      '(#:tests? #f)) ;no tests
+    (properties `((upstream-name . "ocaml-compiler-libs")))
     (synopsis "Compiler libraries repackaged")
     (description "This packaeg simply repackages the OCaml compiler libraries
 so they don't expose everything at toplevel.  For instance, @code{Ast_helper}
@@ -5061,7 +3878,7 @@ a more consistent API.")
 (define-public ocaml-ppx-derivers
   (package
     (name "ocaml-ppx-derivers")
-    (version "1.2")
+    (version "1.2.1")
     (home-page
      "https://github.com/ocaml-ppx/ppx_derivers")
     (source
@@ -5073,7 +3890,7 @@ a more consistent API.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0bnhihl1w31as5w2czly1v3d6pbir9inmgsjg2cj6aaj9v1dzd85"))))
+         "0yqvqw58hbx1a61wcpbnl9j30n495k23qmyy2xwczqs63mn2nkpn"))))
     (build-system dune-build-system)
     (arguments
      '(#:tests? #f)) ;no tests
@@ -5088,7 +3905,7 @@ as part of the same ocaml-migrate-parsetree driver.")
 (define-public ocaml-ppxlib
   (package
     (name "ocaml-ppxlib")
-    (version "0.4.0")
+    (version "0.6.0")
     (home-page "https://github.com/ocaml-ppx/ppxlib")
     (source
      (origin
@@ -5099,7 +3916,7 @@ as part of the same ocaml-migrate-parsetree driver.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1nr4igf5m4prvigvv470dnhfdhdw0p6hz6zw8gnm5bzcv7s2lg5l"))))
+         "0my9x7sxb329h0lzshppdaawiyfbaw6g5f41yiy7bhl071rnlvbv"))))
     (build-system dune-build-system)
     (propagated-inputs
      `(("ocaml-base" ,ocaml-base)
@@ -5120,6 +3937,7 @@ as part of the same ocaml-migrate-parsetree driver.")
                     (findlib-libdir
                      (string-append findlib-path "/lib/ocaml/site-lib")))
                (substitute* '("test/base/test.ml"
+                              "test/code_path/test.ml"
                               "test/deriving/test.ml"
                               "test/driver/attributes/test.ml"
                               "test/driver/non-compressible-suffix/test.ml"
@@ -5372,7 +4190,7 @@ storage of large amounts of data.")
 (define-public ocaml-octavius
   (package
     (name "ocaml-octavius")
-    (version "1.2.0")
+    (version "1.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5381,7 +4199,7 @@ storage of large amounts of data.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gqfbwsh0zq4b9mvvlmg3zhpbfbvq8swqr31320aibbqydwf77hr"))))
+                "1ck6yj6z5rvqyl39rz87ca1bnk0f1dpgvlk115631hjh8bwpfvfq"))))
     (build-system dune-build-system)
     (properties `((upstream-name . "octavius")))
     (home-page "https://github.com/ocaml-doc/octavius")
@@ -5398,6 +4216,7 @@ storage of large amounts of data.")
               (uri (git-reference
                      (url "https://github.com/janestreet/ppx_hash.git")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1p0ic6aijxlrdggpmycj12q3cy9xksbq2vq727215maz4snvlf5p"))))
@@ -5411,7 +4230,7 @@ storage of large amounts of data.")
     (properties `((upstream-name . "ppx_hash")))
     (home-page "https://github.com/janestreet/ppx_hash")
     (synopsis "Generation of hash functions from type expressions and definitions")
-    (description "This package is a collecton of ppx rewriters that generate
+    (description "This package is a collection of ppx rewriters that generate
 hash functions from type exrpessions and definitions.")
     (license license:asl2.0)))
 
@@ -5424,13 +4243,13 @@ hash functions from type exrpessions and definitions.")
               (uri (git-reference
                      (url "https://github.com/janestreet/ppx_enumerate.git")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0spx9k1v7vjjb6sigbfs69yndgq76v114jhxvzjmffw7q989cyhr"))))
     (build-system dune-build-system)
     (arguments
-     ;; No tests
-     `(#:tests? #f))
+     `(#:tests? #f))                    ; no test suite
     (propagated-inputs
       `(("ocaml-base" ,ocaml-base)
         ("ocaml-migrate-parsetree" ,ocaml-migrate-parsetree)
@@ -5729,7 +4548,7 @@ useful errors on failure.")
 (define-public ocaml-ppx-expect
   (package
     (name "ocaml-ppx-expect")
-    (version "0.11.1")
+    (version "0.12.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5738,7 +4557,7 @@ useful errors on failure.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0bnz3cpj3vwdw409r6f8raakl8n364q5l7wy4i6gckr34a4vla69"))))
+                "1wawsbjfkri4sw52n8xqrzihxc3xfpdicv3ahz83a1rsn4lb8j5q"))))
     (build-system dune-build-system)
     (arguments
      `(#:jbuild? #t))
@@ -5804,6 +4623,7 @@ packages.")
               (uri (git-reference
                      (url "https://github.com/janestreet/ppx_typerep_conv.git")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0a13dpfrrg0rsm8qni1bh7pqcda30l70z8r6yzi5a64bmwk7g5ah"))))
@@ -6014,15 +4834,16 @@ Configurator allows one to:
 (define-public ocaml-spawn
   (package
     (name "ocaml-spawn")
-    (version "0.12.0")
+    (version "0.13.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                      (url "https://github.com/janestreet/spawn.git")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0amgj7g9sjlbjivn1mg7yjdmxd21hgp4a0ak2zrm95dmm4gi846i"))))
+                "1w003k1kw1lmyiqlk58gkxx8rac7dchiqlz6ah7aj7bh49b36ppf"))))
     (build-system dune-build-system)
     (arguments
      `(#:phases
@@ -6065,6 +4886,7 @@ thousands of times faster than fork.
               (uri (git-reference
                      (url "https://github.com/janestreet/core.git")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "0pzl8n09z4f3i7z2wq4cjxfqrr8mj6xcdp7rbg0nxap2zdhjgvrq"))))
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index e8d766e472..43f111cf40 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.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 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -29,13 +29,13 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 86e8fce1dc..697a04e098 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -50,7 +50,6 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -59,6 +58,7 @@
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages man)
   #:use-module (gnu packages nettle)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages patchutils)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
@@ -78,6 +78,7 @@
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
@@ -109,8 +110,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "0.16.0")
-        (commit "2637cfd7a4894ef2a2a7da3bb46d8815c43d7e75")
-        (revision 10))
+        (commit "0c329bf4b0c00abdc9a7d9c818d36d4d60b3005d")
+        (revision 14))
     (package
       (name "guix")
 
@@ -126,7 +127,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "1m734gm45x9czqspsagdfxfgw5wiiinyq1s6zc9gfv7d3b2w472k"))
+                  "1403vrazx46w9hcvqjyxa4ipwvqv0432f6rsn4981w1n3p1j4mf6"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -136,9 +137,6 @@
                             (string-append "--with-bash-completion-dir="
                                            (assoc-ref %outputs "out")
                                            "/etc/bash_completion.d")
-                            (string-append "--with-libgcrypt-prefix="
-                                           (assoc-ref %build-inputs
-                                                      "libgcrypt"))
 
                             ;; Set 'DOT_USER_PROGRAM' to the empty string so
                             ;; we don't keep a reference to Graphviz, whose
@@ -409,10 +407,10 @@ generated file."
   (make-parameter #f))
 
 (define-public current-guix
-  (let* ((repository-root (canonicalize-path
-                           (string-append (current-source-directory)
-                                          "/../..")))
-         (select? (delay (or (git-predicate repository-root)
+  (let* ((repository-root (delay (canonicalize-path
+                                  (string-append (current-source-directory)
+                                                 "/../.."))))
+         (select? (delay (or (git-predicate (force repository-root))
                              source-file?))))
     (lambda ()
       "Return a package representing Guix built from the current source tree.
@@ -422,7 +420,7 @@ out) and returning a package that uses that as its 'source'."
           (package
             (inherit guix)
             (version (string-append (package-version guix) "+"))
-            (source (local-file repository-root "guix-current"
+            (source (local-file (force repository-root) "guix-current"
                                 #:recursive? #t
                                 #:select? (force select?))))))))
 
@@ -548,13 +546,13 @@ transactions from C or Python.")
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "113")
+    (version "114")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "10wjri6vsqxf2nb7jjhsq38qlpf407b4qrdczrk696aa1v71i44w"))))
+                "07sma4izcqxdv0zi1s5fnsybvkc47c3vbpm372sg83q8l7rhizzp"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1002,14 +1000,14 @@ for packaging and deployment of cross-compiled Windows applications.")
     (description
      "@code{libostree} is both a shared library and suite of command line
 tools that combines a \"git-like\" model for committing and downloading
-bootable filesystem trees, along with a layer for deploying them and managing
-the bootloader configuration.")
+bootable file system trees, along with a layer for deploying them and managing
+the boot loader configuration.")
     (license license:lgpl2.0+)))
 
 (define-public flatpak
   (package
    (name "flatpak")
-   (version "1.2.3")
+   (version "1.2.4")
    (source
     (origin
      (method url-fetch)
@@ -1017,8 +1015,12 @@ the bootloader configuration.")
                          version "/flatpak-" version ".tar.xz"))
      (sha256
       (base32
-       "0i0dn3w3545lvmjlzqj3j70lk8yrq64r9frp1rk6a161gwq20ixv"))))
-   (build-system gnu-build-system)
+       "1qf3ys84fzv11z6f6li59rxjdjbyrv7cyi9539k73r9i9pckjr8v"))))
+
+   ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
+   ;; find the TLS backend in glib-networking.
+   (build-system glib-or-gtk-build-system)
+
    (arguments
     '(#:tests? #f ;; Tests fail due to trying to create files where it can't.
       #:configure-flags (list
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 167d03b954..8b64878553 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -48,14 +48,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20190322")
+    (version "20190422")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "12q0ys0dp019wykx7jcqbrilz8798hgb66k97aj2s2m7xdpw41ym"))))
+       (base32 "0xdl5fnh1vpjp3zpmqsrbbgjixazlhl4d9awk42nz4snzynysjxl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -136,7 +136,7 @@ and they are executed on lists of files, hosts, users or other items.")
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
-      (list "--enable-pam"
+      (list "--enable-pam" "--sysconfdir=/etc/slurm"
             (string-append "--with-freeipmi=" (assoc-ref %build-inputs "freeipmi"))
             (string-append "--with-hwloc=" (assoc-ref %build-inputs "hwloc"))
             (string-append "--with-json=" (assoc-ref %build-inputs "json-c"))
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index ad89cee5a8..b238d39a70 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
-;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -48,6 +48,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages aidc)
+  #:use-module (gnu packages authentication)
   #:use-module (gnu packages base)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -58,7 +59,6 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages kerberos)
@@ -67,6 +67,7 @@
   #:use-module (gnu packages man)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages opencl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -74,6 +75,7 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages suckless)
+  #:use-module (gnu packages tcl)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages version-control)
@@ -423,6 +425,19 @@ any X11 window.")
        (modify-phases %standard-phases
          (delete 'configure)
          (delete 'build)
+         (add-before 'install 'patch-system-extension-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (extension-dir (string-append out "/lib/password-store/extensions")))
+               (substitute* "src/password-store.sh"
+                 (("^SYSTEM_EXTENSION_DIR=.*$")
+                  ;; lead with whitespace to prevent 'make install' from
+                  ;; overwriting it again
+                  (string-append " SYSTEM_EXTENSION_DIR=\""
+                                 "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-"
+                                 extension-dir
+                                 "}\"\n"))))
+             #t))
          (add-before 'install 'patch-passmenu-path
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "contrib/dmenu/passmenu"
@@ -461,6 +476,10 @@ any X11 window.")
        ;; timeout in some circumstances.
        #:parallel-tests? #f
        #:test-target "test"))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR")
+            (files '("lib/password-store/extensions")))))
     (inputs
      `(("dmenu" ,dmenu)
        ("getopt" ,util-linux)
@@ -482,6 +501,55 @@ changes to your password database to a git repository that can be managed
 through the pass command.")
     (license license:gpl2+)))
 
+(define-public pass-otp
+  (package
+    (name "pass-otp")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/tadfisher/pass-otp/releases/"
+                       "download/v" version "/pass-otp-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rrs3iazq80dn0wbl20xkh270428jd8l99m5gd7hl93s4r4sc82p"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags
+       (let* ((out      (assoc-ref %outputs "out"))
+              (bashcomp (string-append out "/etc/bash_completion.d")))
+         (list (string-append "PREFIX=" %output)
+               (string-append "BASHCOMPDIR=" bashcomp)))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'build 'patch-oath-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "otp.bash"
+               (("^OATH=.*$")
+                (string-append
+                 "OATH="
+                 (assoc-ref inputs "oath-toolkit")
+                 "/bin/oathtool\n")))
+             #t)))
+       #:test-target "test"))
+    (inputs
+     `(("oath-toolkit" ,oath-toolkit)))
+    (native-inputs
+     `(("password-store" ,password-store)
+       ("expect" ,expect)
+       ("git" ,git)
+       ("gnupg" ,gnupg)
+       ("which" ,which)))
+    (home-page "https://github.com/tadfisher/pass-otp")
+    (synopsis "Pass extension for managing one-time-password (OTP) tokens")
+    (description
+     "Pass OTP is an extension for password-store that allows adding
+one-time-password (OTP) secrets, generating OTP codes, and displaying secret
+key URIs using the standard otpauth:// scheme.")
+    (license license:gpl3+)))
+
 (define-public argon2
   (package
     (name "argon2")
diff --git a/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch b/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch
new file mode 100644
index 0000000000..ab7cc83684
--- /dev/null
+++ b/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch
@@ -0,0 +1,43 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Thu, 25 Apr 2019 04:36:52 +0200
+Subject: [PATCH] gnu: bind: Fix unused PKCS#11 ECC constants.
+
+Without this patch, the build fails:
+
+  pkcs11-keygen.c: In function ‘main’:
+  pkcs11-keygen.c:424:32: error: ‘pk11_ecc_prime256v1’ undeclared (first use in this function)
+      public_template[4].pValue = pk11_ecc_prime256v1;
+                                  ^
+  pkcs11-keygen.c:424:32: note: each undeclared identifier is reported only once for each function it appears in
+  pkcs11-keygen.c:428:32: error: ‘pk11_ecc_secp384r1’ undeclared (first use in this function)
+      public_template[4].pValue = pk11_ecc_secp384r1;
+                                  ^
+  make[2]: *** [Makefile:217: pkcs11-keygen.o] Error 1
+
+Fix copied verbatim from upstream[0].
+
+[0]: https://gitlab.isc.org/isc-projects/bind9/issues/935
+
+---
+--- orig-bind-9.11.6/bin/pkcs11/pkcs11-keygen.c	2019-02-27 15:28:15.000000000 -0800
++++ bind-9.11.6/bin/pkcs11/pkcs11-keygen.c	2019-03-11 09:20:50.955257469 -0700
+@@ -403,6 +403,10 @@
+ 		public_template[RSA_PUBLIC_EXPONENT].ulValueLen = expsize;
+ 		break;
+ 	case key_ecc:
++#if !defined(HAVE_PKCS11_ECDSA)
++		fprintf(stderr, "prime256v1 and secp3841r1 is not supported\n");
++		usage();
++#else
+ 		op_type = OP_EC;
+ 		if (bits == 0)
+ 			bits = 256;
+@@ -429,7 +433,7 @@
+ 			public_template[4].ulValueLen =
+ 				sizeof(pk11_ecc_secp384r1);
+ 		}
+-
++#endif
+ 		break;
+ 	case key_ecx:
+ #if !defined(CKM_EDDSA_KEY_PAIR_GEN)
diff --git a/gnu/packages/patches/docker-use-fewer-modprobes.patch b/gnu/packages/patches/docker-use-fewer-modprobes.patch
new file mode 100644
index 0000000000..4e4a45b6ce
--- /dev/null
+++ b/gnu/packages/patches/docker-use-fewer-modprobes.patch
@@ -0,0 +1,137 @@
+This patch makes docker find out whether a filesystem type is supported
+by trying to mount a filesystem of that type rather than invoking "modprobe".
+
+See <https://github.com/moby/moby/pull/38930>.
+
+--- docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go.orig	1970-01-01 01:00:00.000000000 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go	2019-03-19 09:16:03.487087490 +0100
+@@ -8,7 +8,6 @@
+ 	"io"
+ 	"io/ioutil"
+ 	"os"
+-	"os/exec"
+ 	"path"
+ 	"path/filepath"
+ 	"strconv"
+@@ -201,9 +200,16 @@
+ }
+ 
+ func supportsOverlay() error {
+-	// We can try to modprobe overlay first before looking at
+-	// proc/filesystems for when overlay is supported
+-	exec.Command("modprobe", "overlay").Run()
++	// Access overlay filesystem so that Linux loads it (if possible).
++	mountTarget, err := ioutil.TempDir("", "supportsOverlay")
++	if err != nil {
++		logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.")
++		return graphdriver.ErrNotSupported
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("overlay", mountTarget, "overlay", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go.orig	2019-03-18 23:42:23.728525231 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go	2019-03-19 08:54:31.411906113 +0100
+@@ -10,7 +10,6 @@
+ 	"io"
+ 	"io/ioutil"
+ 	"os"
+-	"os/exec"
+ 	"path"
+ 	"path/filepath"
+ 	"strconv"
+@@ -261,9 +260,16 @@
+ }
+ 
+ func supportsOverlay() error {
+-	// We can try to modprobe overlay first before looking at
+-	// proc/filesystems for when overlay is supported
+-	exec.Command("modprobe", "overlay").Run()
++	// Access overlay filesystem so that Linux loads it (if possible).
++	mountTarget, err := ioutil.TempDir("", "supportsOverlay2")
++	if err != nil {
++		logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.")
++		return graphdriver.ErrNotSupported
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("overlay", mountTarget, "overlay", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go.orig	2019-03-19 09:19:16.592844887 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go	2019-03-19 09:21:18.019361761 +0100
+@@ -540,8 +539,14 @@
+ 		return err // error text is descriptive enough
+ 	}
+ 
+-	// Check if kernel supports xfs filesystem or not.
+-	exec.Command("modprobe", "xfs").Run()
++	mountTarget, err := ioutil.TempDir("", "supportsXFS")
++	if err != nil {
++		return errors.Wrapf(err, "error checking for xfs support")
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("none", mountTarget, "xfs", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go.orig	2019-03-19 09:47:19.430111170 +0100
++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go	2019-03-19 10:38:01.445136177 +0100
+@@ -72,11 +71,12 @@
+ }
+ 
+ func probe() {
+-	if out, err := exec.Command("modprobe", "-va", "nf_nat").CombinedOutput(); err != nil {
+-		logrus.Warnf("Running modprobe nf_nat failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
++	path, err := exec.LookPath("iptables")
++	if err != nil {
++		return
+ 	}
+-	if out, err := exec.Command("modprobe", "-va", "xt_conntrack").CombinedOutput(); err != nil {
+-		logrus.Warnf("Running modprobe xt_conntrack failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
++	if out, err := exec.Command(path, "--wait", "-t", "nat", "-L", "-n").CombinedOutput(); err != nil {
++		logrus.Warnf("Running iptables --wait -t nat -L -n failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+ 	}
+ }
+ 
+--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go.orig	2019-03-19 11:23:20.738316699 +0100
++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go	2019-03-19 11:27:57.149753073 +0100
+@@ -76,12 +76,8 @@ func NlHandle() *netlink.Handle {
+ func getSupportedNlFamilies() []int {
+ 	fams := []int{syscall.NETLINK_ROUTE}
+ 	// NETLINK_XFRM test
+-	if err := loadXfrmModules(); err != nil {
+-		if checkXfrmSocket() != nil {
+-			logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+-		} else {
+-			fams = append(fams, syscall.NETLINK_XFRM)
+-		}
++	if err := checkXfrmSocket(); err != nil {
++		logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+ 	} else {
+ 		fams = append(fams, syscall.NETLINK_XFRM)
+ 	}
+@@ -99,16 +95,6 @@ func getSupportedNlFamilies() []int {
+ 	return fams
+ }
+ 
+-func loadXfrmModules() error {
+-	if out, err := exec.Command("modprobe", "-va", "xfrm_user").CombinedOutput(); err != nil {
+-		return fmt.Errorf("Running modprobe xfrm_user failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+-	}
+-	if out, err := exec.Command("modprobe", "-va", "xfrm_algo").CombinedOutput(); err != nil {
+-		return fmt.Errorf("Running modprobe xfrm_algo failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+-	}
+-	return nil
+-}
+-
+ // API check on required xfrm modules (xfrm_user, xfrm_algo)
+ func checkXfrmSocket() error {
+ 	fd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW, syscall.NETLINK_XFRM)
diff --git a/gnu/packages/patches/emacs-undohist-ignored.patch b/gnu/packages/patches/emacs-undohist-ignored.patch
new file mode 100644
index 0000000000..c1ad827a26
--- /dev/null
+++ b/gnu/packages/patches/emacs-undohist-ignored.patch
@@ -0,0 +1,27 @@
+From 52bfd419bf9022726048f818d955b8ea10a16d5c Mon Sep 17 00:00:00 2001
+From: Patrick Mosby <info@schreiblogade.de>
+Date: Mon, 7 Sep 2015 09:05:56 +0200
+Subject: [PATCH] Don't save undo file for ignored files.
+
+This fixes #4.
+---
+ undohist.el | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/undohist.el b/undohist.el
+index b184a26..de60356 100644
+--- a/undohist.el
++++ b/undohist.el
+@@ -164,7 +164,8 @@ To use undohist, you just call this function."
+                 undohist-ignored-files)))
+ 
+ (defun undohist-save-1 ()
+-  (when (consp buffer-undo-list)
++  (when (and (consp buffer-undo-list)
++             (undohist-recover-file-p (buffer-file-name (current-buffer))))
+     (let ((file (make-undohist-file-name (buffer-file-name)))
+           (contents `((digest . ,(md5 (current-buffer)))
+                       (undo-list . ,(undohist-encode buffer-undo-list)))))
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/emacs-zones-called-interactively.patch b/gnu/packages/patches/emacs-zones-called-interactively.patch
new file mode 100644
index 0000000000..b60f390a7e
--- /dev/null
+++ b/gnu/packages/patches/emacs-zones-called-interactively.patch
@@ -0,0 +1,43 @@
+From fb56fbb706804215ef9af0cc575db97c373046c6 Mon Sep 17 00:00:00 2001
+From: Brian Leung <bkleung89@gmail.com>
+Date: Sun, 17 Mar 2019 01:32:04 +0100
+Subject: [PATCH] This patch silences the byte-compiler.
+
+---
+ zones.el | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/zones.el b/zones.el
+index 1bf94f0..94fa9a6 100644
+--- a/zones.el
++++ b/zones.el
+@@ -1031,7 +1031,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ (defadvice narrow-to-defun (after zz-add-zone--defun activate)
+   "Push the defun limits to the current `zz-izones-var'.
+@@ -1039,7 +1039,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ ;; Call `zz-add-zone' if interactive or `zz-add-zone-anyway-p'.
+ ;;
+@@ -1049,7 +1049,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ ;;(@* "General Commands")
+ 
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/flac-CVE-2017-6888.patch b/gnu/packages/patches/flac-CVE-2017-6888.patch
new file mode 100644
index 0000000000..d2583201b4
--- /dev/null
+++ b/gnu/packages/patches/flac-CVE-2017-6888.patch
@@ -0,0 +1,29 @@
+https://git.xiph.org/?p=flac.git;a=patch;h=4f47b63e9c971e6391590caf00a0f2a5ed612e67
+
+From 4f47b63e9c971e6391590caf00a0f2a5ed612e67 Mon Sep 17 00:00:00 2001
+From: Erik de Castro Lopo <erikd@mega-nerd.com>
+Date: Sat, 8 Apr 2017 18:34:49 +1000
+Subject: [PATCH] stream_decoder.c: Fix a memory leak
+
+Leak reported by Secunia Research.
+---
+ src/libFLAC/stream_decoder.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c
+index 14d5fe7f..a5527511 100644
+--- a/src/libFLAC/stream_decoder.c
++++ b/src/libFLAC/stream_decoder.c
+@@ -1753,6 +1753,9 @@ FLAC__bool read_metadata_vorbiscomment_(FLAC__StreamDecoder *decoder, FLAC__Stre
+ 					}
+ 					memset (obj->comments[i].entry, 0, obj->comments[i].length) ;
+ 					if (!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, obj->comments[i].entry, obj->comments[i].length)) {
++						/* Current i-th entry is bad, so we delete it. */
++						free (obj->comments[i].entry) ;
++						obj->comments[i].entry = NULL ;
+ 						obj->num_comments = i;
+ 						goto skip;
+ 					}
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/grub-efi-fat-serial-number.patch b/gnu/packages/patches/grub-efi-fat-serial-number.patch
new file mode 100644
index 0000000000..ad92f9bc9e
--- /dev/null
+++ b/gnu/packages/patches/grub-efi-fat-serial-number.patch
@@ -0,0 +1,27 @@
+Change 'grub-mkrescue' to honor the 'GRUB_FAT_SERIAL_NUMBER'
+environment variable.  That way, the caller can specify a fixed
+serial number (instead of the randomly chosen one) to create EFI
+images (the 'efi.img' file) that are reproducible bit-for-bit.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+--- grub-2.02/util/grub-mkrescue.c	2019-04-20 19:15:26.180242812 +0200
++++ grub-2.02/util/grub-mkrescue.c	2019-04-20 21:56:34.672370849 +0200
+@@ -788,8 +788,15 @@ main (int argc, char *argv[])
+ 
+       efiimgfat = grub_util_path_concat (2, iso9660_dir, "efi.img");
+       int rv;
+-      rv = grub_util_exec ((const char * []) { "mformat", "-C", "-f", "2880", "-L", "16", "-i",
+-	    efiimgfat, "::", NULL });
++
++      const char *fat_serial_number = getenv ("GRUB_FAT_SERIAL_NUMBER");
++      const char *mformat_args[] =
++	{ "mformat", "-C", "-f", "2880", "-L", "16",
++	  fat_serial_number != NULL ? "-N" : "-C",
++	  fat_serial_number != NULL ? fat_serial_number : "-C",
++	  "-i", efiimgfat, "::", NULL };
++
++      rv = grub_util_exec (mformat_args);
+       if (rv != 0)
+ 	grub_util_error ("`%s` invocation failed\n", "mformat");
+       rv = grub_util_exec ((const char * []) { "mcopy", "-s", "-i", efiimgfat, efidir_efi, "::/", NULL });
diff --git a/gnu/packages/patches/idris-test-no-node.patch b/gnu/packages/patches/idris-test-no-node.patch
new file mode 100644
index 0000000000..c04ad41a8e
--- /dev/null
+++ b/gnu/packages/patches/idris-test-no-node.patch
@@ -0,0 +1,61 @@
+From 6c52e1b902b869c25e2fe39cff6364143a04da61 Mon Sep 17 00:00:00 2001
+From: Niklas Larsson <niklas@mm.st>
+Date: Tue, 11 Dec 2018 19:56:22 +0100
+Subject: [PATCH] Only check for Node when required
+
+---
+ test/TestRun.hs | 34 ++++++++++++++++++++--------------
+ 1 file changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/test/TestRun.hs b/test/TestRun.hs
+index c7db9fdcd..4809911f3 100644
+--- a/test/TestRun.hs
++++ b/test/TestRun.hs
+@@ -11,6 +11,7 @@ import Data.Proxy
+ import Data.Typeable
+ import Options.Applicative
+ import System.Directory
++import System.Environment
+ import System.Exit
+ import System.FilePath ((</>))
+ import System.Info
+@@ -103,20 +104,25 @@ runTest path flags = do
+       normalise (x : xs) = x : normalise xs
+       normalise [] = []
+ 
++checkNode :: IO  ()
++checkNode = do
++    nodePath   <- findExecutable "node"
++    nodejsPath <- findExecutable "nodejs"
++    let node = nodePath <|> nodejsPath
++    case node of
++      Nothing -> do
++        putStrLn "For running the test suite against Node, node must be installed."
++        exitFailure
++      Just _  -> return ()
++
+ main :: IO ()
+ main = do
+-  nodePath   <- findExecutable "node"
+-  nodejsPath <- findExecutable "nodejs"
+-  let node = nodePath <|> nodejsPath
+-  case node of
+-    Nothing -> do
+-      putStrLn "For running the test suite against Node, node must be installed."
+-      exitFailure
+-    Just _  -> do
+-      defaultMainWithIngredients ingredients $
++    args <- getArgs
++    when ("--node" `elem` args) checkNode
++    defaultMainWithIngredients ingredients $
+         askOption $ \(NodeOpt node) ->
+-          let (codegen, flags) = if node then (JS, ["--codegen", "node"])
+-                                         else (C , [])
+-           in
+-            mkGoldenTests (testFamiliesForCodegen codegen)
+-                        (flags ++ idrisFlags)
++            let (codegen, flags) = if node then (JS, ["--codegen", "node"])
++                                           else (C , [])
++            in
++                mkGoldenTests (testFamiliesForCodegen codegen) (flags ++ idrisFlags)
++
diff --git a/gnu/packages/patches/knot-include-system-lmdb-header.patch b/gnu/packages/patches/knot-include-system-lmdb-header.patch
deleted file mode 100644
index 5c5c0beabc..0000000000
--- a/gnu/packages/patches/knot-include-system-lmdb-header.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-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/kodi-set-libcurl-ssl-parameters.patch b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
new file mode 100644
index 0000000000..2f60737e30
--- /dev/null
+++ b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
@@ -0,0 +1,17 @@
+Kodi doesn't set the CAPATH and CAINFO parameters for libcurl. To make HTTPS
+connections work we can set them based on SSL_CERT_DIR and SSL_CERT_FILE.
+
+--- a/xbmc/filesystem/CurlFile.cpp
++++ b/xbmc/filesystem/CurlFile.cpp
+@@ -626,5 +626,9 @@
+   if (!m_cipherlist.empty())
+     g_curlInterface.easy_setopt(h, CURLOPT_SSL_CIPHER_LIST, m_cipherlist.c_str());
+ 
++  // Load certificate data from environment paths
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAPATH, getenv("SSL_CERT_DIR"));
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAINFO, getenv("SSL_CERT_FILE"));
++
+   // enable HTTP2 support. default: CURL_HTTP_VERSION_1_1. Curl >= 7.62.0 defaults to CURL_HTTP_VERSION_2TLS
+   g_curlInterface.easy_setopt(h, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+-
+ }
diff --git a/gnu/packages/patches/lcms-CVE-2018-16435.patch b/gnu/packages/patches/lcms-CVE-2018-16435.patch
new file mode 100644
index 0000000000..60228e73af
--- /dev/null
+++ b/gnu/packages/patches/lcms-CVE-2018-16435.patch
@@ -0,0 +1,171 @@
+https://github.com/mm2/Little-CMS/commit/768f70ca405cd3159d990e962d54456773bb8cf8.patch
+
+From 768f70ca405cd3159d990e962d54456773bb8cf8 Mon Sep 17 00:00:00 2001
+From: Marti Maria <info@littlecms.com>
+Date: Wed, 15 Aug 2018 20:07:56 +0200
+Subject: [PATCH] Upgrade Visual studio 2017 15.8
+
+- Upgrade to 15.8
+- Add check on CGATS memory allocation (thanks to Quang Nguyen for
+pointing out this)
+---
+ Projects/VC2017/jpegicc/jpegicc.vcxproj           |  1 +
+ Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj       |  2 +-
+ Projects/VC2017/lcms2_static/lcms2_static.vcxproj |  2 +-
+ Projects/VC2017/linkicc/linkicc.vcxproj           |  2 +-
+ Projects/VC2017/psicc/psicc.vcxproj               |  2 +-
+ Projects/VC2017/testbed/testbed.vcxproj           |  2 +-
+ Projects/VC2017/tiffdiff/tiffdiff.vcxproj         |  2 +-
+ Projects/VC2017/tifficc/tifficc.vcxproj           |  2 +-
+ Projects/VC2017/transicc/transicc.vcxproj         |  1 +
+ src/cmscgats.c                                    | 14 ++++++++++----
+ 10 files changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/Projects/VC2017/jpegicc/jpegicc.vcxproj b/Projects/VC2017/jpegicc/jpegicc.vcxproj
+index ab26a53..39cfd00 100644
+--- a/Projects/VC2017/jpegicc/jpegicc.vcxproj
++++ b/Projects/VC2017/jpegicc/jpegicc.vcxproj
+@@ -22,6 +22,7 @@
+     <ProjectGuid>{62812507-F926-4968-96A9-17678460AD90}</ProjectGuid>
+     <RootNamespace>jpegicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj b/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
+index 4c8aa3f..d1bf3eb 100644
+--- a/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
++++ b/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{8C51BE48-ADB8-4089-A9EC-F6BF993A0548}</ProjectGuid>
+     <RootNamespace>lcms2_DLL</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/lcms2_static/lcms2_static.vcxproj b/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
+index 2a9988a..9fc05ce 100644
+--- a/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
++++ b/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{71DEDE59-3F1E-486B-A899-4283000F76B5}</ProjectGuid>
+     <RootNamespace>lcms2_static</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/linkicc/linkicc.vcxproj b/Projects/VC2017/linkicc/linkicc.vcxproj
+index 30c2b4e..51586dd 100644
+--- a/Projects/VC2017/linkicc/linkicc.vcxproj
++++ b/Projects/VC2017/linkicc/linkicc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{FBFBE1DC-DB84-4BA1-9552-B4780F457849}</ProjectGuid>
+     <RootNamespace>linkicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/psicc/psicc.vcxproj b/Projects/VC2017/psicc/psicc.vcxproj
+index 9dcf89a..8f26e12 100644
+--- a/Projects/VC2017/psicc/psicc.vcxproj
++++ b/Projects/VC2017/psicc/psicc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{EF6A8851-65FE-46F5-B9EF-14F0B671F693}</ProjectGuid>
+     <RootNamespace>psicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/testbed/testbed.vcxproj b/Projects/VC2017/testbed/testbed.vcxproj
+index 0af3762..3f6aea3 100644
+--- a/Projects/VC2017/testbed/testbed.vcxproj
++++ b/Projects/VC2017/testbed/testbed.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{928A3A2B-46EF-4279-959C-513B3652FF0E}</ProjectGuid>
+     <RootNamespace>testbed</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/tiffdiff/tiffdiff.vcxproj b/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
+index 7edfe28..3a6d837 100644
+--- a/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
++++ b/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{75B91835-CCD7-48BE-A606-A9C997D5DBEE}</ProjectGuid>
+     <RootNamespace>tiffdiff</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/tifficc/tifficc.vcxproj b/Projects/VC2017/tifficc/tifficc.vcxproj
+index cd9f04c..5ef954f 100644
+--- a/Projects/VC2017/tifficc/tifficc.vcxproj
++++ b/Projects/VC2017/tifficc/tifficc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{2256DE16-ED92-4A6F-9C54-F65BB61E64A2}</ProjectGuid>
+     <RootNamespace>tifficc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/transicc/transicc.vcxproj b/Projects/VC2017/transicc/transicc.vcxproj
+index d9b77c6..b3173d8 100644
+--- a/Projects/VC2017/transicc/transicc.vcxproj
++++ b/Projects/VC2017/transicc/transicc.vcxproj
+@@ -22,6 +22,7 @@
+     <ProjectGuid>{9EE22D66-C849-474C-9ED5-C3E141DAB160}</ProjectGuid>
+     <RootNamespace>transicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/src/cmscgats.c b/src/cmscgats.c
+index 1a87613..8c3e96d 100644
+--- a/src/cmscgats.c
++++ b/src/cmscgats.c
+@@ -1,7 +1,7 @@
+ //---------------------------------------------------------------------------------
+ //
+ //  Little Color Management System
+-//  Copyright (c) 1998-2017 Marti Maria Saguer
++//  Copyright (c) 1998-2018 Marti Maria Saguer
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the "Software"),
+@@ -1506,10 +1506,16 @@ void AllocateDataSet(cmsIT8* it8)
+     t-> nSamples   = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS"));
+     t-> nPatches   = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS"));
+ 
+-    t-> Data = (char**)AllocChunk (it8, ((cmsUInt32Number) t->nSamples + 1) * ((cmsUInt32Number) t->nPatches + 1) *sizeof (char*));
+-    if (t->Data == NULL) {
++    if (t -> nSamples < 0 || t->nSamples > 0x7ffe || t->nPatches < 0 || t->nPatches > 0x7ffe)
++    {
++        SynError(it8, "AllocateDataSet: too much data");
++    }
++    else {
++        t->Data = (char**)AllocChunk(it8, ((cmsUInt32Number)t->nSamples + 1) * ((cmsUInt32Number)t->nPatches + 1) * sizeof(char*));
++        if (t->Data == NULL) {
+ 
+-        SynError(it8, "AllocateDataSet: Unable to allocate data array");
++            SynError(it8, "AllocateDataSet: Unable to allocate data array");
++        }
+     }
+ 
+ }
diff --git a/gnu/packages/patches/ledger-fix-uninitialized.patch b/gnu/packages/patches/ledger-fix-uninitialized.patch
deleted file mode 100644
index 128c90ec13..0000000000
--- a/gnu/packages/patches/ledger-fix-uninitialized.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-This fixes failures of tests "BaseLine_opt-datetime-format" and
-"BaseLine_opt-time-report", which were printing an unexpected trailing '*' on
-the last line of output, e.g.:
-
-  @@ -5,4 +5,4 @@
-     04/05/13 12:00 PM    04/05/13 01:30 PM       1.50h    Lunch
-     04/05/13 11:30 AM    04/05/13 12:00 PM       30.0m    Walk
-   --------------------------------------------------
-  -                                           
-  +                                          *
-
-Reported upstream at
-https://groups.google.com/d/msg/ledger-cli/EeJUrUk8YDc/pIR-LOTVEAAJ
-
-diff --git a/src/account.h b/src/account.h
-index 1b97463d..f2555593 100644
---- a/src/account.h
-+++ b/src/account.h
-@@ -187,7 +187,7 @@ public:
- 
-       datetime_t         earliest_checkin;
-       datetime_t         latest_checkout;
--      bool               latest_checkout_cleared;
-+      bool               latest_checkout_cleared = false;
- 
-       std::set<path>     filenames;
-       std::set<string>   accounts_referenced;
diff --git a/gnu/packages/patches/libopenshot-fixup-tests.patch b/gnu/packages/patches/libopenshot-fixup-tests.patch
deleted file mode 100644
index 9a0bcc5e8f..0000000000
--- a/gnu/packages/patches/libopenshot-fixup-tests.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 691536f2f8a9ed7322fedb24d489db08c70705b9 Mon Sep 17 00:00:00 2001
-From: "Dr. Tobias Quathamer" <toddy@debian.org>
-Date: Sat, 18 Nov 2017 13:54:22 +0100
-Subject: [PATCH] This the combination of two patches:
- https://sources.debian.org/data/main/libo/libopenshot/0.2.2+dfsg1-1/debian/patches/0003-Fix-failing-tests-by-using-a-fault-tolerance.patch
- https://sources.debian.org/data/main/libo/libopenshot/0.2.2+dfsg1-1/debian/patches/0004-Add-some-more-fault-tolerance-for-arm64.patch
-
-Together they should fix the test suite on all architectures
----
- tests/FFmpegReader_Tests.cpp |  9 ++++-----
- tests/ImageWriter_Tests.cpp  |  8 ++++----
- tests/Timeline_Tests.cpp     | 28 ++++++++++++++--------------
- 3 files changed, 22 insertions(+), 23 deletions(-)
-
-diff --git a/tests/FFmpegReader_Tests.cpp b/tests/FFmpegReader_Tests.cpp
-index 53563ca..07fc41e 100644
---- a/tests/FFmpegReader_Tests.cpp
-+++ b/tests/FFmpegReader_Tests.cpp
-@@ -95,8 +95,8 @@ TEST(FFmpegReader_Check_Video_File)
- 	int pixel_index = 112 * 4; // pixel 112 (4 bytes per pixel)
- 
- 	// Check image properties on scanline 10, pixel 112
--	CHECK_EQUAL(21, (int)pixels[pixel_index]);
--	CHECK_EQUAL(191, (int)pixels[pixel_index + 1]);
-+	CHECK_CLOSE(21, (int)pixels[pixel_index], 1);
-+	CHECK_CLOSE(191, (int)pixels[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)pixels[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- 
-@@ -109,8 +109,8 @@ TEST(FFmpegReader_Check_Video_File)
- 
- 	// Check image properties on scanline 10, pixel 112
- 	CHECK_EQUAL(0, (int)pixels[pixel_index]);
--	CHECK_EQUAL(96, (int)pixels[pixel_index + 1]);
--	CHECK_EQUAL(188, (int)pixels[pixel_index + 2]);
-+	CHECK_CLOSE(96, (int)pixels[pixel_index + 1], 1);
-+	CHECK_CLOSE(188, (int)pixels[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- 
- 	// Close reader
-@@ -209,4 +209,3 @@ TEST(FFmpegReader_Multiple_Open_and_Close)
- 	// Close reader
- 	r.Close();
- }
--
-diff --git a/tests/ImageWriter_Tests.cpp b/tests/ImageWriter_Tests.cpp
-index 107ee39..d10c8bd 100644
---- a/tests/ImageWriter_Tests.cpp
-+++ b/tests/ImageWriter_Tests.cpp
-@@ -73,9 +73,9 @@ TEST(ImageWriter_Test_Gif)
- 	int pixel_index = 230 * 4; // pixel 230 (4 bytes per pixel)
- 
- 	// Check image properties
--	CHECK_EQUAL(20, (int)pixels[pixel_index]);
--	CHECK_EQUAL(18, (int)pixels[pixel_index + 1]);
--	CHECK_EQUAL(11, (int)pixels[pixel_index + 2]);
-+	CHECK_CLOSE(20, (int)pixels[pixel_index], 5);
-+	CHECK_CLOSE(18, (int)pixels[pixel_index + 1], 2);
-+	CHECK_CLOSE(11, (int)pixels[pixel_index + 2], 2);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- }
--#endif
-\ No newline at end of file
-+#endif
-diff --git a/tests/Timeline_Tests.cpp b/tests/Timeline_Tests.cpp
-index 8c81579..4d861a6 100644
---- a/tests/Timeline_Tests.cpp
-+++ b/tests/Timeline_Tests.cpp
-@@ -119,8 +119,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	int pixel_index = 230 * 4; // pixel 230 (4 bytes per pixel)
- 
- 	// Check image properties
--	CHECK_EQUAL(21, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(191, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(21, (int)f->GetPixels(pixel_row)[pixel_index], 2);
-+	CHECK_CLOSE(191, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -128,17 +128,17 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(2);
- 
- 	// Check image properties
--	CHECK_EQUAL(176, (int)f->GetPixels(pixel_row)[pixel_index]);
-+	CHECK_CLOSE(176, (int)f->GetPixels(pixel_row)[pixel_index], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Get frame
- 	f = t.GetFrame(3);
- 
- 	// Check image properties
--	CHECK_EQUAL(23, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(190, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(23, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(190, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -146,8 +146,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(24);
- 
- 	// Check image properties
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(106, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(106, (int)f->GetPixels(pixel_row)[pixel_index + 1], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -155,8 +155,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(5);
- 
- 	// Check image properties
--	CHECK_EQUAL(23, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(190, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(23, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(190, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -165,17 +165,17 @@ TEST(Timeline_Check_Two_Track_Video)
- 
- 	// Check image properties
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(94, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(94, (int)f->GetPixels(pixel_row)[pixel_index + 1], 1);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Get frame
- 	f = t.GetFrame(4);
- 
- 	// Check image properties
--	CHECK_EQUAL(176, (int)f->GetPixels(pixel_row)[pixel_index]);
-+	CHECK_CLOSE(176, (int)f->GetPixels(pixel_row)[pixel_index], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Close reader
--- 
-2.21.0
-
diff --git a/gnu/packages/patches/libopenshot-tests-with-system-libs.patch b/gnu/packages/patches/libopenshot-tests-with-system-libs.patch
deleted file mode 100644
index a18c4b8bba..0000000000
--- a/gnu/packages/patches/libopenshot-tests-with-system-libs.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-Combination of two patches that fix libopenshot tests when built with
-system-provided ffmpeg and jsoncpp.  See
-
-  https://github.com/OpenShot/libopenshot/pull/163
-
-From 0d7691ab53433e1583f6a66ea96683b0f7af8a57 Mon Sep 17 00:00:00 2001
-From: "FeRD (Frank Dana)" <ferdnyc@gmail.com>
-Date: Mon, 17 Sep 2018 14:04:40 -0400
-Subject: [PATCH] tests/CMakeFiles: Use FFMpeg like src/
-
----
- tests/CMakeLists.txt | 32 +++++++++++++++++++++++++++++++-
- 1 file changed, 31 insertions(+), 1 deletion(-)
-
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 2c45550..4df8464 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -79,7 +79,37 @@ ENDIF (ImageMagick_FOUND)
- FIND_PACKAGE(FFmpeg REQUIRED)
- 
- # Include FFmpeg headers (needed for compile)
--include_directories(${FFMPEG_INCLUDE_DIR})
-+message('AVCODEC_FOUND: ${AVCODEC_FOUND}')
-+message('AVCODEC_INCLUDE_DIRS: ${AVCODEC_INCLUDE_DIRS}')
-+message('AVCODEC_LIBRARIES: ${AVCODEC_LIBRARIES}')
-+
-+IF (AVCODEC_FOUND)
-+	include_directories(${AVCODEC_INCLUDE_DIRS})
-+ENDIF (AVCODEC_FOUND)
-+IF (AVDEVICE_FOUND)
-+	include_directories(${AVDEVICE_INCLUDE_DIRS})
-+ENDIF (AVDEVICE_FOUND)
-+IF (AVFORMAT_FOUND)
-+	include_directories(${AVFORMAT_INCLUDE_DIRS})
-+ENDIF (AVFORMAT_FOUND)
-+IF (AVFILTER_FOUND)
-+	include_directories(${AVFILTER_INCLUDE_DIRS})
-+ENDIF (AVFILTER_FOUND)
-+IF (AVUTIL_FOUND)
-+	include_directories(${AVUTIL_INCLUDE_DIRS})
-+ENDIF (AVUTIL_FOUND)
-+IF (POSTPROC_FOUND)
-+	include_directories(${POSTPROC_INCLUDE_DIRS})
-+ENDIF (POSTPROC_FOUND)
-+IF (SWSCALE_FOUND)
-+	include_directories(${SWSCALE_INCLUDE_DIRS})
-+ENDIF (SWSCALE_FOUND)
-+IF (SWRESAMPLE_FOUND)
-+	include_directories(${SWRESAMPLE_INCLUDE_DIRS})
-+ENDIF (SWRESAMPLE_FOUND)
-+IF (AVRESAMPLE_FOUND)
-+	include_directories(${AVRESAMPLE_INCLUDE_DIRS})
-+ENDIF (AVRESAMPLE_FOUND)
- 
- ################# LIBOPENSHOT-AUDIO ###################
- # Find JUCE-based openshot Audio libraries
-
-
-From e9e85cdfd036587adb86341f7f81619dc69f102c Mon Sep 17 00:00:00 2001
-From: "FeRD (Frank Dana)" <ferdnyc@gmail.com>
-Date: Mon, 17 Sep 2018 19:23:25 -0400
-Subject: [PATCH] Use system jsoncpp in tests, too
-
-The tests/ build needs to use the same jsoncpp as the src/ build,
-or tests in Clip_Tests.cpp can fail.
----
- tests/CMakeLists.txt | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 4df8464..a1a0356 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -180,12 +180,18 @@ endif(OPENMP_FOUND)
- # Find ZeroMQ library (used for socket communication & logging)
- FIND_PACKAGE(ZMQ REQUIRED)
- 
--# Include FFmpeg headers (needed for compile)
-+# Include ZeroMQ headers (needed for compile)
- include_directories(${ZMQ_INCLUDE_DIRS})
- 
- ################### JSONCPP #####################
- # Include jsoncpp headers (needed for JSON parsing)
--include_directories("../thirdparty/jsoncpp/include")
-+if (USE_SYSTEM_JSONCPP)
-+	find_package(JsonCpp REQUIRED)
-+	include_directories(${JSONCPP_INCLUDE_DIRS})
-+else()
-+	message("Using embedded JsonCpp")
-+	include_directories("../thirdparty/jsoncpp/include")
-+endif(USE_SYSTEM_JSONCPP)
- 
- IF (NOT DISABLE_TESTS)
- 	###############  SET TEST SOURCE FILES  #################
diff --git a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch b/gnu/packages/patches/linkchecker-tests-require-network.patch
index f3e488cec2..f3e488cec2 100644
--- a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
+++ b/gnu/packages/patches/linkchecker-tests-require-network.patch
diff --git a/gnu/packages/patches/localed-xorg-keyboard.patch b/gnu/packages/patches/localed-xorg-keyboard.patch
new file mode 100644
index 0000000000..9a9071ba0a
--- /dev/null
+++ b/gnu/packages/patches/localed-xorg-keyboard.patch
@@ -0,0 +1,322 @@
+Normally localed would do an approximate parsing of the Xorg config file
+to determine the XKB keyboard layout.  This doesn't make sense on Guix
+where there's no such file in /etc, and where the keyboard layout is
+known statically at configuration time.
+
+This patch removes the XOrg configuration parsing and expects to read the
+configuration from environment variables instead.  It also removes the
+stateful bits that would write configuration to /etc/vconsole.conf
+and /etc/X11, which are unused in Guix anyway.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
+index 6b6b32a591..46aab472b0 100644
+--- a/src/locale/keymap-util.c
++++ b/src/locale/keymap-util.c
+@@ -174,32 +174,16 @@ int vconsole_read_data(Context *c, sd_bus_message *m) {
+                 c->vc_cache = sd_bus_message_ref(m);
+         }
+ 
+-        if (stat("/etc/vconsole.conf", &st) < 0) {
+-                if (errno != ENOENT)
+-                        return -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                context_free_vconsole(c);
+-                return 0;
+-        }
+-
+-        /* If mtime is not changed, then we do not need to re-read */
+-        t = timespec_load(&st.st_mtim);
+-        if (c->vc_mtime != USEC_INFINITY && t == c->vc_mtime)
+-                return 0;
+-
+-        c->vc_mtime = t;
++        c->vc_mtime = USEC_INFINITY;
+         context_free_vconsole(c);
+-
+-        r = parse_env_file(NULL, "/etc/vconsole.conf",
+-                           "KEYMAP",        &c->vc_keymap,
+-                           "KEYMAP_TOGGLE", &c->vc_keymap_toggle);
+-        if (r < 0)
+-                return r;
+-
+         return 0;
+ }
+ 
++static char *getenv_strdup(const char *variable) {
++        const char *value = getenv(variable);
++        return value == NULL ? NULL : strdup(value);
++}
++
+ int x11_read_data(Context *c, sd_bus_message *m) {
+         _cleanup_fclose_ FILE *f = NULL;
+         bool in_section = false;
+@@ -216,258 +200,27 @@ int x11_read_data(Context *c, sd_bus_message *m) {
+                 c->x11_cache = sd_bus_message_ref(m);
+         }
+ 
+-        if (stat("/etc/X11/xorg.conf.d/00-keyboard.conf", &st) < 0) {
+-                if (errno != ENOENT)
+-                        return -errno;
+-
+-                c->x11_mtime = USEC_INFINITY;
+-                context_free_x11(c);
+-                return 0;
+-        }
+-
+-        /* If mtime is not changed, then we do not need to re-read */
+-        t = timespec_load(&st.st_mtim);
+-        if (c->x11_mtime != USEC_INFINITY && t == c->x11_mtime)
+-                return 0;
+-
+-        c->x11_mtime = t;
++        c->x11_mtime = 0;
+         context_free_x11(c);
+ 
+-        f = fopen("/etc/X11/xorg.conf.d/00-keyboard.conf", "re");
+-        if (!f)
+-                return -errno;
+-
+-        for (;;) {
+-                _cleanup_free_ char *line = NULL;
+-                char *l;
+-
+-                r = read_line(f, LONG_LINE_MAX, &line);
+-                if (r < 0)
+-                        return r;
+-                if (r == 0)
+-                        break;
+-
+-                l = strstrip(line);
+-                if (IN_SET(l[0], 0, '#'))
+-                        continue;
+-
+-                if (in_section && first_word(l, "Option")) {
+-                        _cleanup_strv_free_ char **a = NULL;
+-
+-                        r = strv_split_extract(&a, l, WHITESPACE, EXTRACT_QUOTES);
+-                        if (r < 0)
+-                                return r;
+-
+-                        if (strv_length(a) == 3) {
+-                                char **p = NULL;
+-
+-                                if (streq(a[1], "XkbLayout"))
+-                                        p = &c->x11_layout;
+-                                else if (streq(a[1], "XkbModel"))
+-                                        p = &c->x11_model;
+-                                else if (streq(a[1], "XkbVariant"))
+-                                        p = &c->x11_variant;
+-                                else if (streq(a[1], "XkbOptions"))
+-                                        p = &c->x11_options;
+-
+-                                if (p) {
+-                                        free_and_replace(*p, a[2]);
+-                                }
+-                        }
+-
+-                } else if (!in_section && first_word(l, "Section")) {
+-                        _cleanup_strv_free_ char **a = NULL;
+-
+-                        r = strv_split_extract(&a, l, WHITESPACE, EXTRACT_QUOTES);
+-                        if (r < 0)
+-                                return -ENOMEM;
+-
+-                        if (strv_length(a) == 2 && streq(a[1], "InputClass"))
+-                                in_section = true;
+-
+-                } else if (in_section && first_word(l, "EndSection"))
+-                        in_section = false;
+-        }
++        c->x11_layout = getenv_strdup("GUIX_XKB_LAYOUT");
++        c->x11_model = getenv_strdup("GUIX_XKB_MODEL");
++        c->x11_variant = getenv_strdup("GUIX_XKB_VARIANT");
++        c->x11_options = getenv_strdup("GUIX_XKB_OPTIONS");
+ 
+         return 0;
+ }
+ 
+ int locale_write_data(Context *c, char ***settings) {
+-        _cleanup_strv_free_ char **l = NULL;
+-        struct stat st;
+-        int r, p;
+-
+-        /* Set values will be returned as strv in *settings on success. */
+-
+-        for (p = 0; p < _VARIABLE_LC_MAX; p++) {
+-                _cleanup_free_ char *t = NULL;
+-                char **u;
+-                const char *name;
+-
+-                name = locale_variable_to_string(p);
+-                assert(name);
+-
+-                if (isempty(c->locale[p]))
+-                        continue;
+-
+-                if (asprintf(&t, "%s=%s", name, c->locale[p]) < 0)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, t);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (strv_isempty(l)) {
+-                if (unlink("/etc/locale.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->locale_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        r = write_env_file_label("/etc/locale.conf", l);
+-        if (r < 0)
+-                return r;
+-
+-        *settings = TAKE_PTR(l);
+-
+-        if (stat("/etc/locale.conf", &st) >= 0)
+-                c->locale_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
++        return -ENOSYS;
+ }
+ 
+ int vconsole_write_data(Context *c) {
+-        _cleanup_strv_free_ char **l = NULL;
+-        struct stat st;
+-        int r;
+-
+-        r = load_env_file(NULL, "/etc/vconsole.conf", &l);
+-        if (r < 0 && r != -ENOENT)
+-                return r;
+-
+-        if (isempty(c->vc_keymap))
+-                l = strv_env_unset(l, "KEYMAP");
+-        else {
+-                _cleanup_free_ char *s = NULL;
+-                char **u;
+-
+-                s = strappend("KEYMAP=", c->vc_keymap);
+-                if (!s)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, s);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (isempty(c->vc_keymap_toggle))
+-                l = strv_env_unset(l, "KEYMAP_TOGGLE");
+-        else  {
+-                _cleanup_free_ char *s = NULL;
+-                char **u;
+-
+-                s = strappend("KEYMAP_TOGGLE=", c->vc_keymap_toggle);
+-                if (!s)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, s);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (strv_isempty(l)) {
+-                if (unlink("/etc/vconsole.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        r = write_env_file_label("/etc/vconsole.conf", l);
+-        if (r < 0)
+-                return r;
+-
+-        if (stat("/etc/vconsole.conf", &st) >= 0)
+-                c->vc_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
++        return -ENOSYS;
+ }
+ 
+ int x11_write_data(Context *c) {
+-        _cleanup_fclose_ FILE *f = NULL;
+-        _cleanup_free_ char *temp_path = NULL;
+-        struct stat st;
+-        int r;
+-
+-        if (isempty(c->x11_layout) &&
+-            isempty(c->x11_model) &&
+-            isempty(c->x11_variant) &&
+-            isempty(c->x11_options)) {
+-
+-                if (unlink("/etc/X11/xorg.conf.d/00-keyboard.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        mkdir_p_label("/etc/X11/xorg.conf.d", 0755);
+-
+-        r = fopen_temporary("/etc/X11/xorg.conf.d/00-keyboard.conf", &f, &temp_path);
+-        if (r < 0)
+-                return r;
+-
+-        (void) __fsetlocking(f, FSETLOCKING_BYCALLER);
+-        (void) fchmod(fileno(f), 0644);
+-
+-        fputs("# Written by systemd-localed(8), read by systemd-localed and Xorg. It's\n"
+-              "# probably wise not to edit this file manually. Use localectl(1) to\n"
+-              "# instruct systemd-localed to update it.\n"
+-              "Section \"InputClass\"\n"
+-              "        Identifier \"system-keyboard\"\n"
+-              "        MatchIsKeyboard \"on\"\n", f);
+-
+-        if (!isempty(c->x11_layout))
+-                fprintf(f, "        Option \"XkbLayout\" \"%s\"\n", c->x11_layout);
+-
+-        if (!isempty(c->x11_model))
+-                fprintf(f, "        Option \"XkbModel\" \"%s\"\n", c->x11_model);
+-
+-        if (!isempty(c->x11_variant))
+-                fprintf(f, "        Option \"XkbVariant\" \"%s\"\n", c->x11_variant);
+-
+-        if (!isempty(c->x11_options))
+-                fprintf(f, "        Option \"XkbOptions\" \"%s\"\n", c->x11_options);
+-
+-        fputs("EndSection\n", f);
+-
+-        r = fflush_sync_and_check(f);
+-        if (r < 0)
+-                goto fail;
+-
+-        if (rename(temp_path, "/etc/X11/xorg.conf.d/00-keyboard.conf") < 0) {
+-                r = -errno;
+-                goto fail;
+-        }
+-
+-        if (stat("/etc/X11/xorg.conf.d/00-keyboard.conf", &st) >= 0)
+-                c->x11_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
+-
+-fail:
+-        if (temp_path)
+-                (void) unlink(temp_path);
+-
+-        return r;
++        return -ENOSYS;
+ }
+ 
+ static int read_next_mapping(const char* filename,
diff --git a/gnu/packages/patches/mtools-mformat-uninitialized.patch b/gnu/packages/patches/mtools-mformat-uninitialized.patch
new file mode 100644
index 0000000000..ae69d45c99
--- /dev/null
+++ b/gnu/packages/patches/mtools-mformat-uninitialized.patch
@@ -0,0 +1,20 @@
+Fix a bug whereby 'mformat' could end up passing uninitialized bytes
+to write(2).  This could be reproduced with:
+
+  mformat -C -f 1440 -L 16  -N 77777777 -i  /tmp/x ::
+
+where the output of /tmp/x would be non-deterministic.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+--- mtools-4.0.23/mformat.c	2019-04-21 00:12:01.496116195 +0200
++++ mtools-4.0.23/mformat.c	2019-04-21 00:12:36.675967157 +0200
+@@ -927,6 +927,7 @@ void mformat(int argc, char **argv, int
+ 	
+ 	char *endptr;
+ 
++	memset(&boot.bytes, '\0', sizeof boot);
+ 	hs = hs_set = 0;
+ 	argtracks = 0;
+ 	argheads = 0;
+
diff --git a/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch b/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch
new file mode 100644
index 0000000000..a7794aed47
--- /dev/null
+++ b/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch
@@ -0,0 +1,72 @@
+Fix CVE-2019-9755:
+
+https://security-tracker.debian.org/tracker/CVE-2019-9755
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9755
+
+Patch copied from upstream source repository:
+
+https://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/85c1634a26faa572d3c558d4cf8aaaca5202d4e9/
+
+From 85c1634a26faa572d3c558d4cf8aaaca5202d4e9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= <jean-pierre.andre@wanadoo.fr>
+Date: Wed, 19 Dec 2018 15:57:50 +0100
+Subject: [PATCH] Fixed reporting an error when failed to build the mountpoint
+
+The size check was inefficient because getcwd() uses an unsigned int
+argument.
+---
+ src/lowntfs-3g.c | 6 +++++-
+ src/ntfs-3g.c    | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/lowntfs-3g.c b/src/lowntfs-3g.c
+index 993867fa..0660439b 100644
+--- a/src/lowntfs-3g.c
++++ b/src/lowntfs-3g.c
+@@ -4411,7 +4411,8 @@ int main(int argc, char *argv[])
+ 	else {
+ 		ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ 		if (ctx->abs_mnt_point) {
+-			if (getcwd(ctx->abs_mnt_point,
++			if ((strlen(opts.mnt_point) < PATH_MAX)
++			    && getcwd(ctx->abs_mnt_point,
+ 				     PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ 				strcat(ctx->abs_mnt_point, "/");
+ 				strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4419,6 +4420,9 @@ int main(int argc, char *argv[])
+ 			/* Solaris also wants the absolute mount point */
+ 				opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++			} else {
++				free(ctx->abs_mnt_point);
++				ctx->abs_mnt_point = (char*)NULL;
+ 			}
+ 		}
+ 	}
+diff --git a/src/ntfs-3g.c b/src/ntfs-3g.c
+index 6ce89fef..4e0912ae 100644
+--- a/src/ntfs-3g.c
++++ b/src/ntfs-3g.c
+@@ -4148,7 +4148,8 @@ int main(int argc, char *argv[])
+ 	else {
+ 		ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ 		if (ctx->abs_mnt_point) {
+-			if (getcwd(ctx->abs_mnt_point,
++			if ((strlen(opts.mnt_point) < PATH_MAX)
++			    && getcwd(ctx->abs_mnt_point,
+ 				     PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ 				strcat(ctx->abs_mnt_point, "/");
+ 				strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4156,6 +4157,9 @@ int main(int argc, char *argv[])
+ 			/* Solaris also wants the absolute mount point */
+ 				opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++			} else {
++				free(ctx->abs_mnt_point);
++				ctx->abs_mnt_point = (char*)NULL;
+ 			}
+ 		}
+ 	}
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
new file mode 100644
index 0000000000..2c344af821
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
@@ -0,0 +1,52 @@
+From aeca7656f499d7f4595319858f242276920e31bb Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Sat, 2 Dec 2017 12:51:01 +0100
+Subject: [PATCH] Fix for ocaml 4.06
+
+---
+ common/criteria_lexer.mll | 8 ++++----
+ common/util.ml            | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/common/criteria_lexer.mll b/common/criteria_lexer.mll
+index 71f9178..fc4eae3 100644
+--- a/common/criteria_lexer.mll
++++ b/common/criteria_lexer.mll
+@@ -18,7 +18,7 @@
+     let c = Lexing.lexeme_char lexbuf 2 in (* the delimiter can be any character *)
+     (* find the terminating delimiter *)
+     let endpos =
+-      try String.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
++      try Bytes.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
+       |Invalid_argument _ ->
+           raise (Format822.Syntax_error (
+             Format822.error lexbuf "String too short"))
+@@ -27,9 +27,9 @@
+             Format822.error lexbuf (Printf.sprintf "cannot find: %c" c)))
+     in
+     let len = endpos - (lexbuf.lex_start_pos + 3) in
+-    let s = String.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
+-    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((String.length s)+4);
+-    s
++    let s = Bytes.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
++    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((Bytes.length s)+4);
++    Bytes.to_string s
+ 
+ }
+ 
+diff --git a/common/util.ml b/common/util.ml
+index 598f266..36ca3d1 100644
+--- a/common/util.ml
++++ b/common/util.ml
+@@ -87,7 +87,7 @@ module MakeMessages(X : sig val label : string end) = struct
+   let clean label =
+     try 
+       let s = Filename.chop_extension (Filename.basename label) in
+-      String.capitalize s
++      String.capitalize_ascii s
+     with Invalid_argument _ -> label
+ 
+   let create ?(enabled=false) label =
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
new file mode 100644
index 0000000000..41494e7b3c
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
@@ -0,0 +1,133 @@
+From b5314c20d8e3caf62fe0dc96ad937a2950158b23 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Thu, 2 Mar 2017 12:19:56 +0100
+Subject: [PATCH] Install mli, cmx, etc.
+
+---
+ Makefile | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 09464ff..5044d7f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ $(DOSELIBS)/cudf.%:
+ 	@for i in _build/cudf/cudf.*; do \
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -67,7 +67,7 @@ $(DOSELIBS)/common.%: common/*.ml common/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -78,7 +78,7 @@ $(DOSELIBS)/versioning.%: versioning/*.ml versioning/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -88,7 +88,7 @@ $(DOSELIBS)/algo.%: algo/*.ml algo/*.mli $(DOSELIBS)/common.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -98,7 +98,7 @@ $(DOSELIBS)/debian.%: deb/*.ml deb/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -108,7 +108,7 @@ $(DOSELIBS)/opam.%: opam/*.ml opam/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -118,7 +118,7 @@ $(DOSELIBS)/npm.%: npm/*.ml npm/*.mli $(DOSELIBS)/versioning.% $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -128,7 +128,7 @@ $(DOSELIBS)/rpm.%: rpm/*.ml $(DOSELIBS)/algo.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -138,7 +138,7 @@ $(DOSELIBS)/pef.%: pef/*.ml pef/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -148,7 +148,7 @@ $(DOSELIBS)/csw.%: opencsw/*.ml $(DOSELIBS)/versioning.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -158,7 +158,7 @@ $(DOSELIBS)/doseparse.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx $(DOSELIBS)/*.ml ; \
++	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.ml ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -168,7 +168,7 @@ $(DOSELIBS)/doseparseNoRpm.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 			cp $$i $(DOSELIBS) ;\
+ 			rm $$i ;\
+-			rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ;\
++			rm -f $(DOSELIBS)/*.mlpack ;\
+ 	  fi ; \
+ 	done
+ 
+@@ -223,7 +223,7 @@ INSTALL_STUFF_ = META
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cma _build/doselibs/*.cmi)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cmxa _build/doselibs/*.cmxs)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.a)
+-#INSTALL_STUFF_ += $(wildcard _build/*/*.mli)
++INSTALL_STUFF_ += $(wildcard _build/doselibs/*.mli) $(wildcard _build/doselibs/*.cmti) $(wildcard _build/doselibs/*.cmx)
+ INSTALL_STUFF_ += $(wildcard _build/rpm/*.so)
+ 
+ exclude_cudf = $(wildcard _build/doselibs/*cudf* _build/cudf/*)
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch b/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
new file mode 100644
index 0000000000..d2cc44c784
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
@@ -0,0 +1,25 @@
+From b94cf24739818e5aff397e0a83b19ea32dc81f42 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Tue, 6 Feb 2018 10:15:45 +0100
+Subject: [PATCH 3/3] Add "unix" as dependency to dose3.common in META.in
+
+---
+ META.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/META.in b/META.in
+index aa2cd8d..0f9d337 100644
+--- a/META.in
++++ b/META.in
+@@ -8,7 +8,7 @@ package "common" (
+ version = "@PACKAGE_VERSION@"
+ archive(byte) = "common.cma"
+ archive(native) = "common.cmxa"
+-requires = "extlib, re.pcre, cudf, @ZIP@, @BZ2@"
++requires = "extlib, re.pcre, cudf, unix, @ZIP@, @BZ2@"
+ )
+ 
+ package "algo" (
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
new file mode 100644
index 0000000000..84b6a3b81b
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
@@ -0,0 +1,9 @@
+--- a/configure
++++ b/configure
+@@ -6552,6 +6552,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+-
+-
+-make printconf
diff --git a/gnu/packages/patches/openssh-CVE-2018-20685.patch b/gnu/packages/patches/openssh-CVE-2018-20685.patch
deleted file mode 100644
index 463c08a9d4..0000000000
--- a/gnu/packages/patches/openssh-CVE-2018-20685.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Fix CVE-2018-20685:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20685
-
-Patch copied from upstream source repository:
-
-https://github.com/openssh/openssh-portable/commit/6010c0303a422a9c5fa8860c061bf7105eb7f8b2
-
-From 6010c0303a422a9c5fa8860c061bf7105eb7f8b2 Mon Sep 17 00:00:00 2001
-From: "djm@openbsd.org" <djm@openbsd.org>
-Date: Fri, 16 Nov 2018 03:03:10 +0000
-Subject: [PATCH] upstream: disallow empty incoming filename or ones that refer
- to the
-
-current directory; based on report/patch from Harry Sintonen
-
-OpenBSD-Commit-ID: f27651b30eaee2df49540ab68d030865c04f6de9
----
- scp.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/scp.c b/scp.c
-index 60682c68..4f3fdcd3 100644
---- a/scp.c
-+++ b/scp.c
-#@@ -1,4 +1,4 @@
-#-/* $OpenBSD: scp.c,v 1.197 2018/06/01 04:31:48 dtucker Exp $ */
-#+/* $OpenBSD: scp.c,v 1.198 2018/11/16 03:03:10 djm Exp $ */
-# /*
-#  * scp - secure remote copy.  This is basically patched BSD rcp which
-#  * uses ssh to do the data transfer (instead of using rcmd).
-@@ -1106,7 +1106,8 @@ sink(int argc, char **argv)
- 			SCREWUP("size out of range");
- 		size = (off_t)ull;
- 
--		if ((strchr(cp, '/') != NULL) || (strcmp(cp, "..") == 0)) {
-+		if (*cp == '\0' || strchr(cp, '/') != NULL ||
-+		    strcmp(cp, ".") == 0 || strcmp(cp, "..") == 0) {
- 			run_err("error: unexpected filename: %s", cp);
- 			exit(1);
- 		}
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch b/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
new file mode 100644
index 0000000000..a9488bbe43
--- /dev/null
+++ b/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
@@ -0,0 +1,23 @@
+This test incorrectly assumes that the root user is always available.
+However, in the build environment, the root user is not available.
+Note that because the original file distributed in the release on PyPi
+has lines ending in CRLF, those are retained in the diff below.
+
+--- a/pyfakefs/tests/fake_filesystem_test.py	1969-12-31 16:00:00.000000000 -0800
++++ b/pyfakefs/tests/fake_filesystem_test.py	1969-12-31 16:00:00.000000000 -0800
+@@ -1021,15 +1021,6 @@
+             self.assertEqual(self.path.expanduser('~'),

+                              self.os.environ['HOME'].replace('/', '!'))

+ 

+-    @unittest.skipIf(TestCase.is_windows or TestCase.is_cygwin,

+-                     'only tested on unix systems')

+-    def test_expand_root(self):

+-        if sys.platform == 'darwin':

+-            roothome = '!var!root'

+-        else:

+-            roothome = '!root'

+-        self.assertEqual(self.path.expanduser('~root'), roothome)

+-

+     def test_getsize_path_nonexistent(self):

+         file_path = 'foo!bar!baz'

+         self.assertRaises(os.error, self.path.getsize, file_path)

diff --git a/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch b/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch
new file mode 100644
index 0000000000..ccd87911d8
--- /dev/null
+++ b/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch
@@ -0,0 +1,62 @@
+From 3cc41c05fad5601c0dd1832f64a6e9efca017727 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 1 Apr 2019 11:36:04 -0400
+Subject: [PATCH] robottime: Honor the SOURCE_DATE_EPOCH environment variable.
+
+Honoring the SOURCE_DATE_EPOCH environment variable allows building
+the documentation using libdoc reproducibly, by setting the generated
+timestamp to a fixed value.
+
+For more background on reproducible builds and the SOURCE_DATE_EPOCH
+environment variable, see:
+https://reproducible-builds.org/specs/source-date-epoch/.
+
+* src/robot/utils/robottime.py: import `os'.
+(TimestampCache._get_epoch): Retrieve date from SOURCE_DATE_EPOCH if
+it is defined, otherwise from time.time().
+* utest/output/test_logger.py (TestLogger.test_write_to_one_logger):
+Check for the existance of a timestamp attribute instead of checking
+for its content as the later is easy to break when using the
+SOURCE_DATE_EPOCH environment variable.
+---
+ src/robot/utils/robottime.py | 3 +++
+ utest/output/test_logger.py  | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py
+index 06432a4a6..91526f826 100644
+--- a/src/robot/utils/robottime.py
++++ b/src/robot/utils/robottime.py
+@@ -14,6 +14,7 @@
+ #  limitations under the License.
+ 
+ import datetime
++import os
+ import time
+ import re
+ 
+@@ -395,6 +396,8 @@ class TimestampCache(object):
+ 
+     # Seam for mocking
+     def _get_epoch(self):
++        if os.getenv('SOURCE_DATE_EPOCH'):
++            return float(os.getenv('SOURCE_DATE_EPOCH'))
+         return time.time()
+ 
+     def _use_cache(self, secs, *separators):
+diff --git a/utest/output/test_logger.py b/utest/output/test_logger.py
+index 92fe6d77d..e980227aa 100644
+--- a/utest/output/test_logger.py
++++ b/utest/output/test_logger.py
+@@ -46,7 +46,7 @@ class TestLogger(unittest.TestCase):
+         logger = LoggerMock(('Hello, world!', 'INFO'))
+         self.logger.register_logger(logger)
+         self.logger.write('Hello, world!', 'INFO')
+-        assert_true(logger.msg.timestamp.startswith('20'))
++        assert_true(hasattr(logger.msg, 'timestamp'))
+ 
+     def test_write_to_one_logger_with_trace_level(self):
+         logger = LoggerMock(('expected message', 'TRACE'))
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/quilt-getopt-nondigit-param.patch b/gnu/packages/patches/quilt-getopt-nondigit-param.patch
deleted file mode 100644
index 6bbec67e75..0000000000
--- a/gnu/packages/patches/quilt-getopt-nondigit-param.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Allow non-digit parameter embedded in short option
-
-The compatibility getopt script allows only digit parameters to be
-embedded in short options. Util-linux's getopt implementation does
-not have such a restriction and allows any parameter to be embedded
-in short options. As a consequence, using the compatibility getopt
-script would choke for example on "-pab", which is a legal option
-of the "quilt refresh" command.
-
-Remove the limitation on digits so that the compatibility getopt
-script allows what util-linux allows. This fixes the second half
-of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-As a side note, this feature of the compatibility script was broken
-anyway, as it would output the digits in reverse order.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:12:17.624841732 +0200
-@@ -108,15 +108,10 @@ foreach my $word (@words) {
- 				if (scalar(@letters) == 0) {
- 					$need_param = $letter;
- 				} else {
--					# short options can have numerical args
--					# embedded in the short option list: -UO
--					die "unexpected character after option $letter"
--						if ($letters[$#letters] !~ /[0-9]/);
--					my @digits;
--					while (scalar(@letters) && ($letters[$#letters] =~ /[0-9]/)) {
--						push @digits, pop @letters;
--					}
--					push @options, quote_word(join('', reverse @digits));
-+					# short options can have args
-+					# embedded in the short option list
-+					push @options, quote_word(join('', reverse @letters));
-+					@letters = ();
- 				}
- 			}
- 		}
diff --git a/gnu/packages/patches/quilt-getopt-second-separator.patch b/gnu/packages/patches/quilt-getopt-second-separator.patch
deleted file mode 100644
index cde2c8d41c..0000000000
--- a/gnu/packages/patches/quilt-getopt-second-separator.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Handle a second separator
-
-getopt can be passed 2 '--' separators. The first one tells that
-getopt options are over and target program options start. The second
-one tells that the target program's options are over and following
-arguments should be treated as non-options even if they look like
-options.
-
-This second separator was not handled, causing the compatibility
-getopt script to treat the following arguments as options, eventually
-failing one way or another.
-
-Properly detect and handle the second separator. This fixes the first
-half of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 15:23:21.147620172 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-@@ -8,12 +8,12 @@
- 
- use strict;
- 
--my $opts;
-+my $opts = '';
- my @words;
- my $found_sep = 0;
- 
- foreach my $arg (@ARGV) {
--  if ($arg eq '--') {
-+  if (!$found_sep && $arg eq '--') {
-     $found_sep = 1;
-   }
-   else {
-@@ -62,10 +62,17 @@ sub quote_word
- 	return "'$word'";
- }
- 
-+# there can be a second separator, to inhibit processing following arguments
-+# as options
-+$found_sep = 0;
- foreach my $word (@words) {
-+	if ($word eq '--') {
-+		$found_sep = 1;
-+		next;
-+	}
- 
- 	# allow '-' to be an option value
--	if (!$need_param && $word !~ /^-./) {
-+	if ($found_sep || (!$need_param && $word !~ /^-./)) {
- 		push @barewords, quote_word($word);
- 		next;
- 	}
diff --git a/gnu/packages/patches/quilt-test-fix-regex.patch b/gnu/packages/patches/quilt-test-fix-regex.patch
deleted file mode 100644
index 2e249ac55b..0000000000
--- a/gnu/packages/patches/quilt-test-fix-regex.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5193b137b5a9034ce79946edd40760df2f63a82a Mon Sep 17 00:00:00 2001
-From: Jean Delvare <jdelvare@suse.de>
-Date: Tue, 25 Apr 2017 15:17:53 +0200
-Subject: test: Escape curly braces in regex
-
-Curly braces in perl regex are supposed to be escaped, recent
-versions of perl complain when they aren't:
-
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (\w+)}/ at ./run line 114.
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE \?}/ at ./run line 290.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- test/run | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/test/run b/test/run
-index 942014e..03afc7a 100755
---- a/test/run
-+++ b/test/run
-@@ -112,7 +112,7 @@ sub flush_output()
- sub substitute_vars($)
- {
- 	my ($line) = @_;
--	$line =~ s[%{(\w+)}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
-+	$line =~ s[%\{(\w+)\}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
- 	return $line;
- }
- 
-@@ -288,7 +288,7 @@ while (defined(my $line = <SOURCE>)) {
- 	# Parse the next command
- 	if ($line =~ s/^\s*\$ ?//) {
- 		# Substitute %{?} with the last command's status
--		$line =~ s[%{\?}][$last_status]eg;
-+		$line =~ s[%\{\?\}][$last_status]eg;
- 
- 		chomp($prog = substitute_vars($line));
- 		$prog_line = $lineno;
--- 
-cgit v1.0-41-gc330
-
diff --git a/gnu/packages/patches/reptyr-fix-gcc-7.patch b/gnu/packages/patches/reptyr-fix-gcc-7.patch
deleted file mode 100644
index 5e0e581218..0000000000
--- a/gnu/packages/patches/reptyr-fix-gcc-7.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This patch allows reptyr to build with gcc 7. It is taken from reptyr mainline patches
-fa0d63f and b45fd92.
-
-https://github.com/nelhage/reptyr/commit/fa0d63ff8c488be15976e5353580b565e85586a1
-https://github.com/nelhage/reptyr/commit/b45fd9238958fcf2d8f3d6fc23e6d491febea2ac
-
-Patch by Nelson Elhage <nelhage@nelhage.com>.
-
-diff --git a/attach.c b/attach.c
-index bd8ef8c..8d9cbf8 100644
---- a/attach.c
-+++ b/attach.c
-@@ -389,8 +389,11 @@ int setup_steal_socket(struct steal_pty_state *steal) {
-         return errno;
- 
-     steal->addr_un.sun_family = AF_UNIX;
--    snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path),
--             "%s/reptyr.sock", steal->tmpdir);
-+    if (snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path),
-+                 "%s/reptyr.sock", steal->tmpdir) >= sizeof(steal->addr_un.sun_path)) {
-+        error("tmpdir path too long!");
-+        return ENAMETOOLONG;
-+    }
- 
-     if ((steal->sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
-         return errno;
-diff --git a/platform/linux/linux.h b/platform/linux/linux.h
-index 9e6b78a..3ec5a99 100644
---- a/platform/linux/linux.h
-+++ b/platform/linux/linux.h
-@@ -40,6 +40,7 @@
- #include <sys/ptrace.h>
- #include <asm/ptrace.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/user.h>
- #include <unistd.h>
- #include <stdlib.h>
diff --git a/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch b/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch
deleted file mode 100644
index 961a183565..0000000000
--- a/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-Fix CVE-2018-1000223:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000223
-https://gitlab.com/soundtouch/soundtouch/issues/6
-
-Patches copied from upstream source repository:
-
-https://gitlab.com/soundtouch/soundtouch/commit/9e02d9b04fda6c1f44336ff00bb5af1e2ffc039e
-https://gitlab.com/soundtouch/soundtouch/commit/e0240689056e4182fffdc2a16aa6e3425a15e275
-https://gitlab.com/soundtouch/soundtouch/commit/46531e5b92dd80dd9a7947463d6224fc7cb21967
-
-From 9e02d9b04fda6c1f44336ff00bb5af1e2ffc039e Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Sun, 12 Aug 2018 20:24:37 +0300
-Subject: [PATCH] Added minimum size check for WAV header block lengh values
-
----
- source/SoundStretch/WavFile.cpp | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 7e7ade2..68818c9 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -530,7 +530,11 @@ int WavInFile::readHeaderBlock()
-         // read length of the format field

-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

--        _swap32(nLen); // int format_len;

-+        _swap32(nLen);

-+

-+        // verify that header length isn't smaller than expected

-+        if (nLen < sizeof(header.format) - 8) return -1;

-+

-         header.format.format_len = nLen;

- 

-         // calculate how much length differs from expected

-@@ -572,6 +576,10 @@ int WavInFile::readHeaderBlock()
-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

-         _swap32(nLen); // int fact_len;

-+

-+        // verify that fact length isn't smaller than expected

-+        if (nLen < sizeof(header.fact) - 8) return -1;

-+

-         header.fact.fact_len = nLen;

- 

-         // calculate how much length differs from expected

--- 
-2.18.0
-
-From e0240689056e4182fffdc2a16aa6e3425a15e275 Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Mon, 13 Aug 2018 19:16:16 +0300
-Subject: [PATCH] Fixed WavFile header/fact not-too-small check
-
----
- source/SoundStretch/WavFile.cpp | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 4af7a4c..3421bca 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -518,13 +518,13 @@ int WavInFile::readHeaderBlock()
-         // swap byte order if necessary

-         _swap32(nLen);

- 

--        // verify that header length isn't smaller than expected

--        if (nLen < sizeof(header.format) - 8) return -1;

-+        // calculate how much length differs from expected 

-+        nDump = nLen - ((int)sizeof(header.format) - 8);

- 

--        header.format.format_len = nLen;

-+        // verify that header length isn't smaller than expected structure

-+        if (nDump < 0) return -1;

- 

--        // calculate how much length differs from expected

--        nDump = nLen - ((int)sizeof(header.format) - 8);

-+        header.format.format_len = nLen;

- 

-         // if format_len is larger than expected, read only as much data as we've space for

-         if (nDump > 0)

-@@ -561,16 +561,16 @@ int WavInFile::readHeaderBlock()
-         // read length of the fact field

-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

--        _swap32(nLen); // int fact_len;

--

--        // verify that fact length isn't smaller than expected

--        if (nLen < sizeof(header.fact) - 8) return -1;

--

--        header.fact.fact_len = nLen;

-+        _swap32(nLen);

- 

-         // calculate how much length differs from expected

-         nDump = nLen - ((int)sizeof(header.fact) - 8);

- 

-+        // verify that fact length isn't smaller than expected structure

-+        if (nDump < 0) return -1;

-+

-+        header.fact.fact_len = nLen;

-+

-         // if format_len is larger than expected, read only as much data as we've space for

-         if (nDump > 0)

-         {

--- 
-2.18.0
-
-From 46531e5b92dd80dd9a7947463d6224fc7cb21967 Mon Sep 17 00:00:00 2001
-From: olli <oparviai@iki.fi>
-Date: Mon, 13 Aug 2018 19:42:58 +0300
-Subject: [PATCH] Improved WavFile header/fact not-too-small check
-
----
- source/SoundStretch/WavFile.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 3421bca..9d90b8a 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -522,7 +522,7 @@ int WavInFile::readHeaderBlock()
-         nDump = nLen - ((int)sizeof(header.format) - 8);

- 

-         // verify that header length isn't smaller than expected structure

--        if (nDump < 0) return -1;

-+        if ((nLen < 0) || (nDump < 0)) return -1;

- 

-         header.format.format_len = nLen;

- 

-@@ -567,7 +567,7 @@ int WavInFile::readHeaderBlock()
-         nDump = nLen - ((int)sizeof(header.fact) - 8);

- 

-         // verify that fact length isn't smaller than expected structure

--        if (nDump < 0) return -1;

-+        if ((nLen < 0) || (nDump < 0)) return -1;

- 

-         header.fact.fact_len = nLen;

- 

--- 
-2.18.0
-
diff --git a/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch b/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch
deleted file mode 100644
index cc0282fc7b..0000000000
--- a/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-Fix CVE-2018-14044 and CVE-2018-14045:
-
-https://gitlab.com/soundtouch/soundtouch/issues/7
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14044
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14045
-
-Patch copied from upstream source repository:
-
-https://gitlab.com/soundtouch/soundtouch/commit/107f2c5d201a4dfea1b7f15c5957ff2ac9e5f260
-
-From 107f2c5d201a4dfea1b7f15c5957ff2ac9e5f260 Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Sun, 12 Aug 2018 20:00:56 +0300
-Subject: [PATCH] Replaced illegal-number-of-channel assertions with run-time
- exception
-
----
- include/FIFOSamplePipe.h               | 12 ++++++++++++
- include/STTypes.h                      |  3 +++
- source/SoundTouch/FIFOSampleBuffer.cpp |  3 ++-
- source/SoundTouch/RateTransposer.cpp   |  5 ++---
- source/SoundTouch/SoundTouch.cpp       |  8 ++------
- source/SoundTouch/TDStretch.cpp        |  5 ++---
- 6 files changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/include/FIFOSamplePipe.h b/include/FIFOSamplePipe.h
-index 4ec9275..b08f836 100644
---- a/include/FIFOSamplePipe.h
-+++ b/include/FIFOSamplePipe.h
-@@ -51,6 +51,18 @@ namespace soundtouch
- /// Abstract base class for FIFO (first-in-first-out) sample processing classes.

- class FIFOSamplePipe

- {

-+protected:

-+

-+    bool verifyNumberOfChannels(int nChannels) const

-+    {

-+        if ((nChannels > 0) && (nChannels <= SOUNDTOUCH_MAX_CHANNELS))

-+        {

-+            return true;

-+        }

-+        ST_THROW_RT_ERROR("Error: Illegal number of channels");

-+        return false;

-+    }

-+

- public:

-     // virtual default destructor

-     virtual ~FIFOSamplePipe() {}

-diff --git a/include/STTypes.h b/include/STTypes.h
-index 03e7e07..862505e 100644
---- a/include/STTypes.h
-+++ b/include/STTypes.h
-@@ -56,6 +56,9 @@ typedef unsigned long   ulong;
- 

- namespace soundtouch

- {

-+    /// Max allowed number of channels

-+    #define SOUNDTOUCH_MAX_CHANNELS     16

-+

-     /// Activate these undef's to overrule the possible sampletype 

-     /// setting inherited from some other header file:

-     //#undef SOUNDTOUCH_INTEGER_SAMPLES

-diff --git a/source/SoundTouch/FIFOSampleBuffer.cpp b/source/SoundTouch/FIFOSampleBuffer.cpp
-index f0d5e42..706e869 100644
---- a/source/SoundTouch/FIFOSampleBuffer.cpp
-+++ b/source/SoundTouch/FIFOSampleBuffer.cpp
-@@ -73,7 +73,8 @@ void FIFOSampleBuffer::setChannels(int numChannels)
- {

-     uint usedBytes;

- 

--    assert(numChannels > 0);

-+    if (!verifyNumberOfChannels(numChannels)) return;

-+

-     usedBytes = channels * samplesInBuffer;

-     channels = (uint)numChannels;

-     samplesInBuffer = usedBytes / channels;

-diff --git a/source/SoundTouch/RateTransposer.cpp b/source/SoundTouch/RateTransposer.cpp
-index 8b66be3..d115a4c 100644
---- a/source/SoundTouch/RateTransposer.cpp
-+++ b/source/SoundTouch/RateTransposer.cpp
-@@ -179,11 +179,10 @@ void RateTransposer::processSamples(const SAMPLETYPE *src, uint nSamples)
- // Sets the number of channels, 1 = mono, 2 = stereo

- void RateTransposer::setChannels(int nChannels)

- {

--    assert(nChannels > 0);

-+    if (!verifyNumberOfChannels(nChannels) ||

-+        (pTransposer->numChannels == nChannels)) return;

- 

--    if (pTransposer->numChannels == nChannels) return;

-     pTransposer->setChannels(nChannels);

--

-     inputBuffer.setChannels(nChannels);

-     midBuffer.setChannels(nChannels);

-     outputBuffer.setChannels(nChannels);

-diff --git a/source/SoundTouch/SoundTouch.cpp b/source/SoundTouch/SoundTouch.cpp
-index 7b6756b..06bdd56 100644
---- a/source/SoundTouch/SoundTouch.cpp
-+++ b/source/SoundTouch/SoundTouch.cpp
-@@ -139,18 +139,14 @@ uint SoundTouch::getVersionId()
- // Sets the number of channels, 1 = mono, 2 = stereo

- void SoundTouch::setChannels(uint numChannels)

- {

--    /*if (numChannels != 1 && numChannels != 2) 

--    {

--        //ST_THROW_RT_ERROR("Illegal number of channels");

--        return;

--    }*/

-+    if (!verifyNumberOfChannels(numChannels)) return;

-+

-     channels = numChannels;

-     pRateTransposer->setChannels((int)numChannels);

-     pTDStretch->setChannels((int)numChannels);

- }

- 

- 

--

- // Sets new rate control value. Normal rate = 1.0, smaller values

- // represent slower rate, larger faster rates.

- void SoundTouch::setRate(double newRate)

-diff --git a/source/SoundTouch/TDStretch.cpp b/source/SoundTouch/TDStretch.cpp
-index 149cdb9..be2dc88 100644
---- a/source/SoundTouch/TDStretch.cpp
-+++ b/source/SoundTouch/TDStretch.cpp
-@@ -588,9 +588,8 @@ void TDStretch::setTempo(double newTempo)
- // Sets the number of channels, 1 = mono, 2 = stereo

- void TDStretch::setChannels(int numChannels)

- {

--    assert(numChannels > 0);

--    if (channels == numChannels) return;

--//    assert(numChannels == 1 || numChannels == 2);

-+    if (!verifyNumberOfChannels(numChannels) ||

-+        (channels == numChannels)) return;

- 

-     channels = numChannels;

-     inputBuffer.setChannels(channels);

--- 
-2.18.0
-
diff --git a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch b/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
deleted file mode 100644
index d7b3e92507..0000000000
--- a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Downloaded from
-https://github.com/synfig/synfig/commit/b9c3b73ee35b83c4d9183c800809040cef98b2f2.patch
-
-Without this patch the UI of Synfig Studio (when built with the latest version
-of GTK) displays very large buttons in the header of every frame.
-
-This patch can be removed with the next release.
-
-
-From b9c3b73ee35b83c4d9183c800809040cef98b2f2 Mon Sep 17 00:00:00 2001
-From: caryoscelus <caryoscelus@gmx.com>
-Date: Wed, 25 Jan 2017 18:34:39 +0300
-Subject: [PATCH] Fix dock drop area size
-
-Fixes #227
-
-By using Frame instead of Button we avoid intrusive Gtk themes
-from forcing huge drop area size.
----
- synfig-studio/src/gui/docks/dockdroparea.cpp | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/src/gui/docks/dockdroparea.cpp b/synfig-studio/src/gui/docks/dockdroparea.cpp
-index 0f8936fdb..e012282f0 100644
---- a/src/gui/docks/dockdroparea.cpp
-+++ b/src/gui/docks/dockdroparea.cpp
-@@ -35,7 +35,7 @@
- #include "app.h"
- #include "docks/dockdroparea.h"
- #include "docks/dockmanager.h"
--#include <gtkmm/button.h>
-+#include <gtkmm/frame.h>
- 
- #endif
- 
-@@ -61,10 +61,15 @@ DockDropArea::DockDropArea(Gtk::Widget *target):
- 	std::vector<Gtk::TargetEntry> listTargets;
- 	listTargets.push_back( Gtk::TargetEntry("SYNFIG_DOCK") );
- 
--	Gtk::Button *button_left   = manage(new Gtk::Button());
--	Gtk::Button *button_right  = manage(new Gtk::Button());
--	Gtk::Button *button_top    = manage(new Gtk::Button());
--	Gtk::Button *button_bottom = manage(new Gtk::Button());
-+	Gtk::Frame *button_left   = manage(new Gtk::Frame());
-+	Gtk::Frame *button_right  = manage(new Gtk::Frame());
-+	Gtk::Frame *button_top    = manage(new Gtk::Frame());
-+	Gtk::Frame *button_bottom = manage(new Gtk::Frame());
-+
-+	button_left->set_size_request(20, 10);
-+	button_right->set_size_request(20, 10);
-+	button_top->set_size_request(20, 10);
-+	button_bottom->set_size_request(20, 10);
- 
- 	button_left->drag_dest_set(listTargets);
- 	button_right->drag_dest_set(listTargets);
diff --git a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
new file mode 100644
index 0000000000..63646d420c
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
@@ -0,0 +1,249 @@
+This patch adds support for newer versions of Poppler and some upstream
+TexLive fixes, including one for CVE-2018-17407.
+
+It is taken from Linux From Scratch:
+<http://www.linuxfromscratch.org/patches/blfs/svn/texlive-20180414-source-upstream_fixes-3.patch>.
+
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2018-12-26
+Initial Package Version: 20180414
+Upstream Status: Applied
+Origin: Upstream
+Description: Two fixes, cherry-picked from svn plus a CVE fix.
+I have removed the partial fixes for various system versions of poppler.
+
+r47469 Fix segfault in dvipdfm-x (XeTeX) on 1/2/4-bit transparent indexed PNGs.
+
+r47477 Fix a ptex regression for discontinuous kinsoku table.
+
+Also, via fedora (I got lost in svn) a critical fix for CVE-2018-17407
+
+"A buffer overflow in the handling of Type 1 fonts allows arbitrary code
+execution when a malicious font is loaded by one of the vulnerable tools:
+pdflatex, pdftex, dvips, or luatex."
+
+diff -Naur a/texk/dvipdfm-x/pngimage.c b/texk/dvipdfm-x/pngimage.c
+--- a/texk/dvipdfm-x/pngimage.c	2018-02-17 08:41:35.000000000 +0000
++++ b/texk/dvipdfm-x/pngimage.c	2018-10-09 01:52:01.648670875 +0100
+@@ -964,12 +964,16 @@
+   png_bytep   trans;
+   int         num_trans;
+   png_uint_32 i;
++  png_byte    bpc, mask, shift;
+ 
+   if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
+       !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
+     WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
+     return NULL;
+   }
++  bpc   = png_get_bit_depth(png_ptr, info_ptr);
++  mask  = 0xff >> (8 - bpc);
++  shift = 8 - bpc;
+ 
+   smask = pdf_new_stream(STREAM_COMPRESS);
+   dict  = pdf_stream_dict(smask);
+@@ -981,7 +985,8 @@
+   pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
+   pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
+   for (i = 0; i < width*height; i++) {
+-    png_byte idx = image_data_ptr[i];
++    /* data is packed for 1/2/4 bpc formats, msb first */
++    png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask;
+     smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
+   }
+   pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
+diff -Naur a/texk/dvipsk/writet1.c b/texk/dvipsk/writet1.c
+--- a/texk/dvipsk/writet1.c	2016-11-25 18:24:26.000000000 +0000
++++ b/texk/dvipsk/writet1.c	2018-10-09 01:52:01.648670875 +0100
+@@ -1449,7 +1449,9 @@
+         *(strend(t1_buf_array) - 1) = ' ';
+ 
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/luatexdir/font/writet1.w b/texk/web2c/luatexdir/font/writet1.w
+--- a/texk/web2c/luatexdir/font/writet1.w	2016-11-25 18:24:34.000000000 +0000
++++ b/texk/web2c/luatexdir/font/writet1.w	2018-10-09 01:52:01.648670875 +0100
+@@ -1625,7 +1625,9 @@
+     if (sscanf(p, "%i", &i) != 1) {
+         strcpy(t1_buf_array, t1_line_array);
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
+--- a/texk/web2c/luatexdir/image/pdftoepdf.w	2018-01-17 18:00:12.000000000 +0000
++++ b/texk/web2c/luatexdir/image/pdftoepdf.w	2018-10-09 01:52:01.648670875 +0100
+@@ -472,10 +472,10 @@
+         break;
+     */
+     case objString:
+-        copyString(pdf, obj->getString());
++        copyString(pdf, (GooString *)obj->getString());
+         break;
+     case objName:
+-        copyName(pdf, obj->getName());
++        copyName(pdf, (char *)obj->getName());
+         break;
+     case objNull:
+         pdf_add_null(pdf);
+diff -Naur a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
+--- a/texk/web2c/luatexdir/lua/lepdflib.cc	2018-02-14 14:44:38.000000000 +0000
++++ b/texk/web2c/luatexdir/lua/lepdflib.cc	2018-10-09 01:52:01.649670868 +0100
+@@ -674,7 +674,7 @@
+     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
+     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
+         pdfdoc_changed_error(L);                               \
+-    gs = ((in *) uin->d)->function();                          \
++    gs = (GooString *)((in *) uin->d)->function();             \
+     if (gs != NULL)                                            \
+         lua_pushlstring(L, gs->getCString(), gs->getLength()); \
+     else                                                       \
+@@ -1813,7 +1813,7 @@
+     if (uin->pd != NULL && uin->pd->pc != uin->pc)
+         pdfdoc_changed_error(L);
+     if (((Object *) uin->d)->isString()) {
+-        gs = ((Object *) uin->d)->getString();
++        gs = (GooString *)((Object *) uin->d)->getString();
+         lua_pushlstring(L, gs->getCString(), gs->getLength());
+     } else
+         lua_pushnil(L);
+diff -Naur a/texk/web2c/pdftexdir/writet1.c b/texk/web2c/pdftexdir/writet1.c
+--- a/texk/web2c/pdftexdir/writet1.c	2016-11-25 18:24:37.000000000 +0000
++++ b/texk/web2c/pdftexdir/writet1.c	2018-10-09 01:52:01.649670868 +0100
+@@ -1598,7 +1598,9 @@
+         *(strend(t1_buf_array) - 1) = ' ';
+ 
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/ptexdir/ptex_version.h b/texk/web2c/ptexdir/ptex_version.h
+--- a/texk/web2c/ptexdir/ptex_version.h	2018-01-21 03:48:06.000000000 +0000
++++ b/texk/web2c/ptexdir/ptex_version.h	2018-10-09 01:52:01.649670868 +0100
+@@ -1 +1 @@
+-#define PTEX_VERSION "p3.8.0"
++#define PTEX_VERSION "p3.8.1"
+diff -Naur a/texk/web2c/ptexdir/tests/free_ixsp.tex b/texk/web2c/ptexdir/tests/free_ixsp.tex
+--- a/texk/web2c/ptexdir/tests/free_ixsp.tex	1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/ptexdir/tests/free_ixsp.tex	2018-10-09 01:52:01.649670868 +0100
+@@ -0,0 +1,53 @@
++%#!eptex -ini -etex
++\let\dump\relax
++\batchmode
++\input plain
++
++\errorstopmode
++\catcode`@=11
++\newcount\@tempcnta
++\newcount\@tempcntb
++\newcount\@tempcntc
++\mathchardef\LIM=256
++
++\def\MYCHAR#1{%
++  \@tempcntc=\numexpr7*#1+"101\relax
++  \@tempcnta=\@tempcntc\divide\@tempcnta 94
++  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
++  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
++  \advance\@tempcnta18 % 18区以降
++  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
++}
++
++\newcount\CNT\newcount\CNTA
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \message{\the\CNT.}
++  \inhibitxspcode\CNTA=1\relax
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++
++\newcount\CNTB
++
++\loop
++  \MYCHAR\CNTB
++  \global\inhibitxspcode\CNTA=3
++{%
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \count@=\numexpr 1-\inhibitxspcode\CNTA\relax
++  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else
++    \errmessage{<\the\CNTB, \the\CNT, \the\inhibitxspcode\CNTA>}\fi\fi
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++}
++  \MYCHAR\CNTB
++  \global\inhibitxspcode\CNTA=1\relax
++  \advance\CNTB1\relax
++  \ifnum\CNTB<\LIM
++\repeat
++\bye
+diff -Naur a/texk/web2c/ptexdir/tests/free_pena.tex b/texk/web2c/ptexdir/tests/free_pena.tex
+--- a/texk/web2c/ptexdir/tests/free_pena.tex	1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/ptexdir/tests/free_pena.tex	2018-10-09 01:52:01.649670868 +0100
+@@ -0,0 +1,52 @@
++%#!eptex -ini -etex
++\let\dump\relax
++\batchmode
++\input plain
++
++\errorstopmode
++\catcode`@=11
++\newcount\@tempcnta
++\newcount\@tempcntb
++\newcount\@tempcntc
++\mathchardef\LIM=256
++
++\def\MYCHAR#1{%
++  \@tempcntc=\numexpr7*#1+"101\relax
++  \@tempcnta=\@tempcntc\divide\@tempcnta 94
++  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
++  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
++  \advance\@tempcnta18 % 18区以降
++  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
++}
++
++\newcount\CNT\newcount\CNTA
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \message{\the\CNT.}
++  \prebreakpenalty\CNTA=\numexpr\CNT+1\relax
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++
++\newcount\CNTB
++
++\loop
++  \MYCHAR\CNTB
++  \global\prebreakpenalty\CNTA=0
++{%
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \count@=\numexpr -\CNT-1+\prebreakpenalty\CNTA\relax
++  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else\errmessage{<\the\CNTB, \the\CNT>}\fi\fi
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++}
++  \MYCHAR\CNTB
++  \global\prebreakpenalty\CNTA=\numexpr\CNTB+1\relax
++  \advance\CNTB1\relax
++  \ifnum\CNTB<\LIM
++\repeat
++\bye
diff --git a/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
deleted file mode 100644
index eba4733f32..0000000000
--- a/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-Fix compatibility with Poppler 0.72.
-
-These files are taken from the upstream "poppler0.72.0.cc" variants and
-diffed against the "newpoppler" files from the 20180414 distribution.
-
-See revision 49336:
-https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/
-
---- a/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	2018-12-09 21:14:58.479732695 +0100
-@@ -22,7 +22,7 @@
- https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
- by Arch Linux. A little modifications are made to avoid a crash for
- some kind of pdf images, such as figure_missing.pdf in gnuplot.
--The poppler should be 0.59.0 or newer versions.
-+The poppler should be 0.72.0 or newer versions.
- POPPLER_VERSION should be defined.
- */
- 
-@@ -120,7 +120,7 @@
- 
- static InObj *inObjList;
- static UsedEncoding *encodingList;
--static GBool isInit = gFalse;
-+static bool isInit = false;
- 
- // --------------------------------------------------------------------
- // Maintain list of open embedded PDF files
-@@ -317,7 +317,7 @@
-     pdf_puts("<<\n");
-     assert(r->type == objFont); // FontDescriptor is in fd_tree
-     for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
--        key = obj->dictGetKey(i);
-+        key = (char *)obj->dictGetKey(i);
-         if (strncmp("FontDescriptor", key, strlen("FontDescriptor")) == 0
-             || strncmp("BaseFont", key, strlen("BaseFont")) == 0
-             || strncmp("Encoding", key, strlen("Encoding")) == 0)
-@@ -427,7 +427,7 @@
-         charset = fontdesc.dictLookup("CharSet");
-         if (!charset.isNull() &&
-             charset.isString() && is_subsetable(fontmap))
--            epdf_mark_glyphs(fd, (char *)charset.getString()->getCString());
-+            epdf_mark_glyphs(fd, (char *)charset.getString()->c_str());
-         else
-             embed_whole_font(fd);
-         addFontDesc(fontdescRef.getRef(), fd);
-@@ -454,7 +454,7 @@
-     for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
-         fontRef = obj->dictGetValNF(i);
-         if (fontRef.isRef())
--            copyFont(obj->dictGetKey(i), &fontRef);
-+            copyFont((char *)obj->dictGetKey(i), &fontRef);
-         else if (fontRef.isDict()) {   // some programs generate pdf with embedded font object
-             copyName((char *)obj->dictGetKey(i));
-             pdf_puts(" ");
-@@ -566,7 +566,7 @@
-         pdf_printf("%s", convertNumToPDF(obj->getNum()));
-     } else if (obj->isString()) {
-         s = (GooString *)obj->getString();
--        p = s->getCString();
-+        p = (char *)s->c_str();
-         l = s->getLength();
-         if (strlen(p) == (unsigned int) l) {
-             pdf_puts("(");
-@@ -664,7 +664,7 @@
-                     ("PDF inclusion: CID fonts are not supported"
-                      " (try to disable font replacement to fix this)");
-             }
--            if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
-+            if ((s = (char *)((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
-                 glyphNames[i] = s;
-             else
-                 glyphNames[i] = notdef;
-@@ -683,7 +683,7 @@
- }
- 
- // get the pagebox according to the pagebox_spec
--static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
-+static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
- {
-     if (pagebox_spec == pdfboxspecmedia)
-         return page->getMediaBox();
-@@ -715,7 +715,7 @@
- {
-     PdfDocument *pdf_doc;
-     Page *page;
--    PDFRectangle *pagebox;
-+    const PDFRectangle *pagebox;
- #ifdef POPPLER_VERSION
-     int pdf_major_version_found, pdf_minor_version_found;
- #else
-@@ -724,8 +724,8 @@
-     // initialize
-     if (!isInit) {
-         globalParams = new GlobalParams();
--        globalParams->setErrQuiet(gFalse);
--        isInit = gTrue;
-+        globalParams->setErrQuiet(false);
-+        isInit = true;
-     }
-     // open PDF file
-     pdf_doc = find_add_document(image_name);
-@@ -849,7 +849,7 @@
-     pageObj = xref->fetch(pageRef->num, pageRef->gen);
-     pageDict = pageObj.getDict();
-     rotate = page->getRotate();
--    PDFRectangle *pagebox;
-+    const PDFRectangle *pagebox;
-     // write the Page header
-     pdf_puts("/Type /XObject\n");
-     pdf_puts("/Subtype /Form\n");
-@@ -977,7 +977,7 @@
-             }
-             l = dic1.getLength();
-             for (i = 0; i < l; i++) {
--                groupDict.dictAdd(copyString(dic1.getKey(i)),
-+                groupDict.dictAdd((const char *)copyString(dic1.getKey(i)),
-                                   dic1.getValNF(i));
-             }
- // end modification
-@@ -1001,14 +1001,14 @@
-         pdf_puts("/Resources <<\n");
-         for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
-             obj2 = obj1->dictGetVal(i);
--            key = obj1->dictGetKey(i);
-+            key = (char *)obj1->dictGetKey(i);
-             if (strcmp("Font", key) == 0)
-                 copyFontResources(&obj2);
-             else if (strcmp("ProcSet", key) == 0)
-                 copyProcSet(&obj2);
-             else
--                copyOtherResources(&obj2, key);
-+                copyOtherResources(&obj2, (char *)key);
-         }
-         pdf_puts(">>\n");
-     }
-
---- a/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc	2018-12-09 21:14:58.479732695 +0100
-@@ -20,7 +20,7 @@
- /*
- This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at
- https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
--by Arch Linux. The poppler should be 0.59.0 or newer versions.
-+by Arch Linux. The poppler should be 0.72.0 or newer versions.
- POPPLER_VERSION should be defined.
- */
- 
-@@ -109,7 +109,7 @@
-             fprintf(stderr, "No SourceName found\n");
-             exit(1);
-         }
--        outname = (char *)srcName.getString()->getCString();
-+        outname = (char *)srcName.getString()->c_str();
-         // We cannot free srcName, as objname shares its string.
-         // srcName.free();
-     } else if (objnum > 0) {
-@@ -118,7 +118,7 @@
-             fprintf(stderr, "Not a Stream object\n");
-             exit(1);
-         }
--        sprintf(buf, "%s", fileName->getCString());
-+        sprintf(buf, "%s", fileName->c_str());
-         if ((p = strrchr(buf, '.')) == 0)
-             p = strchr(buf, 0);
-         if (objgen == 0)
-@@ -128,7 +128,7 @@
-         outname = buf;
-     } else {                    // objnum < 0 means we are extracting the XRef table
-         extract_xref_table = true;
--        sprintf(buf, "%s", fileName->getCString());
-+        sprintf(buf, "%s", fileName->c_str());
-         if ((p = strrchr(buf, '.')) == 0)
-             p = strchr(buf, 0);
-         sprintf(p, ".xref");
-@@ -173,9 +173,9 @@
- 
-                 // parse the header: object numbers and offsets
-                 objStr.streamReset();
--                str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first);
-+                str = new EmbedStream(objStr.getStream(), Object(objNull), true, first);
-                 lexer = new Lexer(xref, str);
--                parser = new Parser(xref, lexer, gFalse);
-+                parser = new Parser(xref, lexer, false);
-                 for (n = 0; n < nObjects; ++n) {
-                     obj1 = parser->getObj();
-                     obj2 = parser->getObj();
-
diff --git a/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch
deleted file mode 100644
index cac716cc59..0000000000
--- a/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Fix compatibility with Poppler 0.72.
-
-Patch taken from upstream:
-https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/xetexdir/pdfimage.cpp?r1=44964&r2=48969&diff_format=u
-
---- a/texk/web2c/xetexdir/pdfimage.cpp	2017/08/06 07:12:02	44964
-+++ b/texk/web2c/xetexdir/pdfimage.cpp	2018/10/22 04:01:42	48969
-@@ -82,19 +82,19 @@
- 	switch (pdf_box) {
- 		default:
- 		case pdfbox_crop:
--			r = page->getCropBox();
-+			r = (PDFRectangle *)page->getCropBox();
- 			break;
- 		case pdfbox_media:
--			r = page->getMediaBox();
-+			r = (PDFRectangle *)page->getMediaBox();
- 			break;
- 		case pdfbox_bleed:
--			r = page->getBleedBox();
-+			r = (PDFRectangle *)page->getBleedBox();
- 			break;
- 		case pdfbox_trim:
--			r = page->getTrimBox();
-+			r = (PDFRectangle *)page->getTrimBox();
- 			break;
- 		case pdfbox_art:
--			r = page->getArtBox();
-+			r = (PDFRectangle *)page->getArtBox();
- 			break;
- 	}
diff --git a/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
new file mode 100644
index 0000000000..063677db4a
--- /dev/null
+++ b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
@@ -0,0 +1,57 @@
+From 48b52117235928cfd7ef1ec5c3f2cff5d7b03862 Mon Sep 17 00:00:00 2001
+From: Jordan Hand <jordanhand22@gmail.com>
+Date: Wed, 10 Apr 2019 09:46:32 -0700
+Subject: [PATCH,v2] fdt: Fix mkimage list to try every header type
+Origin: https://patchwork.ozlabs.org/patch/1083495/
+
+Image type is not supplied to `mkimage -l`. For this reason, we cannot
+use imagetool_verify_print_header_by_type. Instead, this patch uses
+imagetool_verify_print_header to look through all header types to find
+one where image validation succeeds.
+
+This patch fixes failures in test/image/test-imagetools.sh
+
+Signed-off-by: Jordan Hand <jorhand@microsoft.com>
+Tested-by: Alex Kiernan <alex.kiernan@gmail.com>
+Tested-by: Vagrant Cascadian <vagrant@debian.org>
+---
+ tools/mkimage.c | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/tools/mkimage.c b/tools/mkimage.c
+index 2899adff81..76c3406d37 100644
+--- a/tools/mkimage.c
++++ b/tools/mkimage.c
+@@ -403,14 +403,21 @@ int main(int argc, char **argv)
+ 			exit (EXIT_FAILURE);
+ 		}
+ 
+-		/*
+-		 * scan through mkimage registry for all supported image types
+-		 * and verify the input image file header for match
+-		 * Print the image information for matched image type
+-		 * Returns the error code if not matched
+-		 */
+-		retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
+-				tparams, &params);
++		if (params.fflag) {
++			/*
++			 * Verifies the header format based on the expected header for
++			 * image type in tparams
++			 */
++			retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
++					tparams, &params);
++		} else {
++			/**
++			 * When listing the image, we are not given the image type. Simply check all
++			 * image types to find one that matches our header
++			 */
++			retval = imagetool_verify_print_header(ptr, &sbuf,
++					tparams, &params);
++		}
+ 
+ 		(void) munmap((void *)ptr, sbuf.st_size);
+ 		(void) close (ifd);
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/webkitgtk-sse2.patch b/gnu/packages/patches/webkitgtk-sse2.patch
new file mode 100644
index 0000000000..df70e38919
--- /dev/null
+++ b/gnu/packages/patches/webkitgtk-sse2.patch
@@ -0,0 +1,202 @@
+Fix build on i686.
+
+This patch is taken from upstream, with ChangeLog entries omitted.
+
+From 5048338c5f21605441c6833907d1136ac9640b35 Mon Sep 17 00:00:00 2001
+From: "mcatanzaro@igalia.com"
+ <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
+Date: Wed, 10 Apr 2019 18:27:25 +0000
+Subject: [PATCH] Unreviewed, rolling out r243989.
+
+Broke i686 builds
+
+Reverted changeset:
+
+"[CMake] Detect SSE2 at compile time"
+https://bugs.webkit.org/show_bug.cgi?id=196488
+https://trac.webkit.org/changeset/243989
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@244138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ CMakeLists.txt                                | 10 ---
+ ChangeLog                                     | 12 ++++
+ Source/JavaScriptCore/ChangeLog               | 12 ++++
+ .../assembler/MacroAssemblerX86Common.cpp     |  7 ++
+ .../assembler/MacroAssemblerX86Common.h       | 30 +++++++++
+ Source/cmake/FindSSE2.cmake                   | 65 -------------------
+ 6 files changed, 61 insertions(+), 75 deletions(-)
+ delete mode 100644 Source/cmake/FindSSE2.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index acd77f4b623..d3e8a23f9ff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -114,16 +114,6 @@ else ()
+     set(WTF_CPU_UNKNOWN 1)
+ endif ()
+ 
+-#---------------------------
+-# Make sure SSE2 is present.
+-#---------------------------
+-if (WTF_CPU_X86)
+-    include(FindSSE2)
+-    if (NOT SSE2_SUPPORT_FOUND)
+-        message(FATAL_ERROR "SSE2 support is required to compile WebKit")
+-    endif ()
+-endif ()
+-
+ # -----------------------------------------------------------------------------
+ # Determine the operating system
+ # -----------------------------------------------------------------------------
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+index 8c752c0d030..31753589df7 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+@@ -168,6 +168,11 @@ static_assert(PROBE_OFFSETOF_REG(cpu.fprs, X86Registers::xmm15) == PROBE_CPU_XMM
+ static_assert(sizeof(Probe::State) == PROBE_SIZE, "Probe::State::size's matches ctiMasmProbeTrampoline");
+ static_assert((PROBE_EXECUTOR_OFFSET + PTR_SIZE) <= (PROBE_SIZE + OUT_SIZE), "Must have room after ProbeContext to stash the probe handler");
+ 
++#if CPU(X86)
++// SSE2 is a hard requirement on x86.
++static_assert(isSSE2Present(), "SSE2 support is required in JavaScriptCore");
++#endif
++
+ #undef PROBE_OFFSETOF
+ 
+ #if CPU(X86)
+@@ -787,6 +792,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     std::call_once(onceKey, [] {
+         {
+             CPUID cpuid = getCPUID(0x1);
++            s_sse2CheckState = (cpuid[3] & (1 << 26)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_1CheckState = (cpuid[2] & (1 << 19)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_2CheckState = (cpuid[2] & (1 << 20)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_popcntCheckState = (cpuid[2] & (1 << 23)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+@@ -803,6 +809,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     });
+ }
+ 
++MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_1CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_avxCheckState = CPUIDCheckState::NotChecked;
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+index ff097290ef3..097bcb0bb86 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+@@ -4197,11 +4197,41 @@ private:
+     }
+ #endif
+ 
++#if CPU(X86)
++#if OS(MAC_OS_X)
++
++    // All X86 Macs are guaranteed to support at least SSE2,
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#else // OS(MAC_OS_X)
++    static bool isSSE2Present()
++    {
++        if (s_sse2CheckState == CPUIDCheckState::NotChecked)
++            collectCPUFeatures();
++        return s_sse2CheckState == CPUIDCheckState::Set;
++    }
++
++#endif // OS(MAC_OS_X)
++#elif !defined(NDEBUG) // CPU(X86)
++
++    // On x86-64 we should never be checking for SSE2 in a non-debug build,
++    // but non debug add this method to keep the asserts above happy.
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#endif
++
+     using CPUID = std::array<unsigned, 4>;
+     static CPUID getCPUID(unsigned level);
+     static CPUID getCPUIDEx(unsigned level, unsigned count);
+     JS_EXPORT_PRIVATE static void collectCPUFeatures();
+ 
++    JS_EXPORT_PRIVATE static CPUIDCheckState s_sse2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_1CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_avxCheckState;
+diff --git a/Source/cmake/FindSSE2.cmake b/Source/cmake/FindSSE2.cmake
+deleted file mode 100644
+index 7a947feadd4..00000000000
+--- a/Source/cmake/FindSSE2.cmake
++++ /dev/null
+@@ -1,65 +0,0 @@
+-#################################
+-# Check for the presence of SSE2.
+-#
+-# Once done, this will define:
+-# - SSE2_SUPPORT_FOUND - the system supports (at least) SSE2.
+-#
+-# Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo
+-# Copyright (c) 2019, Igalia S.L.
+-#
+-# Redistribution and use in source and binary forms, with or without modification,
+-# are permitted provided that the following conditions are met:
+-#
+-#   * Redistributions of source code must retain the above copyright notice,
+-#     this list of conditions and the following disclaimer.
+-#
+-#   * Redistributions in binary form must reproduce the above copyright notice,
+-#     this list of conditions and the following disclaimer in the documentation
+-#     and/or other materials provided with the distribution.
+-#
+-#   * Neither the name of the copyright holders nor the names of its contributors
+-#     may be used to endorse or promote products derived from this software without
+-#     specific prior written permission.
+-#
+-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+-# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+-# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+-# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+-# WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-
+-set(SSE2_SUPPORT_FOUND FALSE)
+-
+-macro(CHECK_FOR_SSE2)
+-    include(CheckCXXSourceRuns)
+-
+-    check_cxx_source_runs("
+-        #include <emmintrin.h>
+-        int main ()
+-        {
+-            __m128d a, b;
+-            double vals[2] = {0};
+-            a = _mm_loadu_pd (vals);
+-            b = _mm_add_pd (a,a);
+-            _mm_storeu_pd (vals,b);
+-            return(0);
+-        }"
+-        HAVE_SSE2_EXTENSIONS)
+-
+-    if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-        endif ()
+-    elseif (MSVC AND NOT CMAKE_CL_64)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-            message(STATUS "Found SSE2 extensions.")
+-        endif (HAVE_SSE2_EXTENSIONS)
+-    endif ()
+-
+-endmacro(CHECK_FOR_SSE2)
+-
+-CHECK_FOR_SSE2()
+-- 
+2.21.0
+
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 09f5afbb28..f6197b98ee 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2018 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -98,18 +98,14 @@ listing the files modified by a patch.")
 (define-public quilt
   (package
     (name "quilt")
-    (version "0.65")
+    (version "0.66")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "mirror://savannah/quilt/"
-                          name "-" version ".tar.gz"))
-      (sha256
-       (base32
-        "06b816m2gz9jfif7k9v2hrm7fz76zjg5pavf7hd3ifybwn4cgjzn"))
-      (patches (search-patches "quilt-test-fix-regex.patch"
-                               "quilt-getopt-second-separator.patch"
-                               "quilt-getopt-nondigit-param.patch"))))
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/quilt/"
+                           "quilt-" version ".tar.gz"))
+       (sha256
+        (base32 "01vfvk4pqigahx82fhaaffg921ivd3k7rylz1yfvy4zbdyd32jri"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gnu-gettext)))
@@ -216,7 +212,7 @@ refreshed, and more.")
          #:python ,python-2))                    ;not compatible with Python 3
       (synopsis "Patch tracking tool")
       (description
-       "'Patches' is a patch-tracking tool initially written for the QEMU
+       "@code{Patches} is a patch-tracking tool initially written for the QEMU
 project.  It provides commands that build a database of patches from a mailing
 list, and commands that can search that database.  It allows users to track
 the status of a patch, apply patches, and search for patches---all that from
@@ -248,7 +244,7 @@ GiB).")
 (define-public meld
   (package
     (name "meld")
-    (version "3.20.0")
+    (version "3.20.1")
     (source
      (origin
        (method url-fetch)
@@ -256,8 +252,7 @@ GiB).")
                            (version-major+minor version)
                            "/meld-" version ".tar.xz"))
        (sha256
-        (base32
-         "11khi1sg02k3b9qdag3r939cwi27cql4kjim7jhxf9ckfhpzwh6b"))))
+        (base32 "0jdj7kd6vj1mdc16gvrj1kar88b2j5875ajq18fx7cbc9ny46j55"))))
     (build-system python-build-system)
     (native-inputs
      `(("intltool" ,intltool)
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 8a78da854b..850e1db3e5 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -1034,7 +1034,7 @@ multiple files.")
 (define-public pdfpc
   (package
     (name "pdfpc")
-    (version "4.2.1")
+    (version "4.3.2")
     (source
      (origin
        (method git-fetch)
@@ -1043,8 +1043,7 @@ multiple files.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1rmsrpf5vlqhnyyrhq8apndny88ld2qvfjx6258653pqbimv7mx5"))))
+        (base32 "15y6g92fp6x6dwwhrhkfny5z20w7pq9c8w19fh2vzff9aa6m2h9z"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no test target
     (inputs
diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm
index aae83e5771..47e25083cd 100644
--- a/gnu/packages/perl-check.scm
+++ b/gnu/packages/perl-check.scm
@@ -142,6 +142,30 @@ framework base class.  It concentrates on offering reusable data driven
 patterns, so that you can write tests with a minimum of code.")
     (license perl-license)))
 
+(define-public perl-test-checkdeps
+  (package
+    (name "perl-test-checkdeps")
+    (version "0.010")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/L/LE/LEONT/Test-CheckDeps-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1vjinlixxdx6gfcw8y1dw2rla8bfhi8nmgcqr3nffc7kqskcrz36"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cpan-meta-check" ,perl-cpan-meta-check)))
+    (home-page "https://metacpan.org/release/Test-CheckDeps")
+    (synopsis "Check for presence of dependencies")
+    (description
+     "This module provides a test that checks all dependencies have been
+installed properly.")
+    (license perl-license)))
+
 (define-public perl-test-class
   (package
     (name "perl-test-class")
@@ -361,6 +385,30 @@ functions.")
     ;; license, any version, ..."
     (license gpl3+)))
 
+(define-public perl-test-dir
+  (package
+    (name "perl-test-dir")
+    (version "1.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MT/MTHURN/"
+                           "Test-Dir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hpafgr93jjl6s8spskhdxhgich4cccmaiq99mla5diyj4iv6ckk"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-pod-coverage" ,perl-pod-coverage)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+    (home-page "https://metacpan.org/release/Test-Dir")
+    (synopsis "Utilities for testing directory attributes")
+    (description
+     "This modules provides a collection of test utilities for directory
+attributes.")
+    (license perl-license)))
+
 (define-public perl-test-directory
   (package
     (name "perl-test-directory")
@@ -500,6 +548,58 @@ Test::Exception.  It does much less, but should allow greater flexibility in
 testing exception-throwing code with about the same amount of typing.")
     (license perl-license)))
 
+(define-public perl-test-file
+  (package
+    (name "perl-test-file")
+    (version "1.443")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/B/BD/BDFOY/Test-File-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1mdwb3x8d4l24wsymamsnq2c73a637v4q5kmb5xqqz31iymsdd31"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-utf8" ,perl-test-utf8)))
+    (home-page "https://metacpan.org/release/Test-File")
+    (synopsis "Utilities for testing file attributes")
+    (description
+     "@code{Test::File} provides a collection of test utilities for file
+attributes.")
+    (license perl-license)))
+
+(define-public perl-test-file-contents
+  (package
+    (name "perl-test-file-contents")
+    (version "0.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/Test-File-Contents-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0g8zgfyw84181snw7ghahnl9r4lrmlfj7zwi76sv8d0bj7xssvyd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)
+       ("perl-text-diff" ,perl-text-diff)))
+    (home-page "https://metacpan.org/release/Test-File-Contents")
+    (synopsis "Test routines for examining the contents of files")
+    (description
+     "@{Test::File::Contents} provides functions for testing the contents of
+files.")
+    (license perl-license)))
+
 (define-public perl-test-file-sharedir-dist
   (package
     (name "perl-test-file-sharedir-dist")
@@ -801,9 +901,10 @@ to gmtime,time or localtime.")
     (home-page "https://metacpan.org/release/Test-More-UTF8")
     (synopsis "Enhance Test::More for UTF8-based projects")
     (description "@code{Test::More::UTF8} is a simple extension for the widely
-used @code{Test::More} module.  By default, it will do a @code{binmode ':utf8'}
-on all of @code{Test::Builder}'s output handles thus enabling the easy use
-flagged strings without warnings like \"Wide character in print @dots{}\"")
+used @code{Test::More} module.  By default, it will do a @code{binmode
+@code{:utf8}} on all of @code{Test::Builder}'s output handles thus enabling the
+easy use flagged strings without warnings like \"Wide character in print
+@dots{}\"")
     (license perl-license)))
 
 (define-public perl-test-most
@@ -1274,6 +1375,32 @@ check if a string is valid and not corrupt, whereas the characteristics tests
 will check that string has a given set of characteristics.")
     (license perl-license)))
 
+(define-public perl-test-version
+  (package
+    (name "perl-test-version")
+    (version "2.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/P/PL/PLICEASE/Test-Version-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1q1qradaf7r2rb3jhpv01wl8z3bxymkfqrl9gwdhxwx5jwldvqcw"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-file-find-rule-perl" ,perl-file-find-rule-perl)))
+    (home-page "https://metacpan.org/release/Test-Version")
+    (synopsis "Check versions in modules")
+    (description
+     "@code{Test::Version} checks to ensure that all modules have a version
+defined, and that the version is valid.")
+    (license artistic2.0)))
+
 (define-public perl-test-warn
   (package
     (name "perl-test-warn")
diff --git a/gnu/packages/perl-web.scm b/gnu/packages/perl-web.scm
index c1af1d2caf..77a66f71d0 100644
--- a/gnu/packages/perl-web.scm
+++ b/gnu/packages/perl-web.scm
@@ -21,9 +21,11 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (guix packages)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (guix download)
-  #:use-module (guix build-system perl))
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages web))
 
 (define-public perl-mojolicious
   (package
@@ -48,6 +50,33 @@ used are outdated now, the idea behind it is not.  Mojolicious is a new
 endeavor to implement this idea using modern technologies.")
     (license license:artistic2.0)))
 
+(define-public perl-uri-db
+  (package
+    (name "perl-uri-db")
+    (version "0.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/URI-db-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0n56xxlw7c39pfar0dxckr9mbmp6yrzk53ic0cb24raiykm9v6f4"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)
+       ("perl-uri-nested" ,perl-uri-nested)))
+    (home-page "https://metacpan.org/release/URI-db")
+    (synopsis "Handle database URIs")
+    (description
+     "This module defines a format for database URIs, and provides a @{URI}
+class to handle these.")
+    (license license:perl-license)))
+
 (define-public perl-uri-escape
   (package
     (name "perl-uri-escape")
@@ -55,7 +84,7 @@ endeavor to implement this idea using modern technologies.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/URI-"
+       (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/URI-"
                            version ".tar.gz"))
        (sha256
         (base32
@@ -70,3 +99,29 @@ percent-decode URI strings as defined by RFC 3986.  Percent-encoding URI's is
 informally called URI escaping.  This is the terminology used by this module,
 which predates the formalization of the terms by the RFC by several years.")
     (license license:perl-license)))
+
+(define-public perl-uri-nested
+  (package
+    (name "perl-uri-nested")
+    (version "0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DW/DWHEELER/URI-Nested-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "1bzg6f11m8wfnmycflvp858rs99xknsx8hkip0xcdfjzlqwi75z1"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)))
+    (home-page "https://metacpan.org/release/URI-Nested")
+    (synopsis "Nested URIs")
+    (description
+     "@code{URI::Nested} provides support for nested URIs, where the scheme is
+a prefix, and the remainder of the URI is another URI.")
+    (license license:perl-license)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 52f0b852ad..58d6da2d01 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -18,7 +18,7 @@
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;;
@@ -49,6 +49,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages less)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages perl-web)
@@ -387,7 +388,7 @@ error when it would have happened.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/R/RG/RGARCIA/"
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
                            "base-" version ".tar.gz"))
        (sha256
         (base32 "1pjxcbbcpwlgzm0fzsbqd58zn8cj9vwril1wn3xfd7ws550mixa0"))))
@@ -733,7 +734,7 @@ to test the installed perl for compatibility with his modules.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "mirror://cpan/authors/id/R/RJ/RJBS/Carp-"
+                    "mirror://cpan/authors/id/X/XS/XSAWYERX/Carp-"
                     version ".tar.gz"))
               (sha256
                (base32
@@ -821,7 +822,7 @@ Perl.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Carp-Clan-" version ".tar.gz"))
        (sha256
         (base32
@@ -911,7 +912,7 @@ the same mk_accessors interface.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Class-Accessor-Grouped-" version ".tar.gz"))
        (sha256
         (base32 "1fy48hx56n5kdn1gz66awg465qf34r0n5jam64x7zxh9zhzb1m9m"))))
@@ -981,7 +982,7 @@ supporting the same interface, but using Class::C3 to do the hard work.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Class-C3-Componentised-" version ".tar.gz"))
        (sha256
         (base32 "14wn1g45z3b5apqq7dcai5drk01hfyqydsd2m6hsxzhyvi3b2l9h"))))
@@ -1027,7 +1028,7 @@ subclasses and can be overridden.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/"
+       (uri (string-append "mirror://cpan/authors/id/Y/YA/YANICK/"
                            "Class-Date-" version ".tar.gz"))
        (sha256
         (base32 "1h7dfjxkpqbfymrf1bn7699i4fx6pbv5wvvi5zszfr8sqqkax1yf"))))
@@ -1190,11 +1191,11 @@ write accessor methods for your objects that perform standard tasks.")
        ("perl-test-requires" ,perl-test-requires)))
     (home-page "https://metacpan.org/release/Class-Method-Modifiers")
     (synopsis "Moose-like method modifiers")
-    (description "Class::Method::Modifiers provides three modifiers: 'before',
-'around', and 'after'.  'before' and 'after' are run just before and after the
-method they modify, but can not really affect that original method.  'around'
-is run in place of the original method, with a hook to easily call that
-original method.")
+    (description "Class::Method::Modifiers provides three modifiers:
+@code{before}, @code{around}, and @code{after}.  @code{before} and @code{after}
+are run just before and after the method they modify, but can not really affect
+that original method.  @code{around} is run in place of the original method,
+with a hook to easily call that original method.")
     (license (package-license perl))))
 
 (define-public perl-class-singleton
@@ -1435,6 +1436,33 @@ some enhancements such as here-documents, C-style comments, and multiline
 options.")
     (license (package-license perl))))
 
+(define-public perl-config-gitlike
+  (package
+    (name "perl-config-gitlike")
+    (version "1.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AL/ALEXMV/Config-GitLike-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0kp57na9mk6yni693h2fwap6l1ndbcj97l4860r9vkzx2jw0fjk7"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-moo" ,perl-moo)
+       ("perl-moox-types-mooselike" ,perl-moox-types-mooselike)))
+    (home-page "https://metacpan.org/release/Config-GitLike")
+    (synopsis "Parse Git style configuration files")
+    (description
+     "This module handles parsing, modifying and creating configuration files
+of the style used by the Git version control system.")
+    (license perl-license)))
+
 (define-public perl-config-ini
   (package
     (name "perl-config-ini")
@@ -1530,6 +1558,28 @@ data.")
 @file{Changes} files that conform to a common specification.")
     (license perl-license)))
 
+(define-public perl-cpan-distnameinfo
+  (package
+    (name "perl-cpan-distnameinfo")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/G/GB/GBARR/CPAN-DistnameInfo-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0d94kx596w7k328cvq4y96z1gz12hdhn3z1mklkbrb7fyzlzn91g"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/CPAN-DistnameInfo")
+    (synopsis "Extract the name and version from a distribution filename")
+    (description
+     "@code{CPAN::DistnameInfo} uses heuristics to extract the distribution
+name and version from filenames.")
+    (license perl-license)))
+
 (define-public perl-cpan-meta-check
   (package
     (name "perl-cpan-meta-check")
@@ -2216,7 +2266,7 @@ time before its creation (in 1582).")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/P/PI/PIJLL/"
+       (uri (string-append "mirror://cpan/authors/id/W/WY/WYANT/"
                            "DateTime-Calendar-Julian-" version ".tar.gz"))
        (sha256
         (base32 "0gbw7rh706qk5jlmmz3yzsm0ilzp39kyar28g4j6d57my8cwaipx"))))
@@ -2491,9 +2541,22 @@ the DateTime.pm class.")
         (base32
          "0kz5kz47awf2bhb85xx5rbajkr093ipm2d2vkhqs8lqq0f305r3a"))))
     (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-tzdata
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "lib/DateTime/TimeZone/Local/Unix.pm"
+               (("our \\$ZoneinfoDir = '\\/usr\\/share\\/zoneinfo';")
+                (string-append "our $ZoneinfoDir = '"
+                               (assoc-ref inputs "tzdata") "/share/zoneinfo"
+                               "';")))
+             #t)))))
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
        ("perl-test-requires" ,perl-test-requires)))
+    (inputs
+     `(("tzdata" ,tzdata)))
     (propagated-inputs
      `(("perl-class-singleton" ,perl-class-singleton)
        ("perl-list-allutils" ,perl-list-allutils)
@@ -2738,6 +2801,26 @@ equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
 files/modules are installed or not).")
     (license (package-license perl))))
 
+(define-public perl-devel-leak
+  (package
+    (name "perl-devel-leak")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/N/NI/NI-S/"
+                           "Devel-Leak-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0lkj2xwc3lhxv7scl43r8kfmls4am0b98sqf5vmf7d72257w6hkg"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Devel-Leak")
+    (synopsis "Utility for looking for perl objects that are not reclaimed")
+    (description
+     "This module provides a basic way to discover if a piece of perl code is
+allocating perl data and not releasing them again.")
+    (license perl-license)))
+
 (define-public perl-devel-lexalias
   (package
     (name "perl-devel-lexalias")
@@ -2938,7 +3021,7 @@ input a message of arbitrary length and produces as output a
     (build-system perl-build-system)
     (synopsis "Perl implementation of the SHA-1 message digest algorithm")
     (description
-     "This package provides 'Digest::SHA1', an implementation of the NIST
+     "This package provides @code{Digest::SHA1}, an implementation of the NIST
 SHA-1 message digest algorithm for use by Perl programs.")
     (home-page "https://metacpan.org/release/Digest-SHA1")
     (license (package-license perl))))
@@ -3481,7 +3564,7 @@ provide a quick dropin when such functionality is needed.")
     (home-page "https://metacpan.org/release/File-HomeDir")
     (synopsis "Find your home and other directories on any platform")
     (description "File::HomeDir is a module for locating the directories that
-are \"owned\" by a user (typically your user) and to solve the various issues
+are @code{owned} by a user (typically your user) and to solve the various issues
 that arise trying to find them consistently across a wide variety of
 platforms.")
     (license (package-license perl))))
@@ -3747,7 +3830,7 @@ slurping and spewing.  All functions are optionally exported.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "File-Temp-" version ".tar.gz"))
        (sha256
         (base32 "0pr3wrxrk93wy7dz9gsb1sgl77icrs8rh2mah6wms5cdi2ll5ch1"))))
@@ -3803,6 +3886,31 @@ functionality; it returns a list of file names that match the given pattern.
 For instance, it supports the @code{**/*.pm} form.")
     (license (package-license perl))))
 
+(define-public perl-filesys-notify-simple
+  (package
+    (name "perl-filesys-notify-simple")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Filesys-Notify-Simple-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18jv96k1pf8wqf4vn2ahs7dv44lc9cyqj0bja9z17qici3dx7qxd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-sharedfork" ,perl-test-sharedfork)))
+    (home-page "https://metacpan.org/release/Filesys-Notify-Simple")
+    (synopsis "Simple and dumb file system watcher")
+    (description
+     "@code{Filesys::Notify::Simple} is a simple but unified interface to get
+notifications of changes to a given file system path.  It uses inotify2 on
+Linux, fsevents on OS X, @code{kqueue} on FreeBSD, and
+@code{FindFirstChangeNotification} on Windows if they're installed, and falls
+back to a full directory scan if none of these are available.")
+    (license perl-license)))
+
 (define-public perl-getopt-long
   (package
     (name "perl-getopt-long")
@@ -4212,6 +4320,41 @@ easier to develop interactive applications: is_interactive(), interactive(),
 and busy().")
     (license (package-license perl))))
 
+(define-public perl-io-pager
+  (package
+    (name "perl-io-pager")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/J/JP/JPIERCE/IO-Pager-"
+             version
+             "0.tgz"))
+       (sha256
+        (base32
+         "1vzdypsr7vkj8nnda9ccrksci6pqj5awwmi89l7x3mbpq36gad87"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-less
+           (lambda _
+             (substitute* "lib/IO/Pager.pm"
+               (("/usr/local/bin/less', '/usr/bin/less")
+                (which "less")))
+             #t)))))
+    (propagated-inputs
+     `(("perl-file-which" ,perl-file-which)))
+    (inputs
+     `(("less" ,less)))
+    (home-page "https://metacpan.org/release/IO-Pager")
+    (synopsis "Select a pager and pipe text to it")
+    (description
+     "@code{IO::Pager} can be used to locate an available pager and use it to
+display output if a TTY is in use.")
+    (license (package-license perl))))
+
 (define-public perl-io-string
   (package
     (name "perl-io-string")
@@ -4266,8 +4409,8 @@ filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines.")
     (home-page "https://metacpan.org/release/IO-Tty")
     (synopsis "Perl interface to pseudo ttys")
     (description
-     "This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to
-pseudo ttys.")
+     "This package provides the @code{IO::Pty} and @code{IO::Tty} Perl
+interfaces to pseudo ttys.")
     (license (package-license perl))))
 
 (define-public perl-ipc-cmd
@@ -4515,7 +4658,7 @@ versa.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/Log-Any-"
+       (uri (string-append "mirror://cpan/authors/id/P/PR/PREACTION/Log-Any-"
                            version ".tar.gz"))
        (sha256
         (base32 "1wb55ib4gvk8h5pjb6hliqg7li1xjk420q3w5r33f9p1ps60ylbl"))))
@@ -4533,7 +4676,7 @@ application, in turn, may choose one or more logging mechanisms via
 
 @code{Log::Any} has a very tiny footprint and no dependencies beyond Perl
 itself, which makes it appropriate for even small CPAN modules to use.  It
-defaults to 'null' logging activity, so a module can safely log without
+defaults to @code{null} logging activity, so a module can safely log without
 worrying about whether the application has chosen (or will ever choose) a
 logging mechanism.")
     (license (package-license perl))))
@@ -4606,7 +4749,7 @@ widely popular (Java-based) Log4j logging package in pure Perl.")
      "This module allows libraries to have a dependency to a small module
 instead of the full Log-Report distribution.  The full power of
 @code{Log::Report} is only released when the main program uses that module.
-In that case, the module using the 'Optional' will also use the full
+In that case, the module using the @code{Optional} will also use the full
 @code{Log::Report}, otherwise the dressed-down @code{Log::Report::Minimal}
 version.")
     (license (package-license perl))))
@@ -5274,7 +5417,7 @@ examine the contents, and perform some simple tasks.  It can also load the
     (home-page "https://metacpan.org/release/Module-Pluggable")
     (synopsis "Give your Perl module the ability to have plugins")
     (description "This module provides a simple but extensible way of having
-'plugins' for your Perl module.")
+@code{plugins} for your Perl module.")
     (license (package-license perl))))
 
 (define-public perl-module-runtime
@@ -5516,7 +5659,7 @@ sentences.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "MooseX-Emulate-Class-Accessor-Fast-"
                            version ".tar.gz"))
        (sha256
@@ -6226,7 +6369,7 @@ fields in Moo-based classes.")
   (source (origin
             (method url-fetch)
             (uri (string-append
-                  "mirror://cpan/authors/id/S/SY/SYOHEX/Mouse-v"
+                  "mirror://cpan/authors/id/S/SK/SKAJI/Mouse-v"
                   version
                   ".tar.gz"))
             (sha256
@@ -6540,7 +6683,7 @@ number exists in a given range, and to be able to manipulate the range.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Object-Signature-" version ".tar.gz"))
        (sha256
         (base32 "12k90c19ly93ib1p6sm3k7sbnr2h5dbywkdmnff2ngm99p4m68c4"))))
@@ -6635,7 +6778,7 @@ one or more modules.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Package-Stash-" version ".tar.gz"))
        (sha256
         (base32 "0zrs4byhlpq5ybnl0fd3y6pfzair6i2dyvzn7f7a7pgj9n2fi3n5"))))
@@ -6663,7 +6806,7 @@ of that behind a simple API.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Package-Stash-XS-" version ".tar.gz"))
        (sha256
         (base32 "1akqk10qxwk798qppajqbczwmhy4cs9g0lg961m3vq218slnnryk"))))
@@ -7130,7 +7273,7 @@ of @code{ref}.")
     (build-system perl-build-system)
     (synopsis "Provide commonly requested regular expressions")
     (description
-     "This module exports a single hash (`%RE') that stores or generates
+     "This module exports a single hash (@code{%RE}) that stores or generates
 commonly needed regular expressions.  Patterns currently provided include:
 balanced parentheses and brackets, delimited text (with escapes), integers and
 floating-point numbers in any base (up to 36), comments in 44 languages,
@@ -7539,6 +7682,32 @@ expanding standard C/Unix-style backslash escapes like \n and \t, wrapping and
 removing double-quotes, and truncating to fit within a desired length.")
     (license (package-license perl))))
 
+(define-public perl-string-formatter
+  (package
+    (name "perl-string-formatter")
+    (version "0.102084")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RJ/RJBS/String-Formatter-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0mlwm0rirv46gj4h072q8gdync5zxxsxy8p028gdyrhczl942dc3"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-params-util" ,perl-params-util)
+       ("perl-sub-exporter" ,perl-sub-exporter)))
+    (home-page "https://metacpan.org/release/String-Formatter")
+    (synopsis "Build your own sprintf-like functions")
+    (description
+     "@code{String::Formatter} is a tool for building sprintf-like formatting
+routines.  It supports named or positional formatting, custom conversions,
+fixed string interpolation, and simple width-matching.")
+    (license gpl2)))
+
 (define-public perl-string-rewriteprefix
   (package
     (name "perl-string-rewriteprefix")
@@ -7560,6 +7729,28 @@ removing double-quotes, and truncating to fit within a desired length.")
 known prefixes.")
     (license (package-license perl))))
 
+(define-public perl-string-shellquote
+  (package
+    (name "perl-string-shellquote")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RO/ROSCH/String-ShellQuote-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0dfxhr6hxc2majkkrm0qbx3qcbykzpphbj2ms93dc86f7183c1p6"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/String-ShellQuote")
+    (synopsis "Quote strings for passing through a shell")
+    (description
+     "@code{shell-quote} lets you pass arbitrary strings through the shell so
+that they won't be changed.")
+    (license (package-license perl))))
+
 (define-public perl-string-print
   (package
     (name "perl-string-print")
@@ -7790,7 +7981,7 @@ support for run-time mix-ins and roles.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/SVG-"
+       (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/SVG-"
                            version ".tar.gz"))
        (sha256
         (base32 "1br8dwh2363s6r0qgy7vv30gv5kj456vj5m6x83savx4wzfnsggc"))))
@@ -7893,6 +8084,28 @@ determining their type and clock speed.")
 of a system.")
     (license (package-license perl))))
 
+(define-public perl-sys-syscall
+  (package
+    (name "perl-sys-syscall")
+    (version "0.25")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BR/BRADFITZ/"
+                           "Sys-Syscall-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1r8k4q04dhs191zgdfgiagvbra770hx0bm6x24jsykxn0c6ghi8y"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Sys-Syscall")
+    (synopsis
+     "Access system calls that Perl doesn't normally provide access to")
+    (description
+     "Sys::Syscall allows one to use epoll and sendfile system calls from
+Perl.  Support is mostly Linux-only for now, but other syscalls/OSes are
+planned for the future.")
+    (license perl-license)))
+
 (define-public perl-task-weaken
   (package
     (name "perl-task-weaken")
@@ -7932,7 +8145,7 @@ error encouraging the user to seek support.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/A/AB/ABW/"
+       (uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/"
                            "Template-Toolkit-" version ".tar.gz"))
        (sha256
         (base32
@@ -7971,6 +8184,32 @@ documents: HTML, XML, POD, PostScript, LaTeX, and so on.")
 processing in Perl code.")
     (license (list gpl3 artistic2.0))))
 
+(define-public perl-template-tiny
+  (package
+    (name "perl-template-tiny")
+    (version "1.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AD/ADAMK/Template-Tiny-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0jhadxbc8rzbk2v8qvjrbhnvfp0m56iqar6d4nvxyl8bccn0cgh7"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Template-Tiny")
+    (synopsis "Template Toolkit reimplemented in as little code as possible")
+    (description
+     "@code{Template::Tiny} is a reimplementation of a subset of the
+functionality from Template Toolkit in as few lines of code as possible.
+
+It is intended for use in light-usage, low-memory, or low-cpu templating
+situations, where you may need to upgrade to the full feature set in the
+future, or if you want the retain the familiarity of TT-style templates.")
+    (license perl-license)))
+
 (define-public perl-term-encoding
   (package
     (name "perl-term-encoding")
@@ -8195,7 +8434,7 @@ text sequences from strings.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/M/MA/MAKAMAKA/"
+       (uri (string-append "mirror://cpan/authors/id/I/IS/ISHIGAKI/"
                            "Text-CSV-" version ".tar.gz"))
        (sha256
         (base32 "1llccsl6sr11g9affh43m6q5r85qgnpi9n7idcs1vi9cn4ww0kp7"))))
@@ -8538,6 +8777,28 @@ can also be set to any arbitrary supplied order.  The familiar perl array
 operations can also be performed on the IxHash.")
   (license (package-license perl))))
 
+(define-public perl-tie-handle-offset
+  (package
+    (name "perl-tie-handle-offset")
+    (version "0.004")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DA/DAGOLDEN/Tie-Handle-Offset-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "17m8s8314wi4g0wasdxk15rf12vzsgzmcbr598jam5f6bl2kk7zf"))))
+    (build-system perl-build-system)
+    (home-page "https://metacpan.org/release/Tie-Handle-Offset")
+    (synopsis "Special file handle that hides the beginning of a file")
+    (description
+     "This modules provides a file handle that hides the beginning of a file,
+by modifying the @code{seek()} and @code{tell()} calls.")
+    (license asl2.0)))
+
 (define-public perl-tie-toobject
   (package
     (name "perl-tie-toobject")
@@ -8612,7 +8873,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "mirror://cpan/authors/id/J/JH/JHI/Time-HiRes-"
+                    "mirror://cpan/authors/id/A/AT/ATOOMIC/Time-HiRes-"
                     version ".tar.gz"))
               (sha256
                (base32
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index f227786e8d..33c1686088 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -331,11 +331,12 @@ deserializing JSON.")
     (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.")
+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 public
+attributes.  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
@@ -492,13 +493,13 @@ licences therein.")
 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
+Where they are known about it also makes allowance for 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.")
+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 customary attributes
+are used.")
     (license license:artistic2.0)))
 
 (define-public perl6-mime-base64
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index f2cabec39a..328eddfbfa 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -163,14 +163,14 @@ from digital cameras.")
 (define-public gphoto2
   (package
     (name "gphoto2")
-    (version "2.5.17")
+    (version "2.5.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gphoto/gphoto/" version
                                   "/gphoto2-" version ".tar.bz2"))
               (sha256
                (base32
-                "0kslwclyyzvnxjw3gdzhlagj7l5f8lba833ipr9s0s0c4hwi0mxa"))))
+                "1xj80abkzvqrd6g1j1q946lhbp03gyapyxdwbhc0y14g1ash6vx3"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -204,10 +204,13 @@ MTP, and much more.")
     ;; Files are typically under LGPLv2+, but 'COPYING' says GPLv2+.
     (license license:gpl2+)))
 
+;; Note: See <https://metacpan.org/pod/Image::ExifTool> for the latest
+;; release.  The versions at <https://www.sno.phy.queensu.ca/~phil/exiftool/>
+;; are not meant for production use according to the Changes file.
 (define-public perl-image-exiftool
   (package
     (name "perl-image-exiftool")
-    (version "11.31")
+    (version "11.30")
     (source
      (origin
        (method url-fetch)
@@ -218,7 +221,7 @@ MTP, and much more.")
              (string-append "https://www.sno.phy.queensu.ca/~phil/exiftool/"
                             "Image-ExifTool-" version ".tar.gz")))
        (sha256
-        (base32 "1kplb7hvhrhqxkr4ddc44q7a3fs0r8svv2jlh325nwkfi7aa5kz5"))))
+        (base32 "0vkjb2c1a3jdlq8rx1jywx4p3f1bmgjn7rzfwx6dxgij2lx76lrs"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases
@@ -357,7 +360,7 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "2.6.1")
+    (version "2.6.2")
     (source
      (origin
        (method url-fetch)
@@ -365,7 +368,7 @@ photographic equipment.")
              "https://github.com/darktable-org/darktable/releases/"
              "download/release-" version "/darktable-" version ".tar.xz"))
        (sha256
-        (base32 "09ihbj0602spgc5lfbskf9am38n03gam2r8v3kj4dyfgxqr37ib3"))))
+        (base32 "0igvgyd042j7hm4y8fcm6dc1qqjs4d1r7y6f0pzpa0x416xyzfcw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -496,28 +499,28 @@ a complete panorama and stitch any series of overlapping pictures.")
 (define-public rawtherapee
   (package
     (name "rawtherapee")
-    (version "5.5")
+    (version "5.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://rawtherapee.com/shared/source/"
                                   "rawtherapee-" version ".tar.xz"))
               (sha256
                (base32
-                "1w28a2rnxnw8hs7s8x8zkccgi5z5y653602jg7g86lfx6zxwjsf1"))))
+                "0x0dcfp6f3j08gr11wq5ah4prp790xy4iadbgsm9kgc0jlalpspr"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f ; no test suite
+     '(#:tests? #f                      ; no test suite
        #:build-type "release"
        #:configure-flags
        (list (string-append "-DLENSFUNDBDIR="
                             (assoc-ref %build-inputs "lensfun")
                             "/share/lensfun")
-             ; Don't optimize the build for the host machine. See the file
-             ; 'ProcessorTargets.cmake' in the source distribution for more
-             ; information.
+             ;; Don't optimize the build for the host machine. See the file
+             ;; 'ProcessorTargets.cmake' in the source distribution for more
+             ;; information.
              "-DPROC_TARGET_NUMBER=1"
-             ; These flags are recommended by upstream for distributed packages.
-             ; See the file 'RELEASE_NOTES.txt' in the source distribution.
+             ;; These flags are recommended by upstream for distributed packages.
+             ;; See the file 'RELEASE_NOTES.txt' in the source distribution.
              "-O3"
              "-DCACHE_NAME_SUFFIX=\"\"")))
     (native-inputs
@@ -535,6 +538,7 @@ a complete panorama and stitch any series of overlapping pictures.")
        ("libiptcdata" ,libiptcdata)
        ("libjpeg" ,libjpeg)
        ("libpng" ,libpng)
+       ("librsvg" ,librsvg)
        ("libsigc++" ,libsigc++)
        ("libtiff" ,libtiff)
        ("zlib" ,zlib)))
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 8d96e54c90..45dd2bdd3a 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -58,7 +58,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.3.3")
+    (version "7.3.4")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -66,7 +66,7 @@
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cxrpaz5cvx1qq9klwgvcyvcly865sxpn4bdk82wpl43l5wkxc3b"))
+                "10rvj9dn41213w0q2l123rn6sycr29syik88czprhpv5z2hrzrvg"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
@@ -86,7 +86,7 @@
                   #t))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags
+     `(#:configure-flags
        (let-syntax ((with (syntax-rules ()
                             ((_ option input)
                              (string-append option "="
@@ -182,6 +182,20 @@
              (substitute* "ext/standard/tests/streams/bug60602.phpt"
                (("'ls'") (string-append "'" (which "ls") "'")))
 
+             ,@(if (string-prefix? "arm" (or (%current-system)
+                                             (%current-target-system)))
+                   ;; Drop tests known to fail on armhf.
+                   '((for-each delete-file
+                              (list
+                                "ext/calendar/tests/unixtojd_error1.phpt"
+                                ;; arm can be a lot slower, so a time-related test fails
+                                "ext/fileinfo/tests/cve-2014-3538-nojit.phpt"
+                                "ext/pcre/tests/bug76514.phpt"
+                                "ext/pcre/tests/preg_match_error3.phpt"
+                                "ext/standard/tests/general_functions/var_export-locale.phpt"
+                                "ext/standard/tests/general_functions/var_export_basic1.phpt")))
+                   '())
+
              ;; Drop tests that are known to fail.
              (for-each delete-file
                        '("ext/posix/tests/posix_getgrgid.phpt"    ; Requires /etc/group.
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 22a62a0f5b..b4ea20e387 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2016, 2017, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -93,7 +93,16 @@ scientific data.")
                                   "guile-charting-" version ".tar.gz"))
               (sha256
                (base32
-                "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))))
+                "0w5qiyv9v0ip5li22x762bm48g8xnw281w66iyw094zdw611pb2m"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; By default, .go files would be installed to
+                  ;; $libdir/…/ccache instead of $libdir/…/site-ccache.  Fix
+                  ;; that.
+                  (substitute* (find-files "." "^Makefile\\.in$")
+                    (("/ccache") "/site-ccache"))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("guile" ,guile-2.2)))
@@ -171,21 +180,23 @@ colors, styles, options and details.")
 (define-public asymptote
   (package
     (name "asymptote")
-    (version "2.47")
+    (version "2.49")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/asymptote/"
                                   version "/asymptote-" version ".src.tgz"))
               (sha256
                (base32
-                "0zc24n2vwzxdfmcppqfk3fkqlb4jmvswzi3bz232kxl7dyiyb971"))))
+                "1vljhq68gyc2503l9fj76rk1q4a4db9a1sp3fdfagqqmirnmybp5"))))
     (build-system gnu-build-system)
     ;; Note: The 'asy' binary retains a reference to docdir for use with its
     ;; "help" command in interactive mode, so adding a "doc" output is not
     ;; currently useful.
     (native-inputs
-     `(("gs" ,ghostscript)              ;For tests
-       ("texinfo" ,texinfo)             ;For generating documentation
+     `(("emacs" ,emacs-minimal)
+       ("gs" ,ghostscript)              ;For tests
+       ("perl" ,perl)
+       ("texinfo" ,texinfo)           ;For generating documentation
        ;; For the manual and the tests.
        ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
                                         texlive-latex-amsfonts
@@ -193,15 +204,15 @@ colors, styles, options and details.")
                                         texlive-latex-graphics
                                         texlive-latex-oberdiek ; for ifluatex
                                         texlive-latex-parskip
-                                        texlive-tex-texinfo)))
-       ("emacs" ,emacs-minimal)
-       ("perl" ,perl)))
+                                        texlive-tex-texinfo)))))
     (inputs
      `(("fftw" ,fftw)
        ("freeglut" ,freeglut)
+       ("glew" ,glew)
+       ("glm" ,glm)
        ("gsl" ,gsl)
        ("libgc" ,libgc)
-       ("python" ,python-2)
+       ("python" ,python)
        ("readline" ,readline)
        ("zlib" ,zlib)))
     (arguments
@@ -221,6 +232,23 @@ colors, styles, options and details.")
                             "/share/texmf/tex/context/third"))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build
+           ;; XXX: Build process complains about missing "config.h"
+           ;; and "primitives.h" files.
+           (lambda _
+             (substitute* (find-files "." "\\.in$")
+               (("#include <primitives.h>") "#include \"primitives.h\""))
+             (invoke "touch" "prc/config.h")))
+         (add-after 'unpack 'move-info-location
+           ;; Build process install info file in the unusual
+           ;; "%out/share/info/asymptote/" location.  Move it to
+           ;; "%out/share/info/" so it appears in the top-level directory.
+           (lambda _
+             (substitute* "doc/png/Makefile.in"
+               (("(\\$\\(infodir\\))/asymptote" _ infodir) infodir))
+             (substitute* "doc/asymptote.texi"
+               (("asymptote/asymptote") "asymptote"))
+             #t))
          (add-before 'build 'patch-pdf-viewer
            (lambda _
              ;; Default to a free pdf viewer.
@@ -233,12 +261,6 @@ colors, styles, options and details.")
            ;; "failed to create directory /homeless-shelter/.asy" error.
            (lambda _
              (setenv "HOME" "/tmp")
-             ;; The "gs" test fails, complaining about an incompatible
-             ;; Ghostscript version.  Not sure what's going on...  Is this
-             ;; because I've just replaced texlive with texlive-union?
-             (substitute* "tests/Makefile"
-               (("^(TESTDIRS =.*) gs(.*)" begin end)
-                (string-append begin " " end)))
              #t))
          (add-after 'install 'install-Emacs-data
            (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/poedit.scm b/gnu/packages/poedit.scm
new file mode 100644
index 0000000000..0b21a9eea7
--- /dev/null
+++ b/gnu/packages/poedit.scm
@@ -0,0 +1,80 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages poedit)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages rdf)
+  #:use-module (gnu packages wxwidgets)
+  #:use-module (gnu packages xml))
+
+(define-public poedit
+  (package
+    (name "poedit")
+    (version "2.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/vslavik/poedit")
+                     (commit (string-append "v" version "-oss"))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fxzmry4b23l90j03jdyvd4jprdpy4xcnhw7xrmmfnlbh2abf9x7"))
+             (modules '((guix build utils)))
+             (snippet
+              '(begin
+                 (delete-file-recursively "deps")
+                 #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-boost-libdir="
+                            (assoc-ref %build-inputs "boost")
+                            "/lib"))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext-minimal" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("boost" ,boost)
+       ("enchant" ,enchant)
+       ("gtk+" ,gtk+)
+       ("gtkspell3" ,gtkspell3)
+       ("icu4c" ,icu4c)
+       ("lucene++" ,lucene++)
+       ("pugixml" ,pugixml)
+       ("wxwidgets" ,wxwidgets)))
+    (home-page "https://poedit.net/")
+    (synopsis "Gettext catalog editing tool")
+    (description "Poedit is a GUI frontend to the GNU gettext utilities and
+a catalog editor/source code parser.  It helps with translating applications
+into other languages.")
+    (license license:expat)))
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index ba74a5c905..ccb8ebf8f8 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -34,6 +34,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt)
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 34793db58b..405ad08ba4 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -3,7 +3,8 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -162,7 +163,7 @@ different programming languages.")
 (define-public fmt
   (package
     (name "fmt")
-    (version "4.1.0")
+    (version "5.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -170,14 +171,10 @@ different programming languages.")
                     version "/fmt-" version ".zip"))
               (sha256
                (base32
-                "1swyqw3dn2vx5sw2yh5vk0vrvrkp7fv07cj4272yxl5rrq1byjcx"))))
+                "0p51nhmvjniqlffmmb9djhprnclvm448f2vkdxymvxw307hl21sc"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
-    (arguments
-     `(#:configure-flags
-       (list (string-append "-DCMAKE_INSTALL_LIBDIR="
-                            (assoc-ref %outputs "out") "/lib"))))
     (home-page "http://fmtlib.net/")
     (synopsis "Small and fast C++ formatting library")
     (description
@@ -244,14 +241,14 @@ seen in a terminal.")
 (define-public highlight
   (package
     (name "highlight")
-    (version "3.49")
+    (version "3.50")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.andre-simon.de/zip/highlight-"
                            version ".tar.bz2"))
        (sha256
-        (base32 "1zlhmlq5fnsxxmm04qfchhl4w2iw5fa6sn81c34q6k2m1m77g6aj"))))
+        (base32 "0frcq12zy3dqfhwwzylm10ydp7zp51w9jlijm23zvx09daslg1bl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/printers.scm b/gnu/packages/printers.scm
index dff9ed3010..2d608bf3cb 100644
--- a/gnu/packages/printers.scm
+++ b/gnu/packages/printers.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,9 +21,13 @@
 (define-module (gnu packages printers)
   #:use-module (guix packages)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt))
 
@@ -68,3 +73,54 @@
 with Graphtec and Sihouette plotting cutters using an SVG file as its input.")
     (home-page "http://robocut.org")
     (license license:gpl3+)))
+
+(define-public brlaser
+  (let ((commit "779f71e80fcc583f4537c844de141cf8e6a738fe")
+        (revision "1"))
+    (package
+      (name "brlaser")
+      (version (git-version "4" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/pdewacht/brlaser.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0yrz9706660hdfi2y0ndp254r0vw9y665hwmxbbzfnz4ai13vj50"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:configure-flags
+         (list (string-append "-DCUPS_DATA_DIR="
+                              (assoc-ref %outputs "out")
+                              "/share/cups")
+               (string-append "-DCUPS_SERVER_BIN="
+                              (assoc-ref %outputs "out")
+                              "/lib/cups"))))
+      (inputs
+       `(("ghostscript" ,ghostscript)
+         ("cups" ,cups)
+         ("zlib" ,zlib)))
+      (home-page "https://github.com/pdewacht/brlaser")
+      (synopsis "Brother laser printer driver")
+      (description "Brlaser is a CUPS driver for Brother laser printers.  This
+driver is known to work with these printers:
+
+@enumerate
+@item Brother DCP-1510
+@item Brother DCP-7030
+@item Brother DCP-7040
+@item Brother DCP-7055
+@item Brother DCP-7055W
+@item Brother DCP-7065DN
+@item Brother DCP-7080
+@item Brother HL-1200 series
+@item Brother HL-L2320D series
+@item Brother HL-L2360D series
+@item Brother MFC-7240
+@item Brother MFC-7360N
+@end enumerate
+
+It partially works with printers from the Brother HL-L2300D series.")
+      (license license:gpl2+))))
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 73169216b4..b30461e153 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; 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 © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -27,6 +27,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system emacs)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
@@ -208,3 +209,33 @@ mechanism for serializing structured data.")
 
 (define-public python2-protobuf
   (package-with-python2 python-protobuf))
+
+(define-public python-protobuf-next
+  (package (inherit python-protobuf)
+    (name "python-protobuf")
+    (version (package-version protobuf-next) )
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "protobuf" version))
+       (sha256
+        (base32
+         "04bqb12smlckzmgkj6vgmpbr3cby0n6726cmz33bqr7kn1vb728l"))))))
+
+(define-public emacs-protobuf-mode
+  (package
+    (name "emacs-protobuf-mode")
+    (version (package-version protobuf))
+    (source (package-source protobuf))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'set-emacs-load-path 'change-working-directory
+           (lambda _ (chdir "editors") #t)))))
+    (home-page "https://github.com/protocolbuffers/protobuf")
+    (synopsis "Protocol buffers major mode for Emacs")
+    (description
+     "This package provides an Emacs major mode for editing Protocol Buffer
+source files.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 08f1e4d399..6248be0c9b 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -336,13 +336,13 @@ password storage.")
 (define-public python-certifi
   (package
     (name "python-certifi")
-    (version "2018.11.29")
+    (version "2019.3.9")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "certifi" version))
               (sha256
                (base32
-                "1dvccavd2fzq4j37w0sznylp92ps14zi6gvlxzm23in0yhzciya7"))))
+                "1bnpw7hrf9i1l9gfxjnzi45hkrvzz0pyn9ia8m4mw7sxhgb08qdj"))))
     (build-system python-build-system)
     (home-page "https://certifi.io/")
     (synopsis "Python CA certificate bundle")
@@ -970,14 +970,14 @@ derivation function.")
 (define-public python-service-identity
   (package
     (name "python-service-identity")
-    (version "17.0.0")
+    (version "18.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "service_identity" version))
        (sha256
         (base32
-         "1aq24cn3nnsjr9g797dayhx4g653h6bd41ksqhidzq0rvarzn0a0"))))
+         "0b9f5qiqjy8ralzgwjgkhx82h6h8sa7532psmb8mkd65md5aan08"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-attrs" ,python-attrs)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index fa634c2ecd..1c9ccefa6b 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2959,14 +2959,14 @@ ecosystem.")
 (define-public python-hyperlink
   (package
     (name "python-hyperlink")
-    (version "18.0.0")
+    (version "19.0.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "hyperlink" version))
         (sha256
          (base32
-          "01m3y19arfqljksngy8grc966zdb4larysralb8cajzi8kvly6zh"))))
+          "0m2nhi0j8wmgfscf974wd5v1xfq8mah286hil6npy1ys0m3y7222"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-idna" ,python-idna)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 71727ad1da..e6d84932a6 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -51,7 +51,7 @@
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
 ;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
-;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -483,6 +483,8 @@ concepts.")
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
+             ;; XXX: A Python 2 test fails when HOME=/homeless-shelter.
+             (setenv "HOME" "/tmp")
              (invoke "python" "sh.py" "test"))))))
     (native-inputs
      `(("python-coverage" ,python-coverage)))
@@ -622,24 +624,27 @@ version identifier.")
 (define-public python-serpent
   (package
     (name "python-serpent")
-    (version "1.27")
+    (version "1.28")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "serpent" version))
        (sha256
-        (base32
-         "04p9dsrm5pv8vhk3flvih55kgvlzpi38hlaykdiakddmgwqw93bg"))))
+        (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("python-attrs" ,python-attrs)
+       ("python-pytz" ,python-pytz)))
     (home-page "https://github.com/irmen/Serpent")
     (synopsis "Serializer for literal Python expressions")
     (description
-     "Serpent provides ast.literal_eval() compatible object tree
-serialization.  It serializes an object tree into bytes (utf-8 encoded string)
-that can be decoded and then passed as-is to ast.literal_eval() to rebuild it
-as the original object tree.  As such it is safe to send serpent data to other
-machines over the network for instance (because only safe literals are
-encoded).")
+     "Serpent provides @code{ast.literal_eval()}-compatible object tree
+serialization.  It serializes an object tree into bytes (an utf-8 encoded
+string) that can be decoded and then passed as-is to @code{ast.literal_eval()}
+to rebuild the original object tree.
+
+Because only safe literals are encoded, it is safe to send serpent data to
+other machines, such as over the network.")
     (license license:expat)))
 
 (define-public python-setuptools
@@ -896,7 +901,7 @@ of @code{xmlfile}.")
 (define-public python-openpyxl
   (package
     (name "python-openpyxl")
-    (version "2.6.0")
+    (version "2.6.2")
     (source
      (origin
        ;; We use the upstream repository, as the tests are not included in the
@@ -907,8 +912,7 @@ of @code{xmlfile}.")
              (changeset version)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
-        (base32
-         "1x47ngn7ybaqdbvg90c8h2x0j6yfdfj25gjfinp2w5rf62gsany7"))))
+        (base32 "1qhij6kcvdxqjy4g6193nsv4q7fy8n4fwyd3c2z047idlm6s3j4w"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1729,6 +1733,37 @@ from git information.
 (define-public python2-pbr
   (package-with-python2 python-pbr))
 
+(define-public python-pyrsistent
+  (package
+    (name "python-pyrsistent")
+    (version "0.14.11")
+    (home-page "https://github.com/tobgu/pyrsistent")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pyrsistent" version))
+              (sha256
+               (base32
+                "1qkh74bm296mp5g3r11lgsksr6bh4w1bf8pji4nmxdlfj542ga1w"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-hypothesis" ,python-hypothesis)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (synopsis "Persistent data structures for Python")
+    (description
+     "Pyrsistent is a number of persistent collections (by some referred to as
+functional data structures).  Persistent in the sense that they are immutable.
+
+All methods on a data structure that would normally mutate it instead return a
+new copy of the structure containing the requested updates.  The original
+structure is left untouched.")
+    (license license:expat)))
+
+(define-public python2-pyrsistent
+  (package-with-python2 python-pyrsistent))
+
 (define-public python-exif-read
   (package
     (name "python-exif-read")
@@ -1899,21 +1934,28 @@ between Julian dates and Gregorian dates.")
 (define-public python-jsonschema
   (package
     (name "python-jsonschema")
-    (version "2.6.0")
+    (version "3.0.1")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "jsonschema" version))
              (sha256
               (base32
-               "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
+               "03g20i1xfg4qdlk4475pl4pp7y0h37g1fbgs5qhy678q9xb822hc"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (replace 'check (lambda _ (invoke "nosetests"))))))
+         (replace 'check
+           (lambda _
+             (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
+             (invoke "trial" "jsonschema"))))))
     (native-inputs
-     `(("python-nose" ,python-nose)
-       ("python-vcversioner" ,python-vcversioner)))
+     `(("python-setuptools_scm" ,python-setuptools-scm)
+       ("python-twisted" ,python-twisted)))
+    (propagated-inputs
+     `(("python-attrs" ,python-attrs)
+       ("python-pyrsistent" ,python-pyrsistent)
+       ("python-six" ,python-six)))
     (home-page "https://github.com/Julian/jsonschema")
     (synopsis "Implementation of JSON Schema for Python")
     (description
@@ -1925,11 +1967,9 @@ between Julian dates and Gregorian dates.")
   (let ((jsonschema (package-with-python2
                      (strip-python2-variant python-jsonschema))))
     (package (inherit jsonschema)
-             (native-inputs
-              `(("python2-mock" ,python2-mock)
-                ,@(package-native-inputs jsonschema)))
              (propagated-inputs
-              `(("python2-functools32" ,python2-functools32))))))
+              `(("python2-functools32" ,python2-functools32)
+                ,@(package-propagated-inputs jsonschema))))))
 
 (define-public python-schema
   (package
@@ -2638,6 +2678,292 @@ and several other projects.")
 (define-public python2-guzzle-sphinx-theme
   (package-with-python2 python-guzzle-sphinx-theme))
 
+(define-public python-bumpversion
+  (package
+    (name "python-bumpversion")
+    (version "0.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bumpversion" version))
+       (sha256
+        (base32
+         "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/peritus/bumpversion")
+    (synopsis "Tool to bump software version")
+    (description "This tool provides a command-line interface (CLI) to bump a
+software version simply.")
+    (license license:expat)))
+
+(define-public python-deprecated
+  (package
+    (name "python-deprecated")
+    (version "1.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tantale/deprecated.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "14909glxxwwc4b9qpz2b9jdriwzi5n65ichw85xqppap5f79wcwz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "pytest"))))))
+    (propagated-inputs
+     `(("python-wrapt" ,python-wrapt)))
+    (native-inputs
+     `(("python-bumpversion" ,python-bumpversion)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-sphinx" ,python-sphinx)
+       ("python-tox" ,python-tox)))
+    (home-page "https://github.com/tantale/deprecated")
+    (synopsis "Python decorator to deprecate classes, functions or methods")
+    (description "The @code{deprecated} decorator provides a convenient way to deprecate
+to deprecate classes, functions or methods.")
+    (license license:expat)))
+
+(define-public python-pygithub
+  (package
+    (name "python-pygithub")
+    (version "1.43.7")
+    (source
+     ;; We fetch from the Git repo because there are no tests in the PyPI
+     ;; archive.
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/PyGithub/PyGithub.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ww92zz0ja9w6rw83vphmn8rwmcn6abg16j4q7zxjc0rrg2cfj9i"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  ;; Some tests rely on the network.
+                  (add-after 'unpack 'disable-failing-tests
+                    (lambda _
+                      (substitute* "tests/Issue142.py"
+                        (("testDecodeJson") "disabled_testDecodeJson"))
+                      #t))
+                  (add-before 'check 'prepare-for-tests
+                    (lambda _
+                      (for-each (lambda (f)
+                                  (chmod f #o666))
+                                (find-files "./tests"))
+                      (system* "python" "-m" "lib2to3" "-w" "-n" "tests")
+                      (setenv "PYTHONPATH"
+                              (string-append "./tests:" (getenv "PYTHONPATH")))
+                      #t)))))
+    (propagated-inputs
+     `(("python-deprecated" ,python-deprecated)
+       ("python-pyjwt" ,python-pyjwt)
+       ("python-requests" ,python-requests)))
+    (native-inputs `(("python-httpretty" ,python-httpretty)))
+    (home-page "https://pygithub.readthedocs.io/en/latest/")
+    (synopsis "Python library for the GitHub API")
+    (description "This library allows managing GitHub resources such as
+repositories, user profiles, and organizations in your Python applications,
+using version 3 of the GitHub application programming interface (API).")
+    (license license:lgpl3+)))
+
+(define-public python-rellu
+  (package
+    (name "python-rellu")
+    (version "0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "rellu" version))
+       (sha256
+        (base32
+         "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-invoke" ,python-invoke)
+       ("python-pygithub" ,python-pygithub)))
+    (home-page "https://github.com/robotframework/rellu")
+    (synopsis "Utilities to create PyPI releases")
+    (description "This collection of utilities contains tooling and templates
+to assist in creating releases on GitHub and publishing them on PyPI.  It is
+designed to be used by Robot Framework and tools and libraries in its
+ecosystem, but can naturally be used also by other projects.")
+    (license license:asl2.0)))
+
+(define-public python-robotframework
+  (package
+    (name "python-robotframework")
+    (version "3.1.1")
+    ;; There are no tests in the PyPI archive.
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/robotframework/robotframework.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1aaiamc9l35m5sf7xl2qc5q9308v7sz3p1qgzcslsjxzddphyn4v"))
+       (patches (search-patches
+                 "python-robotframework-honor-source-date-epoch.patch"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'build 'build-and-install-doc
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((doc-output (assoc-ref outputs "doc"))
+                             (doc (string-append doc-output "/share/"
+                                                 ,name "-" ,version "/")))
+                        (invoke "invoke" "library-docs" "all")
+                        (mkdir-p doc)
+                        (copy-recursively "doc/libraries"
+                                          (string-append doc "/libraries"))
+                        #t)))
+                  (replace 'check
+                    (lambda _
+                      (invoke "python" "utest/run.py"))))))
+    (native-inputs
+     `(("python-invoke" ,python-invoke)
+       ("python-rellu" ,python-rellu)
+       ("python:tk" ,python "tk")))     ;used when building the HTML doc
+    (outputs '("out" "doc"))
+    (home-page "https://robotframework.org")
+    (synopsis "Generic automation framework")
+    (description "Robot Framework is a generic automation framework for
+acceptance testing, acceptance test driven development (ATDD), and robotic
+process automation (RPA).")
+    (license license:asl2.0)))
+
+(define-public python-robotframework-lint
+  ;; There is no properly tagged release; the commit below seems to correspond
+  ;; to the 0.9 stable release available from PyPI.  The tests are not
+  ;; included in the PyPI archive, so we fetch the sources from the upstream
+  ;; Git repo.
+  (let ((commit "e851879bab1f63e4e53b34a4dc8a67ed95102830")
+        (revision "1"))
+    (package
+      (name "python-robotframework-lint")
+      (version (git-version "0.9.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/boakley/robotframework-lint.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1p6fknqg5sb9qz5857ji4a877657vgfjm5v3zn45994parx6ml1m"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda _
+               (invoke "python" "-m" "robot" "-A"
+                       "tests/conf/default.args" "tests"))))))
+      (propagated-inputs
+       `(("python-robotframework" ,python-robotframework)))
+      (home-page "https://github.com/boakley/robotframework-lint/")
+      (synopsis "Static analysis tool (linter) for Robot Framework")
+      (description "This package provides the @code{rflint} command-line
+utility, a static analysis tool (linter) for Robot Framework source files.")
+      (license license:asl2.0))))
+
+(define-public python-robotframework-sshlibrary
+  (package
+    (name "python-robotframework-sshlibrary")
+    (version "3.3.0")
+    ;; There are no tests in the PyPI archive.
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/robotframework/SSHLibrary.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1mk6dz2jqqndbx4yji09012q6rmadnqdywi7czvj62b0s07dr3r2"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'build-and-install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((doc-output (assoc-ref outputs "doc"))
+                    (doc (string-append doc-output "/share/"
+                                        ,name "-" ,version "/")))
+               (invoke "chmod" "-R" "+w" "docs")
+               (invoke "invoke" "kw-docs" "project-docs")
+               (mkdir-p doc)
+               (for-each delete-file (find-files "docs" "\\.rst"))
+               (copy-recursively "docs" doc)
+               #t)))
+         (replace 'check
+           (lambda _
+             ;; Some tests require an SSH server; we remove them.
+             (delete-file "utest/test_client_api.py")
+             (delete-file "utest/test_scp.py")
+             (invoke "python" "utest/run.py"))))))
+    (propagated-inputs
+     `(("python-robotframework" ,python-robotframework)
+       ("python-paramiko" ,python-paramiko)
+       ("python-scp" ,python-scp)))
+    (native-inputs
+     `(("openssh" ,openssh)
+       ("which" ,which)
+       ;; To generate the documentation
+       ("python-docutils" ,python-docutils)
+       ("python-invoke" ,python-invoke)
+       ("python-pygments" ,python-pygments)
+       ("python-rellu" ,python-rellu)))
+    (outputs '("out" "doc"))
+    (home-page "https://github.com/robotframework/SSHLibrary")
+    (synopsis "Robot Framework library for SSH and SFTP")
+    (description "SSHLibrary is a Robot Framework library providing support
+for SSH and SFTP.  It has the following main usages:
+@itemize @bullet
+@item Executing commands on the remote machine, either blocking or non-blocking.
+@item Writing and reading in an interactive shell.
+@item Transferring files and directories over SFTP.
+@item Ensuring that files and directories exist on the remote machine.
+@end itemize")
+    (license license:asl2.0)))
+
+(define-public python-scp
+  (package
+    (name "python-scp")
+    (version "0.13.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "scp" version))
+       (sha256
+        (base32
+         "1crlpw9lnn58fs1c1rmh7s7s9y5gkgpgjsqlvg9qa51kq1knx7gg"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f))                     ;tests require an SSH server
+    (propagated-inputs
+     `(("python-paramiko" ,python-paramiko)))
+    (home-page "https://github.com/jbardin/scp.py")
+    (synopsis "SCP protocol module for Python and Paramiko")
+    (description "The scp module extends the Paramiko library to send and
+receive files via the SCP1 protocol, as implemented by the OpenSSH
+@command{scp} program.")
+    (license license:gpl2+)))
+
 (define-public python-rst.linker
   (package
     (name "python-rst.linker")
@@ -2772,14 +3098,14 @@ Server (PLS).")
 (define-public python-language-server
   (package
     (name "python-language-server")
-    (version "0.25.0")
+    (version "0.26.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-language-server" version))
        (sha256
         (base32
-         "1xabnaqd4n72myrc3mxl2y33vr2p7c9c5a87n77p9k327ckvdx01"))))
+         "1vs9ckfmm534n1hq3m871916wsjvi5h4gyj6wlzg13ck6506lx0s"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pluggy" ,python-pluggy)
@@ -3356,24 +3682,16 @@ color scales, and color space conversion easy.  It has support for:
 (define-public python-pygit2
   (package
     (name "python-pygit2")
-    (version "0.27.4")
+    (version "0.28.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pygit2" version))
        (sha256
-        (base32
-         "15c1mhwwjc7nr8hn5gm21hcfhw61jmwb0vngpjhlm3y5565wg2pz"))))
+        (base32 "0lngsaz029d4fjcwhl17pr59nh9gwl6hwfin36nph60fgsmfdg3d"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f; tests don't run correctly in our environment
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-dependency-versioning
-           (lambda _
-             (substitute* "setup.py"
-               (("<") "<="))
-             #t)))))
+     '(#:tests? #f))            ; tests don't run correctly in our environment
     (propagated-inputs
      `(("python-six" ,python-six)
        ("python-cffi" ,python-cffi)
@@ -4460,13 +4778,13 @@ memoizing PEG/Packrat parser in Python.")
     (version "0.13.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/pygridtools/gridmap/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pygridtools/gridmap.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1gzjg2k6f14i1msm2b0ax8d9ds1hvk6qd5nlaivg8m4cxqp4cp1x"))))
+        (base32 "1478lbwsr1w24cii2x01m2910fvh8r43ghnb78nc972a96hqiknm"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
@@ -4491,13 +4809,13 @@ cluster without needing to write any wrapper code yourself.")
     (version "1.0.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/nickstenning/honcho/archive/v"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nickstenning/honcho.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0zizn61n5z5hq421hkypk9pw8s6fpxw30f4hsg7k4ivwzy3gjw9j"))))
+        (base32 "11bd87474qpif20xdcn0ra1idj5k16ka51i658wfpxwc6nzsn92b"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-pytest" ,python-pytest)
@@ -5648,7 +5966,7 @@ It is written entirely in Python.")
     (synopsis "Backport of additions to the 'collections.abc' module")
     (description
      "Python-backports-abc provides a backport of additions to the
-'collections.abc' module in Python-3.5.")
+@code{collections.abc} module in Python-3.5.")
     (license license:psfl)))
 
 (define-public python2-backports-abc
@@ -6038,14 +6356,14 @@ Python.")
 (define-public python-markdown
   (package
     (name "python-markdown")
-    (version "3.0.1")
+    (version "3.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Markdown" version))
        (sha256
         (base32
-         "0z6v8649sr434d5r5zmrhydka7v7f9yas4bwcgkcs0650jdhybnh"))))
+         "0l62x154r9mgdvfap06gf0nkrmjd7xixlfshsxcdif2nlrlnyjpw"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose" ,python-nose)
@@ -6616,14 +6934,14 @@ versions of Python.")
 (define-public python-idna
   (package
     (name "python-idna")
-    (version "2.7")
+    (version "2.8")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "idna" version))
        (sha256
         (base32
-         "05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8"))))
+         "01rlkigdxg17sf9yar1jl8n18ls59367wqh59hnawlyg53vb6my3"))))
     (build-system python-build-system)
     (home-page "https://github.com/kjd/idna")
     (synopsis "Internationalized domain names in applications")
@@ -6713,14 +7031,15 @@ Python Package Index (PyPI).")
     (name "python-tlsh")
     (version "3.4.5")
     (home-page "https://github.com/trendmicro/tlsh")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/trendmicro/tlsh/archive/v"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1x1vahd4zg5kpyr9h9hs3fvh460p25rjy4cclwdnbbw8x3vc30q3"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/trendmicro/tlsh.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll"))))
     (build-system cmake-build-system)
     (arguments
      '(#:out-of-source? #f
@@ -6838,7 +7157,9 @@ Python's @code{ctypes} foreign function interface (FFI).")
                            (string-append "'" file "/lib/libmagic.so'")))
                         #t))))))
     (inputs `(("file" ,file)))
-    (self-native-input? #f)
+    (native-inputs (if (%current-target-system)
+                       `(("self" ,this-package))
+                       '()))
     (synopsis "Python bindings to the libmagic file type guesser.  Note that
 this module and the python-magic module both provide a \"magic.py\" file;
 these two modules, which are different and were developed separately, both
@@ -9354,23 +9675,19 @@ format.")
 (define-public python-twisted
   (package
     (name "python-twisted")
-    (version "17.5.0")
+    (version "19.2.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Twisted" version ".tar.bz2"))
               (sha256
                (base32
-                "1sh2h23nnizcdyrl2rn7zxijglikxwz7z7grqpvq496zy2aa967i"))))
+                "1gmb8d57s13d8znvqnxi47vqzqz141z443dbxg9wjkp8ia9f220p"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Some tests are failing.
-       ;; #:phases
-       ;; (modify-phases %standard-phases
-       ;;   (replace 'check
-       ;;     (lambda _
-       ;;       (zero? (system* "./bin/trial" "twisted")))))
     (propagated-inputs
      `(("python-zope-interface" ,python-zope-interface)
+       ("python-pyhamcrest" ,python-pyhamcrest)
        ("python-incremental" ,python-incremental)
        ("python-hyperlink" ,python-hyperlink)
        ("python-constantly" ,python-constantly)
@@ -10204,20 +10521,21 @@ discovery, monitoring and configuration.")
     (name "python-schematics")
     (version "1.1.1")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://github.com/schematics/schematics/archive/v" version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
-        (sha256
-         (base32
-          "19v1i69bf3bzarfxmbv0v6ivpcn758x3shvbiy9l2hy0lvqwnp6l"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/schematics/schematics.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-six" ,python-six)))
     (arguments
-     `(#:tests? #f)) ; requires a bunch of not very nice packages with fixed
-                     ; version requirements (eg python-coveralls)
+     ;; The tests require a bunch of not very nice packages with fixed
+     ;; version requirements (e.g. python-coveralls).
+     `(#:tests? #f))
     (home-page "https://github.com/schematics/schematics")
     (synopsis "Python Data Structures for Humans")
     (description "Python Data Structures for Humans.")
@@ -10307,12 +10625,12 @@ Python to manipulate OpenDocument 1.2 files.")
     (description
      "Natsort lets you apply natural sorting on lists instead of
 lexicographical.  If you use the built-in @code{sorted} method in python
-on a list such as @code{['a20', 'a9', 'a1', 'a4', 'a10']}, it would be
-returned as @code{['a1', 'a10', 'a20', 'a4', 'a9']}.  Natsort provides a
-function @code{natsorted} that identifies numbers and sorts them separately
-from strings.  It can also sort version numbers, real numbers, mixed types
-and more, and comes with a shell command @command{natsort} that exposes this
-functionality in the command line.")
+on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4},
+@code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20},
+@code{a4}, @code{a9}]}.  Natsort provides a function @code{natsorted} that
+identifies numbers and sorts them separately from strings.  It can also sort
+version numbers, real numbers, mixed types and more, and comes with a shell
+command @command{natsort} that exposes this functionality in the command line.")
     (license license:expat)
     (properties `((python2-variant . ,(delay python2-natsort))))))
 
@@ -10804,16 +11122,17 @@ network.")
 (define-public python-xopen
   (package
     (name "python-xopen")
-    (version "0.3.3")
+    (version "0.5.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "xopen" version))
         (sha256
           (base32
-           "1a0wbil552wsmklwd89ssmgz3pjd86qa9i7jh8wqb9wslc8a2qjr"))
-        (file-name (string-append name "-" version ".tar.gz"))))
+           "17xbrgi23l87yg6h0qcknssp2q812miiy33qw6v45v5gx0jwv5xh"))))
     (build-system python-build-system)
+    (propagated-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://github.com/marcelm/xopen/")
     (synopsis "Open compressed files transparently")
     (description "This module provides an @code{xopen} function that works like
@@ -11265,13 +11584,13 @@ instead of servers and network commands.")
 (define-public python-automat
   (package
     (name "python-automat")
-    (version "0.6.0")
+    (version "0.7.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Automat" version))
               (sha256
                (base32
-                "1a7nsrljysfmdqmpn2apfa1gg6rfah4y9sizvns8gb08rx7d07rw"))))
+                "03ivg70n3b1cbcd2zvjhk8y4kmqxcvhmili39lmgx09dza1qpmyb"))))
     (build-system python-build-system)
     ;; We disable the tests because they require python-twisted, while
     ;; python-twisted depends on python-automat.  Twisted is optional, but the
@@ -11298,13 +11617,13 @@ transducers).")
 (define-public python-m2r
   (package
     (name "python-m2r")
-    (version "0.1.12")
+    (version "0.2.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "m2r" version))
               (sha256
                (base32
-                "1axrwnf425sz4qz3c0qc7yhhki4myzb8rki7pczcsgzznzmqdyxd"))))
+                "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-docutils" ,python-docutils)
@@ -12541,13 +12860,13 @@ Swagger 2.0).")
     (version "0.6.3")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/rochacbruno/flasgger/archive/"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/rochacbruno/flasgger.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
-          (base32
-            "1gqzlm0rb55fdpsy5ipkganlx9cnpi454fqyycr03jm22zql14ay"))))
+          (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -13053,13 +13372,13 @@ executed more than a given number of times during a given period.")
     (version "0.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/kovidgoyal/dukpy/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kovidgoyal/dukpy.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0pj39rfwlzivqm5hkrsza7gssg6ggpxlq5ivc8f3h7x5pfgc6y6c"))))
+        (base32 "13h21nqzasv4zj32xs61brmc106pr2cx243672crcmwxxnjgaxls"))))
     (build-system python-build-system)
     (home-page "https://github.com/kovidgoyal/dukpy")
     (synopsis "Run JavaScript in python")
@@ -13508,11 +13827,12 @@ and works only with Python 2 and NumPy < 1.9.")
     (synopsis "Send files to the user's @file{~/Trash} directory")
     (description "This package provides a Python library to send files to the
 user's @file{~/Trash} directory.")
+    (properties `((python2-variant . ,(delay python2-send2trash))))
     (license license:bsd-3)))
 
 (define-public python2-send2trash
   (package
-    (inherit (package-with-python2 python-send2trash))
+    (inherit (package-with-python2 (strip-python2-variant python-send2trash)))
     (arguments
      (substitute-keyword-arguments (package-arguments python-send2trash)
        ((#:phases phases)
@@ -13521,8 +13841,7 @@ user's @file{~/Trash} directory.")
              (lambda _
                (setenv "PYTHONPATH"
                        (string-append (getcwd) ":" (getenv "PYTHONPATH")))
-               #t))))))
-    (properties `((python2-variant . ,(delay python-send2trash))))))
+               #t))))))))
 
 (define-public python-yapf
   (package
@@ -14125,16 +14444,15 @@ manager compatible with @code{asyncio}.")
   (package
     (name "python-glob2")
     (version "0.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/miracle2k/python-glob2/archive/"
-                    version
-                    ".tar.gz"))
-              (sha256
-               (base32
-                "0ja168f0dz4kbz4m06dm0rd3acaypk6hjx2km541pw22y9s40mag"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/miracle2k/python-glob2.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lm1xz3k3l0k1c5bcp9hlzmi3gp5j8dl1k3xhpiq5mnm0xq6n163"))))
     (build-system python-build-system)
     (home-page "https://github.com/miracle2k/python-glob2/")
     (synopsis "Extended Version of the python buildin glob module")
@@ -14346,7 +14664,7 @@ introspection.")
     (synopsis "File transport adapter for Requests")
     (description
      "Requests-File is a transport adapter for use with the Requests Python
-library to allow local filesystem access via file:// URLs.")
+library to allow local file system access via @code{file://} URLs.")
     (license license:asl2.0)))
 
 (define-public python2-requests-file
@@ -14549,14 +14867,14 @@ tool).")
 (define-public python-anndata
   (package
     (name "python-anndata")
-    (version "0.6.9")
+    (version "0.6.18")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "anndata" version))
        (sha256
         (base32
-         "1fh461xyyc7pcrjfgd013bdc2alf53r46ss3gfw3431mbb1gappi"))))
+         "03x83yjaccbqszj7x4fwwmpil0ai59yx64d1zmf2691za3j03w73"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-h5py" ,python-h5py)
@@ -14575,16 +14893,15 @@ object-oriented library such as @code{scikit-learn}.")
 (define-public python-dill
   (package
     (name "python-dill")
-    (version "0.2.8.2")
+    (version "0.2.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dill" version))
        (sha256
-        (base32
-         "1cymzn9fxwdy33h21zkk4gqgzvd25110hh3zdqnvnwa3p52c4kb2"))))
+        (base32 "0vwqyi6hyz2r29zydc78dqymkbc5y7gia16xcdh215cikxph9mpn"))))
     (build-system python-build-system)
-    ;; FIXME: The check phase fails with "don't know how to make test".
+    ;; FIXME: The check phase fails with "don't know how to make test from: …".
     (arguments '(#:tests? #f))
     (home-page "https://pypi.org/project/dill")
     (synopsis "Serialize all of Python")
@@ -14593,7 +14910,7 @@ and de-serializing Python objects to the majority of the built-in Python
 types.  Dill provides the user the same interface as the @code{pickle} module,
 and also includes some additional features.  In addition to pickling Python
 objects, @code{dill} provides the ability to save the state of an interpreter
-session in a single command.  Hence, it would be feasable to save a
+session in a single command.  Hence, it would be feasible to save a
 interpreter session, close the interpreter, ship the pickled file to another
 computer, open a new interpreter, unpickle the session and thus continue from
 the saved state of the original interpreter session.")
@@ -14818,14 +15135,14 @@ append on old values.  Partd excels at shuffling operations.")
 (define-public python-dask
   (package
     (name "python-dask")
-    (version "1.1.4")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "dask" version))
        (sha256
         (base32
-         "1hrnfz4pzawikz9b622vjz2500n7hs25nz9msy1k8l4g7l2kr6ky"))))
+         "1y0dqcp72ixwblgway0jpvfirlxfcmwrjiivdq96firj1hw127sd"))))
     (build-system python-build-system)
     ;; A single test out of 5000+ fails.  This test is marked as xfail when
     ;; pytest-xdist is used.
@@ -15229,3 +15546,45 @@ and dates in \"human readable\" forms.  For example, it would display
     (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)))
+
+(define-public python-annoy
+  (package
+    (name "python-annoy")
+    (version "1.15.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "annoy" version))
+       (sha256
+        (base32
+         "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://github.com/spotify/annoy/")
+    (synopsis "Approximate nearest neighbors library")
+    (description
+     "Annoy is a C++ library with Python bindings to search for points in
+space that are close to a given query point.  It also creates large read-only
+file-based data structures that are @code{mmap}ped into memory so that many
+processes may share the same data.")
+    (license license:asl2.0)))
+
+(define-public python-sphinxcontrib-svg2pdfconverter
+  (package
+    (name "python-sphinxcontrib-svg2pdfconverter")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "sphinxcontrib-svg2pdfconverter" version))
+              (sha256
+               (base32
+                "1abvbgkkii13q8nsb10r0gc5lm0p9iq1iwhfhakn5ifn6asa0183"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/missinglinkelectronics/sphinxcontrib-svg2pdfconverter/releases")
+    (synopsis "Sphinx SVG to PDF converter extension")
+    (description "A Sphinx extension to convert SVG images to PDF in case the builder does not support
+SVG images natively (e.g. LaTeX).")
+    (license license:bsd-3)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 87d92765f4..afc4d8dc06 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -48,7 +48,6 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
@@ -56,6 +55,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
@@ -96,6 +96,18 @@
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'delete-broken-tests
+           (lambda _
+             ;; TODO: Two date tests (for date01 and date02) fail for unknown
+             ;; reasons.
+             ;;   Actual   (result): ""
+             ;;   Expected (output): "01"
+             ;;   Actual   (result): ""
+             ;;   Expected (output): "Jan. 1, 2008"
+             (delete-file "templates/tests/testfilters.cpp")
+             (substitute* "templates/tests/CMakeLists.txt"
+               (("testfilters") ""))
+             #t))
          (add-before 'check 'check-setup
            (lambda _
              ;; make Qt render "offscreen", required for tests
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index e623f9b8c4..86ce1514f0 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -602,7 +602,7 @@ can also be launched manually in any page.")
     (synopsis "Advisory locking for ActiveRecord")
     (description
      "The With advisory lock gem adds advisory locking to ActiveRecord for
-PostgreSQL and MySQL.  SQLite is also supported, but this uses the filesystem
+PostgreSQL and MySQL.  SQLite is also supported, but this uses the file system
 for locks.")
     (home-page "https://closuretree.github.io/with_advisory_lock/")
     (license license:expat)))
diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm
index fefde982bc..42e17b63d9 100644
--- a/gnu/packages/ratpoison.scm
+++ b/gnu/packages/ratpoison.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
@@ -30,17 +30,6 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages fontutils))
 
-(define ratpoison.desktop
-  (origin
-    (method url-fetch)
-    (uri (string-append "https://sources.gentoo.org/cgi-bin/viewvc.cgi/"
-                        "gentoo-x86/x11-wm/ratpoison/files/ratpoison.desktop"
-                        "?revision=1.1"))
-    (file-name "ratpoison.desktop")
-    (sha256
-     (base32
-      "1rh3f4c3rhn6q2hmkraam0831xqcqyj3qkqf019ahaxsxaan3553"))))
-
 (define-public ratpoison
   (package
     (name "ratpoison")
@@ -55,17 +44,28 @@
              (patches (search-patches "ratpoison-shell.patch"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:modules ((ice-9 format)
+                  ,@%gnu-build-system-modules)
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'install-xsession
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      (let ((rpd "ratpoison.desktop")
-                            (dst (string-append (assoc-ref outputs "out")
-                                                "/share/xsessions/")))
-                        (mkdir-p dst)
-                        (copy-file (assoc-ref inputs rpd)
-                                   (string-append dst rpd))
-                        #t))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Add a .desktop file to xsessions.
+             (let* ((output    (assoc-ref outputs "out"))
+                    (xsessions (string-append output "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file (string-append xsessions
+                                                     "/ratpoison.desktop")
+                 (lambda (port)
+                   (format port
+                           "[Desktop Entry]~@
+                            Name=ratpoison~@
+                            Comment=Tiling window manager: say goodbye to the rodent!~@
+                            Exec=~a/bin/ratpoison~@
+                            TryExec=~@*~a/bin/ratpoison~@
+                            Type=Application~%"
+                           output)))
+               #t))))))
     (inputs
      `(("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
@@ -80,8 +80,7 @@
        ("xorgproto" ,xorgproto)))
     (native-inputs
      `(("perl" ,perl)
-       ("pkg-config" ,pkg-config)
-       ("ratpoison.desktop" ,ratpoison.desktop)))
+       ("pkg-config" ,pkg-config)))
     (home-page "https://www.nongnu.org/ratpoison/")
     (synopsis "Simple mouse-free tiling window manager")
     (description
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 4a3efd8d3f..3e2db7acdf 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,7 +21,7 @@
 
 (define-module (gnu packages rdf)
   #:use-module ((guix licenses)
-                #:select (non-copyleft isc gpl2 lgpl2.1 lgpl2.1+))
+                #:select (non-copyleft asl2.0 isc gpl2 lgpl2.1 lgpl2.1+ lgpl3+))
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix download)
@@ -119,6 +120,37 @@ full-featured indexing and searching API.  It is a port of the very popular
 Java Lucene text search engine API to C++.")
     (license lgpl2.1)))
 
+(define-public lucene++
+  (package
+    (name "lucene++")
+    (version "3.0.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/luceneplusplus/LucenePlusPlus")
+                     (commit (string-append "rel_" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06b37fly6l27zc6kbm93f6khfsv61w792j8xihfagpcm9cfz2zi1"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; CXX_FLAGS suggested in a closed issue on github:
+       ;; https://github.com/luceneplusplus/LucenePlusPlus/issues/100
+       (list "-Wno-dev" "-DCMAKE_CXX_FLAGS=-DBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT"
+             ;; Install in lib64 break rpath
+             "-DCMAKE_INSTALL_LIBDIR:PATH=lib")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("boost" ,boost)))
+    (home-page "https://github.com/luceneplusplus/LucenePlusPlus")
+    (synopsis "Text search engine")
+    (description "Lucene++ is an up to date C++ port of the popular Java
+Lucene library, a high-performance, full-featured text search engine.")
+    (license (list asl2.0 lgpl3+)))); either asl or lgpl.
+
 (define-public lrdf
   (package
     (name "lrdf")
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index f409565787..f37fb064a2 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -30,7 +30,7 @@
 (define-public re2
    (package
      (name "re2")
-     (version "2019-03-01")
+     (version "2019-04-01")
      (home-page "https://github.com/google/re2")
      (source (origin
                (method git-fetch)
@@ -38,7 +38,7 @@
                (file-name (git-file-name name version))
                (sha256
                 (base32
-                 "032lsrb57llq79icpvrrh1fmjzy2i4bdmydfww178nc45ya5wcl4"))))
+                 "018b8z3fgcr02rmhxdz80r363k40938cbgmk1c9b46k6xkc4q0hd"))))
      (build-system gnu-build-system)
      (arguments
       `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9a899b6bb4..934b8ac557 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -2870,7 +2870,7 @@ conversion to (X)HTML.")
    `(("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
+    "Rerun is a tool to launch programs, then monitor the file system, 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/")
@@ -2986,12 +2986,13 @@ with processes on remote servers, via SSH2.")
     (version "1.2.2.rc2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/net-ssh/net-scp/archive/v"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/net-ssh/net-scp.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0xyf17mhgvyz54xjj9ria4wnq3x62bhmkfgzqv8jwiip2bplv1nk"))))
+        (base32 "1nyn17sy71fn7zs3y6wbgcn35318c10flqgc0582409095x4h0sx"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("bundler" ,bundler)
@@ -5260,8 +5261,8 @@ techniques and a terse syntax.")
        ("ruby-netrc" ,ruby-netrc)))
     (native-inputs
      `(("bundler" ,bundler)
-       ("ruby-webmock", ruby-webmock-2)
-       ("ruby-rspec", ruby-rspec)))
+       ("ruby-webmock" ,ruby-webmock-2)
+       ("ruby-rspec" ,ruby-rspec)))
     (synopsis "Simple HTTP and REST client for Ruby")
     (description
      "@code{rest-client} provides a simple HTTP and REST client for Ruby,
@@ -7679,14 +7680,15 @@ strings or files.")
   (package
     (name "ruby-sass-spec")
     (version "3.5.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/sass/sass-spec/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sass/sass-spec.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zsw66830w0xlc7kxz6fm4b5nyb44vdsdgm9mgy06s5aixx83pwr"))))
     (build-system ruby-build-system)
     (propagated-inputs
      `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 83c132c4f7..5f1f2be5a0 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -70,7 +70,10 @@
     (_                (nix-system->gnu-triplet system))))
 
 
-(define* (rust-source version hash #:key (patches '()))
+(define* (rust-source-pre-1.32 version hash
+                               #:key
+                               (patches '())
+                               (patch-flags '("-p1")))
   (origin
     (method url-fetch)
     (uri (string-append "https://static.rust-lang.org/dist/"
@@ -78,16 +81,51 @@
     (sha256 (base32 hash))
     (modules '((guix build utils)))
     (snippet '(begin (delete-file-recursively "src/llvm") #t))
-    (patches (map search-patch patches))))
+    (patches (map search-patch patches))
+    (patch-flags patch-flags)))
+
+(define* (rust-bootstrapped-package-pre-1.32 base-rust version checksum
+                                             #:key
+                                             (patches '())
+                                             (patch-flags '("-p1")))
+  "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST.
+Specific to rust versions before 1.32."
+  (package
+    (inherit base-rust)
+    (version version)
+    (source
+     (rust-source-pre-1.32 version checksum #:patches patches #:patch-flags patch-flags))
+    (native-inputs
+     (alist-replace "cargo-bootstrap" (list base-rust "cargo")
+                    (alist-replace "rustc-bootstrap" (list base-rust)
+                                   (package-native-inputs base-rust))))))
+
+(define* (rust-source version hash
+                      #:key
+                      (patches '())
+                      (patch-flags '("-p1")))
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://static.rust-lang.org/dist/"
+                        "rustc-" version "-src.tar.gz"))
+    (sha256 (base32 hash))
+    (modules '((guix build utils)))
+    (snippet '(begin (delete-file-recursively "src/llvm")
+                     (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+                     #t))
+    (patches (map search-patch patches))
+    (patch-flags patch-flags)))
 
 (define* (rust-bootstrapped-package base-rust version checksum
-                                    #:key (patches '()))
+                                    #:key
+                                    (patches '())
+                                    (patch-flags '("-p1")))
   "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST."
   (package
     (inherit base-rust)
     (version version)
     (source
-     (rust-source version checksum #:patches patches))
+     (rust-source version checksum #:patches patches #:patch-flags patch-flags))
     (native-inputs
      (alist-replace "cargo-bootstrap" (list base-rust "cargo")
                     (alist-replace "rustc-bootstrap" (list base-rust)
@@ -118,7 +156,7 @@
          ("flex" ,flex)
          ;; Required for the libstd sources.
          ("rustc"
-          ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))))
+          ,(rust-source-pre-1.32 "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))))
       (arguments
        `(#:test-target "local_tests"
          #:make-flags (list (string-append "LLVM_CONFIG="
@@ -191,7 +229,7 @@ safety and thread safety guarantees.")
   (package
     (name "rust")
     (version "1.19.0")
-    (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"
+    (source (rust-source-pre-1.32 version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"
             #:patches '("rust-1.19-mrustc.patch")))
     (outputs '("out" "cargo"))
     (properties '((timeout . 72000)               ;20 hours
@@ -424,7 +462,7 @@ safety and thread safety guarantees.")
 
 (define-public rust-1.20
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.19 "1.20.0"
+         (rust-bootstrapped-package-pre-1.32 rust-1.19 "1.20.0"
           "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a")))
     (package
       (inherit base-rust)
@@ -569,7 +607,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    #t))))))))))
 
 (define-public rust-1.21
-  (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0"
+  (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.20 "1.21.0"
                     "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp")))
     (package
       (inherit base-rust)
@@ -585,7 +623,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  #t)))))))))
 
 (define-public rust-1.22
-  (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1"
+  (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.21 "1.22.1"
                     "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb")))
     (package
       (inherit base-rust)
@@ -601,7 +639,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  #t)))))))))
 
 (define-public rust-1.23
-  (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0"
+  (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.22 "1.23.0"
                     "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l")))
     (package
       (inherit base-rust)
@@ -620,8 +658,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 
 (define-public rust-1.24
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.23 "1.24.1"
-                                    "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y")))
+         (rust-bootstrapped-package-pre-1.32 rust-1.23 "1.24.1"
+          "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y")))
     (package
       (inherit base-rust)
       (arguments
@@ -642,7 +680,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 ;;; Keep using llvm 3.9.1 until builds become determenistic
 (define-public rust-1.25
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.24 "1.25.0"
+         (rust-bootstrapped-package-pre-1.32 rust-1.24 "1.25.0"
           "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"
           #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))
     (package
@@ -673,7 +711,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 
 (define-public rust-1.26
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.25 "1.26.2"
+         (rust-bootstrapped-package-pre-1.32 rust-1.25 "1.26.2"
           "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"
           #:patches '("rust-coresimd-doctest.patch"
                       "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
@@ -685,6 +723,16 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
           `(modify-phases ,phases
              ;; binaryen was replaced with LLD project from LLVM
              (delete 'dont-build-native)
+             (replace 'check
+               (lambda* _
+                 ;; Enable parallel execution.
+                 (let ((parallel-job-spec
+                        (string-append "-j" (number->string
+                                             (min 4
+                                                  (parallel-job-count))))))
+                   (invoke "./x.py" parallel-job-spec "test" "-vv")
+                   (invoke "./x.py" parallel-job-spec "test"
+                           "src/tools/cargo"))))
              (replace 'remove-unsupported-tests
                (lambda* _
                  ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
@@ -728,13 +776,13 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 
 (define-public rust-1.27
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.26 "1.27.2"
-                                    "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
-                                    #:patches
-                                    '("rust-coresimd-doctest.patch"
-                                      "rust-bootstrap-stage0-test.patch"
-                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                      "rust-reproducible-builds.patch"))))
+         (rust-bootstrapped-package-pre-1.32 rust-1.26 "1.27.2"
+          "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
+          #:patches
+          '("rust-coresimd-doctest.patch"
+            "rust-bootstrap-stage0-test.patch"
+            "rust-1.25-accept-more-detailed-gdb-lines.patch"
+            "rust-reproducible-builds.patch"))))
     (package
       (inherit base-rust)
       (arguments
@@ -757,13 +805,13 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 
 (define-public rust-1.28
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.27 "1.28.0"
-                                    "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
-                                    #:patches
-                                    '("rust-coresimd-doctest.patch"
-                                      "rust-bootstrap-stage0-test.patch"
-                                      "rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                      "rust-reproducible-builds.patch"))))
+         (rust-bootstrapped-package-pre-1.32 rust-1.27 "1.28.0"
+          "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"
+          #:patches
+          '("rust-coresimd-doctest.patch"
+            "rust-bootstrap-stage0-test.patch"
+            "rust-1.25-accept-more-detailed-gdb-lines.patch"
+            "rust-reproducible-builds.patch"))))
     (package
       (inherit base-rust)
       (inputs
@@ -791,22 +839,22 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 
 (define-public rust-1.29
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.28 "1.29.2"
-                                    "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
-                                    #:patches
-                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                      "rust-reproducible-builds.patch"))))
+         (rust-bootstrapped-package-pre-1.32 rust-1.28 "1.29.2"
+          "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"
+          #:patches
+          '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+            "rust-reproducible-builds.patch"))))
     (package
       (inherit base-rust))))
 
 (define-public rust-1.30
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.29 "1.30.1"
-                                    "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"
-                                    #:patches
-                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                      "rust-1.30-gdb-llvm.patch"
-                                      "rust-reproducible-builds.patch"))))
+         (rust-bootstrapped-package-pre-1.32 rust-1.29 "1.30.1"
+          "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"
+          #:patches
+          '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+            "rust-1.30-gdb-llvm.patch"
+            "rust-reproducible-builds.patch"))))
     (package
       (inherit base-rust)
       (inputs
@@ -839,18 +887,21 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn include") "#[ignore]\nfn include")
                    (("fn exclude") "#[ignore]\nfn exclude"))
                    #t))
-             ;; Appears that this test isn't currently running and has been
-             ;; moved elsewhere, so the patch doesn't apply.
-             (delete 'disable-amd64-avx-test))))))))
+             ;; The test has been moved elsewhere.
+             (replace 'disable-amd64-avx-test
+               (lambda _
+                 (substitute* "src/test/ui/run-pass/issues/issue-44056.rs"
+	          (("only-x86_64") "ignore-test"))
+                  #t)))))))))
 
-(define-public rust
+(define-public rust-1.31
   (let ((base-rust
-         (rust-bootstrapped-package rust-1.30 "1.31.1"
-                                    "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"
-                                    #:patches
-                                    '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                      "rust-1.30-gdb-llvm.patch"
-                                      "rust-reproducible-builds.patch"))))
+         (rust-bootstrapped-package-pre-1.32 rust-1.30 "1.31.1"
+          "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"
+          #:patches
+          '("rust-1.25-accept-more-detailed-gdb-lines.patch"
+            "rust-1.30-gdb-llvm.patch"
+            "rust-reproducible-builds.patch"))))
     (package
       (inherit base-rust)
       (arguments
@@ -872,6 +923,12 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                      ((" Command::new\\(\"echo\"\\)")
                       (string-append "\nCommand::new(\"" coreutils "/bin/echo\")\n")))
                    #t)))
+	      ;; The test has been moved elsewhere.
+	      (replace 'disable-amd64-avx-test
+	        (lambda _
+	          (substitute* "src/test/ui/issues/issue-44056.rs"
+                   (("only-x86_64") "ignore-test"))
+                  #t))
              (add-after 'patch-tests 'patch-process-docs-rev-cmd
                (lambda* _
                  ;; Disable some doc tests which depend on the "rev" command
@@ -879,3 +936,97 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (substitute* "src/libstd/process.rs"
                    (("```rust") "```rust,no_run"))
                  #t)))))))))
+
+(define-public rust-1.32
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.31 "1.32.0"
+          "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac"
+          #:patches '("rust-reproducible-builds.patch")
+          ;; the vendor directory has moved to the root of
+          ;; the tarball, so we have to strip an extra prefix
+          #:patch-flags '("-p2"))))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Downgrade to LLVM 6, all LTO tests appear to fail with LLVM 7.0.1
+       (alist-replace "llvm" (list llvm-6)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             ;; Cargo.lock and the vendor/ directory have been moved to the
+             ;; root of the rust tarball
+             (replace 'patch-cargo-checksums
+               (lambda* _
+                 (substitute* "Cargo.lock"
+                   (("(\"checksum .* = )\".*\"" all name)
+                    (string-append name "\"" ,%cargo-reference-hash "\"")))
+                 (for-each
+                  (lambda (filename)
+                    (use-modules (guix build cargo-utils))
+                    (delete-file filename)
+                    (let* ((dir (dirname filename)))
+                      (display (string-append
+                                "patch-cargo-checksums: generate-checksums for "
+                                dir "\n"))
+                      (generate-checksums dir ,%cargo-reference-project-file)))
+                  (find-files "vendor" ".cargo-checksum.json"))
+                 #t))
+             (add-after 'enable-codegen-tests 'override-jemalloc
+               (lambda* (#:key inputs #:allow-other-keys)
+                 ;; The compiler is no longer directly built against jemalloc,
+                 ;; but rather via the jemalloc-sys crate (which vendors the
+                 ;; jemalloc source). To use jemalloc we must enable linking to
+                 ;; it (otherwise it would use the system allocator), and set
+                 ;; an environment variable pointing to the compiled jemalloc.
+                 (substitute* "config.toml"
+                   (("^jemalloc =.*$") "")
+                   (("[[]rust[]]") "\n[rust]\njemalloc=true\n"))
+                 (setenv "JEMALLOC_OVERRIDE" (string-append (assoc-ref inputs "jemalloc")
+                                                            "/lib/libjemalloc_pic.a"))
+                 #t))
+             ;; Remove no longer relevant steps
+             (delete 'remove-flaky-test)
+             (delete 'patch-aarch64-test))))))))
+
+(define-public rust-1.33
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.32 "1.33.0"
+                                    "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as"
+                                    #:patches '())))
+    (package
+      (inherit base-rust)
+      (inputs
+       ;; Upgrade to jemalloc@5.1.0
+       (alist-replace "jemalloc" (list jemalloc)
+                      (package-inputs base-rust)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'ignore-cargo-package-tests)
+             (add-after 'configure 'configure-test-threads
+               ;; Several rustc and cargo tests will fail if run on one core
+               ;; https://github.com/rust-lang/rust/issues/59122
+               ;; https://github.com/rust-lang/cargo/issues/6746
+               ;; https://github.com/rust-lang/rust/issues/58907
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (setenv "RUST_TEST_THREADS" "2")
+                 #t)))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.33 "1.34.0"
+                                    "0n8z1wngkxab1rvixqg6w8b727hzpnm9wp9h8iy3mpbrzp7mmj3s"
+                                    #:patches '())))
+    (package
+      (inherit base-rust)
+      (source
+        (origin
+          (inherit (package-source base-rust))
+          (snippet '(begin
+                      (delete-file-recursively "src/llvm-emscripten")
+                      (delete-file-recursively "src/llvm-project")
+                      (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+                      #t)))))))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index f4bd0e3f11..8a117799ef 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;;
@@ -56,14 +56,14 @@
 (define-public cifs-utils
   (package
     (name "cifs-utils")
-    (version "6.8")
+    (version "6.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://download.samba.org/pub/linux-cifs/"
-                           name "/" name "-" version ".tar.bz2"))
+                           "cifs-utils/cifs-utils-" version ".tar.bz2"))
        (sha256 (base32
-                "0ygz3pagjpaj5ky11hzh4byyymb7fpmqiqkprn11zwj31h2zdlg7"))))
+                "175cp509wn1zv8p8mv37hkf6sxiskrsxdnq22mhlsg61jazz3n0q"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -80,7 +80,8 @@
      `(#:phases
        (modify-phases %standard-phases
          (add-before 'configure 'set-root-sbin
-           (lambda _ ; Don't try to install in "/sbin".
+           (lambda _
+             ;; Don't try to install into "/sbin".
              (setenv "ROOTSBINDIR"
                      (string-append (assoc-ref %outputs "out") "/sbin"))
              #t)))))
@@ -144,7 +145,7 @@ the Linux kernel CIFS client.")
     (home-page "https://github.com/ndevilla/iniparser")
     (synopsis "Standalone ini file parsing library")
     (description
-     "iniparser is a free stand-alone `ini' file parsing library (Windows
+     "iniparser is a free stand-alone @code{ini} file parsing library (Windows
 configuration files).  It is written in portable ANSI C and should compile
 anywhere.")
     (license x11)))
@@ -152,14 +153,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.10.0")
+    (version "4.10.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.samba.org/pub/samba/stable/"
                                  "samba-" version ".tar.gz"))
              (sha256
               (base32
-               "0n1ld77y8sydkpx6l8i2hqa1k7hpkr8df91pg849glc4b85407wz"))))
+               "112yizx9cpjhi8c7mh9znqg0c9dkj3383hwr8dhgpykl3g2zv347"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 9dbb3713ee..3e5ab72f20 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -620,178 +620,6 @@ an isolated heap allowing multiple VMs to run simultaneously in different OS
 threads.")
     (license bsd-3)))
 
-(define-public scmutils
-  (let ()
-    (define (system-suffix)
-      (cond
-       ((string-prefix? "x86_64" (or (%current-target-system)
-                                     (%current-system)))
-        "x86-64")
-       (else "i386")))
-
-    (package
-      (name "scmutils")
-      (version "20160827")
-      (source
-       (origin
-         (method url-fetch/tarbomb)
-         (modules '((guix build utils)))
-         (snippet '(begin
-                     ;; Remove binary code
-                     (delete-file-recursively "scmutils/mit-scheme")
-                     #t))
-         (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/6946"
-                             "/scmutils-tarballs/" name "-" version
-                             "-x86-64-gnu-linux.tar.gz"))
-         (sha256
-          (base32 "00ly5m0s4dy5kxravjaqlpii5zcnr6b9nqm0607lr7xcs52i4j8b"))))
-      (build-system gnu-build-system)
-      (inputs
-       `(("mit-scheme" ,mit-scheme)
-         ("emacs" ,emacs-minimal)))
-      (arguments
-       `(#:tests? #f ;; no tests-suite
-         #:modules ((guix build gnu-build-system)
-                    (guix build utils)
-                    (guix build emacs-utils))
-         #:imported-modules (,@%gnu-build-system-modules
-                             (guix build emacs-utils))
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             ;; No standard build procedure is used. We set the correct
-             ;; runtime path in the custom build system.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 ;; Required to find .bci files at runtime.
-                 (with-directory-excursion "scmutils"
-                   (rename-file "src" "scmutils"))
-                 (substitute* "scmutils/scmutils/load.scm"
-                   (("/usr/local/scmutils/")
-                    (string-append out "/lib/mit-scheme-"
-                                   ,(system-suffix) "/")))
-                 #t)))
-           (replace 'build
-             ;; Compile the code and build a band.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (make-img (string-append
-                                 "echo '(load \"load\") "
-                                 "(disk-save \"edwin-mechanics.com\")'"
-                                 "| mit-scheme")))
-                 (with-directory-excursion "scmutils/scmutils"
-                   (and (zero? (system "mit-scheme < compile.scm"))
-                        (zero? (system make-img))))
-                 #t)))
-           (add-before 'install 'fix-directory-names
-             ;; Correct directory names in the startup script.
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (scm-root (assoc-ref inputs "mit-scheme")))
-                 (substitute* "bin/mechanics"
-                   (("ROOT=\"\\$\\{SCMUTILS_ROOT:-/.*\\}\"")
-                    (string-append
-                     "ROOT=\"${SCMUTILS_ROOT:-" scm-root "}\"\n"
-                     "LIB=\"${ROOT}/lib/mit-scheme-"
-                     ,(system-suffix) ":"
-                     out "/lib/mit-scheme-" ,(system-suffix) "\""))
-                   (("EDWIN_INFO_DIRECTORY=.*\n") "")
-                   (("SCHEME=.*\n")
-                    (string-append "SCHEME=\"${ROOT}/bin/scheme "
-                                   "--library ${LIB}\"\n"))
-                   (("export EDWIN_INFO_DIRECTORY") ""))
-                 #t)))
-           (add-before 'install 'emacs-tags
-             ;; Generate Emacs's tags for easy reference to source
-             ;; code.
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (with-directory-excursion "scmutils/scmutils"
-                 (apply invoke "etags" (find-files "." "\\.scm")))
-               #t))
-           (replace 'install
-             ;; Copy files to the store.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (define* (copy-files-to-directory files dir
-                                                 #:optional (delete? #f))
-                 (for-each (lambda (f)
-                             (copy-file f (string-append dir "/" f))
-                             (when delete? (delete-file f)))
-                           files))
-
-               (let* ((out (assoc-ref outputs "out"))
-                      (bin (string-append out "/bin"))
-                      (doc (string-append out "/share/doc/"
-                                          ,name "-" ,version))
-                      (lib (string-append out "/lib/mit-scheme-"
-                                          ,(system-suffix)
-                                          "/scmutils")))
-                 (for-each mkdir-p (list lib doc bin))
-                 (with-directory-excursion "scmutils/scmutils"
-                   (copy-files-to-directory '("COPYING" "LICENSE")
-                                            doc #t)
-                   (for-each delete-file (find-files "." "\\.bin"))
-                   (copy-files-to-directory '("edwin-mechanics.com")
-                                            (string-append lib "/..") #t)
-                   (copy-recursively "." lib))
-                 (with-directory-excursion "bin"
-                   (copy-files-to-directory (find-files ".") bin))
-                 (with-directory-excursion "scmutils/manual"
-                   (copy-files-to-directory (find-files ".") doc))
-                 #t)))
-           (add-after 'install 'emacs-helpers
-             ;; Add convenience Emacs commands to easily load the
-             ;; Scmutils band in an MIT-Scheme buffer inside of Emacs
-             ;; and to easily load code tags.
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (mit-root (assoc-ref inputs "mit-scheme"))
-                      (emacs-lisp-dir
-                       (string-append out "/share/emacs/site-lisp"
-                                      "/guix.d/" ,name "-" ,version))
-                      (el-file (string-append emacs-lisp-dir
-                                              "/scmutils.el"))
-                      (lib-relative-path
-                       (string-append "/lib/mit-scheme-"
-                                      ,(system-suffix))))
-                 (mkdir-p emacs-lisp-dir)
-                 (call-with-output-file el-file
-                   (lambda (p)
-                     (format p
-                             ";;;###autoload
-(defun scmutils-load ()
-  (interactive)
-  (require 'xscheme)
-  (let ((mit-root \"~a\")
-    (scmutils \"~a\"))
-    (run-scheme
-     (concat mit-root \"/bin/scheme --library \"
-          mit-root \"~a:\" scmutils \"~a\"
-          \" --band edwin-mechanics.com\"
-          \" --emacs\"))))
-
-;;;###autoload
-(defun scmutils-load-tags ()
-  (interactive)
-  (let ((scmutils \"~a\"))
-    (visit-tags-table (concat scmutils \"/TAGS\"))))
-"
-                                      mit-root out
-                                      lib-relative-path
-                                      lib-relative-path
-                                      (string-append out lib-relative-path
-                                                     "/scmutils"))))
-                          (emacs-generate-autoloads ,name emacs-lisp-dir)
-                          (emacs-byte-compile-directory emacs-lisp-dir)
-                          #t))))))
-      (home-page
-       "http://groups.csail.mit.edu/mac/users/gjs/6946/linux-install.htm")
-      (synopsis "Scmutils library for MIT Scheme")
-      (description "The Scmutils system is an integrated library of
-procedures, embedded in the programming language Scheme, and intended to
-support teaching and research in mathematical physics and electrical
-engineering.")
-      (license gpl2+))))
-
 (define-public sicp
   (let ((commit "225c172f9b859902a64a3c5dd5e1f9ac1a7382de"))
     (package
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index 38df2594f2..7763354158 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -2,10 +2,10 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,10 +23,10 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages screen)
-  #:use-module (srfi srfi-1)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages ncurses)
@@ -153,23 +153,27 @@ window manager as well as the Tmux terminal multiplexer.")
 (define-public reptyr
   (package
     (name "reptyr")
-    (version "0.6.2")
+    (version "0.7.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/nelhage/reptyr/archive"
-                           "/reptyr-" version ".tar.gz"))
-       ;; XXX: To be removed on next reptyr release.
-       (patches (search-patches "reptyr-fix-gcc-7.patch"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/nelhage/reptyr.git")
+             (commit (string-append "reptyr-" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "07pfl0rkgm8m3f3jy8r9l2yvnhf8lgllpsk3mh57mhzdxq8fagf7"))))
+        (base32 "1hnijfz1ab34j2h2cxc3f43rmbclyihgn9x9wxa7jqqgb2xm71hj"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ; no tests
-       #:make-flags (list "CC=gcc"
-                          (string-append "PREFIX=" %output))
-       #:phases (modify-phases %standard-phases (delete 'configure))))
+     '(#:tests? #f                      ; no tests
+       #:make-flags
+       (list "CC=gcc"
+             (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "BASHCOMPDIR=" (assoc-ref %outputs "out")
+                            "/etc/bash_completion.d"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))         ; no configure script
     (home-page "https://github.com/nelhage/reptyr")
     (synopsis "Tool for reparenting a running program to a new terminal")
     (description
@@ -177,7 +181,6 @@ window manager as well as the Tmux terminal multiplexer.")
 it to a new terminal.  Started a long-running process over @code{ssh}, but have
 to leave and don't want to interrupt it?  Just start a @code{screen}, use
 reptyr to grab it, and then kill the @code{ssh} session and head on home.")
-    ;; Reptyr currently does not support mips or aarch64.
-    (supported-systems (fold delete %supported-systems
-                             '("mips64el-linux" "aarch64-linux")))
+    ;; Reptyr currently does not support mips.
+    (supported-systems (delete "mips64el-linux" %supported-systems))
     (license expat)))
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index fe01086a86..2e8cec8ffb 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,7 +35,6 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system haskell)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages fcitx)
@@ -42,7 +42,6 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages guile)
-  #:use-module (gnu packages haskell)
   #:use-module (gnu packages ibus)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
@@ -405,6 +404,22 @@ directory.")
     (propagated-inputs
      (propagated-inputs-with-sdl2 sdl-mixer))))
 
+(define-public sdl2-net
+  (package (inherit sdl-net)
+    (name "sdl2-net")
+    (version "2.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "http://www.libsdl.org/projects/SDL_net/release/"
+                       "SDL2_net-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08cxc1bicmyk89kiks7izw1rlx5ng5n6xpy8fy0zxni3b9z8mkhm"))))
+    (propagated-inputs
+     (propagated-inputs-with-sdl2 sdl-net))))
+
 (define-public sdl2-ttf
   (package (inherit sdl-ttf)
     (name "sdl2-ttf")
@@ -544,93 +559,3 @@ sound and device input (keyboards, joysticks, mice, etc.).")
 The bindings are written in pure Scheme using Guile's foreign function
 interface.")
     (license lgpl3+)))
-
-(define-public ghc-sdl2
-  (package
-    (name "ghc-sdl2")
-    (version "2.4.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/"
-                           "sdl2/sdl2-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0p4b12fmxps0sbnkqdfy0qw19s355yrkw7fgw6xz53wzq706k991"))))
-    (build-system haskell-build-system)
-    (arguments '(#:tests? #f)) ; tests require graphical environment
-    (inputs
-     `(("ghc-exceptions" ,ghc-exceptions)
-       ("ghc-linear" ,ghc-linear)
-       ("ghc-statevar" ,ghc-statevar)
-       ("ghc-text" ,ghc-text)
-       ("ghc-vector" ,ghc-vector)
-       ("sdl2" ,sdl2)))
-    (native-inputs
-     `(("ghc-weigh" ,ghc-weigh)
-       ("pkg-config" ,pkg-config)))
-    (home-page "http://hackage.haskell.org/package/sdl2")
-    (synopsis "High- and low-level bindings to the SDL library")
-    (description
-     "This package contains bindings to the SDL 2 library, in both high- and
-low-level forms.  The @code{SDL} namespace contains high-level bindings, where
-enumerations are split into sum types, and we perform automatic
-error-checking.  The @code{SDL.Raw} namespace contains an almost 1-1
-translation of the C API into Haskell FFI calls.  As such, this does not
-contain sum types nor error checking.  Thus this namespace is suitable for
-building your own abstraction over SDL, but is not recommended for day-to-day
-programming.")
-    (license bsd-3)))
-
-(define-public ghc-sdl2-mixer
-  (package
-    (name "ghc-sdl2-mixer")
-    (version "1.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/sdl2-mixer/"
-                           "sdl2-mixer-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1k8avyccq5l9z7bwxigim312yaancxl1sr3q6a96bcm7pnhiak0g"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-data-default-class" ,ghc-data-default-class)
-       ("ghc-lifted-base" ,ghc-lifted-base)
-       ("ghc-monad-control" ,ghc-monad-control)
-       ("ghc-sdl2" ,ghc-sdl2)
-       ("ghc-vector" ,ghc-vector)
-       ("sdl2-mixer" ,sdl2-mixer)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://hackage.haskell.org/package/sdl2-mixer")
-    (synopsis "Bindings to SDL2 mixer")
-    (description "This package provides Haskell bindings to
-@code{SDL2_mixer}.")
-    (license bsd-3)))
-
-(define-public ghc-sdl2-image
-  (package
-    (name "ghc-sdl2-image")
-    (version "2.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/sdl2-image/"
-                           "sdl2-image-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1pr6dkg73cy9z0w54lrkj9c5bhxj56nl92lxikjy8kz6nyr455rr"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-sdl2" ,ghc-sdl2)
-       ("ghc-text" ,ghc-text)
-       ("sdl2-image" ,sdl2-image)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://hackage.haskell.org/package/sdl2-image")
-    (synopsis "Bindings to SDL2_image")
-    (description "This package provides Haskell bindings to
-@code{SDL2_image}.")
-    (license expat)))
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 9969cad8ac..fe51900179 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -23,11 +23,12 @@
 
 (define-module (gnu packages search)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
@@ -110,6 +111,31 @@ rich set of boolean query operators.")
     (synopsis "Python bindings for the Xapian search engine library")
     (license gpl2+)))
 
+(define-public perl-search-xapian
+  (package
+    (name "perl-search-xapian")
+    (version "1.2.25.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/O/OL/OLLY/"
+                           "Search-Xapian-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hpa8gi38j0ibq8af6dy69lm1bl5jnq76nsa69dbrzbr88l5m594"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-devel-leak" ,perl-devel-leak)))
+    (inputs
+     `(("xapian" ,xapian)))
+    (home-page "https://metacpan.org/release/Search-Xapian")
+    (synopsis "Perl XS frontend to the Xapian C++ search library")
+    (description
+     "Search::Xapian wraps most methods of most Xapian classes.  The missing
+classes and methods should be added in the future.  It also provides a
+simplified, more 'perlish' interface to some common operations.")
+    (license perl-license)))
+
 (define-public libtocc
   (package
     (name "libtocc")
@@ -243,7 +269,7 @@ interfaces, or a C API.")
     (home-page "https://pagure.io/mlocate")
     (synopsis "Locate files on the file system")
     (description
-     "mlocate is a locate/updatedb implementation.  The 'm' stands for
+     "mlocate is a locate/updatedb implementation.  The @code{m} stands for
 \"merging\": @code{updatedb} reuses the existing database to avoid rereading
 most of the file system, which makes it faster and does not trash the system
 caches as much.  The locate(1) utility is intended to be completely compatible
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index ba5bb5b4c6..8aa3f0caef 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,14 +29,17 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages check)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages dns)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
@@ -51,6 +54,10 @@
   #:use-module (gnu packages tex)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml))
 
@@ -95,15 +102,16 @@ readers and is needed to communicate with such devices through the
 (define-public eid-mw
   (package
     (name "eid-mw")
-    (version "4.4.13")
+    (version "4.4.16")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/Fedict/eid-mw")
              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "14bgn2k0xbd6241qdghg787pgxy7k9rvcspaf74zwwyibaqknzyx"))))
+        (base32 "1q82fw63xzrnrgh1wyh457hal6vfdl6swqfq7l6kviywiwlzx7kd"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -161,7 +169,7 @@ the low-level development kit for the Yubico YubiKey authentication device.")
 (define-public pcsc-lite
   (package
     (name "pcsc-lite")
-    (version "1.8.24")
+    (version "1.8.25")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -169,7 +177,7 @@ the low-level development kit for the Yubico YubiKey authentication device.")
                     name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0s3mv6csbi9303vvis0hilm71xsmi6cqkbh2kiipdisydbx6865q"))))
+                "14l7irs1nsh8b036ag4cfy8wryyysch78scz5dw6xxqwqgnpjvfp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"
@@ -312,7 +320,7 @@ and other operations.  It includes a library and a command-line tool.")
 (define-public yubikey-personalization
   (package
     (name "yubikey-personalization")
-    (version "1.19.0")
+    (version "1.19.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -320,7 +328,7 @@ and other operations.  It includes a library and a command-line tool.")
                     "/Releases/ykpers-" version ".tar.gz"))
               (sha256
                (base32
-                "104lc0nnqdr365fa7c4vrq67rxp1dp8idndsh9jlhnj9dnhszj1b"))))
+                "0jhvnavjrpwzmmjcw486df5s48j53njqgyz36yz3dskbaz3kwlfr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--with-udevrulesdir="
@@ -341,3 +349,205 @@ and other operations.  It includes a library and a command-line tool.")
 line tools for personalizing YubiKeys.  You can use these to set an AES key,
 retrieve a YubiKey's serial number, and so forth.")
     (license license:bsd-2)))
+
+(define-public python-pyscard
+  (package
+    (name "python-pyscard")
+    (version "1.9.8")
+    (source (origin
+              (method url-fetch)
+              ;; The maintainer publishes releases on various sites, but
+              ;; SourceForge is apparently the only one with a signed release.
+              (uri (string-append
+                    "mirror://sourceforge/pyscard/pyscard/pyscard%20"
+                    version "/pyscard-" version ".tar.gz"))
+              (sha256
+               (base32
+                "15fh00z1an6r5j7hrz3jlq0rb3jygwf3x4jcwsa008bv8vpcg7gm"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Tell pyscard where to find the PCSC include directory.
+         (add-after 'unpack 'patch-platform-include-dirs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((pcsc-include-dir (string-append
+                                      (assoc-ref inputs "pcsc-lite")
+                                      "/include/PCSC")))
+               (substitute* "setup.py"
+                 (("platform_include_dirs = \\[.*?\\]")
+                  (string-append
+                   "platform_include_dirs = ['" pcsc-include-dir "']")))
+               #t)))
+         ;; pyscard wants to dlopen libpcsclite, so tell it where it is.
+         (add-after 'unpack 'patch-dlopen
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "smartcard/scard/winscarddll.c"
+               (("lib = \"libpcsclite\\.so\\.1\";")
+                (simple-format #f
+                               "lib = \"~a\";"
+                               (string-append (assoc-ref inputs "pcsc-lite")
+                                              "/lib/libpcsclite.so.1"))))
+             #t)))))
+    (inputs
+     `(("pcsc-lite" ,pcsc-lite)))
+    (native-inputs
+     `(("swig" ,swig)))
+    (home-page "https://github.com/LudovicRousseau/pyscard")
+    (synopsis "Smart card library for Python")
+    (description
+     "The pyscard smart card library is a framework for building smart card
+aware applications in Python.  The smart card module is built on top of the
+PCSC API Python wrapper module.")
+    (license license:lgpl2.1+)))
+
+(define-public python2-pyscard
+  (package-with-python2 python-pyscard))
+
+(define-public libu2f-host
+  (package
+    (name "libu2f-host")
+    (version "1.1.9")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://developers.yubico.com"
+                "/libu2f-host/Releases/libu2f-host-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1hnh3f4scx07v9jfkr1nnxasmydk1cmivn0nijcp2p75bc1fznip"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-gtk-doc"
+             (string-append "--with-udevrulesdir="
+                            (assoc-ref %outputs "out")
+                            "/lib/udev/rules.d"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Avoid a network connection attempt during the build.
+             (substitute* "gtk-doc/u2f-host-docs.xml"
+               (("http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd")
+                (string-append (assoc-ref inputs "docbook-xml")
+                               "/xml/dtd/docbook/docbookx.dtd")))
+             #t)))))
+    (inputs
+     `(("json-c" ,json-c)
+       ("hidapi" ,hidapi)))
+    (native-inputs
+     `(("help2man" ,help2man)
+       ("gengetopt" ,gengetopt)
+       ("pkg-config" ,pkg-config)
+       ("gtk-doc" ,gtk-doc)
+       ("docbook-xml" ,docbook-xml-4.3)
+       ("eudev" ,eudev)))
+    (home-page "https://developers.yubico.com/libu2f-host/")
+    ;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
+    (synopsis "U2F host-side C library and tool")
+    (description
+     "Libu2f-host provides a C library and command-line tool that implements
+the host-side of the Universal 2nd Factor (U2F) protocol.  There are APIs to
+talk to a U2F device and perform the U2F Register and U2F Authenticate
+operations.")
+    ;; Most files are LGPLv2.1+, but some files are GPLv3+.
+    (license (list license:lgpl2.1+ license:gpl3+))))
+
+(define-public python-fido2
+  (package
+    (name "python-fido2")
+    (version "0.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://github.com/Yubico/python-fido2/releases/download/"
+                version "/fido2-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1pl8d2pr6jzqj4y9qiaddhjgnl92kikjxy0bgzm2jshkzzic8mp3"))
+              (snippet
+               ;; Remove bundled dependency.
+               #~(delete-file "fido2/public_suffix_list.dat"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'install-public-suffix-list
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-file
+              (string-append (assoc-ref inputs "public-suffix-list")
+                             "/share/public-suffix-list-"
+                             ,(package-version public-suffix-list)
+                             "/public_suffix_list.dat")
+              "fido2/public_suffix_list.dat")
+             #t)))))
+    (propagated-inputs
+     `(("python-cryptography" ,python-cryptography)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pyfakefs" ,python-pyfakefs)
+       ("public-suffix-list" ,public-suffix-list)))
+    (home-page "https://github.com/Yubico/python-fido2")
+    (synopsis "Python library for communicating with FIDO devices over USB")
+    (description
+     "This Python library provides functionality for communicating with a Fast
+IDentity Online (FIDO) device over Universal Serial Bus (USB) as well as
+verifying attestation and assertion signatures.  It aims to support the FIDO
+Universal 2nd Factor (U2F) and FIDO 2.0 protocols for communicating with a USB
+authenticator via the Client-to-Authenticator Protocol (CTAP 1 and 2).  In
+addition to this low-level device access, classes defined in the
+@code{fido2.client} and @code{fido2.server} modules implement higher level
+operations which are useful when interfacing with an Authenticator, or when
+implementing a Relying Party.")
+    ;; python-fido2 contains some derivative files originally from pyu2f
+    ;; (https://github.com/google/pyu2f).  These files are licensed under the
+    ;; Apache License, version 2.0.  The maintainers have customized these
+    ;; files for internal use, so they are not really a bundled dependency.
+    (license (list license:bsd-2 license:asl2.0))))
+
+(define-public python2-fido2
+  (package-with-python2 python-fido2))
+
+(define-public python-yubikey-manager
+  (package
+    (name "python-yubikey-manager")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://developers.yubico.com/yubikey-manager/Releases"
+                    "/yubikey-manager-" version ".tar.gz"))
+              (sha256
+               (base32
+                "11rsmcaj60k3y5m5gdhr2nbbz0w5dm3m04klyxz0fh5hnpcmr7fm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-pyscard" ,python-pyscard)
+       ("python-pyusb" ,python-pyusb)
+       ("python-click" ,python-click)
+       ("python-cryptography" ,python-cryptography)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-fido2" ,python-fido2)))
+    (inputs
+     `(("yubikey-personalization" ,yubikey-personalization)
+       ("pcsc-lite" ,pcsc-lite)
+       ("libusb" ,libusb)))
+    (native-inputs
+     `(("swig" ,swig)
+       ("python-mock" ,python-mock)))
+    (home-page "https://developers.yubico.com/yubikey-manager/")
+    (synopsis "Command line tool and library for configuring a YubiKey")
+    (description
+     "Python library and command line tool for configuring a YubiKey.  Note
+that after installing this package, you might still need to add appropriate
+udev rules to your system configuration to be able to configure the YubiKey as
+an unprivileged user.")
+    (license license:bsd-2)))
+
+(define-public python2-yubikey-manager
+  (package-with-python2 python-yubikey-manager))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 05e0d1d833..ae1ef9749b 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
@@ -30,6 +30,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -317,6 +318,23 @@ preserve existing comment in unserialization/serialization steps, making
 it a convenient format to store user input files.")
     (license license:expat)))
 
+;; Tensorflow does not build with jsoncpp 1.8.x.  It is built with commit
+;; 4356d9bba191e1e16ce7a92073cbf3e63564e973, which lies between version 1.7.2
+;; and 1.7.3.
+(define-public jsoncpp-for-tensorflow
+  (package (inherit jsoncpp)
+    (name "jsoncpp")
+    (version "1.7.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/open-source-parsers/jsoncpp.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1180ln8blrb0mwzpcf78k49hlki6di65q77rsvglf83kfcyh4d7z"))))))
+
 (define-public capnproto
   (package
     (name "capnproto")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 88c0f32e99..56359ce160 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -105,36 +105,42 @@ are already there.")
     (name "direnv")
     (version "2.15.2")
     (source
-     (origin (method url-fetch)
-             (uri (string-append "https://github.com/direnv/" name
-                                 "/archive/v" version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+     (origin (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/direnv/direnv.git")
+                   (commit (string-append "v" version))))
+             (file-name (git-file-name name version))
              (sha256
               (base32
-               "1hhmc6rb7b1d4s4kgb4blrq35h388ax37ap88dq3dgfcw9w6j1rm"))))
-    (build-system gnu-build-system)
+               "1y18619pmhfl0vrf4w0h75ybkkwgi9wcb7d9kv4n8drg1xp4aw4w"))))
+    (build-system go-build-system)
     (arguments
-     `(#:test-target "test"
-       #: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))
+     '(#:import-path "github.com/direnv/direnv"
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         ;; Help the build scripts find the Go language dependencies.
-         (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)
-       ("go-github-com-direnv-go-dotenv" ,go-github-com-direnv-go-dotenv)))
+         (add-after 'unpack 'delete-vendor
+           (lambda _
+             ;; Using a snippet causes issues with the name of the directory,
+             ;; so delete the extra source code here.
+             (delete-file-recursively "src/github.com/direnv/direnv/vendor")
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (setenv "HOME" "/tmp")
+               (with-directory-excursion "src/github.com/direnv/direnv"
+                 ;; The following file needs to be writable so it can be
+                 ;; modified by the testsuite.
+                 (make-file-writable "test/scenarios/base/.envrc")
+                 (invoke "make" "test")
+                 ;; Clean up from the tests, especially so that the extra
+                 ;; direnv executable that's generated is removed.
+                 (invoke "make" "clean")))
+             #t)))))
     (native-inputs
-      `(("which" ,which)))
+     `(("go-github-com-burntsushi-toml" ,go-github-com-burntsushi-toml)
+       ("go-github-com-direnv-go-dotenv" ,go-github-com-direnv-go-dotenv)
+       ("which" ,which)))
     (home-page "https://direnv.net/")
     (synopsis "Environment switcher for the shell")
     (description
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index 55b551a119..1e9dfadf02 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -97,7 +98,7 @@ system to use the host GPU to accelerate 3D rendering.")
 (define-public spice-protocol
   (package
     (name "spice-protocol")
-    (version "0.12.15")
+    (version "0.14.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -105,7 +106,7 @@ system to use the host GPU to accelerate 3D rendering.")
                 "spice-protocol-" version ".tar.bz2"))
               (sha256
                (base32
-                "06b461i4jv741in8617jjpfk28wk7zs9p7841njkf4sbm8xv4kcb"))))
+                "1b3f44c13pqsp7aabmcinfbmgl79038bp5548l5pjs16lcfam95n"))))
     (build-system gnu-build-system)
     (synopsis "Protocol headers for the SPICE protocol")
     (description "SPICE (the Simple Protocol for Independent Computing
@@ -114,10 +115,23 @@ which allows users to view a desktop computing environment.")
     (home-page "https://www.spice-space.org")
     (license (list license:bsd-3 license:lgpl2.1+))))
 
+(define-public spice-protocol-0.12
+  (package
+    (inherit spice-protocol)
+    (version "0.12.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.spice-space.org/download/releases/"
+                    "spice-protocol-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "06b461i4jv741in8617jjpfk28wk7zs9p7841njkf4sbm8xv4kcb"))))))
+
 (define-public spice-gtk
   (package
     (name "spice-gtk")
-    (version "0.35")
+    (version "0.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -125,7 +139,7 @@ which allows users to view a desktop computing environment.")
                 "spice-gtk-" version ".tar.bz2"))
               (sha256
                (base32
-                "11lymg467gvj5ys8k22ihnfbxjn4x34ygyzirpg2nphjwlyhgrml"))))
+                "1kfpixfdmxs9wn3id48gc9bvfrgxz935y3wpykf40bgi9mcc69ki"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("gstreamer" ,gstreamer)
@@ -134,20 +148,23 @@ which allows users to view a desktop computing environment.")
         ("gst-plugins-good" ,gst-plugins-good)
         ("gst-plugins-bad" ,gst-plugins-bad)
         ("gst-plugins-ugly" ,gst-plugins-ugly)
-        ("spice-protocol" ,spice-protocol)))
+        ("spice-protocol" ,spice-protocol-0.12)
+
+        ;; These are required by the pkg-config files.
+        ("gtk+" ,gtk+)
+        ("pixman" ,pixman)
+        ("openssl" ,openssl)))
     (inputs
       `(("glib-networking" ,glib-networking)
         ("gobject-introspection" ,gobject-introspection)
-        ("gtk+" ,gtk+)
+        ("json-glib" ,json-glib)
         ("libepoxy" ,libepoxy)
         ("libjpeg" ,libjpeg)
         ("libxcb" ,libxcb)
         ("lz4" ,lz4)
         ("mesa" ,mesa)
-        ("pixman" ,pixman)
         ("pulseaudio" ,pulseaudio)
         ("python" ,python)
-        ("openssl" ,openssl)
         ("opus" ,opus)
         ("usbredir" ,usbredir)))
     (native-inputs
@@ -162,6 +179,13 @@ which allows users to view a desktop computing environment.")
           "--enable-introspection")
         #:phases
          (modify-phases %standard-phases
+           (add-before 'check 'disable-session-test
+             (lambda _
+               ;; XXX: Disable session tests, because they require USB support,
+               ;; which is not available in the build container.
+               (substitute* "tests/Makefile"
+                 (("test-session\\$\\(EXEEXT\\) ") ""))
+               #t))
            (add-after
             'install 'wrap-spicy
             (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -178,7 +202,7 @@ which allows users to view a desktop computing environment.")
 (define-public spice
   (package
     (name "spice")
-    (version "0.14.1")
+    (version "0.14.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -186,7 +210,7 @@ which allows users to view a desktop computing environment.")
                 "spice-server/spice-" version ".tar.bz2"))
               (sha256
                (base32
-                "068mb9l7wzk4k4c65bzvpw5fyyzh81rb6z81skgdxvh67pk5vb8y"))))
+                "19r999py9v9c7md2bb8ysj809ag1hh6djl1ik8jcgx065s4b60xj"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("openssl" ,openssl)
@@ -217,7 +241,7 @@ which allows users to view a desktop computing environment.")
         #:parallel-tests? #f))
     (synopsis "Server implementation of the SPICE protocol")
     (description "SPICE is a remote display system built for virtual
-environments which allows you to view a computing 'desktop' environment
+environments which allows you to view a computing @code{desktop} environment
 not only on the machine where it is running, but from anywhere on the
 Internet and from a wide variety of machine architectures.")
     (home-page "https://www.spice-space.org")
@@ -291,7 +315,6 @@ resolution scaling on graphical console window resize.")
       `(("gtk+" ,gtk+)
         ("libcap" ,libcap)
         ("libxml2" ,libxml2)
-        ("openssl" ,openssl)
         ("spice-gtk" ,spice-gtk)))
     (native-inputs
       `(("glib:bin" ,glib "bin")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index bd26149872..e887cd7e70 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -111,7 +111,7 @@ applications.")
 (define-public libssh2
   (package
    (name "libssh2")
-   (version "1.8.1")
+   (version "1.8.2")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -119,7 +119,7 @@ applications.")
                    version ".tar.gz"))
             (sha256
              (base32
-              "0ngif3ynk6xqzy5nlfjs7bsmfm81g9f145av0z86kf0vbgrigda0"))
+              "0rqd37pc80nm2pz4sa2m9pfc48axys7jwq1l7z0vii5nyvchg0q8"))
             (patches
              (search-patches "libssh2-fix-build-failure-with-gcrypt.patch"))))
    (build-system gnu-build-system)
@@ -143,18 +143,35 @@ a server that supports the SSH-2 protocol.")
    (license license:bsd-3)
    (home-page "https://www.libssh2.org/")))
 
+;; 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 openssh
   (package
    (name "openssh")
-   (version "7.9p1")
+   (version "8.0p1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
                                  name "-" version ".tar.gz"))
-             (patches (search-patches "openssh-CVE-2018-20685.patch"))
              (sha256
               (base32
-               "1b8sy6v0b8v4ggmknwcqx3y1rjcpsll0f1f8f4vyv11x4ni3njvb"))))
+               "0s7xh4s0qcipnjh9ls5blxcpvhyd116z9dxn3q1yi64lwrwki55x"))))
    (build-system gnu-build-system)
    (native-inputs `(("groff" ,groff)
                     ("pkg-config" ,pkg-config)))
@@ -451,7 +468,7 @@ TCP, not the SSH protocol.")
 (define-public dropbear
   (package
     (name "dropbear")
-    (version "2019.77")
+    (version "2019.78")
     (source
      (origin
        (method url-fetch)
@@ -459,7 +476,7 @@ TCP, not the SSH protocol.")
              "https://matt.ucc.asn.au/dropbear/releases/"
              "dropbear-" version ".tar.bz2"))
        (sha256
-        (base32 "13a55fcy2mx2pvsfj6dh9107k4wnbd9ybdyi3w3ivgikwvmph7yr"))))
+        (base32 "19242qlr40pbqfqd0gg6h8qpj38q6lgv03ja6sahj9vj2abnanaj"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f))  ; there is no "make check" or anything similar
     ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 75ce7c854b..6d6caab0ad 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -35,10 +35,10 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libunistring)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages kerberos)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages pcre)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 6face9910a..cc9fa69a32 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Vicente Vera Parra <vicentemvp@gmail.com>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
@@ -68,6 +68,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tcl)
+  #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
@@ -177,7 +178,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
 (define r-with-tests
   (package
     (name "r-with-tests")
-    (version "3.5.3")
+    (version "3.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -185,7 +186,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1337irx9y0r3jm1rcq1dcwnxsgfhnvgjs5wadcyh17vhpnvkgyib"))))
+                "02bmylmzrm9sdidirmwy233lghmd2346z725ca71ari68lzarz1n"))))
     (build-system gnu-build-system)
     (arguments
      `(#:disallowed-references (,tzdata-for-tests)
@@ -251,6 +252,10 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
                (("(install_package_description\\(.*\"')\\)\"" line prefix)
                 (string-append prefix ", builtStamp='1970-01-01')\"")))
 
+             (substitute* "src/library/Recommended/Makefile.in"
+               (("INSTALL_OPTS =" m)
+                (string-append m " --built-timestamp=1970-01-01" m)))
+
              ;; R bundles an older version of help2man, which does not respect
              ;; SOURCE_DATE_EPOCH.  We cannot just use the latest help2man,
              ;; because that breaks a test.
@@ -312,6 +317,17 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo) ; for building HTML manuals
+       ("texlive" ,(texlive-union (list texlive-fonts-amsfonts
+                                        texlive-fonts-ec
+                                        texlive-latex-amsfonts
+                                        texlive-latex-base
+                                        texlive-latex-fancyvrb
+                                        texlive-latex-graphics
+                                        texlive-latex-hyperref
+                                        texlive-latex-oberdiek
+                                        texlive-latex-tools
+                                        texlive-latex-upquote
+                                        texlive-latex-url)))
        ("tzdata" ,tzdata-for-tests)
        ("xz" ,xz)))
     (inputs
@@ -379,14 +395,14 @@ available, greatly increasing its breadth and scope.")
 (define-public r-boot
   (package
     (name "r-boot")
-    (version "1.3-20")
+    (version "1.3-22")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "boot" version))
        (sha256
         (base32
-         "0ai1qpm0p4z07xr0dvag8sdn9jrxcwanrsk9khzmww094jvr1jxd"))))
+         "1z2dig1mi76b3b9ck6qlkh07l3hs478gaf70db5nv8x7w2qhq7yg"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/boot")
     (synopsis "Bootstrap functions for R")
@@ -400,14 +416,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.")
 (define-public r-mass
   (package
     (name "r-mass")
-    (version "7.3-51.1")
+    (version "7.3-51.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MASS" version))
        (sha256
         (base32
-         "14907ia8418mp3p1rs1i2f1x5b6kk5z998dk353a29j3xqf3ybyq"))))
+         "0x1ckf51y851g0kvbhsgdxb26vfpmbw3xdbcnh3ck7fjm13da4cr"))))
     (properties `((upstream-name . "MASS")))
     (build-system r-build-system)
     (home-page "http://www.stats.ox.ac.uk/pub/MASS4/")
@@ -443,14 +459,14 @@ k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.")
 (define-public r-cluster
   (package
     (name "r-cluster")
-    (version "2.0.7-1")
+    (version "2.0.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cluster" version))
        (sha256
         (base32
-         "1grxbifbc4nwig25dmjgkympnbzb4al0w6k1c0ibdhpk1h4l20di"))))
+         "0jkmlhjknndh0lmyvqz7s7j1hhnarixm6zb39np4ssw47flk0nfc"))))
     (build-system r-build-system)
     (inputs
      `(("gfortran" ,gfortran)))
@@ -548,14 +564,14 @@ also flexible enough to handle most nonstandard requirements.")
 (define-public r-matrix
   (package
     (name "r-matrix")
-    (version "1.2-16")
+    (version "1.2-17")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Matrix" version))
        (sha256
         (base32
-         "10fh0y1wd0bvnqbzlyck08pn1vxcd58bskx2lrf9m42v5792ba9p"))))
+         "1k1zf92ycqr7fz44w7bp1p354ww7jg0wm23ybb8dzmbg37qfchyv"))))
     (properties `((upstream-name . "Matrix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -570,14 +586,14 @@ and operations on them using LAPACK and SuiteSparse.")
 (define-public r-nlme
   (package
     (name "r-nlme")
-    (version "3.1-137")
+    (version "3.1-139")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nlme" version))
        (sha256
         (base32
-         "11vyxxc0n36vb8d8g02zr0402ymicvbifwdsqm7gy9iqqnwrn101"))))
+         "0fap121c18nbznyzvnqvsdiszg2nbmkas6zhgrz1f8jiv1lzqq04"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -636,14 +652,14 @@ single hidden layer, and for multinomial log-linear models.")
 (define-public r-rpart
   (package
     (name "r-rpart")
-    (version "4.1-13")
+    (version "4.1-15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rpart" version))
        (sha256
         (base32
-         "0k29qx3k3pj5sgrpg0p47yd8i811rmdakaw57bigpq1449asc4cf"))))
+         "0p5frya963ppn476p5dxs2mnarsalksr6gw9zzmjsn8ikq7bx3ib"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/rpart")
     (synopsis "Recursive partitioning and regression trees")
@@ -675,14 +691,14 @@ analysis.")
 (define-public r-survival
   (package
     (name "r-survival")
-    (version "2.43-3")
+    (version "2.44-1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "survival" version))
        (sha256
         (base32
-         "0ldrjja1dj4n1ic0lbggm7jvk52sl5h85i8m23nrgndi60acsv4r"))))
+         "1faiwyg7x8y2kfzb66l4yc8br0mdlz4k20znmjrwq96dbzhm3cam"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-matrix" ,r-matrix)))
@@ -802,10 +818,10 @@ effects of different types of color-blindness.")
     (home-page "http://dirk.eddelbuettel.com/code/digest.html")
     (synopsis "Create cryptographic hash digests of R objects")
     (description
-     "This package contains an implementation of a function 'digest()' for the
-creation of hash digests of arbitrary R objects (using the md5, sha-1,
+     "This package contains an implementation of a function @code{digest()} for
+the creation of hash digests of arbitrary R objects (using the md5, sha-1,
 sha-256, crc32, xxhash and murmurhash algorithms) permitting easy comparison
-of R language objects, as well as a function 'hmac()' to create hash-based
+of R language objects, as well as a function @code{hmac()} to create hash-based
 message authentication code.
 
 Please note that this package is not meant to be deployed for cryptographic
@@ -827,7 +843,7 @@ OpenSSL should be used.")
     (home-page "https://cran.r-project.org/web/packages/estimability")
     (synopsis "Tools for assessing estimability of linear predictions")
     (description "Provides tools for determining estimability of linear
-functions of regression coefficients, and 'epredict' methods that handle
+functions of regression coefficients, and @code{epredict} methods that handle
 non-estimable cases correctly.")
     (license license:gpl2+)))
 
@@ -1063,7 +1079,7 @@ transliteration, concatenation, date-time formatting and parsing, etc.")
     (synopsis "Simple, consistent wrappers for common string operations")
     (description
      "Stringr is a consistent, simple and easy to use set of wrappers around
-the fantastic 'stringi' package.  All function and argument names (and
+the fantastic @code{stringi} package.  All function and argument names (and
 positions) are consistent, all functions deal with \"NA\"'s and zero length
 vectors in the same way, and the output from one function is easy to feed into
 the input of another.")
@@ -1120,13 +1136,13 @@ legends.")
 (define-public r-ggplot2
   (package
     (name "r-ggplot2")
-    (version "3.1.0")
+    (version "3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggplot2" version))
        (sha256
-        (base32 "1msy36r21nlmnpyaw2m9k0ykmnd19b9il01b65w457pfw75prrs9"))))
+        (base32 "0y8cks9r9hvjlx0isnvbgs3p0al167hlr3q7c3syfcj77dzjkpmz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -1182,23 +1198,23 @@ agnes cluster diagrams.")
 (define-public r-gdtools
   (package
     (name "r-gdtools")
-    (version "0.1.7")
+    (version "0.1.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gdtools" version))
        (sha256
         (base32
-         "122k9spymawfnfyksxyapwq9cigydy5nrjwhrwrhy3qkax3aycf6"))))
+         "1ayy0s699ghaz34lklvcskfwman3x2n2772s5sa5x9k9xgsnxwcl"))))
     (build-system r-build-system)
     (native-inputs
-     `(("r-rcpp" ,r-rcpp)
-       ("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("cairo" ,cairo)
        ("zlib" ,zlib)))
     (propagated-inputs
-     `(("r-withr" ,r-withr)))
+     `(("r-rcpp" ,r-rcpp)
+       ("r-withr" ,r-withr)))
     (home-page "https://cran.r-project.org/web/packages/gdtools")
     (synopsis "Utilities for graphical rendering")
     (description
@@ -1586,13 +1602,13 @@ R packages that praise their users.")
 (define-public r-testthat
   (package
     (name "r-testthat")
-    (version "2.0.1")
+    (version "2.1.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "testthat" version))
               (sha256
                (base32
-                "1cafy5xsjx6m08s45456mjsal7mfxzwpbrds0p4z3gwam948gpzy"))))
+                "03jgr0hlr77yp0aib4v30yjyjrjsa8dczr02yk21m93vl25vqvkp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cli" ,r-cli)
@@ -1635,13 +1651,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.3.2")
+    (version "0.3.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "13s8dh7nryjacp9jpi092icxf5ffkp16qxv59m923g5nkf8f03hi"))))
+                "1pks7d2xavzgaxqrnk3f79qsmv4wqv93f8991jv93pnb1mxpyijf"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1714,14 +1730,14 @@ database.")
 (define-public r-dbplyr
   (package
     (name "r-dbplyr")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dbplyr" version))
        (sha256
         (base32
-         "07p23vyvi7s4abldhkyir05kcf7xnfc18igfryq12j67xd0jql0m"))))
+         "0f4gfkzl07gfwihyc747kdnzxahaw2g28wli4jmikrvczldvjqjx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -1827,13 +1843,13 @@ times.")
 (define-public r-data-table
   (package
     (name "r-data-table")
-    (version "1.12.0")
+    (version "1.12.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "data.table" version))
               (sha256
                (base32
-                "1xz388khklqqc39r1cmjvqm65azambgzqw0743aypm6v4chi26v1"))))
+                "1x929lwhai6nkppm4zvicyw5qh5va5sizp86r30qnfkh1n7w2mfv"))))
     (build-system r-build-system)
     (home-page "https://github.com/Rdatatable/data.table/wiki")
     (synopsis "Enhanced version of data.frame R object")
@@ -1847,14 +1863,14 @@ and fast file reading.")
 (define-public r-xtable
   (package
     (name "r-xtable")
-    (version "1.8-3")
+    (version "1.8-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xtable" version))
        (sha256
         (base32
-         "09f311gq9g7dzf8jdvcx72j11xb7p00jlg066jjbpa6pz3zv1cjk"))))
+         "077xfm0gphvhsay75amd9v90zk57kjgrrlgih04fyrbqqblc1gjs"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr))) ; for vignettes
@@ -2056,13 +2072,13 @@ jackknifed confidence intervals are available for most estimates.")
 (define-public r-rversions
   (package
     (name "r-rversions")
-    (version "1.0.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rversions" version))
               (sha256
                (base32
-                "0i2gi05nrvknr7g89rbppkswyfcwwd4r9gp75fdfhpah8sgq1l11"))))
+                "0g4wvq6m9inhy6ww18lvkhkgarb1m9dp2kdxkkyk5qvldgqa598l"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-curl" ,r-curl)
@@ -2096,14 +2112,14 @@ limited to R.")
 (define-public r-backports
   (package
     (name "r-backports")
-    (version "1.1.3")
+    (version "1.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "backports" version))
        (sha256
         (base32
-         "1hac46xaawnqajlsfb5k7pfkc2ya9h76s5qv9ycj3jafh93d26z4"))))
+         "00zz969vc2gfi5p9q65pzghq2bxm3p9zqgwqswkyz9rgybz5wjzf"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/backports")
     (synopsis "Reimplementations of functions introduced since R 3.0.0")
@@ -2274,9 +2290,9 @@ other packages.")
     (synopsis "CommonMark and Github Markdown Rendering in R")
     (description
      "The CommonMark specification defines a rationalized version of markdown
-syntax.  This package uses the 'cmark' reference implementation for converting
-markdown text into various formats including HTML, LaTeX and groff man.  In
-addition, it exposes the markdown parse tree in XML format.  The latest
+syntax.  This package uses the @code{cmark} reference implementation for
+converting markdown text into various formats including HTML, LaTeX and groff
+man.  In addition, it exposes the markdown parse tree in XML format.  The latest
 version of this package also adds support for Github extensions including
 tables, autolinks and strikethrough text.")
     (license license:bsd-2)))
@@ -2316,14 +2332,14 @@ collation, and NAMESPACE files.")
 (define-public r-openssl
   (package
     (name "r-openssl")
-    (version "1.2.2")
+    (version "1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "openssl" version))
        (sha256
         (base32
-         "0jfkna9zzhy2m5qd8501ija5jnpxzjn8wi3wjw0kr2fm4sl7qynz"))))
+         "1gx4mk7js1irzkql5rgk48ja9c6mm28ccxz483ngbhdd57az90qw"))))
     (build-system r-build-system)
     (inputs
      `(("libressl" ,libressl)))
@@ -2421,13 +2437,13 @@ informative error messages when it's not available.")
 (define-public r-devtools
   (package
     (name "r-devtools")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "devtools" version))
               (sha256
                (base32
-                "1nyspqicn9zd1rgq3k07b3179i8w5ys6jbd65g9q8qczrb7z3x8f"))))
+                "028pppj39ng7q17k27531s8k00lmw982vz5krn74n9b8f2azm8lr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -2521,13 +2537,13 @@ disk (or a connection).")
 (define-public r-plotrix
   (package
     (name "r-plotrix")
-    (version "3.7-4")
+    (version "3.7-5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotrix" version))
               (sha256
                (base32
-                "1hs0zwaqs34559girinvysjfbvznyn8znp9cwvkqx6k2cqvcjinj"))))
+                "0k6ivryac1k81z2dijjds376a9jxwk8rf5g48snj67cnjffkybxj"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/plotrix")
     (synopsis "Various plotting functions")
@@ -2580,13 +2596,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.200.7.1")
+    (version "0.9.400.2.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "1gy3ywzw1cx344a8xihnmflgxphy2fhci7ng85msqd1iv9gzxyk4"))))
+                "01bf8jdlzndmqqzw16lpwx7zz1hkykd001dxxd9rzrgmn86f2xvs"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     ;; All needed for vignettes
@@ -2709,13 +2725,13 @@ variety of formats.")
 (define-public r-gtable
   (package
     (name "r-gtable")
-    (version "0.2.0")
+    (version "0.3.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "gtable" version))
               (sha256
                (base32
-                "0vz7073m0a2q12qzzihrfh5c2kx5jqi5l7z470fxmwqghdllh7l0"))))
+                "1lyncxf2dqdjgw1071cn9c8zwzkz6sldnd5cgmicf70bc726qf7x"))))
     (properties `((upstream-name . "gtable")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/gtable")
@@ -3165,8 +3181,8 @@ using the multicore functionality of the parallel package.")
     (synopsis "R wrapper of the DataTables JavaScript library")
     (description
      "This package allows for data objects in R to be rendered as HTML tables
-using the JavaScript library 'DataTables' (typically via R Markdown or Shiny).
-The 'DataTables' library has been included in this R package.")
+using the JavaScript library @code{DataTables} (typically via R Markdown or
+Shiny).  The @code{DataTables} library has been included in this R package.")
     ;; The DT package as a whole is distributed under GPLv3.  The DT package
     ;; inludes other software components under different licenses:
     ;;
@@ -3297,14 +3313,14 @@ package registries.")
 (define-public r-rngtools
   (package
     (name "r-rngtools")
-    (version "1.3.1")
+    (version "1.3.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rngtools" version))
        (sha256
         (base32
-         "097215qcfw6ybllpzmp1532r59h2srvch3aca4z4s6l2rf9w8gvn"))))
+         "0k1nlcxggflq0043m15dfclnqnzchkpw2ik7jk82h4dqwvysiqcr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -3688,13 +3704,14 @@ most common form of color blindness.")
     (home-page "https://github.com/sjmgarnier/viridisLite")
     (synopsis "Default color maps from matplotlib")
     (description
-     "This package is a port of the new @code{matplotlib} color maps ('viridis',
-'magma', 'plasma' and 'inferno') to R.  matplotlib is a popular plotting
-library for Python.  These color maps are designed in such a way that they
-will analytically be perfectly perceptually-uniform, both in regular form and
-also when converted to black-and-white.  They are also designed to be
-perceived by readers with the most common form of color blindness.  This is
-the 'lite' version of the more complete @code{viridis} package.")
+     "This package is a port of the new @code{matplotlib} color maps
+(@code{viridis}, @code{magma}, @code{plasma} and @code{inferno}) to R.
+matplotlib is a popular plotting library for Python.  These color maps are
+designed in such a way that they will analytically be perfectly
+perceptually-uniform, both in regular form and also when converted to
+black-and-white.  They are also designed to be perceived by readers with the
+most common form of color blindness.  This is the @code{lite} version of the
+more complete @code{viridis} package.")
     (license license:expat)))
 
 (define-public r-tidyselect
@@ -3804,13 +3821,13 @@ features present in other programming languages.")
 (define-public r-plotly
   (package
     (name "r-plotly")
-    (version "4.8.0")
+    (version "4.9.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotly" version))
               (sha256
                (base32
-                "19p8pa03q9mw5vaan7r56xgd13d90ssiz0flbrkvpfrir2105ybq"))))
+                "1kz2hm7vnkn4clxr6yyxxnmdmkz9zwjq6bzysw7j27r3721i8qgp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -4426,13 +4443,13 @@ data at that region, and avoids over-plotting.")
 (define-public r-ggthemes
   (package
     (name "r-ggthemes")
-    (version "4.1.0")
+    (version "4.1.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggthemes" version))
               (sha256
                (base32
-                "1a6r384v72hb91qkg9rz2m7s3qskbl9haxynf2vzz6v1ak9xd4c5"))))
+                "092hks6bxi6al8nclgswnzfmx5wp6n3qf63aqiajca7dx8w8n0m2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -4949,14 +4966,14 @@ of the points.")
 (define-public r-fpc
   (package
     (name "r-fpc")
-    (version "2.1-11.1")
+    (version "2.1-11.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fpc" version))
        (sha256
         (base32
-         "1ari57hkgqsxh6khr6j52cfrzc0096cnn1q7ghxk2z4brdd4rznc"))))
+         "0wjjp9xn283acfg6cm1wa6fsi7pf0z97227hrnlpmprks3mbj8kr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -5283,14 +5300,14 @@ to Applied regression, Second Edition, Sage, 2011.")
 (define-public r-caret
   (package
     (name "r-caret")
-    (version "6.0-81")
+    (version "6.0-84")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "caret" version))
        (sha256
         (base32
-         "1fibrskjzq2f06b8gbrfp3263svfc5s5apsjwaqdg9qzs7sy7fpc"))))
+         "03898irgb70q0p01kq99yb6q6xji0jx4jmj0yxlv8wcwd841r0x1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-foreach" ,r-foreach)
@@ -5473,19 +5490,20 @@ genome-wide association studies can be analyzed efficiently.")
 (define-public r-cairo
   (package
     (name "r-cairo")
-    (version "1.5-9")
+    (version "1.5-10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Cairo" version))
        (sha256
         (base32
-         "1x1q99r3r978rlkkm5gixkv03p0mcr6k7ydcqdmisrwnmrn7p1ia"))))
+         "1mdmd5zmjkh1b0x928zizgzh42x8swbajffb88rvnjfdhk1z0dvq"))))
     (properties `((upstream-name . "Cairo")))
     (build-system r-build-system)
     (inputs
      `(("cairo" ,cairo)
-       ("libxt" ,libxt)))
+       ("libxt" ,libxt)
+       ("zlib" ,zlib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "http://www.rforge.net/Cairo/")
@@ -5527,7 +5545,7 @@ is supported.")
      "This package provides functions to work with date-times and time-spans:
 fast and user friendly parsing of date-time data, extraction and updating of
 components of a date-time (years, months, days, hours, minutes, and seconds),
-algebraic manipulation on date-time and time-span objects.  The 'lubridate'
+algebraic manipulation on date-time and time-span objects.  The @code{lubridate}
 package has a consistent and memorable syntax that makes working with dates
 easy and fun.")
     (license license:gpl2)))
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 0c25e03ffc..b9f435cc57 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -37,11 +37,11 @@
   #:use-module (gnu packages databases)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 92d5358c5e..427bc44598 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -496,15 +496,14 @@ cups server to be installed.")
 (define-public noice
   (package
     (name "noice")
-    (version "0.7")
+    (version "0.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.2f30.org/releases/"
-                           name "-" version ".tar.gz"))
+                           "noice-" version ".tar.gz"))
        (sha256
-        (base32
-         "03b0kzngzacfpz4n8lgbvia2s765i5bkw55v482hh4m49dm41gpc"))))
+        (base32 "0g01iwzscdv27c1idv93gd74kjzy3n9kazgm6qz08rygp96qx4xw"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 1aae3a8ed6..136ffec9e7 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -252,7 +252,7 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.46")
+    (version "1.47.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -261,7 +261,7 @@ over the Internet in an HTTP and CDN friendly way;
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fl52dl41n76r678nzkxa2kgk9khn1fxraxgk8jd3ayc787qs9ia"))))
+                "1nxwjr9jly6wh1ixr6a7zhlg4b3298v940040fsm0n3lcljd37zx"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 500f9a8528..5db822d8f9 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
-;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,7 +30,7 @@
 (define-public syncthing
   (package
     (name "syncthing")
-    (version "1.1.0")
+    (version "1.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/syncthing/syncthing"
@@ -38,7 +38,7 @@
                                   "/syncthing-source-v" version ".tar.gz"))
               (sha256
                (base32
-                "1iks1a3149gj89yqmqa5iry2ik2sj9sjhlhc6nfh7xq4swqgsrb5"))
+                "0xrlw95yp2p66rlvp2a2czf92m3hb3l8v3p39cwnaiw928y5i5m7"))
               (modules '((guix build utils)))
               ;; Delete bundled ("vendored") free software source code.
               (snippet '(begin
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 559fb3d63f..b5c14143a8 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -8,7 +8,10 @@
 ;;; 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 © 2017 Adonay Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
+;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,21 +30,41 @@
 
 (define-module (gnu packages telephony)
   #:use-module (gnu packages)
+  #:use-module (gnu packages aidc)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages file)
   #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages speech)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages upnp)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xml)
@@ -529,3 +552,357 @@ messaging communcations using the SIP protocol.  You can use it for direct IP
 phone to IP phone communication or in a network using a SIP proxy to route your
 calls and messages")
    (license license:gpl2+))))
+
+(define-public pjproject
+  (package
+    (name "pjproject")
+    (version "2.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.pjsip.org/release/" ;
+             version "/" name "-" version ".tar.bz2"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (let ((third-party-directories
+                  (list "BaseClasses" "bdsound" "bin" "g7221" "gsm"
+                        "ilbc" "lib" "milenage" "mp3" "speex" "srtp"
+                        "resample"
+                        ;; Keep only resample, build and README.txt.
+                        "build/baseclasses" "build/g7221" "build/gsm"
+                        "build/ilbc" "build/milenage" "build/samplerate"
+                        "build/speex" "build/srtp"
+                        "build/resample" "build/yuv")))
+             ;; Keep only Makefiles related to resample.
+             (for-each (lambda (file)
+                         (delete-file-recursively
+                          (string-append "third_party/" file)))
+                       third-party-directories)
+             #t)
+           (let ((third-party-dirs
+                  (list "gsm" "ilbc" "speex" "g7221" "srtp"
+                        "portaudio" "resample")))
+             (for-each
+              (lambda (dirs)
+                (substitute* "third_party/build/os-linux.mak"
+                  (((string-append "DIRS += " dirs)) "")))
+              third-party-dirs))))
+       (sha256
+        (base32
+         "0wiph6g51wanzwjjrpwsz63amgvly8g08jz033gnwqmppa584b4w"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("portaudio" ,portaudio)))
+    (propagated-inputs
+     ;; These packages are referenced in the Libs field of the pkg-config
+     ;; file that will be installed by pjproject.
+     `(("speex" ,speex)
+       ("libsrtp" ,libsrtp)
+       ("gnutls" ,gnutls)
+       ("util-linux" ,util-linux)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)))
+    (arguments
+     `(;; FIXME make: No rule to make target
+       ;; 'pjlib-test-unknown-[something]-gnu'.
+       #:tests? #f
+       ;; #:test-target "selftest"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'build-dep
+           (lambda _ (invoke "make" "dep")))
+         (add-before 'patch-source-shebangs 'autoconf
+           (lambda _
+             (invoke "autoconf" "-vfi" "-o"
+                     "aconfigure" "aconfigure.ac")))
+         (add-before 'autoconf 'disable-some-tests
+           ;; Three of the six test programs fail due to missing network
+           ;; access.
+           (lambda _
+             (substitute* "Makefile"
+               (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
+                "selftest: pjlib-test pjlib-util-test pjmedia-test"))
+             #t)))))
+    (home-page "https://www.pjsip.org")
+    (synopsis "Session Initiation Protocol (SIP) stack")
+    (description "PJProject provides an implementation of the Session
+Initiation Protocol (SIP) and a multimedia framework.")
+    (license license:gpl2+)))
+
+(define %jami-version "20190319.4.a16a99f")
+
+(define* (jami-source #:key without-daemon)
+  (origin
+    (method url-fetch)
+    (uri (string-append "http://dl.jami.net/ring-release/tarballs/ring_"
+                        %jami-version
+                        ".tar.gz"))
+    (modules '((guix build utils)))
+    (snippet
+     (if without-daemon
+       '(begin
+          (delete-file-recursively "daemon/contrib"))
+       #f))
+    (sha256
+     (base32
+      "1c6n6sm7skw83v25g33g4jzbragz9j4przbzaz7asxw54jy33dwl"))))
+
+(define-public pjproject-jami
+  (package
+    (inherit pjproject)
+    (name "pjproject-jami")
+    (native-inputs
+     `(("savoir-faire-linux-patches" ,(jami-source))
+       ,@(package-native-inputs pjproject)))
+    (arguments
+     `(#:tests? #f
+       ;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
+       #:configure-flags
+       (list "--disable-oss"
+             "--disable-sound"
+             "--disable-video"
+             "--enable-ext-sound"
+             "--disable-speex-aec"
+             "--disable-g711-codec"
+             "--disable-l16-codec"
+             "--disable-gsm-codec"
+             "--disable-g722-codec"
+             "--disable-g7221-codec"
+             "--disable-speex-codec"
+             "--disable-ilbc-codec"
+             "--disable-opencore-amr"
+             "--disable-silk"
+             "--disable-sdl"
+             "--disable-ffmpeg"
+             "--disable-v4l2"
+             "--disable-openh264"
+             "--disable-resample"
+             "--disable-libwebrtc"
+             ;; "-fPIC" is required for libring.  Bug?
+             "CFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
+             "CXXFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
+             ;; Now deviating from the rules.mak file.
+             "--enable-ssl=gnutls"
+             "--with-external-srtp")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'apply-patches
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
+                   ;; Comes from
+                   ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
+                   ;; WARNING: These amount for huge changes in pjproject.
+                   ;; Particularly, they add support for GnuTLS.
+                   (savoir-faire-linux-patches
+                    '("gnutls"
+                      "rfc2466"
+                      "ipv6"
+                      "ice_config"
+                      "multiple_listeners"
+                      "pj_ice_sess"
+                      "fix_turn_fallback"
+                      "fix_ioqueue_ipv6_sendto"
+                      "add_dtls_transport"
+                      "rfc6062")))
+               (mkdir-p savoir-faire-linux-patches-directory)
+               (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
+                       "-C" savoir-faire-linux-patches-directory "--strip-components=5" "ring-project/daemon/contrib/src/pjproject")
+               (for-each
+                (lambda (file)
+                  (invoke "patch" "--force" "-p1" "-i"
+                          (string-append savoir-faire-linux-patches-directory "/"
+                                         file ".patch")))
+                savoir-faire-linux-patches))
+             #t))
+         ;; TODO: We could use substitute-keyword-arguments instead of
+         ;; repeating the phases from pjproject, but somehow it does
+         ;; not work.
+         (add-before 'build 'build-dep
+           (lambda _ (invoke "make" "dep")))
+         (add-before 'patch-source-shebangs 'autoconf
+           (lambda _
+             (invoke "autoconf" "-v" "-f" "-i" "-o"
+                     "aconfigure" "aconfigure.ac")))
+         (add-before 'autoconf 'disable-some-tests
+           ;; Three of the six test programs fail due to missing network
+           ;; access.
+           (lambda _
+             (substitute* "Makefile"
+               (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
+                "selftest: pjlib-test pjlib-util-test pjmedia-test"))
+             #t)))))))
+
+(define-public libring
+  (package
+    (name "libring")
+    (version %jami-version)
+    (source (jami-source #:without-daemon #t))
+    (build-system gnu-build-system)
+    (inputs
+     ;; Missing (optional?) dep: libnatpmp.
+     `(("alsa-lib" ,alsa-lib)
+       ("boost" ,boost)
+       ("dbus-c++" ,dbus-c++)
+       ("eudev" ,eudev)
+       ("ffmpeg" ,ffmpeg)
+       ("flac" ,flac)
+       ("gmp" ,gmp)
+       ("gsm" ,gsm)
+       ("jack" ,jack-1)
+       ("jsoncpp" ,jsoncpp)
+       ("libogg" ,libogg)
+       ("libva" ,libva)
+       ("opendht" ,opendht)
+       ("opus" ,opus)
+       ("pcre" ,pcre)
+       ("pulseaudio" ,pulseaudio)
+       ("libsamplerate" ,libsamplerate)
+       ("libsndfile" ,libsndfile)
+       ("speex" ,speex)
+       ("speexdsp" ,speexdsp)
+       ("libupnp" ,libupnp)
+       ("libvorbis" ,libvorbis)
+       ("libx264" ,libx264)
+       ("libvdpau" ,libvdpau)
+       ("yaml-cpp" ,yaml-cpp)
+       ("zlib" ,zlib)
+       ("openssl" ,openssl)
+       ("libsecp256k1" ,libsecp256k1)
+       ("python" ,python)
+       ("python-wrapper" ,python-wrapper)
+       ("restbed" ,restbed)
+       ("libx11" ,libx11)
+       ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
+       ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
+       ("pjproject" ,pjproject-jami)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)
+       ("cppunit" ,cppunit)
+       ("perl" ,perl)))                 ; Needed for documentation.
+    (arguments
+     `(#:tests? #f         ; The tests fail to compile due to missing headers.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'change-directory
+           (lambda _
+             (chdir "daemon")
+             #t))
+         (add-before 'build 'add-lib-dir
+           (lambda _
+             (mkdir-p "src/lib")
+             #t)))))
+    (synopsis "Distributed multimedia communications platform")
+    (description "Jami (formerly GNU Ring) is a secure and distributed voice,
+video and chat communication platform that requires no centralized server and
+leaves the power of privacy in the hands of the user.  It supports the SIP and
+IAX protocols, as well as decentralized calling using P2P-DHT.
+
+This package provides a library and daemon implementing the Jami core
+functionality.")
+    (home-page "https://jami.net/")
+    (license license:gpl3+)))
+
+(define-public libringclient
+  (package
+    (inherit libring)
+    (name "libringclient")
+    (build-system cmake-build-system)
+    (propagated-inputs
+     `(("libring" ,libring)     ; For 'dring'.
+       ("qtbase" ,qtbase)       ; Qt is included in several installed headers.
+       ("qttools" ,qttools)))
+    (arguments
+     `(#:tests? #f                      ; There is no testsuite.
+       #:configure-flags
+       (list (string-append "-DRING_BUILD_DIR="
+                            (assoc-ref %build-inputs "libring") "/include"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'change-directory
+           (lambda _
+             (chdir "lrc")
+             #t))
+         (add-before 'configure 'fix-dbus-interfaces-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
+                (string-append (assoc-ref inputs "libring")
+                               dbus-interfaces-path-suffix))))))))
+    (synopsis "Distributed multimedia communications platform")
+    (description "Jami (formerly GNU Ring) is a secure and distributed voice,
+video and chat communication platform that requires no centralized server and
+leaves the power of privacy in the hands of the user.  It supports the SIP and
+IAX protocols, as well as decentralized calling using P2P-DHT.
+
+This package provides a library common to all Jami clients.")
+    (home-page "https://jami.net")
+    (license license:gpl3+)))
+
+(define-public jami-client-gnome
+  (package
+    (inherit libring)
+    (name "jami-client-gnome")
+    (build-system cmake-build-system)
+    (inputs
+     `(("libringclient" ,libringclient)
+       ("gtk+" ,gtk+)
+       ("qrencode" ,qrencode)
+       ("libnotify" ,libnotify)
+       ("clutter" ,clutter)
+       ("clutter-gtk" ,clutter-gtk)
+       ("gettext" ,gnu-gettext)
+       ("libcanberra" ,libcanberra)
+       ("webkitgtk" ,webkitgtk)
+       ;; TODO: We must wrap ring-client-gnome to force using the
+       ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it
+       ;; fails with:
+       ;;
+       ;;   /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so:
+       ;;   undefined symbol: sqlite3_column_table_name16
+       ;;
+       ;; qtbase is built against sqlite-with-column-metadata but somehow
+       ;; jami-client-gnome ends up with both `sqlite' and
+       ;; `sqlite-with-column-metadata' as inputs and it seems that
+       ;; libqsqlite.so gets confused.
+       ("sqlite" ,sqlite-with-column-metadata)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("glib:bin" ,glib "bin")
+       ("doxygen" ,doxygen)))
+    (propagated-inputs
+     `(("libring" ,libring)             ; Contains `dring', the daemon, which is automatically by d-bus.
+       ("adwaita-icon-theme" ,adwaita-icon-theme)
+       ("evolution-data-server" ,evolution-data-server)))
+    (arguments
+     `(#:tests? #f                      ; There is no testsuite.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'change-directory
+           (lambda _
+             (chdir "client-gnome")
+             #t))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (path (string-append (assoc-ref inputs "sqlite") "/lib")))
+               (wrap-program (string-append out "/bin/gnome-ring")
+                 `("LD_LIBRARY_PATH" ":" prefix (,path))))
+             #t)))))
+    (synopsis "Distributed multimedia communications platform")
+    (description "Jami (formerly GNU Ring) is a secure and distributed voice,
+video and chat communication platform that requires no centralized server and
+leaves the power of privacy in the hands of the user.  It supports the SIP and
+IAX protocols, as well as decentralized calling using P2P-DHT.
+
+This package provides the Jami client for the GNOME desktop.")
+    (home-page "https://jami.net")
+    (license license:gpl3+)))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 3839aa1b52..a3ea05538b 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -115,7 +115,7 @@ configurable through a graphical wizard.")
 (define-public termite
   (package
     (name "termite")
-    (version "14")
+    (version "15")
     (source
       (origin
         (method git-fetch)
@@ -127,7 +127,7 @@ configurable through a graphical wizard.")
         (file-name (string-append name "-" version "-checkout"))
         (sha256
          (base32
-          "0dmz9rpc2fdvcwhcmjnhb48ixn403gxpq03g334d1hgjw2hsyx7x"))))
+          "0hp1x6lj098m3jgna274wv5dv60lnzg22297di68g4hw9djjyd2k"))))
     (build-system gnu-build-system)
     (arguments
       `(#:phases
@@ -249,10 +249,14 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
                   "0q62kjsvy2iwy8adfiygx2bfwlh83rphgxbis95ycspqidg9py87"))
                 (patches
                  (search-patches "kmscon-runtime-keymap-switch.patch"))
-                (modules '((guix build utils)))))
+                (modules '((guix build utils)))
+                (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases (modify-phases %standard-phases
+       `(;; The closure of MESA is huge so we'd rather avoid it.
+         #:disallowed-references (,mesa)
+
+         #:phases (modify-phases %standard-phases
                     (replace 'bootstrap
                       (lambda _
                         (setenv "NOCONFIGURE" "indeed")
@@ -285,7 +289,10 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
          ("libtsm" ,libtsm)
          ("libxkbcommon" ,libxkbcommon)
          ("logind" ,elogind)
-         ("mesa" ,mesa)
+         ;; MESA can be used for accelerated video output via OpenGLESv2, but
+         ;; it's a bit dependency that we'd rather avoid in the installation
+         ;; image.
+         ;; ("mesa" ,mesa)
          ("pango" ,pango)
          ("udev" ,eudev)))
       (synopsis "Linux KMS-based terminal emulator")
@@ -377,7 +384,7 @@ to all types of devices that provide serial consoles.")
 (define-public beep
   (package
     (name "beep")
-    (version "1.4.3")
+    (version "1.4.4")
     (source
      (origin
        (method git-fetch)
@@ -390,7 +397,7 @@ to all types of devices that provide serial consoles.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1gramwa2zm59kqjhv96fi8vg7l6lyffv02h0310vb90naschi99g"))))
+        (base32 "1bk7g63qpiclbq20iz2x238by8s1b2iafdim7i6dq1i5n01s7lgx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -1042,8 +1049,8 @@ comfortably in a pager or editor.
          (add-after 'unpack 'insert-googletests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((tests (assoc-ref inputs "googletest")))
-               (invoke "tar" "xvf" tests "-C" "external/googletest"
-                       "--strip-components=1"))))
+               (copy-recursively tests "external/googletest"))
+             #t))
          (add-after 'install 'dont-provide-gtest-libraries
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index e42e910a78..a6fedd78f0 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -102,21 +102,23 @@
        (base32
         "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y"))
       (patches
-       (list
-        ;; This is required for compatibility with Poppler 0.64.0 and to fix a
-        ;; segmentation fault in dvipdfm-x from XeTeX, and also contains a fix
-        ;; for CVE-2018-17407.
-        (origin
-          (method url-fetch)
-          (uri (string-append "http://www.linuxfromscratch.org/patches/blfs/"
-                              "svn/texlive-" version "-source-upstream_fixes-2.patch"))
-          (file-name "texlive-poppler-compat.patch")
-          (sha256
-           (base32
-            "04sxy1qv9y575mxwyg3y7rx7mh540pfjqx7yni7ncb5wjbq9pq1a")))
-        (search-patch "texlive-bin-luatex-poppler-compat.patch")
-        (search-patch "texlive-bin-pdftex-poppler-compat.patch")
-        (search-patch "texlive-bin-xetex-poppler-compat.patch")))))
+       (let ((arch-patch
+              (lambda (name revision hash)
+                (origin
+                  (method url-fetch)
+                  (uri (string-append "https://git.archlinux.org/svntogit/packages.git"
+                                      "/plain/trunk/" name "?h=packages/texlive-bin"
+                                      "&id=" revision))
+                  (file-name (string-append "texlive-bin-" name))
+                  (sha256 (base32 hash)))))
+             (arch-revision "e1975bce0b9d270d7c9773c5beb7e87d61ee8f57"))
+         (append (search-patches  "texlive-bin-CVE-2018-17407.patch"
+                                  "texlive-bin-luatex-poppler-compat.patch")
+                 (list
+                  (arch-patch "pdftex-poppler0.72.patch" arch-revision
+                              "0p46b6xxxg2s3hx67r0wpz16g3qygx65hpc581xs3jz5pvsiq3y7")
+                  (arch-patch "xetex-poppler-fixes.patch" arch-revision
+                              "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx")))))))
    (build-system gnu-build-system)
    (inputs
     `(("texlive-extra-src" ,texlive-extra-src)
@@ -195,9 +197,9 @@
             #t))
         (add-after 'unpack 'use-code-for-new-poppler
           (lambda _
-            (copy-file "texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftoepdf-poppler0.72.0.cc"
                        "texk/web2c/pdftexdir/pdftoepdf.cc")
-            (copy-file "texk/web2c/pdftexdir/pdftosrc-newpoppler.cc"
+            (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.72.0.cc"
                        "texk/web2c/pdftexdir/pdftosrc.cc")
             #t))
         (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler
@@ -3425,8 +3427,8 @@ command.")
     (description
      "Identify areas of text to be marked with changebars with the
 @code{\\cbstart} and @code{\\cbend} commands; the bars may be coloured.  The
-package uses 'drivers' to place the bars; the available drivers can work with
-@code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI
+package uses @code{drivers} to place the bars; the available drivers can work
+with @code{dvitoln03}, @code{dvitops}, @code{dvips}, the emTeX and TeXtures DVI
 drivers, and VTeX and pdfTeX.")
     (license license:lppl)))
 
@@ -6029,7 +6031,7 @@ typearea (which are the main parts of the bundle).")
            (copy-recursively (assoc-ref %build-inputs "source") target)
            #t))))
     (home-page "https://www.ctan.org/pkg/listofitems")
-    (synopsis "Grab items in lists using user-specified seperation character")
+    (synopsis "Grab items in lists using user-specified separation character")
     (description
      "This package allows one to capture all the items of a list, for which
 the parsing character has been selected by the user, and to access any of
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 7436fdeb97..da5cd011d8 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -519,7 +519,7 @@ in a portable way.")
      (origin
        (method url-fetch)
        (uri (string-append "http://www.lbreyer.com/gpl/"
-                           name "-" version ".tar.gz"))
+                           "dbacl-" version ".tar.gz"))
        (sha256
         (base32
          "0224g6x71hyvy7jikfxmgcwww1r5lvk0jx36cva319cb9nmrbrq7"))))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 263ca9b548..b2add0ec9e 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -38,7 +38,6 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system haskell)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages)
@@ -48,9 +47,6 @@
   #:use-module (gnu packages dns)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages guile)
-  #:use-module (gnu packages haskell)
-  #:use-module (gnu packages haskell-check)
-  #:use-module (gnu packages haskell-crypto)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libidn)
@@ -497,13 +493,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.32.0")
+    (version "0.33.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1v0skyrjnbxq0lfmia5k6jy29iig4sxbi9j9q367xsw0g25wxvqf"))))
+                "10ks4wp55qxzkf8ms3xcfs5njg2zz7w499wh24gzw7h7s1qxp35k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -554,7 +550,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1j63i0j019q0d3l5rx14fv4nxy01nplhk7q2k2fq10vxl0jlxff0"))))
+                "1nf3bb6j3nmdd5bcp3k7d6jqilmwvpzllzpr5niwaghgqlr3y86m"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
@@ -801,7 +797,7 @@ then ported to the GNU / Linux environment.")
 (define-public mbedtls-apache
   (package
     (name "mbedtls-apache")
-    (version "2.16.0")
+    (version "2.16.1")
     (source
      (origin
        (method url-fetch)
@@ -811,7 +807,7 @@ then ported to the GNU / Linux environment.")
                            version "-apache.tgz"))
        (sha256
         (base32
-         "1qlscr0m97favkqmrlj90rlgw40h8lcypxz0snvr1iwkj1pbbnp3"))))
+         "08zz88gcb2jmpfsgy5b6qc3li6l39yw1dbimd18aziyd889nvl7b"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -846,48 +842,6 @@ coding footprint.")
                   #t)))
             ,@(package-arguments mbedtls-apache)))))))
 
-(define-public ghc-tls
-  (package
-    (name "ghc-tls")
-    (version "1.4.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://hackage.haskell.org/package/"
-                                  "tls/tls-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1y083724mym28n6xfaz7pcc7zqxdhjpaxpbvzxfbs25qq2px3smv"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-cereal" ,ghc-cereal)
-       ("ghc-data-default-class" ,ghc-data-default-class)
-       ("ghc-memory" ,ghc-memory)
-       ("ghc-cryptonite" ,ghc-cryptonite)
-       ("ghc-asn1-types" ,ghc-asn1-types)
-       ("ghc-asn1-encoding" ,ghc-asn1-encoding)
-       ("ghc-x509" ,ghc-x509)
-       ("ghc-x509-store" ,ghc-x509-store)
-       ("ghc-x509-validation" ,ghc-x509-validation)
-       ("ghc-async" ,ghc-async)
-       ("ghc-network" ,ghc-network)
-       ("ghc-hourglass" ,ghc-hourglass)))
-    (native-inputs
-     `(("ghc-tasty" ,ghc-tasty)
-       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
-       ("ghc-quickcheck" ,ghc-quickcheck)))
-    (home-page "https://github.com/vincenthz/hs-tls")
-    (synopsis
-     "TLS/SSL protocol native implementation (Server and Client)")
-    (description
-     "Native Haskell TLS and SSL protocol implementation for server and client.
-This provides a high-level implementation of a sensitive security protocol,
-eliminating a common set of security issues through the use of the advanced
-type system, high level constructions and common Haskell features.  Currently
-implement the SSL3.0, TLS1.0, TLS1.1 and TLS1.2 protocol, and support RSA and
-Ephemeral (Elliptic curve and regular) Diffie Hellman key exchanges, and many
-extensions.")
-    (license license:bsd-3)))
-
 (define-public dehydrated
   (package
     (name "dehydrated")
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index 7dbe2128a5..91d0af6313 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -38,7 +38,7 @@
 (define-public tmux
   (package
     (name "tmux")
-    (version "2.8")
+    (version "2.9")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -46,7 +46,7 @@
                     version "/tmux-" version ".tar.gz"))
              (sha256
               (base32
-               "1fm22wva2znkcs5jczrnlxrpzsk2jlwdwy4dhzzyrbsgccsz6svz"))))
+               "10195hp5ydkwwmpcr7188fgx9daqwrslb1lylgrrkzc6yhr1541l"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -141,7 +141,7 @@ windows.")
 (define-public tmux-xpanes
   (package
     (name "tmux-xpanes")
-    (version "4.0.0")
+    (version "4.1.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -150,7 +150,7 @@ windows.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0px164ikhnzfls6dld4xhiyd9j5jp2rbmwfg11b1pxzm9mp7qk6r"))))
+                "11yz6rh2ckd1z8q80n8giv2gcz2i22fgf3pnfxq96qrzflb0d96a"))))
     (build-system trivial-build-system)
     (inputs
      `(("bash" ,bash)))
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 9d534e5799..3f3d80f576 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -32,14 +32,14 @@
 (define-public miniupnpc
   (package
     (name "miniupnpc")
-    (version "2.1.20190210")
+    (version "2.1.20190408")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://miniupnp.tuxfamily.org/files/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "05w8p51yd71ksapajb9nag464ncakk72v9dxr01y168wix707d49"))))
+        (base32 "1v0l2m8j7r6jiy871d6v11ls243xqn6s3856iwd3bmk5c37npi50"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index 9952fa1647..f1584c896a 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -79,3 +79,18 @@ tools.  There are Valgrind tools that can automatically detect many memory
 management and threading bugs, and profile your programs in detail.  You can
 also use Valgrind to build new tools.")
     (license gpl2+)))
+
+(define-public valgrind-3.15
+  (package
+    (inherit valgrind)
+    (version "3.15.0")
+    (source (origin
+              (method url-fetch)
+              (uri (list (string-append "http://www.valgrind.org/downloads"
+                                        "/valgrind-" version ".tar.bz2")
+                         (string-append "ftp://sourceware.org/pub/valgrind"
+                                        "/valgrind-" version ".tar.bz2")))
+              (sha256
+               (base32
+                "1ccawxrni8brcvwhygy12iprkvz409hbr9xkk1bd03gnm2fplz21"))
+              (patches (search-patches "valgrind-enable-arm.patch"))))))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 90b3a98bc1..3b993e09aa 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -23,6 +23,7 @@
 ;;; Copyright © 2018 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
+;;; Copyright © 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -45,10 +46,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module (guix build-system ant)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system haskell)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages apr)
@@ -69,12 +69,7 @@
   #: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)
-  #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages nano)
@@ -408,7 +403,7 @@ as well as the classic centralized workflow.")
                          ,@(transitive-input-references
                             'inputs
                             (map (lambda (l)
-                                   (assoc l (inputs)))
+                                   (assoc l (package-inputs this-package)))
                                  '("perl-authen-sasl"
                                    "perl-net-smtp-ssl"
                                    "perl-io-socket-ssl")))))))
@@ -421,7 +416,7 @@ as well as the classic centralized workflow.")
                          ,@(transitive-input-references
                             'inputs
                             (map (lambda (l)
-                                   (assoc l (inputs)))
+                                   (assoc l (package-inputs this-package)))
                                  '("perl-cgi")))))))
 
               ;; Tell 'git-submodule' where Perl is.
@@ -529,13 +524,14 @@ everything from small to very large projects with speed and efficiency.")
     (name "libgit2")
     (version "0.28.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/libgit2/libgit2/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/libgit2/libgit2.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0swk2dyq5a4p1jn5wvbcsrxckhh808vifxz5y8w663avg541188c"))
+                "0j5p0hhz2wizvgkf0nbpd8g32mb5bg1vp8ckpbhb0pq38ja4h43r"))
               (patches (search-patches "libgit2-avoid-python.patch"
                                        "libgit2-mtime-0.patch"))
 
@@ -558,6 +554,10 @@ everything from small to very large projects with speed and efficiency.")
                (("/bin/cp") (which "cp"))
                (("/bin/rm") (which "rm")))
              #t))
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          ;; Run checks more verbosely.
          (replace 'check
            (lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
@@ -584,14 +584,15 @@ write native speed custom Git applications in any language with bindings.")
   (package
     (name "git-crypt")
     (version "0.5.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/AGWA/git-crypt"
-                                  "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0454fdmgm5f3razkn8n03lfqm5zyzvr4r2528zmlxiwba9518l2i"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/AGWA/git-crypt.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x9209n3k49k998saadr2d0lmvs01smjinx7gzzyjdwj9l904sii"))))
     (build-system gnu-build-system)
     (inputs
      `(("git" ,git)
@@ -778,14 +779,13 @@ a built-in cache to decrease server I/O pressure.")
     (version "0.5.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/davisp/ghp-import/archive/"
-             version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/davisp/ghp-import.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0x887v690xsac2hzjkpbvp3a6crh3m08mqbk3nb4xwc9dnk869q7"))))
+        (base32 "12pmw3zz3i57ljnm0rxdyjqdyhisbvy18mjwkb3bzp5pgzs2f45c"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1033,14 +1033,15 @@ manipulate them in various ways.")
   (package
     (name "vcsh")
     (version "1.20151229")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/RichiH/vcsh/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1ym3swkh738c3vciffvlr96vqzhwmzkb8ajqzap8f0j9n039a1mf"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/RichiH/vcsh.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1grpj45nbpv4j60vd2kg4rj53zrm0bc0h9l4pfd3c2mwbvywm6ab"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -1107,15 +1108,15 @@ also walk each side of a merge and test those changes individually.")
   (package
     (name "gitolite")
     (version "3.6.7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/sitaramc/gitolite/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1idxipg0df80bhjcxgwxs3lllqnkvhwpinmfv1xvg1l98fxiapgp"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sitaramc/gitolite.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0rmyzr66lxh2ildf3h1nh3hh2ndwk21rjdin50r5vhwbdd7jg8vb"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -1366,7 +1367,7 @@ following features:
     (home-page "https://subversion.apache.org/")
     (synopsis "Revision control system")
     (description
-     "Subversion (aka. ``svn'') exists to be recognized and adopted as a
+     "@dfn{Subversion} (svn) exists to be recognized and adopted as a
 centralized version control system characterized by its
 reliability as a safe haven for valuable data; the simplicity of its model and
 usage; and its ability to support the needs of a wide variety of users and
@@ -1778,14 +1779,15 @@ output of the @code{git} command.")
   (package
     (name "findnewest")
     (version "0.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/0-wiz-0/findnewest/archive/findnewest-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "1ydis4y0amkgfr4y60sn076f1l41ya2kn89kfd9fqf44f9ccgb5r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/0-wiz-0/findnewest.git")
+             (commit (string-append "findnewest-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1x1cbn2b27h5r0ah5xc06fkalfdci2ngrgd4wibxjw0h88h0nvgq"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf)
                      ("automake" ,automake)))
@@ -1849,15 +1851,15 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
   (package
     (name "git-annex-remote-hubic")
     (version "0.3.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Schnouki/" name "/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "196g3jkaybjx11nbr51n0cjps3wjzb145ab76y717diqvvxp5v4r"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Schnouki/git-annex-remote-hubic.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16y9sk67hfi17h9n2kkffyabfccksh5rab40hhk69v6cxmbpn2sx"))))
     (build-system python-build-system)
     (arguments `(#:python ,python-2))
     (native-inputs
@@ -1968,180 +1970,6 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.")
 be served with a HTTP file server of your choice.")
     (license license:expat)))
 
-;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17
-;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000
-;; and results of search engines will show that if the protocol is http, https
-;; is never mentioned.
-(define-public darcs
-  (package
-    (name "darcs")
-    (version "2.14.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/darcs/"
-                           "darcs-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0zm2486gyhiga1amclbg92cd09bvki6vgh0ll75hv5kl72j61lb5"))
-       (modules '((guix build utils)))
-       ;; Remove time-dependent code for reproducibility.
-       (snippet
-        '(begin
-           (substitute* "darcs/darcs.hs"
-             (("__DATE__") "\"1970-01-01\"")
-             (("__TIME__") "\"00:00:00\""))
-           #t))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:configure-flags '("-fpkgconfig" "-fcurl" "-flibiconv" "-fthreaded"
-                           "-fnetwork-uri" "-fhttp" "--flag=executable"
-                           "--flag=library")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'patch-source-shebangs 'patch-sh
-           (lambda _
-             (substitute* "tests/issue538.sh"
-               (("/bin/sh") (which "sh")))
-             #t)))))
-    (inputs
-     `(("ghc-cmdargs" ,ghc-cmdargs)
-       ("ghc-split" ,ghc-split)
-       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
-       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
-       ("ghc-test-framework" ,ghc-test-framework)
-       ("ghc-quickcheck" ,ghc-quickcheck)
-       ("ghc-findbin" ,ghc-findbin)
-       ("ghc-hunit" ,ghc-hunit)
-       ("ghc-async" ,ghc-async)
-       ("ghc-attoparsec" ,ghc-attoparsec)
-       ("ghc-base16-bytestring" ,ghc-base16-bytestring)
-       ("ghc-bytestring-builder" ,ghc-bytestring-builder)
-       ("ghc-cryptohash" ,ghc-cryptohash)
-       ("ghc-data-ordlist" ,ghc-data-ordlist)
-       ("ghc-fgl" ,ghc-fgl)
-       ("ghc-system-filepath" ,ghc-system-filepath)
-       ("ghc-graphviz" ,ghc-graphviz)
-       ("ghc-hashable" ,ghc-hashable)
-       ("ghc-html" ,ghc-html)
-       ("ghc-mmap" ,ghc-mmap)
-       ("ghc-old-time" ,ghc-old-time)
-       ("ghc-parsec" ,ghc-parsec)
-       ("ghc-random" ,ghc-random)
-       ("ghc-regex-applicative" ,ghc-regex-applicative)
-       ("ghc-regex-compat-tdfa" ,ghc-regex-compat-tdfa)
-       ("ghc-sandi" ,ghc-sandi)
-       ("ghc-shelly" ,ghc-shelly)
-       ("ghc-tar" ,ghc-tar)
-       ("ghc-transformers-compat" ,ghc-transformers-compat)
-       ("ghc-unix-compat" ,ghc-unix-compat)
-       ("ghc-utf8-string" ,ghc-utf8-string)
-       ("ghc-vector" ,ghc-vector)
-       ("ghc-zip-archive" ,ghc-zip-archive)
-       ("ghc-zlib" ,ghc-zlib)
-       ("ghc-http" ,ghc-http)
-       ("curl" ,curl)
-       ("ghc" ,ghc)
-       ("ncurses" ,ncurses)
-       ("perl" ,perl)
-       ("libiconv" ,libiconv)
-       ("ghc-network" ,ghc-network)
-       ("ghc-network-uri" ,ghc-network-uri)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://darcs.net")
-    (synopsis "Distributed Revision Control System")
-    (description
-     "Darcs is a revision control system.  It is:
-
-@enumerate
-@item Distributed: Every user has access to the full command set, removing boundaries
-between server and client or committer and non-committers.
-@item Interactive: Darcs is easy to learn and efficient to use because it asks you
-questions in response to simple commands, giving you choices in your work flow.
-You can choose to record one change in a file, while ignoring another.  As you update
-from upstream, you can review each patch name, even the full diff for interesting
-patches.
-@item Smart: Originally developed by physicist David Roundy, darcs is based on a
-unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
-@end enumerate")
-    (license license:gpl2)))
-
-(define-public java-jgit
-  (package
-    (name "java-jgit")
-    (version "4.7.0.201704051617-r")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://repo1.maven.org/maven2/"
-                                  "org/eclipse/jgit/org.eclipse.jgit/"
-                                  version "/org.eclipse.jgit-"
-                                  version "-sources.jar"))
-              (sha256
-               (base32
-                "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k"))))
-    (build-system ant-build-system)
-    (arguments
-     `(#:tests? #f                      ; There are no tests to run.
-       #:jar-name "jgit.jar"
-       ;; JGit must be built with a JDK supporting Java 8.
-       #:jdk ,icedtea-8
-       ;; Target our older default JDK.
-       #:make-flags (list "-Dtarget=1.7")
-       #:phases
-       (modify-phases %standard-phases
-         ;; The jar file generated by the default build.xml does not include
-         ;; the text properties files, so we need to add them.
-         (add-after 'build 'add-properties
-           (lambda* (#:key jar-name #:allow-other-keys)
-             (with-directory-excursion "src"
-               (apply invoke "jar" "-uf"
-                      (string-append "../build/jar/" jar-name)
-                      (find-files "." "\\.properties$")))
-             #t)))))
-    (inputs
-     `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
-       ("java-javaewah" ,java-javaewah)
-       ("java-jsch" ,java-jsch)
-       ("java-slf4j-api" ,java-slf4j-api)))
-    (home-page "https://eclipse.org/jgit/")
-    (synopsis "Java library implementing the Git version control system")
-    (description "JGit is a lightweight, pure Java library implementing the
-Git version control system, providing repository access routines, support for
-network protocols, and core version control algorithms.")
-    (license license:edl1.0)))
-
-;; For axoloti.  This package can still be built with icedtea-7, which is
-;; currently used as the default JDK.
-(define-public java-jgit-4.2
-  (package (inherit java-jgit)
-    (version "4.2.0.201601211800-r")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://repo1.maven.org/maven2/"
-                                  "org/eclipse/jgit/org.eclipse.jgit/"
-                                  version "/org.eclipse.jgit-"
-                                  version "-sources.jar"))
-              (sha256
-               (base32
-                "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm"))))
-    (build-system ant-build-system)
-    (arguments
-     (substitute-keyword-arguments (package-arguments java-jgit)
-       ;; Build for default JDK.
-       ((#:jdk _) icedtea-7)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'use-latest-javaewah-API
-             (lambda _
-               (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java"
-                 (("wordinbits") "WORD_IN_BITS"))
-               #t))))))
-    (inputs
-     `(("java-javaewah" ,java-javaewah)
-       ("java-jsch" ,java-jsch)
-       ("java-slf4j-api" ,java-slf4j-api)))))
-
 (define-public gource
   (package
     (name "gource")
@@ -2230,133 +2058,6 @@ cases like all those little scripts in your @file{~/bin} directory, or a
 directory full of HOWTOs.")
     (license license:bsd-2)))
 
-(define-public git-annex
-  (package
-    (name "git-annex")
-    (version "6.20180926")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/"
-                           "git-annex/git-annex-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1251rj8h63y30sfqk0zh670yhz14p256y59n3590pg015pf3575d"))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:configure-flags
-       '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'patch-shell
-           (lambda _
-             (substitute* "Utility/Shell.hs"
-               (("/bin/sh") (which "sh")))
-             #t))
-         (add-before 'configure 'factor-setup
-           (lambda _
-             ;; Factor out necessary build logic from the provided
-             ;; `Setup.hs' script.  The script as-is does not work because
-             ;; it cannot find its dependencies, and there is no obvious way
-             ;; to tell it where to look.  Note that we do not preserve the
-             ;; code that installs man pages here.
-             (call-with-output-file "PreConf.hs"
-               (lambda (out)
-                 (format out "import qualified Build.Configure as Configure~%")
-                 (format out "main = Configure.run Configure.tests~%")))
-             (call-with-output-file "Setup.hs"
-               (lambda (out)
-                 (format out "import Distribution.Simple~%")
-                 (format out "main = defaultMain~%")))
-             #t))
-         (add-before 'configure 'pre-configure
-           (lambda _
-             (invoke "runhaskell" "PreConf.hs")
-             #t))
-         (replace 'check
-           (lambda _
-             ;; We need to set the path so that Git recognizes
-             ;; `git annex' as a custom command.
-             (setenv "PATH" (string-append (getenv "PATH") ":"
-                                           (getcwd) "/dist/build/git-annex"))
-             (with-directory-excursion "dist/build/git-annex"
-               (symlink "git-annex" "git-annex-shell"))
-             (invoke "git-annex" "test")
-             #t))
-         (add-after 'install 'install-symlinks
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin")))
-               (symlink (string-append bin "/git-annex")
-                        (string-append bin "/git-annex-shell"))
-               (symlink (string-append bin "/git-annex")
-                        (string-append bin "/git-remote-tor-annex"))
-               #t))))))
-    (inputs
-     `(("curl" ,curl)
-       ("ghc-aeson" ,ghc-aeson)
-       ("ghc-async" ,ghc-async)
-       ("ghc-bloomfilter" ,ghc-bloomfilter)
-       ("ghc-byteable" ,ghc-byteable)
-       ("ghc-case-insensitive" ,ghc-case-insensitive)
-       ("ghc-crypto-api" ,ghc-crypto-api)
-       ("ghc-cryptonite" ,ghc-cryptonite)
-       ("ghc-data-default" ,ghc-data-default)
-       ("ghc-disk-free-space" ,ghc-disk-free-space)
-       ("ghc-dlist" ,ghc-dlist)
-       ("ghc-edit-distance" ,ghc-edit-distance)
-       ("ghc-esqueleto" ,ghc-esqueleto)
-       ("ghc-exceptions" ,ghc-exceptions)
-       ("ghc-feed" ,ghc-feed)
-       ("ghc-free" ,ghc-free)
-       ("ghc-hslogger" ,ghc-hslogger)
-       ("ghc-http-client" ,ghc-http-client)
-       ("ghc-http-conduit" ,ghc-http-conduit)
-       ("ghc-http-types" ,ghc-http-types)
-       ("ghc-ifelse" ,ghc-ifelse)
-       ("ghc-memory" ,ghc-memory)
-       ("ghc-monad-control" ,ghc-monad-control)
-       ("ghc-monad-logger" ,ghc-monad-logger)
-       ("ghc-network" ,ghc-network)
-       ("ghc-old-locale" ,ghc-old-locale)
-       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
-       ("ghc-persistent" ,ghc-persistent)
-       ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
-       ("ghc-persistent-template" ,ghc-persistent-template)
-       ("ghc-quickcheck" ,ghc-quickcheck)
-       ("ghc-random" ,ghc-random)
-       ("ghc-regex-tdfa" ,ghc-regex-tdfa)
-       ("ghc-resourcet" ,ghc-resourcet)
-       ("ghc-safesemaphore" ,ghc-safesemaphore)
-       ("ghc-sandi" ,ghc-sandi)
-       ("ghc-securemem" ,ghc-securemem)
-       ("ghc-socks" ,ghc-socks)
-       ("ghc-split" ,ghc-split)
-       ("ghc-stm" ,ghc-stm)
-       ("ghc-stm-chans" ,ghc-stm-chans)
-       ("ghc-tagsoup" ,ghc-tagsoup)
-       ("ghc-text" ,ghc-text)
-       ("ghc-unix-compat" ,ghc-unix-compat)
-       ("ghc-unordered-containers" ,ghc-unordered-containers)
-       ("ghc-utf8-string" ,ghc-utf8-string)
-       ("ghc-uuid" ,ghc-uuid)
-       ("git" ,git)
-       ("rsync" ,rsync)))
-    (native-inputs
-     `(("ghc-tasty" ,ghc-tasty)
-       ("ghc-tasty-hunit" ,ghc-tasty-hunit)
-       ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
-       ("ghc-tasty-rerun" ,ghc-tasty-rerun)))
-    (home-page "https://git-annex.branchable.com/")
-    (synopsis "Manage files with Git, without checking in their contents")
-    (description "This package allows managing files with Git, without
-checking the file contents into Git.  It can store files in many places,
-such as local hard drives and cloud storage services.  It can also be
-used to keep a folder in sync between computers.")
-    ;; The web app is released under the AGPLv3+.
-    (license (list license:gpl3+
-                   license:agpl3+))))
-
 (define-public git-when-merged
   ;; Use an unreleased version to get a PY3 compatibility fix.
   (let ((commit "ab6af7865a0ba55ba364a6c507e0be6f84f31c6d"))
@@ -2413,18 +2114,18 @@ how information about the merge is displayed.")
   (package
     (name "git-imerge")
     (version "1.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/mhagger/git-imerge/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0a6ay8fpgz3yd84jc40w41x0rcfpan6bcq4wd1hxiiqwb51jysb2"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mhagger/git-imerge.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vi1w3f0yk4gqhxj2hzqafqq28rihyhyfnp8x7xzib96j2si14a4"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f  ; The are only manual test scripts.
+     `(#:tests? #f                      ; only manual test scripts
        #:make-flags (list (string-append "DESTDIR=" %output)
                           "PREFIX=")
        #:phases
@@ -2454,3 +2155,27 @@ design goals are to reduce the pain of resolving merge conflicts by finding
 the smallest possible conflicts and to allow a merge to be saved, tested,
 interrupted, published, and collaborated on while in progress.")
     (license license:gpl2+)))
+
+(define-public git-lfs
+  (package
+    (name "git-lfs")
+    (version "2.7.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/git-lfs/git-lfs")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "10v38w8qfz0x8750kv31n8gg2dimvq4wz40m374pd1xaypfs9670"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/git-lfs/git-lfs"))
+    (home-page "https://git-lfs.github.com/")
+    (synopsis "Git extension for versioning large files")
+    (description
+     "Git Large File Storage (LFS) replaces large files such as audio samples,
+videos, datasets, and graphics with text pointers inside Git, while storing the
+file contents on a remote server.")
+    (license license:expat)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index c8d72bbeac..420d37f020 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -25,7 +25,7 @@
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2018, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
@@ -91,6 +91,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
@@ -755,14 +756,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.2")
+    (version "4.1.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0yrl6nij4b1pk1c4nbi80857dsd760gziiss2ls19awq8zj0lpxr"))))
+               "0gdnprc7gk4b7ckq8wbxbrj7i00r76r9a5g9mj7iln40512j0c0c"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -935,14 +936,14 @@ audio/video codec library.")
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
-    (version "3.4.5")
+    (version "3.4.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))
+               "0gmqbhg5jjcfanrxrl657zn12lzz73sfs8xwryfy7n9rn6f2fwim"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg)
        ((#:configure-flags flags)
@@ -1326,6 +1327,14 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after
+          'unpack 'patch-paths
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((ytdl (assoc-ref inputs "youtube-dl")))
+              (substitute* "player/lua/ytdl_hook.lua"
+                (("\"youtube-dl\",")
+                 (string-append "\"" ytdl "/bin/youtube-dl\",")))
+              #t)))
          (add-before
           'configure 'setup-waf
           (lambda* (#:key inputs #:allow-other-keys)
@@ -1437,7 +1446,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.03.18")
+    (version "2019.04.30")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1445,7 +1454,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0r31q7j3gg2zfw3b45jancxl7mmr2gin8dyfx5dgyyp92ss8hih7"))))
+                "1s43adnky8ayhjwmgmiqy6rmmygd4c23v36jhy2lzr2jpn8l53z1"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1841,7 +1850,7 @@ for use with HTML5 video.")
 (define-public avidemux
   (package
     (name "avidemux")
-    (version "2.7.2")
+    (version "2.7.3")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1849,7 +1858,7 @@ for use with HTML5 video.")
                    "avidemux_" version ".tar.gz"))
              (sha256
               (base32
-               "07fdz3y4iln7cizikdjj96dqvp2f8zzhs31ncxxwzdkngn5v8138"))
+               "17x2mnnr5h8pp764p55l1xcn2ljnzhbj8cykajlllvk4rc4qwxld"))
              (patches (search-patches "avidemux-install-to-lib.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -1878,7 +1887,7 @@ for use with HTML5 video.")
        ("yasm" ,yasm)
        ("zlib" ,zlib)))
     (arguments
-     `(#:tests? #f ; no check target
+     `(#:tests? #f                      ; no check target
        #:phases
        ;; Make sure files inside the included ffmpeg tarball are
        ;; patch-shebanged.
@@ -2853,7 +2862,7 @@ many codecs and formats supported by libmediainfo.")
 (define-public livemedia-utils
   (package
     (name "livemedia-utils")
-    (version "2018.10.17")
+    (version "2019.03.06")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2861,13 +2870,7 @@ many codecs and formats supported by libmediainfo.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1s69ipvdc6ldscp0cr1zpsll8xc3qcagr95nl84x7b1rbg4xjs3w"))
-              (modules '((guix build utils)))
-              (snippet '(begin
-                          ;; As of glibc 2.26, <xlocale.h> no longer is.
-                          (substitute* "liveMedia/include/Locale.hh"
-                            (("xlocale\\.h") "locale.h"))
-                          #t))))
+                "1gasdl95yjabv811knkmy5laj21a54z1jdfq36jdj984k1nw5l0b"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -3303,7 +3306,7 @@ create smoother and stable videos.")
 (define-public libopenshot
   (package
     (name "libopenshot")
-    (version "0.2.2")
+    (version "0.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3312,7 +3315,7 @@ create smoother and stable videos.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1x4kv05pdq1pglb6y056aa7llc6iyibyhzg93k7zwj0q08cp5ixd"))
+                "0r1qmr8ar5n72603xkj9h065vbpznrqsq88kxxmn9n8djyyvk03k"))
               (modules '((guix build utils)))
               (snippet '(begin
                           ;; Allow overriding of the python installation dir
@@ -3321,9 +3324,7 @@ create smoother and stable videos.")
                              (string-append set " CACHE PATH "
                                             "\"Python bindings directory\")")))
                           (delete-file-recursively "thirdparty")
-                          #t))
-              (patches (search-patches "libopenshot-fixup-tests.patch"
-                                       "libopenshot-tests-with-system-libs.patch"))))
+                          #t))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -3367,7 +3368,7 @@ API.  It includes bindings for Python, Ruby, and other languages.")
 (define-public openshot
   (package
     (name "openshot")
-    (version "2.4.3")
+    (version "2.4.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3376,10 +3377,15 @@ API.  It includes bindings for Python, Ruby, and other languages.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qdw1mli4y9qhrnllnkaf6ydgw5vfvdb90chs4i679k0x0jyb9a2"))))
+                "0mg63v36h7l8kv2sgf6x8c1n3ygddkqqwlciz7ccxpbm4x1idqba"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "src/images/fonts") #t))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)
+       ("font-ubuntu" ,font-ubuntu)
        ("libopenshot" ,libopenshot)
        ("python" ,python)
        ("python-pyqt" ,python-pyqt)
@@ -3388,8 +3394,20 @@ API.  It includes bindings for Python, Ruby, and other languages.")
        ("qtsvg" ,qtsvg)))
     (arguments
      `(#:tests? #f                      ;no tests
+       #:modules ((guix build python-build-system)
+                  (guix build qt-utils)
+                  (guix build utils))
+       #:imported-modules (,@%python-build-system-modules
+                            (guix build qt-utils))
        #:phases (modify-phases %standard-phases
                   (delete 'build)       ;install phase does all the work
+                  (add-after 'unpack 'patch-font-location
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((font (assoc-ref inputs "font-ubuntu")))
+                        (substitute* "src/classes/app.py"
+                          (("info.IMAGES_PATH") (string-append "\"" font "\""))
+                          (("fonts") "share/fonts/truetype")))
+                      #t))
                   (add-before 'install 'set-tmp-home
                     (lambda _
                       ;; src/classes/info.py "needs" to create several
@@ -3397,12 +3415,10 @@ API.  It includes bindings for Python, Ruby, and other languages.")
                       (setenv "HOME" "/tmp")
                       #t))
                   (add-after 'install 'wrap-program
-                    (lambda* (#:key inputs outputs #:allow-other-keys)
-                      (wrap-program (string-append (assoc-ref outputs "out")
-                                                   "/bin/openshot-qt")
-                        `("QT_PLUGIN_PATH" prefix
-                          ,(list (string-append (assoc-ref inputs "qtsvg")
-                                                "/lib/qt5/plugins/")))))))))
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (wrap-qt-program out "openshot-qt"))
+                      #t)))))
     (home-page "https://openshot.org")
     (synopsis "Video editor")
     (description "OpenShot takes your videos, photos, and music files and
@@ -3413,11 +3429,11 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
       (origin
         (method url-fetch)
-        (uri (list ;; The canonical download site
+        (uri (list ;; The canonical download site.
                    (string-append "https://downloads.videolan.org/pub/videolan/"
                                   "dav1d/" version "/dav1d-" version ".tar.xz")
 
@@ -3425,7 +3441,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 "0cp7harg2gf61v35hyki2ddk9yr0xli9bkk3smxblabmq9rv5cs3"))))
+         (base32 "1llf4v486avj83d31670vdd5nshbq10qrx9vwrm1j078dh4ax4q0"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 56deb12c3d..dadffa3ab1 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -756,7 +756,7 @@ are detected, the user is notified.")))
              #t))
          (add-after 'unpack 'set-lua-paths
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((lua-version "5.2")
+             (let* ((lua-version "5.1")
                     (lua-cpath-spec
                      (lambda (prefix)
                        (let ((path (string-append prefix "/lib/lua/" lua-version)))
@@ -783,10 +783,10 @@ are detected, the user is notified.")))
        ("unibilium" ,unibilium)
        ("jemalloc" ,jemalloc)
        ("libiconv" ,libiconv)
-       ("lua" ,lua-5.2)
-       ("lua-lpeg" ,lua5.2-lpeg)
-       ("lua-bitop" ,lua5.2-bitop)
-       ("lua-libmpack" ,lua5.2-libmpack)))
+       ("lua" ,lua-5.1)
+       ("lua-lpeg" ,lua5.1-lpeg)
+       ("lua-bitop" ,lua5.1-bitop)
+       ("lua-libmpack" ,lua5.1-libmpack)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gettext-minimal)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 4bdbbb39b6..87839490b2 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -126,6 +126,8 @@
                                               (assoc-ref %outputs "out")
                                               "/libexec/samba-wrapper")
                                "--audio-drv-list=alsa,pa,sdl")
+       ;; Make build and test output verbose to facilitate investigation upon failure.
+       #:make-flags '("V=1")
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
@@ -177,10 +179,6 @@ exec smbd $@")))
                (chmod "samba-wrapper" #o755)
                (install-file "samba-wrapper" libexec))
              #t))
-         (add-before 'check 'make-gtester-verbose
-           (lambda _
-             ;; Make GTester verbose to facilitate investigation upon failure.
-             (setenv "V" "1") #t))
          (add-before 'check 'disable-test-qga
            (lambda _
              (substitute* "tests/Makefile.include"
@@ -1089,11 +1087,11 @@ virtual machines.")
     (home-page "https://github.com/projectatomic/bubblewrap")
     (synopsis "Unprivileged sandboxing tool")
     (description "Bubblewrap is aimed at running applications in a sandbox,
-where it has restricted access to parts of the operating system or user data
-such as the home directory.  Bubblewrap always creates a new mount namespace,
-and the user can specify exactly what parts of the filesystem should be visible
-in the sandbox.  Any such directories specified is mounted nodev by default,
-and can be made readonly.")
+restricting their access to parts of the operating system or user data such as
+the home directory.  Bubblewrap always creates a new mount namespace, and the
+user can specify exactly what parts of the file system should be made visible
+in the sandbox.  These directories are mounted with the @code{nodev} option
+by default and can be made read-only.")
     (license license:lgpl2.0+)))
 
 (define-public bochs
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 6155c008fa..0c8e8e85b8 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2013, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -42,9 +42,9 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -456,14 +456,14 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard
   (package
     (name "wireguard")
-    (version "0.0.20190227")
+    (version "0.0.20190406")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/WireGuard/snapshot/"
                                   "WireGuard-" version ".tar.xz"))
               (sha256
                (base32
-                "0ybzycpjjidyiz88kkh67abvp3y30f34252dwpgf3ncj4vyjdnzw"))))
+                "0ns1s31mfkj7nmapsnx126rj7xlydv7jv8infx5fg58byynz61ig"))))
     (build-system gnu-build-system)
     (outputs '("out" ; The WireGuard userspace tools
                "kernel-patch")) ; A patch to build Linux with WireGuard support
@@ -522,23 +522,23 @@ WireGuard support.")
 (define-public xl2tpd
   (package
     (name "xl2tpd")
-    (version "1.3.13")
+    (version "1.3.14")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/xelerance/xl2tpd")
                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1nzkmhi9arwd4smhr07l0sssx46w48z0cblv7xcz25wg4hw86mcd"))
-              (file-name (string-append "xl2tpd-" version "-checkout"))))
+                "1c2ahxz2zmmxwmk951d2qhijgz67zhwa1hn0r59fgz0y14w22myi"))))
     (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
+                  (delete 'configure))  ; no configure script
+       #:tests? #f))                    ; no tests provided
     (inputs `(("libpcap" ,libpcap)))
     (home-page "https://www.xelerance.com/software/xl2tpd/")
     (synopsis "Layer 2 Tunnelling Protocol Daemon (RFC 2661)")
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 0c7e22bb5e..60a9661040 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -41,37 +41,33 @@
   #:use-module (gnu packages xorg))
 
 (define-public spirv-headers
-  ;; Keep updated in accordance with
-  ;; https://github.com/google/shaderc/blob/known-good/known_good.json
-  (let ((commit "8bea0a266ac9b718aa0818d9e3a47c0b77c2cb23")
-        (revision "4"))
-    (package
-      (name "spirv-headers")
-      (version (string-append "0.0-" revision "." (string-take commit 9)))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/KhronosGroup/SPIRV-Headers")
-               (commit commit)))
-         (sha256
-          (base32
-           "01qyjghjz42hmyw9111zz20a1paf37ps39p4xbj8abjba65d8lqx"))
-         (file-name (string-append name "-" version "-checkout"))))
-      (build-system cmake-build-system)
-      (arguments
-       `(#:tests? #f ;; No tests
-         #:phases (modify-phases %standard-phases
-                    (replace 'install
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        (invoke "cmake" "-E" "copy_directory"
-                                        "../source/include/spirv"
-                                        (string-append (assoc-ref outputs "out")
-                                                       "/include/spirv")))))))
-      (home-page "https://github.com/KhronosGroup/SPIRV-Headers")
-      (synopsis "Machine-readable files from the SPIR-V Registry")
-      (description
-       "SPIRV-Headers is a repository containing machine-readable files from
+  (package
+    (name "spirv-headers")
+    (version "1.3.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KhronosGroup/SPIRV-Headers")
+             (commit version)))
+       (sha256
+        (base32
+         "0m56smanfcczjfif4yfcqhjj4d4sc088kwg6dgia8fwdsjavdm4d"))
+      (file-name (string-append name "-" version "-checkout"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;; No tests
+       #:phases (modify-phases %standard-phases
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (invoke "cmake" "-E" "copy_directory"
+                                      "../source/include/spirv"
+                                      (string-append (assoc-ref outputs "out")
+                                                     "/include/spirv")))))))
+    (home-page "https://github.com/KhronosGroup/SPIRV-Headers")
+    (synopsis "Machine-readable files from the SPIR-V Registry")
+    (description
+     "SPIRV-Headers is a repository containing machine-readable files from
 the SPIR-V Registry.  This includes:
 @itemize
 @item Header files for various languages.
@@ -79,9 +75,9 @@ the SPIR-V Registry.  This includes:
 and for the GLSL.std.450 extended instruction set.
 @item The XML registry file.
 @end itemize\n")
-      (license (license:x11-style
-                (string-append "https://github.com/KhronosGroup/SPIRV-Headers/blob/"
-                               commit "/LICENSE"))))))
+    (license (license:x11-style
+              (string-append "https://github.com/KhronosGroup/SPIRV-Headers/blob/"
+                             version "/LICENSE")))))
 
 (define-public spirv-tools
   (package
@@ -124,7 +120,7 @@ parser,disassembler, validator, and optimizer for SPIR-V.")
 (define-public glslang
   (package
     (name "glslang")
-    (version "7.11.3113")
+    (version "7.11.3188")
     (source
      (origin
        (method git-fetch)
@@ -133,7 +129,7 @@ parser,disassembler, validator, and optimizer for SPIR-V.")
              (commit version)))
        (sha256
         (base32
-         "1kzv2b4q1fddxd7c0hc754nd6rw6y9vijb9fsi13xzzq9dficgb6"))
+         "04y4dd1cqdkd4qffmhgmg3agf9j07ii2w38vpp4jw53ir818bqdq"))
        (file-name (string-append name "-" version "-checkout"))))
     (build-system cmake-build-system)
     (arguments
@@ -163,7 +159,7 @@ interpretation of the specifications for these languages.")
 (define-public vulkan-headers
   (package
     (name "vulkan-headers")
-    (version "1.1.103")
+    (version "1.1.106")
     (source
      (origin
        (method git-fetch)
@@ -173,7 +169,7 @@ interpretation of the specifications for these languages.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1q3c79rf3mma0vqmwnxwps588pnyzap4nn49hk41m39k79vniaz8"))))
+         "0idw7q715ikj575qmspvgq2gzc6c1sj581b8z3xnv6wz9qbzrmsd"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; No tests.
@@ -187,7 +183,7 @@ interpretation of the specifications for these languages.")
 (define-public vulkan-loader
   (package
     (name "vulkan-loader")
-    (version "1.1.102")
+    (version (package-version vulkan-headers))
     (source
      (origin
        (method git-fetch)
@@ -197,7 +193,7 @@ interpretation of the specifications for these languages.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ccpklv251jcz2lxvd5ix5i3cg4wb7qq5xi6cwvniy1rw52z7h00"))))
+         "1ypjd2gfxdwldnqrrqy6bnjln5mml62a9k5pfi451srcxznijjai"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ;FIXME: 23/39 tests fail.  Try "tests/run_all_tests.sh".
@@ -238,7 +234,7 @@ and the ICD.")
 (define-public vulkan-tools
   (package
     (name "vulkan-tools")
-    (version "1.1.102")
+    (version (package-version vulkan-headers))
     (source
      (origin
        (method git-fetch)
@@ -248,7 +244,7 @@ and the ICD.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0a8vmgyn7an21bb9vxba9laf9ghvk905vn7rm8frdl8qr2b7vyw3"))))
+         "0swqyk16mbkivyk79dpqbhpw05a7yrakqynywznr5zgqbc0z4gj8"))))
     (build-system cmake-build-system)
     (inputs
      `(("glslang" ,glslang)
diff --git a/gnu/packages/w3m.scm b/gnu/packages/w3m.scm
index b88bbd39bb..1ec07675ab 100644
--- a/gnu/packages/w3m.scm
+++ b/gnu/packages/w3m.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -76,8 +76,8 @@
     (home-page "http://w3m.sourceforge.net/")
     (synopsis "Text-mode web browser")
     (description
-     "w3m is a text-based web browser as well as a pager like 'more' or
-'less'.  With w3m you can browse web pages through a terminal emulator
+     "w3m is a text-based web browser as well as a pager like @code{more} or
+@code{less}.  With w3m you can browse web pages through a terminal emulator
 window.  Moreover, w3m can be used as a text formatting tool which
 typesets HTML into plain text.")
     (license (x11-style "file://doc/README"
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 5c0e14826b..6bbd903578 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -93,14 +93,14 @@ older or slower computers and embedded systems.")
 (define-public links
   (package
     (name "links")
-    (version "2.18")
+    (version "2.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://links.twibright.com/download/"
-                                  name "-" version ".tar.bz2"))
+                                  "links-" version ".tar.bz2"))
                 (sha256
                (base32
-                "0mwhh61klicn2vwk39nc7y4cw4mygzdi2nljn4r0gjbw6jmw3337"))))
+                "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 1749ad0b71..7c3744cc5b 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com>
@@ -10,7 +10,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
@@ -30,6 +30,7 @@
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -85,7 +86,6 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnu-doc)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -102,6 +102,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages markup)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages openstack)
   #:use-module (gnu packages base)
   #:use-module (gnu packages package-management)
@@ -125,14 +126,14 @@
 (define-public httpd
   (package
     (name "httpd")
-    (version "2.4.38")
+    (version "2.4.39")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/httpd/httpd-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0jiriyyf3pm6axf4mrz6c2z08yhs21hb4d23viq87jclm5bmiikx"))))
+               "18ngvsjq65qxk3biggnkhkq8jlll9dsg9n3csra9p99sfw2rvjml"))))
     (build-system gnu-build-system)
     (native-inputs `(("pcre" ,pcre "bin")))       ;for 'pcre-config'
     (inputs `(("apr" ,apr)
@@ -198,14 +199,14 @@ Interface} specification.")
     ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
     ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
     ;; Consider updating the nginx-documentation package together with this one.
-    (version "1.15.9")
+    (version "1.15.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0hxfsz1117r91b9fb5hjddyrf1czvb36lh1z7zalqqdskfcbmkz4"))))
+                "1giavdph0jqhywdkj4650s5qhz6qfd6nrv74k9q005yy2ym90nrx"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -2900,7 +2901,7 @@ fields in the request.")
     (home-page "https://metacpan.org/release/HTTP-Parser")
     (synopsis "Parse HTTP/1.1 requests")
     (description "This is an HTTP request parser.  It takes chunks of text as
-received and returns a 'hint' as to what is required, or returns the
+received and returns a @code{hint} as to what is required, or returns the
 HTTP::Request when a complete request has been read.  HTTP/1.1 chunking is
 supported.")
     (license l:perl-license)))
@@ -3009,6 +3010,33 @@ simple requests without the overhead of a large framework like LWP::UserAgent.
 It supports proxies and redirection.  It also correctly resumes after EINTR.")
     (license l:perl-license)))
 
+(define-public perl-http-tinyish
+  (package
+    (name "perl-http-tinyish")
+    (version "0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-which" ,perl-file-which)
+       ("perl-ipc-run3" ,perl-ipc-run3)))
+    (home-page "https://metacpan.org/release/HTTP-Tinyish")
+    (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
+    (description
+     "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
+@code{HTTP::Tiny}, curl and wget.
+
+It provides an API compatible to HTTP::Tiny.")
+    (license l:perl-license)))
+
 (define-public perl-io-html
   (package
     (name "perl-io-html")
@@ -3374,6 +3402,35 @@ application frameworks.  Plack is like Ruby's Rack or Python's Paste for
 WSGI.")
     (license l:perl-license)))
 
+(define-public perl-plack-middleware-deflater
+  (package
+    (name "perl-plack-middleware-deflater")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/K/KA/KAZEBURO/"
+             "Plack-Middleware-Deflater-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-install" ,perl-module-install)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
+    (synopsis "Compress response body with Gzip or Deflate")
+    (description
+     "Plack::Middleware::Deflater is a middleware to encode your response body
+in gzip or deflate, based on \"Accept-Encoding\" HTTP request header.  It
+would save the bandwidth a little bit but should increase the Plack server
+load, so ideally you should handle this on the frontend reverse proxy
+servers.")
+    (license l:perl-license)))
+
 (define-public perl-plack-middleware-fixmissingbodyinredirect
   (package
     (name "perl-plack-middleware-fixmissingbodyinredirect")
@@ -3467,7 +3524,7 @@ required.")
     (synopsis "Supports app to run as a reverse proxy backend")
     (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
 which are changed by reverse-proxy.  You can specify the reverse proxy address
-and stop fake requests using 'enable_if' directive in your app.psgi.")
+and stop fake requests using @code{enable_if} directive in your app.psgi.")
     (license l:perl-license)))
 
 (define-public perl-plack-test-externalserver
@@ -3477,7 +3534,7 @@ and stop fake requests using 'enable_if' directive in your app.psgi.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Plack-Test-ExternalServer-" version ".tar.gz"))
        (sha256
         (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
@@ -4608,14 +4665,15 @@ handling many of the web standards in use today.")
 (define-public surfraw
   (package
     (name "surfraw")
-    (version "2.2.9")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://surfraw.alioth.debian.org/dist/"
-                                  name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1fy4ph5h9kp0jzj1m6pfylxnnmgdk0mmdppw76z9jhna4jndk5xa"))))
+    (version "2.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://gitlab.com/surfraw/Surfraw/uploads/"
+                           "2de827b2786ef2fe43b6f07913ca7b7f/"
+                           "surfraw-" version ".tar.gz"))
+       (sha256
+        (base32 "099nbif0x5cbcf18snc58nx1a3q7z0v9br9p2jiq9pcc7ic2015d"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -4753,14 +4811,14 @@ tools like SSH (Secure Shell) to reach the outside world.")
 (define-public stunnel
   (package
   (name "stunnel")
-  (version "5.50")
+  (version "5.53")
   (source
     (origin
       (method url-fetch)
       (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
                           version ".tar.gz"))
       (sha256
-       (base32 "0j811iakljjxw39qchmqf235jdkwixb0i4xxjyi55f08558947cm"))))
+       (base32 "119560alb8k0qz2zkjb2i80ikmn76fa6dg681fvrw9hlxsb9hhw0"))))
   (build-system gnu-build-system)
   (native-inputs
    ;; For tests.
@@ -5096,7 +5154,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
 (define-public http-parser
   (package
     (name "http-parser")
-    (version "2.9.0")
+    (version "2.9.2")
     (home-page "https://github.com/nodejs/http-parser")
     (source (origin
               (method git-fetch)
@@ -5105,7 +5163,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1qa3rh9x4as2fc2p0y2hah83iqs7jr5106a8anv317359dgf3ssj"))))
+                "1qs6x3n2nrcj1wiik5pg5i16inykf7rcfdfdy7rwyzf40pvdl3c2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -5125,6 +5183,36 @@ Depending on your architecture, it only requires about 40 bytes of data per
 message stream (in a web server that is per connection).")
     (license l:expat)))
 
+(define-public python-httpretty
+  (package
+    (name "python-httpretty")
+    (version "0.9.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "httpretty" version))
+       (sha256
+        (base32 "1p1rb4mpngh0632xrmdfhvc8yink519yfkqz97d2ww3y0x2jvd81"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-httplib2" ,python-httplib2)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-nose-randomly" ,python-nose-randomly)
+       ("python-rednose" ,python-rednose)
+       ("python-requests" ,python-requests)
+       ("python-sure" ,python-sure)
+       ("python-tornado" ,python-tornado)
+       ("python-urllib3" ,python-urllib3)))
+    (home-page "https://httpretty.readthedocs.io")
+    (synopsis "HTTP client mock for Python")
+    (description "@code{httpretty} is a helper for faking web requests,
+inspired by Ruby's @code{fakeweb}.")
+    (license l:expat)))
+
 (define-public python2-httpretty
   (package
     (name "python2-httpretty")
@@ -5347,8 +5435,7 @@ Instagram and YouTube.")
              (url "https://github.com/linkchecker/linkchecker")
              (commit (string-append "v" version))))
        (patches
-        (search-patches
-         "linkchecker-mark-more-tests-that-require-the-network.patch"))
+        (search-patches "linkchecker-tests-require-network.patch"))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -6420,9 +6507,38 @@ compressed JSON header blocks.
        `(("guile" ,guile-2.2)
          ("guile-commonmark" ,guile-commonmark)
          ("guile-json" ,guile-json)))
-    (home-page "https://github.com/UMCUGenetics/hpcguix-web")
+      (home-page "https://github.com/UMCUGenetics/hpcguix-web")
       (synopsis "Web interface for cluster deployments of Guix")
       (description "Hpcguix-web provides a web interface to the list of packages
 provided by Guix.  The list of packages is searchable and provides
 instructions on how to use Guix in a shared HPC environment.")
-    (license l:agpl3+))))
+      (license l:agpl3+))))
+
+(define-public httrack
+  (package
+    (name "httrack")
+    (version "3.49.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://mirror.httrack.com/historical/"
+                                  "httrack-" version ".tar.gz"))
+              (sha256
+               (base32
+                "09a0gm67nml86qby1k1gh7rdxamnrnzwr6l9r5iiq94favjs0xrl"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libressl" ,libressl)
+       ("zlib" ,zlib)))
+    (home-page "https://www.httrack.com/")
+    (synopsis "Easy-to-use offline browser utility")
+    (description "HTTrack allows you to download a World Wide Web site from
+the Internet to a local directory, building recursively all directories,
+getting HTML, images, and other files from the server to your computer.
+
+HTTrack arranges the original site's relative link-structure.  Simply open
+a page of the ``mirrored'' website in your browser, and you can browse the
+site from link to link, as if you were viewing it online.  HTTrack can also
+update an existing mirrored site, and resume interrupted downloads.
+
+HTTrack is fully configurable, and has an integrated help system.")
+    (license l:gpl3+)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index c05366fb5b..ceff9c18b8 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -59,14 +59,16 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.24.0")
+    (version "2.24.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
+
+              (patches (search-patches "webkitgtk-sse2.patch"))
               (sha256
                (base32
-                "01s446lmjk7y8il4snjm32vpxws2rp4hmxrwm2swx0p47x8d2jif"))))
+                "0v9riwrmwi9wxbb8hlvcbyyxa9zxhcdk6s1xcspalk6asam8xjsk"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (arguments
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 128041318b..4f8671ad6e 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -93,6 +93,13 @@ in downloaded documents to relative links.")
        (modify-phases %standard-phases
          (delete 'configure)
          (delete 'build)
+         (add-before 'install 'use-inputs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((wget (assoc-ref inputs "wget")))
+               (substitute* "wgetpaste"
+                 (("(LC_ALL=C) wget" _ prefix)
+                  (format "~a ~a/bin/wget" prefix wget)))
+               #t)))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -100,7 +107,9 @@ in downloaded documents to relative links.")
                     (zsh (string-append out "/share/zsh/site-functions")))
                (install-file "wgetpaste" bin)
                (install-file "_wgetpaste" zsh)))))
-       #:tests? #f)) ; no test target
+       #:tests? #f))                    ; no test target
+    (inputs
+     `(("wget" ,wget)))
     (home-page "http://wgetpaste.zlin.dk/")
     (synopsis "Script that automates pasting to a number of pastebin services")
     (description
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index c7a57f5ec4..f0843edc99 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.4")
+    (version "4.7")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +320,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1pk0p37p2pbdsikj6987pg70f9a5n2ki8vnhcj4ngh1rhg6iqgyw"))))
+         "1sgyq57dyzchwnvkgx96bcx5rv821s0vidzdyz7x5711j7xmiv70"))))
     (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
-                "1c072a2d56x43alv9pvahasfrdb8k0y0f540xpzjjhqb9g7hjfnv"))))
+                "1c5swx6jj0hz9w2jgyl30pdjcq9n62qp1rmqyq1d4q2a6n291jiv"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("faudio" ,faudio)
               ("ffmpeg" ,ffmpeg)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 0a05ff4ae4..ddc6905c82 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -8,17 +8,18 @@
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; 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, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; 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>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -181,7 +182,19 @@ commands would.")
        (list "--disable-builddir")
 
        ;; The test suite requires the unpackaged Xephyr X server.
-       #:tests? #f))
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'patch-session-file
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (i3 (string-append out "/bin/i3"))
+                    (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
+               (substitute* (string-append out "/share/xsessions/i3.desktop")
+                 (("Exec=i3") (string-append "Exec=" i3)))
+               (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
+                 (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
+               #t))))))
     (inputs
      `(("libxcb" ,libxcb)
        ("xcb-util" ,xcb-util)
@@ -220,6 +233,36 @@ i3 uses a plain-text configuration file, and can be extended and controlled from
 many programming languages.")
     (license license:bsd-3)))
 
+(define-public i3lock
+  (package
+    (name "i3lock")
+    (version "2.11.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://i3wm.org/i3lock/i3lock-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "015dn534m7cxjvqdncpvaq9p8b2r4w5hp1yanbdy2abmhbcc7a7j"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("libev" ,libev)
+       ("linux-pam" ,linux-pam)
+       ("libxcb" ,libxcb)
+       ("libxkbcommon" ,libxkbcommon)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-image" ,xcb-util-image)
+       ("xcb-util-xrm" ,xcb-util-xrm)))
+    (home-page "https://i3wm.org/i3lock/")
+    (synopsis "Lightweight screen locker")
+    (description
+     "i3lock is a simple X11 screen locker developed alongside the i3 project.
+Despite the name it should work with any X11 window manager.")
+    (license license:bsd-3)))
+
 (define-public i3blocks
   (let ((commit "37f23805ff886639163fbef8aedba71c8071eff8")
         (revision "1"))
@@ -536,7 +579,7 @@ tiled on several screens.")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://hackage/package/xmobar/"
-                                  name "-" version ".tar.gz"))
+                                  "xmobar-" version ".tar.gz"))
               (sha256
                (base32
                 "1xh87asg8y35srvp7d3gyyy4bkxsw122liihxgzgm8pqv2z3h4zd"))))
@@ -793,6 +836,13 @@ experience.")
              ;; There aren't any tests, so just make sure the binary
              ;; gets built and can be run successfully.
              (invoke "../build/awesome" "-v")))
+         (add-after 'install 'patch-session-file
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (awesome (string-append out "/bin/awesome")))
+               (substitute* (string-append out "/share/xsessions/awesome.desktop")
+                 (("Exec=awesome") (string-append "Exec=" awesome)))
+               #t)))
          (add-after 'install 'wrap
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((awesome (assoc-ref outputs "out"))
@@ -811,7 +861,7 @@ experience.")
      "Awesome has been designed as a framework window manager.  It is fast, small,
 dynamic and extensible using the Lua programming language.")
     (license license:gpl2+)
-    (home-page "https://awesome.naquadah.org/")))
+    (home-page "https://awesomewm.org/")))
 
 (define-public menumaker
   (package
@@ -1048,14 +1098,14 @@ its size
 (define-public polybar
   (package
     (name "polybar")
-    (version "3.3.0")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jaagr/polybar/releases/"
-                           "download/" version "/polybar.tar"))
+                           "download/" version "/polybar-" version ".tar"))
        (sha256
-        (base32 "0sjh3xmf11g09spi88zj7xsc3a3vv78kixab6n5i7436py7xwzb4"))
+        (base32 "0758na059vpgnsrcdrxmh9wsahs80wnmizb9g7bmixlrkxr2m65h"))
        (file-name (string-append name "-" version ".tar"))))
     (build-system cmake-build-system)
     (arguments
@@ -1160,6 +1210,7 @@ modules for building a Wayland compositor.")
               ("elogind" ,elogind)
               ("gdk-pixbuf" ,gdk-pixbuf)
               ("json-c" ,json-c)
+              ("libevdev" ,libevdev)
               ("libinput" ,libinput)
               ("libxkbcommon" ,libxkbcommon)
               ("pango" ,pango)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index c0333fbc82..03b27f35a5 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
@@ -402,13 +402,11 @@ rasterisation.")
                 "-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")))))
-             '())))
+
+       #:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "meson" "test" "--timeout-multiplier" "5"))))))
     (inputs
      `(("libpciaccess" ,libpciaccess)))
     (native-inputs
@@ -576,7 +574,7 @@ selection's dimensions to stdout.")
 (define-public maim
   (package
     (name "maim")
-    (version "5.5.2")
+    (version "5.5.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -585,7 +583,7 @@ selection's dimensions to stdout.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14mfxdm39kc5jk8wysrzx05ag2g4sk9l24i8m5pzqn8j611150v3"))))
+                "1kbxsz8whfxl5blwsvpva2q95zwy72argwhi1cfqh5lrhzq5zrpp"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))            ; no "check" target
@@ -959,7 +957,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "0.32")
+    (version "0.33")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -967,7 +965,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "102kz0q7i0bjsnl6yy83vcj2rpir12rs2d4xr0wvhw84rs5sp7bb"))))
+                "1wnv34y7m9l6avlvwqvfrnksfnsz1lbgb412dn6s7x1h3wvs7y4l"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 6c253849f6..cc79fb4851 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -7,7 +7,8 @@
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
-;;; 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.
 ;;;
@@ -28,16 +29,21 @@
   #:use-module ((guix licenses) #:hide (freetype))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (gnu artwork)
   #:use-module (gnu packages)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages inkscape)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages web)
@@ -406,6 +412,39 @@ to an auto mixer tool like pavucontrol.  It can optionally handle multimedia
 keys for controlling the audio volume.")
     (license gpl2+)))
 
+(define-public xfce4-whiskermenu-plugin
+  (package
+    (name "xfce4-whiskermenu-plugin")
+    (version "2.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/src/panel-plugins/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1cnas2x7xi53v6ylq44040narhzd828dc0ysz8yk3qn2mmvp5yr2"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("xfce4-panel" ,xfce4-panel)
+       ("garcon" ,garcon)
+       ("exo" ,exo)
+       ("gtk+" ,gtk+-2)))
+    (arguments
+      `(#:tests? #f)) ; no tests
+    (home-page "https://goodies.xfce.org/projects/panel-plugins/xfce4-whiskermenu-plugin")
+    (synopsis "Application menu panel plugin for Xfce")
+    (description
+     "This package provides an alternative to the default application menu
+panel plugin for Xfce4.  It uses separate sections to display categories and
+applications, and includes a search bar to search for applications.")
+    ;; The main plugin code is covered by gpl2, but files in panel-plugin directory
+    ;; are covered by gpl2+.  The SVG icon is covered by gpl2.
+    (license (list gpl2 gpl2+))))
+
 (define-public xfce4-xkb-plugin
   (package
     (name "xfce4-xkb-plugin")
@@ -657,11 +696,40 @@ on the screen.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1jzi851arljq5lza9inyq4ss513l62lbzbfm64a7x4320m8kb2h9"))))
+                "1jzi851arljq5lza9inyq4ss513l62lbzbfm64a7x4320m8kb2h9"))
+              (modules '((guix build utils)))
+              (snippet
+               #~(begin
+                   (copy-file #$(file-append %artwork-repository "/logo/Guix.svg")
+                              "backgrounds/guix-logo.svg")
+                   #t))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'prepare-background-image
+                    (lambda _
+                      ;; Stick a Guix logo in the background image.  XXX: It
+                      ;; has to go to the center because the image might be
+                      ;; truncated on the edges.  :-/
+                      (invoke "inkscape" "--export-dpi=120"
+                              "--export-png=/tmp/guix.png"
+                              "backgrounds/guix-logo.svg")
+                      (for-each (lambda (image)
+                                  (invoke "composite" "-gravity" "center"
+                                          "/tmp/guix.png" image
+                                          "/tmp/final.jpg")
+                                  (copy-file "/tmp/final.jpg" image))
+                                '(;; "backgrounds/xfce-blue.jpg"
+                                  "backgrounds/xfce-teal.jpg"))
+                      #t)))
+
+       #:disallowed-references (,inkscape ,imagemagick)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)))
+       ("intltool" ,intltool)
+
+       ("inkscape" ,inkscape)
+       ("imagemagick" ,imagemagick)))
     (inputs
      `(("exo" ,exo)
        ("garcon" ,garcon)
@@ -798,15 +866,15 @@ inhibit interface which allows applications to prevent automatic sleep.")
 (define-public ristretto
   (package
     (name "ristretto")
-    (version "0.8.3")
+    (version "0.8.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/apps/ristretto/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.bz2"))
+                                  "ristretto-" version ".tar.bz2"))
               (sha256
                (base32
-                "0r96r8r1qslr6cqvwldm99ha563adkw9v2zvaznxkpqn11v1374c"))))
+                "18nf01djwnbjc91bdlv3p0h6pwcq1kfnjgp6yaxhxv4kdi9f82rs"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 43b0d2723a..15502bd0e9 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
@@ -242,7 +242,8 @@ It currently supports:
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0gymm2j3276kr9nz6vmgfwsdfrq6c449n40a0mzz8h6wc7nw7kwi"))))
+              "0gymm2j3276kr9nz6vmgfwsdfrq6c449n40a0mzz8h6wc7nw7kwi"))
+            (patches (search-patches "flac-CVE-2017-6888.patch"))))
    (build-system gnu-build-system)
    (arguments
     `(#:parallel-tests? #f))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index cfc17e752c..71aa7116c8 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -44,9 +44,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages java)
-  #:use-module (gnu packages gnuzilla)
-  #:use-module (gnu packages haskell)
-  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages python)
@@ -61,7 +59,6 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
-  #:use-module (guix build-system haskell)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pkg-config))
 
@@ -938,14 +935,14 @@ XSL-T processor.  It also performs any necessary post-processing.")
 (define-public xmlsec
   (package
     (name "xmlsec")
-    (version "1.2.27")
+    (version "1.2.28")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.aleksey.com/xmlsec/download/"
                                   "xmlsec1-" version ".tar.gz"))
               (sha256
                (base32
-                "1dlf263mvxj9n4lnhhjawc2hv45agrwjf8kxk7k8h9g9v2x5dmwp"))))
+                "1m12caglhyx08g8lh2sl3nkldlpryzdx2d572q73y3m33s0w9vhk"))))
     (build-system gnu-build-system)
     (propagated-inputs                  ; according to xmlsec1.pc
      `(("libxml2" ,libxml2)
@@ -1996,111 +1993,6 @@ outputting XML data from Java code.")
 and back again.")
     (license license:bsd-3)))
 
-(define-public ghc-hxt-charproperties
-  (package
-    (name "ghc-hxt-charproperties")
-    (version "9.2.0.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/"
-                           "hxt-charproperties/hxt-charproperties-"
-                           version ".tar.gz"))
-       (sha256
-        (base32
-         "1mml8wglvagqq891rchgli6r8rnkwrqhgsxfl6kb5403pzb18rp4"))))
-    (build-system haskell-build-system)
-    (home-page "https://github.com/UweSchmidt/hxt")
-    (synopsis "Character properties and classes for XML and Unicode")
-    (description
-     "The modules provided by this package contain predicates for Unicode
-blocks and char properties and character predicates defined by XML.  The
-supported Unicode version is 7.0.0")
-    (license license:expat)))
-
-(define-public ghc-hxt-unicode
-  (package
-    (name "ghc-hxt-unicode")
-    (version "9.0.2.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://hackage.haskell.org/package/hxt-unicode/hxt-unicode-"
-             version
-             ".tar.gz"))
-       (sha256
-        (base32
-         "0rj48cy8z4fl3zpg5bpa458kqr83adav6jnqv4i71dclpprj6n3v"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties)))
-    (home-page
-     "http://www.fh-wedel.de/~si/HXmlToolbox/index.html https://github.com/UweSchmidt/hxt")
-    (synopsis
-     "Unicode en-/decoding functions for utf8, iso-latin-* and other encodings")
-    (description
-     "This package provides Unicode encoding and decoding functions for
-encodings used in the Haskell XML Toolbox.  ISO Latin 1-16, utf8, utf16, ASCII
-are supported. Decoding is done with lazy functions, errors may be detected or
-ignored.")
-    (license license:expat)))
-
-(define-public ghc-hxt-regex-xmlschema
-  (package
-    (name "ghc-hxt-regex-xmlschema")
-    (version "9.2.0.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://hackage.haskell.org/package/"
-                           "hxt-regex-xmlschema/hxt-regex-xmlschema-"
-                           version ".tar.gz"))
-       (sha256
-        (base32
-         "1c4jr0439f5yc05h7iz53fa47g6l2wrvqp6gvwf01mlqajk3nx7l"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties)
-       ("ghc-parsec" ,ghc-parsec)
-       ("ghc-text" ,ghc-text)
-       ("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://www.haskell.org/haskellwiki/Regular_expressions_for_XML_Schema")
-    (synopsis "Regular expression library for W3C XML Schema regular expressions")
-    (description
-     "This library supports full W3C XML Schema regular expressions inclusive
-all Unicode character sets and blocks.  It is implemented by the technique of
-derivations of regular expressions.")
-    (license license:expat)))
-
-(define-public ghc-hxt
-  (package
-    (name "ghc-hxt")
-    (version "9.3.1.16")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://hackage.haskell.org/package/hxt/hxt-"
-             version
-             ".tar.gz"))
-       (sha256
-        (base32
-         "1qq3ykgn355rx242xjcbqqksgvwr6k2fdj5phw4iv28qqxff6m8d"))))
-    (build-system haskell-build-system)
-    (inputs
-     `(("ghc-parsec" ,ghc-parsec)
-       ("ghc-hxt-charproperties" ,ghc-hxt-charproperties)
-       ("ghc-hxt-unicode" ,ghc-hxt-unicode)
-       ("ghc-hxt-regex-xmlschema" ,ghc-hxt-regex-xmlschema)
-       ("ghc-network-uri" ,ghc-network-uri)))
-    (home-page "https://github.com/UweSchmidt/hxt")
-    (synopsis "Collection of tools for processing XML with Haskell")
-    (description
-     "The Haskell XML Toolbox bases on the ideas of HaXml and HXML, but
-introduces a more general approach for processing XML with Haskell.")
-    (license license:expat)))
-
 (define-public xmlrpc-c
   (package
     (name "xmlrpc-c")
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 994679089f..8fdb6c368c 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; 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, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -548,7 +548,7 @@ Resources file.")
     (synopsis "Xorg font aliases")
     (description
      "This package provides some common aliases for Xorg fonts.
-For example: '6x10', '9x15bold', etc.")
+For example: @code{6x10}, @code{9x15bold}, etc.")
     (license license:x11)))
 
 
@@ -1600,8 +1600,8 @@ input from UTF-8 into the locale's encoding.")
     (home-page "https://www.x.org/wiki/")
     (synopsis "Create an index of scalable font files for X server")
     (description
-     "MkFontScale creates the 'fonts.scale' and 'fonts.dir' index files used
-by the legacy X11 font system.")
+     "MkFontScale creates the @code{fonts.scale} and @code{fonts.dir} index
+files used by the legacy X11 font system.")
     (license license:x11)))
 
 
@@ -2220,7 +2220,7 @@ X11 Inter-Client Communication Conventions Manual (ICCCM).")
     (synopsis "Default Xorg cursors")
     (description
      "This package provides a default set of cursor themes for the Xorg
-X server: 'handhelds', 'redglass' and 'whiteglass'.")
+X server: @code{handhelds}, @code{redglass} and @code{whiteglass}.")
     (license license:x11)))
 
 
@@ -2927,8 +2927,8 @@ X server.")
 
 
 (define-public xf86-video-intel
-  (let ((commit "33ee0c3b21ea279e08d0863fcb2e874f0974b00e")
-        (revision "12"))
+  (let ((commit "6afed33b2d673d88674f0c76efe500ae414e8e1b")
+        (revision "13"))
     (package
       (name "xf86-video-intel")
       (version (git-version "2.99.917" revision commit))
@@ -2941,7 +2941,7 @@ X server.")
                (commit commit)))
          (sha256
           (base32
-           "1ryjaj52nd2fbrjf1id5fr5vndzvv287rggbj3lzhbwzxv52r0gj"))
+           "1s3fqlqzmql7s15m7qy21vai93n6q9f0ccpv0p353rwfx16mmf35"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (inputs `(("mesa" ,mesa)
@@ -3876,7 +3876,7 @@ extension to the X11 protocol.  It includes:
      "xkeyboard-config provides a database for X Keyboard (XKB) Extension.
 There are five components that define a complete keyboard mapping:
 symbols, geometry, keycodes, compat, and types; these five components
-can be combined together using the 'rules' component of this database.")
+can be combined together using the @code{rules} component of this database.")
     (license license:x11)))
 
 
@@ -4758,7 +4758,7 @@ protocol and arbitrary X extension protocol.")
     (home-page "https://www.x.org/wiki/")
     (synopsis "Create an index of X font files in a directory")
     (description
-     "MkFontDir creates the 'fonts.dir' files needed by the legacy X
+     "MkFontDir creates the @code{fonts.dir} files needed by the legacy X
 server core font system.  The current implementation is a simple wrapper
 script around the mkfontscale program.")
     (license license:x11)))
@@ -5683,7 +5683,7 @@ The XCB util-wm module provides the following libraries:
     (description
      "The xinit program is used to start the X Window System server and a
 first client program on systems that are not using a display manager such as
-xdm.  This package also provides the 'startx' command, which provides a
+xdm.  This package also provides the @code{startx} command, which provides a
 user-friendly mechanism to start the X server.")
     (license license:x11)))
 
@@ -5973,18 +5973,17 @@ Conventions Manual) and some of the @dfn{EWMH}
 (define-public xcompmgr
   (package
     (name "xcompmgr")
-    (version "1.1.7")
+    (version "1.1.8")
     (source
      (origin
-       ;; there's no current tarball
+       ;; There's no current tarball.
        (method git-fetch)
        (uri (git-reference
              (url "https://anongit.freedesktop.org/git/xorg/app/xcompmgr.git")
-             (commit (string-append name "-" version))))
+             (commit (string-append "xcompmgr-" version))))
        (sha256
-        (base32
-         "04swkrm3gk689wrjc418bd3n25w8r20kg1xfbn5j8d7mx1r5gf16"))
-       (file-name (string-append name "-" version))))
+        (base32 "11i7vyk3pynw8q8aczpy56qncm84y0cmhlvyja3sj8dgy60g03q2"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -6014,7 +6013,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.5")
+    (version "2.5.1")
     (source
      (origin
        (method url-fetch)
@@ -6022,7 +6021,7 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "0q6c7ijgpp2wk6jlh0pzqki1w60i36wyl2zfwkg0gpdh40ypab3x"))))
+         "14l3bs7mlkd2lphjhnbw5dr95pg7x1k61s9wk35dra4li2xjy1lm"))))
     (build-system python-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("flac" ,flac)
@@ -6360,7 +6359,7 @@ output.")
 (define-public console-setup
   (package
     (name "console-setup")
-    (version "1.190")
+    (version "1.191")
     (source
      (origin
        (method git-fetch)
@@ -6368,7 +6367,7 @@ output.")
              (url "https://salsa.debian.org/installer-team/console-setup.git")
              (commit version)))
        (sha256
-        (base32 "0qklm9ww1wap2bs7hp31xkfjyhdrirg2mk4hiv7h6fiqckzmdwvd"))
+        (base32 "0wplhjadk530fqxhfnizil32rcvkcl5m2r18yskspcib53r4pmim"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/services/authentication.scm b/gnu/services/authentication.scm
index ab54aaf698..73969a5a6d 100644
--- a/gnu/services/authentication.scm
+++ b/gnu/services/authentication.scm
@@ -42,17 +42,21 @@
             nslcd-configuration?
             nslcd-service-type))
 
-(define-record-type* <fprintd-configuration>
-  fprintd-configuration make-fprintd-configuration
-  fprintd-configuration?
-  (ntp      fprintd-configuration-fprintd
-            (default fprintd)))
+(define-configuration fprintd-configuration
+  (fprintd      (package fprintd)
+                "The fprintd package"))
+
+(define (fprintd-dbus-service config)
+  (list (fprintd-configuration-fprintd config)))
 
 (define fprintd-service-type
   (service-type (name 'fprintd)
                 (extensions
                  (list (service-extension dbus-root-service-type
-                                          list)))
+                                          fprintd-dbus-service)
+                       (service-extension polkit-service-type
+                                          fprintd-dbus-service)))
+                (default-value (fprintd-configuration))
                 (description
                  "Run fprintd, a fingerprint management daemon.")))
 
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 04b123b833..952f6f9ab2 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -510,13 +510,30 @@ FILE-SYSTEM."
     (cons* sink user-unmount
            (map file-system-shepherd-service file-systems))))
 
+(define (file-system-fstab-entries file-systems)
+  "Return the subset of @var{file-systems} that should have an entry in
+@file{/etc/fstab}."
+  ;; /etc/fstab is about telling fsck(8), mount(8), and umount(8) about
+  ;; relevant file systems they'll have to deal with.  That excludes "pseudo"
+  ;; file systems.
+  ;;
+  ;; In particular, things like GIO (part of GLib) use it to determine the set
+  ;; of mounts, which is then used by graphical file managers and desktop
+  ;; environments to display "volume" icons.  Thus, we really need to exclude
+  ;; those pseudo file systems from the list.
+  (remove (lambda (file-system)
+            (or (member (file-system-type file-system)
+                        %pseudo-file-system-types)
+                (memq 'bind-mount (file-system-flags file-system))))
+          file-systems))
+
 (define file-system-service-type
   (service-type (name 'file-systems)
                 (extensions
                  (list (service-extension shepherd-root-service-type
                                           file-system-shepherd-services)
                        (service-extension fstab-service-type
-                                          identity)
+                                          file-system-fstab-entries)
 
                        ;; Have 'user-processes' depend on 'file-systems'.
                        (service-extension user-processes-service-type
@@ -719,7 +736,8 @@ to add @var{device} to the kernel's entropy pool.  The service will fail if
                                  #$@files))))
       (respawn? #f)))))
 
-(define (console-keymap-service . files)
+(define-deprecated (console-keymap-service #:rest files)
+  #f
   "Return a service to load console keymaps from @var{files}."
   (service console-keymap-service-type files))
 
@@ -1515,19 +1533,9 @@ GID."
 (define (hydra-key-authorization keys guix)
   "Return a gexp with code to register KEYS, a list of files containing 'guix
 archive' public keys, with GUIX."
-  (define aaa
-    ;; XXX: Terrible hack to work around <https://bugs.gnu.org/15602>: this
-    ;; forces (guix config) and (guix utils) to be loaded upfront, so that
-    ;; their run-time symbols are defined.
-    (scheme-file "aaa.scm"
-                 #~(define-module (guix aaa)
-                     #:use-module (guix config)
-                     #:use-module (guix memoization))))
-
   (define default-acl
     (with-extensions (list guile-gcrypt)
       (with-imported-modules `(((guix config) => ,(make-config.scm))
-                               ((guix aaa) => ,aaa)
                                ,@(source-module-closure '((guix pki))
                                                         #:select? not-config?))
         (computed-file "acl"
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index 7565bc97ca..ae34ad17bb 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -50,6 +51,12 @@
                        (default #f))
   (domains             certificate-configuration-domains
                        (default '()))
+  (challenge           certificate-configuration-challenge
+                       (default #f))
+  (authentication-hook certificate-authentication-hook
+                       (default #f))
+  (cleanup-hook        certificate-cleanup-hook
+                       (default #f))
   (deploy-hook         certificate-configuration-deploy-hook
                        (default #f)))
 
@@ -81,17 +88,32 @@
             (commands
              (map
               (match-lambda
-                (($ <certificate-configuration> custom-name domains
+                (($ <certificate-configuration> custom-name domains challenge
+                                                authentication-hook cleanup-hook
                                                 deploy-hook)
                  (let ((name (or custom-name (car domains))))
-                   (append
-                    (list name certbot "certonly" "-n" "--agree-tos"
-                          "-m" email
-                          "--webroot" "-w" webroot
-                          "--cert-name" name
-                          "-d" (string-join domains ","))
-                    (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '())
-                    (if deploy-hook `("--deploy-hook" ,deploy-hook) '())))))
+                   (if challenge
+                     (append
+                      (list name certbot "certonly" "-n" "--agree-tos"
+                            "-m" email
+                            "--manual"
+                            (string-append "--preferred-challenges=" challenge)
+                            "--cert-name" name
+                            "-d" (string-join domains ","))
+                      (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '())
+                      (if authentication-hook
+                          `("--manual-auth-hook" ,authentication-hook)
+                          '())
+                      (if cleanup-hook `("--manual-cleanup-hook" ,cleanup-hook) '())
+                      (if deploy-hook `("--deploy-hook" ,deploy-hook) '()))
+                     (append
+                      (list name certbot "certonly" "-n" "--agree-tos"
+                            "-m" email
+                            "--webroot" "-w" webroot
+                            "--cert-name" name
+                            "-d" (string-join domains ","))
+                      (if rsa-key-size `("--rsa-key-size" ,rsa-key-size) '())
+                      (if deploy-hook `("--deploy-hook" ,deploy-hook) '()))))))
               certificates)))
        (program-file
         "certbot-command"
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 606ee0c2f5..35d7ff3c9c 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -26,6 +26,7 @@
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages admin)
   #:use-module (guix gexp)
+  #:use-module ((guix packages) #:select (package-name))
   #:use-module (guix records)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
@@ -33,6 +34,7 @@
             dbus-configuration?
             dbus-root-service-type
             dbus-service
+            wrapped-dbus-service
 
             polkit-service-type
             polkit-service))
@@ -229,6 +231,52 @@ and policy files.  For example, to allow avahi-daemon to use the system bus,
            (dbus-configuration (dbus dbus)
                                (services services))))
 
+(define (wrapped-dbus-service service program variables)
+  "Return a wrapper for @var{service}, a package containing a D-Bus service,
+where @var{program} is wrapped such that @var{variables}, a list of name/value
+tuples, are all set as environment variables when the bus daemon launches it."
+  (define wrapper
+    (program-file (string-append (package-name service) "-program-wrapper")
+                  #~(begin
+                      (use-modules (ice-9 match))
+
+                      (for-each (match-lambda
+                                  ((variable value)
+                                   (setenv variable value)))
+                                '#$variables)
+
+                      (apply execl (string-append #$service "/" #$program)
+                             (string-append #$service "/" #$program)
+                             (cdr (command-line))))))
+
+  (define build
+    (with-imported-modules '((guix build utils))
+      #~(begin
+          (use-modules (guix build utils))
+
+          (define service-directory
+            "/share/dbus-1/system-services")
+
+          (mkdir-p (dirname (string-append #$output
+                                           service-directory)))
+          (copy-recursively (string-append #$service
+                                           service-directory)
+                            (string-append #$output
+                                           service-directory))
+          (symlink (string-append #$service "/etc") ;for etc/dbus-1
+                   (string-append #$output "/etc"))
+
+          (for-each (lambda (file)
+                      (substitute* file
+                        (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$"
+                          _ original-program arguments)
+                         (string-append "Exec=" #$wrapper arguments
+                                        "\n"))))
+                    (find-files #$output "\\.service$")))))
+
+  (computed-file (string-append (package-name service) "-wrapper")
+                 build))
+
 
 ;;;
 ;;; Polkit privilege management service.
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index b912c208cc..f31dbc112e 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -103,6 +103,8 @@
             accountsservice-service-type
             accountsservice-service
 
+            cups-pk-helper-service-type
+
             gnome-desktop-configuration
             gnome-desktop-configuration?
             gnome-desktop-service
@@ -150,46 +152,6 @@
       ((package . _) package))))
 
 
-(define (wrapped-dbus-service service program variable value)
-  "Return a wrapper for @var{service}, a package containing a D-Bus service,
-where @var{program} is wrapped such that environment variable @var{variable}
-is set to @var{value} when the bus daemon launches it."
-  (define wrapper
-    (program-file (string-append (package-name service) "-program-wrapper")
-                  #~(begin
-                      (setenv #$variable #$value)
-                      (apply execl (string-append #$service "/" #$program)
-                             (string-append #$service "/" #$program)
-                             (cdr (command-line))))))
-
-  (define build
-    (with-imported-modules '((guix build utils))
-      #~(begin
-          (use-modules (guix build utils))
-
-          (define service-directory
-            "/share/dbus-1/system-services")
-
-          (mkdir-p (dirname (string-append #$output
-                                           service-directory)))
-          (copy-recursively (string-append #$service
-                                           service-directory)
-                            (string-append #$output
-                                           service-directory))
-          (symlink (string-append #$service "/etc") ;for etc/dbus-1
-                   (string-append #$output "/etc"))
-
-          (for-each (lambda (file)
-                      (substitute* file
-                        (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$"
-                          _ original-program arguments)
-                         (string-append "Exec=" #$wrapper arguments
-                                        "\n"))))
-                    (find-files #$output "\\.service$")))))
-
-  (computed-file (string-append (package-name service) "-wrapper")
-                 build))
-
 
 ;;;
 ;;; Upower D-Bus service.
@@ -257,8 +219,8 @@ is set to @var{value} when the bus daemon launches it."
 (define (upower-dbus-service config)
   (list (wrapped-dbus-service (upower-configuration-upower config)
                               "libexec/upowerd"
-                              "UPOWER_CONF_FILE_NAME"
-                              (upower-configuration-file config))))
+                              `(("UPOWER_CONF_FILE_NAME"
+                                 ,(upower-configuration-file config))))))
 
 (define (upower-shepherd-service config)
   "Return a shepherd service for UPower with CONFIG."
@@ -389,8 +351,8 @@ users are allowed."
 (define (geoclue-dbus-service config)
   (list (wrapped-dbus-service (geoclue-configuration-geoclue config)
                               "libexec/geoclue"
-                              "GEOCLUE_CONFIG_FILE"
-                              (geoclue-configuration-file config))))
+                              `(("GEOCLUE_CONFIG_FILE"
+                                 ,(geoclue-configuration-file config))))))
 
 (define %geoclue-accounts
   (list (user-group (name "geoclue") (system? #t))
@@ -742,8 +704,8 @@ include the @command{udisksctl} command, part of UDisks, and GNOME Disks."
 (define (elogind-dbus-service config)
   (list (wrapped-dbus-service (elogind-package config)
                               "libexec/elogind/elogind"
-                              "ELOGIND_CONF_FILE"
-                              (elogind-configuration-file config))))
+                              `(("ELOGIND_CONF_FILE"
+                                 ,(elogind-configuration-file config))))))
 
 (define (pam-extension-procedure config)
   "Return an extension for PAM-ROOT-SERVICE-TYPE that ensures that all the PAM
@@ -884,9 +846,12 @@ rules."
           (service-extension profile-service-type
                              (compose list
                                       gnome-package))))
+   (default-value (gnome-desktop-configuration))
    (description "Run the GNOME desktop environment.")))
 
-(define* (gnome-desktop-service #:key (config (gnome-desktop-configuration)))
+(define-deprecated (gnome-desktop-service #:key (config
+                                                 (gnome-desktop-configuration)))
+  gnome-desktop-service-type
   "Return a service that adds the @code{gnome} package to the system profile,
 and extends polkit with the actions from @code{gnome-settings-daemon}."
   (service gnome-desktop-service-type config))
@@ -942,10 +907,13 @@ and extends polkit with the actions from @code{mate-settings-daemon}."
                                        "thunar")
                                       xfce-package))
           (service-extension profile-service-type
-                             (compose list
-                                      xfce-package))))))
+                             (compose list xfce-package))))
+   (default-value (xfce-desktop-configuration))
+   (description "Run the Xfce desktop environment.")))
 
-(define* (xfce-desktop-service #:key (config (xfce-desktop-configuration)))
+(define-deprecated (xfce-desktop-service #:key (config
+                                                (xfce-desktop-configuration)))
+  xfce-desktop-service-type
   "Return a service that adds the @code{xfce} package to the system profile,
 and extends polkit with the ability for @code{thunar} to manipulate the file
 system as root from within a user session, after the user has authenticated
@@ -1072,7 +1040,7 @@ dispatches events from it.")))
 
 (define %desktop-services
   ;; List of services typically useful for a "desktop" use case.
-  (cons* (service slim-service-type)
+  (cons* (service gdm-service-type)
 
          ;; Screen lockers are a pretty useful thing and these are small.
          (screen-locker-service slock)
diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm
index 1ef754b360..5f37cb0782 100644
--- a/gnu/services/dns.scm
+++ b/gnu/services/dns.scm
@@ -163,30 +163,40 @@
 (define-record-type* <knot-zone-configuration>
   knot-zone-configuration make-knot-zone-configuration
   knot-zone-configuration?
-  (domain           knot-zone-configuration-domain
-                    (default ""))
-  (file             knot-zone-configuration-file
-                    (default "")) ; the file where this zone is saved.
-  (zone             knot-zone-configuration-zone
-                    (default (zone-file))) ; initial content of the zone file
-  (master           knot-zone-configuration-master
-                    (default '()))
-  (ddns-master      knot-zone-configuration-ddns-master
-                    (default #f))
-  (notify           knot-zone-configuration-notify
-                    (default '()))
-  (acl              knot-zone-configuration-acl
-                    (default '()))
-  (semantic-checks? knot-zone-configuration-semantic-checks?
-                    (default #f))
-  (disable-any?     knot-zone-configuration-disable-any?
-                    (default #f))
-  (zonefile-sync    knot-zone-configuration-zonefile-sync
-                    (default 0))
-  (dnssec-policy    knot-zone-configuration-dnssec-policy
-                    (default #f))
-  (serial-policy    knot-zone-configuration-serial-policy
-                    (default 'increment)))
+  (domain            knot-zone-configuration-domain
+                     (default ""))
+  (file              knot-zone-configuration-file
+                     (default "")) ; the file where this zone is saved.
+  (zone              knot-zone-configuration-zone
+                     (default (zone-file))) ; initial content of the zone file
+  (master            knot-zone-configuration-master
+                     (default '()))
+  (ddns-master       knot-zone-configuration-ddns-master
+                     (default #f))
+  (notify            knot-zone-configuration-notify
+                     (default '()))
+  (acl               knot-zone-configuration-acl
+                     (default '()))
+  (semantic-checks?  knot-zone-configuration-semantic-checks?
+                     (default #f))
+  (disable-any?      knot-zone-configuration-disable-any?
+                     (default #f))
+  (zonefile-sync     knot-zone-configuration-zonefile-sync
+                     (default 0))
+  (zonefile-load     knot-zone-configuration-zonefile-load
+                     (default #f))
+  (journal-content   knot-zone-configuration-journal-content
+                     (default #f))
+  (max-journal-usage knot-zone-configuration-max-journal-usage
+                     (default #f))
+  (max-journal-depth knot-zone-configuration-max-journal-depth
+                     (default #f))
+  (max-zone-size     knot-zone-configuration-max-zone-size
+                     (default #f))
+  (dnssec-policy     knot-zone-configuration-dnssec-policy
+                     (default #f))
+  (serial-policy     knot-zone-configuration-serial-policy
+                     (default 'increment)))
 
 (define-record-type* <knot-remote-configuration>
   knot-remote-configuration make-knot-remote-configuration
@@ -207,6 +217,8 @@
                  (default knot))
   (run-directory knot-configuration-run-directory
                  (default "/var/run/knot"))
+  (includes      knot-configuration-includes
+                 (default '()))
   (listen-v4     knot-configuration-listen-v4
                  (default "0.0.0.0"))
   (listen-v6     knot-configuration-listen-v6
@@ -296,6 +308,8 @@
     (error-out "knot configuration field must be a package."))
   (unless (string? (knot-configuration-run-directory config))
     (error-out "run-directory must be a string."))
+  (unless (list? (knot-configuration-includes config))
+    (error-out "includes must be a list of strings or file-like objects."))
   (unless (list? (knot-configuration-keys config))
     (error-out "keys must be a list of knot-key-configuration."))
   (for-each (lambda (key) (verify-knot-key-configuration key))
@@ -332,7 +346,7 @@
           (fold (lambda (x1 x2)
                   (string-append (if (symbol? x1) (symbol->string x1) x1) ", "
                                  (if (symbol? x2) (symbol->string x2) x2)))
-                (car l) (cdr l))
+                (if (symbol? (car l)) (symbol->string (car l)) (car l)) (cdr l))
           "]"))))
 
 (define (knot-acl-config acls)
@@ -490,6 +504,12 @@
                 (acl (list #$@(knot-zone-configuration-acl zone)))
                 (semantic-checks? #$(knot-zone-configuration-semantic-checks? zone))
                 (disable-any? #$(knot-zone-configuration-disable-any? zone))
+                (zonefile-sync #$(knot-zone-configuration-zonefile-sync zone))
+                (zonefile-load '#$(knot-zone-configuration-zonefile-load zone))
+                (journal-content #$(knot-zone-configuration-journal-content zone))
+                (max-journal-usage #$(knot-zone-configuration-max-journal-usage zone))
+                (max-journal-depth #$(knot-zone-configuration-max-journal-depth zone))
+                (max-zone-size #$(knot-zone-configuration-max-zone-size zone))
                 (dnssec-policy #$(knot-zone-configuration-dnssec-policy zone))
                 (serial-policy '#$(knot-zone-configuration-serial-policy zone)))
             (format #t "    - domain: ~a\n" domain)
@@ -516,6 +536,20 @@
                           (knot-zone-configuration-acl zone))))
             (format #t "      semantic-checks: ~a\n" (if semantic-checks? "on" "off"))
             (format #t "      disable-any: ~a\n" (if disable-any? "on" "off"))
+            (if zonefile-sync
+              (format #t "      zonefile-sync: ~a\n" zonefile-sync))
+            (if zonefile-load
+              (format #t "      zonefile-load: ~a\n"
+                      (symbol->string zonefile-load)))
+            (if journal-content
+              (format #t "      journal-content: ~a\n"
+                      (symbol->string journal-content)))
+            (if max-journal-usage
+              (format #t "      max-journal-usage: ~a\n" max-journal-usage))
+            (if max-journal-depth
+              (format #t "      max-journal-depth: ~a\n" max-journal-depth))
+            (if max-zone-size
+              (format #t "      max-zone-size: ~a\n" max-zone-size))
             (if dnssec-policy
                 (begin
                   (format #t "      dnssec-signing: on\n")
@@ -529,6 +563,9 @@
     #~(begin
         (call-with-output-file #$output
           (lambda (port)
+            (for-each (lambda (inc)
+                        (format port "include: ~a\n" inc))
+                      '#$(knot-configuration-includes config))
             (format port "server:\n")
             (format port "    rundir: ~a\n" #$(knot-configuration-run-directory config))
             (format port "    user: knot\n")
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index a7e8c41d3a..0dabfed4cb 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -64,7 +64,12 @@
             exim-configuration
             exim-configuration?
             exim-service-type
-            %default-exim-config-file))
+            %default-exim-config-file
+
+            imap4d-configuration
+            imap4d-configuration?
+            imap4d-service-type
+            %defualt-imap4d-config-file))
 
 ;;; Commentary:
 ;;;
@@ -1776,3 +1781,41 @@ exim_group = exim
           (service-extension activation-service-type exim-activation)
           (service-extension profile-service-type exim-profile)
           (service-extension mail-aliases-service-type (const '()))))))
+
+
+;;;
+;;; GNU Mailutils IMAP4 Daemon.
+;;;
+
+(define %default-imap4d-config-file
+  (plain-file "imap4d.conf" "server localhost {};\n"))
+
+(define-record-type* <imap4d-configuration>
+  imap4d-configuration make-imap4d-configuration imap4d-configuration?
+  (package     imap4d-configuration-package
+               (default mailutils))
+  (config-file imap4d-configuration-config-file
+               (default %default-imap4d-config-file)))
+
+(define imap4d-shepherd-service
+  (match-lambda
+    (($ <imap4d-configuration> package config-file)
+     (list (shepherd-service
+            (provision '(imap4d))
+            (requirement '(networking syslogd))
+            (documentation "Run the imap4d daemon.")
+            (start (let ((imap4d (file-append package "/sbin/imap4d")))
+                     #~(make-forkexec-constructor
+                        (list #$imap4d "--daemon" "--foreground"
+                              "--config-file" #$config-file))))
+            (stop #~(make-kill-destructor)))))))
+
+(define imap4d-service-type
+  (service-type
+   (name 'imap4d)
+   (description
+    "Run the GNU @command{imap4d} to serve e-mail messages through IMAP.")
+   (extensions
+    (list (service-extension
+           shepherd-root-service-type imap4d-shepherd-service)))
+   (default-value (imap4d-configuration))))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index cab129e0c3..03b2c6e1ec 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -985,7 +985,14 @@ wireless networking."))))
                       (list (string-append #$connman
                                            "/sbin/connmand")
                             "-n" "-r"
-                            #$@(if disable-vpn? '("--noplugin=vpn") '()))))
+                            #$@(if disable-vpn? '("--noplugin=vpn") '()))
+
+                      ;; As connman(8) notes, when passing '-n', connman
+                      ;; "directs log output to the controlling terminal in
+                      ;; addition to syslog."  Redirect stdout and stderr
+                      ;; to avoid spamming the console (XXX: for some reason
+                      ;; redirecting to /dev/null doesn't work.)
+                      #:log-file "/var/log/connman.log"))
             (stop #~(make-kill-destructor)))))))
 
 (define connman-service-type
@@ -1060,12 +1067,13 @@ networking."))))
      (list (shepherd-service
             (documentation "Run the WPA supplicant daemon")
             (provision '(wpa-supplicant))
-            (requirement '(user-processes dbus-system loopback))
+            (requirement '(user-processes dbus-system loopback syslogd))
             (start #~(make-forkexec-constructor
                       (list (string-append #$wpa-supplicant
                                            "/sbin/wpa_supplicant")
                             (string-append "-P" #$pid-file)
                             "-B"        ;run in background
+                            "-s"        ;log to syslogd
                             #$@(if dbus?
                                    #~("-u")
                                    #~())
@@ -1154,7 +1162,8 @@ implements authentication, key negotiation and more for wireless networks.")
    (description
     "Run @uref{http://www.openvswitch.org, Open vSwitch}, a multilayer virtual
 switch designed to enable massive network automation through programmatic
-extension.")))
+extension.")
+   (default-value (openvswitch-configuration))))
 
 ;;;
 ;;; iptables
diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm
index 2ebfe22016..b433c59e12 100644
--- a/gnu/services/sddm.scm
+++ b/gnu/services/sddm.scm
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 David Craven <david@craven.ch>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -83,8 +85,8 @@
   (sessions-directory     sddm-configuration-sessions-directory
                           (default "/run/current-system/profile/share/wayland-sessions"))
   ;; [X11]
-  (xorg-server-path       sddm-configuration-xorg-server-path
-                          (default (xorg-start-command)))
+  (xorg-configuration     sddm-configuration-xorg
+                          (default (xorg-configuration)))
   (xauth-path             sddm-configuration-xauth-path
                           (default (file-append xauth "/bin/xauth")))
   (xephyr-path            sddm-configuration-xephyr-path
@@ -99,8 +101,6 @@
                           (default "/run/current-system/profile/share/xsessions"))
   (minimum-vt             sddm-configuration-minimum-vt
                           (default 7))
-  (xserver-arguments      sddm-configuration-xserver-arguments
-                          (default "-nolisten tcp"))
 
   ;; [Autologin]
   (auto-login-user        sddm-configuration-auto-login-user
@@ -140,7 +140,7 @@ SessionCommand="       (sddm-configuration-session-command config)             "
 SessionDir="           (sddm-configuration-sessions-directory config)          "
 
 [X11]
-ServerPath="           (sddm-configuration-xorg-server-path config)            "
+ServerPath="           (xorg-start-command (sddm-configuration-xorg config))   "
 XauthPath="            (sddm-configuration-xauth-path config)                  "
 XephyrPath="           (sddm-configuration-xephyr-path config)                 "
 DisplayCommand="       (sddm-configuration-xdisplay-start config)              "
@@ -148,7 +148,9 @@ DisplayStopCommand="   (sddm-configuration-xdisplay-stop config)               "
 SessionCommand="       (sddm-configuration-xsession-command config)            "
 SessionDir="           (sddm-configuration-xsessions-directory config)         "
 MinimumVT="            (number->string (sddm-configuration-minimum-vt config)) "
-ServerArguments="      (sddm-configuration-xserver-arguments config)           "
+ServerArguments="      (string-join
+                        (xorg-configuration-server-arguments
+                         (sddm-configuration-xorg config)))           "
 
 [Autologin]
 User="                 (sddm-configuration-auto-login-user config)             "
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 12d649f542..45c67e04eb 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;;
@@ -44,6 +44,7 @@
             shepherd-service-provision
             shepherd-service-canonical-name
             shepherd-service-requirement
+            shepherd-service-one-shot?
             shepherd-service-respawn?
             shepherd-service-start
             shepherd-service-stop
@@ -59,7 +60,6 @@
             %default-modules
 
             shepherd-service-file
-            %containerized-shepherd-service
 
             shepherd-service-lookup-procedure
             shepherd-service-back-edges
@@ -149,6 +149,8 @@ DEFAULT is given, use it as the service's default value."
   (provision     shepherd-service-provision)           ;list of symbols
   (requirement   shepherd-service-requirement          ;list of symbols
                  (default '()))
+  (one-shot?     shepherd-service-one-shot?            ;Boolean
+                 (default #f))
   (respawn?      shepherd-service-respawn?             ;Boolean
                  (default #t))
   (start         shepherd-service-start)               ;g-expression (procedure)
@@ -238,6 +240,11 @@ stored."
                        #:docstring '#$(shepherd-service-documentation service)
                        #:provides '#$(shepherd-service-provision service)
                        #:requires '#$(shepherd-service-requirement service)
+
+                       ;; The 'one-shot?' slot is new in Shepherd 0.6.0.
+                       ;; Older versions ignore it.
+                       #:one-shot? '#$(shepherd-service-one-shot? service)
+
                        #:respawn? '#$(shepherd-service-respawn? service)
                        #:start #$(shepherd-service-start service)
                        #:stop #$(shepherd-service-stop service)
@@ -338,21 +345,6 @@ symbols provided/required by a service."
   (lambda (service)
     (vhash-foldq* cons '() service edges)))
 
-(define %containerized-shepherd-service
-  ;; XXX: This service works around a bug in the Shepherd 0.5.0: shepherd
-  ;; calls reboot(2) (via 'disable-reboot-on-ctrl-alt-del') when it starts,
-  ;; but in a container that fails with EINVAL.  This was fixed in Shepherd
-  ;; commit 92e806bac1abaeeaf5d60f0ab50d1ae85ba6a62f.
-  (simple-service 'containerized-shepherd
-                  shepherd-root-service-type
-                  (list (shepherd-service
-                         (provision '(containerized-shepherd))
-                         (start #~(lambda ()
-                                    (set! (@@ (shepherd)
-                                              disable-reboot-on-ctrl-alt-del)
-                                      (const #t))
-                                    #t))))))
-
 (define (shepherd-service-upgrade live target)
   "Return two values: the subset of LIVE (a list of <live-service>) that needs
 to be unloaded, and the subset of TARGET (a list of <shepherd-service>) that
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 362a7f1490..25db783420 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -617,7 +617,8 @@ of user-name/file-like tuples."
                  (list (service-extension shepherd-root-service-type
                                           dropbear-shepherd-service)
                        (service-extension activation-service-type
-                                          dropbear-activation)))))
+                                          dropbear-activation)))
+                (default-value (dropbear-configuration))))
 
 (define* (dropbear-service #:optional (config (dropbear-configuration)))
   "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index b6ebe90774..84294db53b 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -34,7 +34,6 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages web)
   #:use-module (gnu packages php)
-  #:use-module (gnu packages guile)
   #:use-module (gnu packages logging)
   #:use-module (guix records)
   #:use-module (guix modules)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index f2a3c28c90..44dcec4ec9 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,8 @@
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
   #:use-module (gnu system pam)
+  #:use-module (gnu system keyboard)
+  #:use-module (gnu services base)
   #:use-module (gnu services dbus)
   #:use-module ((gnu packages base) #:select (canonical-package))
   #:use-module (gnu packages guile)
@@ -33,6 +36,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages display-managers)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gnustep)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages admin)
@@ -48,7 +52,16 @@
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
-  #:export (xorg-configuration-file
+  #:export (xorg-configuration
+            xorg-configuration?
+            xorg-configuration-modules
+            xorg-configuration-fonts
+            xorg-configuration-drivers
+            xorg-configuration-resolutions
+            xorg-configuration-extra-config
+            xorg-configuration-server
+            xorg-configuration-server-arguments
+
             %default-xorg-modules
             %default-xorg-fonts
             xorg-wrapper
@@ -69,7 +82,8 @@
             slim-configuration-xauth
             slim-configuration-shepherd
             slim-configuration-auto-login-session
-            slim-configuration-startx
+            slim-configuration-xorg
+            slim-configuration-sessreg
 
             slim-service-type
             slim-service
@@ -79,9 +93,14 @@
             screen-locker-service-type
             screen-locker-service
 
+            localed-configuration
+            localed-configuration?
+            localed-service-type
+
             gdm-configuration
             gdm-service-type
-            gdm-service))
+            gdm-service
+            set-xorg-configuration))
 
 ;;; Commentary:
 ;;;
@@ -122,33 +141,38 @@
                      "/share/fonts/X11/misc")
         (file-append font-adobe75dpi "/share/fonts/X11/75dpi")))
 
-(define* (xorg-configuration-file #:key
-                                  (modules %default-xorg-modules)
-                                  (fonts %default-xorg-fonts)
-                                  (drivers '()) (resolutions '())
-                                  (extra-config '()))
-  "Return a configuration file for the Xorg server containing search paths for
-all the common drivers.
-
-@var{modules} must be a list of @dfn{module packages} loaded by the Xorg
-server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on.
-@var{fonts} must be a list of font directories to add to the server's
-@dfn{font path}.
-
-@var{drivers} must be either the empty list, in which case Xorg chooses a
-graphics driver automatically, or a list of driver names that will be tried in
-this order---e.g., @code{(\"modesetting\" \"vesa\")}.
-
-Likewise, when @var{resolutions} is the empty list, Xorg chooses an
-appropriate screen resolution; otherwise, it must be a list of
-resolutions---e.g., @code{((1024 768) (640 480))}.
-
-Last, @var{extra-config} is a list of strings or objects appended to the
-configuration file.  It is used to pass extra text to be
-added verbatim to the configuration file."
+(define %default-xorg-server-arguments
+  ;; Default command-line arguments for X.
+  '("-nolisten" "tcp"))
+
+;; Configuration of an Xorg server.
+(define-record-type* <xorg-configuration>
+  xorg-configuration make-xorg-configuration
+  xorg-configuration?
+  (modules          xorg-configuration-modules    ;list of packages
+                    (default %default-xorg-modules))
+  (fonts            xorg-configuration-fonts      ;list of packges
+                    (default %default-xorg-fonts))
+  (drivers          xorg-configuration-drivers    ;list of strings
+                    (default '()))
+  (resolutions      xorg-configuration-resolutions ;list of tuples
+                    (default '()))
+  (keyboard-layout  xorg-configuration-keyboard-layout ;#f | <keyboard-layout>
+                    (default #f))
+  (extra-config     xorg-configuration-extra-config ;list of strings
+                    (default '()))
+  (server           xorg-configuration-server     ;package
+                    (default xorg-server))
+  (server-arguments xorg-configuration-server-arguments ;list of strings
+                    (default %default-xorg-server-arguments)))
+
+(define (xorg-configuration->file config)
+  "Compute an Xorg configuration file corresponding to CONFIG, an
+<xorg-configuration> record."
   (define all-modules
     ;; 'xorg-server' provides 'fbdevhw.so' etc.
-    (append modules (list xorg-server)))
+    (append (xorg-configuration-modules config)
+            (list xorg-server)))
 
   (define build
     #~(begin
@@ -159,7 +183,7 @@ added verbatim to the configuration file."
         (call-with-output-file #$output
           (lambda (port)
             (define drivers
-              '#$drivers)
+              '#$(xorg-configuration-drivers config))
 
             (define (device-section driver)
               (string-append "
@@ -183,6 +207,31 @@ Section \"Screen\"
   EndSubSection
 EndSection"))
 
+            (define (input-class-section layout variant model options)
+              (string-append "
+Section \"InputClass\"
+  Identifier \"evdev keyboard catchall\"
+  MatchIsKeyboard \"on\"
+  Option \"XkbLayout\" " (object->string layout)
+  (if variant
+      (string-append "  Option \"XkbVariant\" \""
+                     variant "\"")
+      "")
+  (if model
+      (string-append "  Option \"XkbModel\" \""
+                     model "\"")
+      "")
+  (match options
+    (()
+     "")
+    (_
+     (string-append "  Option \"XkbOptions\" \""
+                    (string-join options ",") "\""))) "
+
+  MatchDevicePath \"/dev/input/event*\"
+  Driver \"evdev\"
+EndSection\n"))
+
             (define (expand modules)
               ;; Append to MODULES the relevant /lib/xorg/modules
               ;; sub-directories.
@@ -201,7 +250,7 @@ EndSection"))
             (display "Section \"Files\"\n" port)
             (for-each (lambda (font)
                         (format port "  FontPath \"~a\"~%" font))
-                      '#$fonts)
+                      '#$(xorg-configuration-fonts config))
             (for-each (lambda (module)
                         (format port
                                 "  ModulePath \"~a\"~%"
@@ -221,19 +270,32 @@ EndSection\n" port)
                      port)
             (newline port)
             (display (string-join
-                      (map (cut screen-section <> '#$resolutions)
+                      (map (cut screen-section <>
+                                '#$(xorg-configuration-resolutions config))
                            drivers)
                       "\n")
                      port)
             (newline port)
 
+            (let ((layout  #$(and=> (xorg-configuration-keyboard-layout config)
+                                    keyboard-layout-name))
+                  (variant #$(and=> (xorg-configuration-keyboard-layout config)
+                                    keyboard-layout-variant))
+                  (model   #$(and=> (xorg-configuration-keyboard-layout config)
+                                    keyboard-layout-model))
+                  (options '#$(and=> (xorg-configuration-keyboard-layout config)
+                                     keyboard-layout-options)))
+              (when layout
+                (display (input-class-section layout variant model options)
+                         port)
+                (newline port)))
+
             (for-each (lambda (config)
                         (display config port))
-                      '#$extra-config)))))
+                      '#$(xorg-configuration-extra-config config))))))
 
   (computed-file "xserver.conf" build))
 
-
 (define (xorg-configuration-directory modules)
   "Return a directory that contains the @code{.conf} files for X.org that
 includes the @code{share/X11/xorg.conf.d} directories of each package listed
@@ -260,61 +322,43 @@ in @var{modules}."
                                  files)
                        #t))))
 
-(define* (xorg-wrapper #:key
-                       (guile (canonical-package guile-2.0))
-                       (modules %default-xorg-modules)
-                       (configuration-file (xorg-configuration-file
-                                            #:modules modules))
-                       (xorg-server xorg-server))
-  "Return a derivation that builds a @var{guile} script to start the X server
-from @var{xorg-server}.  @var{configuration-file} is the server configuration
-file or a derivation that builds it; when omitted, the result of
-@code{xorg-configuration-file} is used.  The resulting script should be used
-in place of @code{/usr/bin/X}."
+(define* (xorg-wrapper #:optional (config (xorg-configuration)))
+  "Return a derivation that builds a script to start the X server with the
+given @var{config}.  The resulting script should be used in place of
+@code{/usr/bin/X}."
   (define exp
     ;; Write a small wrapper around the X server.
     #~(begin
         (setenv "XORG_DRI_DRIVER_PATH" (string-append #$mesa "/lib/dri"))
         (setenv "XKB_BINDIR" (string-append #$xkbcomp "/bin"))
 
-        (let ((X (string-append #$xorg-server "/bin/X")))
+        (let ((X (string-append #$(xorg-configuration-server config) "/bin/X")))
           (apply execl X X
                  "-xkbdir" (string-append #$xkeyboard-config "/share/X11/xkb")
-                 "-config" #$configuration-file
-                 "-configdir" #$(xorg-configuration-directory modules)
+                 "-config" #$(xorg-configuration->file config)
+                 "-configdir" #$(xorg-configuration-directory
+                                 (xorg-configuration-modules config))
                  (cdr (command-line))))))
 
   (program-file "X-wrapper" exp))
 
-(define* (xorg-start-command #:key
-                             (guile (canonical-package guile-2.0))
-                             (modules %default-xorg-modules)
-                             (fonts %default-xorg-fonts)
-                             (configuration-file
-                              (xorg-configuration-file #:modules modules
-                                                       #:fonts fonts))
-                             (xorg-server xorg-server)
-                             (xserver-arguments '("-nolisten" "tcp")))
-  "Return a @code{startx} script in which @var{modules}, a list of X module
-packages, and @var{fonts}, a list of X font directories, are available.  See
-@code{xorg-wrapper} for more details on the arguments.  The result should be
-used in place of @code{startx}."
+(define* (xorg-start-command #:optional (config (xorg-configuration)))
+  "Return a @code{startx} script in which the modules, fonts, etc. specified
+in @var{config}, are available.  The result should be used in place of
+@code{startx}."
   (define X
-    (xorg-wrapper #:guile guile
-                  #:configuration-file configuration-file
-                  #:modules modules
-                  #:xorg-server xorg-server))
+    (xorg-wrapper config))
+
   (define exp
     ;; Write a small wrapper around the X server.
     #~(apply execl #$X #$X ;; Second #$X is for argv[0].
-             "-logverbose" "-verbose" "-terminate" #$@xserver-arguments
+             "-logverbose" "-verbose" "-terminate"
+             #$@(xorg-configuration-server-arguments config)
               (cdr (command-line))))
 
   (program-file "startx" exp))
 
-(define* (xinitrc #:key
-                  (guile (canonical-package guile-2.0))
-                  fallback-session)
+(define* (xinitrc #:key fallback-session)
   "Return a system-wide xinitrc script that starts the specified X session,
 which should be passed to this script as the first argument.  If not, the
 @var{fallback-session} will be used or, if @var{fallback-session} is false, a
@@ -442,8 +486,8 @@ desktop session from the system or user profile will be used."
             (default shepherd))
   (auto-login-session slim-configuration-auto-login-session
                       (default #f))
-  (startx slim-configuration-startx
-          (default (xorg-start-command)))
+  (xorg-configuration slim-configuration-xorg
+                      (default (xorg-configuration)))
   (sessreg slim-configuration-sessreg
            (default sessreg)))
 
@@ -458,9 +502,8 @@ desktop session from the system or user profile will be used."
   (define slim.cfg
     (let ((xinitrc (xinitrc #:fallback-session
                             (slim-configuration-auto-login-session config)))
-          (slim    (slim-configuration-slim config))
           (xauth   (slim-configuration-xauth config))
-          (startx  (slim-configuration-startx config))
+          (startx  (xorg-start-command (slim-configuration-xorg config)))
           (shepherd   (slim-configuration-shepherd config))
           (theme-name (slim-configuration-theme-name config))
           (sessreg (slim-configuration-sessreg config)))
@@ -503,7 +546,9 @@ reboot_cmd " shepherd "/sbin/reboot\n"
               (false-if-exception (delete-file "/var/run/slim.lock"))
 
               (fork+exec-command
-               (list (string-append #$slim "/bin/slim") "-nodaemon")
+               (list (string-append #$(slim-configuration-slim config)
+                                    "/bin/slim")
+                     "-nodaemon")
                #:environment-variables
                (list (string-append "SLIM_CFGFILE=" #$slim.cfg)
                      #$@(if theme
@@ -567,8 +612,7 @@ theme."
             (auto-login? auto-login?) (default-user default-user)
             (theme theme) (theme-name theme-name)
             (xauth xauth) (shepherd shepherd)
-            (auto-login-session auto-login-session)
-            (startx startx))))
+            (auto-login-session auto-login-session))))
 
 
 ;;;
@@ -617,6 +661,88 @@ makes the good ol' XlockMore usable."
                           (file-append package "/bin/" program)
                           allow-empty-passwords?)))
 
+
+;;;
+;;; Locale service.
+;;;
+
+(define-record-type* <localed-configuration>
+  localed-configuration make-localed-configuration
+  localed-configuration?
+  (localed         localed-configuration-localed
+                   (default localed))
+  (keyboard-layout localed-configuration-keyboard-layout
+                   (default #f)))
+
+(define (localed-dbus-service config)
+  "Return the 'localed' D-Bus service for @var{config}, a
+@code{<localed-configuration>} record."
+  (define keyboard-layout
+    (localed-configuration-keyboard-layout config))
+
+  ;; The primary purpose of 'localed' is to tell GDM what the "current" Xorg
+  ;; keyboard layout is.  If 'localed' is missing, or if it's unable to
+  ;; determine the current XKB layout, then GDM forcefully installs its
+  ;; default XKB config (US English).  Here we communicate the configured
+  ;; layout through environment variables.
+
+  (if keyboard-layout
+      (let* ((layout  (keyboard-layout-name keyboard-layout))
+             (variant (keyboard-layout-variant keyboard-layout))
+             (model   (keyboard-layout-model keyboard-layout))
+             (options (keyboard-layout-options keyboard-layout)))
+        (list (wrapped-dbus-service
+               (localed-configuration-localed config)
+               "libexec/localed/localed"
+               `(("GUIX_XKB_LAYOUT" ,layout)
+                 ,@(if variant
+                       `(("GUIX_XKB_VARIANT" ,variant))
+                       '())
+                 ,@(if model
+                       `(("GUIX_XKB_MODEL" ,model))
+                       '())
+                 ,@(if (null? options)
+                       '()
+                       `(("GUIX_XKB_OPTIONS"
+                          ,(string-join options ","))))))))
+      '()))
+
+(define localed-service-type
+  (let ((package (lambda (config)
+                   ;; Don't bother if the user didn't specify any keyboard
+                   ;; layout.
+                   (if (localed-configuration-keyboard-layout config)
+                       (list (localed-configuration-localed config))
+                       '()))))
+    (service-type (name 'localed)
+                  (extensions
+                   (list (service-extension dbus-root-service-type
+                                            localed-dbus-service)
+                         (service-extension udev-service-type package)
+                         (service-extension polkit-service-type package)
+
+                         ;; Add 'localectl' to the profile.
+                         (service-extension profile-service-type package)))
+
+                  ;; This service can be extended, typically by the X login
+                  ;; manager, to communicate the chosen Xorg keyboard layout.
+                  (compose (lambda (extensions)
+                             (find keyboard-layout? extensions)))
+                  (extend (lambda (config keyboard-layout)
+                            (localed-configuration
+                             (inherit config)
+                             (keyboard-layout keyboard-layout))))
+                  (description
+                   "Run the locale daemon, @command{localed}, which can be used
+to control the system locale and keyboard mapping from user programs such as
+the GNOME desktop environment.")
+                  (default-value (localed-configuration)))))
+
+
+;;;
+;;; GNOME Desktop Manager.
+;;;
+
 (define %gdm-accounts
   (list (user-group (name "gdm") (system? #t))
         (user-account
@@ -647,8 +773,8 @@ makes the good ol' XlockMore usable."
   (default-user gdm-configuration-default-user (default #f))
   (gnome-shell-assets gdm-configuration-gnome-shell-assets
                       (default (list adwaita-icon-theme font-cantarell)))
-  (x-server gdm-configuration-x-server
-            (default (xorg-wrapper)))
+  (xorg-configuration gdm-configuration-xorg
+                      (default (xorg-configuration)))
   (x-session gdm-configuration-x-session
              (default (xinitrc))))
 
@@ -720,7 +846,8 @@ makes the good ol' XlockMore usable."
                             #$(gdm-configuration-dbus-daemon config))
                            (string-append
                             "GDM_X_SERVER="
-                            #$(gdm-configuration-x-server config))
+                            #$(xorg-wrapper
+                               (gdm-configuration-xorg config)))
                            (string-append
                             "GDM_X_SESSION="
                             #$(gdm-configuration-x-session config))
@@ -750,15 +877,31 @@ makes the good ol' XlockMore usable."
                                           gdm-configuration-gnome-shell-assets)
                        (service-extension dbus-root-service-type
                                           (compose list
-                                                   gdm-configuration-gdm))))
+                                                   gdm-configuration-gdm))
+                       (service-extension localed-service-type
+                                          (compose
+                                           xorg-configuration-keyboard-layout
+                                           gdm-configuration-xorg))))
+
+                ;; For convenience, this service can be extended with an
+                ;; <xorg-configuration> record.  Take the first one that
+                ;; comes.
+                (compose (lambda (extensions)
+                           (match extensions
+                             (() #f)
+                             ((config . _) config))))
+                (extend (lambda (config xorg-configuration)
+                          (if xorg-configuration
+                              (gdm-configuration
+                               (inherit config)
+                               (xorg-configuration xorg-configuration))
+                              config)))
+
                 (default-value (gdm-configuration))
                 (description
                  "Run the GNOME Desktop Manager (GDM), a program that allows
 you to log in in a graphical session, whether or not you use GNOME.")))
 
-;; This service isn't working yet; it gets as far as starting to run the
-;; greeter from gnome-shell but doesn't get any further.  It is here because
-;; it doesn't hurt anyone and perhaps it inspires someone to fix it :)
 (define-deprecated (gdm-service #:key (gdm gdm)
                                 (allow-empty-passwords? #t)
                                 (x-server (xorg-wrapper)))
@@ -785,7 +928,16 @@ password."
   (service gdm-service-type
            (gdm-configuration
             (gdm gdm)
-            (allow-empty-passwords? allow-empty-passwords?)
-            (x-server x-server))))
+            (allow-empty-passwords? allow-empty-passwords?))))
+
+(define* (set-xorg-configuration config
+                                 #:optional
+                                 (login-manager-service-type
+                                  gdm-service-type))
+  "Tell the log-in manager (of type @var{login-manager-service-type}) to use
+@var{config}, an <xorg-configuration> record."
+  (simple-service 'set-xorg-configuration
+                  login-manager-service-type
+                  config))
 
 ;;; xorg.scm ends here
diff --git a/gnu/system.scm b/gnu/system.scm
index 6bccdaa8c2..0489b9720d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
@@ -34,6 +34,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pciutils)
@@ -66,9 +67,11 @@
   #:use-module (rnrs bytevectors)
   #:export (operating-system
             operating-system?
+            this-operating-system
 
             operating-system-bootloader
             operating-system-services
+            operating-system-essential-services
             operating-system-user-services
             operating-system-packages
             operating-system-host-name
@@ -76,6 +79,8 @@
             operating-system-kernel
             operating-system-kernel-file
             operating-system-kernel-arguments
+            operating-system-label
+            operating-system-default-label
             operating-system-initrd-modules
             operating-system-initrd
             operating-system-users
@@ -151,12 +156,19 @@
 (define-record-type* <operating-system> operating-system
   make-operating-system
   operating-system?
+  this-operating-system
+
   (kernel operating-system-kernel                 ; package
           (default linux-libre))
   (kernel-arguments operating-system-user-kernel-arguments
-                    (default '()))                ; list of gexps/strings
+                    (default '("quiet")))         ; list of gexps/strings
   (bootloader operating-system-bootloader)        ; <bootloader-configuration>
+  (label operating-system-label                   ; string
+         (thunked)
+         (default (operating-system-default-label this-operating-system)))
 
+  (keyboard-layout operating-system-keyboard-layout ;#f | <keyboard-layout>
+                   (default #f))
   (initrd operating-system-initrd                 ; (list fs) -> file-like
           (default base-initrd))
   (initrd-modules operating-system-initrd-modules ; list of strings
@@ -199,6 +211,9 @@
   (name-service-switch operating-system-name-service-switch ; <name-service-switch>
                        (default %default-nss))
 
+  (essential-services operating-system-essential-services ; list of services
+                      (thunked)
+                      (default (essential-services this-operating-system)))
   (services operating-system-user-services        ; list of services
             (default %base-services))
 
@@ -436,27 +451,22 @@ OS."
   (file-append (operating-system-kernel os)
                "/" (system-linux-image-file-name os)))
 
-(define* (operating-system-directory-base-entries os #:key container?)
+(define* (operating-system-directory-base-entries os)
   "Return the basic entries of the 'system' directory of OS for use as the
 value of the SYSTEM-SERVICE-TYPE service."
   (let ((locale (operating-system-locale-directory os)))
-    (with-monad %store-monad
-      (if container?
-          (return `(("locale" ,locale)))
-          (mlet %store-monad
-              ((kernel  ->  (operating-system-kernel os))
-               (initrd  ->  (operating-system-initrd-file os))
-               (params      (operating-system-boot-parameters-file os)))
-            (return `(("kernel" ,kernel)
-                      ("parameters" ,params)
-                      ("initrd" ,initrd)
-                      ("locale" ,locale))))))))   ;used by libc
-
-(define* (essential-services os #:key container?)
+    (mlet %store-monad ((kernel -> (operating-system-kernel os))
+                        (initrd -> (operating-system-initrd-file os))
+                        (params    (operating-system-boot-parameters-file os)))
+      (return `(("kernel" ,kernel)
+                ("parameters" ,params)
+                ("initrd" ,initrd)
+                ("locale" ,locale))))))   ;used by libc
+
+(define* (essential-services os)
   "Return the list of essential services for OS.  These are special services
 that implement part of what's declared in OS are responsible for low-level
-bookkeeping.  CONTAINER? determines whether to return the list of services for
-a container or that of a \"bare metal\" system."
+bookkeeping."
   (define known-fs
     (map file-system-mount-point (operating-system-file-systems os)))
 
@@ -466,8 +476,7 @@ a container or that of a \"bare metal\" system."
          (swaps     (swap-services os))
          (procs     (service user-processes-service-type))
          (host-name (host-name-service (operating-system-host-name os)))
-         (entries   (operating-system-directory-base-entries
-                     os #:container? container?)))
+         (entries   (operating-system-directory-base-entries os)))
     (cons* (service system-service-type entries)
            %boot-service
 
@@ -484,7 +493,9 @@ a container or that of a \"bare metal\" system."
                                     (operating-system-groups os))
                             (operating-system-skeletons os))
            (operating-system-etc-service os)
-           (service fstab-service-type '())
+           (service fstab-service-type
+                    (filter file-system-needed-for-boot?
+                            (operating-system-file-systems os)))
            (session-environment-service
             (operating-system-environment-variables os))
            host-name procs root-fs
@@ -495,20 +506,16 @@ a container or that of a \"bare metal\" system."
            other-fs
            (append mappings swaps
 
-                   ;; Add the firmware service, unless we are building for a
-                   ;; container.
-                   (if container?
-                       (list %containerized-shepherd-service)
-                       (list %linux-bare-metal-service
-                             (service firmware-service-type
-                                      (operating-system-firmware os))))))))
-
-(define* (operating-system-services os #:key container?)
-  "Return all the services of OS, including \"internal\" services that do not
-explicitly appear in OS."
+                   ;; Add the firmware service.
+                   (list %linux-bare-metal-service
+                         (service firmware-service-type
+                                  (operating-system-firmware os)))))))
+
+(define* (operating-system-services os)
+  "Return all the services of OS, including \"essential\" services."
   (instantiate-missing-services
    (append (operating-system-user-services os)
-           (essential-services os #:container? container?))))
+           (operating-system-essential-services os))))
 
 
 ;;;
@@ -556,6 +563,7 @@ explicitly appear in OS."
          ;; variant propagated by 'guile-final' and the GMP variant propagated
          ;; by 'gnutls', itself propagated by 'guix'.
          guile-2.2
+         guile-readline guile-colorized
 
          ;; The packages below are also in %FINAL-INPUTS, so take them from
          ;; there to avoid duplication.
@@ -806,20 +814,19 @@ use 'plain-file' instead~%")
 root ALL=(ALL) ALL
 %wheel ALL=(ALL) ALL\n"))
 
-(define* (operating-system-activation-script os #:key container?)
+(define* (operating-system-activation-script os)
   "Return the activation script for OS---i.e., the code that \"activates\" the
 stateful part of OS, including user accounts and groups, special directories,
 etc."
-  (let* ((services   (operating-system-services os #:container? container?))
+  (let* ((services   (operating-system-services os))
          (activation (fold-services services
                                     #:target-type activation-service-type)))
     (activation-service->script activation)))
 
-(define* (operating-system-boot-script os #:key container?)
+(define* (operating-system-boot-script os)
   "Return the boot script for OS---i.e., the code started by the initrd once
-we're running in the final root.  When CONTAINER? is true, skip all
-hardware-related operations as necessary when booting a Linux container."
-  (let* ((services (operating-system-services os #:container? container?))
+we're running in the final root."
+  (let* ((services (operating-system-services os))
          (boot     (fold-services services #:target-type boot-service-type)))
     (service-value boot)))
 
@@ -839,17 +846,17 @@ hardware-related operations as necessary when booting a Linux container."
                               #:target-type
                               shepherd-root-service-type))))
 
-(define* (operating-system-derivation os #:key container?)
+(define* (operating-system-derivation os)
   "Return a derivation that builds OS."
-  (let* ((services (operating-system-services os #:container? container?))
+  (let* ((services (operating-system-services os))
          (system   (fold-services services)))
     ;; SYSTEM contains the derivation as a monadic value.
     (service-value system)))
 
-(define* (operating-system-profile os #:key container?)
+(define* (operating-system-profile os)
   "Return a derivation that builds the system profile of OS."
   (mlet* %store-monad
-      ((services -> (operating-system-services os #:container? container?))
+      ((services -> (operating-system-services os))
        (profile (fold-services services
                                #:target-type profile-service-type)))
     (match profile
@@ -878,7 +885,8 @@ hardware-related operations as necessary when booting a Linux container."
                #:linux (operating-system-kernel os)
                #:linux-modules
                (operating-system-initrd-modules os)
-               #:mapped-devices mapped-devices))
+               #:mapped-devices mapped-devices
+               #:keyboard-layout (operating-system-keyboard-layout os)))
 
 (define (locale-name->definition* name)
   "Variant of 'locale-name->definition' that raises an error upon failure."
@@ -912,15 +920,18 @@ listed in OS.  The C library expects to find it under
   (cond ((package? kernel)
          (string-append "GNU with "
                         (string-titlecase (package-name kernel)) " "
-                        (package-version kernel)
-                        " (beta)"))
+                        (package-version kernel)))
         ((inferior-package? kernel)
          (string-append "GNU with "
                         (string-titlecase (inferior-package-name kernel)) " "
-                        (inferior-package-version kernel)
-                        " (beta)"))
+                        (inferior-package-version kernel)))
         (else "GNU")))
 
+(define (operating-system-default-label os)
+  "Return the default label for OS, as it will appear in the bootloader menu
+entry."
+  (kernel->boot-label (operating-system-kernel os)))
+
 (define (store-file-system file-systems)
   "Return the file system object among FILE-SYSTEMS that contains the store."
   (match (filter (lambda (fs)
@@ -969,7 +980,7 @@ such as '--root' and '--load' to <boot-parameters>."
          (bootloader      (bootloader-configuration-bootloader
                            (operating-system-bootloader os)))
          (bootloader-name (bootloader-name bootloader))
-         (label           (kernel->boot-label (operating-system-kernel os))))
+         (label           (operating-system-label os)))
     (boot-parameters
      (label label)
      (root-device root-device)
diff --git a/gnu/system/accounts.scm b/gnu/system/accounts.scm
index eb18fb5e43..586cff1842 100644
--- a/gnu/system/accounts.scm
+++ b/gnu/system/accounts.scm
@@ -67,7 +67,8 @@
   (supplementary-groups user-account-supplementary-groups
                         (default '()))            ; list of strings
   (comment        user-account-comment (default ""))
-  (home-directory user-account-home-directory)
+  (home-directory user-account-home-directory (thunked)
+                  (default (default-home-directory this-record)))
   (create-home-directory? user-account-create-home-directory? ;Boolean
                           (default #t))
   (shell          user-account-shell              ; gexp
@@ -84,6 +85,10 @@
   (system?        user-group-system?              ; Boolean
                   (default #f)))
 
+(define (default-home-directory account)
+  "Return the default home directory for ACCOUNT."
+  (string-append "/home/" (user-account-name account)))
+
 (define (sexp->user-group sexp)
   "Take SEXP, a tuple as returned by 'user-group->gexp', and turn it into a
 user-group record."
diff --git a/gnu/system/examples/asus-c201.tmpl b/gnu/system/examples/asus-c201.tmpl
new file mode 100644
index 0000000000..098958f4a2
--- /dev/null
+++ b/gnu/system/examples/asus-c201.tmpl
@@ -0,0 +1,60 @@
+;; This is an operating system configuration template
+;; for a "bare bones" setup for an ASUS C201PA.
+
+(use-modules (gnu) (gnu bootloader depthcharge))
+(use-service-modules networking ssh)
+(use-package-modules linux screen)
+
+(operating-system
+  (host-name "komputilo")
+  (timezone "Europe/Berlin")
+  (locale "en_US.utf8")
+
+  ;; Assuming /dev/mmcblk0p1 is the kernel partition, and
+  ;; "my-root" is the label of the target root file system.
+  (bootloader (bootloader-configuration
+                (bootloader depthcharge-bootloader)
+                (target "/dev/mmcblk0p1")))
+
+  ;; The ASUS C201PA requires a very particular kernel to boot,
+  ;; as well as the following arguments.
+  (kernel linux-libre-arm-veyron)
+  (kernel-arguments '("console=tty1"))
+
+  ;; We do not need any special modules for initrd, and the
+  ;; PrawnOS kernel does not include many of the normal ones.
+  (initrd-modules '())
+
+  (file-systems (cons (file-system
+                        (device (file-system-label "my-root"))
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  ;; This is where user accounts are specified.  The "root"
+  ;; account is implicit, and is initially created with the
+  ;; empty password.
+  (users (cons (user-account
+                (name "alice")
+                (comment "Bob's sister")
+                (group "users")
+
+                ;; Adding the account to the "wheel" group
+                ;; makes it a sudoer.  Adding it to "audio"
+                ;; and "video" allows the user to play sound
+                ;; and access the webcam.
+                (supplementary-groups '("wheel"
+                                        "audio" "video"))
+                (home-directory "/home/alice"))
+               %base-user-accounts))
+
+  ;; Globally-installed packages.
+  (packages (cons screen %base-packages))
+
+  ;; Add services to the baseline: a DHCP client and
+  ;; an SSH server.
+  (services (append (list (service dhcp-client-service-type)
+                          (service openssh-service-type
+                                   (openssh-configuration
+                                    (port-number 2222))))
+                    %base-services)))
diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl
index a88bab034f..4f30a5b756 100644
--- a/gnu/system/examples/bare-bones.tmpl
+++ b/gnu/system/examples/bare-bones.tmpl
@@ -35,8 +35,7 @@
                 ;; and "video" allows the user to play sound
                 ;; and access the webcam.
                 (supplementary-groups '("wheel"
-                                        "audio" "video"))
-                (home-directory "/home/alice"))
+                                        "audio" "video")))
                %base-user-accounts))
 
   ;; Globally-installed packages.
diff --git a/gnu/system/examples/beaglebone-black.tmpl b/gnu/system/examples/beaglebone-black.tmpl
index 11678063b2..def05e807d 100644
--- a/gnu/system/examples/beaglebone-black.tmpl
+++ b/gnu/system/examples/beaglebone-black.tmpl
@@ -38,8 +38,7 @@
                 ;; and "video" allows the user to play sound
                 ;; and access the webcam.
                 (supplementary-groups '("wheel"
-                                        "audio" "video"))
-                (home-directory "/home/alice"))
+                                        "audio" "video")))
                %base-user-accounts))
 
   ;; Globally-installed packages.
diff --git a/gnu/system/examples/desktop.tmpl b/gnu/system/examples/desktop.tmpl
index c59bf92681..3931bad60d 100644
--- a/gnu/system/examples/desktop.tmpl
+++ b/gnu/system/examples/desktop.tmpl
@@ -3,7 +3,7 @@
 ;; root partition is encrypted with LUKS.
 
 (use-modules (gnu) (gnu system nss))
-(use-service-modules desktop)
+(use-service-modules desktop xorg)
 (use-package-modules certs gnome)
 
 (operating-system
@@ -11,11 +11,16 @@
   (timezone "Europe/Paris")
   (locale "en_US.utf8")
 
+  ;; Choose US English keyboard layout.  The "altgr-intl"
+  ;; variant provides dead keys for accented characters.
+  (keyboard-layout (keyboard-layout "us" "altgr-intl"))
+
   ;; Use the UEFI variant of GRUB with the EFI System
   ;; Partition mounted on /boot/efi.
   (bootloader (bootloader-configuration
                 (bootloader grub-efi-bootloader)
-                (target "/boot/efi")))
+                (target "/boot/efi")
+                (keyboard-layout keyboard-layout)))
 
   ;; Specify a mapped device for the encrypted root partition.
   ;; The UUID is that returned by 'cryptsetup luksUUID'.
@@ -42,8 +47,7 @@
                 (comment "Alice's brother")
                 (group "users")
                 (supplementary-groups '("wheel" "netdev"
-                                        "audio" "video"))
-                (home-directory "/home/bob"))
+                                        "audio" "video")))
                %base-user-accounts))
 
   ;; This is where we specify system-wide packages.
@@ -54,12 +58,15 @@
                      gvfs)
                     %base-packages))
 
-  ;; Add GNOME and/or Xfce---we can choose at the log-in
-  ;; screen with F1.  Use the "desktop" services, which
+  ;; Add GNOME and Xfce---we can choose at the log-in screen
+  ;; by clicking the gear.  Use the "desktop" services, which
   ;; include the X11 log-in service, networking with
   ;; NetworkManager, and more.
-  (services (append (list (gnome-desktop-service)
-                          (xfce-desktop-service))
+  (services (append (list (service gnome-desktop-service-type)
+                          (service xfce-desktop-service-type)
+                          (set-xorg-configuration
+                           (xorg-configuration
+                            (keyboard-layout keyboard-layout))))
                     %desktop-services))
 
   ;; Allow resolution of '.local' host names with mDNS.
diff --git a/gnu/system/examples/docker-image.tmpl b/gnu/system/examples/docker-image.tmpl
index 9690d651c1..ca633cc838 100644
--- a/gnu/system/examples/docker-image.tmpl
+++ b/gnu/system/examples/docker-image.tmpl
@@ -15,8 +15,7 @@
                 (comment "Bob's sister")
                 (group "users")
                 (supplementary-groups '("wheel"
-                                        "audio" "video"))
-                (home-directory "/home/alice"))
+                                        "audio" "video")))
                %base-user-accounts))
 
   ;; Globally-installed packages.
diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl
index a234badd2b..45d9bf447f 100644
--- a/gnu/system/examples/lightweight-desktop.tmpl
+++ b/gnu/system/examples/lightweight-desktop.tmpl
@@ -35,8 +35,7 @@
                 (comment "Bob's sister")
                 (group "users")
                 (supplementary-groups '("wheel" "netdev"
-                                        "audio" "video"))
-                (home-directory "/home/alice"))
+                                        "audio" "video")))
                %base-user-accounts))
 
   ;; Add a bunch of window managers; we can choose one at
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index 6dc67b0901..a140082c0b 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -1,58 +1,106 @@
-;;; This is an operating system configuration template for a "bare-bones" setup,
-;;; suitable for booting in a virtualized environment, including virtual private
-;;; servers (VPS).
+;; This is an operating system configuration for a VM image.
+;; Modify it as you see fit and instantiate the changes by running:
+;;
+;;   guix system reconfigure /etc/config.scm
+;;
 
-(use-modules (gnu))
-(use-package-modules bootloaders disk nvi)
+(use-modules (gnu) (srfi srfi-1))
+(use-service-modules desktop networking ssh xorg)
+(use-package-modules bootloaders certs fonts nvi wget xorg)
 
 (define vm-image-motd (plain-file "motd" "
-This is the GNU system.  Welcome!
+\x1b[1;37mThis is the GNU system.  Welcome!\x1b[0m
 
-This instance of Guix System is a bare-bones template for virtualized environments.
+This instance of Guix is a template for virtualized environments.
+You can reconfigure the whole system by adjusting /etc/config.scm
+and running:
 
-You will probably want to do these things first if you booted in a virtual
-private server (VPS):
+  guix system reconfigure /etc/config.scm
+
+Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation.
+
+\x1b[1;33mConsider setting a password for the 'root' and 'guest' \
+accounts.\x1b[0m
+"))
+
+(define this-file
+  (local-file (basename (assoc-ref (current-source-location) 'filename))
+              "config.scm"))
 
-* Set a password for 'root'.
-* Set up networking.
-* Expand the root partition to fill the space available by 0) deleting and
-recreating the partition with fdisk, 1) reloading the partition table with
-partprobe, and then 2) resizing the filesystem with resize2fs.\n"))
 
 (operating-system
   (host-name "gnu")
   (timezone "Etc/UTC")
   (locale "en_US.utf8")
+  (keyboard-layout (keyboard-layout "us" "altgr-intl"))
 
   (firmware '())
 
-  ;; Assuming /dev/sdX is the target hard disk, and "my-root" is
-  ;; the label of the target root file system.
+  ;; Below we assume /dev/vda is the VM's hard disk.
+  ;; Adjust as needed.
   (bootloader (bootloader-configuration
                (bootloader grub-bootloader)
-               (target "/dev/sda")
+               (target "/dev/vda")
                (terminal-outputs '(console))))
   (file-systems (cons (file-system
-                        (device (file-system-label "my-root"))
                         (mount-point "/")
+                        (device "/dev/vda1")
                         (type "ext4"))
                       %base-file-systems))
 
-  ;; This is where user accounts are specified.  The "root"
-  ;; account is implicit, and is initially created with the
-  ;; empty password.
-  (users %base-user-accounts)
-
-  ;; Globally-installed packages.
-  (packages (append (list nvi fdisk
-                          ;; mostly so xrefs to its manual work
-                          grub
-                          ;; partprobe
-                          parted)
+  (users (cons (user-account
+                (name "guest")
+                (comment "GNU Guix Live")
+                (password "")                     ;no password
+                (group "users")
+                (supplementary-groups '("wheel" "netdev"
+                                        "audio" "video")))
+               %base-user-accounts))
+
+  ;; Our /etc/sudoers file.  Since 'guest' initially has an empty password,
+  ;; allow for password-less sudo.
+  (sudoers-file (plain-file "sudoers" "\
+root ALL=(ALL) ALL
+%wheel ALL=NOPASSWD: ALL\n"))
+
+  (packages (append (list font-bitstream-vera nss-certs nvi wget)
                     %base-packages))
 
-  (services (modify-services %base-services
-              (login-service-type config =>
-                                  (login-configuration
-                                    (inherit config)
-                                    (motd vm-image-motd))))))
+  (services
+   (append (list (service xfce-desktop-service-type)
+
+                 ;; Copy this file to /etc/config.scm in the OS.
+                 (simple-service 'config-file etc-service-type
+                                 `(("config.scm" ,this-file)))
+
+                 ;; Choose SLiM, which is lighter than the default GDM.
+                 (service slim-service-type
+                          (slim-configuration
+                           (auto-login? #t)
+                           (default-user "guest")
+                           (xorg-configuration
+                            (xorg-configuration
+                             (keyboard-layout keyboard-layout)))))
+
+                 ;; Uncomment the line below to add an SSH server.
+                 ;;(service openssh-service-type)
+
+                 ;; Use the DHCP client service rather than NetworkManager.
+                 (service dhcp-client-service-type))
+
+           ;; Remove GDM, NetworkManager, and wpa-supplicant, which don't make
+           ;; sense in a VM.
+           (remove (lambda (service)
+                     (let ((type (service-kind service)))
+                       (memq type (list gdm-service-type
+                                        wpa-supplicant-service-type
+                                        cups-pk-helper-service-type
+                                        network-manager-service-type))))
+                   (modify-services %desktop-services
+                     (login-service-type config =>
+                                         (login-configuration
+                                          (inherit config)
+                                          (motd vm-image-motd)))))))
+
+  ;; Allow resolution of '.local' host names with mDNS.
+  (name-service-switch %mdns-host-lookup-nss))
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index bad318d06b..45c6051732 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -27,6 +27,7 @@
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix monads)
+  #:use-module ((guix packages) #:select (package-version))
   #:use-module ((guix store) #:select (%store-prefix))
   #:use-module (gnu installer)
   #:use-module (gnu services dbus)
@@ -73,19 +74,94 @@
 ;;; Code:
 
 
-(define (log-to-info)
+;;;
+;;; Documentation service.
+;;;
+
+(define %installation-node-names
+  ;; Translated name of the "System Installation" node of the manual.  Ideally
+  ;; we'd extract it from the 'guix-manual' gettext domain, but that one is
+  ;; usually not available at run time, hence this hack.
+  '(("de" . "Systeminstallation")
+    ("en" . "System Installation")
+    ("es" . "Instalación del sistema")
+    ("fr" . "Installation du système")))
+
+(define (log-to-info tty user)
   "Return a script that spawns the Info reader on the right section of the
 manual."
   (program-file "log-to-info"
-                #~(begin
+                #~(let* ((tty      (open-file #$(string-append "/dev/" tty)
+                                              "r0+"))
+                         (locale   (cadr (command-line)))
+                         (language (string-take locale
+                                                (string-index locale #\_)))
+                         (infodir  "/run/current-system/profile/share/info")
+                         (per-lang (string-append infodir "/guix." language
+                                                  ".info.gz"))
+                         (file     (if (file-exists? per-lang)
+                                       per-lang
+                                       (string-append infodir "/guix.info")))
+                         (node     (or (assoc-ref '#$%installation-node-names
+                                                  language)
+                                       "System Installation")))
+                    (redirect-port tty (current-output-port))
+                    (redirect-port tty (current-error-port))
+                    (redirect-port tty (current-input-port))
+
+                    (let ((pw (getpwnam #$user)))
+                      (setgid (passwd:gid pw))
+                      (setuid (passwd:uid pw)))
+
                     ;; 'gunzip' is needed to decompress the doc.
                     (setenv "PATH" (string-append #$gzip "/bin"))
 
-                    (execl (string-append #$info-reader "/bin/info") "info"
-                           "-d" "/run/current-system/profile/share/info"
-                           "-f" (string-append #$guix "/share/info/guix.info")
-                           "-n" "System Installation"))))
+                    ;; Change this process' locale so that command-line
+                    ;; arguments to 'info' are properly encoded.
+                    (catch #t
+                      (lambda ()
+                        (setlocale LC_ALL locale)
+                        (setenv "LC_ALL" locale))
+                      (lambda _
+                        ;; Sometimes LOCALE itself is not available.  In that
+                        ;; case pick the one UTF-8 locale that's known to work
+                        ;; instead of failing.
+                        (setlocale LC_ALL "en_US.utf8")
+                        (setenv "LC_ALL" "en_US.utf8")))
+
+                    (execl #$(file-append info-reader "/bin/info")
+                           "info" "-d" infodir "-f" file "-n" node))))
+
+(define (documentation-shepherd-service tty)
+  (list (shepherd-service
+         (provision (list (symbol-append 'term- (string->symbol tty))))
+         (requirement '(user-processes host-name udev virtual-terminal))
+         (start #~(lambda* (#:optional (locale "en_US.utf8"))
+                    (fork+exec-command
+                     (list #$(log-to-info tty "documentation") locale)
+                     #:environment-variables
+                     `("GUIX_LOCPATH=/run/current-system/locale"
+                       "TERM=linux"))))
+         (stop #~(make-kill-destructor)))))
+
+(define %documentation-users
+  ;; User account for the Info viewer.
+  (list (user-account (name "documentation")
+                      (system? #t)
+                      (group "nogroup")
+                      (home-directory "/var/empty"))))
+
+(define documentation-service-type
+  ;; Documentation viewer service.
+  (service-type (name 'documentation)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          documentation-shepherd-service)
+                       (service-extension account-service-type
+                                          (const %documentation-users))))
+                (description "Run the Info reader on a tty.")))
 
+
 (define %backing-directory
   ;; Sub-directory used as the backing store for copy-on-write.
   "/tmp/guix-inst")
@@ -212,13 +288,11 @@ the user's target storage device rather than on the RAM disk."
 (define %installation-services
   ;; List of services of the installation system.
   (let ((motd (plain-file "motd" "
-\x1b[1;37mWelcome to the installation of the Guix System Distribution!\x1b[0m
-
-\x1b[2mThere is NO WARRANTY, to the extent permitted by law.  In particular, you may
-LOSE ALL YOUR DATA as a side effect of the installation process.  Furthermore,
-it is 'beta' software, so it may contain bugs.
+\x1b[1;37mWelcome to the installation of GNU Guix!\x1b[0m
 
-You have been warned.  Thanks for being so brave.\x1b[0m
+\x1b[2m\
+Using this shell, you can carry out the installation process \"manually.\"
+Access documentation at any time by pressing Alt-F2.\x1b[0m
 ")))
     (define (normal-tty tty)
       (mingetty-service (mingetty-configuration (tty tty)
@@ -241,10 +315,7 @@ You have been warned.  Thanks for being so brave.\x1b[0m
           ;; Documentation.  The manual is in UTF-8, but
           ;; 'console-font-service' sets up Unicode support and loads a font
           ;; with all the useful glyphs like em dash and quotation marks.
-          (mingetty-service (mingetty-configuration
-                             (tty "tty2")
-                             (auto-login "guest")
-                             (login-program (log-to-info))))
+          (service documentation-service-type "tty2")
 
           ;; Documentation add-on.
           %configuration-template-service
@@ -273,12 +344,18 @@ You have been warned.  Thanks for being so brave.\x1b[0m
           ;; since it takes the installation directory as an argument.
           (cow-store-service)
 
-          ;; Install Unicode support and a suitable font.  Use a font that
-          ;; doesn't have more than 256 glyphs so that we can use colors with
-          ;; varying brightness levels (see note in setfont(8)).
+          ;; Install Unicode support and a suitable font.
           (service console-font-service-type
-                   (map (lambda (tty)
-                          (cons tty "lat9u-16"))
+                   (map (match-lambda
+                          ("tty2"
+                           ;; Use a font that contains characters such as
+                           ;; curly quotes as found in the manual.
+                           '("tty2" . "LatGrkCyr-8x16"))
+                          (tty
+                           ;; Use a font that doesn't have more than 256
+                           ;; glyphs so that we can use colors with varying
+                           ;; brightness levels (see note in setfont(8)).
+                           `(,tty . "lat9u-16")))
                         '("tty1" "tty2" "tty3" "tty4" "tty5" "tty6")))
 
           ;; To facilitate copy/paste.
@@ -348,6 +425,15 @@ You have been warned.  Thanks for being so brave.\x1b[0m
     (bootloader (bootloader-configuration
                  (bootloader grub-bootloader)
                  (target "/dev/sda")))
+    (label (string-append "GNU Guix installation "
+                          (package-version guix)))
+
+    ;; XXX: The AMD Radeon driver is reportedly broken, which makes kmscon
+    ;; non-functional:
+    ;; <https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00441.html>.
+    ;; Thus, blacklist it.
+    (kernel-arguments '("quiet" "modprobe.blacklist=radeon"))
+
     (file-systems
      ;; Note: the disk image build code overrides this root file system with
      ;; the appropriate one.
@@ -379,8 +465,7 @@ You have been warned.  Thanks for being so brave.\x1b[0m
                   (group "users")
                   (supplementary-groups '("wheel")) ; allow use of sudo
                   (password "")
-                  (comment "Guest of GNU")
-                  (home-directory "/home/guest"))))
+                  (comment "Guest of GNU"))))
 
     (issue %issue)
     (services %installation-services)
diff --git a/gnu/system/keyboard.scm b/gnu/system/keyboard.scm
new file mode 100644
index 0000000000..cd3ab37b27
--- /dev/null
+++ b/gnu/system/keyboard.scm
@@ -0,0 +1,98 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system keyboard)
+  #:use-module (guix gexp)
+  #:use-module ((gnu packages xorg)
+                #:select (xkeyboard-config console-setup))
+  #:use-module (srfi srfi-9 gnu)
+  #:use-module (ice-9 match)
+  #:export (keyboard-layout?
+            keyboard-layout
+            keyboard-layout-name
+            keyboard-layout-variant
+            keyboard-layout-model
+            keyboard-layout-options
+
+            keyboard-layout->console-keymap))
+
+;;; Commentary:
+;;;
+;;; This module provides a data structure to represent keyboard layouts
+;;; according to the XKB naming and classification (see the 'xkeyboard-config'
+;;; package).
+;;;
+;;; Code:
+
+(define-immutable-record-type <keyboard-layout>
+  (%keyboard-layout name variant model options)
+  keyboard-layout?
+  (name      keyboard-layout-name)                ;string
+  (variant   keyboard-layout-variant)             ;#f | string
+  (model     keyboard-layout-model)               ;#f | string
+  (options   keyboard-layout-options))            ;list of strings
+
+(define* (keyboard-layout name #:optional variant
+                          #:key model (options '()))
+  "Return a new keyboard layout with the given NAME and VARIANT.
+
+NAME must be a string such as \"fr\"; VARIANT must be a string such as
+\"bepo\" or \"nodeadkeys\".  See the 'xkeyboard-config' package for valid
+options."
+  (%keyboard-layout name variant model options))
+
+(define* (keyboard-layout->console-keymap layout
+                                          #:key
+                                          (xkeyboard-config xkeyboard-config))
+  "Return a Linux console keymap file for LAYOUT, a <keyboard-layout> record.
+Layout information is taken from the XKEYBOARD-CONFIG package."
+  (define build
+    (with-imported-modules '((guix build utils))
+      #~(begin
+          (use-modules (guix build utils)
+                       (ice-9 popen)
+                       (ice-9 match))
+
+          (define pipe
+            (open-pipe* OPEN_READ
+                        #+(file-append console-setup "/bin/ckbcomp")
+                        (string-append "-I"
+                                       #+(file-append xkeyboard-config
+                                                      "/share/X11/xkb"))
+                        "-rules" "base"
+                        #$@(match (keyboard-layout-model layout)
+                             (#f      '())
+                             (model   `("-model" ,model)))
+                        #$(keyboard-layout-name layout)
+                        #$(or (keyboard-layout-variant layout)
+                              "")
+                        #$(string-join (keyboard-layout-options layout) ",")))
+
+          (call-with-output-file #$output
+            (lambda (output)
+              (dump-port pipe output)))
+
+          ;; Note: ckbcomp errors out when the layout name is unknown, but
+          ;; merely emits a warning when the variant is unknown.
+          (unless (zero? (close-pipe pipe))
+            (error "failed to create console keymap for keyboard layout"
+                   #$(keyboard-layout-name layout))))))
+
+  (computed-file (string-append "console-keymap."
+                                (keyboard-layout-name layout))
+                 build))
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index 3fe3482d7f..149c3d08a3 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -35,6 +35,24 @@
             containerized-operating-system
             container-script))
 
+(define (container-essential-services os)
+  "Return a list of essential services corresponding to OS, a
+non-containerized OS.  This procedure essentially strips essential services
+from OS that are needed on the bare metal and not in a container."
+  (define base
+    (remove (lambda (service)
+              (memq (service-kind service)
+                    (list (service-kind %linux-bare-metal-service)
+                          firmware-service-type
+                          system-service-type)))
+            (operating-system-essential-services os)))
+
+  (cons (service system-service-type
+                 (let ((locale (operating-system-locale-directory os)))
+                   (with-monad %store-monad
+                     (return `(("locale" ,locale))))))
+        base))
+
 (define (containerized-operating-system os mappings)
   "Return an operating system based on OS for use in a Linux container
 environment.  MAPPINGS is a list of <file-system-mapping> to realize in the
@@ -62,8 +80,10 @@ containerized OS."
           mingetty-service-type
           agetty-service-type))
 
-  (operating-system (inherit os)
+  (operating-system
+    (inherit os)
     (swap-devices '()) ; disable swap
+    (essential-services (container-essential-services os))
     (services (remove (lambda (service)
                         (memq (service-kind service)
                               useless-services))
@@ -81,30 +101,26 @@ that will be shared with the host system."
                                (operating-system-file-systems os)))
          (specs        (map file-system->spec file-systems)))
 
-    (mlet* %store-monad ((os-drv (operating-system-derivation
-                                  os
-                                  #:container? #t)))
-
-      (define script
-        (with-imported-modules (source-module-closure
-                                '((guix build utils)
-                                  (gnu build linux-container)))
-          #~(begin
-              (use-modules (gnu build linux-container)
-                           (gnu system file-systems) ;spec->file-system
-                           (guix build utils))
+    (define script
+      (with-imported-modules (source-module-closure
+                              '((guix build utils)
+                                (gnu build linux-container)))
+        #~(begin
+            (use-modules (gnu build linux-container)
+                         (gnu system file-systems) ;spec->file-system
+                         (guix build utils))
 
-              (call-with-container (map spec->file-system '#$specs)
-                (lambda ()
-                  (setenv "HOME" "/root")
-                  (setenv "TMPDIR" "/tmp")
-                  (setenv "GUIX_NEW_SYSTEM" #$os-drv)
-                  (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
-                  (primitive-load (string-append #$os-drv "/boot")))
-                ;; A range of 65536 uid/gids is used to cover 16 bits worth of
-                ;; users and groups, which is sufficient for most cases.
-                ;;
-                ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
-                #:host-uids 65536))))
+            (call-with-container (map spec->file-system '#$specs)
+              (lambda ()
+                (setenv "HOME" "/root")
+                (setenv "TMPDIR" "/tmp")
+                (setenv "GUIX_NEW_SYSTEM" #$os)
+                (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var"))
+                (primitive-load (string-append #$os "/boot")))
+              ;; A range of 65536 uid/gids is used to cover 16 bits worth of
+              ;; users and groups, which is sufficient for most cases.
+              ;;
+              ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
+              #:host-uids 65536))))
 
-      (gexp->script "run-container" script))))
+    (gexp->script "run-container" script)))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 983c6d81c8..656afd1ddb 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -31,10 +31,13 @@
   #:use-module (gnu packages disk)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages guile)
+  #:use-module ((gnu packages xorg)
+                #:select (console-setup xkeyboard-config))
   #:use-module ((gnu packages make-bootstrap)
                 #:select (%guile-static-stripped))
   #:use-module (gnu system file-systems)
   #:use-module (gnu system mapped-devices)
+  #:use-module (gnu system keyboard)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 vlist)
@@ -139,6 +142,7 @@ MODULES and taken from LINUX."
                       (linux linux-libre)
                       (linux-modules '())
                       (mapped-devices '())
+                      (keyboard-layout #f)
                       (helper-packages '())
                       qemu-networking?
                       volatile-root?
@@ -152,6 +156,11 @@ mappings to realize before FILE-SYSTEMS are mounted.
 HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include
 e2fsck/static or other packages needed by the initrd to check root partition.
 
+When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired
+console keyboard layout.  This is done before MAPPED-DEVICES are set up and
+before FILE-SYSTEMS are mounted such that, should the user need to enter a
+passphrase or use the REPL, this happens using the intended keyboard layout.
+
 When QEMU-NETWORKING? is true, set up networking with the standard QEMU
 parameters.
 
@@ -206,6 +215,8 @@ upon error."
                                     (and #$@device-mapping-commands))
                       #:linux-modules '#$linux-modules
                       #:linux-module-directory '#$kodir
+                      #:keymap-file #+(and=> keyboard-layout
+                                             keyboard-layout->console-keymap)
                       #:qemu-guest-networking? #$qemu-networking?
                       #:volatile-root? '#$volatile-root?
                       #:on-error '#$on-error)))
@@ -290,6 +301,7 @@ FILE-SYSTEMS."
                       (linux linux-libre)
                       (linux-modules '())
                       (mapped-devices '())
+                      (keyboard-layout #f)
                       qemu-networking?
                       volatile-root?
                       (extra-modules '())         ;deprecated
@@ -300,6 +312,11 @@ mounted by the initrd, possibly in addition to the root file system specified
 on the kernel command line via '--root'.  MAPPED-DEVICES is a list of device
 mappings to realize before FILE-SYSTEMS are mounted.
 
+When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired
+console keyboard layout.  This is done before MAPPED-DEVICES are set up and
+before FILE-SYSTEMS are mounted such that, should the user need to enter a
+passphrase or use the REPL, this happens using the intended keyboard layout.
+
 QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd.
 
 The initrd is automatically populated with all the kernel modules necessary
@@ -316,13 +333,18 @@ loaded at boot time in the order in which they appear."
       ,@extra-modules))
 
   (define helper-packages
-    (file-system-packages file-systems #:volatile-root? volatile-root?))
+    (append (file-system-packages file-systems
+                                  #:volatile-root? volatile-root?)
+            (if keyboard-layout
+                (list loadkeys-static)
+                '())))
 
   (raw-initrd file-systems
               #:linux linux
               #:linux-modules linux-modules*
               #:mapped-devices mapped-devices
               #:helper-packages helper-packages
+              #:keyboard-layout keyboard-layout
               #:qemu-networking? qemu-networking?
               #:volatile-root? volatile-root?
               #:on-error on-error))
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 7dc36f4a45..13b8b14095 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -323,6 +323,7 @@ accounts among ACCOUNTS+GROUPS."
   (list (shepherd-service
          (requirement '(file-systems))
          (provision '(user-homes))
+         (one-shot? #t)
          (modules '((gnu build activation)
                     (gnu system accounts)))
          (start (with-imported-modules (source-module-closure
@@ -332,9 +333,7 @@ accounts among ACCOUNTS+GROUPS."
                       (activate-user-home
                        (map sexp->user-account
                             (list #$@(map user-account->gexp accounts))))
-                      #f)))                       ;stop
-         (stop #~(const #f))
-         (respawn? #f)
+                      #t)))                       ;success
          (documentation "Create user home directories."))))
 
 (define (shells-file shells)
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 55cddb1a4b..92b03b01ad 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -58,6 +58,7 @@
   #:use-module (gnu bootloader grub)
   #:use-module (gnu system shadow)
   #:use-module (gnu system pam)
+  #:use-module (gnu system linux-container)
   #:use-module (gnu system linux-initrd)
   #:use-module (gnu bootloader)
   #:use-module (gnu system file-systems)
@@ -93,6 +94,12 @@
 (define %linux-vm-file-systems
   ;; File systems mounted for 'derivation-in-linux-vm'.  These are shared with
   ;; the host over 9p.
+  ;;
+  ;; The 9p documentation says that cache=loose is "intended for exclusive,
+  ;; read-only mounts", without additional details.  It's much faster than the
+  ;; default cache=none, especially when copying and registering store items.
+  ;; Thus, use cache=loose, except for /xchg where we want to ensure
+  ;; consistency.
   (list (file-system
           (mount-point (%store-prefix))
           (device "store")
@@ -101,18 +108,12 @@
           (flags '(read-only))
           (options "trans=virtio,cache=loose")
           (check? #f))
-
-        ;; The 9p documentation says that cache=loose is "intended for
-        ;; exclusive, read-only mounts", without additional details.  In
-        ;; practice it seems to work well for these, and it's much faster than
-        ;; the default cache=none, especially when copying and registering
-        ;; store items.
         (file-system
           (mount-point "/xchg")
           (device "xchg")
           (type "9p")
           (needed-for-boot? #t)
-          (options "trans=virtio,cache=loose")
+          (options "trans=virtio")
           (check? #f))
         (file-system
           (mount-point "/tmp")
@@ -320,7 +321,10 @@ INPUTS is a list of inputs (as for packages)."
 
    #:make-disk-image? #f
    #:single-file-output? #t
-   #:references-graphs inputs))
+   #:references-graphs inputs
+
+   ;; Xorriso seems to be quite memory-hungry, so increase the VM's RAM size.
+   #:memory-size 512))
 
 (define* (qemu-image #:key
                      (name "qemu-image")
@@ -473,9 +477,9 @@ should set REGISTER-CLOSURES? to #f."
          (local-file (search-path %load-path
                                   "guix/store/schema.sql"))))
 
-  (mlet %store-monad ((os-drv (operating-system-derivation os #:container? #t))
-                      (name -> (string-append name ".tar.gz"))
-                      (graph -> "system-graph"))
+  (let ((os    (containerized-operating-system os '()))
+        (name  (string-append name ".tar.gz"))
+        (graph "system-graph"))
     (define build
       (with-extensions (cons guile-json           ;for (guix docker)
                              gcrypt-sqlite3&co)   ;for (guix store database)
@@ -505,7 +509,7 @@ should set REGISTER-CLOSURES? to #f."
                      (initialize (root-partition-initializer
                                   #:closures '(#$graph)
                                   #:register-closures? #$register-closures?
-                                  #:system-directory #$os-drv
+                                  #:system-directory #$os
                                   ;; De-duplication would fail due to
                                   ;; cross-device link errors, so don't do it.
                                   #:deduplicate? #f))
@@ -523,18 +527,15 @@ should set REGISTER-CLOSURES? to #f."
                              (call-with-input-file
                                  (string-append "/xchg/" #$graph)
                                read-reference-graph)))
-                 #$os-drv
+                 #$os
                  #:compressor '(#+(file-append gzip "/bin/gzip") "-9n")
                  #:creation-time (make-time time-utc 0 1)
-                 #:transformations `((,root-directory -> "")))
-
-                ;; Make sure the tarball is fully written before rebooting.
-                (sync))))))
+                 #:transformations `((,root-directory -> ""))))))))
     (expression->derivation-in-linux-vm
      name build
      #:make-disk-image? #f
      #:single-file-output? #t
-     #:references-graphs `((,graph ,os-drv)))))
+     #:references-graphs `((,graph ,os)))))
 
 
 ;;;
@@ -616,7 +617,7 @@ to USB sticks meant to be read-only."
     ;; Volume name of the root file system.
     (normalize-label "Guix_image"))
 
-  (define root-uuid
+  (define (root-uuid os)
     ;; UUID of the root file system, computed in a deterministic fashion.
     ;; This is what we use to locate the root file system so it has to be
     ;; different from the user's own file system UUIDs.
@@ -646,17 +647,26 @@ to USB sticks meant to be read-only."
                                  (bootloader grub-mkrescue-bootloader))
                                (operating-system-bootloader os)))
 
-               ;; Force our own root file system.
+               ;; Force our own root file system.  (We need a "/" file system
+               ;; to call 'root-uuid'.)
                (file-systems (cons (file-system
                                      (mount-point "/")
-                                     (device root-uuid)
+                                     (device "/dev/placeholder")
+                                     (type file-system-type))
+                                   file-systems-to-keep))))
+         (uuid (root-uuid os))
+         (os (operating-system
+               (inherit os)
+               (file-systems (cons (file-system
+                                     (mount-point "/")
+                                     (device uuid)
                                      (type file-system-type))
                                    file-systems-to-keep))))
         (bootcfg (operating-system-bootcfg os)))
     (if (string=? "iso9660" file-system-type)
         (iso9660-image #:name name
                        #:file-system-label root-label
-                       #:file-system-uuid root-uuid
+                       #:file-system-uuid uuid
                        #:os os
                        #:register-closures? #t
                        #:bootcfg-drv bootcfg
@@ -673,7 +683,7 @@ to USB sticks meant to be read-only."
                     #:disk-image-format "raw"
                     #:file-system-type file-system-type
                     #:file-system-label root-label
-                    #:file-system-uuid root-uuid
+                    #:file-system-uuid uuid
                     #:copy-inputs? #t
                     #:register-closures? #t
                     #:inputs `(("system" ,os)
@@ -790,6 +800,7 @@ environment with the store shared with the host.  MAPPINGS is a list of
     ;; force the traditional i386/BIOS method.
     ;; See <https://bugs.gnu.org/28768>.
     (bootloader (bootloader-configuration
+                  (inherit (operating-system-bootloader os))
                   (bootloader grub-bootloader)
                   (target "/dev/vda")))
 
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 9e8eed7d95..0871b4c6f7 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -219,8 +219,7 @@ the system under test."
                   (name "alice")
                   (comment "Bob's sister")
                   (group "users")
-                  (supplementary-groups '("wheel" "audio" "video"))
-                  (home-directory "/home/alice"))
+                  (supplementary-groups '("wheel" "audio" "video")))
                  %base-user-accounts))))
 
 (define-syntax-rule (simple-operating-system user-services ...)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 277908cc49..430a102378 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -74,8 +74,7 @@
                   (name "alice")
                   (comment "Bob's sister")
                   (group "users")
-                  (supplementary-groups '("wheel" "audio" "video"))
-                  (home-directory "/home/alice"))
+                  (supplementary-groups '("wheel" "audio" "video")))
                  %base-user-accounts))
     (services (cons (service marionette-service-type
                              (marionette-configuration
@@ -357,8 +356,7 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.")
                   (name "alice")
                   (comment "Bob's sister")
                   (group "users")
-                  (supplementary-groups '("wheel" "audio" "video"))
-                  (home-directory "/home/alice"))
+                  (supplementary-groups '("wheel" "audio" "video")))
                  %base-user-accounts))
     (services (cons (service marionette-service-type
                              (marionette-configuration
@@ -435,12 +433,10 @@ reboot\n")
                          %base-file-systems))
     (users (cons* (user-account
                    (name "alice")
-                   (group "users")
-                   (home-directory "/home/alice"))
+                   (group "users"))
                   (user-account
                    (name "charlie")
-                   (group "users")
-                   (home-directory "/home/charlie"))
+                   (group "users"))
                   %base-user-accounts))
     (services (cons (service marionette-service-type
                              (marionette-configuration
@@ -508,8 +504,8 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 100M \\
-  mkpart primary ext2 100M 1.2G \\
+  mkpart primary ext2 3M 400M \\
+  mkpart primary ext2 400M 2.1G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L root-fs /dev/vdb2
@@ -518,6 +514,7 @@ mount /dev/vdb2 /mnt
 mkdir /mnt/gnu
 mount /dev/vdb3 /mnt/gnu
 df -h /mnt
+df -h /mnt/gnu
 herd start cow-store /mnt
 mkdir /mnt/etc
 cp /etc/target-config.scm /mnt/etc/config.scm
@@ -655,7 +652,6 @@ by 'mdadm'.")
     (users (cons (user-account
                   (name "charlie")
                   (group "users")
-                  (home-directory "/home/charlie")
                   (supplementary-groups '("wheel" "audio" "video")))
                  %base-user-accounts))
     (services (cons (service marionette-service-type
@@ -776,7 +772,6 @@ build (current-guix) and then store a couple of full system images.")
     (users (cons (user-account
                   (name "charlie")
                   (group "users")
-                  (home-directory "/home/charlie")
                   (supplementary-groups '("wheel" "audio" "video")))
                  %base-user-accounts))
     (services (cons (service marionette-service-type
diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm
index a97b29bc4b..d1234442bb 100644
--- a/gnu/tests/networking.scm
+++ b/gnu/tests/networking.scm
@@ -178,9 +178,7 @@ port 7, and a dict service on port 2628."
    (static-networking-service "ovs0" "10.1.1.1"
                               #:netmask "255.255.255.252"
                               #:requirement '(openvswitch-configuration))
-   (service openvswitch-service-type
-            (openvswitch-configuration
-             (package openvswitch)))
+   (service openvswitch-service-type)
    openvswitch-configuration-service))
 
 (define (run-openvswitch-test)