summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/accounts.scm2
-rw-r--r--gnu/build/cross-toolchain.scm6
-rw-r--r--gnu/ci.scm8
-rw-r--r--gnu/installer.scm21
-rw-r--r--gnu/installer/newt/page.scm9
-rw-r--r--gnu/installer/newt/user.scm7
-rw-r--r--gnu/installer/newt/wifi.scm4
-rw-r--r--gnu/local.mk8
-rw-r--r--gnu/packages/agda.scm46
-rw-r--r--gnu/packages/astronomy.scm4
-rw-r--r--gnu/packages/audio.scm9
-rw-r--r--gnu/packages/bittorrent.scm8
-rw-r--r--gnu/packages/cedille.scm124
-rw-r--r--gnu/packages/chromium.scm4
-rw-r--r--gnu/packages/ci.scm6
-rw-r--r--gnu/packages/cran.scm39
-rw-r--r--gnu/packages/crates-io.scm1774
-rw-r--r--gnu/packages/cups.scm6
-rw-r--r--gnu/packages/cvassistant.scm90
-rw-r--r--gnu/packages/databases.scm14
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/education.scm40
-rw-r--r--gnu/packages/emacs-xyz.scm129
-rw-r--r--gnu/packages/emulators.scm32
-rw-r--r--gnu/packages/enlightenment.scm31
-rw-r--r--gnu/packages/fpga.scm8
-rw-r--r--gnu/packages/ghostscript.scm27
-rw-r--r--gnu/packages/glib.scm38
-rw-r--r--gnu/packages/gnome.scm10
-rw-r--r--gnu/packages/gnunet.scm7
-rw-r--r--gnu/packages/golang.scm24
-rw-r--r--gnu/packages/gsasl.scm2
-rw-r--r--gnu/packages/gtk.scm4
-rw-r--r--gnu/packages/guile-xyz.scm165
-rw-r--r--gnu/packages/guile.scm11
-rw-r--r--gnu/packages/ipfs.scm4
-rw-r--r--gnu/packages/linux.scm38
-rw-r--r--gnu/packages/lisp.scm98
-rw-r--r--gnu/packages/mail.scm5
-rw-r--r--gnu/packages/make-bootstrap.scm154
-rw-r--r--gnu/packages/maths.scm4
-rw-r--r--gnu/packages/mingw.scm6
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/package-management.scm161
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/password-utils.scm24
-rw-r--r--gnu/packages/patches/bash-4.4-linux-pgrp-pipe.patch30
-rw-r--r--gnu/packages/patches/enlightenment-fix-setuid-path.patch74
-rw-r--r--gnu/packages/patches/libextractor-exiv2.patch124
-rw-r--r--gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch218
-rw-r--r--gnu/packages/patches/mingw-w64-6.0.0-gcc.patch65
-rw-r--r--gnu/packages/perl.scm7
-rw-r--r--gnu/packages/python-web.scm23
-rw-r--r--gnu/packages/python-xyz.scm94
-rw-r--r--gnu/packages/qt.scm3
-rw-r--r--gnu/packages/rednotebook.scm91
-rw-r--r--gnu/packages/ruby.scm129
-rw-r--r--gnu/packages/security-token.scm4
-rw-r--r--gnu/packages/terminals.scm56
-rw-r--r--gnu/packages/text-editors.scm53
-rw-r--r--gnu/packages/textutils.scm109
-rw-r--r--gnu/packages/tls.scm8
-rw-r--r--gnu/packages/video.scm23
-rw-r--r--gnu/packages/web-browsers.scm181
-rw-r--r--gnu/packages/web.scm34
-rw-r--r--gnu/packages/webkit.scm6
-rw-r--r--gnu/packages/wine.scm4
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/services/cuirass.scm29
-rw-r--r--gnu/services/cups.scm21
-rw-r--r--gnu/services/desktop.scm40
-rw-r--r--gnu/services/pm.scm7
-rw-r--r--gnu/tests/docker.scm13
73 files changed, 4002 insertions, 671 deletions
diff --git a/gnu/build/accounts.scm b/gnu/build/accounts.scm
index 5094456ab1..f60d68d9b3 100644
--- a/gnu/build/accounts.scm
+++ b/gnu/build/accounts.scm
@@ -238,7 +238,7 @@ to it atomically and set the appropriate permissions."
       (for-each (lambda (entry)
                   (display (entry->string entry) port)
                   (newline port))
-                entries))
+                (delete-duplicates entries)))
 
     (if (port? file-or-port)
         (write-entries file-or-port)
diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm
index 1704157750..6bdbdd5411 100644
--- a/gnu/build/cross-toolchain.scm
+++ b/gnu/build/cross-toolchain.scm
@@ -128,7 +128,11 @@ C_*INCLUDE_PATH."
 
             (substitute* (string-append mingw-headers "/crt/_mingw.h")
               (("@MINGW_HAS_SECURE_API@")
-               "#define MINGW_HAS_SECURE_API 1"))
+               "#define MINGW_HAS_SECURE_API 1")
+              (("@DEFAULT_WIN32_WINNT@")
+               "0x502")
+              (("@DEFAULT_MSVCRT_VERSION@")
+               "0x700"))
 
             (let ((cpath (string-append mingw-headers "/include"
                                         ":" mingw-headers "/crt"
diff --git a/gnu/ci.scm b/gnu/ci.scm
index aeebd4f14b..5d5a826647 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -331,8 +331,12 @@ valid."
   "Return the list of packages to build."
   (define (adjust package result)
     (cond ((package-replacement package)
-           (cons* package                         ;build both
-                  (package-replacement package)
+           ;; XXX: If PACKAGE and its replacement have the same name/version,
+           ;; then both Cuirass jobs will have the same name, which
+           ;; effectively means that the second one will be ignored.  Thus,
+           ;; return the replacement first.
+           (cons* (package-replacement package)   ;build both
+                  package
                   result))
           ((package-superseded package)
            result)                                ;don't build it
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 15d971dfc4..167653263f 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -226,15 +227,6 @@ selected keymap."
                      (#$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.
-         (installer-step
-          (id 'partition)
-          (description (G_ "Partitioning"))
-          (compute (lambda _
-                     ((installer-partition-page current-installer))))
-          (configuration-formatter user-partitions->configuration))
-
          ;; Ask the user to input a hostname for the system.
          (installer-step
           (id 'hostname)
@@ -267,6 +259,17 @@ selected keymap."
                      ((installer-services-page current-installer))))
 	  (configuration-formatter system-services->configuration))
 
+         ;; Run a partitioning tool allowing the user to modify
+         ;; partition tables, partitions and their mount points.
+         ;; Do this last so the user has something to boot if any
+         ;; of the previous steps didn't go as expected.
+         (installer-step
+          (id 'partition)
+          (description (G_ "Partitioning"))
+          (compute (lambda _
+                     ((installer-partition-page current-installer))))
+          (configuration-formatter user-partitions->configuration))
+
 	 (installer-step
           (id 'final)
           (description (G_ "Configuration file"))
diff --git a/gnu/installer/newt/page.scm b/gnu/installer/newt/page.scm
index 728721c08f..630efde9cc 100644
--- a/gnu/installer/newt/page.scm
+++ b/gnu/installer/newt/page.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,7 +76,7 @@ this page to TITLE."
                          #:key
                          (allow-empty-input? #f)
                          (default-text #f)
-                         (input-hide-checkbox? #f)
+                         (input-visibility-checkbox? #f)
                          (input-field-width 40)
                          (input-flags 0))
   "Run a page to prompt user for an input. The given TEXT will be displayed
@@ -88,8 +89,8 @@ input box, such as FLAG-PASSWORD."
                                  input-field-width
                                  #:flags FLAG-BORDER))
          (input-visible-cb
-          (make-checkbox -1 -1 (G_ "Hide") #\x "x "))
-         (input-flags* (if input-hide-checkbox?
+          (make-checkbox -1 -1 (G_ "Show") #\space "x "))
+         (input-flags* (if input-visibility-checkbox?
                            (logior FLAG-PASSWORD FLAG-SCROLL
                                    input-flags)
                            input-flags))
@@ -102,7 +103,7 @@ input box, such as FLAG-PASSWORD."
                 (apply
                  horizontal-stacked-grid
                  GRID-ELEMENT-COMPONENT input-entry
-                 `(,@(if input-hide-checkbox?
+                 `(,@(if input-visibility-checkbox?
                          (list GRID-ELEMENT-COMPONENT input-visible-cb)
                          '())))
                 GRID-ELEMENT-COMPONENT ok-button))
diff --git a/gnu/installer/newt/user.scm b/gnu/installer/newt/user.scm
index dab805198f..b747886c55 100644
--- a/gnu/installer/newt/user.scm
+++ b/gnu/installer/newt/user.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,7 +56,7 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
          (entry-home-directory (make-entry -1 -1 entry-width
                                            #:initial-value home-directory))
          (password-visible-cb
-          (make-checkbox -1 -1 (G_ "Hide") #\x "x "))
+          (make-checkbox -1 -1 (G_ "Show") #\space "x "))
          (entry-password (make-entry -1 -1 entry-width
                                      #:flags (logior FLAG-PASSWORD
                                                      FLAG-SCROLL)))
@@ -156,7 +157,7 @@ a thunk, if the confirmation doesn't match PASSWORD, and return its result."
     (run-input-page (G_ "Please confirm the password.")
                     (G_ "Password confirmation required")
                     #:allow-empty-input? #t
-                    #:input-hide-checkbox? #t))
+                    #:input-visibility-checkbox? #t))
 
   (if (string=? password confirmation)
       password
@@ -173,7 +174,7 @@ a thunk, if the confirmation doesn't match PASSWORD, and return its result."
     (run-input-page (G_ "Please choose a password for the system \
 administrator (\"root\").")
                     (G_ "System administrator password")
-                    #:input-hide-checkbox? #t))
+                    #:input-visibility-checkbox? #t))
 
   (confirm-password password run-root-password-page))
 
diff --git a/gnu/installer/newt/wifi.scm b/gnu/installer/newt/wifi.scm
index 1cb2ef2df3..3fd5756b99 100644
--- a/gnu/installer/newt/wifi.scm
+++ b/gnu/installer/newt/wifi.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -88,7 +89,8 @@ nmc_wifi_strength_bars."
 (define (run-wifi-password-page)
   "Run a page prompting user for a password and return it."
   (run-input-page (G_ "Please enter the wifi password.")
-                  (G_ "Password required")))
+                  (G_ "Password required")
+                  #:input-visibility-checkbox? #t))
 
 (define (run-wrong-password-page service-name)
   "Run a page to inform user of a wrong password input."
diff --git a/gnu/local.mk b/gnu/local.mk
index 44a553d871..fe476534c2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -21,6 +21,7 @@
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 # Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 # Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+# Copyright © 2019 John Soo <jsoo1@asu.edu>
 #
 # This file is part of GNU Guix.
 #
@@ -99,6 +100,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/calcurse.scm			\
   %D%/packages/ccache.scm			\
   %D%/packages/cdrom.scm			\
+  %D%/packages/cedille.scm			\
   %D%/packages/certs.scm			\
   %D%/packages/check.scm			\
   %D%/packages/chemistry.scm			\
@@ -128,6 +130,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/cryptsetup.scm			\
   %D%/packages/cups.scm				\
   %D%/packages/curl.scm				\
+  %D%/packages/cvassistant.scm			\
   %D%/packages/cyrus-sasl.scm			\
   %D%/packages/databases.scm			\
   %D%/packages/datamash.scm			\
@@ -410,6 +413,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/rdf.scm				\
   %D%/packages/re2c.scm				\
   %D%/packages/readline.scm			\
+  %D%/packages/rednotebook.scm			\
   %D%/packages/regex.scm				\
   %D%/packages/robotics.scm			\
   %D%/packages/rrdtool.scm			\
@@ -697,6 +701,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/avidemux-install-to-lib.patch		\
   %D%/packages/patches/awesome-reproducible-png.patch		\
   %D%/packages/patches/azr3.patch				\
+  %D%/packages/patches/bash-4.4-linux-pgrp-pipe.patch		\
   %D%/packages/patches/bash-completion-directories.patch	\
   %D%/packages/patches/bastet-change-source-of-unordered_set.patch	\
   %D%/packages/patches/bazaar-CVE-2017-14176.patch		\
@@ -1021,6 +1026,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libexif-CVE-2016-6328.patch		\
   %D%/packages/patches/libexif-CVE-2017-7544.patch		\
   %D%/packages/patches/libexif-CVE-2018-20030.patch		\
+  %D%/packages/patches/libextractor-exiv2.patch			\
   %D%/packages/patches/libgit2-avoid-python.patch		\
   %D%/packages/patches/libgit2-mtime-0.patch			\
   %D%/packages/patches/libgnome-encoding.patch			\
@@ -1099,7 +1105,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/meson-for-build-rpath.patch		\
   %D%/packages/patches/metabat-fix-compilation.patch		\
   %D%/packages/patches/mhash-keygen-test-segfault.patch		\
-  %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch		\
+  %D%/packages/patches/mingw-w64-6.0.0-gcc.patch		\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/module-init-tools-moduledir.patch	\
   %D%/packages/patches/monero-use-system-miniupnpc.patch			\
diff --git a/gnu/packages/agda.scm b/gnu/packages/agda.scm
index 0f9b4299c3..c085bfac2e 100644
--- a/gnu/packages/agda.scm
+++ b/gnu/packages/agda.scm
@@ -3,6 +3,8 @@
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,9 +26,11 @@
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
   #:use-module (guix build-system emacs)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages))
 
@@ -154,3 +158,45 @@ such as Coq, Epigram and NuPRL.")
     (synopsis "Emacs mode for Agda")
     (description "This Emacs mode enables interactive development with
 Agda.  It also aids the input of Unicode characters.")))
+
+(define-public agda-ial
+  (package
+    (name "agda-ial")
+    (version "1.5.0")
+    (home-page "https://github.com/cedille/ial")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0dlis6v6nzbscf713cmwlx8h9n2gxghci8y21qak3hp18gkxdp0g"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("agda" ,agda)))
+    (arguments
+     `(#:parallel-build? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'patch-dependencies
+           (lambda _ (patch-shebang "find-deps.sh") #t))
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out     (assoc-ref outputs "out"))
+                    (include (string-append out "/include/agda/ial")))
+               (for-each (lambda (file)
+                           (make-file-writable file)
+                           (install-file file include))
+                         (find-files "." "\\.agdai?(-lib)?$"))
+               #t))))))
+    (synopsis "The Iowa Agda Library")
+    (description
+     "The goal is to provide a concrete library focused on verification
+examples, as opposed to mathematics.  The library has a good number
+of theorems for booleans, natural numbers, and lists.  It also has
+trees, tries, vectors, and rudimentary IO.  A number of good ideas
+come from Agda's standard library.")
+    (license license:expat)))
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 1160feb553..3aa608ae29 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -120,7 +120,7 @@ header.")
 (define-public gnuastro
   (package
     (name "gnuastro")
-    (version "0.9")
+    (version "0.10")
     (source
      (origin
        (method url-fetch)
@@ -128,7 +128,7 @@ header.")
                            version ".tar.lz"))
        (sha256
         (base32
-         "1c1894ixz3l8p1nmzkysgl9lz8vpqbfw1dd404kh6lvrpml7jzig"))))
+         "0gmhmh0yddb2aql4hd5ffrr0d4hrmh4pa3yln0n186hslqinp81b"))))
     (inputs
      `(("cfitsio" ,cfitsio)
        ("gsl" ,gsl)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index dec94dd6c5..341281c943 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3374,21 +3374,22 @@ on the ALSA software PCM plugin.")
 (define-public snd
   (package
     (name "snd")
-    (version "19.5")
+    (version "19.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
                                   "snd-" version ".tar.gz"))
               (sha256
                (base32
-                "0sk6iyykwi2mm3f1g4r0iqbsrwk3zmyagp6jjqkh8njbq42cjr1y"))))
+                "0s2qv8sznvw6559bi39qj9p072azh9qcb2b86w6w8clz2azjaa76"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
        #:out-of-source? #f              ; for the 'install-doc' phase
        #:configure-flags
        (let* ((out (assoc-ref %outputs "out"))
-              (docdir (string-append out "/share/doc/snd")))
+              (docdir (string-append out "/share/doc/"
+                                     ,name "-" ,version)))
          (list "--with-alsa" "--with-jack" "--with-gmp"
                (string-append "--with-doc-dir=" docdir)))
        #:phases
@@ -3401,7 +3402,7 @@ on the ALSA software PCM plugin.")
                (for-each
                 (lambda (f)
                   (install-file f doc))
-                (find-files "." "\\.html$|COPYING"))
+                (find-files "." "\\.html$"))
                (copy-recursively "pix" (string-append doc "/pix"))
                #t))))))
     (native-inputs
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index b0893d9410..adb377f25f 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -131,7 +131,7 @@ DHT, µTP, PEX and Magnet Links.")
 (define-public libtorrent
   (package
     (name "libtorrent")
-    (version "0.13.6")
+    (version "0.13.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -139,7 +139,7 @@ DHT, µTP, PEX and Magnet Links.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "012s1nwcvz5m5r4d2z9klgy2n34kpgn9kgwgzxm97zgdjs6a0f18"))))
+                "10z9i1rc41cmmi7nx8k7k1agsx6afv09g9cl7g9zr35fyhl5l4gd"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("zlib" ,zlib)))
@@ -156,7 +156,7 @@ speed and efficiency.")
 (define-public rtorrent
   (package
     (name "rtorrent")
-    (version "0.9.6")
+    (version "0.9.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -164,7 +164,7 @@ speed and efficiency.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "03jvzw9pi2mhcm913h8qg0qw9gwjqc6lhwynb1yz1y163x7w4s8y"))))
+                "1bs2fnf4q7mlhkhzp3i1v052v9xn8qa7g845pk9ia8hlpw207pwy"))))
     (build-system gnu-build-system)
     (inputs `(("libtorrent" ,libtorrent)
               ("ncurses" ,ncurses)
diff --git a/gnu/packages/cedille.scm b/gnu/packages/cedille.scm
new file mode 100644
index 0000000000..36fa3ae17e
--- /dev/null
+++ b/gnu/packages/cedille.scm
@@ -0,0 +1,124 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
+;;;
+;;; 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 cedille)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages agda)
+  #:use-module (gnu packages emacs-xyz)
+  #:use-module (gnu packages haskell)
+  #:use-module (guix build-system emacs)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public cedille
+  (package
+    (name "cedille")
+    (version "1.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cedille/cedille")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07kv9wncyipfjf5w4ax8h2p35g70zb1qw6zc4afd7c225xia55wp"))))
+    (inputs
+     `(("agda" ,agda)
+       ("agda-ial" ,agda-ial)
+       ("ghc" ,ghc-8.4)
+       ("ghc-alex" ,ghc-alex)
+       ("ghc-happy" ,ghc-happy)))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-cedille-path-el
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "cedille-mode.el"
+                 (("/usr/share/emacs/site-lisp/cedille-mode")
+                  (string-append
+                   out "/share/emacs/site-lisp/guix.d/cedille-"
+                   ,version)))
+               #t)))
+         (add-after 'unpack 'copy-cedille-mode
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lisp
+                     (string-append
+                      out "/share/emacs/site-lisp/guix.d/cedille-"
+                      ,version "/")))
+               (mkdir-p (string-append lisp "cedille-mode"))
+               (copy-recursively
+                "cedille-mode"
+                (string-append lisp "cedille-mode"))
+               (mkdir-p (string-append lisp "se-mode"))
+               (copy-recursively
+                "se-mode"
+                (string-append lisp "se-mode"))
+               #t)))
+         ;; FIXME: Byte compilation fails
+         (delete 'build)
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "cedille-tests"
+               (invoke "sh" "run-tests.sh"))))
+         (add-after 'unpack 'patch-libraries
+           (lambda _ (patch-shebang "create-libraries.sh") #t))
+         (add-after 'unpack 'copy-ial
+           (lambda* (#:key inputs #:allow-other-keys)
+             (copy-recursively
+              (string-append (assoc-ref inputs "agda-ial")
+                             "/include/agda/ial")
+              "ial")
+             ;; Ambiguous module if main is included from ial
+             (delete-file "ial/main.agda")
+             #t))
+         (add-after 'check 'build-cedille
+           ;; Agda has a hard time with parallel compilation
+           (lambda _
+             (invoke "touch" "src/Templates.hs")
+             (make-file-writable  "src/Templates.hs")
+             (invoke "touch" "src/templates.agda")
+             (make-file-writable  "src/templates.agda")
+             (invoke "make" "--jobs=1")))
+         (add-after 'install 'install-cedille
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (copy-recursively
+                "lib" (string-append out "/lib/cedille"))
+               (install-file "cedille" (string-append out "/bin"))
+               (install-file "core/cedille-core"
+                             (string-append out "/bin"))
+               #t))))))
+    (home-page "https://cedille.github.io/")
+    (synopsis
+     "Language based on Calculus of Dependent Lambda Eliminations")
+    (description
+     "Cedille is an interactive theorem-prover and dependently typed
+programming language, based on extrinsic (aka Curry-style) type theory.  This
+makes it rather different from type theories like Coq and Agda, which are
+intrinsic (aka Church-style).  In Cedille, terms are nothing more than
+annotated versions of terms of pure untyped lambda calculus.  In contrast, in
+Coq or Agda, the typing annotations are intrinsic parts of terms.  The typing
+annotations can only be erased as an optimization under certain conditions,
+not by virtue of the definition of the type theory.")
+    (license license:expat)))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 3b45c430ca..aad1fd9203 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -238,7 +238,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %chromium-version "76.0.3809.100")
+(define %chromium-version "76.0.3809.132")
 (define %ungoogled-revision "8eba5c0df1a318012e3deab39a9add252a0d56a3")
 (define %debian-revision "debian/76.0.3809.87-2")
 (define package-revision "0")
@@ -254,7 +254,7 @@ from forcing GEXP-PROMISE."
                         %chromium-version ".tar.xz"))
     (sha256
      (base32
-      "0vfjfxsqf8jrmd7y08ln1lpbilwi150875zn2bawwdq87vd3mncc"))))
+      "0hajwjf7swlgh1flpf8ljfrb2zhmcpzvrigvvxqd36g3nm04cknm"))))
 
 (define %ungoogled-origin
   (origin
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index d706e8d04b..608cd0af23 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -47,8 +47,8 @@
   #:use-module (guix build-system gnu))
 
 (define-public cuirass
-  (let ((commit "858b6b8c8f2ae7b1ddaf4ae363147121be1f1fe8")
-        (revision "22"))
+  (let ((commit "1cd2f9334dde13542732c22753c4ebde61bc95e0")
+        (revision "23"))
     (package
       (name "cuirass")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -60,7 +60,7 @@
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "049hg0yaakmfp27950cn0yn43r0v7bqva75xi082n8cxzi6vadgc"))))
+                  "0r3x8gv0v89brjqi8r31p6c0mblbaf2kdk2fz99jiab4pir16w87"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index ae8e9c5a47..458b141f91 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -15097,3 +15097,42 @@ datasets, developed and maintained by the Macosko lab.  It relies on
 integrative non-negative matrix factorization to identify shared and
 dataset-specific factors.")
     (license license:gpl3)))
+
+(define-public r-harmony
+  ;; There are no tagged commits
+  (let ((commit "4d1653870d4dd70fff1807c182882db1fbf9af5a")
+        (revision "1"))
+    (package
+      (name "r-harmony")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/immunogenomics/harmony")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1gasdldr4aalr9h2q9kmm3y4i7azkgnhdn4bmvsszs7lg9xacw85"))))
+      (build-system r-build-system)
+      (propagated-inputs
+       `(("r-cowplot" ,r-cowplot)
+         ("r-dplyr" ,r-dplyr)
+         ("r-ggplot2" ,r-ggplot2)
+         ("r-irlba" ,r-irlba)
+         ("r-matrix" ,r-matrix)
+         ("r-rcpp" ,r-rcpp)
+         ("r-rcpparmadillo" ,r-rcpparmadillo)
+         ("r-rcppprogress" ,r-rcppprogress)
+         ("r-rlang" ,r-rlang)
+         ("r-tibble" ,r-tibble)
+         ("r-tidyr" ,r-tidyr)))
+      (home-page "https://github.com/immunogenomics/harmony")
+      (synopsis "Integration of single cell sequencing data")
+      (description
+       "This package provides an implementation of the Harmony algorithm for
+single cell integration, described in Korsunsky et al
+@url{doi.org/10.1101/461954}.  The package includes a standalone Harmony
+function and interfaces to external frameworks.")
+      (license license:gpl3))))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 6500adb215..c3d2419f88 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,12 +22,58 @@
   #:use-module (guix build-system cargo)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages))
+  #:use-module (guix packages)
+  #:use-module (gnu packages pkg-config))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
 ;;;
 
+(define-public rust-antidote
+  (package
+    (name "rust-antidote")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "antidote" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "19g2sw2qa2ibnh4x7j1snk46593jgx6y7rnvva496ynq61af5z9l"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/sfackler/rust-antidote")
+    (synopsis "Poison-free Mutex and RwLock types")
+    (description
+    "These types expose identical APIs to the standard library @code{Mutex} and
+@code{RwLock} except that they do not return @code{PoisonError}s.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-atty
+  (package
+    (name "rust-atty")
+    (version "0.2.13")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "atty" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "140sswp1bwqwc4zk80bxkbnfb3g936hgrb77g9g0k1zcld3wc0qq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi))
+       #:tests? #f)) ; tests fail in our sandbox
+    (home-page "https://github.com/softprops/atty")
+    (synopsis "A simple interface for querying atty")
+    (description
+     "This package provides a simple interface for querying atty.")
+    (license license:expat)))
+
 (define-public rust-autocfg
   (package
     (name "rust-autocfg")
@@ -91,6 +138,50 @@ behave like a set of bitflags.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-blas-sys
+  (package
+    (name "rust-blas-sys")
+    (version "0.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "blas-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0h14zjycwc76v15h8qll9z1xiryvmpvsb5gam97pqpdjrrwv5c8k"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
+    (home-page "https://github.com/blas-lapack-rs/blas-sys")
+    (synopsis "Bindings to BLAS (Fortran)")
+    (description
+     "Ths package provides bindings to BLAS (Fortran).")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-cblas-sys
+  (package
+    (name "rust-cblas-sys")
+    (version "0.1.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cblas-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rgsn3klhhh09d8qf3b87zl4rwk93l2g0qzh9hhb0lff5kcfrzmn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
+    (home-page "https://github.com/blas-lapack-rs/cblas-sys")
+    (synopsis "Bindings to CBLAS (C)")
+    (description
+     "The package provides bindings to CBLAS (C).")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-cfg-if
   (package
     (name "rust-cfg-if")
@@ -112,6 +203,127 @@ depending on a large number of #[cfg] parameters.  Structured like an
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-clicolors-control
+  (package
+    (name "rust-clicolors-control")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clicolors-control" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1y80cgarxhrd1bz5yjm81r444v6flvy36aaxrrsac0yhfd6gvavk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-atty" ,rust-atty)
+        ("rust-lazy-static" ,rust-lazy-static)
+        ("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/mitsuhiko/clicolors-control")
+    (synopsis "Common utility library to control CLI colorization")
+    (description
+     "This package provides a common utility library to control CLI
+colorization.")
+    (license license:expat)))
+
+(define-public rust-cloudabi
+  (package
+    (name "rust-cloudabi")
+    (version "0.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cloudabi" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags))))
+    (home-page "https://nuxi.nl/cloudabi/")
+    (synopsis "Low level interface to CloudABI")
+    (description
+     "Low level interface to CloudABI.  Contains all syscalls and related types.")
+    (license license:bsd-2)))
+
+(define-public rust-core-foundation-sys
+  (package
+    (name "rust-core-foundation-sys")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "core-foundation-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0fzsw1j9g1x598yhwklg59l15hwzc0pyvs01w9fg2kin4598mjp7"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/servo/core-foundation-rs")
+    (synopsis "Bindings to Core Foundation for OS X")
+    (description
+     "Bindings to Core Foundation for OS X.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-data-encoding
+  (package
+    (name "rust-data-encoding")
+    (version "2.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "data-encoding" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "15xd6afhsjl08285piwczrafmckpp8i29padj8v12xhahshprx7l"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/ia0/data-encoding")
+    (synopsis "Efficient and customizable data-encoding functions")
+    (description
+     "This library provides encodings for many different common cases, including
+hexadecimal, bas32, and base64.")
+    (license license:expat)))
+
+(define-public rust-defmac
+  (package
+    (name "rust-defmac")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "defmac" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "01ff3jdmcc5waffkwllndnx5hsn414r7x1rq4ib73n7awsyzxkxv"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/bluss/defmac")
+    (synopsis "Macro to define lambda-like macros inline")
+    (description "A macro to define lambda-like macros inline.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-defmac-0.1
+  (package
+    (inherit rust-defmac)
+    (name "rust-defmac")
+    (version "0.1.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "defmac" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
+
 (define-public rust-discard
   (package
     (name "rust-discard")
@@ -193,6 +405,50 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-findshlibs
+  (package
+    (name "rust-findshlibs")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "findshlibs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1n2vagn0q5yim32hxkwi1cjgp3yn1dm45p7z8nw6lapywihhs9mi"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static)
+        ("rust-libc" ,rust-libc))))
+    (home-page "https://github.com/gimli-rs/findshlibs")
+    (synopsis "Find the set of shared libraries loaded in the current process")
+    (description
+     "Find the set of shared libraries loaded in the current process with a
+cross platform API.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-fixedbitset
+  (package
+    (name "rust-fixedbitset")
+    (version "0.1.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fixedbitset" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0czam11mi80dbyhf4rd4lz0ihcf7vkfchrdcrn45wbs0h40dxm46"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/bluss/fixedbitset")
+    (synopsis "FixedBitSet is a simple bitset collection")
+    (description "FixedBitSet is a simple bitset collection.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-fnv
   (package
     (name "rust-fnv")
@@ -213,6 +469,26 @@ implementation that is more efficient for smaller hash keys.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-foreign-types-shared
+  (package
+    (name "rust-foreign-types-shared")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "foreign-types-shared" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0kanxlif1vp0ffh2r9l610jqbkmb3183yqykxq1z5w1vay2rn7y6"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/sfackler/foreign-types")
+    (synopsis "An internal crate used by foreign-types")
+    (description
+     "An internal crate used by foreign-types.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-fs-extra
   (package
     (name "rust-fs-extra")
@@ -233,6 +509,70 @@ implementation that is more efficient for smaller hash keys.")
 process and much more.")
     (license license:expat)))
 
+(define-public rust-fuchsia-cprng
+  (package
+    (name "rust-fuchsia-cprng")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fuchsia-cprng" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f)) ; tests require zircon
+    (home-page "https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/rust/fuchsia-cprng")
+    (synopsis "Fuchsia cryptographically secure pseudorandom number generator")
+    (description "Rust crate for the Fuchsia cryptographically secure
+pseudorandom number generator")
+    (license license:bsd-3)))
+
+(define-public rust-fuchsia-zircon
+  (package
+    (name "rust-fuchsia-zircon")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fuchsia-zircon" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "10jxc5ks1x06gpd0xg51kcjrxr35nj6qhx2zlc5n7bmskv3675rf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags)
+        ("rust-fuchsia-zircon-sys" ,rust-fuchsia-zircon-sys))
+       #:tests? #f)) ; tests require zircon
+    (home-page "https://fuchsia.googlesource.com/garnet/")
+    (synopsis "Rust bindings for the Zircon kernel")
+    (description "Rust bindings for the Zircon kernel.")
+    (license license:bsd-3)))
+
+(define-public rust-fuchsia-zircon-sys
+  (package
+    (name "rust-fuchsia-zircon-sys")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fuchsia-zircon-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "19zp2085qsyq2bh1gvcxq1lb8w6v6jj9kbdkhpdjrl95fypakjix"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f)) ; tests require zircon
+    (home-page "https://fuchsia.googlesource.com/garnet/")
+    (synopsis "Low-level Rust bindings for the Zircon kernel")
+    (description "Low-level Rust bindings for the Zircon kernel.")
+    (license license:bsd-3)))
+
 (define-public rust-futures
   (package
     (name "rust-futures")
@@ -253,6 +593,77 @@ featuring zero allocations, composability, and iterator-like interfaces.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-cpupool
+  (package
+    (name "rust-futures-cpupool")
+    (version "0.1.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-cpupool" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r32456gpblzfvnkf60545v8acqk7gh5zhyhi1jn669k9gicv45b"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures" ,rust-futures)
+        ("rust-num-cpus" ,rust-num-cpus))))
+    (home-page "https://github.com/alexcrichton/futures-rs")
+    (synopsis "Implementation of thread pools which hand out futures")
+    (description
+     "An implementation of thread pools which hand out futures to the results of
+the computation on the threads themselves.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-futures-io-preview
+  (package
+    (name "rust-futures-io-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-io-preview" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0fhvwhdb8ywjjbfng0ra1r8yyc9yzpyxg9sv3spb3f7w0lk40bh8"))))
+    (build-system cargo-build-system)
+    (home-page "https://rust-lang-nursery.github.io/futures-rs/")
+    (synopsis "Async read and write traits for the futures library")
+    (description "This crate provides the @code{AsyncRead} and
+@code{AsyncWrite} traits for the @code{futures-rs} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-heapsize
+  (package
+    (name "rust-heapsize")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "heapsize" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0q94q9ppqjgrw71swiyia4hgby2cz6dldp7ij57nkvhd6zmfcy8n"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-winapi" ,rust-winapi))
+       ;; Tests assume rust is built with jemalloc.
+       ;; https://github.com/servo/heapsize/issues/74
+       #:cargo-test-flags '("--features" "flexible-tests")))
+    (home-page "https://github.com/servo/heapsize")
+    (synopsis "Measure the total runtime size of an object on the heap")
+    (description
+     "Infrastructure for measuring the total runtime size of an object on the
+heap.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-hex
   (package
     (name "rust-hex")
@@ -273,6 +684,53 @@ hexadecimal representation.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-hostname
+  (package
+    (name "rust-hostname")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "hostname" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0kprf862qaa7lwdms6aw7f3275h0j2rwhs9nz5784pm8hdmb9ki1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-winutil" ,rust-winutil))))
+    (home-page "https://github.com/fengcen/hostname")
+    (synopsis "Get hostname for Rust")
+    (description
+     "Get hostname for Rust.")
+    (license license:expat)))
+
+(define-public rust-iovec
+  (package
+    (name "rust-iovec")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "iovec" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "025vi072m22299z3fg73qid188z2iip7k41ba6v5v5yhwwby9rnv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi-0.2))))
+    (home-page "https://github.com/carllerche/iovec")
+    (synopsis "Portable buffer type for scatter/gather I/O operations")
+    (description
+     "Portable buffer type for scatter/gather I/O operations.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-itoa
   (package
     (name "rust-itoa")
@@ -313,6 +771,94 @@ friction with idiomatic Rust structs to ease interopability.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-kernel32-sys
+  (package
+    (name "rust-kernel32-sys")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "kernel32-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.2)
+        ("rust-winapi-build" ,rust-winapi-build))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-Cargo-toml
+           (lambda _
+             (substitute* "Cargo.toml"
+               ((", path =.* }") "}\n"))
+             #t)))))
+    (home-page "https://github.com/retep998/winapi-rs")
+    (synopsis "Function definitions for the Windows API library kernel32")
+    (description "Contains function definitions for the Windows API library
+kernel32.")
+    (license license:expat)))
+
+(define-public rust-lazy-static
+  (package
+    (name "rust-lazy-static")
+    (version "1.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "lazy_static" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "052ac27w189hrf1j3hz7sga46rp84zl2hqnzyihxv78mgzr2jmxw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-spin" ,rust-spin))))
+    (home-page  "https://github.com/rust-lang-nursery/lazy-static.rs")
+    (synopsis "Macro for declaring lazily evaluated statics in Rust")
+    (description
+     "This package provides a macro for declaring lazily evaluated statics in
+Rust.  Using this macro, it is possible to have @code{static}s that require code
+to be executed at runtime in order to be initialized.  This includes anything
+requiring heap allocations, like vectors or hash maps, as well as anything that
+requires non-const function calls to be computed.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-libc
+  (package
+    (name "rust-libc")
+    (version "0.2.62")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "libc" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fh69kpjg8hqff36kdczx7sax98gk4qs4ws1dwvjz0rgip0d5z1l"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core))))
+    (home-page "https://github.com/rust-lang/libc")
+    (synopsis "Raw FFI bindings to platform libraries like libc")
+    (description
+     "libc provides all of the definitions necessary to easily
+interoperate with C code (or \"C-like\" code) on each of the platforms
+that Rust supports. This includes type definitions (e.g., c_int),
+constants (e.g., EINVAL) as well as function headers (e.g., malloc).
+
+This crate exports all underlying platform types, functions, and
+constants under the crate root, so all items are accessible as
+@samp{libc::foo}.  The types and values of all the exported APIs match
+the platform that libc is compiled for.")
+    (license (list license:expat
+                   license:asl2.0))))
+
 (define-public rust-maplit
   (package
     (name "rust-maplit")
@@ -371,6 +917,222 @@ whether an expression matches a pattern.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-mime
+  (package
+    (name "rust-mime")
+    (version "0.3.13")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "mime" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09clbyvdkwflp8anwjhqdib0sw8191gphcchdp80nc8ayhhwl9ry"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-unicase" ,rust-unicase))))
+    (home-page "https://github.com/hyperium/mime")
+    (synopsis "Strongly Typed Mimes")
+    (description
+     "Support MIME (HTTP Media Types) as strong types in Rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-modifier
+  (package
+    (name "rust-modifier")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "modifier" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0n3fmgli1nsskl0whrfzm1gk0rmwwl6pw1q4nb9sqqmn5h8wkxa1"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/reem/rust-modifier")
+    (synopsis
+      "Chaining APIs for both self -> Self and &mut self methods.")
+    (description
+      "Chaining APIs for both self -> Self and &mut self methods.")
+    (license license:expat)))
+
+(define-public rust-net2
+  (package
+    (name "rust-net2")
+    (version "0.2.33")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "net2" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "126g3fgfxp06zimc1l9iyxnn9cif1hjsg7sd81nlls5nnyghsma2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if)
+        ("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/rust-lang-nursery/net2-rs")
+    (synopsis "Extensions to the standard library's networking types")
+    (description
+     "This library contains extensions to the standard library's networking
+types as proposed in RFC 1158.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-nodrop
+  (package
+    (name "rust-nodrop")
+    (version "0.1.13")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "nodrop" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0if9ifn6rvar5jirx4b3qh4sl5kjkmcifycvzhxa9j3crkfng5ig"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nodrop-union" ,rust-nodrop-union))))
+    (home-page "https://github.com/bluss/arrayvec")
+    (synopsis "Wrapper type to inhibit drop (destructor)")
+    (description "This package provides a wrapper type to inhibit drop
+(destructor).  Use @code{std::mem::ManuallyDrop} instead!")
+    (license (list license:asl2.0
+                   license:expat))))
+
+;; This package requires features which are unavailable
+;; on the stable releases of Rust.
+(define-public rust-nodrop-union
+  (package
+    (name "rust-nodrop-union")
+    (version "0.1.10")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "nodrop-union" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0jsnkdn9l8jlmb9h4wssi76sxnyxwnyi00p6y1p2gdq7c1gdw2b7"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/bluss/arrayvec")
+    (synopsis "Wrapper type to inhibit drop (destructor)")
+    (description "This package provides a wrapper type to inhibit drop
+(destructor).  Implementation crate for nodrop, the untagged unions
+implementation (which is unstable / requires nightly).")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-num-cpus
+  (package
+    (name "rust-num-cpus")
+    (version "1.10.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num_cpus" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0wrj3zvj6h3q26sqj9zxpd59frjb54n7jhjwf307clq31ic47vxw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment))))
+    (home-page "https://github.com/seanmonstar/num_cpus")
+    (synopsis "Get the number of CPUs on a machine")
+    (description
+     "Get the number of CPUs on a machine.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-num-integer
+  (package
+    (name "rust-num-integer")
+    (version "0.1.41")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num-integer" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "02dwjjpfbi16c71fq689s4sw3ih52cvfzr5z5gs6qpr5z0g58pmq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg)
+        ("rust-num-traits" ,rust-num-traits))))
+    (home-page "https://github.com/rust-num/num-integer")
+    (synopsis "Integer traits and functions")
+    (description "Integer traits and functions.")
+    ;; Dual licensed.
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-num-iter
+  (package
+    (name "rust-num-iter")
+    (version "0.1.39")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-iter" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0bhk2qbr3261r6zvfc58lz4spfqjhvdripxgz5mks5rd85r55gbn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-integer" ,rust-num-integer)
+        ("rust-num-traits" ,rust-num-traits))
+       #:cargo-development-inputs
+       (("rust-autocfg" ,rust-autocfg))))
+    (home-page "https://github.com/rust-num/num-iter")
+    (synopsis "External iterators for generic mathematics")
+    (description
+     "This crate provides external iterators for generic mathematics.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-num-traits
+  (package
+    (name "rust-num-traits")
+    (version "0.2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num-traits" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0clvrm34rrqc8p6gq5ps5fcgws3kgq5knh7nlqxf2ayarwks9abb"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg))))
+    (home-page "https://github.com/rust-num/num-traits")
+    (synopsis "Numeric traits for generic mathematics")
+    (description "Numeric traits for generic mathematics.")
+    ;; Dual licensed.
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-peeking-take-while
   (package
     (name "rust-peeking-take-while")
@@ -413,6 +1175,28 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-permutohedron
+  (package
+    (name "rust-permutohedron")
+    (version "0.2.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "permutohedron" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0b1pzh48j86v46wxngch6k1kx9cdw3jr3lwa86gd6jd4bmxzz1xn"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/bluss/permutohedron")
+    (synopsis "Generate permutations of sequences")
+    (description
+     "Generate permutations of sequences.  Either lexicographical order
+permutations, or a minimal swaps permutation sequence implemented using Heap's
+algorithm.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-pin-utils
   (package
     (name "rust-pin-utils")
@@ -432,6 +1216,32 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-pkg-config
+  (package
+    (name "rust-pkg-config")
+    (version "0.3.14")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pkg-config" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "135ia995lqzr0gxpk85h0bjxf82kj6hbxdx924sh9jdln6r8wvk7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-lazy-static" ,rust-lazy-static))))
+    (inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/alexcrichton/pkg-config-rs")
+    (synopsis "Library to run the pkg-config system tool")
+    (description
+     "A library to run the pkg-config system tool at build time in order to be
+used in Cargo build scripts.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-plain
   (package
     (name "rust-plain")
@@ -452,6 +1262,30 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-plugin
+  (package
+    (name "rust-plugin")
+    (version "0.2.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "plugin" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1q7nghkpvxxr168y2jnzh3w7qc9vfrby9n7ygy3xpj0bj71hsshs"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-typemap" ,rust-typemap))
+       #:cargo-development-inputs
+       (("rust-void" ,rust-void))))
+    (home-page "https://github.com/reem/rust-plugin")
+    (synopsis "Lazily evaluated, order-independent plugins for extensible types")
+    (description
+     "Lazily evaluated, order-independent plugins for extensible types.")
+    (license license:expat)))
+
 (define-public rust-pocket-resources
   (package
     (name "rust-pocket-resources")
@@ -558,6 +1392,107 @@ to write.")
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-rawpointer
+  (package
+    (name "rust-rawpointer")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rawpointer" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "06ghpm9y7gacks78s3maakha07kbnwrxif5q37r2l7z1sali3b7b"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/bluss/rawpointer/")
+    (synopsis "Extra methods for raw pointers")
+    (description "Extra methods for raw pointers.  For example
+@code{.post_inc()} and @code{.pre_dec()} (c.f. @code{ptr++} and @code{--ptr})
+and @code{ptrdistance}.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-regex-syntax
+  (package
+    (name "rust-regex-syntax")
+    (version "0.6.10")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "regex-syntax" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0p47lf38yj2g2fnmvnraccqlxwk35zr76hlnqi8yva932nzqam6d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ucd-util" ,rust-ucd-util))))
+    (home-page "https://github.com/rust-lang/regex")
+    (synopsis "Regular expression parser")
+    (description
+     "This package provides a regular expression parser.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-remove-dir-all
+  (package
+    (name "rust-remove-dir-all")
+    (version "0.5.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "remove_dir_all" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0bkrlyg26mgizpiy1yb2hhpgscxcag8r5fnckqsvk25608vzm0sa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-source
+           ;; The test phase expects there to be a README.md in the root directory.
+           (lambda _
+             (invoke "touch" "README.md"))))))
+    (home-page "https://github.com/XAMPPRocky/remove_dir_all.git")
+    (synopsis "Implementation of remove_dir_all for Windows")
+    (description
+     "This package provides a safe, reliable implementation of
+@code{remove_dir_all} for Windows")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-resolv-conf
+  (package
+    (name "rust-resolv-conf")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "resolv-conf" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1jvdsmksdf6yiipm3aqahyv8n1cjd7wqc8sa0p0gzsax3fmb8qxj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-quick-error" ,rust-quick-error)
+        ("rust-hostname" ,rust-hostname))
+       #:cargo-test-flags '("--release" "--lib" "--examples"))) ; doc tests fail
+    (home-page "https://github.com/tailhook/resolv-conf")
+    (synopsis "/etc/resolv.conf parser")
+    (description
+     "An /etc/resolv.conf parser crate for Rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-rustc-std-workspace-core
   (package
     (name "rust-rustc-std-workspace-core")
@@ -578,6 +1513,74 @@ rust-lang/rust integration.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-safemem
+  (package
+    (name "rust-safemem")
+    (version "0.3.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "safemem" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1l1ljkm4lpyryrv2ndaxi1f7z1f3v9bwy1rzl9f9mbhx04iq9c6j"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/abonander/safemem")
+    (synopsis "Safe wrappers for memory-accessing functions")
+    (description
+     "Safe wrappers for memory-accessing functions, like @code{std::ptr::copy()}.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-same-file
+  (package
+    (name "rust-same-file")
+    (version "1.0.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "same-file" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "08a4zy10pjindf2rah320s6shgswk13mqw7s61m8i1y1xpf8spjq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+      (("rust-winapi-util" ,rust-winapi-util))))
+    (home-page "https://github.com/BurntSushi/same-file")
+    (synopsis "Determine whether two file paths point to the same file")
+    (description
+     "This package provides a simple crate for determining whether two file
+paths point to the same file.")
+    (license (list license:unlicense
+                   license:expat))))
+
+(define-public rust-schannel
+  (package
+    (name "rust-schannel")
+    (version "0.1.15")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "schannel" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0f9k4pm8yc3z0n1n8hazvnrvg52f0sfxjc91bhf3r76rb3rapxpj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/steffengy/schannel-rs")
+    (synopsis "Rust bindings to the Windows SChannel APIs")
+    (description
+     "Rust bindings to the Windows SChannel APIs providing TLS client and
+server functionality.")
+    (license license:expat)))
+
 (define-public rust-scoped-tls
   (package
     (name "rust-scoped-tls")
@@ -599,6 +1602,20 @@ library's old @code{scoped_thread_local!} macro for providing scoped access to
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-scoped-tls-0.1
+  (package
+    (inherit rust-scoped-tls)
+    (name "rust-scoped-tls")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "scoped-tls" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0a2bn9d2mb07c6l16sadijy4p540g498zddfxyiq4rsqpwrglbrk"))))))
+
 (define-public rust-scopeguard
   (package
     (name "rust-scopeguard")
@@ -622,6 +1639,45 @@ with one of the implemented strategies.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-scopeguard-0.3
+  (package
+    (inherit rust-scopeguard)
+    (name "rust-scopeguard")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "scopeguard" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09sy9wbqp409pkwmqni40qmwa99ldqpl48pp95m1xw8sc19qy9cl"))))))
+
+(define-public rust-security-framework-sys
+  (package
+    (name "rust-security-framework-sys")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "security-framework-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0mlsakq9kmqyc0fg2hcbgm6rjk55mb0rhjw2wid3hqdzkjcghdln"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-core-foundation-sys"
+         ,rust-core-foundation-sys))))
+    (home-page "https://lib.rs/crates/security-framework-sys")
+    (synopsis "Apple `Security.framework` low-level FFI bindings")
+    (description
+     "Apple `Security.framework` low-level FFI bindings.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-semver-parser
   (package
     (name "rust-semver-parser")
@@ -700,6 +1756,30 @@ spinning.  They may contain data, are usable without @code{std},and static
 initializers are available.")
     (license license:expat)))
 
+(define-public rust-stable-deref-trait
+  (package
+    (name "rust-stable-deref-trait")
+    (version "1.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "stable_deref_trait" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1j2lkgakksmz4vc5hfawcch2ipiskrhjs1sih0f3br7s7rys58fv"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/storyyeller/stable_deref_trait0")
+    (synopsis "Defines an unsafe marker trait, StableDeref")
+    (description
+      "This crate defines an unsafe marker trait, StableDeref, for container
+types which deref to a fixed address which is valid even when the containing
+type is moved.  For example, Box, Vec, Rc, Arc and String implement this trait.
+Additionally, it defines CloneStableDeref for types like Rc where clones deref
+to the same address.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-stdweb-internal-runtime
   (package
     (name "rust-stdweb-internal-runtime")
@@ -720,6 +1800,53 @@ crate.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-stdweb-internal-test-macro
+  (package
+    (name "rust-stdweb-internal-test-macro")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "stdweb-internal-test-macro" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "12rrm7p77xnm3xacgn3rgniiyyjb4gq7902wpbljsvbx045z69l2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2)
+        ("rust-quote" ,rust-quote))))
+    (home-page "https://github.com/koute/stdweb")
+    (synopsis "Internal crate of the `stdweb` crate")
+    (description
+     "Internal crate of the @code{stdweb} crate.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-streaming-stats
+  (package
+    (name "rust-streaming-stats")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "streaming-stats" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0l7xz4g6709s80zqpvlhrg0qhgz64r94cwhmfsg8xhabgznbp2px"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits))))
+    (home-page "https://github.com/BurntSushi/rust-stats")
+    (synopsis "Compute basic statistics on streams")
+    (description
+     "Experimental crate for computing basic statistics on streams.")
+    (license (list license:unlicense
+                   license:expat))))
+
 (define-public rust-strsim
   (package
     (name "rust-strsim")
@@ -759,6 +1886,242 @@ and Jaro-Winkler.")
      "This package provides helper test traits for synstructure doctests.")
     (license license:expat)))
 
+(define-public rust-termcolor
+  (package
+    (name "rust-termcolor")
+    (version "1.0.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "termcolor" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vjfsn1a8zvqhnrbygrz1id6yckwv1dncw3w4zj65qdx0f00kmln"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-wincolor" ,rust-wincolor))))
+    (home-page "https://github.com/BurntSushi/termcolor")
+    (synopsis "Library for writing colored text to a terminal")
+    (description "This package provides a simple cross platform library for
+writing colored text to a terminal.")
+    (license (list license:unlicense
+                   license:expat))))
+
+(define-public rust-termios
+  (package
+    (name "rust-termios")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "termios" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09any1p4jp4bphvb5ikagnvwjc3xn2djchy96nkpa782xb2j1dkj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
+    (home-page  "https://github.com/dcuddeback/termios-rs")
+    (synopsis "Safe bindings for the termios library")
+    (description
+     "The termios crate provides safe bindings for the Rust programming language
+to the terminal I/O interface implemented by Unix operating systems.  The safe
+bindings are a small wrapper around the raw C functions, which converts integer
+return values to @code{std::io::Result} to indicate success or failure.")
+    (license license:expat)))
+
+(define-public rust-thread-local
+  (package
+    (name "rust-thread-local")
+    (version "0.3.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "thread_local" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "06rzik99p8c5js8238yhc8rk6np543ylb1dy9nrw5v80j0r3xdf6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+      (("rust-lazy-static" ,rust-lazy-static))))
+    (home-page "https://github.com/Amanieu/thread_local-rs")
+    (synopsis "Per-object thread-local storage")
+    (description "Per-object thread-local storage")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-threadpool
+  (package
+    (name "rust-threadpool")
+    (version "1.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "threadpool" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rd89n1q7vy47w4c32cnynibffv9kj3jy3dwr0536n9lbw5ckw72"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-cpus" ,rust-num-cpus))))
+    (home-page "https://github.com/rust-threadpool/rust-threadpool")
+    (synopsis "Thread pool for running jobs on a fixed set of worker threads")
+    (description
+     "This package provides a thread pool for running a number of jobs on a
+fixed set of worker threads.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-tokio-mock-task
+  (package
+    (name "rust-tokio-mock-task")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "tokio-mock-task" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1y7q83qfk9ljjfvs82b453pmz9x1v3d6kr4x55j8mal01s6790dw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-futures" ,rust-futures))))
+    (home-page  "https://github.com/carllerche/tokio-mock-task")
+    (synopsis "Mock a Tokio task")
+    (description "Mock a Tokio task")
+    (license license:expat)))
+
+(define-public rust-tracing-core
+  (package
+    (name "rust-tracing-core")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "tracing-core" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "01fa73wzw2m5ybi3kkd52dgrw97mgc3i6inmhwys46ab28giwnxi"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static))))
+    (home-page "https://tokio.rs")
+    (synopsis "Core primitives for application-level tracing")
+    (description
+     "Core primitives for application-level tracing.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-traitobject
+  (package
+    (name "rust-traitobject")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "traitobject" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0yb0n8822mr59j200fyr2fxgzzgqljyxflx9y8bdy3rlaqngilgg"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/reem/rust-traitobject.git")
+    (synopsis "Unsafe helpers for dealing with raw trait objects")
+    (description "Unsafe helpers for dealing with raw trait objects.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-try-from
+  (package
+    (name "rust-try-from")
+    (version "0.3.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "try_from" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "12wdd4ja7047sd3rx70hv2056hyc8gcdllcx3a41g1rnw64kng98"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+      (("rust-cfg-if" ,rust-cfg-if))))
+    (home-page "https://github.com/derekjw/try_from")
+    (synopsis "TryFrom and TryInto traits for failable conversions")
+    (description
+      "TryFrom and TryInto traits for failable conversions that return a Result.")
+    (license license:expat)))
+
+(define-public rust-try-lock
+  (package
+    (name "rust-try-lock")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "try-lock" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "10p36rx6pqi9d0zr876xa8vksx2m66ha45myakl50rn08dxyn176"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/seanmonstar/try-lock")
+    (synopsis "Lightweight atomic lock")
+    (description
+     "This package provides a lightweight atomic lock.")
+    (license license:expat)))
+
+(define-public rust-typeable
+  (package
+    (name "rust-typeable")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "typeable" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "11w8dywgnm32hb291izjvh4zjd037ccnkk77ahk63l913zwzc40l"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/reem/rust-typeable")
+    (synopsis "Exposes Typeable, for getting TypeIds at runtime")
+    (description "Exposes Typeable, for getting TypeIds at runtime.")
+    (license license:expat)))
+
+(define-public rust-typemap
+  (package
+    (name "rust-typemap")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "typemap" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1xm1gbvz9qisj1l6d36hrl9pw8imr8ngs6qyanjnsad3h0yfcfv5"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-unsafe-any" ,rust-unsafe-any))))
+    (home-page "https://github.com/reem/rust-typemap")
+    (synopsis "Typesafe store for many value types")
+    (description
+     "A typesafe store for many value types.")
+    (license license:expat)))
+
 (define-public rust-typenum
   (package
     (name "rust-typenum")
@@ -781,6 +2144,29 @@ implementation is incomplete.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-ucd-trie
+  (package
+    (name "rust-ucd-trie")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ucd-trie" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1hh6kyzh5xygwy96wfmsf8v8czlzhps2lgbcyhj1xzy1w1xys04g"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+      (("rust-lazy-static" ,rust-lazy-static))))
+    (home-page "https://github.com/BurntSushi/ucd-generate")
+    (synopsis "Trie for storing Unicode codepoint sets and maps")
+    (description
+     "This package provides a trie for storing Unicode codepoint sets and maps.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-ucd-util
   (package
     (name "rust-ucd-util")
@@ -801,6 +2187,28 @@ with the Unicode character database.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-unicase
+  (package
+    (name "rust-unicase")
+    (version "2.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "unicase" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1xmpmkakhhblq7dzab1kwyv925kv7fqjkjsxjspg6ix9n88makm8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-version-check" ,rust-version-check-0.1))))
+    (home-page "https://github.com/seanmonstar/unicase")
+    (synopsis "Case-insensitive wrapper around strings")
+    (description
+     "A case-insensitive wrapper around strings.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-unicode-width
   (package
     (name "rust-unicode-width")
@@ -863,6 +2271,151 @@ whitespace from a string.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-unsafe-any
+  (package
+    (name "rust-unsafe-any")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "unsafe-any" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0zwwphsqkw5qaiqmjwngnfpv9ym85qcsyj7adip9qplzjzbn00zk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-traitobject" ,rust-traitobject))))
+    (home-page "https://tokio.rs")
+    (synopsis "Traits and implementations for unchecked downcasting")
+    (description
+     "Traits and implementations for unchecked downcasting.")
+    (license license:expat)))
+
+(define-public rust-untrusted
+  (package
+    (name "rust-untrusted")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "untrusted" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1kmfykcwif6ashkwg54gcnhxj03kpba2i9vc7z5rpr0xlgvrwdk0"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/briansmith/untrusted")
+    (synopsis "Zero-allocation parsing of untrusted inputs in Rust")
+    (description
+     "Safe, fast, zero-panic, zero-crashing, zero-allocation parsing of
+untrusted inputs in Rust.")
+    (license license:isc)))
+
+(define-public rust-version-check
+  (package
+    (name "rust-version-check")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "version_check" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1kikqlnggii1rvnxrbls55sc46lxvinz5k3giscgncjj4p87b1q7"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/SergioBenitez/version_check")
+    (synopsis "Check that the installed rustc meets some version requirements")
+    (description
+     "This tiny crate checks that the running or installed rustc meets some
+version requirements.  The version is queried by calling the Rust compiler with
+@code{--version}.  The path to the compiler is determined first via the
+@code{RUSTC} environment variable.  If it is not set, then @code{rustc} is used.
+If that fails, no determination is made, and calls return None.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-version-check-0.1
+  (package
+    (inherit rust-version-check)
+    (name "rust-version-check")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "version_check" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1pf91pvj8n6akh7w6j5ypka6aqz08b3qpzgs0ak2kjf4frkiljwi"))))))
+
+(define-public rust-void
+  (package
+    (name "rust-void")
+    (version "1.0.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "void" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0zc8f0ksxvmhvgx4fdg0zyn6vdnbxd2xv9hfx4nhzg6kbs4f80ka"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/reem/rust-void.git")
+    (synopsis "Void type for use in statically impossible cases")
+    (description
+     "The uninhabited void type for use in statically impossible cases.")
+    (license license:expat)))
+
+(define-public rust-walkdir
+  (package
+    (name "rust-walkdir")
+    (version "2.2.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "walkdir" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "07ppalpvxkf8cnqr64np422792y4z5bs9m8b4nrflh5rm17wjn4n"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-same-file" ,rust-same-file)
+        ("rust-winapi" ,rust-winapi)
+        ("rust-winapi-util" ,rust-winapi-util))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment))))
+    (home-page  "https://github.com/BurntSushi/walkdir")
+    (synopsis "Recursively walk a directory")
+    (description "Recursively walk a directory.")
+    (license (list license:unlicense
+                   license:expat))))
+
+(define-public rust-wasi
+  (package
+    (name "rust-wasi")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "wasi" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ir3pd4phdfml0cbziw9bqp7mnk0vfp9biy8bh25lln6raml4m7x"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/CraneStation/rust-wasi")
+    (synopsis "Experimental WASI API bindings for Rust")
+    (description "This package contains experimental WASI API bindings
+in Rust.")
+    (license license:asl2.0)))
+
 (define-public rust-wasm-bindgen-shared
   (package
     (name "rust-wasm-bindgen-shared")
@@ -883,10 +2436,59 @@ whitespace from a string.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-wasm-bindgen-test-macro
+  (package
+    (name "rust-wasm-bindgen-test-macro")
+    (version "0.2.48")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "wasm-bindgen-test-macro" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0n28mr6vncf1k1qr2b5bvfxq4jvqkjdzq0z0ab6w2f5d6v8q3q3l"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2)
+        ("rust-quote" ,rust-quote))))
+    (home-page "https://github.com/rustwasm/wasm-bindgen")
+    (synopsis "Internal testing macro for wasm-bindgen")
+    (description
+     "This library contains the internal testing macro for wasm-bindgen.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-widestring
+  (package
+    (name "rust-widestring")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "widestring" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1dhx6dndjsz1y7c9w06922412kdxyrrkqblvggm76mh8z17hxz7g"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/starkat99/widestring-rs")
+    (synopsis "Wide string Rust FFI library")
+    (description
+     "A wide string Rust FFI library for converting to and from wide strings,
+such as those often used in Windows API or other FFI libaries.  Both UTF-16 and
+UTF-32 types are provided, including support for malformed encoding.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-winapi
   (package
     (name "rust-winapi")
-    (version "0.3.7")
+    (version "0.3.8")
     (source
       (origin
         (method url-fetch)
@@ -894,7 +2496,7 @@ whitespace from a string.")
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0w7pbhcl087lkggxdflfp2i92rq89ahsfdkjkv44fgmiy9m3h3pi"))))
+          "1ii9j9lzrhwri0902652awifzx9fpayimbp6hfhhc296xcg0k4w0"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -909,6 +2511,46 @@ whitespace from a string.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-winapi-0.2
+  (package
+    (inherit rust-winapi)
+    (name "rust-winapi")
+    (version "0.2.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "winapi" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
+    ;; We do not want to package 48 -sys crates for a package we do not want.
+    ;; They are all dev dependencies, so we skip building and testing.
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build))))))
+
+(define-public rust-winapi-build
+  (package
+    (name "rust-winapi-build")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "winapi-build" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/retep998/winapi-rs")
+    (synopsis "Common code for build.rs in WinAPI -sys crates")
+    (description
+     "Common code for build.rs in WinAPI -sys crates.")
+    (license license:expat)))
+
 (define-public rust-winapi-i686-pc-windows-gnu
   (package
     (name "rust-winapi-i686-pc-windows-gnu")
@@ -930,6 +2572,29 @@ i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-winapi-util
+  (package
+    (name "rust-winapi-util")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "winapi-util" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1j839dc6y8vszvrsb7yk0qvs0w6asnahxzbyans37vnsw6vbls3i"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/BurntSushi/winapi-util")
+    (synopsis "Dumping ground for high level safe wrappers over winapi")
+    (description
+     "This package provides a dumping ground for high level safe wrappers over
+winapi.")
+    (license (list license:unlicense
+                   license:expat))))
+
 (define-public rust-winapi-x86-64-pc-windows-gnu
   (package
     (name "rust-winapi-x86-64-pc-windows-gnu")
@@ -950,3 +2615,106 @@ x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
 @code{winapi} instead.")
     (license (list license:asl2.0
                    license:expat))))
+
+(define-public rust-wincolor
+  (package
+    (name "rust-wincolor")
+    (version "1.0.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "wincolor" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1agaf3hcav113i86912ajnw6jxcy4rvkrgyf8gdj8kc031mh3xcn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi)
+        ("rust-winapi-util" ,rust-winapi-util))))
+    (home-page "https://github.com/BurntSushi/termcolor/tree/master/wincolor")
+    (synopsis "Windows API for controlling text color in a Windows console")
+    (description
+     "This package provides a simple Windows specific API for controlling text
+color in a Windows console.")
+    (license (list license:unlicense
+                   license:expat))))
+
+(define-public rust-winutil
+  (package
+    (name "rust-winutil")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "winutil" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vkyl3fbbf05n5ph5yz8sfaccrk9x3qsr25560w6w68ldf5i7bvx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi))
+       ;; This unmaintained crate cannot find winapi when built directly.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build))))
+    (home-page "https://bitbucket.org/DaveLancaster/winutil")
+    (synopsis "Library wrapping a handful of useful winapi functions")
+    (description
+     "A simple library wrapping a handful of useful winapi functions.")
+    (license license:expat)))
+
+(define-public rust-ws2-32-sys
+  (package
+    (name "rust-ws2-32-sys")
+    (version "0.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ws2_32-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.2)
+        ("rust-winapi-build" ,rust-winapi-build))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-Cargo-toml
+           (lambda _
+             (substitute* "Cargo.toml"
+               ((", path =.* }") "}\n"))
+             #t)))))
+    (home-page "https://github.com/retep998/winapi-rs")
+    (synopsis "Function definitions for the Windows API library ws2_32")
+    (description
+     "Contains function definitions for the Windows API library ws2_32.")
+    (license license:expat)))
+
+(define-public rust-xdg
+  (package
+    (name "rust-xdg")
+    (version "2.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "xdg" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0mws8a0fr3cqk5nh7aq9lmkmhzghvasqy4mhw6nnza06l4d6i2fh"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/whitequark/rust-xdg")
+    (synopsis "Store and retrieve files according to XDG specification")
+    (description
+     "This package provides a library for storing and retrieving files according
+to XDG Base Directory specification")
+    (license (list license:asl2.0
+                   license:expat))))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 467aa5d84c..22b87460ab 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -594,7 +594,7 @@ should only be used as part of the Guix cups-pk-helper service.")
               (method url-fetch)
               (uri (string-append
                     "http://www.openprinting.org/download/foomatic/"
-                    name "-" version ".tar.gz"))
+                    "foomatic-filters-" version ".tar.gz"))
               (sha256
                (base32
                 "1qrkgbm5jay2r7sh9qbyf0aiyrsl1mdc844hxf7fhw95a0zfbqm2"))
@@ -639,14 +639,14 @@ printer/driver specific, but spooler-independent PPD file.")
 (define-public foo2zjs
   (package
     (name "foo2zjs")
-    (version "20190413")
+    (version "20190517")
     (source (origin
               (method url-fetch)
               ;; XXX: This is an unversioned URL!
               (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz")
               (sha256
                (base32
-                "0djzp3ddslmzyxkjhzkhkg6qqqm02whjfnfvh5glprkshcskzlg9"))))
+                "13gzsd26nq4brx1xzpwmg1qnr4nk7ykgi94qr1hbjqfi561prki4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/cvassistant.scm b/gnu/packages/cvassistant.scm
new file mode 100644
index 0000000000..f57806d734
--- /dev/null
+++ b/gnu/packages/cvassistant.scm
@@ -0,0 +1,90 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages cvassistant)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages compression))
+
+(define-public cvassistant
+  (package
+    (name "cvassistant")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/cvassistant/"
+                                  "cvassistant-" version "-src.tar.bz2"))
+              (sha256
+               (base32
+                "1y2680bazyiwm50gdhdd4982ckbjscrkbw2mngyk7yw708iadvr7"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-donation-banner
+           ;; Remove dialog box with a donation link, as suggested by
+           ;; the INSTALL file.
+           (lambda _
+             (substitute* "controllers/mainwindow.cpp"
+               (("//(#define NO_DONATION_PROMPT)" _ line) line))
+             #t))
+         (add-after 'unpack 'fix-quazip-directory
+           (lambda _
+             (substitute* "models/resumedocument.h"
+               (("quazip(/quazipfile\\.h)" _ suffix)
+                (string-append "quazip5" suffix)))
+             #t))
+         (add-after 'fix-quazip-directory 'fix-quazip-link
+           (lambda _
+             (substitute* "CVAssistant.pro"
+               (("lquazip-qt5")
+                "lquazip5"))
+             #t))
+         (add-after 'fix-quazip-directory 'fix-install-root
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "CVAssistant.pro"
+                 (("/usr/(bin|share/)" _ suffix)
+                  (string-append out "/" suffix)))
+               #t)))
+         (replace 'configure
+           (lambda _ (invoke "qmake"))))))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("quazip" ,quazip)
+       ("zlib" ,zlib)))
+    (home-page "https://cvassistant.sourceforge.io/")
+    (synopsis "Job application organizer")
+    (description "Whether you're looking for a job or trying to help
+  a friend to find one, CVAssistant is a tool for you.  It helps you by
+  preparing resumes and cover letters and organizing your job
+  application process.  It:
+  @itemize
+  @item Stores all your skills and experiences.
+  @item Creates resumes tailored for each job you apply.
+  @item Creates cover letters summarized to match each job
+  advertisement.
+  @item Keeps a history of job applications so you are ready when you
+  receive a phone call.
+  @item Writes resumes in your language.  All languages are supported!
+  @end itemize")
+    (license license:gpl3+)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4194f1f607..a15ac62b8f 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -2101,20 +2101,19 @@ for ODBC.")
 (define-public python-pyodbc
   (package
     (name "python-pyodbc")
-    (version "4.0.26")
+    (version "4.0.27")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pyodbc" version))
        (sha256
-        (base32 "1qrxnf7ji5hml7z4y669k4wmk3iz2pcsr05bnn1n912asash09z5"))
+        (base32 "1kd2i7hc1330cli72vawzby17c3039cqn1aba4i0zrjnpghjhmib"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system python-build-system)
     (inputs
      `(("unixodbc" ,unixodbc)))
     (arguments
-     `(;; No unit tests exist.
-       #:tests? #f))
+     `(#:tests? #f))                    ; no unit tests exist
     (home-page "https://github.com/mkleehammer/pyodbc")
     (synopsis "Python ODBC Library")
     (description "@code{python-pyodbc} provides a Python DB-API driver
@@ -2431,14 +2430,14 @@ You might also want to install the following optional dependencies:
 (define-public python-alembic
   (package
     (name "python-alembic")
-    (version "1.0.10")
+    (version "1.0.11")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "alembic" version))
        (sha256
         (base32
-         "1dwl0264r6ri2jyrjr68am04x538ab26xwy4crqjnnhm4alwm3c2"))))
+         "1k5hag0vahd5vrf9abx8fdj2whrwaw2iq2yp736mmxnbsn5xkdyd"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-mock" ,python-mock)
@@ -2449,8 +2448,7 @@ You might also want to install the following optional dependencies:
        ("python-mako" ,python-mako)
        ("python-editor" ,python-editor)))
     (home-page "https://bitbucket.org/zzzeek/alembic")
-    (synopsis
-     "Database migration tool for SQLAlchemy")
+    (synopsis "Database migration tool for SQLAlchemy")
     (description
      "Alembic is a lightweight database migration tool for usage with the
 SQLAlchemy Database Toolkit for Python.")
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 187ef74b4e..cf53142533 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -760,7 +760,7 @@ LVM D-Bus API).")
 (define-public rmlint
   (package
     (name "rmlint")
-    (version "2.8.0")
+    (version "2.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -769,7 +769,7 @@ LVM D-Bus API).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gc7gbnh0qg1kl151cv1ld87vhpm1v3pnkn7prhscdcc21jrg8nz"))))
+                "1b5cziam14h80xrfb285fmfrzz2rligxcpsq1xsig14xf4l2875i"))))
     (build-system scons-build-system)
     (arguments
      `(#:scons ,scons-python2
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 70e7c8331b..58214747e7 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -481,3 +481,43 @@ use the computer and at the same time teach them a little math,
 letters of the alphabet, spelling, eye-hand coordination, etc.")
     (home-page "http://www.schoolsplay.org")
     (license license:gpl3+)))
+
+(define-public fet
+  (package
+    (name "fet")
+    (version "5.39.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.lalescu.ro/liviu/fet/download/"
+                                  "fet-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "100bmggkychqs2cavqxy7015lr4icw6k99qb03im0v4jasqqmyix"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-hardcoded-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* (list "fet.pro"
+                                "src/src.pro"
+                                "src/src-cl.pro"
+                                "src/interface/fet.cpp")
+               (("/usr") (assoc-ref outputs "out")))
+             #t))
+         (replace 'configure
+           (lambda _ (invoke "qmake" "fet.pro"))))))
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (home-page "https://www.lalescu.ro/liviu/fet/")
+    (synopsis "Timetabling software")
+    (description "FET is a program for automatically scheduling the
+timetable of a school, high-school or university.  It uses a fast and
+efficient timetabling algorithm.
+
+Usually, FET is able to solve a complicated timetable in maximum 5-20
+minutes.  For simpler timetables, it may take a shorter time, under
+5 minutes (in some cases, a matter of seconds).  For extremely
+difficult timetables, it may take a longer time, a matter of hours.")
+    (license license:agpl3+)))
+
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 2862f7b975..06043dcdd3 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -905,6 +905,35 @@ skip set strings, which are arguments to @code{skip-chars-forward} and
 @code{skip-chars-backward}.")
     (license license:gpl3+)))
 
+(define-public emacs-ample-regexps
+  (let ((commit "cbe91e148cac1ee8e223874dc956ed4cf607f046")
+        (revision "1"))
+    (package
+      (name "emacs-ample-regexps")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/immerrr/ample-regexps.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1mm4icrwx4mscp7kbbmlc34995r164dhrfczn5ybkyxjzzf76jn1"))))
+      (build-system emacs-build-system)
+      (native-inputs
+       `(("ert-runner" ,emacs-ert-runner)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("ert-runner" "-l" "ample-regexps")))
+      (home-page "https://github.com/immerrr/ample-regexps.el")
+      (synopsis "Compose and reuse Emacs regexps")
+      (description
+       "This package allows common parts of regexps to be easily picked out
+and reused.")
+      (license license:gpl3+))))
+
 (define-public emacs-reformatter
   (package
     (name "emacs-reformatter")
@@ -3048,30 +3077,27 @@ for Flow files.")
       (license license:gpl3+))))
 
 (define-public emacs-elisp-demos
-  (let ((commit "4c1fbc392668662890b685ab297e950259227e06")
-        (version "0.1")
-        (revision "1"))
-    (package
-      (name "emacs-elisp-demos")
-      (version (git-version version revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/xuchunyang/elisp-demos")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "01cbkmjgmzxdf02w9xgbf4bhnx1mh53vvpkri13yxfksym5zizp4"))))
-      (build-system emacs-build-system)
-      (arguments '(#:include '("\\.el$" "\\.org$")))
-      (home-page "https://github.com/xuchunyang/elisp-demos/")
-      (synopsis "Enhance @code{*Help*} buffers with additional examples")
-      (description
-       "This package injects example uses of Elisp functions into their
+  (package
+    (name "emacs-elisp-demos")
+    (version "2019.08.16")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xuchunyang/elisp-demos")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0lybadq66bl4snkwph9i1y0qxln29wyfjn222ii3nfwany28cj66"))))
+    (build-system emacs-build-system)
+    (arguments '(#:include '("\\.el$" "\\.org$")))
+    (home-page "https://github.com/xuchunyang/elisp-demos/")
+    (synopsis "Enhance @code{*Help*} buffers with additional examples")
+    (description
+     "This package injects example uses of Elisp functions into their
 respective @code{*Help*} buffers.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-docker-compose-mode
   (package
@@ -3876,7 +3902,7 @@ in @code{html-mode}.")
 (define-public emacs-slime
   (package
     (name "emacs-slime")
-    (version "2.23")
+    (version "2.24")
     (source
      (origin
        (method git-fetch)
@@ -3885,7 +3911,7 @@ in @code{html-mode}.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0i637n0ragpbj39hqx65nx5k99xf0464c4w6w1qpzykm6z42grky"))))
+        (base32 "0js24x42m7b5iymb4rxz501dff19vav5pywnzv50b673rbkaaqvh"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -6246,20 +6272,20 @@ not tied in the trap of backward compatibility.")
 (define-public emacs-helm-swoop
   (package
     (name "emacs-helm-swoop")
-    (version "1.7.4")
+    (version "2.0.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ShingoFukuyama/helm-swoop.git")
+             (url "https://github.com/emacsorphanage/helm-swoop.git")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0b23j1bkpg4pm310hqdhgnl4mxsj05gpl08b6kb2ja4fzrg6adsk"))))
+        (base32 "0k0ns92g45x8dbymqpl6ylk5mj3wiw2h03f48q5cy1z8in0c4rjd"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
-    (home-page "https://github.com/ShingoFukuyama/helm-swoop")
+    (home-page "https://github.com/emacsorphanage/helm-swoop")
     (synopsis "Filter and jump to lines in an Emacs buffer using Helm")
     (description
      "This package builds on the Helm interface to provide several commands
@@ -6555,8 +6581,8 @@ end of a line and increment or decrement it.")
       (license license:gpl3+))))
 
 (define-public emacs-evil-owl
-  (let ((commit "36a5fe057f44d48e377e3ef4f04b4eb30e1af309")
-        (revision "1"))
+  (let ((commit "e8fe5b2f745e36db04cb71eb689bf91c5409614f")
+        (revision "2"))
     (package
       (name "emacs-evil-owl")
       (version (git-version "0.0.1" revision commit))
@@ -6569,11 +6595,10 @@ end of a line and increment or decrement it.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "07a6n0gqss1qx9a50dqzqqq0gj6n7a4ykbcv1a0c9qd4fnfnm90m"))))
+           "1g7kplna62f271135mnjdbvxk2ayx7m4gvd6l86d2394alx16nhq"))))
       (build-system emacs-build-system)
       (propagated-inputs
-       `(("emacs-evil" ,emacs-evil)
-         ("emacs-posframe" ,emacs-posframe)))
+       `(("emacs-evil" ,emacs-evil)))
       (home-page "https://github.com/mamapanda/evil-owl")
       (synopsis "Preview candidates when using Evil registers and marks")
       (description
@@ -13617,6 +13642,32 @@ integrating @code{iedit-mode} into Evil mode with an attempt at sensible
 defaults.")
     (license license:gpl3+)))
 
+(define-public emacs-evil-mc
+  (let ((commit "5205fe671803465149e578849bbbe803c23a8e4e")
+        (revision "1"))
+    (package
+      (name "emacs-evil-mc")
+      (version (git-version "0.0.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gabesoft/evil-mc.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "03pxpjjxbai4dwp84bgxh52ahh0f6ac58xi2mds1kl4v93nm7v42"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-evil" ,emacs-evil)))
+      (native-inputs
+       `(("emacs-espuds" ,emacs-espuds)))
+      (home-page "https://github.com/gabesoft/evil-mc")
+      (synopsis "Interactive search compatible with @code{multiple-cursors}")
+      (description "This package can be used with @code{multiple-cursors} to
+provide an incremental search that moves all fake cursors in sync.")
+      (license license:expat))))
+
 (define-public emacs-evil-org
   (let ((commit "b6d652a9163d3430a9e0933a554bdbee5244bbf6"))
     (package
@@ -16129,12 +16180,11 @@ packages with a consistent way to use them.")
       (license license:gpl3+))))
 
 (define-public emacs-undo-propose-el
-  (let ((commit "5f1fa99a04369a959aad01b476fe4f34229f28cd")
-        (version "1.0.0")
+  (let ((commit "21a5cdc8ebfe8113f7039867c4abb0197c0fe71c")
         (revision "1"))
     (package
       (name "emacs-undo-propose-el")
-      (version (git-version version revision commit))
+      (version (git-version "3.0.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -16144,7 +16194,7 @@ packages with a consistent way to use them.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1p9h1fqmva07mcs46rqrg9vqn537b615as84s9b7xh76k1r8h1c0"))))
+           "035hav4lfxwgikg3zpb4cz1nf08qfp27awl87dqbm2ly6d74lpny"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/jackkamm/undo-propose-el")
       (synopsis "Simple and safe navigation of @code{undo} history")
@@ -17364,7 +17414,8 @@ connections using TLS encryption.")
          "0nnlxzsmhsbszqigcyxak9i1a0digrd13gv6v18ck4h760mihh1m"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-all-the-icons" ,emacs-all-the-icons)))
+     `(("emacs-flycheck" ,emacs-flycheck)
+       ("emacs-all-the-icons" ,emacs-all-the-icons)))
     (home-page
      "https://gitlab.petton.fr/nico/zerodark-theme")
     (synopsis
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index f581b2a38a..89649748e8 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -479,16 +479,17 @@ and Game Boy Color games.")
          (delete 'configure)
          ;; Makefile is in a subdirectory.
          (add-before
-          'build 'cd-to-project-dir
+          'build 'chdir-to-project-directory
           (lambda _
-            (chdir "projects/unix"))))
+            (chdir "projects/unix")
+            #t)))
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list "all" (string-append "PREFIX=" out)))
        ;; There are no tests.
        #:tests? #f))
     ;; As per the Makefile (in projects/unix/Makefile):
     (supported-systems '("i686-linux" "x86_64-linux"))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Nintendo 64 emulator core library")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -534,7 +535,7 @@ core library.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus SDL input plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -579,7 +580,7 @@ SDL audio plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus SDL input plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -621,7 +622,7 @@ SDL input plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus SDL input plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -663,7 +664,7 @@ high-level emulation (HLE) RSP processor plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus SDL input plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -709,7 +710,7 @@ Z64 RSP processor plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus Rice Video plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -763,7 +764,7 @@ Arachnoid video plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus Rice Video plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -813,7 +814,7 @@ Glide64 video plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus Rice Video plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -861,7 +862,7 @@ Glide64MK2 video plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus Rice Video plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -916,7 +917,7 @@ Rice Video plugin.")
                (string-append "APIDIR=" m64p "/include/mupen64plus")))
        ;; There are no tests.
        #:tests? #f))
-    (home-page "http://www.mupen64plus.org/")
+    (home-page "https://www.mupen64plus.org/")
     (synopsis "Mupen64Plus Z64 video plugin")
     (description
      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
@@ -1043,7 +1044,7 @@ emulation community.  It provides highly accurate emulation.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.7.7")
+    (version "1.7.8")
     (source
      (origin
        (method git-fetch)
@@ -1052,7 +1053,7 @@ emulation community.  It provides highly accurate emulation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "026720z0vpiwr4da7l2x2yinns09fmg6yxsib203xwnixj399azi"))))
+        (base32 "0xxd9nhqiclpkdd9crymvba37fl0xs5mikwhya68nfzcgar7w480"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -1074,8 +1075,7 @@ emulation community.  It provides highly accurate emulation.")
                  (("/bin/true") (which "true")))
                ;; Use shared zlib.
                (substitute* '("libretro-common/file/archive_file_zlib.c"
-                              "libretro-common/streams/trans_stream_zlib.c"
-                              "network/httpserver/httpserver.c")
+                              "libretro-common/streams/trans_stream_zlib.c")
                  (("<compat/zlib.h>") "<zlib.h>"))
                ;; The configure script does not yet accept the extra arguments
                ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 90aa48c23c..5e62f5e3da 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -65,7 +65,7 @@
 (define-public efl
   (package
     (name "efl")
-    (version "1.22.2")
+    (version "1.22.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -73,7 +73,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "1l0wdgzxqm2y919277b1p9d37xzg808zwxxaw0nn44arh8gqk68n"))))
+                "1j1i8cwq4ym9z34ikv35mdmv5q7q69hdp494mc6l03g9n6cl2yky"))))
     (outputs '("out"       ; 53 MB
                "include")) ; 21 MB
     (build-system gnu-build-system)
@@ -242,7 +242,7 @@ contents and more.")
 (define-public rage
   (package
     (name "rage")
-    (version "0.3.0")
+    (version "0.3.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -251,7 +251,7 @@ contents and more.")
                 version ".tar.xz"))
               (sha256
                (base32
-                "0gfzdd4jg78bkmj61yg49w7bzspl5m1nh6agqgs8k7qrq9q26xqy"))))
+                "04fdk23bbgvni212zrfy4ndg7vmshbsjgicrhckdvhay87pk9i75"))))
     (build-system meson-build-system)
     (arguments
      '(#:phases
@@ -273,20 +273,22 @@ Libraries with some extra bells and whistles.")
 (define-public enlightenment
   (package
     (name "enlightenment")
-    (version "0.22.4")
+    (version "0.23.0")
     (source (origin
               (method url-fetch)
               (uri
                (string-append "https://download.enlightenment.org/rel/apps/"
-                              name "/" name "-" version ".tar.xz"))
+                              "enlightenment/enlightenment-" version ".tar.xz"))
               (sha256
                (base32
-                "0ygy891rrw5c7lhk539nhif77j88phvz2h0fhx172iaridy9kx2r"))
+                "1y7x594gvyvl5zbb1rnf3clj2pm6j97n8wl5mp9x6xjmhx0d1idq"))
               (patches (search-patches "enlightenment-fix-setuid-path.patch"))))
-    (build-system gnu-build-system)
+    (build-system meson-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags '("-Dsystemd=false")
+       #:phases
        (modify-phases %standard-phases
+         (delete 'bootstrap) ; We don't want to run the autogen script.
          (add-before 'configure 'set-system-actions
            (lambda* (#:key inputs #:allow-other-keys)
             (setenv "HOME" "/tmp")
@@ -294,6 +296,7 @@ Libraries with some extra bells and whistles.")
                    (setxkbmap (assoc-ref inputs "setxkbmap"))
                    (utils     (assoc-ref inputs "util-linux"))
                    (libc      (assoc-ref inputs "libc"))
+                   (bluez     (assoc-ref inputs "bluez"))
                    (efl       (assoc-ref inputs "efl")))
                ;; We need to patch the path to 'base.lst' to be able
                ;; to switch the keyboard layout in E.
@@ -314,12 +317,14 @@ Libraries with some extra bells and whistles.")
                   (string-append efl "/bin/edje_cc -v %s %s %s\"")))
                (substitute* "src/modules/everything/evry_plug_apps.c"
                  (("/usr/bin/") ""))
-               (substitute* "configure"
+               (substitute* "data/etc/meson.build"
                  (("/bin/mount") (string-append utils "/bin/mount"))
                  (("/bin/umount") (string-append utils "/bin/umount"))
                  (("/usr/bin/eject") (string-append utils "/bin/eject"))
-                 (("/etc/acpi/sleep.sh force") "/run/current-system/profile/bin/loginctl suspend")
-                 (("/etc/acpi/hibernate.sh force") "/run/current-system/profile/bin/loginctl hibernate")
+                 (("/usr/bin/l2ping") (string-append bluez "/bin/l2ling"))
+                 (("/bin/rfkill") (string-append utils "/sbin/rfkill"))
+                 (("SUSPEND   = ''") "SUSPEND   = '/run/current-system/profile/bin/loginctl suspend'")
+                 (("HIBERNATE = ''") "HIBERNATE = '/run/current-system/profile/bin/loginctl hibernate'")
                  (("/sbin/shutdown -h now") "/run/current-system/profile/bin/loginctl poweroff now")
                  (("/sbin/shutdown -r now") "/run/current-system/profile/bin/loginctl reboot now"))
                #t))))))
@@ -329,12 +334,14 @@ Libraries with some extra bells and whistles.")
        ("util-linux" ,util-linux)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
+       ("bluez" ,bluez)
        ("dbus" ,dbus)
        ("efl" ,efl)
        ("freetype" ,freetype)
        ("libxcb" ,libxcb)
        ("libxext" ,libxext)
        ("linux-pam" ,linux-pam)
+       ("puleseaudio" ,pulseaudio)
        ("setxkbmap" ,setxkbmap)
        ("xcb-util-keysyms" ,xcb-util-keysyms)
        ("xkeyboard-config" ,xkeyboard-config)))
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 7b661d39ac..b4f259bf3a 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -85,20 +85,20 @@ formal verification.")
 (define-public iverilog
   (package
     (name "iverilog")
-    (version "10.2")
+    (version "10.3")
     (source (origin
               (method url-fetch)
               (uri
                (string-append "ftp://ftp.icarus.com/pub/eda/verilog/v10/"
                               "verilog-" version ".tar.gz"))
               (sha256
-                (base32
-                   "0075x5nsxwkrgn7b3635il9kw7mslckaji518pdmwdrdn7fxppln"))))
+               (base32
+                "1vv88ckvfwq7mrysyjnilsrcrzm9d173kp9w5ivwh6rdw7klbgc6"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
        ("bison" ,bison)
-       ("ghostscript" ,ghostscript))) ; ps2pdf
+       ("ghostscript" ,ghostscript)))   ; ps2pdf
     (home-page "http://iverilog.icarus.com/")
     (synopsis "FPGA Verilog simulation and synthesis tool")
     (description "Icarus Verilog is a Verilog simulation and synthesis tool.
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 817104cde1..3239ab4fd5 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
@@ -138,6 +138,12 @@ printing, and psresize, for adjusting page sizes.")
   (package
     (name "ghostscript")
     (version "9.27")
+
+    ;; The problems addressed by GHOSTSCRIPT/FIXED are not security-related,
+    ;; but they have a significant impact on usability, hence this graft.
+    ;; TODO: Ungraft on next update cycle.
+    (replacement ghostscript/fixed)
+
     (source
       (origin
         (method url-fetch)
@@ -269,6 +275,25 @@ output file formats and printers.")
     (home-page "https://www.ghostscript.com/")
     (license license:agpl3+)))
 
+(define-public ghostscript/fixed
+  ;; This adds the Freetype dependency (among other things), which fixes the
+  ;; rendering issues described in <https://issues.guix.gnu.org/issue/34877>.
+  (package/inherit
+   ghostscript
+   (arguments
+    (substitute-keyword-arguments (package-arguments ghostscript)
+      ((#:configure-flags flags ''())
+       `(append (list "--disable-compile-inits"
+                      (string-append "--with-fontpath="
+                                     (assoc-ref %build-inputs "gs-fonts")
+                                     "/share/fonts/type1/ghostscript"))
+                ,flags))))
+   (native-inputs `(("pkg-config" ,pkg-config)    ;needed for freetype
+                    ,@(package-native-inputs ghostscript)))
+   (inputs `(("gs-fonts" ,gs-fonts)
+             ("fontconfig" ,fontconfig)
+             ,@(package-inputs ghostscript)))))
+
 (define-public ghostscript/x
   (package/inherit ghostscript
     (name (string-append (package-name ghostscript) "-with-x"))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 3e17330447..3a50347f86 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -925,3 +926,40 @@ main loop, simply get a connection to the bus via the methods in
 @code{Net::DBus::GLib} rather than the usual @code{Net::DBus} module.  Every
 other API remains the same.")
     (license license:gpl2+)))
+
+(define-public template-glib
+  (package
+    (name "template-glib")
+    (version "3.32.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1g0zx0sxpw8kqp7p3sgl9kngaqrg9xl6cir24nrahks0vgsk98rr"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags '("-D" "enable_gtk_doc=true")))
+    (inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib" ,glib)
+       ("gobject-introspection" ,gobject-introspection)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("glib:bin" ,glib "bin") ;; For glib-mkenums
+       ("gtk-doc" ,gtk-doc)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (home-page "https://gitlab.gnome.org/GNOME/template-glib")
+    (synopsis "Library for template expansion")
+    (description
+     "Template-GLib is a library to help you generate text based on a template and
+user defined state.  Template-GLib does not use a language runtime, so it is
+safe to use from any GObject-Introspectable language.
+
+Template-GLib allows you to access properties on GObjects as well as call
+simple methods via GObject-Introspection.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index ca00bb0ffd..e37c2a4070 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -8053,7 +8053,7 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
 (define-public libdazzle
   (package
     (name "libdazzle")
-    (version "3.30.2")
+    (version "3.33.90")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/libdazzle/"
@@ -8061,17 +8061,11 @@ hexadecimal or ASCII.  It is useful for editing binary files in general.")
                                   "libdazzle-" version ".tar.xz"))
               (sha256
                (base32
-                "1m9n1gcxndly24rjkxzvmx02a2rkb6ad4cy7p6ncanm1kyp0wxvq"))))
+                "189m7q88d1a7bq0yyal9f3yhm9kz46lb61379nn4wsnnhpa1d0qs"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-test
-           (lambda _
-             ;; Disable failing test.
-             (substitute* "tests/meson.build"
-               (("test\\('test-application") "#"))
-             #t))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 2653645c5d..e07702f994 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -75,7 +75,8 @@
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1zz2zvikvfibxnk1va3kgzs7djsmiqy7bmk8y01vbsf54ryjb3zh"))))
+              "1zz2zvikvfibxnk1va3kgzs7djsmiqy7bmk8y01vbsf54ryjb3zh"))
+            (patches (search-patches "libextractor-exiv2.patch"))))
    (build-system gnu-build-system)
    ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
    ;; not to be a symbolic link to /run/shm.
@@ -146,14 +147,14 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.65")
+   (version "0.9.66")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1jdk6wigvnkh5bi9if4rik8i9sbvdql61lm8ipgpypyxqmcpjipj"))))
+              "06xblz77bnn29y7sl43avxbcrjbw486x3416plpr3x3l2pdx8rjf"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a0a1baa9a2..20f5462528 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -15,6 +15,7 @@
 ;;; Copyright @ 2018, 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 ;;; Copyright @ 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3636,3 +3637,26 @@ stack traces.  It simplifies the traces to make salient information more visible
 and aid debugging.")
     (home-page "https://github.com/maruel/panicparse")
     (license license:asl2.0)))
+
+(define-public go-github-com-robfig-cron
+  (package
+    (name "go-github-com-robfig-cron")
+    (version "3.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/robfig/cron")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0bvq5gxkhyj21lq32nma23i4dpwp7bswnp2yks6372ilkcyisx2z"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/robfig/cron"))
+    (home-page "https://godoc.org/github.com/robfig/cron")
+    (synopsis "Cron library for Go")
+    (description "This package provides a cron library for Go.  It implements
+a cron spec parser and job runner.")
+    (license license:expat)))
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
index 9296f3d80f..c1a0360b0e 100644
--- a/gnu/packages/gsasl.scm
+++ b/gnu/packages/gsasl.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b80a0f799a..34f9ca3844 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
+;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1597,7 +1598,8 @@ glass artworks done by Venicians glass blowers.")
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
     (inputs
      `(("gobject-introspection" ,gobject-introspection)
        ("gtk+" ,gtk+)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 16e30b9de7..7dff0c6269 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
+;;; Copyright © 2019 Amar Singh <nly@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,6 +56,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -70,6 +72,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages noweb)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -2350,22 +2353,52 @@ more expressive and flexible than the traditional @code{format} procedure.")
        ("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)
        ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
-    (propagated-inputs
+    (inputs
      `(("dbus-glib" ,dbus-glib)
        ("guile" ,guile-2.2)
        ("guile-lib" ,guile-lib)
        ("guile-readline" ,guile-readline)
-       ("glib-networking" ,glib-networking)
        ("freeglut" ,freeglut)
-       ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("webkitgtk" ,webkitgtk)))
+    (propagated-inputs
+     `(("glib-networking" ,glib-networking)
+       ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
     (arguments
-     `(#:phases
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 popen)
+                  (ice-9 rdelim)
+                  (ice-9 regex)
+                  (ice-9 ftw)
+                  (srfi srfi-26))
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'setenv
            (lambda _
              (setenv "GUILE_AUTO_COMPILE" "0")
-             #t)))))
+             #t))
+         (add-after 'install 'wrap-binaries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (effective (read-line
+                                (open-pipe* OPEN_READ
+                                            "guile" "-c"
+                                            "(display (effective-version))")))
+                    (deps (map (cut assoc-ref inputs <>)
+                               '("guile-lib" "guile-readline")))
+                    (scm-path (map (cut string-append <> "/share/guile/site/"
+                                        effective) `(,out ,@deps)))
+                    (go-path (map (cut string-append <> "/lib/guile/" effective
+                                       "/site-ccache/") `(,out ,@deps)))
+                    (examples (filter (cut string-match "emacsy" <>)
+                                      (scandir (string-append out "/bin/"))))
+                    (progs (map (cut string-append out "/bin/" <>)
+                                examples)))
+               (map (cut wrap-program <>
+                         `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+                         `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
+                    progs)
+               #t))))))
     (home-page "https://savannah.nongnu.org/projects/emacsy")
     (synopsis "Embeddable GNU Emacs-like library using Guile")
     (description
@@ -2377,6 +2410,36 @@ comes with a simple counter example using FreeGLUT and browser examples
 in C using Gtk+-3 and WebKitGtk.")
     (license license:gpl3+)))
 
+(define-public emacsy-minimal
+  (let ((commit "f3bf0dbd803d7805b6ae8303253507ad13922293"))
+    (package
+      (inherit emacsy)
+      (name "emacsy-minimal")
+      (version (git-version "v0.4.1" "19" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.savannah.gnu.org/git/emacsy.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0ivy28km1p7nlrf63xx3hvrpxf5ld5amk1wcan3k7sqv1kq9mqdb"))))
+      (build-system gnu-build-system)
+      (inputs
+       `(("guile" ,guile-2.2)
+         ("guile-lib" ,guile-lib)
+         ("guile-readline" ,guile-readline)))
+      (propagated-inputs '())
+      (arguments
+       `(#:configure-flags '("--without-examples")
+         #:phases
+         (modify-phases %standard-phases
+         (add-before 'configure 'setenv
+           (lambda _
+             (setenv "GUILE_AUTO_COMPILE" "0")
+             #t))))))))
+
 (define-public guile-jpeg
   (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
         (revision "0"))
@@ -2410,3 +2473,95 @@ in C using Gtk+-3 and WebKitGtk.")
        "Guile-JPEG is a Scheme library to parse JPEG image files and to
 perform geometrical transforms on JPEG images.")
       (license license:gpl3+))))
+
+(define-public nomad
+  (package
+    (name "nomad")
+    (version "0.1.1-alpha")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.savannah.gnu.org/git/nomad.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0abz07hl5dh802ciy71xzkvkhyryypq1i94wna40a2wndbd73f7z"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("bash" ,bash)
+       ("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)
+       ("guile" ,guile-2.2)
+       ("glib:bin" ,glib "bin")))
+    (inputs
+     `(("guile" ,guile-2.2)
+       ("guile-lib" ,guile-lib)
+       ("guile-gcrypt" ,guile-gcrypt)
+       ("guile-readline" ,guile-readline)
+       ("gnutls" ,gnutls)
+       ("shroud" ,shroud)
+       ("emacsy" ,emacsy-minimal)
+       ("glib" ,glib)
+       ("dbus-glib" ,dbus-glib)
+       ("gtk+" ,gtk+)
+       ("gtksourceview" ,gtksourceview)
+       ("webkitgtk" ,webkitgtk)
+       ("xorg-server" ,xorg-server)))
+    (propagated-inputs
+     `(("glib" ,glib)
+       ("glib-networking" ,glib-networking)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 popen)
+                  (ice-9 rdelim)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xorg-server
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The test suite requires a running X server.
+             (system (format #f "~a/bin/Xvfb :1 &"
+                             (assoc-ref inputs "xorg-server")))
+             (setenv "DISPLAY" ":1")
+             #t))
+         (add-after 'install 'wrap-binaries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (gio-deps (map (cut assoc-ref inputs <>) '("glib-networking"
+                                                               "glib")))
+                    (gio-mod-path (map (cut string-append <> "/lib/gio/modules")
+                                       gio-deps))
+                    (effective (read-line (open-pipe*
+                                           OPEN_READ
+                                           "guile" "-c"
+                                           "(display (effective-version))")))
+                    (deps (map (cut assoc-ref inputs <>)
+                               '("emacsy" "guile-lib" "guile-readline"
+                                 "shroud")))
+                    (scm-path (map (cut string-append <>
+                                        "/share/guile/site/" effective)
+                                   `(,out ,@deps)))
+                    (go-path (map (cut string-append <>
+                                       "/lib/guile/" effective "/site-ccache")
+                                  `(,out ,@deps)))
+                    (progs (map (cut string-append out "/bin/" <>)
+                                '("nomad"))))
+               (map (cut wrap-program <>
+                         `("GIO_EXTRA_MODULES" ":" prefix ,gio-mod-path)
+                         `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+                         `("GUILE_LOAD_COMPILED_PATH" ":"
+                           prefix ,go-path))
+                    progs)
+               #t))))))
+    (home-page "https://savannah.nongnu.org/projects/nomad/")
+    (synopsis "Extensible Web Browser in Guile Scheme")
+    (description "Nomad is an Emacs-like Web Browser built using Webkitgtk and
+Emacsy.  It has a small C layer and most browser features are fully
+programmable in Guile.  It has hooks, keymaps, and self documentation
+features.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index b07a570654..475a6c5ef0 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -264,14 +264,14 @@ without requiring the source code to be rewritten.")
   (package
     (inherit guile-2.2)
     (name "guile-next")
-    (version "2.9.3")
+    (version "2.9.4")
     (source (origin
               (inherit (package-source guile-2.2))
               (uri (string-append "ftp://alpha.gnu.org/gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "14990wcpysgw58kij03wbgiggmi5z94jmy7wdcqnn6ny7cimkkgr"))))
+                "1milviqhipyfx400pqhngxpxyajalzwmp597dxn5514pkk0g7v0p"))))
     (native-search-paths
      (list (search-path-specification
             (variable "GUILE_LOAD_PATH")
@@ -541,7 +541,7 @@ Guile's foreign function interface.")
 (define-public guile-bytestructures
   (package
     (name "guile-bytestructures")
-    (version "1.0.5")
+    (version "1.0.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/TaylanUB/scheme-bytestructures"
@@ -549,7 +549,7 @@ Guile's foreign function interface.")
                                   "/bytestructures-" version ".tar.gz"))
               (sha256
                (base32
-                "0ibk7fjwpb450lnrva4bx45sgln3pbyb645az4ansvh1spgani43"))))
+                "07dffrmc6cnw9mmw0pdrqlkbhzzpz0hm8p26z738l2j5i84dypnk"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -563,7 +563,8 @@ of the C programming language, to be used on bytevectors.  C's type
 system works on raw memory, and Guile works on bytevectors which are
 an abstraction over raw memory.  It's also more powerful than the C
 type system, elevating types to first-class status.")
-    (license license:gpl3+)))
+    (license license:gpl3+)
+    (properties '((upstream-name . "bytestructures")))))
 
 (define-public guile2.0-bytestructures
   (package-for-guile-2.0 guile-bytestructures))
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 4f61f2ba66..2dd2097075 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -219,7 +219,7 @@ written in Go.")
 (define-public go-ipfs
   (package
     (name "go-ipfs")
-    (version "0.4.19")
+    (version "0.4.22")
     (source
      (origin
        (method url-fetch/tarbomb)
@@ -227,7 +227,7 @@ written in Go.")
              "https://dist.ipfs.io/go-ipfs/v" version
              "/go-ipfs-source.tar.gz"))
        (sha256
-        (base32 "0s04ap14p6hnipjm27nm5k8s28zv9k5g9mziyh3ibgwn7dzb1kpx"))
+        (base32 "1gyz9yqb4y7p6vdjbcm66nvm6gjs4mdrjygdn79z3misv1pb5nkg"))
        (file-name (string-append name "-" version "-source"))))
     (build-system go-build-system)
     (arguments
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index f15715ee40..e03d30cb03 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -181,31 +181,31 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 
 (define deblob-scripts-5.2
   (linux-libre-deblob-scripts
-   "5.2.3"
+   "5.2.10"
    (base32 "076fwxlm6jq6z4vg1xq3kr474zz7qk71r90sf9dnfia3rw2pb4fa")
    (base32 "0d3pp1bqchqc7vnxr1a56km5r0hzjiiipzz2xc3wgjwfi51k9kxc")))
 
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
-   "4.19.61"
+   "4.19.68"
    (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
    (base32 "1fyacg28aym6virxyn7wk99qil2fjbks3iwm7p3hxy51pccn34za")))
 
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
-   "4.14.134"
+   "4.14.140"
    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
    (base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n")))
 
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
-   "4.9.186"
+   "4.9.190"
    (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
-   (base32 "1gmjn5cwxydg6qb47wcmahwkv37npsjx4papynzkkdxyidmrccya")))
+   (base32 "0is8gn4qdd7h5l6lacvhqdch26lmrbgxfm8ab7fx8n85ha7y358w")))
 
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
-   "4.4.186"
+   "4.4.190"
    (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
    (base32 "1x40lbiaizksy8z38ax7wpqr9ldgq7qvkxbb0ca98vd1axpklb10")))
 
@@ -349,42 +349,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.2-version "5.2.9")
+(define-public linux-libre-5.2-version "5.2.11")
 (define-public linux-libre-5.2-pristine-source
   (let ((version linux-libre-5.2-version)
-        (hash (base32 "1rnlnphw9rih4qhdld9ic5lnj5jh4vy5nqbj9lqwv9bc615jmw5n")))
+        (hash (base32 "1y9kn1zny3xpmbi5an3g7hbzywnycys8chfaw6laij1xk4gq6ahc")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.2)))
 
-(define-public linux-libre-4.19-version "4.19.67")
+(define-public linux-libre-4.19-version "4.19.69")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "00m5k0nfcvgff70686rbhn3w8c9wc3jxqvyddw40lylaqdh3s72s")))
+        (hash (base32 "11yrw8ixd5ni9rlpndqsz2ihx6k8qaf35a1lf164lkhaa85pd4f0")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.139")
+(define-public linux-libre-4.14-version "4.14.141")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0hkhwcbxg6bry13w9kspx48b10274w6pgv200wh91fjd8jax8qlc")))
+        (hash (base32 "05rs411rw10hhnfzvaxmcik3pq20i1i05shvvra4bv164f0z1f8b")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.189")
+(define-public linux-libre-4.9-version "4.9.190")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "1cyhwnxkjd0qa5d48657yppjnzbi830q0p25jjv2dxs629k4bnck")))
+        (hash (base32 "05ha3snfk0vdqk9i27icwpq2if0h2jvshavn69ldwqm4h2h1r2py")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.189")
+(define-public linux-libre-4.4-version "4.4.190")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "0nc8v62gw89m3ykqg6nqf749fzm8y1n481ns8vny4gbinyikjhlp")))
+        (hash (base32 "1rf28cjrrmj7mm8xqlfld6k20ddk15j4mmyarqibjx9pk9acij7y")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -4854,14 +4854,14 @@ running boot option, and more.")
 (define-public sysstat
   (package
     (name "sysstat")
-    (version "11.4.3")
+    (version "12.1.6")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://perso.orange.fr/sebastien.godard/"
+              (uri (string-append "http://pagesperso-orange.fr/sebastien.godard/"
                                   "sysstat-" version ".tar.xz"))
               (sha256
                (base32
-                "1ryf9myjzpa2279i3rvsh6fr5psm6qvr5r9kbm1sxyspapxcms82"))))
+                "0agi17n82k363mf9f7cky3isq195hw112vs98v26yfhm0v2g6lpp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; No test suite.
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index a42369ba06..34edea41de 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -327,14 +327,14 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "1.5.1")
+    (version "1.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "08z62qba0kmm15k93s2rq7ipi769895g8iwigcp20qjh6amwnwph"))
+        (base32 "1qmapk2hyxxqd3ajiqacz4isij0ibx7gn10n8dbmq33gm3kgliyb"))
        (modules '((guix build utils)))
        (snippet
         ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
@@ -364,7 +364,8 @@ an interpreter, a compiler, a debugger, and much more.")
        ("inetutils" ,inetutils)         ;for hostname(1)
        ("ed" ,ed)
        ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
-       ("texinfo" ,texinfo)))
+       ("texinfo" ,texinfo)
+       ("zlib" ,zlib)))
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   (guix build utils)
@@ -431,7 +432,9 @@ an interpreter, a compiler, a debugger, and much more.")
                                         (_
                                          `("clisp")))
                      (string-append "--prefix="
-                                    (assoc-ref outputs "out")))))
+                                    (assoc-ref outputs "out"))
+                     "--with-sb-core-compression"
+                     "--with-sb-xref-for-internals")))
          (replace 'install
            (lambda _
              (invoke "sh" "install.sh")))
@@ -440,6 +443,21 @@ an interpreter, a compiler, a debugger, and much more.")
              (with-directory-excursion "doc/manual"
                (and  (invoke "make" "info")
                      (invoke "make" "dist")))))
+         (add-after 'build 'build-source
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (rc (string-append out "/lib/sbcl/sbclrc"))
+                    (source-dir (string-append out "/share/sbcl")))
+               (for-each (lambda (p)
+                           (copy-recursively p (string-append source-dir "/" p)))
+                         '("src" "contrib"))
+               (mkdir-p (dirname rc))
+               (with-output-to-file rc
+                 (lambda ()
+                   (display
+                    (string-append "(sb-ext:set-sbcl-source-location \""
+                                   source-dir "\")") )))
+               #t)))
          (add-after 'install 'install-doc
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -6650,3 +6668,75 @@ discoverable library instead of many; consistency and composability, where
 @code{s} is always the last argument, which makes it easier to feed pipes and
 arrows.")
       (license license:expat))))
+
+(define-public sbcl-cl-xmlspam
+  (let ((commit "ea06abcca2a73a9779bcfb09081e56665f94e22a"))
+    (package
+      (name "sbcl-cl-xmlspam")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "0.0.0" "1" commit))
+      (home-page "https://github.com/rogpeppe/cl-xmlspam")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (string-append name "-" version))
+         (sha256
+          (base32
+           "0w4rqvrgdgk3fwfq3kx4r7wwdr2bv3b6n3bdqwsiriw9psqzpz2s"))))
+      (inputs
+       `(("cxml" ,sbcl-cxml)
+         ("cl-ppcre" ,sbcl-cl-ppcre)))
+      (synopsis "Concise, regexp-like pattern matching on streaming XML for Common Lisp")
+      (description "CXML does an excellent job at parsing XML elements, but what
+do you do when you have a XML file that's larger than you want to fit in
+memory, and you want to extract some information from it?  Writing code to deal
+with SAX events, or even using Klacks, quickly becomes tedious.
+@code{cl-xmlspam} (for XML Stream PAttern Matcher) is designed to make it easy
+to write code that mirrors the structure of the XML that it's parsing.  It
+also makes it easy to shift paradigms when necessary - the usual Lisp control
+constructs can be used interchangeably with pattern matching, and the full
+power of CXML is available when necessary.")
+      (license license:bsd-3))))
+
+;; TODO: dbus uses ASDF's package-inferred-system which is not supported by
+;; asdf-build-system/sbcl as of 2019-08-02.  We should fix
+;; asdf-build-system/sbcl.
+(define-public cl-dbus
+  (let ((commit "24b452df3a45ca5dc95015500f34baad175c981a")
+        (revision "1"))
+    (package
+      (name "cl-dbus")
+      (build-system asdf-build-system/source)
+      (version (git-version "20190408" revision commit))
+      (home-page "https://github.com/death/dbus")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0fw2q866yddbf23nk9pxphm9gsasx35vjyss82xzvndnjmzlqfl5"))))
+      ;; Inputs must be propagated or else packages depending on this won't have the necessary packages.
+      (propagated-inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("trivial-garbage" ,sbcl-trivial-garbage)
+         ("babel" ,sbcl-babel)
+         ("iolib" ,sbcl-iolib)
+         ("iolib+multiplex" ,(@@ (gnu packages lisp) sbcl-iolib+multiplex))
+         ("iolib+syscalls" ,(@@ (gnu packages lisp) sbcl-iolib+syscalls))
+         ("iolib+streams" ,(@@ (gnu packages lisp) sbcl-iolib+streams))
+         ("iolib+sockets" ,(@@ (gnu packages lisp) sbcl-iolib+sockets))
+         ("ieee-floats" ,sbcl-ieee-floats)
+         ("flexi-streams" ,sbcl-flexi-streams)
+         ("cl-xmlspam" ,sbcl-cl-xmlspam)
+         ("ironclad" ,sbcl-ironclad)))
+      (synopsis "D-Bus client library for Common Lisp")
+      (description "This is a Common Lisp library that allows to publish D-Bus
+objects as well as send and notify other objects connected to a bus.")
+      (license license:bsd-2))))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index bb3bf2bfb5..30ce5cd70c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1285,7 +1285,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.6")
+    (version "2.3.7.2")
     (source
      (origin
        (method url-fetch)
@@ -1293,7 +1293,8 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "1irnalplb47nlc26dn7zzdi95zhrxxi3miza7p3wdsgapv0qs7gd"))))
+        (base32
+         "0q0jgcv3ni2znkgyhc966ffphj1wk73y76wssh0yciqafs2f0v36"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 2163b646f6..4594e2fe36 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -2,8 +2,8 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -158,6 +158,15 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                 (current-source-location)
                                 #:native-inputs native-inputs))
 
+(define static-bash-for-bootstrap
+  (package
+    (inherit static-bash)
+    (source (origin
+              (inherit (package-source static-bash))
+              (patches
+               (cons (search-patch "bash-4.4-linux-pgrp-pipe.patch")
+                     (origin-patches (package-source static-bash))))))))
+
 (define %static-inputs
   ;; Packages that are to be used as %BOOTSTRAP-INPUTS.
   (let ((coreutils (package (inherit coreutils)
@@ -234,7 +243,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                  (("-Wl,-export-dynamic") ""))
                                #t)))))))
                 (inputs (if (%current-target-system)
-                            `(("bash" ,static-bash))
+                            `(("bash" ,static-bash-for-bootstrap))
                             '()))))
 	(tar (package (inherit tar)
 	       (arguments
@@ -280,7 +289,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                ("sed" ,sed)
                ("grep" ,grep)
                ("gawk" ,gawk)))
-      ("bash" ,static-bash))))
+      ("bash" ,static-bash-for-bootstrap))))
 
 (define %static-binaries
   (package
@@ -585,8 +594,32 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
            #t))))
     (inputs `(("gcc" ,%gcc-static)))))
 
+;; One package: build + remove store references
+;; (define %mescc-tools-static-stripped
+;;   ;; A statically linked Mescc Tools with store references removed, for
+;;   ;; bootstrap.
+;;   (package
+;;     (inherit mescc-tools)
+;;     (name "mescc-tools-static-stripped")
+;;     (arguments
+;;      `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+;;                           "CC=gcc -static")
+;;        #:test-target "test"
+;;        #:phases (modify-phases %standard-phases
+;;                   (delete 'configure)
+;;                   (add-after 'install 'strip-store-references
+;;                     (lambda _
+;;                       (let* ((out (assoc-ref %outputs "out"))
+;;                              (bin (string-append out "/bin")))
+;;                         (for-each (lambda (file)
+;;                                  (let ((target (string-append bin "/" file)))
+;;                                    (format #t "strippingg `~a'...~%" target)
+;;                                    (remove-store-references target)))
+;;                                   '( "M1" "blood-elf" "hex2"))))))))))
+
+;; Two packages: first build static, bare minimum content.
 (define %mescc-tools-static
-  ;; A statically linked MesCC Tools for bootstrap.
+  ;; A statically linked MesCC Tools.
   (package
     (inherit mescc-tools)
     (name "mescc-tools-static")
@@ -596,12 +629,73 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
            ((#:make-flags flags)
             `(cons "CC=gcc -static" ,flags)))))))
 
-(define-public %mes-minimal-stripped
-  ;; A minimal Mes without documentation dependencies, for bootstrap.
+;; ... next remove store references.
+(define %mescc-tools-static-stripped
+  ;; A statically linked Mescc Tools with store references removed, for
+  ;; bootstrap.
+  (package
+    (inherit %mescc-tools-static)
+    (name (string-append (package-name %mescc-tools-static) "-stripped"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((in  (assoc-ref %build-inputs "mescc-tools"))
+                (out (assoc-ref %outputs "out"))
+                (bin (string-append out "/bin")))
+           (mkdir-p bin)
+           (for-each (lambda (file)
+                       (let ((target (string-append bin "/" file)))
+                         (format #t "copying `~a'...~%" file)
+                         (copy-file (string-append in "/bin/" file)
+                                    target)
+                         (remove-store-references target)))
+                     '( "M1" "blood-elf" "hex2"))
+           #t))))
+    (inputs `(("mescc-tools" ,%mescc-tools-static)))))
+
+;; (define-public %mes-minimal-stripped
+;;   ;; A minimal Mes without documentation dependencies, for bootstrap.
+;;   (let ((triplet "i686-unknown-linux-gnu"))
+;;     (package
+;;       (inherit mes)
+;;       (name "mes-minimal-stripped")
+;;       (native-inputs
+;;        `(("guile" ,guile-2.2)))
+;;       (arguments
+;;        `(#:system "i686-linux"
+;;          #:strip-binaries? #f
+;;          #:configure-flags '("--mes")
+;;          #:phases
+;;          (modify-phases %standard-phases
+;;            (delete 'patch-shebangs)
+;;            (add-after 'install 'strip-install
+;;              (lambda _
+;;                (let* ((out (assoc-ref %outputs "out"))
+;;                       (share (string-append out "/share")))
+;;                  (delete-file-recursively (string-append out "/lib/guile"))
+;;                  (delete-file-recursively (string-append share "/guile"))
+;;                  (delete-file-recursively (string-append share "/mes/scaffold"))
+
+;;                  (for-each delete-file
+;;                            (find-files
+;;                             (string-append share "/mes/lib") "\\.(h|c)"))
+
+;;                  (for-each (lambda (dir)
+;;                              (for-each remove-store-references
+;;                                        (find-files (string-append out "/" dir)
+;;                                                    ".*")))
+;;                            '("bin" "share/mes")))))))))))
+
+;; Two packages: first build static, bare minimum content.
+(define-public %mes-minimal
+  ;; A minimal Mes without documentation.
   (let ((triplet "i686-unknown-linux-gnu"))
     (package
       (inherit mes)
-      (name "mes-minimal-stripped")
+      (name "mes-minimal")
       (native-inputs
        `(("guile" ,guile-2.2)))
       (arguments
@@ -610,6 +704,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
          #:configure-flags '("--mes")
          #:phases
          (modify-phases %standard-phases
+           (delete 'patch-shebangs)
            (add-after 'install 'strip-install
              (lambda _
                (let* ((out (assoc-ref %outputs "out"))
@@ -617,10 +712,35 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                  (delete-file-recursively (string-append out "/lib/guile"))
                  (delete-file-recursively (string-append share "/guile"))
                  (delete-file-recursively (string-append share "/mes/scaffold"))
-                 (for-each
-                  delete-file
-                  (find-files (string-append share  "/mes/lib")
-                              "\\.(h|c)")))))))))))
+
+                 (for-each delete-file
+                           (find-files
+                            (string-append share "/mes/lib")
+                            "\\.(h|c)")))))))))))
+
+;; next remove store references.
+(define %mes-minimal-stripped
+  ;; A minimal Mes with store references removed, for bootstrap.
+  (package
+    (inherit %mes-minimal)
+    (name (string-append (package-name %mes-minimal) "-stripped"))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((in  (assoc-ref %build-inputs "mes"))
+               (out (assoc-ref %outputs "out")))
+
+           (copy-recursively in out)
+           (for-each (lambda (dir)
+                       (for-each remove-store-references
+                                 (find-files (string-append out "/" dir)
+                                             ".*")))
+                     '("bin" "share/mes"))
+           #t))))
+    (inputs `(("mes" ,%mes-minimal)))))
 
 (define %guile-static
   ;; A statically-linked Guile that is relocatable--i.e., it can search
@@ -680,6 +800,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                      ((#:tests? _ #f)
                       ;; There are uses of `dynamic-link' in
                       ;; {foreign,coverage}.test that don't fly here.
+                      #f)
+                     ((#:parallel-build? _ #f)
+                      ;; Work around the fact that the Guile build system is
+                      ;; not deterministic when parallel-build is enabled.
                       #f))))))
     (package-with-relocatable-glibc (static-package guile))))
 
@@ -790,11 +914,11 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
   (tarball-package %guile-static-stripped))
 
 (define %mescc-tools-bootstrap-tarball
-  ;; A tarball with MesCC binary seed.
-  (tarball-package %mescc-tools-static))
+  ;; A tarball with statically-linked MesCC binary seed.
+  (tarball-package %mescc-tools-static-stripped))
 
 (define %mes-bootstrap-tarball
-  ;; A tarball with Mes ASCII Seed and binary Mes C Library.
+  ;; A tarball with Mes binary seed.
   (tarball-package %mes-minimal-stripped))
 
 (define %bootstrap-tarballs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 7a04aa979e..38bb81242f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -246,7 +246,7 @@ triangulations.")
 (define-public python-cvxopt
   (package
     (name "python-cvxopt")
-    (version "1.2.1")
+    (version "1.2.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -255,7 +255,7 @@ triangulations.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "05mnjil9palaa48xafdfh4f5pr4z7aqjr995rwl08qfyxs8y0crf"))))
+                "1kiy2m62xgs2d5id6dnnwy4vap85cd70p7pgkb9nh23qf9xnak7b"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
index 017f9453ab..fe51780fa3 100644
--- a/gnu/packages/mingw.scm
+++ b/gnu/packages/mingw.scm
@@ -36,15 +36,15 @@
   (let ((triplet (string-append machine "-" "w64-mingw32")))
     (package
       (name (string-append "mingw-w64" "-" machine))
-      (version "5.0.4")
+      (version "6.0.0")
       (source (origin
                 (method url-fetch)
                 (uri (string-append
                       "https://sourceforge.net/projects/mingw-w64/files/mingw-w64/"
                       "mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
                 (sha256
-                 (base32 "00zq3z1hbzd5yzmskskjg79xrzwsqx7ihyprfaxy4hb897vf29sm"))
-                (patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))
+                 (base32 "1w28mynv500y03h92nh87rgw3fnp82qwnjbxrrzqkmr63q812pl0"))
+                (patches (search-patches "mingw-w64-6.0.0-gcc.patch"))))
       (native-inputs `(("xgcc-core" ,(cross-gcc triplet))
                        ("xbinutils" ,(cross-binutils triplet))))
       (build-system gnu-build-system)
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 6f79dd49fc..8a3cef3377 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -30,13 +30,13 @@
 (define-public nano
   (package
     (name "nano")
-    (version "4.3")
+    (version "4.4")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz"))
       (sha256
-       (base32 "108dzj6azqmini9bvgl26r0q1y59s3nnrw75hfzv91bs50davlq0"))))
+       (base32 "1iw2ypq34g1gfqyhgka2fz5yj5vrlz85q6zk7amgyj286ph25wia"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index fce0d0f84d..49ac949b06 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -465,32 +465,17 @@ sub-directory.")
 (define-public stow
   (package
     (name "stow")
-    (version "2.3.0")
+    (version "2.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/stow/stow-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0h8qr2rxsrkg6d8jxjk68r23jgn1dxdxyp4bnzzinpa8sjhfl905"))))
+                "0jrxy12ywn7smdzdnvwzjw77l6knx6jkj2rckgykg1dpf6bdkm89"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'wrap-stow
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (wrap-program (string-append out "/bin/stow")
-                 `("PERL5LIB" ":" prefix
-                   ,(map (lambda (i) (string-append (assoc-ref inputs i)
-                                                    "/lib/perl5/site_perl"))
-                         '("perl-clone-choose" "perl-clone" "perl-hash-merge"))))
-               #t))))))
     (inputs
-     `(("perl" ,perl)
-       ("perl-clone" ,perl-clone)
-       ("perl-clone-choose" ,perl-clone-choose)
-       ("perl-hash-merge" ,perl-hash-merge)))
+     `(("perl" ,perl)))
     (native-inputs
      `(("perl-test-simple" ,perl-test-simple)
        ("perl-test-output" ,perl-test-output)
@@ -559,75 +544,83 @@ transactions from C or Python.")
     (license license:gpl2+)))
 
 (define-public diffoscope
-  (package
-    (name "diffoscope")
-    (version "120")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
-                    (commit "120")))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "07z9yclvfkw4326739l2ywzzihax5vdijiaqqpfix9rz1rb923aa"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases (modify-phases %standard-phases
-                  ;; setup.py mistakenly requires python-magic from PyPi, even
-                  ;; though the Python bindings of `file` are sufficient.
-                  ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
-                  (add-after 'unpack 'dependency-on-python-magic
-                    (lambda _
-                      (substitute* "setup.py"
-                        (("'python-magic',") ""))))
-                  ;; This test is broken because our `file` package has a
-                  ;; bug in berkeley-db file type detection.
-                  (add-after 'unpack 'remove-berkeley-test
-                    (lambda _
-                      (delete-file "tests/comparators/test_berkeley_db.py")
-                      #t))
-                  (add-after 'unpack 'embed-tool-references
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (substitute* "diffoscope/comparators/utils/compare.py"
-                        (("\\['xxd',")
-                         (string-append "['" (which "xxd") "',")))
-                      (substitute* "diffoscope/comparators/elf.py"
-                        (("@tool_required\\('readelf'\\)") "")
-                        (("get_tool_name\\('readelf'\\)")
-                         (string-append "'" (which "readelf") "'")))
-                      (substitute* "diffoscope/comparators/directory.py"
-                        (("@tool_required\\('stat'\\)") "")
-                        (("@tool_required\\('getfacl'\\)") "")
-                        (("\\['stat',")
-                         (string-append "['" (which "stat") "',"))
-                        (("\\['getfacl',")
-                         (string-append "['" (which "getfacl") "',")))
-                      #t))
-                  (add-before 'check 'delete-failing-test
-                    (lambda _
-                      ;; this requires /sbin to be on the path
-                      (delete-file "tests/test_tools.py")
-                      #t)))))
-    (inputs `(("rpm" ,rpm)                        ;for rpm-python
-              ("python-file" ,python-file)
-              ("python-debian" ,python-debian)
-              ("python-libarchive-c" ,python-libarchive-c)
-              ("python-tlsh" ,python-tlsh)
-              ("acl" ,acl)                        ;for getfacl
-              ("colordiff" ,colordiff)
-              ("xxd" ,xxd)))
-    ;; Below are modules used for tests.
-    (native-inputs `(("python-pytest" ,python-pytest)
-                     ("python-chardet" ,python-chardet)))
-    (home-page "https://diffoscope.org/")
-    (synopsis "Compare files, archives, and directories in depth")
-    (description
-     "Diffoscope tries to get to the bottom of what makes files or directories
+  (let ((version "121"))
+    (package
+      (name "diffoscope")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://salsa.debian.org/reproducible-builds/diffoscope.git")
+                      (commit version)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1bw7s8qs1vnr93vhifl6pj6h6w6r6nrpc5anzhh9wx2gcaipkb3m"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    ;; setup.py mistakenly requires python-magic from PyPi, even
+                    ;; though the Python bindings of `file` are sufficient.
+                    ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815844
+                    (add-after 'unpack 'dependency-on-python-magic
+                      (lambda _
+                        (substitute* "setup.py"
+                          (("'python-magic',") ""))))
+                    ;; This test is broken because our `file` package has a
+                    ;; bug in berkeley-db file type detection.
+                    (add-after 'unpack 'remove-berkeley-test
+                      (lambda _
+                        (delete-file "tests/comparators/test_berkeley_db.py")
+                        #t))
+                    (add-after 'unpack 'embed-tool-references
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "diffoscope/comparators/utils/compare.py"
+                          (("\\['xxd',")
+                           (string-append "['" (which "xxd") "',")))
+                        (substitute* "diffoscope/comparators/elf.py"
+                          (("@tool_required\\('readelf'\\)") "")
+                          (("get_tool_name\\('readelf'\\)")
+                           (string-append "'" (which "readelf") "'")))
+                        (substitute* "diffoscope/comparators/directory.py"
+                          (("@tool_required\\('stat'\\)") "")
+                          (("@tool_required\\('getfacl'\\)") "")
+                          (("\\['stat',")
+                           (string-append "['" (which "stat") "',"))
+                          (("\\['getfacl',")
+                           (string-append "['" (which "getfacl") "',")))
+                        #t))
+                    (add-before 'check 'writable-test-data
+                      (lambda _
+                        ;; tests/comparators/test_elf.py needs write access to
+                        ;; test data
+                        (make-file-writable
+                         "tests/data/ignore_readelf_errors_expected_diff")
+                        #t))
+                    (add-before 'check 'delete-failing-test
+                      (lambda _
+                        ;; this requires /sbin to be on the path
+                        (delete-file "tests/test_tools.py")
+                        #t)))))
+      (inputs `(("rpm" ,rpm)                        ;for rpm-python
+                ("python-file" ,python-file)
+                ("python-debian" ,python-debian)
+                ("python-libarchive-c" ,python-libarchive-c)
+                ("python-tlsh" ,python-tlsh)
+                ("acl" ,acl)                        ;for getfacl
+                ("colordiff" ,colordiff)
+                ("xxd" ,xxd)))
+      ;; Below are modules used for tests.
+      (native-inputs `(("python-pytest" ,python-pytest)
+                       ("python-chardet" ,python-chardet)))
+      (home-page "https://diffoscope.org/")
+      (synopsis "Compare files, archives, and directories in depth")
+      (description
+       "Diffoscope tries to get to the bottom of what makes files or directories
 different.  It recursively unpacks archives of many kinds and transforms
 various binary formats into more human readable forms to compare them.  It can
 compare two tarballs, ISO images, or PDFs just as easily.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public trydiffoscope
  (package
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index cdc35b4703..3b7ce4c150 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -52,14 +52,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20190522")
+    (version "20190822")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "0y3z9wybs3gak3zwgsby8r5gg6dwd3qlrkch0q4fn0i1j1jhmijv"))))
+       (base32 "1mi3a18fdwcx50jg51pw1ks1fkmc2slyinff0yb3xhihi2szbskp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 8b1bca37e1..ff13be24db 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -236,28 +236,40 @@ platforms.")
 (define-public shroud
   (package
     (name "shroud")
-    (version "0.1.1")
+    (version "0.1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://files.dthompson.us/shroud/shroud-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1y43yhgy2zbrk5bqj3qyx9rkcz2bma9sinlrg7dip3jqms9gq4lr"))))
+                "1l2shrhvcwfzkar9qiwb75nhcqmx25iz55lzmz0c187nbjhqzi9p"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (arguments
-     '(#:phases
+     `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (ice-9 popen)
+                    (ice-9 rdelim))
+       #:phases
        (modify-phases %standard-phases
          (add-after 'install 'wrap-shroud
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out       (assoc-ref outputs "out"))
-                    (ccachedir (string-append out "/lib/guile/2.0/ccache"))
+                    (guile (assoc-ref inputs "guile"))
+                    (effective (read-line
+                                (open-pipe* OPEN_READ
+                                            (string-append guile "/bin/guile")
+                                            "-c" "(display (effective-version))")))
+                    (ccachedir (string-append out
+                                             "/lib/guile/" effective "/site-ccache"))
                     (prog      (string-append out "/bin/shroud")))
                (wrap-program prog
                  `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))
                #t))))))
     (inputs
-     `(("guile" ,guile-2.0)
+     `(("guile" ,guile-2.2)
        ("gnupg" ,gnupg)
        ("xclip" ,xclip)))
     (synopsis "GnuPG-based secret manager")
diff --git a/gnu/packages/patches/bash-4.4-linux-pgrp-pipe.patch b/gnu/packages/patches/bash-4.4-linux-pgrp-pipe.patch
new file mode 100644
index 0000000000..0d03d7ce37
--- /dev/null
+++ b/gnu/packages/patches/bash-4.4-linux-pgrp-pipe.patch
@@ -0,0 +1,30 @@
+Unconditionally enable PGRP_PIPE on Linux (the kernel), regardless of
+the kernel version in use on the build machine.
+
+--- configure.ac.orig	1969-12-31 19:00:00.000000000 -0500
++++ configure.ac	2019-08-11 22:28:26.038841961 -0400
+@@ -1092,9 +1092,7 @@
+ solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;;
+ lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+ linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading
+-		case "`uname -r`" in
+-		2.[[456789]]*|[[34]]*)	AC_DEFINE(PGRP_PIPE) ;;
+-		esac ;;
++		AC_DEFINE(PGRP_PIPE) ;;
+ *qnx6*)		LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
+ *qnx*)		LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
+ powerux*)	LOCAL_LIBS="-lgen" ;;
+--- configure.orig	1969-12-31 19:00:00.000000000 -0500
++++ configure	2019-08-11 22:28:10.166763255 -0400
+@@ -16064,10 +16064,7 @@
+ solaris2*)	LOCAL_CFLAGS=-DSOLARIS ;;
+ lynxos*)	LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
+ linux*)		LOCAL_LDFLAGS=-rdynamic		 # allow dynamic loading
+-		case "`uname -r`" in
+-		2.[456789]*|[34]*)	$as_echo "#define PGRP_PIPE 1" >>confdefs.h
+- ;;
+-		esac ;;
++		$as_echo "#define PGRP_PIPE 1" >>confdefs.h ;;
+ *qnx6*)		LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;;
+ *qnx*)		LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
+ powerux*)	LOCAL_LIBS="-lgen" ;;
diff --git a/gnu/packages/patches/enlightenment-fix-setuid-path.patch b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
index 90e16d3e67..c48f18c8ec 100644
--- a/gnu/packages/patches/enlightenment-fix-setuid-path.patch
+++ b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
@@ -28,7 +28,7 @@ index 2bced6766..208e583ba 100644
  }
  #endif  // HAVE_EEZE || __FreeBSD_kernel__
 diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
-index b7d9e3eba..d8a9eb82c 100644
+index 0fcffa249..c1921121d 100644
 --- a/src/bin/e_fm/e_fm_main_eeze.c
 +++ b/src/bin/e_fm/e_fm_main_eeze.c
 @@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
@@ -59,10 +59,10 @@ index b7d9e3eba..d8a9eb82c 100644
       }
     v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
 diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
-index 6781a9b5a..8cd140f1b 100644
+index 671fbcd9a..90ee04cf1 100644
 --- a/src/bin/e_sys.c
 +++ b/src/bin/e_sys.c
-@@ -653,20 +653,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
+@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
  
     e_init_status_set(_("Checking System Permissions"));
     snprintf(buf, sizeof(buf),
@@ -87,9 +87,9 @@ index 6781a9b5a..8cd140f1b 100644
     _e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL);
     return ECORE_CALLBACK_CANCEL;
  }
-@@ -1079,8 +1075,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-         /* shutdown -h now */
+@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
          if (e_util_immortal_check()) return 0;
+         e_fm2_die();
          snprintf(buf, sizeof(buf),
 -                 "%s/enlightenment/utils/enlightenment_sys halt",
 -                 e_prefix_lib_get());
@@ -97,9 +97,9 @@ index 6781a9b5a..8cd140f1b 100644
          if (_e_sys_exe)
            {
               if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1114,8 +1109,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-         /* shutdown -r now */
+@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
          if (e_util_immortal_check()) return 0;
+         e_fm2_die();
          snprintf(buf, sizeof(buf),
 -                 "%s/enlightenment/utils/enlightenment_sys reboot",
 -                 e_prefix_lib_get());
@@ -107,7 +107,7 @@ index 6781a9b5a..8cd140f1b 100644
          if (_e_sys_exe)
            {
               if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1148,8 +1142,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
+@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
        case E_SYS_SUSPEND:
          /* /etc/acpi/sleep.sh force */
          snprintf(buf, sizeof(buf),
@@ -117,7 +117,7 @@ index 6781a9b5a..8cd140f1b 100644
          if (_e_sys_exe)
            {
               if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1208,8 +1201,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
+@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
        case E_SYS_HIBERNATE:
          /* /etc/acpi/hibernate.sh force */
          snprintf(buf, sizeof(buf),
@@ -152,11 +152,26 @@ index 4b5148634..47d34b07f 100644
     autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
     eina_strbuf_free(buf);
  
+diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
+index a581c466c..095d8f360 100644
+--- a/src/modules/bluez5/e_mod_main.c
++++ b/src/modules/bluez5/e_mod_main.c
+@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name)
+    if (buf)
+      {
+         eina_strbuf_append_printf
+-          (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
+-           e_prefix_lib_get(), name);
++          (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s",
++           name);
+         _rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
+         eina_strbuf_free(buf);
+      }
 diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
-index f4ba259b6..ae228bae3 100644
+index b66b365d8..bab0802cc 100644
 --- a/src/modules/cpufreq/e_mod_main.c
 +++ b/src/modules/cpufreq/e_mod_main.c
-@@ -1450,8 +1450,7 @@ e_modapi_init(E_Module *m)
+@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m)
       }
     E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024);
  
@@ -166,3 +181,40 @@ index f4ba259b6..ae228bae3 100644
     cpufreq_config->set_exe_path = strdup(buf);
     
     if (stat(buf, &st) < 0)
+diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
+index 938916e53..00d5067d0 100644
+--- a/src/modules/sysinfo/cpuclock/cpuclock.c
++++ b/src/modules/sysinfo/cpuclock/cpuclock.c
+@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor)
+    char buf[4096 + 100], exe[4096];
+    struct stat st;
+ 
+-   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
+-            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
++   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
+    if (stat(exe, &st) < 0) return;
+ 
+    snprintf(buf, sizeof(buf),
+@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency)
+    if (system(buf) != 0)
+      ERR("Error code from trying to run \"%s\"", buf);
+ #else
+-   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
+-            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
++   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
+    if (stat(exe, &st) < 0) return;
+    snprintf(buf, sizeof(buf),
+             "%s %s %i", exe, "frequency", frequency);
+@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo)
+    char buf[4096 + 100], exe[4096];
+    struct stat st;
+ 
+-   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
+-            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
++   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
+    if (stat(exe, &st) < 0) return;
+    snprintf(buf, sizeof(buf),
+             "%s %s %i %i %i", exe, "pstate", min, max, turbo);
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/libextractor-exiv2.patch b/gnu/packages/patches/libextractor-exiv2.patch
new file mode 100644
index 0000000000..b92fef3ca1
--- /dev/null
+++ b/gnu/packages/patches/libextractor-exiv2.patch
@@ -0,0 +1,124 @@
+This patch allows us to build libextractor against exiv2 0.27.x.
+Adapted from this upstream commit:
+
+  commit 1ecee9a47717e36cb8a3925d011d1a6de11d631c
+  Author: Christian Grothoff <christian@grothoff.org>
+  Date:   Mon Jul 29 17:58:18 2019 +0200
+
+      importing patch from Gentoo/AS to address exiv2 build issue (#5820)
+
+diff --git a/src/plugins/exiv2_extractor.cc b/src/plugins/exiv2_extractor.cc
+index 8741d40..ef402a8 100644
+--- a/src/plugins/exiv2_extractor.cc
++++ b/src/plugins/exiv2_extractor.cc
+@@ -27,10 +27,7 @@
+ #include <cassert>
+ #include <cstring>
+ #include <math.h>
+-#include <exiv2/exif.hpp>
+-#include <exiv2/error.hpp>
+-#include <exiv2/image.hpp>
+-#include <exiv2/futils.hpp>
++#include <exiv2/exiv2.hpp>
+ 
+ /**
+  * Enable debugging to get error messages.
+@@ -180,7 +177,7 @@ public:
+    *
+    * @return -1 on error
+    */
+-#if EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,26,0)
++#if EXIV2_TEST_VERSION(0,26,0)
+   virtual size_t size (void) const;
+ #else
+   virtual long int size (void) const;
+@@ -316,7 +313,11 @@ ExtractorIO::getb ()
+   const unsigned char *r;
+ 
+   if (1 != ec->read (ec->cls, &data, 1))
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+     throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+   r = (const unsigned char *) data;
+   return *r;
+ }
+@@ -371,7 +372,11 @@ ExtractorIO::putb (Exiv2::byte data)
+ void
+ ExtractorIO::transfer (Exiv2::BasicIo& src)
+ {
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+   throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+ }
+ 
+ 
+@@ -416,7 +421,11 @@ ExtractorIO::seek (long offset,
+ Exiv2::byte *
+ ExtractorIO::mmap (bool isWritable)
+ {
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+   throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+ }
+ 
+ 
+@@ -449,7 +458,7 @@ ExtractorIO::tell (void) const
+  *
+  * @return -1 on error
+  */
+-#if EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,26,0)
++#if EXIV2_TEST_VERSION(0,26,0)
+ size_t
+ #else
+ long int
+@@ -504,7 +513,11 @@ ExtractorIO::eof () const
+ std::string
+ ExtractorIO::path () const
+ {
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+   throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+ }
+ 
+ 
+@@ -517,7 +530,11 @@ ExtractorIO::path () const
+ std::wstring
+ ExtractorIO::wpath () const
+ {
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+   throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+ }
+ #endif
+ 
+@@ -531,7 +548,11 @@ Exiv2::BasicIo::AutoPtr
+ ExtractorIO::temporary () const
+ {
+   fprintf (stderr, "throwing temporary error\n");
++#if EXIV2_TEST_VERSION(0,27,0)
++    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
++#else
+   throw Exiv2::BasicError<char> (42 /* error code */);
++#endif
+ }
+ 
+ 
+@@ -697,7 +718,7 @@ EXTRACTOR_exiv2_extract_method (struct EXTRACTOR_ExtractContext *ec)
+ {
+   try
+     {
+-#if EXIV2_MAKE_VERSION(0,23,0) <= EXIV2_VERSION
++#if !EXIV2_TEST_VERSION(0,24,0)
+       Exiv2::LogMsg::setLevel (Exiv2::LogMsg::mute);
+ #endif
+       std::auto_ptr<Exiv2::BasicIo> eio(new ExtractorIO (ec));
diff --git a/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch b/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
deleted file mode 100644
index e8f841c4fd..0000000000
--- a/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-This patch includes
-
-   * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
-   * mingw-w64-headers/crt/math.h: Likewise
-   * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
-   symbols.
-   * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
-   Add symbols.
-   (lstat): Add function.
-   * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
-   * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
-
-Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
-
-Upstream status: not yet presented upstream.
-
-index 9c5cf87..74a8541 100644
---- a/mingw-w64-crt/misc/dirname.c
-+++ b/mingw-w64-crt/misc/dirname.c
-@@ -29,6 +29,12 @@
- #define __cdecl  /* this may not be defined.                   */
- #endif
- 
-+char *__cdecl
-+realpath(const char *name, char *resolved)
-+{
-+  return resolved ? strcpy (resolved, name) : strdup (name);
-+}
-+
- char * __cdecl
- dirname(char *path)
- {
-diff --git a/mingw-w64-headers/crt/_mingw_stat64.h b/mingw-w64-headers/crt/_mingw_stat64.h
-index 17e754c..7d2339b 100644
---- a/mingw-w64-headers/crt/_mingw_stat64.h
-+++ b/mingw-w64-headers/crt/_mingw_stat64.h
-@@ -2,13 +2,17 @@
- 
- #ifdef _USE_32BIT_TIME_T
- #define _fstat32 _fstat
-+#define _lstat32 _lstat
- #define _stat32 _stat
- #define _wstat32 _wstat
- #define _fstat32i64 _fstati64
-+#define _lstat32i64 _lstati64
- #define _stat32i64 _stati64
- #define _wstat32i64 _wstati64
- #else
- #define _fstat _fstat64i32
-+#define _lstat _lstat64i32
-+#define _lstati64 _lstat64
- #define _fstati64 _fstat64
- #define _stat _stat64i32
- #define _stati64 _stat64
-diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
-index 5874f4e..bdf4ead 100644
---- a/mingw-w64-headers/crt/float.h
-+++ b/mingw-w64-headers/crt/float.h
-@@ -22,6 +22,15 @@
- #if (__GNUC__ < 4)
- #error Corrupt install of gcc-s internal headers, or search order was changed.
- #else
-+
-+        /* From gcc-4.9.3 float.h.  */
-+        #undef FLT_EPSILON
-+        #undef DBL_EPSILON
-+        #undef LDBL_EPSILON
-+        #define FLT_EPSILON	__FLT_EPSILON__
-+        #define DBL_EPSILON	__DBL_EPSILON__
-+        #define LDBL_EPSILON	__LDBL_EPSILON__
-+
- 	/* #include_next <float_ginclude.h> */
- 	
-    	/* Number of decimal digits, q, such that any floating-point number with q
-diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
-index 1e970f4..99a332f 100644
---- a/mingw-w64-headers/crt/math.h
-+++ b/mingw-w64-headers/crt/math.h
-@@ -216,6 +216,7 @@ extern "C" {
- #endif
-   }
- 
-+#if 0
-   __CRT_INLINE long double __cdecl fabsl (long double x)
-   {
- #ifdef __arm__
-@@ -226,6 +227,7 @@ extern "C" {
-     return res;
- #endif
-   }
-+#endif
- 
-   __CRT_INLINE double __cdecl fabs (double x)
-   {
-@@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
- /* 7.12.7.3  */
-   extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
-   extern float __cdecl hypotf (float x, float y);
--#ifndef __CRT__NO_INLINE
-+#if 0 //ndef __CRT__NO_INLINE
-   __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
- #endif
-   extern long double __cdecl hypotl (long double, long double);
-diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
-index dfc5ae4..6f0fee3 100644
---- a/mingw-w64-headers/crt/stdlib.h
-+++ b/mingw-w64-headers/crt/stdlib.h
-@@ -8,6 +8,7 @@
- 
- #include <crtdefs.h>
- #include <limits.h>
-+#include <string.h>
- 
- #if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX)
- #define __USE_MINGW_STRTOX 1
-@@ -676,6 +677,8 @@ unsigned long __cdecl _lrotr(unsigned long,int);
- 
- #endif /* !__NO_ISOCEXT */
- 
-+char *__cdecl realpath (const char *name, char *resolved);
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/mingw-w64-headers/crt/sys/stat.h b/mingw-w64-headers/crt/sys/stat.h
-index ed60219..d88b4f1 100644
---- a/mingw-w64-headers/crt/sys/stat.h
-+++ b/mingw-w64-headers/crt/sys/stat.h
-@@ -58,16 +58,21 @@ extern "C" {
- #include <_mingw_stat64.h>
- 
- #define _S_IFMT 0xF000
-+#define _S_IFLNK 0xA000
-+#define _S_IFSOCK 0xC000
- #define _S_IFDIR 0x4000
- #define _S_IFCHR 0x2000
- #define _S_IFIFO 0x1000
- #define _S_IFREG 0x8000
-+#define _S_ISUID 0x0400
-+#define _S_ISGID 0x0200
- #define _S_IREAD 0x0100
- #define _S_IWRITE 0x0080
- #define _S_IEXEC 0x0040
- 
-   _CRTIMP int __cdecl _fstat32(int _FileDes,struct _stat32 *_Stat);
-   _CRTIMP int __cdecl _stat32(const char *_Name,struct _stat32 *_Stat);
-+  static inline int __cdecl _lstat32(const char *_Name,struct _stat32 *_Stat) {return _stat32(_Name, _Stat);}
-   _CRTIMP int __cdecl _fstat64(int _FileDes,struct _stat64 *_Stat);
-   _CRTIMP int __cdecl _fstat32i64(int _FileDes,struct _stat32i64 *_Stat);
-   int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat);
-@@ -97,6 +102,9 @@ extern "C" {
-   _CRTIMP int __cdecl _stat64(const char *_Name,struct _stat64 *_Stat);
-   _CRTIMP int __cdecl _stat32i64(const char *_Name,struct _stat32i64 *_Stat);
-   int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat);
-+  static inline int __cdecl _lstat64(const char *_Name,struct _stat64 *_Stat) {return _stat64(_Name, _Stat);}
-+  static inline int __cdecl _lstat32i64(const char *_Name,struct _stat32i64 *_Stat) {return _stat32i64(_Name, _Stat);}
-+  static inline int __cdecl _lstat64i32(const char *_Name,struct _stat64i32 *_Stat) {return _stat64i32(_Name, _Stat);}
- #ifndef __CRT__NO_INLINE
-   __CRT_INLINE int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat)
-   {
-@@ -132,6 +140,8 @@ extern "C" {
- #ifndef	NO_OLDNAMES
- #define	_S_IFBLK	0x3000	/* Block: Is this ever set under w32? */
- 
-+#define S_IFLNK _S_IFLNK
-+#define S_IFSOCK _S_IFSOCK
- #define S_IFMT _S_IFMT
- #define S_IFDIR _S_IFDIR
- #define S_IFCHR _S_IFCHR
-@@ -162,6 +172,11 @@ extern "C" {
- #define S_IXOTH    (S_IXGRP >> 3)
- #define S_IRWXO    (S_IRWXG >> 3)
- 
-+#define S_ISUID _S_ISUID
-+#define S_ISGID _S_ISGID
-+
-+#define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
-+#define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
- #define	S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
- #define	S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
- #define	S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
-@@ -174,6 +189,7 @@ extern "C" {
- int __cdecl stat(const char *_Filename,struct stat *_Stat);
- int __cdecl fstat(int _Desc,struct stat *_Stat);
- int __cdecl wstat(const wchar_t *_Filename,struct stat *_Stat);
-+static inline int __cdecl lstat(const char *_Filename,struct stat *_Stat){return stat(_Filename, _Stat);}
- 
- #ifndef __CRT__NO_INLINE
- #ifdef _USE_32BIT_TIME_T
-@@ -262,9 +278,11 @@ __CRT_INLINE int __cdecl
- 
- #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
- #ifdef _USE_32BIT_TIME_T
-+#define lstat _lstat32i64
- #define stat _stat32i64
- #define fstat _fstat32i64
- #else
-+#define lstat _lstat64
- #define stat _stat64
- #define fstat _fstat64
- #endif
-diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
-index 52af29b..8626396 100644
---- a/mingw-w64-headers/include/winnt.h
-+++ b/mingw-w64-headers/include/winnt.h
-@@ -6895,7 +6895,12 @@ __buildmemorybarrier()
- 	  DWORD Reg : 3;
- 	  DWORD R : 1;
- 	  DWORD L : 1;
-+/* C is used as a const specifier */
-+#define save_C C
-+#undef C
- 	  DWORD C : 1;
-+#define C save_C
-+#undef save_C
- 	  DWORD StackAdjust : 10;
- 	} DUMMYSTRUCTNAME;
-       } DUMMYUNIONNAME;
diff --git a/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch b/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
new file mode 100644
index 0000000000..036cf79f91
--- /dev/null
+++ b/gnu/packages/patches/mingw-w64-6.0.0-gcc.patch
@@ -0,0 +1,65 @@
+This patch includes
+
+   * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
+   * mingw-w64-headers/crt/math.h: Likewise
+   * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
+   symbols.
+   * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
+   Add symbols.
+   (lstat): Add function.
+   * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
+   * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
+
+Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
+
+Upstream status: not yet presented upstream.
+
+diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
+index 5874f4e..bdf4ead 100644
+--- a/mingw-w64-headers/crt/float.h
++++ b/mingw-w64-headers/crt/float.h
+@@ -22,6 +22,15 @@
+ #if (__GNUC__ < 4)
+ #error Corrupt install of gcc-s internal headers, or search order was changed.
+ #else
++
++        /* From gcc-4.9.3 float.h.  */
++        #undef FLT_EPSILON
++        #undef DBL_EPSILON
++        #undef LDBL_EPSILON
++        #define FLT_EPSILON	__FLT_EPSILON__
++        #define DBL_EPSILON	__DBL_EPSILON__
++        #define LDBL_EPSILON	__LDBL_EPSILON__
++
+ 	/* #include_next <float_ginclude.h> */
+
+    	/* Number of decimal digits, q, such that any floating-point number with q
+diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
+index 1e970f4..99a332f 100644
+--- a/mingw-w64-headers/crt/math.h
++++ b/mingw-w64-headers/crt/math.h
+@@ -216,6 +216,7 @@ extern "C" {
+ #endif
+   }
+
++#if 0
+   __CRT_INLINE long double __cdecl fabsl (long double x)
+   {
+ #ifdef __arm__
+@@ -226,6 +227,7 @@ extern "C" {
+     return res;
+ #endif
+   }
++#endif
+
+   __CRT_INLINE double __cdecl fabs (double x)
+   {
+@@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
+ /* 7.12.7.3  */
+   extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
+   extern float __cdecl hypotf (float x, float y);
+-#ifndef __CRT__NO_INLINE
++#if 0 //ndef __CRT__NO_INLINE
+   __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
+ #endif
+   extern long double __cdecl hypotl (long double, long double);
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index a3f6e5d050..79d8f3b684 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -6495,19 +6495,18 @@ Perl (back to 5.6.0).")
 (define-public perl-namespace-autoclean
   (package
     (name "perl-namespace-autoclean")
-    (version "0.28")
+    (version "0.29")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "namespace-autoclean-" version ".tar.gz"))
        (sha256
-        (base32
-         "0fbcq99yaix1aa99jl3v811dbw24il9jxnh5i2i23mddh4b0lhfd"))))
+        (base32 "012qqs561xyyhm082znmzsl8lz4n299fa6p0v246za2l9bkdiss5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
-       ("perl-test-requires" ,perl-test-requires)))
+       ("perl-test-needs" ,perl-test-needs)))
     (propagated-inputs
      `(("perl-b-hooks-endofscope" ,perl-b-hooks-endofscope)
        ("perl-namespace-clean" ,perl-namespace-clean)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index d87eb9f561..dde35a1f3a 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2218,24 +2218,21 @@ applications.")
 (define-public python-flask-sqlalchemy
   (package
     (name "python-flask-sqlalchemy")
-    (version "2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "Flask-SQLAlchemy" version))
-        (sha256
-          (base32
-            "1i9ps5d5snih9xlqhrvmi3qfiygkmqzxh92n25kj4pf89kj4s965"))))
+    (version "2.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "Flask-SQLAlchemy" version))
+              (sha256
+               (base32
+                "0nnllf0ddbh9jlhngnyjj98lbxgxr1csaplllx0caw98syq0k5hc"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-flask" ,python-flask)
        ("python-sqlalchemy" ,python-sqlalchemy)))
-    (home-page
-      "https://github.com/mitsuhiko/flask-sqlalchemy")
-    (synopsis
-      "Module adding SQLAlchemy support to your Flask application")
+    (home-page "https://github.com/mitsuhiko/flask-sqlalchemy")
+    (synopsis "Module adding SQLAlchemy support to your Flask application")
     (description
-      "This package adds SQLAlchemy support to your Flask application.")
+     "This package adds SQLAlchemy support to your Flask application.")
     (license license:bsd-3)))
 
 (define-public python-flask-restplus
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4c3ba68851..43e341b43d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -64,6 +64,7 @@
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
+;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -6999,14 +7000,14 @@ Supported netlink families and protocols include:
 (define-public python-wrapt
   (package
     (name "python-wrapt")
-    (version "1.11.1")
+    (version "1.11.2")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "wrapt" version))
-        (sha256
-          (base32
-            "0cqmysny1pz01jw26q48q5zasvns6507rwhgm6wcw743f0r01sja"))))
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "wrapt" version))
+       (sha256
+        (base32
+         "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn"))))
     (build-system python-build-system)
     (arguments
      ;; Tests are not included in the tarball, they are only available in the
@@ -7015,7 +7016,7 @@ Supported netlink families and protocols include:
     (home-page "https://github.com/GrahamDumpleton/wrapt")
     (synopsis "Module for decorators, wrappers and monkey patching")
     (description
-      "The aim of the wrapt module is to provide a transparent object proxy for
+     "The aim of the wrapt module is to provide a transparent object proxy for
   Python, which can be used as the basis for the construction of function
   wrappers and decorator functions.")
     (license license:bsd-2)))
@@ -7322,14 +7323,14 @@ responses, rather than doing any computation.")
 (define-public python-pip
   (package
     (name "python-pip")
-    (version "18.1")
+    (version "19.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pip" version))
        (sha256
         (base32
-         "188fclay154s520n43s7cxxlhdaiysvxf19zk8vr1xbyjyyr58n0"))))
+         "100sd12ss4mbdj5lf3wawad29cm573b27765mq098x6xhcj71395"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f))          ; there are no tests in the pypi archive.
@@ -9990,13 +9991,13 @@ format.")
 (define-public python-twisted
   (package
     (name "python-twisted")
-    (version "19.2.1")
+    (version "19.7.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Twisted" version ".tar.bz2"))
               (sha256
                (base32
-                "0liymyd4pzphizjlpwkncxjpm9akyr3lkfkm77yfg6wasv108b7s"))))
+                "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f))                    ; FIXME: some tests fail
@@ -16088,3 +16089,72 @@ The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
 Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys.  It
 supports Image, Video, GeoJSON and TopoJSON overlays.")
     (license license:expat)))
+
+(define-public jube
+  (package
+    ;; This is a command-line tool, so no "python-" prefix.
+    (name "jube")
+    (version "2.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
+                    version))
+              (sha256
+               (base32
+                "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
+              (file-name (string-append "jube-" version ".tar.gz"))))
+    (build-system python-build-system)
+    (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
+    (synopsis "Benchmarking environment")
+    (description
+     "JUBE helps perform and analyze benchmarks in a systematic way.  For each
+benchmarked application, benchmark data is stored in a format that allows JUBE
+to deduct the desired information.  This data can be parsed by automatic pre-
+and post-processing scripts that draw information and store it more densely
+for manual interpretation.")
+    (license license:gpl3+)))
+
+(define-public python-pyroutelib3
+  (package
+    (name "python-pyroutelib3")
+    (version "1.3.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyroutelib3" version))
+       (sha256
+        (base32
+         "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)))
+    (home-page "https://github.com/MKuranowski/pyroutelib3")
+    (synopsis "Library for simple routing on OSM data")
+    (description "Library for simple routing on OSM data")
+    (license license:gpl3+)))
+
+(define-public python-elementpath
+  (package
+    (name "python-elementpath")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "elementpath" version))
+       (sha256
+        (base32
+         "1syn2z543brab23dskh3fjd9pqvz6npqbcicrs2d88dbg26xl08p"))))
+    (build-system python-build-system)
+    (home-page
+     "https://github.com/sissaschool/elementpath")
+    (synopsis
+     "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml")
+    (description
+     "The proposal of this package is to provide XPath 1.0 and 2.0 selectors
+for Python's ElementTree XML data structures, both for the standard
+ElementTree library and for the @uref{http://lxml.de, lxml.etree} library.
+
+For lxml.etree this package can be useful for providing XPath 2.0 selectors,
+because lxml.etree already has it's own implementation of XPath 1.0.")
+    (license license:expat)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 61f096d7f8..2104e684f4 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -2216,6 +2216,9 @@ content")
     (description "QtWebKit provides a Web browser engine that makes it easy to
 embed content from the World Wide Web into your Qt application.  At the same
 time Web content can be enhanced with native controls.")
+    ;; Building QtWebKit takes around 13 hours on an AArch64 machine.  Give some
+    ;; room for slower or busy hardware.
+    (properties '((timeout . 64800)))   ;18 hours
     (license license:lgpl2.1+)))
 
 (define-public dotherside
diff --git a/gnu/packages/rednotebook.scm b/gnu/packages/rednotebook.scm
new file mode 100644
index 0000000000..e5b1b2c7bf
--- /dev/null
+++ b/gnu/packages/rednotebook.scm
@@ -0,0 +1,91 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rednotebook)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system python)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages webkit)
+  #:use-module (gnu packages python-xyz))
+
+(define-public rednotebook
+  (package
+    (name "rednotebook")
+    (version "2.11.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jendrikseipp/rednotebook.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "04c7a0wgmdl88v9386y1052c38ajbkryiwhqps5lx34d4g7r6hm1"))))
+    (build-system python-build-system)
+    (arguments
+     ;; Tests fail to find the "_" function.
+     ;; It should be defined in rednotebook/info.py if '_' is not a member of
+     ;; 'builtins'. It is either not defined or not exported during the check
+     ;; phase. The program does not have this problem after it is installed.
+     ;; TODO: Fix tests.
+     `(#:tests? #f
+       #:imported-modules ((guix build glib-or-gtk-build-system)
+                           ,@%python-build-system-modules)
+       #:modules ((ice-9 match)
+                  (guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         ;; Make sure rednotebook can find the typelibs and webkitgtk shared
+         ;; libraries.
+         (add-before 'wrap 'wrap-with-library-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
+                   (webkitgtk-path (string-append
+                                    (assoc-ref inputs "webkitgtk")
+                                    "/lib")))
+               (wrap-program (string-append out "/bin/rednotebook")
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
+                 `("LD_LIBRARY_PATH" ":" prefix (,webkitgtk-path)))
+               #t))))))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("gtksourceview" ,gtksourceview-3)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-pygobject" ,python-pygobject)
+       ("webkitgtk" ,webkitgtk)))
+    ;; TODO: package the following for python3 (if possible), add them as
+    ;; dependencies, and remove them from rednotebook source:
+    ;; pygtkspellcheck, elib.intl, msgfmt, txt2tags
+    ;; TODO: package and add pyenchant for python3 and add it as a dependency.
+    (home-page "https://www.rednotebook.app")
+    (synopsis "Daily journal with calendar, templates and keyword searching")
+    (description
+     "RedNotebook is a modern desktop journal.  It lets you format, tag and
+search your entries.  You can also add pictures, links and customizable
+templates, spell check your notes, and export to plain text, HTML, Latex or
+PDF.")
+    (license (list license:gpl2+     ; rednotebook, txt2tags
+                   license:lgpl3+    ; elib.intl
+                   license:gpl3+)))) ; pygtkspellcheck
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 33a42a2da2..1f3fb29aba 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
+;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2035,13 +2036,13 @@ the SimpleCov code coverage tool for Ruby version 1.9 and above.")
 (define-public ruby-simplecov
   (package
     (name "ruby-simplecov")
-    (version "0.12.0")
+    (version "0.17.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "simplecov" version))
               (sha256
                (base32
-                "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx"))))
+                "0dq0nkaxvbsnl70hkimy35g4yjfs3blx4s7nbpzbvgqx72hxgv5v"))))
     (build-system ruby-build-system)
     ;; Simplecov depends on rubocop for code style checking at build time.
     ;; Rubocop needs simplecov at build time.
@@ -3638,24 +3639,24 @@ to reproduce user environments.")
 
 (define-public ruby-mini-portile-2
   (package (inherit ruby-mini-portile)
-    (version "2.2.0")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "mini_portile2" version))
               (sha256
                (base32
-                "0g5bpgy08q0nc0anisg3yvwc1gc3inl854fcrg48wvg7glqd6dpm"))))))
+                "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"))))))
 
 (define-public ruby-nokogiri
   (package
     (name "ruby-nokogiri")
-    (version "1.8.0")
+    (version "1.10.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "nokogiri" version))
               (sha256
                (base32
-                "1nffsyx1xjg6v5n9rrbi8y1arrcx2i5f21cp6clgh9iwiqkr7rnn"))))
+                "0nmdrqqz1gs0fwkgzxjl4wr554gr8dc1fkrqjc2jpsvwgm41rygv"))))
     (build-system ruby-build-system)
     (arguments
      ;; Tests fail because Nokogiri can only test with an installed extension,
@@ -8571,6 +8572,33 @@ characteristics.")
     (home-page "https://github.com/sinatra/mustermann")
     (license license:expat)))
 
+(define-public ruby-htmlentities
+  (package
+    (name "ruby-htmlentities")
+    (version "4.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "htmlentities" version))
+       (sha256
+        (base32
+         "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (map (lambda (file)
+                    (invoke "ruby" "-Itest" file))
+                  (find-files "./test" ".*_test\\.rb")))))))
+    (synopsis "Encode and decode (X)HTML entities")
+    (description
+     "This package provides a module for encoding and decoding (X)HTML
+entities.")
+    (home-page "https://github.com/threedaymonk/htmlentities")
+    (license license:expat)))
+
 (define-public ruby-sinatra
   (package
     (name "ruby-sinatra")
@@ -8807,3 +8835,92 @@ It is intended to determine whether a newer API specification is
 backwards-compatible with an older API specification.")
     (home-page "https://github.com/civisanalytics/swagger-diff")
     (license license:bsd-3)))
+
+(define-public ruby-reverse-markdown
+  (package
+    (name "ruby-reverse-markdown")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "reverse_markdown" version))
+       (sha256
+        (base32
+         "0w7y5n74daajvl9gixr91nh8670d7mkgspkk3ql71m8azq3nffbg"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-nokogiri" ,ruby-nokogiri)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-kramdown" ,ruby-kramdown)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (synopsis "Convert HTML into Markdown")
+    (description
+     "This Ruby module allows you to map simple HTML back into
+Markdown---e.g., if you want to import existing HTML data in your
+application.")
+    (home-page "https://github.com/xijo/reverse_markdown")
+    (license license:wtfpl2)))
+
+(define-public ruby-solargraph
+  (package
+    (name "ruby-solargraph")
+    (version "0.36.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "solargraph" version))
+       (sha256
+        (base32
+         "0b93xzkgd1h06da9gdnwivj1mzbil8lc072y2838dy6i7bxgpy9i"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-backport" ,ruby-backport)
+       ("bundler" ,bundler)
+       ("ruby-htmlentities" ,ruby-htmlentities)
+       ("ruby-jaro-winkler" ,ruby-jaro-winkler)
+       ("ruby-maruku" ,ruby-maruku)
+       ("ruby-nokogiri" ,ruby-nokogiri)
+       ("ruby-parser" ,ruby-parser)
+       ("ruby-reverse-markdown" ,ruby-reverse-markdown)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-thor" ,ruby-thor)
+       ("ruby-tilt" ,ruby-tilt)
+       ("ruby-yard" ,ruby-yard)))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-webmock" ,ruby-webmock-2)))
+    ;; FIXME: can't figure out how to run the tests properly:
+
+    ;; An error occurred while loading spec_helper.
+    ;; Failure/Error: return gem_original_require(path)
+    ;; LoadError:
+    ;; cannot load such file -- spec_helper
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (synopsis
+     "IDE tools for code completion, inline documentation, and static analysis")
+    (description
+     "Solargraph provides a comprehensive suite of tools for Ruby
+programming: intellisense, diagnostics, inline documentation, and type
+checking.")
+    (home-page "https://solargraph.org/")
+    (license license:expat)))
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 3d6ad4f9d7..90892a57e8 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -353,7 +353,7 @@ retrieve a YubiKey's serial number, and so forth.")
 (define-public python-pyscard
   (package
     (name "python-pyscard")
-    (version "1.9.8")
+    (version "1.9.9")
     (source (origin
               (method url-fetch)
               ;; The maintainer publishes releases on various sites, but
@@ -363,7 +363,7 @@ retrieve a YubiKey's serial number, and so forth.")
                     version "/pyscard-" version ".tar.gz"))
               (sha256
                (base32
-                "15fh00z1an6r5j7hrz3jlq0rb3jygwf3x4jcwsa008bv8vpcg7gm"))))
+                "082cjkbxadaz2jb4rbhr0mkrirzlqyqhcf3r823qb0q1k50ybgg6"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 9077d295db..bca8b14dad 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1106,3 +1106,59 @@ and IP roaming.  ET provides the same core functionality as @command{mosh},
 while also supporting native scrolling and @command{tmux} control mode
 (@code{tmux -CC}).")
     (license license:asl2.0)))
+
+(define-public wterm
+  (package
+    (name "wterm")
+    (version "0.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/majestrate/wterm.git")
+             (commit "0ae42717c08a85a6509214e881422c7fbe7ecc45")))
+       (sha256
+         (base32
+          "0g4lzmc1w6na81i6hny32xds4xfig4xzswzfijyi6p93a1226dv0"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("libdrm" ,libdrm)
+       ("libxkbcommon" ,libxkbcommon)
+       ("ncurses" ,ncurses)
+       ("pixman" ,pixman)
+       ("wayland" ,wayland)))
+    (arguments
+     '(#:tests? #f
+
+       ;; Without -j1 it fails to find file libwld.a.
+       #:parallel-build? #f
+
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output)
+                          (string-append "TERMINFO="
+                                         (assoc-ref %outputs "out")
+                                         "/share/terminfo"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'terminfo-fix
+           (lambda _
+             (substitute* "Makefile"
+               (("\ttic .*") "\tmkdir -p $(SHARE_PREFIX)/share/terminfo
+\ttic -o $(SHARE_PREFIX)/share/terminfo -s wterm.info\n"))
+             #t)))))
+    (native-search-paths
+      (list (search-path-specification
+              (variable "TERMINFO_DIRS")
+              (files '("share/terminfo")))))
+    (home-page "https://github.com/majestrate/wterm")
+    (synopsis "Terminal emulator for Wayland")
+    (description "wterm is a native Wayland terminal emulator based on
+an st fork using wld. st is a simple terminal emulator for X originally
+made by suckless.")
+    (license license:x11)))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 4412d54579..432e79e350 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -41,6 +41,7 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -567,3 +568,55 @@ The basic features of Geany are:
 @item extensibility through plugins
 @end itemize")
     (license license:gpl2+)))
+
+(define-public fe
+  (package
+    (name "fe")
+    ;; Stable release is 1.8.  However, this development version
+    ;; introduces support for UTF-8.
+    (version "2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.moria.de/~michael/fe/"
+                                  "fe-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1hwws7si1752z6hp61zxznvgsb6846lp8zl1hn5ddhsbafwalwb9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       ;; Sendmail is only used to send a crash log.  Disable the
+       ;; feature since it is (1) undocumented (2) not very useful.
+       #:configure-flags (list "--disable-sendmail")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (for-each (lambda (f) (install-file f doc))
+                         '("fe.doc" "fe.html" "fe.ps" "feref.ps" "README"))
+               #t))))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)))
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (home-page "http://www.moria.de/~michael/fe/")
+    (synopsis "Small folding editor")
+    (description "Fe is a small folding editor.  It allows to fold
+arbitrary text regions; it is not bound to syntactic units.
+
+Fe has no configuration or extension language and requires no setup.
+Its user interface is emacs-like and it has menues for the very most
+important functions to help beginners.  Further there is a reference
+card.  It offers:
+
+@itemize
+@item Regions and Emacs-like kill ring
+@item Incremental search
+@item Keyboard macros
+@item Editing binary files
+@item Multiple windows and views
+@item Compose function for Latin 1 characters
+@end itemize")
+    (license license:gpl2+)))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 2c520dfbdf..330e10610d 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
-;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -45,6 +45,7 @@
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages java)
@@ -321,6 +322,112 @@ input bits thoroughly but are not suitable for cryptography.")
     ;; entails."
     (license license:public-domain)))
 
+(define-public ascii2binary
+  (package
+    (name "ascii2binary")
+    (version "2.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://billposer.org/Software/Downloads/"
+                           "ascii2binary-" version ".tar.bz2"))
+       (sha256
+        (base32 "0dc9fxcdmppbs9s06jvq61zbk552laxps0xyk098gj41697ihd96"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)))
+    (home-page "https://billposer.org/Software/a2b.html")
+    (synopsis "Convert between ASCII, hexadecimal and binary representations")
+    (description "The two programs are useful for generating test data, for
+inspecting binary files, and for interfacing programs that generate textual
+output to programs that require binary input and conversely.  They can also be
+useful when it is desired to reformat numbers.
+
+@itemize
+
+@item @command{ascii2binary} reads input consisting of ascii or hexadecimal
+   representation numbers separated by whitespace and produces as output
+   the binary equivalents.  The type and precision of the binary output
+   is selected using command line flags.
+
+@item @command{binary2ascii} reads input consisting of binary numbers
+   and converts them to their ascii or hexadecimal representation.
+   Command line flags specify the type and size of the binary numbers
+   and provide control over the format of the output.
+   Unsigned integers may be written out in binary, octal, decimal,
+   or hexadecimal.
+
+   Signed integers may be written out only in binary or decimal.  Floating
+   point numbers may be written out only decimal, either in standard or
+   scientific notation.  (If you want to examine the binary representation
+   of floating point numbers, just treat the input as a sequence of unsigned
+   characters.)
+
+@end itemize")
+    (license license:gpl3)))
+
+(define-public uniutils
+  (package
+    (name "uniutils")
+    (version "2.27")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://billposer.org/Software/Downloads/"
+                           "uniutils-" version ".tar.bz2"))
+       (sha256
+        (base32 "19w1510w87gx7n4qy3zsb0m467a4rn5scvh4ajajg7jh6x5xri08"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-dependency-tracking")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'fix-paths
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (a2b (assoc-ref inputs "ascii2binary"))
+                   (iconv (assoc-ref inputs "libiconv")))
+               (substitute* "utf8lookup"
+                 (("^ascii2binary ") (string-append a2b "/bin/ascii2binary "))
+                 (("^uniname ") (string-append out "/bin/uniname "))
+                 (("^iconv ") (string-append iconv "/bin/iconv ")))
+             #t))))))
+    (inputs
+     `(("ascii2binary" ,ascii2binary)
+       ("libiconv" ,libiconv)))
+    (home-page "https://billposer.org/Software/unidesc.html")
+    (synopsis "Find out what is in a Unicode file")
+    (description "Useful tools when working with Unicode files when one
+doesn't know the writing system, doesn't have the necessary font, needs to
+inspect invisible characters, needs to find out whether characters have been
+combined or in what order they occur, or needs statistics on which characters
+occur.
+
+@itemize
+
+@item @command{uniname} defaults to printing the character offset of each
+character, its byte offset, its hex code value, its encoding, the glyph
+itself, and its name.  It may also be used to validate UTF-8 input.
+
+@item @command{unidesc} reports the character ranges to which different
+portions of the text belong.   It can also be used to identify Unicode encodings
+(e.g. UTF-16be) flagged by magic numbers.
+
+@item @command{unihist} generates a histogram of the characters in its input.
+
+@item @command{ExplicateUTF8} is intended for debugging or for learning about
+Unicode.  It determines and explains the validity of a sequence of bytes as a
+UTF8 encoding.
+
+@item @command{utf8lookup} provides a handy way to look up Unicode characters
+from the command line.
+
+@item @command{unireverse} reverse each line of UTF-8 input
+character-by-character.
+
+@end itemize")
+    (license license:gpl3)))
+
 (define-public libconfig
   (package
     (name "libconfig")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index f2e7f4ad0c..d896908a12 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -505,13 +505,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.35.1")
+    (version "0.37.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "08y4ankn0di34c9d1c3pqd9by9n0ckzz7b5ld1g0fx6c32sbi259"))))
+                "0p3zqhna9p8iy5i9mfhzdf5bmjigs05r6rlwnxykk4n67fp8yyc8"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -559,10 +559,10 @@ netcat implementation that supports TLS.")
     (version (package-version python-acme))
     (source (origin
               (method url-fetch)
-              (uri (pypi-uri name version))
+              (uri (pypi-uri "certbot" version))
               (sha256
                (base32
-                "0q0855qvsvs4mgglss5iim7f1p22rv4rn1n6j731vv869v0yrs6p"))))
+                "1xbfv4fwkgfp9qqzlk8wxbhchc61349m26q9fg35j9fnm253cm74"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 2376f8bda1..4fb2d76c33 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -357,15 +357,14 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public mkvtoolnix
   (package
     (name "mkvtoolnix")
-    (version "31.0.0")
+    (version "37.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://mkvtoolnix.download/sources/"
-                           name "-" version ".tar.xz"))
+                           "mkvtoolnix-" version ".tar.xz"))
        (sha256
-        (base32
-         "0d8va2iamzc7y3wi71z8mk2vnqvnkgwb2p7casdfp37400x8r2pr"))
+        (base32 "0r4d9318ymb9a0mkc0shi9p4kjy3m70s49v4f8dmjhvj63silhix"))
        (modules '((guix build utils)))
        (snippet '(begin
                    ;; Delete bundled libraries.
@@ -419,6 +418,13 @@ H.264 (MPEG-4 AVC) video streams.")
              "--enable-precompiled-headers=no")
         #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-relative-file-names
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+             (substitute* "src/mkvtoolnix-gui/util/settings.cpp"
+               (("mkvmerge" match)
+                (string-append out "/bin/" match)))
+             #t)))
          (add-before 'configure 'add-googletest
            (lambda* (#:key inputs #:allow-other-keys)
              (symlink
@@ -466,8 +472,9 @@ H.264 (MPEG-4 AVC) video streams.")
     (synopsis "Tools to create, alter and inspect Matroska files")
     (description
      "MKVToolNix provides tools for getting information about Matroska files
-(@code{mkvinfo}), extracting tracks/data from Matroska files (@code{mkvextract})
-and creating Matroska files from other media files (@code{mkvmerge}).")
+(@command{mkvinfo}), extracting tracks/data from Matroska files
+(@command{mkvextract}), and creating Matroska files from other media files
+(@command{mkvmerge}).")
     (license license:gpl2)))
 
 (define-public x265
@@ -1485,7 +1492,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.08.02")
+    (version "2019.08.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1493,7 +1500,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "101b6jrf6ckbxrn76ppvgdyrb25p7d247kn8qgq7n476sfnkfg2p"))))
+                "0b94hrhbqa7jhn91pxsbphg2ylwkpkknb2y4v4sczp7rjvgmjgdj"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index cb281920e9..8fafe438d0 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -365,10 +365,10 @@ vim editor and also easily configurable during runtime.  Vimb is mostly keyboard
 driven and does not detract you from your daily work.")
     (license license:gpl3+)))
 
-(define-public next-gtk-webkit
+(define next-gtk-webkit
   (package
     (name "next-gtk-webkit")
-    (version "1.2.2")
+    (version "1.3.0")
     (source
      (origin
        (method git-fetch)
@@ -377,7 +377,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "1bif1k738knhifxhkn0d2x1m521zkx40pri44vyjqncp9r95hkbk"))
+         "0ibq30xrf871pkpasi8p9krn0pmd86rsdzb3jqvz3wnp4wa3hl9d"))
        (file-name (git-file-name "next" version))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -405,71 +405,124 @@ key-bindings, is fully configurable and extensible in Lisp, and has powerful
 features for productive professionals.")
     (license license:bsd-3)))
 
-(define-public sbcl-next
+(define sbcl-next-download-manager
   (package
     (inherit next-gtk-webkit)
-    (name "sbcl-next")
+    (name "sbcl-next-download-manager")
     (build-system asdf-build-system/sbcl)
-    (outputs '("out" "lib"))
     (arguments
-     `(#:tests? #f                      ; no tests
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-platform-port-path
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (substitute* "source/ports/gtk-webkit.lisp"
-                        (("\"next-gtk-webkit\"")
-                         (string-append "\"" (assoc-ref inputs "next-gtk-webkit")
-                                        "/bin/next-gtk-webkit\"")))))
-                  (add-before 'cleanup 'move-bundle
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (define lib (assoc-ref outputs "lib"))
-                      (define actual-fasl (string-append
-                                           lib
-                                           "/lib/sbcl/next.fasl"))
-                      (define expected-fasl (string-append
-                                             lib
-                                             "/lib/sbcl/next--system.fasl"))
-                      (copy-file actual-fasl expected-fasl)
-                      #t))
-                  (add-after 'create-symlinks 'build-program
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (build-program
-                       (string-append (assoc-ref outputs "out") "/bin/next")
-                       outputs
-                       #:entry-program '((next:start-with-port) 0))))
-                  (add-before 'build 'install-assets
-                    ;; Since the ASDF build system generates a new .asd with a
-                    ;; possibly suffixed and thus illegal version number, assets
-                    ;; should not be installed after the 'build phase or else
-                    ;; the illegal version will result in NIL in the .desktop
-                    ;; file.
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (with-output-to-file "version"
-                        (lambda _
-                          (format #t "~a" ,(package-version next-gtk-webkit))))
-                      (invoke "make" "install-assets"
-                              (string-append "PREFIX="
-                                             (assoc-ref outputs "out"))))))))
+     `(#:tests? #f                      ; Need online access.
+       #:asd-file "next.asd"
+       #:asd-system-name "download-manager"))
     (inputs
-     `(("next-gtk-webkit" ,next-gtk-webkit)
-       ;; Lisp libraries:
+     `(;; ASD libraries:
        ("trivial-features" ,sbcl-trivial-features)
-       ("alexandria" ,sbcl-alexandria)
-       ("anaphora" ,sbcl-anaphora)
-       ("closer-mop" ,sbcl-closer-mop)
+       ;; Lisp libraries:
+       ("cl-ppcre" ,sbcl-cl-ppcre)
+       ("dexador" ,sbcl-dexador)
        ("log4cl" ,sbcl-log4cl)
-       ("find-port" ,sbcl-find-port)
-       ("cl-strings" ,sbcl-cl-strings)
-       ("cl-string-match" ,sbcl-cl-string-match)
-       ("puri" ,sbcl-puri)
-       ("sqlite" ,sbcl-cl-sqlite)
-       ("parenscript" ,sbcl-parenscript)
-       ("cl-json" ,sbcl-cl-json)
-       ("swank" ,sbcl-slime-swank)
-       ("cl-markup" ,sbcl-cl-markup)
-       ("cl-css" ,sbcl-cl-css)
-       ("bordeaux-threads" ,sbcl-bordeaux-threads)
-       ("s-xml-rpc" ,sbcl-s-xml-rpc)
-       ("unix-opts" ,sbcl-unix-opts)
-       ("trivial-clipboard" ,sbcl-trivial-clipboard)))
-    (synopsis "Infinitely extensible web-browser (with Lisp development files)")))
+       ("lparallel" ,sbcl-lparallel)
+       ("quri" ,sbcl-quri)
+       ("str" ,sbcl-cl-str)))
+    (native-inputs
+     `(("prove-asdf" ,sbcl-prove-asdf)))
+    (synopsis "Infinitely extensible web-browser (download manager)")))
+
+(define-public next
+  (let ((version (package-version next-gtk-webkit)))
+    (package
+      (inherit next-gtk-webkit)
+      (name "next")
+      (build-system asdf-build-system/sbcl)
+      (outputs '("out" "lib"))
+      (arguments
+       `(#:tests? #f                    ; no tests
+         #:asd-system-name "next"
+         #:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'patch-platform-port-path
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "source/ports/gtk-webkit.lisp"
+                          (("\"next-gtk-webkit\"")
+                           (string-append "\"" (assoc-ref inputs "next-gtk-webkit")
+                                          "/bin/next-gtk-webkit\"")))
+                        #t))
+                    (add-after 'patch-platform-port-path 'patch-version
+                      ;; When the version is not just dot-separated numerals
+                      ;; (e.g. a git-commit version), Guix modifies the .asd with
+                      ;; an illegal version number, and then Next fails to query
+                      ;; it.  So we hard-code it here.
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (let ((version (format #f "~a" ,version)))
+                          (substitute* "source/global.lisp"
+                            (("version\\)\\)\\)")
+                             (string-append "version)))
+(setf +version+ \"" version "\")"))))
+                        #t))
+                    (add-before 'cleanup 'move-bundle
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (define lib (assoc-ref outputs "lib"))
+                        (define actual-fasl (string-append
+                                             lib
+                                             "/lib/sbcl/next.fasl"))
+                        (define expected-fasl (string-append
+                                               lib
+                                               "/lib/sbcl/next--system.fasl"))
+                        (copy-file actual-fasl expected-fasl)
+                        #t))
+                    (add-after 'create-symlinks 'build-program
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (build-program
+                         (string-append (assoc-ref outputs "out") "/bin/next")
+                         outputs
+                         #:entry-program '((next:entry-point) 0))))
+                    (add-before 'build 'install-assets
+                      ;; Since the ASDF build system generates a new .asd with a
+                      ;; possibly suffixed and thus illegal version number, assets
+                      ;; should not be installed after the 'build phase or else
+                      ;; the illegal version will result in NIL in the .desktop
+                      ;; file.
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (with-output-to-file "version"
+                          (lambda _
+                            (format #t "~a" ,(package-version next-gtk-webkit))))
+                        (invoke "make" "install-assets"
+                                (string-append "PREFIX="
+                                               (assoc-ref outputs "out"))))))))
+      (inputs
+       `(("next-gtk-webkit" ,next-gtk-webkit)
+         ;; ASD libraries:
+         ("trivial-features" ,sbcl-trivial-features)
+         ("trivial-garbage" ,sbcl-trivial-garbage)
+         ;; Lisp libraries:
+         ("alexandria" ,sbcl-alexandria)
+         ("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("cl-css" ,sbcl-cl-css)
+         ("cl-json" ,sbcl-cl-json)
+         ("cl-markup" ,sbcl-cl-markup)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
+         ("cl-string-match" ,sbcl-cl-string-match)
+         ("cl-strings" ,sbcl-cl-strings)
+         ("closer-mop" ,sbcl-closer-mop)
+         ("dbus" ,cl-dbus)
+         ("dexador" ,sbcl-dexador)
+         ("ironclad" ,sbcl-ironclad)
+         ("log4cl" ,sbcl-log4cl)
+         ("lparallel" ,sbcl-lparallel)
+         ("mk-string-metrics" ,sbcl-mk-string-metrics)
+         ("parenscript" ,sbcl-parenscript)
+         ("quri" ,sbcl-quri)
+         ("sqlite" ,sbcl-cl-sqlite)
+         ("str" ,sbcl-cl-str)
+         ("swank" ,sbcl-slime-swank)
+         ("trivia" ,sbcl-trivia)
+         ("trivial-clipboard" ,sbcl-trivial-clipboard)
+         ("unix-opts" ,sbcl-unix-opts)
+         ;; Local deps
+         ("next-download-manager" ,sbcl-next-download-manager)))
+      (native-inputs
+       `(("prove-asdf" ,sbcl-prove-asdf)))
+      (synopsis "Infinitely extensible web-browser (with Lisp development files)"))))
+
+(define-public sbcl-next
+  (deprecated-package "sbcl-next" next))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 065700465e..2008b8ee46 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -68,6 +68,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system ant)
   #:use-module (guix build-system scons)
+  #:use-module (guix build-system go)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages adns)
@@ -92,6 +93,7 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnu-doc)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -6596,3 +6598,35 @@ It's also possible to rewrite existing log files.
 
 Anonip can also be uses as a Python module in your own Python application.")
     (license license:bsd-3)))
+
+(define-public poussetaches
+  (package
+    (name "poussetaches")
+    (version "0.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tsileo/poussetaches")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "07106kfcz3a39jvrv3mlqqxlihsmdhgkrjnqznyjsij9absgvdv6"))))
+    (build-system go-build-system)
+    (propagated-inputs
+     `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)
+       ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)))
+    (arguments
+     `(#:import-path "github.com/tsileo/poussetaches"))
+    (home-page "https://github.com/tsileo/poussetaches")
+    (synopsis "Lightweight asynchronous task execution service")
+    (description "Poussetaches (which literally means \"push tasks\" in
+French) is a lightweight asynchronous task execution service that aims to
+replace Celery and RabbitMQ for small Python applications.
+
+The app posts base64-encoded payload to poussetaches and specifies the
+endpoint that will be used to trigger the task.  Poussetaches makes HTTP
+requests with the registered payload until the right status code is
+returned.")
+    (license license:isc)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 538c97675d..ea7cee54e3 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
@@ -59,14 +59,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.24.3")
+    (version "2.24.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0lbcrw5axwrbrajxq7fqywfyh0djqi23ynzb5wi5ghw2grnp83cl"))))
+                "1n3x5g1z6rg9n1ssna7wi0z6zlprjm4wzk544v14wqi6q0lv2s46"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
     (arguments
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index b8a2264153..4cf1a3ac4b 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -72,7 +72,7 @@
 (define-public wine
   (package
     (name "wine")
-    (version "4.0.1")
+    (version "4.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dl.winehq.org/wine/source/"
@@ -80,7 +80,7 @@
                                   "/wine-" version ".tar.xz"))
               (sha256
                (base32
-                "0j29df0px6dzin4j0cbxgza4msvf9spmwranv25krq1g9kq959nk"))))
+                "0x5x9pvhryzhq1m7i8gx5wwwj341zz05zymadlhfw5w45xlm0h4r"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("gettext" ,gettext-minimal)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 709037da37..e644cc94cc 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -1183,7 +1183,7 @@ modules for building a Wayland compositor.")
 (define-public sway
   (package
     (name "sway")
-    (version "1.1.1")
+    (version "1.2")
     (source
      (origin
        (method git-fetch)
@@ -1192,7 +1192,7 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0yhn9zdg9mzfhn97c440lk3pw6122nrhx0is5sqmvgr6p814f776"))))
+        (base32 "0vch2zm5afc76ia78p3vg71zr2fyda67l9hd2h0x1jq3mnvfbxnd"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index f92d33bf94..7bd43cd427 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -52,6 +52,8 @@
                     (default cuirass))
   (log-file         cuirass-configuration-log-file ;string
                     (default "/var/log/cuirass.log"))
+  (web-log-file     cuirass-configuration-web-log-file ;string
+                    (default "/var/log/cuirass-web.log"))
   (cache-directory  cuirass-configuration-cache-directory ;string (dir-name)
                     (default "/var/cache/cuirass"))
   (ttl              cuirass-configuration-ttl     ;integer
@@ -83,6 +85,7 @@
    (cuirass-configuration? config)
    (let ((cuirass          (cuirass-configuration-cuirass config))
          (cache-directory  (cuirass-configuration-cache-directory config))
+         (web-log-file     (cuirass-configuration-web-log-file config))
          (log-file         (cuirass-configuration-log-file config))
          (user             (cuirass-configuration-user config))
          (group            (cuirass-configuration-group config))
@@ -106,8 +109,6 @@
                             #$(scheme-file "cuirass-specs.scm" specs)
                             "--database" #$database
                             "--ttl" #$(string-append (number->string ttl) "s")
-                            "--port" #$(number->string port)
-                            "--listen" #$host
                             "--interval" #$(number->string interval)
                             #$@(if use-substitutes? '("--use-substitutes") '())
                             #$@(if one-shot? '("--one-shot") '())
@@ -121,6 +122,28 @@
                       #:user #$user
                       #:group #$group
                       #:log-file #$log-file))
+            (stop #~(make-kill-destructor)))
+           (shepherd-service
+            (documentation "Run Cuirass web interface.")
+            (provision '(cuirass-web))
+            (requirement '(guix-daemon networking))
+            (start #~(make-forkexec-constructor
+                      (list (string-append #$cuirass "/bin/cuirass")
+                            "--cache-directory" #$cache-directory
+                            "--specifications"
+                            #$(scheme-file "cuirass-specs.scm" specs)
+                            "--database" #$database
+                            "--ttl" #$(string-append (number->string ttl) "s")
+                            "--web"
+                            "--port" #$(number->string port)
+                            "--listen" #$host
+                            "--interval" #$(number->string interval)
+                            #$@(if use-substitutes? '("--use-substitutes") '())
+                            #$@(if fallback? '("--fallback") '()))
+
+                      #:user #$user
+                      #:group #$group
+                      #:log-file #$web-log-file))
             (stop #~(make-kill-destructor)))))))
 
 (define (cuirass-account config)
diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm
index 9d21b6e70c..e77c43bfbf 100644
--- a/gnu/services/cups.scm
+++ b/gnu/services/cups.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -170,7 +171,10 @@
 
 (define (ssl-options? x)
   (and (list? x)
-       (and-map (lambda (elt) (memq elt '(AllowRC4 AllowSSL3))) x)))
+       (and-map (lambda (elt) (memq elt '(AllowRC4
+                                          AllowSSL3
+                                          DenyCBC
+                                          DenyTLS1.0))) x)))
 (define (serialize-ssl-options field-name val)
   (serialize-field field-name
                    (match val
@@ -805,12 +809,15 @@ an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate
 all addresses.")
   (ssl-options
    (ssl-options '())
-   "Sets encryption options.
-By default, CUPS only supports encryption using TLS v1.0 or higher using known
-secure cipher suites.  The @code{AllowRC4} option enables the 128-bit RC4
-cipher suites, which are required for some older clients that do not implement
-newer ones.  The @code{AllowSSL3} option enables SSL v3.0, which is required
-for some older clients that do not support TLS v1.0.")
+   "Sets encryption options.  By default, CUPS only supports encryption
+using TLS v1.0 or higher using known secure cipher suites.  Security is
+reduced when @code{Allow} options are used, and enhanced when @code{Deny}
+options are used.  The @code{AllowRC4} option enables the 128-bit RC4 cipher
+suites, which are required for some older clients.  The @code{AllowSSL3} option
+enables SSL v3.0, which is required for some older clients that do not support
+TLS v1.0.  The @code{DenyCBC} option disables all CBC cipher suites.  The
+@code{DenyTLS1.0} option disables TLS v1.0 support - this sets the minimum
+protocol version to TLS v1.1.")
   #;
   (ssl-port
    (non-negative-integer 631)
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 343d507c14..a32756e040 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -963,23 +963,29 @@ with the administrator's password."
   (match-record enlightenment-desktop-configuration
                 <enlightenment-desktop-configuration>
                 (enlightenment)
-    (list (file-append enlightenment
-                       "/lib/enlightenment/utils/enlightenment_sys")
-          (file-append enlightenment
-                       "/lib/enlightenment/utils/enlightenment_backlight")
-          ;; TODO: Move this binary to a screen-locker service.
-          (file-append enlightenment
-                       "/lib/enlightenment/utils/enlightenment_ckpasswd")
-          (file-append enlightenment
-                       (string-append
-                         "/lib/enlightenment/modules/cpufreq/"
-                         (match (string-tokenize (%current-system)
-                                                 (char-set-complement (char-set #\-)))
-                                ((arch "linux") (string-append "linux-gnu-" arch))
-                                ((arch "gnu")   (string-append "gnu-" arch)))
-                         "-"
-                         (version-major+minor (package-version enlightenment))
-                         "/freqset")))))
+    (let ((module-arch (match (string-tokenize (%current-system)
+                                               (char-set-complement (char-set #\-)))
+                              ((arch "linux") (string-append "linux-gnu-" arch))
+                              ((arch "gnu")   (string-append "gnu-" arch)))))
+      (list (file-append enlightenment
+                         "/lib/enlightenment/utils/enlightenment_sys")
+            (file-append enlightenment
+                         "/lib/enlightenment/utils/enlightenment_backlight")
+            ;; TODO: Move this binary to a screen-locker service.
+            (file-append enlightenment
+                         "/lib/enlightenment/utils/enlightenment_ckpasswd")
+            (file-append enlightenment
+                         (string-append
+                           "/lib/enlightenment/modules/cpufreq/"
+                           module-arch "-"
+                           (package-version enlightenment)
+                           "/freqset"))
+            (file-append enlightenment
+                         (string-append
+                           "/lib/enlightenment/modules/sysinfo/"
+                           module-arch "-"
+                           (package-version enlightenment)
+                           "/cpuclock_sysfs"))))))
 
 (define enlightenment-desktop-service-type
   (service-type
diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm
index 3817bd09de..1e01b5059d 100644
--- a/gnu/services/pm.scm
+++ b/gnu/services/pm.scm
@@ -401,7 +401,8 @@ shutdown on system startup."))
                         (compose list tlp-configuration-tlp))
      (service-extension activation-service-type
                         tlp-activation)))
-   (default-value (tlp-configuration))))
+   (default-value (tlp-configuration))
+   (description "Run TLP, a power management tool.")))
 
 (define (generate-tlp-documentation)
   (generate-documentation
@@ -441,4 +442,6 @@ shutdown on system startup."))
    (name 'thermald)
    (extensions (list (service-extension shepherd-root-service-type
                                         thermald-shepherd-service)))
-   (default-value (thermald-configuration))))
+   (default-value (thermald-configuration))
+   (description "Run thermald, a CPU frequency scaling service that helps
+prevent overheating.")))
diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm
index 3ec5c3d6ee..3f98a1e316 100644
--- a/gnu/tests/docker.scm
+++ b/gnu/tests/docker.scm
@@ -100,7 +100,7 @@ inside %DOCKER-OS."
              marionette))
 
           (test-equal "Load docker image and run it"
-            '("hello world" "hi!" "JSON!")
+            '("hello world" "hi!" "JSON!" #o1777)
             (marionette-eval
              `(begin
                 (define slurp
@@ -131,8 +131,15 @@ inside %DOCKER-OS."
                                    ,(string-append #$docker-cli "/bin/docker")
                                    "run" repository&tag
                                    "-c" "(use-modules (json))
-  (display (json-string->scm (scm->json-string \"JSON!\")))")))
-                  (list response1 response2 response3)))
+  (display (json-string->scm (scm->json-string \"JSON!\")))"))
+
+                       ;; Check whether /tmp exists.
+                       (response4 (slurp
+                                   ,(string-append #$docker-cli "/bin/docker")
+                                   "run" repository&tag "-c"
+                                   "(display (stat:perms (lstat \"/tmp\")))")))
+                  (list response1 response2 response3
+                        (string->number response4))))
              marionette))
 
           (test-end)