summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/installer/newt/partition.scm6
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/admin.scm64
-rw-r--r--gnu/packages/android.scm58
-rw-r--r--gnu/packages/audio.scm2
-rw-r--r--gnu/packages/aux-files/linux-libre/4.19-arm.conf39
-rw-r--r--gnu/packages/aux-files/linux-libre/4.19-arm64.conf43
-rw-r--r--gnu/packages/aux-files/linux-libre/4.19-i686.conf35
-rw-r--r--gnu/packages/aux-files/linux-libre/4.19-x86_64.conf35
-rw-r--r--gnu/packages/aux-files/linux-libre/5.2-arm.conf32
-rw-r--r--gnu/packages/aux-files/linux-libre/5.2-arm64.conf42
-rw-r--r--gnu/packages/aux-files/linux-libre/5.2-i686.conf28
-rw-r--r--gnu/packages/aux-files/linux-libre/5.2-x86_64.conf28
-rw-r--r--gnu/packages/ci.scm6
-rw-r--r--gnu/packages/crates-io.scm638
-rw-r--r--gnu/packages/datamash.scm6
-rw-r--r--gnu/packages/diffoscope.scm279
-rw-r--r--gnu/packages/dns.scm8
-rw-r--r--gnu/packages/elixir.scm27
-rw-r--r--gnu/packages/emacs-xyz.scm572
-rw-r--r--gnu/packages/enchant.scm4
-rw-r--r--gnu/packages/engineering.scm217
-rw-r--r--gnu/packages/enlightenment.scm4
-rw-r--r--gnu/packages/gdb.scm6
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/graphics.scm47
-rw-r--r--gnu/packages/guile-xyz.scm76
-rw-r--r--gnu/packages/haskell-xyz.scm2
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/jupyter.scm189
-rw-r--r--gnu/packages/libevent.scm4
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/lisp.scm434
-rw-r--r--gnu/packages/llvm.scm19
-rw-r--r--gnu/packages/mail.scm10
-rw-r--r--gnu/packages/maths.scm7
-rw-r--r--gnu/packages/messaging.scm6
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/node.scm1
-rw-r--r--gnu/packages/package-management.scm187
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/emacs-unpackaged-req.patch24
-rw-r--r--gnu/packages/patches/enjarify-setup-py.patch19
-rw-r--r--gnu/packages/patches/python-slugify-depend-on-unidecode.patch4
-rw-r--r--gnu/packages/perl.scm6
-rw-r--r--gnu/packages/python-crypto.scm6
-rw-r--r--gnu/packages/python-web.scm19
-rw-r--r--gnu/packages/python-xyz.scm139
-rw-r--r--gnu/packages/qt.scm174
-rw-r--r--gnu/packages/samba.scm4
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/serialization.scm33
-rw-r--r--gnu/packages/speech.scm237
-rw-r--r--gnu/packages/sphinx.scm2
-rw-r--r--gnu/packages/statistics.scm2
-rw-r--r--gnu/packages/sync.scm4
-rw-r--r--gnu/packages/syncthing.scm2
-rw-r--r--gnu/packages/telephony.scm2
-rw-r--r--gnu/packages/terminals.scm9
-rw-r--r--gnu/packages/tex.scm451
-rw-r--r--gnu/packages/text-editors.scm2
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/usb-modeswitch.scm2
-rw-r--r--gnu/packages/video.scm9
-rw-r--r--gnu/packages/web-browsers.scm43
-rw-r--r--gnu/packages/web.scm40
-rw-r--r--gnu/packages/xdisorg.scm34
-rw-r--r--gnu/packages/xml.scm2
-rw-r--r--gnu/services/cuirass.scm120
-rw-r--r--gnu/services/mail.scm4
-rw-r--r--gnu/services/networking.scm82
-rw-r--r--gnu/services/virtualization.scm2
-rw-r--r--gnu/services/xorg.scm23
-rw-r--r--gnu/system/linux-container.scm12
-rw-r--r--gnu/tests.scm7
75 files changed, 3812 insertions, 908 deletions
diff --git a/gnu/installer/newt/partition.scm b/gnu/installer/newt/partition.scm
index cd9d46316a..7a9f11a15e 100644
--- a/gnu/installer/newt/partition.scm
+++ b/gnu/installer/newt/partition.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -159,14 +159,14 @@ USER-PARTITIONS list. Return this list with password fields filled-in."
                     (format #f (G_ "Please enter the password for the \
 encryption of partition ~a (label: ~a).") file-name crypt-label)
                     (G_ "Password required")
-                    #:input-hide-checkbox? #t)))
+                    #:input-visibility-checkbox? #t)))
                 (password-confirm-page
                  (lambda ()
                    (run-input-page
                     (format #f (G_ "Please confirm the password for the \
 encryption of partition ~a (label: ~a).") file-name crypt-label)
                     (G_ "Password confirmation required")
-                    #:input-hide-checkbox? #t))))
+                    #:input-visibility-checkbox? #t))))
            (if crypt-label
                (let loop ()
                  (let ((password (password-page))
diff --git a/gnu/local.mk b/gnu/local.mk
index 5705494090..2fcd2648ed 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -143,6 +143,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/dejagnu.scm			\
   %D%/packages/dico.scm				\
   %D%/packages/dictionaries.scm			\
+  %D%/packages/diffoscope.scm			\
   %D%/packages/digest.scm			\
   %D%/packages/direct-connect.scm		\
   %D%/packages/disk.scm				\
@@ -270,6 +271,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/jrnl.scm				\
   %D%/packages/jose.scm				\
   %D%/packages/julia.scm			\
+  %D%/packages/jupyter.scm			\
   %D%/packages/kawa.scm				\
   %D%/packages/kde.scm				\
   %D%/packages/kde-frameworks.scm		\
@@ -789,10 +791,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
-  %D%/packages/patches/emacs-unpackaged-req.patch		\
   %D%/packages/patches/emacs-undohist-ignored.patch	\
   %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch	\
   %D%/packages/patches/emacs-zones-called-interactively.patch	\
+  %D%/packages/patches/enjarify-setup-py.patch			\
   %D%/packages/patches/enlightenment-fix-setuid-path.patch	\
   %D%/packages/patches/erlang-man-path.patch			\
   %D%/packages/patches/eudev-rules-directory.patch		\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 2e072deed7..327abe455a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,6 +56,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
@@ -684,7 +686,7 @@ connection alive.")
 (define-public isc-dhcp
   (let* ((bind-major-version "9")
          (bind-minor-version "11")
-         (bind-patch-version "10")
+         (bind-patch-version "11")
          (bind-release-type "")         ; for patch release, use "-P"
          (bind-release-version "")      ; for patch release, e.g. "6"
          (bind-version (string-append bind-major-version
@@ -825,7 +827,7 @@ connection alive.")
                                         "/bind-" bind-version ".tar.gz"))
                     (sha256
                      (base32
-                      "1hvhdaar9swh5087kzkbmav1nbn19rxh0m60x0d7gri0v8689fxj"))))
+                      "0swavslyli3vcrkcm2ip11s6p58g3k7r4gjs2b899r25cqrk0lk1"))))
 
                 ;; When cross-compiling, we need the cross Coreutils and sed.
                 ;; Otherwise just use those from %FINAL-INPUTS.
@@ -2751,6 +2753,64 @@ used in screenshots to show other users what operating system or distribution
 you are running, what theme or icon set you are using, etc.")
     (license license:expat)))
 
+(define-public screenfetch
+  ;; First commit supporting current Guix System.
+  (let ((commit "e3ec82dd464e81e4d10bef218b3016e3044c766c"))
+    (package
+      (name "screenfetch")
+      (version (git-version "3.8.0" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/KittyKatt/screenFetch")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1lzs1l5xgj9mn4b59lhkfgqnyiivf8svd1iwjabzrax90rdmxfwj"))))
+      (build-system trivial-build-system)
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let ((source (assoc-ref %build-inputs "source"))
+                 (out    (assoc-ref %outputs "out")))
+             (mkdir-p (string-append out "/bin/"))
+             (copy-file (string-append source "/screenfetch-dev")
+                        (string-append out "/bin/screenfetch"))
+             (install-file (string-append source "/screenfetch.1")
+                           (string-append out "/man/man1/"))
+             (install-file (string-append source "/COPYING")
+                           (string-append out "/share/doc/" ,name "-" ,version))
+             (substitute* (string-append out "/bin/screenfetch")
+               (("/usr/bin/env bash")
+                (string-append (assoc-ref %build-inputs "bash")
+                               "/bin/bash")))
+             (wrap-program
+               (string-append out "/bin/screenfetch")
+               `("PATH" ":" prefix
+                 (,(string-append (assoc-ref %build-inputs "bc") "/bin:"
+                                  (assoc-ref %build-inputs "scrot") "/bin:"
+                                  (assoc-ref %build-inputs "xdpyinfo") "/bin"
+                                  (assoc-ref %build-inputs "xprop") "/bin"))))
+             (substitute* (string-append out "/bin/screenfetch")
+               (("#!#f")
+                (string-append "#!" (assoc-ref %build-inputs "bash")
+                               "/bin/bash")))))))
+      (inputs
+       `(("bash" ,bash)
+         ("bc" ,bc)
+         ("scrot" ,scrot)
+         ("xdpyinfo" ,xdpyinfo)
+         ("xprop" ,xprop)))
+      (home-page "https://github.com/KittyKatt/screenFetch")
+      (synopsis "System information script")
+      (description "Bash screenshot information tool which can be used to
+generate those nifty terminal theme information and ASCII distribution logos in
+everyone's screenshots nowadays.")
+      (license license:gpl3))))
+
 (define-public nnn
   (package
     (name "nnn")
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index fd900aaf03..b312c5b2af 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -40,6 +40,7 @@
   #:use-module (gnu packages docker)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages python)
@@ -936,3 +937,60 @@ these same tools to create your own additional or alternative repository for
 publishing, or to assist in creating, testing and submitting metadata to the
 main repository.")
     (license license:agpl3+)))
+
+(define-public enjarify
+  (package
+    (name "enjarify")
+    (version "1.0.3")
+    (home-page "https://github.com/Storyyeller/enjarify")
+    (source
+     (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url home-page)
+            (commit version)))
+      (file-name (git-file-name name version))
+      (patches
+       (search-patches "enjarify-setup-py.patch"))
+      (sha256
+       (base32
+        "1nam7h1g4f1h6jla4qcjjagnyvd24dv6d5445w04q8hx07nxdapk"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enjarify-wrapper-inherit-pythonpath
+           ;; enjarify sets PYTHONPATH from a shell script, overwriting
+           ;; PYTHONPATH set from guix. Comment out this line.
+           (lambda _
+             (substitute* "enjarify.sh"
+               (("export PYTHONPATH") "# export PYTHONPATH"))
+             #t))
+         (add-before 'check 'fixup-expected-test-results
+           ;; Upstream adjusted this test in commit:
+           ;; 3ae884a6485af82d300515813f537685b08dd800
+           (lambda _
+             (substitute* "tests/test2/expected.txt"
+               (("^20") "0"))
+             #t))
+         (add-before 'check 'drop-java-xss-argument
+           ;; Upstream removed this argument in order to support 32-bit
+           ;; architectures.  commit: 4be0111d879aa95fdc0d9f24fe529f8c664d4093
+           (lambda _
+             (substitute* "enjarify/runtests.py"
+               (("java -Xss515m") "java "))
+             #t))
+         (add-after 'install 'install-enjarify-wrapper
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out")))
+                 (mkdir-p (string-append out "/bin/"))
+                 (copy-file "enjarify.sh" (string-append out "/bin/enjarify"))
+                 #t))))))
+    (native-inputs `(("openjdk" ,openjdk12)))
+    (synopsis "Translate Dalvik bytecode to equivalent Java bytecode")
+    (description "Android applications are Java programs that run on a
+customized virtual machine, which is part of the Android operating system, the
+Dalvik VM.  Their bytecode differs from the bytecode of normal Java
+applications.  Enjarify can translate the Dalvik bytecode back to equivalent
+Java bytecode, which simplifies the analysis of Android applications.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 1209e94e25..36fc434160 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1027,7 +1027,7 @@ audio signals.")
 @enumerate
 @item Pulse-VCO, a dirac pulse oscillator with flat amplitude spectrum
 @item Saw-VCO, a sawtooth oscillator with 1/F amplitude spectrum
-@item Rec-VCO, a square / rectange oscillator
+@item Rec-VCO, a square / rectangle oscillator
 @end enumerate\n
 
 All oscillators are low-pass filtered to provide waveforms similar to the
diff --git a/gnu/packages/aux-files/linux-libre/4.19-arm.conf b/gnu/packages/aux-files/linux-libre/4.19-arm.conf
index 184f73276f..72161c09ff 100644
--- a/gnu/packages/aux-files/linux-libre/4.19-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/4.19-arm.conf
@@ -1133,7 +1133,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NETFILTER_NETLINK_OSF=m
 CONFIG_NF_CONNTRACK=m
 CONFIG_NF_LOG_COMMON=m
-# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NF_LOG_NETDEV=m
 CONFIG_NETFILTER_CONNCOUNT=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
@@ -1176,8 +1176,8 @@ CONFIG_NF_NAT_REDIRECT=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1189,15 +1189,22 @@ CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_TUNNEL=m
-# CONFIG_NFT_OBJREF is not set
+CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1361,8 +1368,12 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1370,6 +1381,9 @@ CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1401,7 +1415,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1430,7 +1451,9 @@ CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_DEFRAG_IPV6=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/4.19-arm64.conf b/gnu/packages/aux-files/linux-libre/4.19-arm64.conf
index 73cd300c18..47ec3c9765 100644
--- a/gnu/packages/aux-files/linux-libre/4.19-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.19-arm64.conf
@@ -1120,10 +1120,11 @@ CONFIG_NF_NAT_REDIRECT=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
+CONFIG_NFT_FLOW_OFFLOAD=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_CONNLIMIT=m
 CONFIG_NFT_LOG=m
@@ -1136,12 +1137,20 @@ CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
-# CONFIG_NF_FLOW_TABLE is not set
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
+CONFIG_NF_FLOW_TABLE_INET=m
+CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
 
 #
@@ -1303,14 +1312,22 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1342,7 +1359,15 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
 CONFIG_NF_LOG_IPV6=m
@@ -1358,7 +1383,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
 CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
-# CONFIG_IP6_NF_MATCH_SRH is not set
+CONFIG_IP6_NF_MATCH_SRH=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
@@ -1370,7 +1395,9 @@ CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_DEFRAG_IPV6=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/4.19-i686.conf b/gnu/packages/aux-files/linux-libre/4.19-i686.conf
index c1df3f0f49..75a18ec5ef 100644
--- a/gnu/packages/aux-files/linux-libre/4.19-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/4.19-i686.conf
@@ -1209,8 +1209,8 @@ CONFIG_NF_NAT_REDIRECT=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1226,11 +1226,18 @@ CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1394,8 +1401,12 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1403,6 +1414,9 @@ CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1434,7 +1448,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1468,7 +1489,9 @@ CONFIG_NF_DEFRAG_IPV6=m
 # DECnet: Netfilter Configuration
 #
 CONFIG_DECNET_NF_GRABULATOR=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/4.19-x86_64.conf b/gnu/packages/aux-files/linux-libre/4.19-x86_64.conf
index a8f8c81648..f151036410 100644
--- a/gnu/packages/aux-files/linux-libre/4.19-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/4.19-x86_64.conf
@@ -1219,8 +1219,8 @@ CONFIG_NF_NAT_REDIRECT=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1236,11 +1236,18 @@ CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1404,8 +1411,12 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1413,6 +1424,9 @@ CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1444,7 +1458,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1478,7 +1499,9 @@ CONFIG_NF_DEFRAG_IPV6=m
 # DECnet: Netfilter Configuration
 #
 CONFIG_DECNET_NF_GRABULATOR=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/5.2-arm.conf b/gnu/packages/aux-files/linux-libre/5.2-arm.conf
index 4ac8ed642d..7cab0ab66c 100644
--- a/gnu/packages/aux-files/linux-libre/5.2-arm.conf
+++ b/gnu/packages/aux-files/linux-libre/5.2-arm.conf
@@ -1117,7 +1117,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NETFILTER_NETLINK_OSF=m
 CONFIG_NF_CONNTRACK=m
 CONFIG_NF_LOG_COMMON=m
-# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NF_LOG_NETDEV=m
 CONFIG_NETFILTER_CONNCOUNT=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
@@ -1157,8 +1157,8 @@ CONFIG_NF_NAT_MASQUERADE=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1168,17 +1168,25 @@ CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
 CONFIG_NFT_TUNNEL=m
-# CONFIG_NFT_OBJREF is not set
+CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_XFRM=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1345,8 +1353,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1383,7 +1394,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1412,7 +1426,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
 # end of IPv6: Netfilter Configuration
 
 CONFIG_NF_DEFRAG_IPV6=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/5.2-arm64.conf b/gnu/packages/aux-files/linux-libre/5.2-arm64.conf
index 4ad652a78f..99ff63354f 100644
--- a/gnu/packages/aux-files/linux-libre/5.2-arm64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.2-arm64.conf
@@ -1118,28 +1118,38 @@ CONFIG_NF_NAT_MASQUERADE=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
+# CONFIG_NFT_FLOW_OFFLOAD is not set
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_CONNLIMIT=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
 CONFIG_NFT_TUNNEL=m
 CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_XFRM=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
-# CONFIG_NF_FLOW_TABLE is not set
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
+CONFIG_NF_FLOW_TABLE_INET=m
+CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
 
 #
@@ -1304,8 +1314,12 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_IPV4=m
@@ -1341,7 +1355,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
+CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
 CONFIG_NF_LOG_IPV6=m
@@ -1355,7 +1373,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
 CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
-# CONFIG_IP6_NF_MATCH_SRH is not set
+CONFIG_IP6_NF_MATCH_SRH=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
@@ -1369,7 +1387,9 @@ CONFIG_IP6_NF_TARGET_NPT=m
 # end of IPv6: Netfilter Configuration
 
 CONFIG_NF_DEFRAG_IPV6=m
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -8028,9 +8048,9 @@ CONFIG_EXT4_USE_FOR_EXT2=y
 CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
-CONFIG_JBD2=m
+CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=m
+CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
 # CONFIG_REISERFS_PROC_INFO is not set
@@ -8687,7 +8707,7 @@ CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
 # CONFIG_INDIRECT_PIO is not set
 CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
+CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
diff --git a/gnu/packages/aux-files/linux-libre/5.2-i686.conf b/gnu/packages/aux-files/linux-libre/5.2-i686.conf
index 0a211f6eb9..8813a70d3d 100644
--- a/gnu/packages/aux-files/linux-libre/5.2-i686.conf
+++ b/gnu/packages/aux-files/linux-libre/5.2-i686.conf
@@ -1147,8 +1147,8 @@ CONFIG_NF_NAT_MASQUERADE=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1158,17 +1158,25 @@ CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
 CONFIG_NFT_TUNNEL=m
 CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_XFRM=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1335,8 +1343,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1373,7 +1384,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1409,7 +1423,9 @@ CONFIG_NF_DEFRAG_IPV6=m
 CONFIG_DECNET_NF_GRABULATOR=m
 # end of DECnet: Netfilter Configuration
 
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/aux-files/linux-libre/5.2-x86_64.conf b/gnu/packages/aux-files/linux-libre/5.2-x86_64.conf
index 51d4e93372..e1d2c93f9a 100644
--- a/gnu/packages/aux-files/linux-libre/5.2-x86_64.conf
+++ b/gnu/packages/aux-files/linux-libre/5.2-x86_64.conf
@@ -1168,8 +1168,8 @@ CONFIG_NF_NAT_MASQUERADE=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_SET=m
-# CONFIG_NF_TABLES_INET is not set
-# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
 CONFIG_NFT_NUMGEN=m
 CONFIG_NFT_CT=m
 CONFIG_NFT_FLOW_OFFLOAD=m
@@ -1179,17 +1179,25 @@ CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
 CONFIG_NFT_TUNNEL=m
 CONFIG_NFT_OBJREF=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUOTA=m
 CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_HASH=m
+CONFIG_NFT_FIB=m
+CONFIG_NFT_FIB_INET=m
 CONFIG_NFT_XFRM=m
 CONFIG_NFT_SOCKET=m
 CONFIG_NFT_OSF=m
 CONFIG_NFT_TPROXY=m
+CONFIG_NF_DUP_NETDEV=m
+CONFIG_NFT_DUP_NETDEV=m
+CONFIG_NFT_FWD_NETDEV=m
+CONFIG_NFT_FIB_NETDEV=m
 CONFIG_NF_FLOW_TABLE_INET=m
 CONFIG_NF_FLOW_TABLE=m
 CONFIG_NETFILTER_XTABLES=m
@@ -1356,8 +1364,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_SOCKET_IPV4=m
 CONFIG_NF_TPROXY_IPV4=m
-# CONFIG_NF_TABLES_IPV4 is not set
-# CONFIG_NF_TABLES_ARP is not set
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NFT_FIB_IPV4=m
+CONFIG_NF_TABLES_ARP=y
 CONFIG_NF_FLOW_TABLE_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
@@ -1394,7 +1405,10 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 CONFIG_NF_SOCKET_IPV6=m
 CONFIG_NF_TPROXY_IPV6=m
-# CONFIG_NF_TABLES_IPV6 is not set
+CONFIG_NF_TABLES_IPV6=y
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NFT_FIB_IPV6=m
 CONFIG_NF_FLOW_TABLE_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
@@ -1430,7 +1444,9 @@ CONFIG_NF_DEFRAG_IPV6=m
 CONFIG_DECNET_NF_GRABULATOR=m
 # end of DECnet: Netfilter Configuration
 
-# CONFIG_NF_TABLES_BRIDGE is not set
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_REJECT=m
+CONFIG_NF_LOG_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 608cd0af23..5807c8b68c 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 "1cd2f9334dde13542732c22753c4ebde61bc95e0")
-        (revision "23"))
+  (let ((commit "d27ff21e430cd38b02bd70a0dc8d60c9c2736f83")
+        (revision "24"))
     (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
-                  "0r3x8gv0v89brjqi8r31p6c0mblbaf2kdk2fz99jiab4pir16w87"))))
+                  "166xl9zfy7dm645fk2ln45bvw0y0gy0xw8fb7mprbjz8v95dh27p"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 906a8e66bf..7a0ea03a67 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -25,11 +25,16 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -158,6 +163,35 @@ support.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-backtrace-sys
+  (package
+    (name "rust-backtrace-sys")
+    (version "0.1.31")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "backtrace-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0as2pk77br4br04daywhivpi1ixxb8y2c7f726kj849dxys31a42"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-compiler-builtins"
+         ,rust-compiler-builtins)
+        ("rust-libc" ,rust-libc)
+        ("rust-rustc-std-workspace-core"
+         ,rust-rustc-std-workspace-core))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc))))
+    (home-page "https://github.com/rust-lang/backtrace-rs")
+    (synopsis "Bindings to the libbacktrace gcc library")
+    (description
+     "This package provides bindings to the libbacktrace gcc library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-base-x
   (package
     (name "rust-base-x")
@@ -386,6 +420,35 @@ depending on a large number of #[cfg] parameters.  Structured like an
      "This package provides Rust bindings for @code{libclang}.")
     (license license:asl2.0)))
 
+(define-public rust-clang-sys-0.26
+  (package
+    (inherit rust-clang-sys)
+    (name "rust-clang-sys")
+    (version "0.26.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clang-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r50dwy5hj5gq07dn0qf8222d07qv0970ymx0j8n9779yayc3w3f"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glob" ,rust-glob-0.2)
+        ("rust-libc" ,rust-libc)
+        ("rust-libloading" ,rust-libloading))
+       #:cargo-development-inputs
+       (("rust-glob" ,rust-glob-0.2))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-environmental-variable
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((clang (assoc-ref inputs "libclang")))
+               (setenv "LIBCLANG_PATH"
+                       (string-append clang "/lib")))
+            #t)))))))
+
 (define-public rust-clicolors-control
   (package
     (name "rust-clicolors-control")
@@ -412,6 +475,31 @@ depending on a large number of #[cfg] parameters.  Structured like an
 colorization.")
     (license license:expat)))
 
+(define-public rust-clippy
+  (package
+    (name "rust-clippy")
+    (version "0.0.302")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clippy" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1562x3sq9mgmc8j39gd34wqm7ybrdvpmj7cc1n450gwsawayw4fr"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-term" ,rust-term))))
+    (home-page "https://github.com/rust-lang/rust-clippy")
+    (synopsis
+      "A bunch of helpful lints to avoid common pitfalls in Rust.")
+    (description
+      "This package provides a bunch of helpful lints to avoid common pitfalls in Rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-cloudabi
   (package
     (name "rust-cloudabi")
@@ -529,6 +617,51 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-curl-sys
+  (package
+    (name "rust-curl-sys")
+    (version "0.4.20")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "curl-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "02542zmvl3fpdqf7ai4cqnamm4albx9j645dkjx5qr1myq8ax42y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libnghttp2-sys" ,rust-libnghttp2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys)
+        ("rust-winapi" ,rust-winapi))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-vcpkg" ,rust-vcpkg))
+        #:phases
+       (modify-phases %standard-phases
+        (add-after 'unpack 'find-openssl
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((openssl (assoc-ref inputs "openssl")))
+              (setenv "OPENSSL_DIR" openssl))
+            #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("nghttp2" ,nghttp2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/alexcrichton/curl-rust")
+    (synopsis "Native bindings to the libcurl library")
+    (description
+     "This package provides native bindings to the @code{libcurl} library.")
+    (license license:expat)))
+
 (define-public rust-data-encoding
   (package
     (name "rust-data-encoding")
@@ -582,6 +715,33 @@ hexadecimal, bas32, and base64.")
          (base32
           "17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
 
+(define-public rust-dirs
+  (package
+    (name "rust-dirs")
+    (version "1.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "dirs" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "02vigc566z5i6n9wr2x8sch39qp4arn89xhhrh18fhpm3jfc0ygn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/soc/dirs-rs")
+    (synopsis "Abstractions for standard locations for various platforms")
+    (description
+     "This package provides a tiny low-level library that provides
+platform-specific standard locations of directories for config, cache and other
+data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by
+the XDG base/user directory specifications on Linux, the Known Folder API on
+Windows, and the Standard Directory guidelines on macOS.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-discard
   (package
     (name "rust-discard")
@@ -641,6 +801,20 @@ floating-point primitives to an @code{io::Write}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-dtoa-0.2
+  (package
+    (inherit rust-dtoa)
+    (name "rust-dtoa")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "dtoa" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0g96cap6si1g6wi62hsdk2fnj3sf5vd4i97zj6163j8hhnsl3n0d"))))))
+
 (define-public rust-fallible-iterator
   (package
     (name "rust-fallible-iterator")
@@ -883,6 +1057,28 @@ featuring zero allocations, composability, and iterator-like interfaces.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-core-preview
+  (package
+    (name "rust-futures-core-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-core-preview" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1xaq8m609k6cz8xydwhwp8xxyxigabcw1w9ngycfy0bnkg7iq52b"))))
+    (build-system cargo-build-system)
+    (arguments
+     '(#:tests? #f)) ; The only tests are doc tests, which fail.
+    (home-page "https://rust-lang-nursery.github.io/futures-rs/")
+    (synopsis "Core traits and types in for the @code{futures} library.")
+    (description "This crate provides the core traits and types in for the
+@code{futures} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-futures-cpupool
   (package
     (name "rust-futures-cpupool")
@@ -928,6 +1124,30 @@ the computation on the threads themselves.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-sink-preview
+  (package
+    (name "rust-futures-sink-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-sink-preview" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r4d0gy73hdxkh5g1lrhl1kjnwp6mywjgcj70v0z78b921da42a3"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures-core-preview" ,rust-futures-core-preview))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs/")
+    (synopsis  "Asynchronous `Sink` trait for the futures-rs library")
+    (description
+     "This package provides the asynchronous @code{Sink} trait for the
+futures-rs library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-gcc
   (package
     (inherit rust-cc)
@@ -1208,6 +1428,20 @@ primitives to an @code{io::Write}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-itoa-0.1
+ (package
+   (inherit rust-itoa)
+   (name "rust-itoa")
+   (version "0.1.1")
+   (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "itoa" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18g7p2hrb3dk84z3frfgmszfc9hjb4ps9vp99qlb1kmf9gm8hc5f"))))))
+
 (define-public rust-jemalloc-sys
   (package
     (name "rust-jemalloc-sys")
@@ -1379,6 +1613,79 @@ the platform that libc is compiled for.")
     (license (list license:expat
                    license:asl2.0))))
 
+(define-public rust-libgit2-sys
+  (package
+    (name "rust-libgit2-sys")
+    (version "0.8.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libgit2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0y2mibmx7wy91s2kmb2gfb29mrqlqaxpy5wcwr8s1lwws7b9w5sc")) ))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libssh2-sys" ,rust-libssh2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config))
+      #:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'find-openssl
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((openssl (assoc-ref inputs "openssl")))
+              (setenv "OPENSSL_DIR" openssl))
+            (delete-file-recursively "libgit2")
+            (setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
+            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+            #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libgit2" ,libgit2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/rust-lang/git2-rs")
+    (synopsis "Native bindings to the libgit2 library")
+    (description
+     "This package provides native rust bindings to the @code{libgit2} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-libgit2-sys-0.7
+  (package
+    (inherit rust-libgit2-sys)
+    (name "rust-libgit2-sys")
+    (version "0.7.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libgit2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wcvg2qqra2aviasvqcscl8gb2rnjnd6h998wy5dlmf2bnriqi28"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-curl-sys" ,rust-curl-sys)
+        ("rust-libc" ,rust-libc)
+        ("rust-libssh2-sys" ,rust-libssh2-sys)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config))))
+   (inputs
+    `(("curl" ,curl)
+      ,@(package-inputs rust-libgit2-sys)))))
+
 (define-public rust-libloading
   (package
     (name "rust-libloading")
@@ -1406,6 +1713,77 @@ allows loading dynamic libraries (also known as shared libraries) as well as use
 functions and static variables these libraries contain.")
     (license license:isc)))
 
+(define-public rust-libssh2-sys
+  (package
+    (name "rust-libssh2-sys")
+    (version "0.2.12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libssh2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1zb6gsw795nq848nk5x2smzpfnn1s15wjlzjnvr8ihlz2l5x2549"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-libz-sys" ,rust-libz-sys)
+        ("rust-openssl-sys" ,rust-openssl-sys))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+      #:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'find-openssl
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((openssl (assoc-ref inputs "openssl")))
+              (setenv "OPENSSL_DIR" openssl))
+            (delete-file-recursively "libssh2")
+            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+            #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libssh2" ,libssh2)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/alexcrichton/ssh2-rs")
+    (synopsis "Native bindings to the libssh2 library")
+    (description
+     "This package provides native rust bindings to the @code{libssh2} library.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+
+(define-public rust-lock-api
+  (package
+    (name "rust-lock-api")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "lock_api" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0b24q9mh258xa52ap636q1sxz0j5vrnp0hwbbh7ddjka3wwz3sv2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-owning-ref" ,rust-owning-ref)
+        ("rust-scopeguard" ,rust-scopeguard-0.3))))
+    (home-page "https://github.com/Amanieu/parking_lot")
+    (synopsis "Wrappers to create fully-featured Mutex and RwLock types")
+    (description
+     "This package provides wrappers to create fully-featured @code{Mutex} and
+@code{RwLock} types.  It is compatible with @code{no_std}.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-log
   (package
     (name "rust-log")
@@ -1776,6 +2154,69 @@ types as proposed in RFC 1158.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-libnghttp2-sys
+  (package
+    (name "rust-libnghttp2-sys")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libnghttp2-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qr4lyh7righx9n22c7amlcpk906rn1jnb2zd6gdfpa3yi24s982"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc))
+       #:cargo-development-inputs
+       (("rust-cc" ,rust-cc))))
+    (inputs
+     `(("nghttp2" ,nghttp2)))
+    (home-page "https://github.com/alexcrichton/nghttp2-rs")
+    (synopsis "FFI bindings for libnghttp2 (nghttp2)")
+    (description
+     "This package provides FFI bindings for libnghttp2 (nghttp2).")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-libz-sys
+  (package
+    (name "rust-libz-sys")
+    (version "1.0.25")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "libz-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1gjycyl2283525abks98bhxa4r259m617xfm5z52p3p3c8ry9d9f"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc)
+        ("rust-cc" ,rust-cc)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-vendored-zlib
+           (lambda _
+             (delete-file-recursively "src/zlib")
+             #t)))))
+    (inputs
+     `(("pkg-config" ,pkg-config)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/rust-lang/libz-sys")
+    (synopsis "Bindings to the system libz library")
+    (description
+     "This package provides bindings to the system @code{libz} library (also
+known as zlib).")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-nodrop
   (package
     (name "rust-nodrop")
@@ -1923,6 +2364,24 @@ implementation (which is unstable / requires nightly).")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-num-traits-0.1
+  (package
+    (inherit rust-num-traits)
+    (name "rust-num-traits")
+    (version "0.1.43")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-traits" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits))))))
+
 (define-public rust-openssl-probe
   (package
     (name "rust-openssl-probe")
@@ -1944,6 +2403,67 @@ system for OpenSSL.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-openssl-src
+  (package
+    (name "rust-openssl-src")
+    (version "111.6.0+1.1.1d")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "openssl-src" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "172xh95hp7aygahah1940kg1dnx60c5m80cwj5hgi8x7x0fxmhmr"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs (("rust-cc" ,rust-cc))))
+    (home-page "https://github.com/alexcrichton/openssl-src-rs")
+    (synopsis "Source of OpenSSL for rust crates")
+    (description
+     "This package contains the source of OpenSSL and logic to build it.")
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-openssl-sys
+  (package
+    (name "rust-openssl-sys")
+    (version "0.9.49")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "openssl-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1168vivyqbzaxl48bvv9r1x714c03f5c1za8pv5x8fyj9gjxkypl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg)
+        ("rust-libc" ,rust-libc))
+       #:cargo-development-inputs
+       (("rust-autocfg" ,rust-autocfg)
+        ("rust-cc" ,rust-cc)
+        ("rust-openssl-src" ,rust-openssl-src)
+        ("rust-pkg-config" ,rust-pkg-config)
+        ("rust-vcpkg" ,rust-vcpkg))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'find-openssl
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((openssl (assoc-ref inputs "openssl")))
+               (setenv "OPENSSL_DIR" openssl))
+             #t)))))
+    (inputs
+     `(("openssl" ,openssl)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/sfackler/rust-openssl")
+    (synopsis "FFI bindings to OpenSSL")
+    (description
+     "This package provides FFI bindings to OpenSSL for use in rust crates.")
+    (license license:expat)))
+
 (define-public rust-owning-ref
   (package
     (name "rust-owning-ref")
@@ -2035,6 +2555,20 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-percent-encoding-1
+  (package
+    (inherit rust-percent-encoding)
+    (name "rust-percent-encoding")
+    (version "1.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "percent-encoding" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cgq08v1fvr6bs5fvy390cz830lq4fak8havdasdacxcw790s09i"))))))
+
 (define-public rust-permutohedron
   (package
     (name "rust-permutohedron")
@@ -2468,6 +3002,26 @@ system calls.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rustc-hash
+  (package
+    (name "rust-rustc-hash")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rustc-hash" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "114bf72466bl63i5hh8fgqfnhihs0w1m9c9jz505095agfixnvg0"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/rust-lang-nursery/rustc-hash")
+    (synopsis "Speedy, non-cryptographic hash used in rustc")
+    (description
+     "This package provides a speedy, non-cryptographic hash used in rustc.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-rustc-serialize
   (package
     (name "rust-rustc-serialize")
@@ -2904,6 +3458,26 @@ deeply recursive algorithms that may accidentally blow the stack.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-static-assertions
+  (package
+    (name "rust-static-assertions")
+    (version "0.3.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "static-assertions" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1lw33i89888yb3x29c6dv4mrkg3534n0rlg3r7qzh4p58xmv6gkz"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/nvzqz/static-assertions-rs")
+    (synopsis "Compile-time assertions for rust")
+    (description
+     "This package provides compile-time assertions to ensure that invariants
+are met.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-stdweb-internal-runtime
   (package
     (name "rust-stdweb-internal-runtime")
@@ -2991,6 +3565,20 @@ metrics.  It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
 and Jaro-Winkler.")
     (license license:expat)))
 
+(define-public rust-strsim-0.8
+  (package
+    (inherit rust-strsim)
+    (name "rust-strsim")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "strsim" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))))))
+
 (define-public rust-synstructure-test-traits
   (package
     (name "rust-synstructure-test-traits")
@@ -3096,6 +3684,30 @@ directories.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-term
+  (package
+    (name "rust-term")
+    (version "0.4.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "term" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wbh8ngqkqr3f6wz902yplf60bd5yapnckvrkgmzp5nffi7n8qzs"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys)
+        ("rust-winapi" ,rust-winapi))))
+    (home-page "https://github.com/Stebalien/term")
+    (synopsis "Terminal formatting library")
+    (description
+     "This package provides a terminal formatting library in rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-termcolor
   (package
     (name "rust-termcolor")
@@ -3552,6 +4164,28 @@ whitespace from a string.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-unreachable
+  (package
+    (name "rust-unreachable")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "unreachable" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0mps2il4xy2mjqc3appas27hhn2xmvixc3bzzhfrjj74gy3i0a1q"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-void" ,rust-void))))
+    (home-page "https://github.com/reem/rust-unreachable")
+    (synopsis "Unreachable code optimization hint in rust")
+    (description
+     "This package provides an unreachable code optimization hint in rust.")
+    (license (list license:asl2.0
+                   license:expat))))
+
 (define-public rust-unsafe-any
   (package
     (name "rust-unsafe-any")
@@ -3787,7 +4421,7 @@ in Rust.")
     (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
+such as those often used in Windows API or other FFI libraries.  Both UTF-16 and
 UTF-32 types are provided, including support for malformed encoding.")
     (license (list license:asl2.0
                    license:expat))))
diff --git a/gnu/packages/datamash.scm b/gnu/packages/datamash.scm
index 81b0069aab..ac1b71e63b 100644
--- a/gnu/packages/datamash.scm
+++ b/gnu/packages/datamash.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,7 +29,7 @@
 (define-public datamash
   (package
     (name "datamash")
-    (version "1.4")
+    (version "1.5")
     (source
      (origin
       (method url-fetch)
@@ -37,7 +37,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "0aj7wvv14s2fsf2rl49mqhxdagy8cbz6rz4xyi7bkg2nahnxsi7s"))))
+        "1b91pbdarnfmbhid8aa2f50k0fln8n7pg62782b4y0jlzvaljqi2"))))
     (native-inputs
      `(("which" ,which)                 ;for tests
        ("perl" ,perl)))                 ;for help2man
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
new file mode 100644
index 0000000000..15d5a5787e
--- /dev/null
+++ b/gnu/packages/diffoscope.scm
@@ -0,0 +1,279 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages diffoscope)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages acl)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages android)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bootloaders)
+  #:use-module (gnu packages cdrom)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages dbm)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages mono)
+  #:use-module (gnu packages ocaml)
+  #:use-module (gnu packages package-management)
+  #:use-module (gnu packages patchutils)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages statistics)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages web)
+  #:use-module (guix build-system python)
+  #:use-module (guix gexp)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match))
+
+(define-public diffoscope
+  (let ((version "125"))
+    (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
+                  "02kwisp9j63w27hhcwpdhg66dgxzz61q4fcyfz8z4hwlz6r0gyqy"))))
+      (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',") ""))))
+                    ;; Patch in support for known tools
+                    (add-after 'unpack 'add-known-tools
+                      (lambda _
+                        (substitute* "diffoscope/external_tools.py"
+                          (("'arch': 'enjarify'},")
+                           "'arch': 'enjarify', 'guix': 'enjarify'},"))
+                        (substitute* "diffoscope/external_tools.py"
+                          (("'arch': 'python-jsbeautifier'},")
+                           "'arch': 'python-jsbeautifier', 'guix': 'python-jsbeautifier'},"))
+                        (substitute* "diffoscope/external_tools.py"
+                          (("'arch': 'wabt'},")
+                           "'arch': 'wabt', 'guix': 'wabt'},"))))
+                    ;; 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))
+                    ;; Test is dynamically generated and may have false
+                    ;; negatives with different ocaml versions.  Further
+                    ;; background in: https://bugs.debian.org/939386
+                    (add-after 'unpack 'remove-ocaml-test
+                      (lambda _
+                        (substitute* "tests/comparators/test_ocaml.py"
+                          (("def test_diff.differences.:")
+                           "def skip_test_diff(differences):"))
+                        #t))
+                    (add-after 'unpack 'skip-elf-tests
+                      ;; FIXME: libmix_differences test added in 125, and is
+                      ;; failing, need to explore why...
+                      (lambda _
+                        (substitute* "tests/comparators/test_elf.py"
+                          (("def test_libmix_differences.libmix_differences.:")
+                           "def skip_test_libmix_differences(libmix_differences):"))
+                        #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 may need needs write access to tests
+                        ;; directory
+                        (for-each make-file-writable (find-files "tests"))
+                        #t))
+                    (add-before 'check 'delete-failing-test
+                      (lambda _
+                        ;; this requires /sbin to be on the path
+                        (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)
+                       ("python-binwalk" ,python-binwalk)
+                       ;; test suite skips tests when tool is missing
+                       ,@(match (%current-system)
+                                ;; ghc is only available on x86 currently.
+                                ((or "x86_64-linux" "i686-linux")
+                                 `(("ghc" ,ghc)))
+                                (_
+                                 `()))
+                       ,@(match (%current-system)
+                                ;; openjdk and dependent packages are only
+                                ;; available on x86_64 currently.
+                                ((or "x86_64-linux")
+                                 `(("enjarify" ,enjarify)
+                                   ;; no unversioned openjdk available
+                                   ("openjdk:jdk" ,openjdk12 "jdk")
+                                   ))
+                                (_
+                                 `()))
+                       ("abootimg" ,abootimg)
+                       ("bdb" ,bdb)
+                       ("binutils" ,binutils)
+                       ("bzip2" ,bzip2)
+                       ("cdrtools" ,cdrtools)
+                       ("colord" ,colord)
+                       ("cpio" ,cpio)
+                       ("docx2txt" ,docx2txt)
+                       ("dtc" ,dtc)
+                       ("e2fsprogs" ,e2fsprogs)
+                       ("ffmpeg" ,ffmpeg)
+                       ("gettext" ,gettext-minimal)
+                       ("ghostscript" ,ghostscript)
+                       ("giflib:bin" ,giflib "bin")
+                       ("gnumeric" ,gnumeric)
+                       ("gnupg" ,gnupg)
+                       ("imagemagick" ,imagemagick)
+                       ("libarchive" ,libarchive)
+                       ("llvm" ,llvm)
+                       ("lz4" ,lz4)
+                       ("mono" ,mono)
+                       ("ocaml" ,ocaml)
+                       ("odt2txt" ,odt2txt)
+                       ("openssh" ,openssh)
+                       ("pgpdump" ,pgpdump)
+                       ("poppler" ,poppler)
+                       ("python-jsbeautifier" ,python-jsbeautifier)
+                       ("r-minimal" ,r-minimal)
+                       ("rpm" ,rpm)
+                       ("sng" ,sng)
+                       ("sqlite" ,sqlite)
+                       ("squashfs-tools" ,squashfs-tools)
+                       ("tcpdump" ,tcpdump)
+                       ("unzip" ,unzip)
+                       ("wabt" ,wabt)
+                       ("xxd" ,xxd)
+                       ("xz" ,xz)
+                       ("zip" ,zip)))
+      (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+))))
+
+(define-public trydiffoscope
+ (package
+   (name "trydiffoscope")
+   (version "67.0.1")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
+            (commit version)))
+      (file-name (git-file-name name version))
+      (sha256
+       (base32
+        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((share (string-append (assoc-ref outputs "out") "/share/")))
+               (mkdir-p (string-append share "/man/man1/" ))
+               (invoke "rst2man.py"
+                       "trydiffoscope.1.rst"
+                       (string-append share "/man/man1/trydiffoscope.1"))
+               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
+               (install-file "./README.rst"
+                          (string-append share "/doc/" ,name "-" ,version)))
+             #t)))))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("python-docutils" ,python-docutils)))
+    (build-system python-build-system)
+    (home-page "https://try.diffoscope.org")
+    (synopsis "Client for remote diffoscope service")
+    (description "This is a client for the @url{https://try.diffoscope.org,
+remote diffoscope service}.
+
+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.
+
+Results are displayed by default, stored as local text or html files, or made
+available via a URL on @url{https://try.diffoscope.org}.  Results stored on the
+server are purged after 30 days.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index ae2e5cf8fa..5f3686347d 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -109,7 +109,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.14.5")
+    (version "9.14.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -117,7 +117,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     "/bind-" version ".tar.gz"))
               (sha256
                (base32
-                "0ic0k0kpavwnbyf10rwx6yypxg66f65fprwc0dbmp61xp0n6gl0j"))))
+                "1zpd47ckn5lf4qbscfkj7krngwn2gwsp961v5401h3lhxm0a0rw9"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
@@ -373,14 +373,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.9.2")
+    (version "1.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32 "15bbrczibap30db8a1pmqhvjbmkxms39hwiivby7f4j5rz2wwykg"))))
+        (base32 "1ykdy62sgzv33ggkmzwx2h0ifm7hyyxyfkb4zckv7gz4f28xsm8v"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index 2a1d99452f..88ada71aea 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -24,7 +24,7 @@
 (define-module (gnu packages elixir)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
-  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages erlang)
@@ -34,15 +34,16 @@
   (package
     (name "elixir")
     (version "1.8.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/elixir-lang/elixir"
-                                  "/archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0ddqxw24zdqlg7glzk22m7qjal8f18divzp364a6gi1bv6rg16yg"))
-	      (patches (search-patches "elixir-path-length.patch"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/elixir-lang/elixir.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1n77cpcl2b773gmj3m9s24akvj9gph9byqbmj2pvlsmby4aqwckq"))
+       (patches (search-patches "elixir-path-length.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -51,7 +52,11 @@
                                          (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'replace-paths
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
+         (add-after 'make-git-checkout-writable 'replace-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (substitute* '("lib/elixir/lib/system.ex"
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 6b9027df8a..488712bd48 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -53,6 +53,7 @@
 ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
+;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -557,16 +558,11 @@ handful of functions that are not resource-specific.")
     (license license:gpl3+)))
 
 (define-public emacs-scribble-mode
-  (let ((commit "34e9e5edb921813b6483e0fefa848efb6ee4b314")
-        (version "0.0")
-        (revision 0))
+  (let ((commit "217945d54de5e4bb207033f2116baa28f5c5ecf2")
+        (revision "2"))
     (package
       (name "emacs-scribble-mode")
-      (version (if (zero? revision)
-                   version
-                   (string-append version "-"
-                                  (number->string revision)
-                                  "." (string-take commit 7))))
+      (version (git-version "0.1" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -574,7 +570,7 @@ handful of functions that are not resource-specific.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0598byqpz2q6yi2q4dwd77jj9z3n99z34d3an51s9m2za0nh1qvp"))))
+                  "1s5ccw1a5ack01wd94ywfcrar9j98agchwdh30q7iyxr0d2z4sii"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/emacs-pe/scribble-mode")
       (synopsis "Emacs mode for editing the Scribble documentation syntax.")
@@ -613,8 +609,8 @@ from within Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-unpackaged-el
-  (let ((commit "f4df7f8dfea715e893b2223adda32545803f5cce")
-        (revision "1"))
+  (let ((commit "c0d58cf81e531b2b6fa1bd5dd612dc1b93d4d186")
+        (revision "2"))
     (package
       (name "emacs-unpackaged-el")
       (version (git-version "0" revision commit))
@@ -627,9 +623,7 @@ from within Emacs.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1yf3zrgqfhnr0az8gn1kqqwnhfi3nc0vbjkcagwcqwk3sp1jda86"))
-         (patches
-          (search-patches "emacs-unpackaged-req.patch"))))
+           "0y3sgvd51l4pb3acps92bazfk49da6nim1f1hyxzy1ravg4kbw83"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -637,6 +631,14 @@ from within Emacs.")
          ("emacs-s" ,emacs-s)
          ("emacs-hydra" ,emacs-hydra)
          ("emacs-use-package" ,emacs-use-package)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'require-hydra
+             (lambda _
+               (substitute* "unpackaged.el"
+                 ((";;; Code:") ";;; Code:\n(require 'hydra)"))
+               #t)))))
       (home-page "https://github.com/alphapapa/unpackaged.el")
       (synopsis "Useful snippets of Emacs Lisp code")
       (description "This package provides Emacs Lisp utilities for a variety
@@ -738,8 +740,8 @@ programs.")
   (deprecated-package "haskell-mode" emacs-haskell-mode))
 
 (define-public emacs-dante
-  (let ((commit "149dded24ca9cdff09a3d859e4b62638db4aadda")
-        (revision "1"))
+  (let ((commit "a25ae9e5b5425cffdd88d498777e90ea8655fa37")
+        (revision "2"))
     (package
       (name "emacs-dante")
       (version (git-version "1.5" revision commit))
@@ -750,7 +752,7 @@ programs.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0i7kj3d6pfys6si9va5f36qzifyac9mahdl0qh40rya9m0syrkla"))
+                  "1ziw3snbs2z2cg8a3jbyjd48qkgrkzs4bh8lrbs0h2c87nzldvhd"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -2125,15 +2127,16 @@ a command.")
 (define-public emacs-olivetti
   (package
     (name "emacs-olivetti")
-    (version "1.5.7")
+    (version "1.8.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://stable.melpa.org/packages/olivetti-"
-                    version ".el"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rnkn/olivetti.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yj2ylg46q0pw1xzlv2b0fv9x8p56x25284s9v2smwjr4vf0nwcj"))))
+                "0ba30swqxxbpa8866chymywnahby1hk670zzkz44q49328i2wksj"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/rnkn/olivetti")
     (synopsis "Emacs minor mode for a nice writing environment")
@@ -2701,7 +2704,7 @@ in Lisp modes.")
        `(("emacs-dash" ,emacs-dash)))
       (home-page "https://github.com/Fuco1/litable/")
       (synopsis "Dynamic evaluation replacement with Emacs")
-      (description "This packages provides dynamic evaluation in Emacs.")
+      (description "This package provides dynamic evaluation in Emacs.")
       (license license:gpl3+))))
 
 (define-public emacs-string-inflection
@@ -3551,6 +3554,29 @@ completion candidate when using the Company text completion framework.")
 @code{company-mode} allowing for completion of common math symbols.")
       (license license:gpl3+))))
 
+(define-public emacs-compdef
+  (let ((commit "fc08a9b049c3718fc7d6c6ee2140759aff031bc9")
+        (revision "1"))
+    (package
+      (name "emacs-compdef")
+      (version (git-version "0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.com/jjzmajic/compdef.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1dwf4rlj19d80yp656c7nkp6hb3mabv808r6ix3hpv6rjjs38vhl"))))
+      (build-system emacs-build-system)
+      (home-page "https://gitlab.com/jjzmajic/compdef")
+      (synopsis "Set local completion backends")
+      (description "This package provides a function to cleanly set local
+completion backends according to mode, and integrates with
+@code{use-package}.")
+      (license license:gpl3+))))
+
 (define-public emacs-nswbuff
   (let ((commit "362da7f3687e2eb5bb11667347de85f4a9d002bc")
         (revision "1"))
@@ -3713,6 +3739,11 @@ on context.")
        ("emacs-company" ,emacs-company)
        ("emacs-s" ,emacs-s)
        ("emacs-dash" ,emacs-dash)))
+    (native-inputs
+     `(("emacs-buttercup" ,emacs-buttercup)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("buttercup" "-L" ".")))
     (home-page "https://github.com/tigersoldier/company-lsp")
     (synopsis "Completion for @code{lsp-mode}")
     (description
@@ -4166,6 +4197,8 @@ sgml/html integration, and indentation (working with sgml).")
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-company" ,emacs-company)))
+      (arguments
+       `(#:include (cons "^tools\\/" %default-include)))
       (home-page "https://github.com/iquiw/company-cabal/")
       (synopsis "Company completion for Haskell Cabal files")
       (description
@@ -4297,8 +4330,8 @@ started with 20 minutes.  All values are customizable.")
       (license license:gpl3+))))
 
 (define-public emacs-org-sidebar
-  (let ((commit "ed951d1e0d8b7e65ed35797403fd3e8c88f507f5")
-        (revision "1"))
+  (let ((commit "b2a5a69b1ebbab63b55e7d1a9453f385624a642c")
+        (revision "2"))
     (package
       (name "emacs-org-sidebar")
       (version (git-version "0.1" revision commit))
@@ -4310,7 +4343,7 @@ started with 20 minutes.  All values are customizable.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "01sf8v53pjsy80fzwmj2n8rp2z5gsnpyld0fm6j3bdv213clp69y"))))
+          (base32 "0dajwg92kj7998xl0x35dlqwdhgwjcwxa726kf4f3wgv1azpyff6"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -4590,15 +4623,16 @@ board and goal value can be customized.")
 (define-public emacs-base16-theme
   (package
     (name "emacs-base16-theme")
-    (version "2.1")
+    (version "2.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://stable.melpa.org/packages/base16-theme-"
-                           version ".tar"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/belak/base16-emacs.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0z6hrwz2jlz6jbr381rcqcqvx6hss5cad352klx07rark7zccacj"))))
+        (base32 "01w89g413s1da6rf94y1xnhw79cjy2bqb01yfjs58cy492cm0vr6"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/belak/base16-emacs")
     (synopsis "Base16 color themes for Emacs")
@@ -4867,7 +4901,7 @@ after buffer changes.")
 (define-public emacs-realgud
   (package
     (name "emacs-realgud")
-    (version "1.5.0")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
@@ -4876,7 +4910,7 @@ after buffer changes.")
              (commit version)))
        (sha256
         (base32
-         "0xnick9016wxrgi8v0lycvxhyz8l2k4nfvdpjc5yq476vwrjfzbz"))
+         "1d3s23jk0i34wpyxfajydgyyvsxnpbqrfl0mgydsq7zw2c75ylnq"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (arguments
@@ -4997,8 +5031,8 @@ automatically.")
   ;; The latest release version introduced a new feature, swiper-isearch, that
   ;; generally works well but had some noticeable bugs; this later commit
   ;; includes fixes for several of them.
-  (let ((commit "d3e4514fd72f217c704ae18afdf711bb9036a04d")
-        (revision "1"))
+  (let ((commit "79333e9edfee38ec3b367c33711a68bdf7783259")
+        (revision "2"))
     (package
       (name "emacs-ivy")
       (version (git-version "0.12.0" revision commit))
@@ -5011,7 +5045,7 @@ automatically.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "142axxc6vsl14cfyvzj9csiykxdn7vhw88fy955hzx7av4qfqg4x"))))
+           "0dyclc51sprhmr5fi4lylhwsrn8v1jgyblwk9ly60jj84lj6278z"))))
       (build-system emacs-build-system)
       (arguments
        `(#:phases
@@ -5023,11 +5057,20 @@ automatically.")
                  (with-directory-excursion "doc"
                    (invoke "makeinfo" "ivy.texi")
                    (install-file "ivy.info" info)
-                   #t)))))))
+                   #t))))
+           (add-before 'check 'make-dummy-git-directory
+             (lambda _
+               (mkdir-p ".git")))
+           (add-after 'check 'delete-dummy-git-directory
+             (lambda _
+               (delete-file-recursively ".git"))))
+         #:tests? #t
+         #:test-command '("make" "test")))
       (propagated-inputs
        `(("emacs-hydra" ,emacs-hydra)))
       (native-inputs
-       `(("texinfo" ,texinfo)))
+       `(("texinfo" ,texinfo)
+         ("emacs-wgrep" ,emacs-wgrep)))
       (home-page "http://oremacs.com/swiper/")
       (synopsis "Incremental vertical completion for Emacs")
       (description
@@ -5140,6 +5183,9 @@ show icons as well.")
        (sha256
         (base32 "09qdni1s74i5pv8741szl5g4ynj8fxn0x65qmwa9rmfkbimnc0fs"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("make" "test")))
     (home-page "https://github.com/abo-abo/avy")
     (synopsis "Tree-based completion for Emacs")
     (description
@@ -5156,55 +5202,62 @@ windows.")
     (license license:gpl3+)))
 
 (define-public emacs-ace-window
-  (package
-    (name "emacs-ace-window")
-    (version "0.9.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/abo-abo/ace-window.git")
-             (commit version)))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "07mcdzjmgrqdvjs94f2n5bkrf5vrq2fwzz256wbm3wzqxqkfy1q6"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-avy" ,emacs-avy)))
-    (home-page "https://github.com/abo-abo/ace-window")
-    (synopsis "Quickly switch windows in Emacs")
-    (description
-     "@code{ace-window} is meant to replace @code{other-window}.
+  ;; last release version is from 2015
+  (let ((commit "a5344925e399e1f015721cda6cf5db03c90ab87a")
+        (revision "1"))
+    (package
+      (name "emacs-ace-window")
+      (version (git-version "0.9.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/abo-abo/ace-window.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "18jm8gfgnf6ja9aarws5650lw2zfi3wdwc5j8r5ijn5fcqhfy7rc"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-avy" ,emacs-avy)))
+      (home-page "https://github.com/abo-abo/ace-window")
+      (synopsis "Quickly switch windows in Emacs")
+      (description
+       "@code{ace-window} is meant to replace @code{other-window}.
 In fact, when there are only two windows present, @code{other-window} is
 called.  If there are more, each window will have its first character
 highlighted.  Pressing that character will switch to that window.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-iedit
-  (package
-    (name "emacs-iedit")
-    (version "0.9.9.9")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/victorhge/iedit.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "1pwkrm98vlpzsy5iwwfksdaz3zzyi7bvdf5fglhsn4ssf47p787g"))))
-    (build-system emacs-build-system)
-    (home-page "http://www.emacswiki.org/emacs/Iedit")
-    (synopsis "Edit multiple regions in the same way simultaneously")
-    (description
-     "This package is an Emacs minor mode and allows you to edit one
+  ;; Last release version was in 2016.
+  (let ((commit "e2c100cdd67b7d82835d281ac2cd1bf4f374bc8f")
+        (revision "1"))
+    (package
+      (name "emacs-iedit")
+      (version (git-version "0.9.9.9" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/victorhge/iedit.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0wr3w2id95wx2rma8n1ifjrv9rx37ly26ijc5zi58id0yrip3hnc"))))
+      (build-system emacs-build-system)
+      (home-page "http://www.emacswiki.org/emacs/Iedit")
+      (synopsis "Edit multiple regions in the same way simultaneously")
+      (description
+       "This package is an Emacs minor mode and allows you to edit one
 occurrence of some text in a buffer (possibly narrowed) or region, and
 simultaneously have other occurrences edited in the same way.
 
 You can also use Iedit mode as a quick way to temporarily show only the buffer
 lines that match the current text being edited.  This gives you the effect of
 a temporary @code{keep-lines} or @code{occur}.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-zoutline
   (package
@@ -5249,6 +5302,34 @@ navigate code in a tree-like fashion.")
        ("emacs-ivy" ,emacs-ivy)
        ("emacs-hydra" ,emacs-hydra)
        ("emacs-zoutline" ,emacs-zoutline)))
+    (native-inputs
+     `(("emacs-clojure-mode" ,emacs-clojure-mode)
+       ("emacs-undercover" ,emacs-undercover)))
+    (arguments
+     `(#:include (cons* "^lispy-clojure\\.clj$"
+                        "^lispy-python\\.py$"
+                        %default-include)
+       #:phases
+       ;; XXX: one failing test involving python evaluation
+       (modify-phases %standard-phases
+         (add-before 'check 'make-test-writable
+           (lambda _
+             (make-file-writable "lispy-test.el")
+             #t))
+         (add-before 'check 'remove-python-eval-test
+           (lambda _
+             (emacs-batch-edit-file "lispy-test.el"
+               `(progn
+                 (progn
+                  (goto-char (point-min))
+                  (re-search-forward
+                   "ert-deftest lispy-eval-python-str")
+                  (beginning-of-line)
+                  (kill-sexp))
+                 (basic-save-buffer)))
+             #t)))
+       #:tests? #t
+       #:test-command '("make" "test")))
     (synopsis "Modal S-expression editing")
     (description
      "Due to the structure of Lisp syntax it's very rare for the programmer
@@ -5277,6 +5358,25 @@ S-expression.")
        `(("emacs-evil" ,emacs-evil)
          ("emacs-lispy" ,emacs-lispy)))
       (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         ;; XXX: mysterious whitespace issue with one test
+         (modify-phases %standard-phases
+           (add-before 'check 'make-test-writable
+             (lambda _
+               (make-file-writable "lispyville-test.el")
+               #t))
+           (add-after 'make-test-writable 'remove-test
+             (lambda _
+               (emacs-batch-edit-file "lispyville-test.el"
+                 `(progn (progn (goto-char (point-min))
+                                (re-search-forward
+                                 "ert-deftest lispyville-comment-and-clone-dwim")
+                                (beginning-of-line)
+                                (kill-sexp))
+                         (basic-save-buffer))))))
+         #:tests? #t
+         #:test-command '("make" "test")))
       (synopsis "Minor mode for integrating Evil with lispy")
       (description
        "LispyVille's main purpose is to provide a Lisp editing environment
@@ -5287,12 +5387,11 @@ state and will work even without lispy being enabled.")
       (license license:gpl3+))))
 
 (define-public emacs-lpy
-  (let ((commit "553d28f7b6523ae5d44d34852ab770b871b0b0ad")
-        (version "0.1.0")
-        (revision "1"))
+  (let ((commit "dfd9a0fc8f84674fc669eab2942cfa038d7dc590")
+        (revision "2"))
     (package
       (name "emacs-lpy")
-      (version (git-version version revision commit))
+      (version (git-version "0.1.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -5301,7 +5400,7 @@ state and will work even without lispy being enabled.")
                (commit commit)))
          (sha256
           (base32
-           "0kl9b3gga18cwv5cq4db8i6b7waj6mp3h2l7qjnp7wq6dpvwhn0i"))
+           "15y1fvn1sjngpiqlq090hxqhmxp32f88rspfapwcisxa3hcg5r5a"))
          (file-name (git-file-name name version))))
       (propagated-inputs
        `(("emacs-zoutline" ,emacs-zoutline)
@@ -5610,6 +5709,9 @@ to all the other commands, too.")
        (sha256
         (base32 "0766bbr4piia9vfr4ivd2gwi8dxah654adv6h28ylz4q8xmfzm1b"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #t
+       #:test-command '("make" "test")))
     (home-page "https://github.com/mooz/js2-mode/")
     (synopsis "Improved JavaScript editing mode for Emacs")
     (description
@@ -5786,7 +5888,7 @@ If you want to mark a folder manually as a project just create an empty
 (define-public emacs-elfeed
   (package
     (name "emacs-elfeed")
-    (version "3.1.0")
+    (version "3.2.0")
     (source
      (origin
        (method git-fetch)
@@ -5795,7 +5897,7 @@ If you want to mark a folder manually as a project just create an empty
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bzpl6lc7kq9bph4bfz1fn19207blrnhjr2g7yinhn0nnnjmxi8i"))))
+        (base32 "0m0a35210pb4yf6m8mzaq6nkl9x6fphjjqyl3dzygnmmzxkc8aw2"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -6921,11 +7023,10 @@ surrounding lines.")
 
 (define-public emacs-evil-lion
   (let ((commit "6b03593f5dd6e7c9ca02207f9a73615cf94c93ab")
-        (version "0.0.2")
         (revision "1"))
     (package
       (name "emacs-evil-lion")
-      (version (git-version version revision commit))
+      (version (git-version "0.0.2" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -6938,6 +7039,9 @@ surrounding lines.")
            "1a162hynp0jcsn50c1w5a02mrw9w3q05c7lkqzqd25px3d0p772q"))))
       (build-system emacs-build-system)
       (propagated-inputs `(("emacs-evil" ,emacs-evil)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("make" "test")))
       (home-page "https://github.com/edkolev/evil-lion")
       (synopsis "Align operator for @code{evil-mode}")
       (description
@@ -7401,6 +7505,11 @@ procedures for emacs-lisp-mode.")
         (base32 "1p3qa7g0wa0wbviv2f8bda39cjys3naayk5xjm3nxxmqsyy8papx"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")))
     (home-page "https://github.com/Wilfred/ht.el")
     (synopsis "Hash table library for Emacs")
     (description
@@ -9279,30 +9388,29 @@ settings).")
     (license license:gpl3+)))
 
 (define-public emacs-hercules
-  (let ((commit "3345904a0dab4c7a4d4478f0766f1d9f5d1bb501")
-        (revision "1"))
-    (package
-      (name "emacs-hercules")
-      (version (git-version "0.2" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://gitlab.com/jjzmajic/hercules.el.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0cpq8h6l47nqhzch6snax5yrhxl8p4wn35q13ci35lj3iq8kmlk8"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-which-key" ,emacs-which-key)))
-      (home-page "https://gitlab.com/jjzmajic/hercules.el")
-      (synopsis "Call a chain of related commands without repeated prefix keys")
-      (description
-       "This package provides sticky-key-like functionality to obviate the
+  (package
+    (name "emacs-hercules")
+    (version "0.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/jjzmajic/hercules.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "19939pf5d6p2facmfhpyghx0vipb5k6ry3bmkmjfkj1zp132zfqf"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-which-key" ,emacs-which-key)))
+    (home-page "https://gitlab.com/jjzmajic/hercules.el")
+    (synopsis "Call a chain of related commands without repeated prefix keys")
+    (description
+     "This package provides sticky-key-like functionality to obviate the
 need for repeated prefix-key sequences, and can reuse existing keymaps. The
 list of commands is displayed in a handy popup.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-ws-butler
   (package
@@ -9424,8 +9532,8 @@ functions written in continuation-passing style.")
     (license license:gpl3+)))
 
 (define-public emacs-attrap
-  (let ((commit "3b092bb8f6755a97e6ecb7623b9d2dde58beba4a")
-        (revision "1"))
+  (let ((commit "18cd1f7832870a36c404e872fa83a271fe8e688d")
+        (revision "2"))
     (package
       (name "emacs-attrap")
       (version (git-version "1.0" revision commit))
@@ -9436,7 +9544,7 @@ functions written in continuation-passing style.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "05d32980saji8ja1pcv65l0s3dq7w0n5hpikbf246hciy1x067pp"))
+                  "078391949h0fgmshin8f79a1a595m06ig577rkgjqgngcp0d61l9"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -10166,7 +10274,7 @@ Feautures:
 (define-public emacs-evil-matchit
   (package
     (name "emacs-evil-matchit")
-    (version "2.3.3")
+    (version "2.3.4")
     (source
      (origin
        (method git-fetch)
@@ -10175,7 +10283,7 @@ Feautures:
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "04kllxd7vvziwqiff3vx60a0r6805wynsla73j8xkcz4yzk8q91r"))))
+        (base32 "1nflkmx08n3ya5vaipy1xg19hnqcp6f7ddsx9xjh5gl6ix2iz0az"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-evil" ,emacs-evil)))
@@ -11239,8 +11347,8 @@ as well as functions for navigating between these headings.")
 
 (define-public emacs-org-super-agenda
   ;; emacs-org-sidebar depends on a newer commit than the latest release version.
-  (let ((commit "375bde4ca72494ac88a2a9738754f047fe45cc4e")
-        (revision "1"))
+  (let ((commit "f0ee7ed9766d352d16a787707d35695b48cbf153")
+        (revision "2"))
     (package
       (name "emacs-org-super-agenda")
       (version (git-version "1.1.1" revision commit))
@@ -11252,11 +11360,12 @@ as well as functions for navigating between these headings.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0hrwf02fqjm0d9gj146ax67ib76093qpqh7066dcxj2gy20625yj"))))
+                  "1b1qi96x83acv2frl94i4frx46i82vipaa8mfwpzyj2gyq2bq5zf"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-org" ,emacs-org)
          ("emacs-dash" ,emacs-dash)
+         ("emacs-ts" ,emacs-ts)
          ("emacs-ht" ,emacs-ht)
          ("emacs-s" ,emacs-s)))
       (home-page "https://github.com/alphapapa/org-super-agenda")
@@ -11290,8 +11399,8 @@ tables of contents.")
     (license license:gpl3+)))
 
 (define-public emacs-ts
-  (let ((commit "93c074f2895a204e003e8c7f3033c37d6486fac8")
-        (revision "1"))
+  (let ((commit "395649a2f2ba79028331bb1fa9ec08b218950ff6")
+        (revision "2"))
     (package
       (name "emacs-ts")
       (version (git-version "0.1" revision commit))
@@ -11302,7 +11411,7 @@ tables of contents.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0lpyv78k04vbp9glnv14dawcfgi3m49847wlgwfmkdq5cr3fn735"))
+                  "02603wv66fplsigxd87jy23hrb5g9vigszcpdqrdv0ypaqaxlr3a"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -11893,6 +12002,12 @@ tramp.")
        (sha256
         (base32 "1gs95xnmnn8aa4794k7h8mw1sz1nfdh9v0caqj6yvnsdnwy74n5x"))))
     (build-system emacs-build-system)
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)
+       ("emacs-undercover" ,emacs-undercover)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")))
     (home-page "https://github.com/Wilfred/loop.el")
     (synopsis "Imperative loop structures for Emacs")
     (description "Loop structures familiar to users of other languages.  This
@@ -11921,6 +12036,12 @@ continue.")
        ("emacs-loop" ,emacs-loop)
        ("emacs-s" ,emacs-s)
        ("emacs-shut-up" ,emacs-shut-up)))
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)
+       ("emacs-undercover" ,emacs-undercover)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")))
     (home-page "https://github.com/Wilfred/elisp-refs")
     (synopsis "Find callers of elisp functions or macros")
     (description "Find references to functions, macros or variables.  Unlike a
@@ -11929,12 +12050,11 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
     (license license:gpl3+)))
 
 (define-public emacs-crux
-  (let ((commit "4f5c8fefd5a6aa52e128c4a0401cc86410d6ac8f")
-        (revision "1"))
+  (let ((commit "308f17d914e2cd79cbc809de66d02b03ceb82859")
+        (revision "2"))
     (package
       (name "emacs-crux")
-      (version (string-append "0.3.0" "-" revision "."
-                              (string-take commit 7)))
+      (version (git-version "0.3.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -11944,7 +12064,7 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1fdxvv25cs01sg6fmvmzxpzvs50i6v8n2jya60lbavxqqhi0sbxd"))))
+           "0rf84finwlvmy0xpgyljjvnrijlmkzjyw9rh97svgxp9c1rzfk0x"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/bbatsov/crux")
       (synopsis "Collection of useful functions for Emacs")
@@ -12179,8 +12299,8 @@ until the top-level form is no longer a macro call.")
     (license license:gpl3)))
 
 (define-public emacs-isearch-prop
-  (let ((commit "5e9dc44cf582d998aaa73ccd4d07cbda01248156")
-        (revision "1"))
+  (let ((commit "4a2765f835dd115d472142da05215c4c748809f4")
+        (revision "2"))
     (package
       (name "emacs-isearch-prop")
       (version (git-version "0" revision commit))
@@ -12193,7 +12313,7 @@ until the top-level form is no longer a macro call.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1xawppy705ybsgx566zvj8zk2aajq0sqvhvfs7nijqq32lx0a2zl"))))
+           "06gdk5m84q6pxwng8rjxny1zkll8f3m2x6lw4xyib2dvg7iaslh3"))))
       (build-system emacs-build-system)
       (home-page "https://www.emacswiki.org/emacs/isearch-prop.el")
       (synopsis "Extensions to @code{isearch.el}")
@@ -12205,10 +12325,11 @@ until the top-level form is no longer a macro call.")
       (license license:gpl3+))))
 
 (define-public emacs-company-lua
-  (let ((commit "0be8122f3adf57ad27953bf4b03545d6298d3da4"))
+  (let ((commit "29f6819de4d691e5fd0b62893a9f4fbc1c6fcb52")
+        (revision "2"))
     (package
       (name "emacs-company-lua")
-      (version (git-version "0.1" "1" commit))
+      (version (git-version "0.1" "2" commit))
       (source
        (origin
          (method git-fetch)
@@ -12218,13 +12339,15 @@ until the top-level form is no longer a macro call.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1d9i165apgmwns7b2fd5wcpjpkah3dyj20v5sb8ynvz6qhhr5r9c"))))
+           "0ny2dcc7c585p7v3j6q0rpkbj1qmf2ismy8a5020jpr585xvz0hh"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-company" ,emacs-company)
          ("emacs-s" ,emacs-s)
          ("emacs-f" ,emacs-f)
          ("emacs-lua-mode" ,emacs-lua-mode)))
+      (arguments
+       `(#:include (cons* "^lua\\/" %default-include)))
       (home-page "https://github.com/ptrv/company-lua")
       (synopsis "Company backend for Lua")
       (description
@@ -12671,6 +12794,12 @@ downloading manager for Emacs.")
        ("emacs-s" ,emacs-s)
        ("emacs-f" ,emacs-f)
        ("emacs-shut-up" ,emacs-shut-up)))
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)
+       ("emacs-undercover" ,emacs-undercover)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")))
     (home-page "https://github.com/Wilfred/helpful")
     (synopsis "More contextual information in Emacs help")
     (description "@code{helpful} is an alternative to the built-in Emacs help
@@ -12738,6 +12867,12 @@ and doesn't require memorisation of commands.
        ("emacs-f" ,emacs-f)
        ("emacs-spinner" ,emacs-spinner)
        ("emacs-shut-up" ,emacs-shut-up)))
+    (native-inputs
+     `(("emacs-ert-runner" ,emacs-ert-runner)
+       ("emacs-undercover" ,emacs-undercover)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("ert-runner")))
     (synopsis "Suggest Elisp functions that give the output requested")
     (description "Suggest.el will find functions that give the output
 requested.  It's a great way of exploring list, string and arithmetic
@@ -12904,10 +13039,11 @@ browse the phrases by the paper section and fill-in the blanks if required.")
       (license license:gpl3+))))
 
 (define-public emacs-auto-yasnippet
-  (let ((commit "d1ccfea87312c6dd8cf8501ab5b71b1d3d44d95b"))
+  (let ((commit "624b0d9711222073a2a3f2186e2605eb99fc83c9")
+        (revision "2"))
     (package
       (name "emacs-auto-yasnippet")
-      (version (git-version "0.3.0" "1" commit))
+      (version (git-version "0.3.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -12916,17 +13052,11 @@ browse the phrases by the paper section and fill-in the blanks if required.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1i8k2qiyzd5rq0zplk4xb5nfa5mp0ibxbzwqj6c7877waq7244xk"))))
+                  "15g8wi067f345xhpi0c12w0h04p4f4lpccwmdjdfj8hzfl4gyxy9"))))
       (build-system emacs-build-system)
       (arguments
-       '(#:phases
-         (modify-phases %standard-phases
-           (add-before 'install 'check
-             (lambda _
-               (invoke "emacs" "--batch"
-                       "-l" "auto-yasnippet.el"
-                       "-l" "auto-yasnippet-test.el"
-                       "-f" "ert-run-tests-batch-and-exit"))))))
+       '(#:tests? #t
+         #:test-command '("make" "test")))
       (propagated-inputs
        `(("emacs-yasnippet" ,emacs-yasnippet)))
       (home-page "https://github.com/abo-abo/auto-yasnippet/")
@@ -13136,10 +13266,11 @@ perform regression test for packages that provide font-lock rules.")
       (license license:gpl3+))))
 
 (define-public emacs-grep-context
-  (let ((commit "a17c57e66687a54e195e08afe776bdd60cb6c0a7"))
+  (let ((commit "5a4e3efdf775755c1bbefcfe4b461c1166d81d7d")
+        (revision "1"))
     (package
       (name "emacs-grep-context")
-      (version (git-version "0.1" "1" commit))
+      (version (git-version "0.1.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -13149,11 +13280,11 @@ perform regression test for packages that provide font-lock rules.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1nqfa6kjzjshww4hnwg1c0vcr90bdjihy3kmixq3c3jkvxg99b62"))))
+           "00q7l4a3c0ay6g5ff9bfa2qgkiswsyh4s6pqnpg0zpzhvv5710f5"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)))
-      (home-page "https://github.com/nashamri/academic-phrases")
+      (home-page "https://github.com/mkcms/grep-context")
       (synopsis "Increase context in compilation and grep buffers")
       (description
        "This package provides an Emacs package for more context in
@@ -13758,8 +13889,8 @@ systems.")
     (license license:gpl3+)))
 
 (define-public emacs-isearch+
-  (let ((commit "95e49af9dbf0254e095a11f115e101b52659520a")
-        (revision "1"))
+  (let ((commit "7c251b91a67bf914066e23e269ba52fda5b45f5f")
+        (revision "2"))
     (package
       (name "emacs-isearch+")
       (version (git-version "0" revision commit))
@@ -13772,7 +13903,7 @@ systems.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0xhd9zgknf4lvzyf4apirpd7spb1hbpzkvys00a7pkmd0vvahk0v"))))
+           "1w2799714jcdycjlxgs8lpmmz6dmzvcvqy8xwxhvmgpb60g4f2yr"))))
       (build-system emacs-build-system)
       (home-page "https://www.emacswiki.org/emacs/isearch+.el")
       (synopsis "Extensions to @code{isearch.el}")
@@ -14680,12 +14811,11 @@ viewing files with long lines.")
       (license license:gpl3+))))
 
 (define-public emacs-github-review
-  (let ((commit "9c3ffe30fba5d02e9951e76d1a5be2ed046663da")
-        (version "0.1")
-        (revision "1"))
+  (let ((commit "a13a3b4f1b6114a32af843971a145ab880f51232")
+        (revision "2"))
     (package
       (name "emacs-github-review")
-      (version (git-version version revision commit))
+      (version (git-version "0.1" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -14695,12 +14825,18 @@ viewing files with long lines.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "078rv6f2p3wrznhgvmkhd071bwy72007f5l2m2a0r1k2i3vbfaja"))))
+           "0injfpxzgfhmqalba845j5l5cdcxxqz43knhxwinf36g52nfabl0"))))
       (build-system emacs-build-system)
       (inputs
        `(("emacs-dash" ,emacs-dash)
          ("emacs-s" ,emacs-s)
          ("emacs-ghub" ,emacs-ghub)))
+      (native-inputs
+       `(("emacs-buttercup" ,emacs-buttercup)
+         ("emacs-undercover" ,emacs-undercover)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("buttercup" "-L" "test/github-review-test.el")))
       (home-page "https://github.com/charignon/github-review")
       (synopsis "Review GitHub pull requests within Emacs")
       (description "This package provides commands to pull in, comment on, and
@@ -14785,12 +14921,11 @@ Pandoc, the document-conversion tool.")
     (license license:bsd-3)))
 
 (define-public emacs-ccls
-  (let ((commit "2764ddd57b03646f0327ea680a954b4a67450aef")
-        (version "0.1")
-        (revision "1"))
+  (let ((commit "9061ebbf9d5ec3ee7e88dbd226c77017cf0447b1")
+        (revision "2"))
     (package
       (name "emacs-ccls")
-      (version (git-version version revision commit))
+      (version (git-version "0.1" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -14800,7 +14935,7 @@ Pandoc, the document-conversion tool.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "16427jvzhjy8kpvlgl3qzkzppv98124hkgi8q8pv1h7m46k9lhh3"))))
+           "106jh25ivq0ydiz37p51agk5zbpai7fv91pwn6dpqzsq5g281ls7"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -15762,21 +15897,22 @@ other frame parameters.")
       (license license:gpl3+))))
 
 (define-public emacs-general
-  (let ((commit "675050199b5a30d54a24b58a367db32c0bdc47f5"))
+  (let ((commit "f032c3a77079487d0ea563b17ee3e5b2fb084611")
+        (revision "2"))
     (package
       (name "emacs-general")
-      (version (git-version "0" "0" commit))
-      (home-page "https://github.com/noctuid/general.el")
+      (version (git-version "0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url (string-append home-page ".git"))
+                      (url "https://github.com/noctuid/general.el.git")
                       (commit commit)))
                 (sha256
                  (base32
-                  "175yyhzk57yk1sskxh3d2jzhrh2waiibbcfsll167qxr117yji5h"))
+                  "0lgh5z17ag5wvvnqwagvam29cp1n1vd50amn6df02xln80bsbllx"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
+      (home-page "https://github.com/noctuid/general.el")
       (synopsis "More convenient key definitions in emacs")
       (description "@code{general.el} provides a more convenient method for
 binding keys in emacs (for both evil and non-evil users).  Like
@@ -16440,6 +16576,33 @@ like @code{company}, @code{flycheck}, and @code{projectile}.")
 and code peeking.")
     (license license:gpl3+)))
 
+(define-public emacs-helm-lsp
+  (let ((commit "3a58ca4cfd94b9ab1e15e819d3b16ef568e8889b")
+        (revision "1"))
+    (package
+      (name "emacs-helm-lsp")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/emacs-lsp/helm-lsp.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0wh5zai3s17ss2q8wcdd6d87hv1h3nbyrxxs4js9cas8m6y2ssjv"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)
+         ("emacs-lsp-mode" ,emacs-lsp-mode)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/emacs-lsp/helm-lsp")
+      (synopsis "Convert keyboard macros to Emacs Lisp")
+      (description
+       "This package displays keyboard macros or latest interactive commands
+as Emacs Lisp.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-notmuch
   (package
     (name "emacs-helm-notmuch")
@@ -16571,8 +16734,8 @@ packages with a consistent way to use them.")
       (license license:gpl3+))))
 
 (define-public emacs-undo-propose-el
-  (let ((commit "21a5cdc8ebfe8113f7039867c4abb0197c0fe71c")
-        (revision "1"))
+  (let ((commit "47b7df0c97ad0099537d1ade21c4c52f0618a945")
+        (revision "2"))
     (package
       (name "emacs-undo-propose-el")
       (version (git-version "3.0.0" revision commit))
@@ -16585,7 +16748,7 @@ packages with a consistent way to use them.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "035hav4lfxwgikg3zpb4cz1nf08qfp27awl87dqbm2ly6d74lpny"))))
+           "078bs8lk9f0lklxqh15976fffayg5z5386y59nxxfhm27lmwgka9"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/jackkamm/undo-propose-el")
       (synopsis "Simple and safe navigation of @code{undo} history")
@@ -16675,12 +16838,11 @@ buffers.")
       (license license:gpl3+))))
 
 (define-public emacs-js2-refactor-el
-  (let ((commit "79124b3274c43ad1f9ec6205fa362576552db02f")
-        (version "0.9.0")
-        (revision "27"))
+  (let ((commit "d4c40b5fc86d3edd7c6a7d83ac86483ee1cb7a28")
+        (revision "2"))
     (package
       (name "emacs-js2-refactor-el")
-      (version (git-version version revision commit))
+      (version (git-version "0.9.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -16690,7 +16852,7 @@ buffers.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1wswhlpbd3airrhyncb9vblqigwnqg9n96z0iis8jnz37q2whica"))))
+           "08b25y3raz0p98zxk9xdd8nj9shqd6mzrqhbq1gg4cwsmi7h7ly1"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -16778,11 +16940,10 @@ parent directory using @code{Eshell}.")
 
 (define-public emacs-tco-el
   (let ((commit "482db5313f090b17ed22ccd856f0e141dc75afe6")
-        (version "0.3")
         (revision "1"))
     (package
       (name "emacs-tco-el")
-      (version (git-version version revision commit))
+      (version (git-version "0.3" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -16796,6 +16957,12 @@ parent directory using @code{Eshell}.")
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)))
+      (native-inputs
+       `(("emacs-ert-runner" ,emacs-ert-runner)
+         ("emacs-undercover" ,emacs-undercover)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("ert-runner")))
       (home-page "https://github.com/Wilfred/tco.el")
       (synopsis "Tail-call optimization for Emacs Lisp")
       (description "This package provides tail-call optimization for Emacs
@@ -16803,12 +16970,11 @@ Lisp functions that call themselves in tail position.")
       (license license:gpl3+))))
 
 (define-public emacs-equake
-  (let ((commit "ed15fd55cd4f2276161a6f712ed0b83cd10a8cdc")
-        (version "0.85")
-        (revision "1"))
+  (let ((commit "7eddc025ee61b83029363e22219af228b8c20681")
+        (revision "2"))
     (package
       (name "emacs-equake")
-      (version (git-version version revision commit))
+      (version (git-version "0.85" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -16818,7 +16984,7 @@ Lisp functions that call themselves in tail position.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "04kj88rlnn22gwmmv2gly2ibi6jka6l2cd4979pi6lhlvqqgjdnj"))))
+           "1c55pbqak3d02sw6z1139baxzy401b90g0gxzcc3j6sgplz6sc6w"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -16959,12 +17125,11 @@ invoked.")
     (license license:gpl3+)))
 
 (define-public emacs-prodigy-el
-  (let ((commit "701dccaa56de9e6a330c05bde33bce4f3b3d6a97")
-        (version "0.7.0")
-        (revision "28"))
+  (let ((commit "0a12eec1f001a4eef16b2c0c524f02f2647a4ff1")
+        (revision "2"))
     (package
       (name "emacs-prodigy-el")
-      (version (git-version version revision commit))
+      (version (git-version "0.7.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -16974,7 +17139,7 @@ invoked.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1vyvxawlayp2nra0q83146q2nzv8qwn5a4nj0sx1jc90a0a83vgj"))))
+           "02kysq57kqzg0zkhaf302ada9cp9spgp71z8vbdq4c7dl6x75h4g"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-dash" ,emacs-dash)
@@ -17109,12 +17274,11 @@ definition-jumping and type-checking on demand.")
       (license license:bsd-3))))
 
 (define-public emacs-rjsx-mode
-  (let ((commit "03dd8d1683501e81b58674d64c3032b7b718402c")
-        (version "0.4.0")
-        (revision "35"))
+  (let ((commit "0e7fa6b4facdec4f85a7a8865bdf59dfd57217b5")
+        (revision "2"))
     (package
       (name "emacs-rjsx-mode")
-      (version (git-version version revision commit))
+      (version (git-version "0.4" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -17124,10 +17288,13 @@ definition-jumping and type-checking on demand.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1kc44g9f38klpjklmz9n50a28nqv7prz6ck6ghdr6bnj1s98pb8a"))))
+           "0s0871sx3ch09kgvbcp9na4zdrfrda62xjq8m9knbq5vnj8q8qpi"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-js2-mode" ,emacs-js2-mode)))
+      (arguments
+       `(#:tests? #t
+         #:test-command '("make" "test")))
       (home-page "https://github.com/felipeochoa/rjsx-mode")
       (synopsis "Major mode for JSX files")
       (description "This package extends the parser of @code{js2-mode} to
@@ -17202,6 +17369,9 @@ previewed by scrolling up and down within a @code{dired} buffer.")
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ivy" ,emacs-ivy)))
+    (arguments
+     `(#:tests? #t
+       #:test-command '("make" "test")))
     (home-page "https://github.com/redguardtoo/counsel-etags")
     (synopsis "Fast @code{Ctags}/@code{Etags} solution with @code{ivy-mode}")
     (description "This package uses @code{ivy-mode} to facilitate navigating
@@ -17311,12 +17481,11 @@ to be examined using Ediff.")
     (license license:expat)))
 
 (define-public emacs-info-plus
-  (let ((commit "b837d710f7d58db586116cf6f75e75a9a074bc4b")
-        (version "5101")
-        (revision "55"))
+  (let ((commit "4a6b93c170169594e1e8ea60cd799a1a88a969da")
+        (revision "2"))
     (package
       (name "emacs-info-plus")
-      (version (git-version version revision commit))
+      (version (git-version "0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -17326,7 +17495,7 @@ to be examined using Ediff.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1knyjkdm4rcs3qrc51jllw46ph7ycq5zxnvl70ydchzfwava43h6"))))
+           "1xzmx7m1qbl3b1x6yq1db1a108xqaa64ljfv1hdw763zmy4kc6m0"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/emacsmirror/info-plus")
       (synopsis "Extensions to @file{info.el}")
@@ -18168,7 +18337,7 @@ JIRA issue servers.")
       (synopsis
        "Mode for fontification of ~/.ssh/config")
       (description
-       "This packages fontifies the ssh config keywords and creates
+       "This package fontifies the ssh config keywords and creates
 keybindings for skipping from host section to host section.")
       (license license:gpl3+))))
 
@@ -18241,14 +18410,13 @@ Emacs that integrate with major modes like Org-mode.")
     (version "2.3.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://stable.melpa.org/packages/elixir-mode-"
-             version
-             ".tar"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/elixir-editors/emacs-elixir.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "091cizxg1aw8bkj58y048mj020ssapjflav633z9bl6gmi10dy4v"))))
+        (base32 "06bi68x49v6f7flpz279mm4jpg31ll3s274givm3pvr8slcxs6xg"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-pkg-info" ,emacs-pkg-info)))
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
index cfec161784..bcf2507e86 100644
--- a/gnu/packages/enchant.scm
+++ b/gnu/packages/enchant.scm
@@ -33,7 +33,7 @@
 (define-public enchant
   (package
     (name "enchant")
-    (version "2.2.5")
+    (version "2.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/AbiWord/enchant/releases"
@@ -41,7 +41,7 @@
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0iqwzs11i9fvqdxv5kn0svcn2mzymn657qf3j66lg8dx1nh4xkpz"))))
+                "029smcna98hllgkm2gy94qa7qphxs4xaa8cdbg5kaaw16mhrf8hv"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static"
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c1c1b18ed3..bbd9151995 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
 ;;; Copyright © 2019 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -50,9 +51,11 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages fpga)
@@ -66,10 +69,12 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphics)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages linux)               ;FIXME: for pcb
   #:use-module (gnu packages m4)
@@ -84,6 +89,7 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages tbb)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls)
@@ -2214,3 +2220,214 @@ interactive modeler, OpenSCAD generates 3D models from a script, giving you
 full programmatic control over your models.")
     (home-page "https://www.openscad.org/")
     (license license:gpl2+)))
+
+(define-public freecad
+  (package
+    (name "freecad")
+    (version "0.18.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/FreeCAD/FreeCAD.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1ny29y0h8smg1bwi5yn4kcnyfprqh3v7v2z8837cmmhcwp8dr95m"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("graphviz" ,graphviz)
+       ("qttools" ,qttools)
+       ("pkg-config" ,pkg-config)
+       ("swig" ,swig)))
+    (inputs
+     `(("boost" ,boost)
+       ("coin3D" ,coin3D)
+       ("eigen" ,eigen)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("hdf5" ,hdf5-1.10)
+       ("libarea" ,libarea)
+       ("libmedfile" ,libmedfile)
+       ("libspnav" ,libspnav)
+       ("libxi" ,libxi)
+       ("libxmu" ,libxmu)
+       ("openmpi" ,openmpi)
+       ("opencascade-occt" ,opencascade-occt)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pyside-2" ,python-pyside-2)
+       ("python-pyside-2-tools" ,python-pyside-2-tools)
+       ("python-shiboken-2" ,python-shiboken-2)
+       ("python-wrapper" ,python-wrapper)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ("qtxmlpatterns" ,qtxmlpatterns)
+       ;; qtwebkit is optional. We remove it currently, because it takes
+       ;; much time to compile and substitutes are often unavailable
+       ;;("qtwebkit" ,qtwebkit)
+       ("tbb" ,tbb)
+       ("vtk" ,vtk)
+       ("xerces-c" ,xerces-c)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f
+       #:configure-flags
+       (list
+        "-DBUILD_QT5=ON"
+        (string-append "-DCMAKE_INSTALL_LIBDIR="
+                       (assoc-ref %outputs "out") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'restore-pythonpath
+           (lambda _
+             (substitute* "src/Main/MainGui.cpp"
+               (("_?putenv\\(\"PYTHONPATH=\"\\);") ""))
+             #t))
+         (add-after 'install 'wrap-pythonpath
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/FreeCAD")
+                 (list "PYTHONPATH"
+                       'prefix (list (getenv "PYTHONPATH")))))
+             #t)))))
+    (home-page "https://www.freecadweb.org/")
+    (synopsis "Your Own 3D Parametric Modeler")
+    (description
+     "FreeCAD is a general purpose feature-based, parametric 3D modeler for
+CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and
+product design but also fits a wider range of uses in engineering, such as
+architecture or other engineering specialties.  It is 100% Open Source (LGPL2+
+license) and extremely modular, allowing for very advanced extension and
+customization.")
+    (license
+     (list
+      license:lgpl2.1+
+      license:lgpl2.0+
+      license:gpl3+
+      license:bsd-3))))
+
+(define-public libmedfile
+  (package
+    (name "libmedfile")
+    (version "4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://files.salome-platform.org/Salome/other/med-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "017h9p0x533fm4gn6pwc8kmp72rvqmcn6vznx72nkkl2b05yjx54"))))
+    (build-system cmake-build-system)
+    (inputs `(("hdf5" ,hdf5-1.10)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-test-output
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (delete-file-recursively
+                (string-append out "/bin/testc"))
+               #t))))))
+    (home-page "https://www.salome-platform.org")
+    (synopsis "Library to read and write MED files")
+    (description
+     "The purpose of the MED module is to provide a standard for storing and
+recovering computer data associated to numerical meshes and fields, and to
+facilitate the exchange between codes and solvers.
+
+The persistent data storage is based upon HDF format (like CGNS, a standard
+developed by Boeing and NASA in the area of Computational Fluid Dynamic).
+
+MED also provides structures to hold data on meshes and fields.  These
+structures are exchanged between solvers, hide the communication level (CORBA
+or MPI), and offer persistence (read/write in .med files).
+
+The main benefit of a common exchange format is reduced complexity of code
+coupling.  It also allows sharing such high level functionalities as
+computation of nodal connectivity of sub-elements (faces and edges),
+arithmetic operations on fields, entity location functionalities, and
+interpolation toolkit.")
+    (license license:gpl3+)))
+
+(define-public libarea
+  (let ((revision "1")
+        (commit "8f8bac811c10f1f01fda0d742a18591f61dd76ee"))
+    (package
+      (name "libarea")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url "https://github.com/Heeks/libarea.git")
+                             (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0pvqz6cabxqdz5y26wnj6alkn8v5d7gkx0d3h8xmg4lvy9r3kh3g"))))
+      (build-system gnu-build-system)
+      (inputs `(("boost" ,boost)
+                ("python-wrapper" ,python-wrapper)))
+      (native-inputs
+       `(("cmake" ,cmake)))
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'configure 'cmake-configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (cmake (assoc-ref inputs "cmake")))
+                 (mkdir-p "build")
+                 (invoke "cmake"
+                         (string-append "-DCMAKE_INSTALL_PREFIX=" out)))))
+           (delete 'configure))))
+      (home-page "https://github.com/Heeks/libarea")
+      (synopsis
+       "Library and python module for pocketing and profiling operations")
+      (description
+       "Area is a CAM-related software for pocketing operation.
+
+This project provides library and associated python-module to compute pocket
+operations.")
+      (license (list
+                license:bsd-3
+                license:gpl3+)))))
+
+(define-public libspnav
+  (package
+    (name "libspnav")
+    (version "0.2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/FreeSpacenav/libspnav.git")
+                    (commit (string-append "libspnav-" version))))
+              (sha256
+               (base32
+                "098h1jhlj87axpza5zgy58prp0zn94wyrbch6x0s7q4mzh7dc8ba"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)))
+    (arguments `(#:tests? #f))
+    (home-page "http://spacenav.sourceforge.net/")
+    (synopsis
+     "Library for communicating with spacenavd or 3dxsrv")
+    (description
+     "The libspnav library is provided as a replacement of the magellan
+library.  It provides a cleaner, and more orthogonal interface.  libspnav
+supports both the original X11 protocol for communicating with the driver, and
+the new alternative non-X protocol.  Programs that choose to use the X11
+protocol, are automatically compatible with either the free spacenavd driver
+or the official 3dxserv, as if they were using the magellan SDK.
+
+Also, libspnav provides a magellan API wrapper on top of the new API.  So, any
+applications that were using the magellan library, can switch to libspnav
+without any changes.  And programmers that are familliar with the magellan API
+can continue using it with a free library without the restrictions of the
+official SDK.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index cc9f43e935..2ff37d496f 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -65,7 +65,7 @@
 (define-public efl
   (package
     (name "efl")
-    (version "1.22.4")
+    (version "1.22.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -73,7 +73,7 @@
                     version ".tar.xz"))
               (sha256
                (base32
-                "084ihxy6g86yczhln5vn1amxi4qzqhvk4lpz9005kx92i6wh4h25"))))
+                "1cjk56z0whpzcqwg3xdq23kyp1g83xa67m9dlp7ywmb36bn4ca59"))))
     (outputs '("out"       ; 53 MB
                "include")) ; 21 MB
     (build-system gnu-build-system)
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 5697664491..48d1c0da6b 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -109,14 +109,14 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
 (define-public gdb-8.3
   (package
     (inherit gdb-8.2)
-    (version "8.3")
+    (version "8.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdb/gdb-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0bnpzz0rl672xg5547q5qck2sxi6cnyixmk8bbb4gifw17ipwbw0"))))))
+                "1i2pjwaafrlz7wqm40b4znr77ai32rjsxkpl2az38yyarpbv8m8y"))))))
 
 (define-public gdb
   ;; This is the fixed version that packages depend on.  Update it rarely
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 03550b6fa8..b7e375e5d8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7259,9 +7259,9 @@ GLib/GObject code.")
     (version "3.26.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/libgnomekbd/"
                                   (version-major+minor version)  "/"
-                                  name "-" version ".tar.xz"))
+                                  "libgnomekbd-" version ".tar.xz"))
               (sha256
                (base32
                 "0y962ykn3rr9gylj0pwpww7bi20lmhvsw6qvxs5bisbn2mih5jpp"))))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index b3518efc5f..1b94b66b51 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
+;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1060,3 +1061,49 @@ For example, two shapes can be combined by uniting them, by intersecting them,
 or by subtracting one shape from the other.")
       (home-page "http://www.opencsg.org/")
       (license license:gpl2))))
+
+(define-public coin3D
+  (package
+    (name "coin3D")
+    (version "4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://bitbucket.org/Coin3D/coin/downloads/coin-"
+             version "-src.zip"))
+       (sha256
+        (base32
+         "1mqwlqzvc9ydfxi0bfskwlil16mbnkphfz36p0zl2mvw6h05aqh0"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (for-each delete-file
+                     '("cfg/csubst.exe"
+                       "cfg/wrapmsvc.exe"))
+           #t))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("graphviz" ,graphviz)))
+    (inputs
+     `(("boost" ,boost)
+       ("freeglut" ,freeglut)
+       ("glew" ,glew)))
+    (arguments
+     `(#:configure-flags
+       (list
+        "-DCOIN_BUILD_DOCUMENTATION_MAN=ON"
+        (string-append "-DBOOST_ROOT="
+                       (assoc-ref %build-inputs "boost")))))
+    (home-page "https://bitbucket.org/Coin3D/coin/wiki/Home")
+    (synopsis
+     "High-level 3D visualization library with Open Inventor 2.1 API")
+    (description
+     "Coin is a 3D graphics library with an Application Programming Interface
+based on the Open Inventor 2.1 API.  For those who are not familiar with
+Open Inventor, it is a scene-graph based retain-mode rendering and model
+interaction library, written in C++, which has become the de facto
+standard graphics library for 3D visualization and visual simulation
+software in the scientific and engineering community.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 2f974ee63b..2736b36a38 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -909,7 +909,7 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
 (define-public guile-email
   (package
     (name "guile-email")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
      (origin
        (method url-fetch)
@@ -918,7 +918,7 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
              version ".tar.lz"))
        (sha256
         (base32
-         "0zgvh2329zrclxfb1lh7dnqrq46jj77l0lx7j9y6y3xgbhd2d9l0"))))
+         "1ph3pb69hr3d8mj05fmbpf5rc67dlm8qnb35cc7cxz8ingvl7kv3"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -936,8 +936,8 @@ format.")
     (license license:agpl3+)))
 
 (define-public guile-debbugs-next
-  (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
-        (revision "1"))
+  (let ((commit "fb0ae064037a38a0d526e08b4ad24c52e205edb9")
+        (revision "2"))
     (package (inherit guile-debbugs)
       (name "guile-debbugs")
       (version (git-version "0.0.3" revision commit))
@@ -949,7 +949,7 @@ format.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
+                  "195sacx2xc1mzzfljj62nfpi8mxn0rc6dabxckizjksnhb5irfwy"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("pkg-config" ,pkg-config)
@@ -2156,7 +2156,7 @@ chunks can be expressions as well as simple tokens.")
          ("libtool" ,libtool)
          ("pkg-config" ,pkg-config)))
       (home-page "https://gitlab.com/tampe/guile-persist")
-      (synopsis "Persistance programming framework for Guile")
+      (synopsis "Persistence programming framework for Guile")
       (description
        "This is a serialization library for serializing objects like classes
 and objects, closures and structs.  This currently does not support
@@ -2554,3 +2554,67 @@ 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+)))
+
+(define-public guile-cv
+  (package
+    (name "guile-cv")
+    (version "0.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'prepare-build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "configure"
+               (("SITEDIR=\"\\$datadir/guile-cv\"")
+                "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
+               (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
+                "SITECCACHEDIR=\"$libdir/"))
+             (substitute* "cv/init.scm"
+               (("\\(dynamic-link \"libvigra_c\"\\)")
+                (string-append "(dynamic-link \""
+                               (assoc-ref inputs "vigra-c")
+                               "/lib/libvigra_c\")"))
+               (("\\(dynamic-link \"libguile-cv\"\\)")
+                (format #f "~s"
+                        `(dynamic-link
+                          (format #f "~alibguile-cv"
+                                  (if (getenv "GUILE_CV_UNINSTALLED")
+                                      ""
+                                      ,(format #f "~a/lib/"
+                                               (assoc-ref outputs "out"))))))))
+             (setenv "GUILE_CV_UNINSTALLED" "1")
+             ;; Only needed to satisfy the configure script.
+             (setenv "LD_LIBRARY_PATH"
+                     (string-append (assoc-ref inputs "vigra-c") "/lib"))
+             #t)))))
+    (inputs
+     `(("vigra" ,vigra)
+       ("vigra-c" ,vigra-c)
+       ("guile" ,guile-2.2)))
+    (native-inputs
+     `(("texlive" ,(texlive-union (list texlive-booktabs
+                                        texlive-lm
+                                        texlive-siunitx
+                                        texlive-standalone
+                                        texlive-xcolor
+                                        texlive-fonts-iwona)))
+       ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("guile-lib" ,guile-lib)))
+    (home-page "https://www.gnu.org/software/guile-cv/")
+    (synopsis "Computer vision library for Guile")
+    (description "Guile-CV is a Computer Vision functional programming library
+for the Guile Scheme language.  It is based on Vigra (Vision with Generic
+Algorithms), a C++ image processing and analysis library.  Guile-CV contains
+bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
+enriched with pure Guile Scheme algorithms, all accessible through a nice,
+clean and easy to use high level API.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 4313b6059e..a36451fa8c 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -7801,7 +7801,7 @@ examination.")
        ("ghc-listlike" ,ghc-listlike)))
     (home-page "https://github.com/seereason/process-extras")
     (synopsis "Extra tools for managing processes")
-    (description "This packages extends
+    (description "This package extends
 @url{http://hackage.haskell.org/package/process}.  It allows you to read
 process input and output as ByteStrings or Text, or write your own
 ProcessOutput instance.  It also provides lazy process input and output,
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 2993eb66f6..0e33f889b8 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -286,14 +286,14 @@ detection.")
 (define-public js-datatables
   (package
     (name "js-datatables")
-    (version "1.10.15")
+    (version "1.10.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://datatables.net/releases/DataTables-"
                                   version ".zip"))
               (sha256
                (base32
-                "1y9xqyqyz7x1ls3ska71pshl2hpiy3qnw1f7wygyslbhy4ssgf57"))))
+                "0cff8a1g7pjwbjdqq0yzqd963ar7pfi4splmm6rwdzganr77rkhb"))))
     (build-system minify-build-system)
     (arguments
      `(#:javascript-files '("media/js/dataTables.bootstrap.js"
diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
new file mode 100644
index 0000000000..7ec987b2a4
--- /dev/null
+++ b/gnu/packages/jupyter.scm
@@ -0,0 +1,189 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages jupyter)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages networking)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages time)
+  #:use-module (gnu packages tls))
+
+(define-public python-jupyter-protocol
+  (package
+    (name "python-jupyter-protocol")
+    (version "0.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jupyter_protocol" version))
+              (sha256
+               (base32
+                "1bk3as5yw9y5nmq6l15nr46aby34phmvsx9kxgqnm5pd5q2b5h57"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-jupyter-core" ,python-jupyter-core)
+       ("python-pyzmq" ,python-pyzmq)
+       ("python-traitlets" ,python-traitlets)))
+    (native-inputs
+     `(("python-ipykernel" ,python-ipykernel)
+       ("python-ipython" ,python-ipython)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://jupyter.org")
+    (synopsis "Jupyter protocol implementation")
+    (description
+     "This Python library is an experimental implementation of the
+@uref{https://jupyter-client.readthedocs.io/en/latest/messaging.html, Jupyter
+protocol} to be used by both clients and kernels.")
+    (license license:bsd-3)
+    (properties '((upstream-name . "jupyter_protocol")))))
+
+(define-public python-jupyter-kernel-mgmt
+  (package
+    (name "python-jupyter-kernel-mgmt")
+    (version "0.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jupyter_kernel_mgmt" version))
+              (sha256
+               (base32
+                "0i7a78dn89ca8h0a42giyxwcmk6y4wrdr7q8h2ax9vybb84c795q"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-entrypoints" ,python-entrypoints)
+       ("python-jupyter-core" ,python-jupyter-core)
+       ("python-jupyter-protocol" ,python-jupyter-protocol)
+       ("python-pyzmq" ,python-pyzmq)
+       ("python-traitlets" ,python-traitlets)))
+    (native-inputs
+     `(("python-ipykernel" ,python-ipykernel)
+       ("python-ipython" ,python-ipython)
+       ("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://jupyter.org")
+    (synopsis "Discover, launch, and communicate with Jupyter kernels")
+    (description
+     "This package is an experimental refactoring of the machinery for
+launching and using Jupyter kernels.")
+    (license license:bsd-3)
+    (properties '((upstream-name . "jupyter_kernel_mgmt")))))
+
+(define-public python-jupyter-kernel-test
+  (package
+    (name "python-jupyter-kernel-test")
+    (version "0.3")
+    (home-page "https://github.com/jupyter/jupyter_kernel_test")
+    (source (origin
+              ;; PyPI has a ".whl" file but not a proper source release.
+              ;; Thus, fetch code from Git.
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00iy74i4i8is6axb9vlsm0b9wxkvyyxnbl8r0i4gaj3xd788jm83"))))
+    (build-system python-build-system)
+    (arguments
+     ;; The repo doesn't contain a "setup.py" file so install files manually.
+     '(#:phases (modify-phases %standard-phases
+                  (delete 'build)
+                  (delete 'check)
+                  (replace 'install
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (version ((@@ (guix build python-build-system)
+                                           get-python-version)
+                                       (assoc-ref inputs "python")))
+                             (pydir (string-append out "/lib/python"
+                                                   version "/site-packages/"
+                                                   "jupyter_kernel_test")))
+                        (for-each (lambda (file)
+                                    (install-file file pydir))
+                                  (find-files "jupyter_kernel_test"
+                                              "\\.py$"))
+                        #t))))))
+    (propagated-inputs
+     `(("python-jupyter-kernel-mgmt" ,python-jupyter-kernel-mgmt)
+       ("python-jupyter-protocol" ,python-jupyter-protocol)
+       ("python-jsonschema" ,python-jsonschema)))
+    (synopsis "Test Jupyter kernels")
+    (description
+     "@code{jupyter_kernel_test} is a tool for testing Jupyter kernels.  It
+tests kernels for successful code execution and conformance with the
+@uref{https://jupyter-client.readthedocs.io/en/latest/messaging.html, Jupyter
+Messaging Protocol}.")
+    (license license:bsd-3)))
+
+(define-public xeus
+  (package
+    (name "xeus")
+    (version "0.23.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/QuantStack/xeus.git")
+                    (commit version)))
+              (sha256
+               (base32
+                "1m1b6z1538r7mv2ggn7bdbd9570ja7cadplq64zl8rgl2c8vdi2a"))
+              (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DBUILD_STATIC_LIBS=OFF"
+                           "-DDISABLE_ARCH_NATIVE=ON" ;no '-march=native'
+                           "-DBUILD_TESTING=ON")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+
+       ;; The following inputs are used by the test suite.
+       ("googletest" ,googletest)
+       ("python-pytest" ,python-pytest)
+       ("python" ,python-3)
+       ("python-jupyter-kernel-test" ,python-jupyter-kernel-test)
+       ("python-jupyter-client" ,python-jupyter-client)))
+    (inputs
+     `(("xtl" ,xtl)
+       ("nlohmann-json-cpp" ,nlohmann-json-cpp)
+       ("cppzmq" ,cppzmq)
+       ("zeromq" ,zeromq)
+       ("openssl" ,openssl)
+       ("util-linux" ,util-linux)))               ;libuuid
+    (home-page "https://quantstack.net/xeus")
+    (synopsis "C++ implementation of the Jupyter Kernel protocol")
+    (description
+     "@code{xeus} is a library meant to facilitate the implementation of
+kernels for Jupyter.  It takes the burden of implementing the Jupyter Kernel
+protocol so developers can focus on implementing the interpreter part of the
+kernel.
+
+Several Jupyter kernels are built upon @code{xeus}, such as @code{xeus-cling},
+a kernel for the C++ programming language, and @code{xeus-python}, an
+alternative Python kernel for Jupyter.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index ae87671611..465ed95eb2 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -132,14 +132,14 @@ resolution, asynchronous file system operations, and threading primitives.")
 (define-public perl-anyevent
   (package
     (name "perl-anyevent")
-    (version "7.15")
+    (version "7.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
                                   "AnyEvent-" version ".tar.gz"))
               (sha256
                (base32
-                "0m73r67ah9xmcwzxs50jxf8ncd8h71mi4wf2mvnqkxvibhrv478i"))))
+                "11drlj8r02czhjgzkb39axnr8zzyp506r043xfmf93q9kilfmgjh"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-canary-stability" ,perl-canary-stability)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index b65303ae6f..e13cd4a07e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -349,10 +349,10 @@ 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.15")
+(define-public linux-libre-5.2-version "5.2.16")
 (define-public linux-libre-5.2-pristine-source
   (let ((version linux-libre-5.2-version)
-        (hash (base32 "0jhc70r2rygm91qifjagg1jgbpjwyyq6m8g1n5iv81l1v84i0mpb")))
+        (hash (base32 "0xg5jnkmc7b552jrhi200ck7q4hql3az2fpjfwxj3ay8xp4n280c")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.2)))
@@ -2114,7 +2114,7 @@ processes currently causing I/O.")
 (define-public fuse
   (package
     (name "fuse")
-    (version "2.9.8")
+    (version "2.9.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libfuse/libfuse/releases/"
@@ -2122,7 +2122,7 @@ processes currently causing I/O.")
                                   "/fuse-" version ".tar.gz"))
               (sha256
                (base32
-                "1qxg1r1mgysfq6qakmvid2njph3lr00w0swvydsfl9ymilfzi12y"))
+                "1ddlq6kzxilccgbvxjfx80jx6kamgw4sv49phks2zhlcc1frvrnh"))
               (patches (search-patches "fuse-overlapping-headers.patch"))))
     (build-system gnu-build-system)
     (inputs `(("util-linux" ,util-linux)))
@@ -3299,14 +3299,14 @@ about ACPI devices.")
 (define-public acpid
   (package
     (name "acpid")
-    (version "2.0.31")
+    (version "2.0.32")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/acpid2/acpid-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1hrc0xm6q12knbgzhq0i8g2rfrkwcvh1asd7k9rs3nc5xmlwd7gw"))))
+                "0zhmxnhnhg4v1viw82yjr22kram6k5k1ixznhayk8cnw7q5x7lpj"))))
     (build-system gnu-build-system)
     (home-page "https://sourceforge.net/projects/acpid2/")
     (synopsis "Daemon for delivering ACPI events to user-space programs")
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 0c8ad1e2fa..6c373ce6e2 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -2485,7 +2485,7 @@ new fiends in addition to old friends like @command{aif} and
   (let ((commit "7d49a66c62759535624037826891152223d4206c"))
     (package
       (name "sbcl-lift")
-      (version (git-version "0.0.0" "1" commit))
+      (version (git-version "1.7.1" "1" commit))
       (source
        (origin
          (method git-fetch)
@@ -6474,7 +6474,7 @@ Trivia.")
 quasiquote is enable matching of quasiquoted patterns, using Optima or
 Trivia.
 
-This packages uses fare-quasiquote with named-readtable.")))
+This package uses fare-quasiquote with named-readtable.")))
 
 (define-public sbcl-trivia.level0
   (let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
@@ -6597,7 +6597,7 @@ This system contains the base level system of Trivia with a trivial optimizer.")
 with Optima, another pattern matching library for Common Lisp.  It is meant to
 be faster and more extensible than Optima.
 
-This system contains the PPCRE extention.")))
+This system contains the PPCRE extension.")))
 
 (define-public sbcl-trivia.quasiquote
   (package
@@ -6833,7 +6833,7 @@ Emacs.
 
 In the Common LISP Object System (CLOS), a similar kind of extensibility is
 possible using the flexible multi-method dispatch mechanism.  It may even seem
-that the concept of hooks does not provide any benefits over the possibilites
+that the concept of hooks does not provide any benefits over the possibilities
 of CLOS.  However, there are some differences:
 
 @itemize
@@ -6934,3 +6934,429 @@ classes and cyclic data structures are supported.")
 
 (define-public ecl-cl-prevalence
   (sbcl-package->ecl-package sbcl-cl-prevalence))
+
+(define-public sbcl-series
+  (let ((commit "da9061b336119d1e5214aff9117171d494d5a58a")
+        (revision "1"))
+    (package
+      (name "sbcl-series")
+      (version (git-version "2.2.11" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.code.sf.net/p/series/series")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "07hk2lhfx42zk018pxqvn4gs77vd4n4g8m4xxbqaxgca76mifwfw"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       ;; Disable the tests, they are apparently buggy and I didn't find
+       ;; a simple way to make them run and pass.
+       '(#:tests? #f))
+      (synopsis "Series data structure for Common Lisp")
+      (description
+       "This Common Lisp library provides a series data structure much like
+a sequence, with similar kinds of operations.  The difference is that in many
+situations, operations on series may be composed functionally and yet execute
+iteratively, without the need to construct intermediate series values
+explicitly.  In this manner, series provide both the clarity of a functional
+programming style and the efficiency of an iterative programming style.")
+      (home-page "http://series.sourceforge.net/")
+      (license license:expat))))
+
+(define-public cl-series
+  (sbcl-package->cl-source-package sbcl-series))
+
+(define-public ecl-series
+  (sbcl-package->ecl-package sbcl-series))
+
+(define-public sbcl-periods
+  (let ((commit "983d4a57325db3c8def942f163133cec5391ec28")
+        (revision "1"))
+    (package
+      (name "sbcl-periods")
+      (version (git-version "0.0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jwiegley/periods.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0z30jr3lxz3cmi019fsl4lgcgwf0yqpn95v9zkkkwgymdrkd4lga"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("local-time" ,sbcl-local-time)))
+      (synopsis "Common Lisp library for manipulating date/time objects")
+      (description
+       "Periods is a Common Lisp library providing a set of utilities for
+manipulating times, distances between times, and both contiguous and
+discontiguous ranges of time.")
+      (home-page "https://github.com/jwiegley/periods")
+      (license license:bsd-3))))
+
+(define-public cl-periods
+  (sbcl-package->cl-source-package sbcl-periods))
+
+(define-public ecl-periods
+  (sbcl-package->ecl-package sbcl-periods))
+
+(define-public sbcl-periods-series
+  (package
+    (inherit sbcl-periods)
+    (name "sbcl-periods-series")
+    (inputs
+     `(("periods" ,sbcl-periods)
+       ("series" ,sbcl-series)))
+    (arguments
+     '(#:asd-file "periods-series.asd"
+       #:asd-system-name "periods-series"))
+    (description
+     "Periods-series is an extension of the periods Common Lisp library
+providing functions compatible with the series Common Lisp library.")))
+
+(define-public cl-periods-series
+  (sbcl-package->cl-source-package sbcl-periods-series))
+
+(define-public ecl-periods-series
+  (sbcl-package->ecl-package sbcl-periods-series))
+
+(define-public sbcl-metatilities-base
+  (let ((commit "6eaa9e3ff0939a93a92109dd0fcd218de85417d5")
+        (revision "1"))
+    (package
+      (name "sbcl-metatilities-base")
+      (version (git-version "0.6.6" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gwkkwg/metatilities-base.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0xpa86pdzlnf4v5g64j3ifaplx71sx2ha8b7vvakswi652679ma0"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("lift" ,sbcl-lift)))
+      (synopsis "Core of the metatilities Common Lisp library")
+      (description
+       "Metatilities-base is the core of the metatilities Common Lisp library
+which implements a set of utilities.")
+      (home-page "https://common-lisp.net/project/metatilities-base/")
+      (license license:expat))))
+
+(define-public cl-metatilities-base
+  (sbcl-package->cl-source-package sbcl-metatilities-base))
+
+(define-public ecl-metatilities-base
+  (sbcl-package->ecl-package sbcl-metatilities-base))
+
+(define-public sbcl-cl-containers
+  (let ((commit "810927e19d933bcf38ffeb7a23ce521efc432d45")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-containers")
+      (version (git-version "0.12.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gwkkwg/cl-containers.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1s9faxw7svhbjpkhfrz2qxgjm3cvyjb8wpyb4m8dx4i5g7vvprkv"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("lift" ,sbcl-lift)))
+      (inputs
+       `(("metatilities-base" ,sbcl-metatilities-base)))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'relax-version-checks
+             (lambda _
+               (substitute* "cl-containers.asd"
+                 (("\\(:version \"metatilities-base\" \"0\\.6\\.6\"\\)")
+                  "\"metatilities-base\""))
+               (substitute* "cl-containers-test.asd"
+                 (("\\(:version \"lift\" \"1\\.7\\.0\"\\)")
+                  "\"lift\""))
+               #t)))))
+      (synopsis "Container library for Common Lisp")
+      (description
+       "Common Lisp ships with a set of powerful built in data structures
+including the venerable list, full featured arrays, and hash-tables.
+CL-containers enhances and builds on these structures by adding containers
+that are not available in native Lisp (for example: binary search trees,
+red-black trees, sparse arrays and so on), and by providing a standard
+interface so that they are simpler to use and so that changing design
+decisions becomes significantly easier.")
+      (home-page "https://common-lisp.net/project/cl-containers/")
+      (license license:expat))))
+
+(define-public cl-containers
+  (sbcl-package->cl-source-package sbcl-cl-containers))
+
+(define-public ecl-cl-containers
+  (sbcl-package->ecl-package sbcl-cl-containers))
+
+(define-public sbcl-xlunit
+  (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
+        (revision "1"))
+    (package
+      (name "sbcl-xlunit")
+      (version (git-version "0.6.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/xlunit.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-tests
+             (lambda _
+               (substitute* "xlunit.asd"
+                 ((" :force t") ""))
+               #t)))))
+      (synopsis "Unit testing package for Common Lisp")
+      (description
+       "The XLUnit package is a toolkit for building test suites.  It is based
+on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
+      (home-page "http://quickdocs.org/xlunit/")
+      (license license:bsd-3))))
+
+(define-public cl-xlunit
+  (sbcl-package->cl-source-package sbcl-xlunit))
+
+(define-public ecl-xlunit
+  (sbcl-package->ecl-package sbcl-xlunit))
+
+(define-public sbcl-fprog
+  (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
+        (revision "1"))
+    (package
+      (name "sbcl-fprog")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jwiegley/cambl.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "103mry04j2k9vznsxm7wcvccgxkil92cdrv52miwcmxl8daa4jiz"))))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "Functional programming utilities for Common Lisp")
+      (description
+       "@code{fprog} is a Common Lisp library allowing iteration over
+immutable lists sharing identical sublists.")
+      (home-page "https://github.com/jwiegley/cambl")
+      (license license:bsd-3))))
+
+(define-public cl-fprog
+  (sbcl-package->cl-source-package sbcl-fprog))
+
+(define-public ecl-fprog
+  (sbcl-package->ecl-package sbcl-fprog))
+
+(define-public sbcl-cambl
+  (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
+        (revision "1"))
+    (package
+      (inherit sbcl-fprog)
+      (name "sbcl-cambl")
+      (version (git-version "4.0.0" revision commit))
+      (native-inputs
+       `(("xlunit" ,sbcl-xlunit)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cl-containers" ,sbcl-cl-containers)
+         ("local-time" ,sbcl-local-time)
+         ("periods" ,sbcl-periods)
+         ("fprog" ,sbcl-fprog)))
+      (synopsis "Commoditized amounts and balances for Common Lisp")
+      (description
+       "CAMBL is a Common Lisp library providing a convenient facility for
+working with commoditized values.  It does not allow compound units (and so is
+not suited for scientific operations) but does work rather nicely for the
+purpose of financial calculations."))))
+
+(define-public cl-cambl
+  (sbcl-package->cl-source-package sbcl-cambl))
+
+(define-public ecl-cambl
+  (sbcl-package->ecl-package sbcl-cambl))
+
+(define-public sbcl-cl-ledger
+  (let ((commit "08e0be41795e804cd36142e51756ad0b1caa377b")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-ledger")
+      (version (git-version "4.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ledger/cl-ledger.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1via0qf6wjcyxnfbmfxjvms0ik9j8rqbifgpmnhrzvkhrq9pv8h1"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("cambl" ,sbcl-cambl)
+         ("cl-ppcre" ,sbcl-cl-ppcre)
+         ("local-time" ,sbcl-local-time)
+         ("periods-series" ,sbcl-periods-series)))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-system-definition
+             (lambda _
+               (substitute* "cl-ledger.asd"
+                 (("  :build-operation program-op") "")
+                 (("  :build-pathname \"cl-ledger\"") "")
+                 (("  :entry-point \"ledger::main\"") ""))
+               #t)))))
+      (synopsis "Common Lisp port of the Ledger accounting system")
+      (description
+       "CL-Ledger is a Common Lisp port of the Ledger double-entry accounting
+system.")
+      (home-page "https://github.com/ledger/cl-ledger")
+      (license license:bsd-3))))
+
+(define-public cl-ledger
+  (sbcl-package->cl-source-package sbcl-cl-ledger))
+
+(define-public ecl-cl-ledger
+  (sbcl-package->ecl-package sbcl-cl-ledger))
+
+(define-public sbcl-bst
+  (let ((commit "34f9c7e8e0a9f2c952fe310ab36cb630d5d9c15a")
+        (revision "1"))
+    (package
+      (name "sbcl-bst")
+      (version (git-version "1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/glv2/bst.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1amxns7hvvh4arwbh8ciwfzplg127vh37dnbamv1m1kmmnmihfc8"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("fiveam" ,sbcl-fiveam)))
+      (synopsis "Binary search tree for Common Lisp")
+      (description
+       "BST is a Common Lisp library for working with binary search trees that
+can contain any kind of values.")
+      (home-page "https://github.com/glv2/bst")
+      (license license:gpl3))))
+
+(define-public cl-bst
+  (sbcl-package->cl-source-package sbcl-bst))
+
+(define-public ecl-bst
+  (sbcl-package->ecl-package sbcl-bst))
+
+(define-public sbcl-cl-octet-streams
+  (package
+    (name "sbcl-cl-octet-streams")
+    (version "1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/glv2/cl-octet-streams.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d7mn6ydv0j2x4r7clpc9ijjwrnfpxmvhifv8n5j7jh7s744sf8d"))))
+    (build-system asdf-build-system/sbcl)
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+    (synopsis "In-memory octet streams for Common Lisp")
+    (description
+     "CL-octet-streams is a library implementing in-memory octet
+streams for Common Lisp.  It was inspired by the trivial-octet-streams and
+cl-plumbing libraries.")
+    (home-page "https://github.com/glv2/cl-octet-streams")
+    (license license:gpl3+)))
+
+(define-public cl-octet-streams
+  (sbcl-package->cl-source-package sbcl-cl-octet-streams))
+
+(define-public ecl-cl-octet-streams
+  (sbcl-package->ecl-package sbcl-cl-octet-streams))
+
+(define-public sbcl-lzlib
+  (let ((commit "0de1db7129fef9a58a059d35a2fa2ecfc5b47b47")
+        (revision "1"))
+    (package
+      (name "sbcl-lzlib")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/glv2/cl-lzlib.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "12ny7vj52fgnd8hb8fc8mry92vq4c1x72x2350191m4476j95clz"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("cffi" ,sbcl-cffi)
+         ("cl-octet-streams" ,sbcl-cl-octet-streams)
+         ("lzlib" ,lzlib)))
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "src/lzlib.lisp"
+                 (("liblz\\.so")
+                  (string-append (assoc-ref inputs "lzlib") "/lib/liblz.so")))
+               #t)))))
+      (synopsis "Common Lisp library for lzip (de)compression")
+      (description
+       "This Common Lisp library provides functions for lzip (LZMA)
+compression/decompression using bindings to the lzlib C library.")
+      (home-page "https://github.com/glv2/cl-lzlib")
+      (license license:gpl3+))))
+
+(define-public cl-lzlib
+  (sbcl-package->cl-source-package sbcl-lzlib))
+
+(define-public ecl-lzlib
+  (sbcl-package->ecl-package sbcl-lzlib))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 9efb4a4841..9a42d4fe07 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -369,7 +369,7 @@ requirements according to version 1.1 of the OpenCL specification.")
      '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
                            "-DOPENMP_TEST_C_COMPILER=clang"
                            "-DOPENMP_TEST_CXX_COMPILER=clang++")
-       #:test-target "check-libomptarget"))
+       #:test-target "check-libomp"))
     (native-inputs
      `(("clang" ,clang)
        ("llvm" ,llvm)
@@ -440,6 +440,23 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    "0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
                    #:patches '("clang-6.0-libc-search-path.patch")))
 
+;; Libcxx files specifically used by PySide2.
+(define-public libcxx-6
+  (package
+    (inherit libcxx)
+    (version (package-version llvm-6))
+    (source
+     (origin
+       (inherit (package-source libcxx))
+       (uri (string-append "http://llvm.org/releases/"
+                           version "/libcxx-" version ".src.tar.xz"))
+       (sha256
+        (base32
+         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
+    (native-inputs
+     `(("clang" ,clang-6)
+       ("llvm" ,llvm-6)))))
+
 (define-public llvm-3.9.1
   (package (inherit llvm)
     (name "llvm")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index fdbb082fdc..3d5417bfb5 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -353,14 +353,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.12.1")
+    (version "1.12.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81"))
+               "10k8352s0z7yan6d4z2am80qd3bsaky4h89g72wl4xr3x067ahmw"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -2937,8 +2937,8 @@ replacement for the @code{urlview} program.")
     (license gpl2+)))
 
 (define-public mumi
-  (let ((commit "ea0a28f8d5db5761765eb60043b8593901552e25")
-        (revision "4"))
+  (let ((commit "8a57c87797ffb07baa88697130204184db643521")
+        (revision "5"))
     (package
       (name "mumi")
       (version (git-version "0.0.0" revision commit))
@@ -2950,7 +2950,7 @@ replacement for the @code{urlview} program.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0b6dmi41vhssyf983blgi8a2kj3zjccc9cz7b7kvwh781ldqcywh"))))
+                  "1575gn5p086sjxz5hvg6iyskq6cxf6vf50s9nsc4xgrbcqa3pv2c"))))
       (build-system gnu-build-system)
       (arguments
        `(#:phases
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index e44ec66cb5..811a25f380 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1553,7 +1553,7 @@ script files.")
        ,@(package-inputs octave-cli)))
     (native-inputs
      `(("qttools" , qttools) ;for lrelease
-       ("texlive" ,texlive) ;for texi2dvi
+       ("texlive" ,(texlive-union (list texlive-epsf))) ; for texi2dvi
        ,@(package-native-inputs octave-cli)))
     (arguments
      (substitute-keyword-arguments (package-arguments octave-cli)
@@ -2982,7 +2982,7 @@ point numbers.")
 (define-public wxmaxima
   (package
     (name "wxmaxima")
-    (version "19.08.0")
+    (version "19.09.0")
     (source
      (origin
        (method git-fetch)
@@ -2991,8 +2991,7 @@ point numbers.")
              (commit (string-append "Version-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "028g4g2081vsgslbdliskfy5q2wknvknw89lk3zp89py6wranxas"))))
+        (base32 "195j6j8z0jd6xg3a63ywbrbsc6dany795m3fb95nbx1vq0bqqvvn"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index afe62eb680..7a77b45d1d 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -996,18 +996,18 @@ messenger protocol.")
 (define-public utox
   (package
    (name "utox")
-   (version "0.17.0")
+   (version "0.17.1")
    (source
     (origin
      (method git-fetch)
      (uri (git-reference
            (url "https://github.com/uTox/uTox.git")
-           (commit "v0.17.0")
+           (commit (string-append "v" version))
            (recursive? #t))) ;; Needed for 'minini' git submodule.
      (file-name (string-append name "-" version "-checkout"))
      (sha256
       (base32
-       "12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar"))))
+       "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
    (build-system cmake-build-system)
    (arguments
     `(#:configure-flags '("-DENABLE_TESTS=on")
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 9758675b66..57ecef4913 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -181,7 +181,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.34")
+    (version "0.35")
     (source (origin
               (method url-fetch)
               (uri
@@ -190,7 +190,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "0mz8r6vc4zn5sa3hlq4ii74qcrkh01nbg784zcwahgz8g3fb3i8l"))))
+                "0hfjvm1p0z7x6gfn5xhl5c0jsmidvz0qfl04pq45x4chh9iiwkxx"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 05da1ba0e1..83427d935f 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -90,7 +90,6 @@
        (modify-phases %standard-phases
          (add-before 'configure 'patch-files
            (lambda* (#:key inputs #:allow-other-keys)
-
              ;; Fix hardcoded /bin/sh references.
              (substitute* '("lib/child_process.js"
                             "lib/internal/v8_prof_polyfill.js"
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index d396f001ef..c72950e2b0 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -10,7 +10,6 @@
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -31,7 +30,6 @@
 (define-module (gnu packages package-management)
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
-  #:use-module (gnu packages admin)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages autotools)
@@ -40,7 +38,6 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages bootstrap)          ;for 'bootstrap-guile-origin'
-  #:use-module (gnu packages cdrom)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpio)
@@ -50,7 +47,6 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -58,19 +54,12 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages guile-xyz)
-  #:use-module (gnu packages haskell)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
-  #:use-module (gnu packages llvm)
   #:use-module (gnu packages man)
-  #:use-module (gnu packages mono)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages patchutils)
-  #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages pkg-config)
@@ -82,10 +71,8 @@
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages textutils)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages video)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages web)
@@ -557,176 +544,6 @@ transactions from C or Python.")
     ;; The whole is GPLv2+; librpm itself is dual-licensed LGPLv2+ | GPLv2+.
     (license license:gpl2+)))
 
-(define-public diffoscope
-  (let ((version "123"))
-    (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
-                  "11bxms5rkhi0v4pxx29v4qgvhp3fmf0fkzci6gn5xcv4fl1zy4wj"))))
-      (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))
-                    ;; Test is dynamically generated and may have false
-                    ;; negatives with different ocaml versions.  Further
-                    ;; background in: https://bugs.debian.org/939386
-                    (add-after 'unpack 'remove-ocaml-test
-                      (lambda _
-                        (delete-file "tests/comparators/test_ocaml.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 may need needs write access to tests
-                        ;; directory
-                        (for-each make-file-writable (find-files "tests"))
-                        #t))
-                    (add-before 'check 'delete-failing-test
-                      (lambda _
-                        ;; this requires /sbin to be on the path
-                        (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)
-                       ;; test suite skips tests when tool is missing
-                       ("bdb" ,bdb)
-                       ("binutils" ,binutils)
-                       ("bzip2" ,bzip2)
-                       ("cdrtools" ,cdrtools)
-                       ("colord" ,colord)
-                       ("cpio" ,cpio)
-                       ("docx2txt" ,docx2txt)
-                       ("e2fsprogs" ,e2fsprogs)
-                       ("ffmpeg" ,ffmpeg)
-                       ("gettext" ,gettext-minimal)
-                       ("ghc" ,ghc)
-                       ("ghostscript" ,ghostscript)
-                       ("giflib:bin" ,giflib "bin")
-                       ("gnumeric" ,gnumeric)
-                       ("gnupg" ,gnupg)
-                       ("imagemagick" ,imagemagick)
-                       ("libarchive" ,libarchive)
-                       ("llvm" ,llvm)
-                       ("lz4" ,lz4)
-                       ("mono" ,mono)
-                       ("odt2txt" ,odt2txt)
-                       ;; no unversioned openjdk available
-                       ("openjdk:jdk" ,openjdk12 "jdk")
-                       ("openssh" ,openssh)
-                       ("pgpdump" ,pgpdump)
-                       ("poppler" ,poppler)
-                       ("rpm" ,rpm)
-                       ("sng" ,sng)
-                       ("sqlite" ,sqlite)
-                       ("squashfs-tools" ,squashfs-tools)
-                       ("tcpdump" ,tcpdump)
-                       ("unzip" ,unzip)
-                       ("xxd" ,xxd)
-                       ("xz" ,xz)
-                       ("zip" ,(@ (gnu packages compression) zip))))
-      (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+))))
-
-(define-public trydiffoscope
- (package
-   (name "trydiffoscope")
-   (version "67.0.1")
-   (source
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://salsa.debian.org/reproducible-builds/trydiffoscope.git")
-            (commit version)))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32
-        "03b66cjii7l2yiwffj6ym6mycd5drx7prfp4j2550281pias6mjh"))))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((share (string-append (assoc-ref outputs "out") "/share/")))
-               (mkdir-p (string-append share "/man/man1/" ))
-               (invoke "rst2man.py"
-                       "trydiffoscope.1.rst"
-                       (string-append share "/man/man1/trydiffoscope.1"))
-               (mkdir-p (string-append share "/doc/" ,name "-" ,version))
-               (install-file "./README.rst"
-                          (string-append share "/doc/" ,name "-" ,version)))
-             #t)))))
-    (propagated-inputs
-     `(("python-requests" ,python-requests)))
-    (native-inputs
-     `(("gzip" ,gzip)
-       ("python-docutils" ,python-docutils)))
-    (build-system python-build-system)
-    (home-page "https://try.diffoscope.org")
-    (synopsis "Client for remote diffoscope service")
-    (description "This is a client for the @url{https://try.diffoscope.org,
-remote diffoscope service}.
-
-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.
-
-Results are displayed by default, stored as local text or html files, or made
-available via a URL on @url{https://try.diffoscope.org}.  Results stored on the
-server are purged after 30 days.")
-    (license license:gpl3+)))
-
 (define-public python-anaconda-client
   (package
     (name "python-anaconda-client")
@@ -1073,7 +890,7 @@ the boot loader configuration.")
 (define-public flatpak
   (package
    (name "flatpak")
-   (version "1.4.2")
+   (version "1.4.3")
    (source
     (origin
      (method url-fetch)
@@ -1081,7 +898,7 @@ the boot loader configuration.")
                          version "/flatpak-" version ".tar.xz"))
      (sha256
       (base32
-       "08nmpp26mgv0vp3mlwk97rnp0j7i108h4hr9nllja19sjxnrlygj"))))
+       "11bfxmv8pxlb5x0lb2rsl45615fzfvq5r6wldf0l6ab2ngryd7i7"))))
 
    ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
    ;; find the TLS backend in glib-networking.
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 3b7ce4c150..253596d8e3 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -52,14 +52,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20190822")
+    (version "20190922")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "1mi3a18fdwcx50jg51pw1ks1fkmc2slyinff0yb3xhihi2szbskp"))))
+       (base32 "0qrw34rpp8g5knb2nhs8z1hz9i42nxjn6i12m4rblm0anhnfwbr8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/emacs-unpackaged-req.patch b/gnu/packages/patches/emacs-unpackaged-req.patch
deleted file mode 100644
index ddb9277610..0000000000
--- a/gnu/packages/patches/emacs-unpackaged-req.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From e5be173e201710538464c279335bef735a327a68 Mon Sep 17 00:00:00 2001
-From: Brian Leung <bkleung89@gmail.com>
-Date: Tue, 18 Jun 2019 06:37:46 +0200
-Subject: [PATCH] Add missing require.
-
----
- unpackaged.el | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/unpackaged.el b/unpackaged.el
-index 2d46b3c..e62184a 100644
---- a/unpackaged.el
-+++ b/unpackaged.el
-@@ -38,6 +38,7 @@
- (require 'dash)
- (require 's)
- (require 'use-package)
-+(require 'hydra)
- 
- ;;; Faces, fonts
- 
--- 
-2.22.0
-
diff --git a/gnu/packages/patches/enjarify-setup-py.patch b/gnu/packages/patches/enjarify-setup-py.patch
new file mode 100644
index 0000000000..4b382ca320
--- /dev/null
+++ b/gnu/packages/patches/enjarify-setup-py.patch
@@ -0,0 +1,19 @@
+Author: Reiner Herrmann <reiner@reiner-h.de>
+Origin: https://salsa.debian.org/android-tools-team/enjarify/blob/master/debian/patches/setup_py.patch
+Description: provides a minimal setup.py to build/install the package
+
+Index: enjarify/setup.py
+===================================================================
+--- /dev/null
++++ enjarify/setup.py
+@@ -0,0 +1,10 @@
++#!/usr/bin/env python3
++
++from setuptools import setup, find_packages
++
++setup(name='enjarify',
++      version='1.0.3',
++      url='https://github.com/google/enjarify',
++      packages=find_packages(),
++      )
++
diff --git a/gnu/packages/patches/python-slugify-depend-on-unidecode.patch b/gnu/packages/patches/python-slugify-depend-on-unidecode.patch
index 6038f432f1..5ac749c19d 100644
--- a/gnu/packages/patches/python-slugify-depend-on-unidecode.patch
+++ b/gnu/packages/patches/python-slugify-depend-on-unidecode.patch
@@ -6,8 +6,8 @@ index 4800173..6bdd77f 100755
  author = 'Val Neekman'
  author_email = 'info@neekware.com'
  license = 'MIT'
--install_requires = ['text-unidecode==1.2']
--extras_require = {'unidecode': ['Unidecode==1.0.23']}
+-install_requires = ['text-unidecode>=1.3']
+-extras_require = {'unidecode': ['Unidecode>=1.1.1']}
 +install_requires = ['Unidecode']
  
  classifiers = [
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 79d8f3b684..77c8048e86 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1266,14 +1266,14 @@ arrays for their internal representation.")
 (define-public perl-clone
   (package
     (name "perl-clone")
-    (version "0.42")
+    (version "0.43")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
+              (uri (string-append "mirror://cpan/authors/id/A/AT/ATOOMIC/"
                                   "Clone-" version ".tar.gz"))
               (sha256
                (base32
-                "1r87rdm0nilfayxwlzvylwc8r3hr5m24180x437j30qpizdk1aal"))))
+                "1npf5s4b90ds6lv8gn76b2w4bdh0z5ni5zk4skgc2db5d12560lr"))))
     (build-system perl-build-system)
     (synopsis "Recursively copy Perl datatypes")
     (description
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 88a00070a8..b83721946c 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -160,7 +160,7 @@ to providing full-strength password hashing for multi-user application.")
 system hashes passwords using a version of Bruce Schneier's Blowfish block
 cipher with modifications designed to raise the cost of off-line password
 cracking and frustrate fast hardware implementation.  The computation cost of
-the algorithm is parametised, so it can be increased as computers get faster.
+the algorithm is parametrised, so it can be increased as computers get faster.
 The intent is to make a compromise of a password database less likely to
 result in an attacker gaining knowledge of the plaintext passwords (e.g. using
 John the Ripper).")
@@ -845,13 +845,13 @@ in userspace)
 (define-public python-m2crypto
   (package
     (name "python-m2crypto")
-    (version "0.30.1")
+    (version "0.35.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "M2Crypto" version))
        (sha256
-        (base32 "1iizrpkn4c2n70nvcjqlmnk6fz3vddkrjmwavz1zlsnwv8f7bcm1"))))
+        (base32 "09yirf3w77w6f49q6nxhrjm9c3a4y9s30s1k09chqrw8zdgx8sjc"))))
     (build-system python-build-system)
     (inputs `(("openssl" ,openssl)))
     (home-page "https://gitlab.com/m2crypto/m2crypto")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index dde35a1f3a..ffef3319f7 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -306,16 +306,24 @@ other HTTP libraries.")
 (define-public python-html2text
   (package
     (name "python-html2text")
-    (version "2018.1.9")
+    (version "2019.8.11")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "html2text" version))
        (sha256
         (base32
-         "1m6d7ciq30adc3d1n8g6r46072n7q8kdy039pqvnnmp763xi8xb2"))))
+         "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm"))))
     (build-system python-build-system)
-    (home-page "https://pypi.org/project/html2text/")
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "test/"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/Alir3z4/html2text")
     (synopsis "Convert HTML into plain text")
     (description "html2text takes HTML and converts it into plain ASCII text
 which is also valid markdown.  html2text was originally written by Aaron
@@ -3219,14 +3227,13 @@ Python.")
 (define-public python-slugify
   (package
     (name "python-slugify")
-    (version "3.0.2")
+    (version "3.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-slugify" version))
        (sha256
-        (base32
-         "0n6pfmsq899c54plpvzi46l7zrpa3zfpm8im6h32czjw6kxky5jp"))
+        (base32 "0dv97yi5fq074q5qyqbin09pmi8ixg36caf5nkpw2bqkd8jh6pap"))
        (patches
         (search-patches "python-slugify-depend-on-unidecode.patch"))))
     (native-inputs
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index eef2079c19..35353bc6fc 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -65,6 +65,7 @@
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -902,6 +903,27 @@ messages in color.")
 (define-public python2-coloredlogs
   (package-with-python2 python-coloredlogs))
 
+(define-public python-editorconfig
+  (package
+    (name "python-editorconfig")
+    (version "0.12.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "EditorConfig" version))
+       (sha256
+        (base32
+         "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv"))))
+    (build-system python-build-system)
+    (home-page "https://editorconfig.org/")
+    (synopsis "EditorConfig bindings for python")
+    (description "The EditorConfig project consists of a file format for
+defining coding styles and a collection of text editor plugins that enable
+editors to read the file format and adhere to defined styles.  EditorConfig
+files are easily readable and they work nicely with version control systems.")
+    ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2.
+    (license (list license:bsd-2 license:psfl))))
+
 (define-public python-et-xmlfile
   (package
     (name "python-et-xmlfile")
@@ -3962,7 +3984,7 @@ tests = True~%"
                         (assoc-ref inputs "tcl")
                         (assoc-ref inputs "tk")))))
              #t)))))
-    (home-page "http://matplotlib.org")
+    (home-page "https://matplotlib.org/")
     (synopsis "2D plotting library for Python")
     (description
      "Matplotlib is a Python 2D plotting library which produces publication
@@ -3977,14 +3999,29 @@ toolkits.")
   (let ((matplotlib (package-with-python2
                      (strip-python2-variant python-matplotlib))))
     (package (inherit matplotlib)
-      (version "2.2.3")
+      (version "2.2.4")
       (source
        (origin
          (method url-fetch)
          (uri (pypi-uri "matplotlib" version))
          (sha256
           (base32
-           "1rcc7x9ig3hpchkc4cwdvym3y451w74275fxr455zkfagrsvymbk"))))
+           "09i1gnrra1590brc1f8d5rh2zvnknmfgzp613ab0462qkrwj15h2"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments matplotlib)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'install-jquery-ui
+               (lambda* (#:key outputs inputs #:allow-other-keys)
+                 (let ((dir (string-append (assoc-ref outputs "out")
+                                           "/lib/python2.7/site-packages/"
+                                           "matplotlib/backends/web_backend/")))
+                   (mkdir-p dir)
+                   (invoke "unzip"
+                           (assoc-ref inputs "jquery-ui")
+                           "-d" dir))
+                 #t))
+             (delete 'check))))) ; These tests weren't run the the past.
       ;; Make sure to use special packages for Python 2 instead
       ;; of those automatically rewritten by package-with-python2.
       (propagated-inputs
@@ -8009,6 +8046,45 @@ Jupyter kernels such as IJulia and IRKernel.")
 support for rich media output.")
     (license license:bsd-3)))
 
+(define-public python-jsbeautifier
+  (package
+    (name "python-jsbeautifier")
+    (version "1.10.2")
+    (home-page "https://github.com/beautify-web/js-beautify")
+    (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
+               "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'chdir
+                    (lambda _
+                      ;; The upstream Git repository contains all the code,
+                      ;; but this package only builds the python code.
+                      (chdir "python")
+                      #t))
+                  (add-after 'unpack 'patch-python-six-requirements
+                    (lambda _
+                      (substitute* "python/setup.py"
+                        (("six>=1.12.0")
+                         "six>=1.11.0"))
+                      #t)))))
+    (propagated-inputs
+     `(("python-editorconfig" ,python-editorconfig)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (synopsis "JavaScript unobfuscator and beautifier")
+    (description "Beautify, unpack or deobfuscate JavaScript, leveraging
+popular online obfuscators.")
+    (license license:expat)))
+
 (define-public jupyter
   (package
     (name "jupyter")
@@ -10865,6 +10941,42 @@ binary or text.")
        `(("python2-enum34" ,python2-enum34)
          ,@(package-propagated-inputs base))))))
 
+(define-public python-binwalk
+  (let ((commit "64201acfb5b0a9cdd9faa58c40a36dcff8612e29")
+        (revision "0"))
+    (package
+      (name "python-binwalk")
+      (version (git-version "2.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ReFirmLabs/binwalk")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1z7ca6rfp887hw5jc3sb45mm4fa0xid4lsp2z8g4r590dr7k7w15"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'set-pythonpath
+             (lambda _
+               (setenv "PYTHONPATH"
+                       (string-append
+                        (getcwd) "/src/"
+                        ":" (getenv "PYTHONPATH")))
+               (setenv "HOME" "")
+               #t)))))
+      (native-inputs
+       `(("python-coverage" ,python-coverage)
+         ("python-nose" ,python-nose)))
+      (home-page "https://github.com/ReFirmLabs/binwalk")
+      (synopsis "Firmware analysis tool")
+      (description "Binwalk is a tool for analyzing, reverse engineering, and extracting firmware images")
+      (license license:expat))))
+
 (define-public python-nltk
   (package
     (name "python-nltk")
@@ -16264,3 +16376,24 @@ 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)))
+
+(define-public python-bibtexparser
+  (package
+    (name "python-bibtexparser")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "bibtexparser" version))
+       (sha256
+        (base32
+         "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pyparsing" ,python-pyparsing)))
+    (native-inputs
+     `(("python-future" ,python-future)))
+    (home-page "https://github.com/sciunto-org/python-bibtexparser")
+    (synopsis "Python library to parse BibTeX files")
+    (description "BibtexParser is a Python library to parse BibTeX files.")
+    (license (list license:bsd-3 license:lgpl3))))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 768c4e5d89..929144f30d 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,7 +40,9 @@
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cups)
   #:use-module (gnu packages databases)
@@ -56,6 +59,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages pciutils)
@@ -2290,3 +2294,173 @@ user-friendly than the default @code{QColorDialog} and several other
 color-related widgets.")
       ;; Includes a license exception for combining with GPL2 code.
       (license license:lgpl3+))))
+
+(define-public python-shiboken-2
+  (let ((revision "1")
+        ;; Pinned to branches with support for qt 5.11.3
+        (commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
+    (package
+      (name "python-shiboken-2")
+      (version (git-version "v5.11.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               ;; The latest versions of Shiboken live in the pyside repo.
+               ;; There is another standalone repo only for Shiboken
+               ;; but it is outdated
+               (url "https://code.qt.io/pyside/pyside-setup")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("llvm-6" ,llvm-6)
+         ("clang-6" ,clang-6)
+         ("libxml2" ,libxml2)
+         ("libxslt" ,libxslt)
+         ("python-wrapper" ,python-wrapper)
+         ("qtbase" ,qtbase)
+         ("qtxmlpatterns" ,qtxmlpatterns)))
+      (arguments
+       `(#:tests? #f
+         ;; FIXME: Building tests fails
+         #:configure-flags '("-DBUILD_TESTS=off")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'use-shiboken-dir-only
+             (lambda _ (chdir "sources/shiboken2") #t))
+           (add-before 'configure 'set-build-env
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((llvm (assoc-ref inputs "llvm-6")))
+                 (setenv "CLANG_INSTALL_DIR" llvm)
+                 #t))))))
+      (home-page "https://wiki.qt.io/Qt_for_Python")
+      (synopsis
+       "Shiboken generates bindings for C++ libraries using CPython source code")
+      (description
+       "Shiboken generates bindings for C++ libraries using CPython source code")
+      (license
+       (list
+        ;; The main code is GPL3 or LGPL3.
+        ;; Examples are BSD-3.
+        license:gpl3
+        license:lgpl3
+        license:bsd-3)))))
+
+(define-public python-pyside-2
+  (let ((revision "1")
+        ;; Pinned to branches with support for qt 5.11.3
+        (commit "4018787a3cc01d632fdca7891ac8aa9487110c26"))
+    (package
+      (name "python-pyside-2")
+      (version (git-version "v5.11.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://code.qt.io/pyside/pyside-setup")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0g8jacm2iqd7lw2m7f1dp1nnrsk38bl3m8pihm8zz9gxs8d31sf5"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("libcxx" ,libcxx-6)
+         ("libxml2" ,libxml2)
+         ("libxslt" ,libxslt)
+         ("llvm-6" ,llvm-6)
+         ("clang-6" ,clang-6)
+         ("qtbase" ,qtbase)
+         ("qtdatavis3d" ,qtdatavis3d)
+         ("qtlocation" ,qtlocation)
+         ("qtmultimedia" ,qtmultimedia)
+         ("qtquickcontrols" ,qtquickcontrols)
+         ("qtscript" ,qtscript)
+         ("qtscxml" ,qtscxml)
+         ("qtsensors" ,qtsensors)
+         ("qtspeech" ,qtspeech)
+         ("qtsvg" ,qtsvg)
+         ("qtwebchannel" ,qtwebchannel)
+         ("qtwebsockets" ,qtwebsockets)
+         ("qtx11extras" ,qtx11extras)
+         ("qtxmlpatterns" ,qtxmlpatterns)))
+      (native-inputs
+       `(("cmake" ,cmake)
+         ("python-shiboken-2" ,python-shiboken-2)
+         ("python-wrapper" ,python-wrapper)
+         ("qttools" ,qttools)
+         ("which" ,which)))
+      (arguments
+       `(#:tests? #f
+         ;; FIXME: Building tests fail.
+         #:configure-flags '("-DBUILD_TESTS=FALSE")
+         #:phases
+         (modify-phases
+             %standard-phases
+           (add-after 'unpack 'go-to-source-dir
+             (lambda _ (chdir "sources/pyside2") #t))
+           (add-before 'configure 'set-clang-dir
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((clang (assoc-ref inputs "clang-6"))
+                     (libcxx (assoc-ref inputs "libcxx")))
+                 (setenv "CLANG_INSTALL_DIR" clang)
+                 (substitute* "cmake/Macros/PySideModules.cmake"
+                   (("--include-paths=")
+                    (string-append "--include-paths=" libcxx "/include/c++/v1:")))
+                 #t))))))
+      (home-page "https://wiki.qt.io/Qt_for_Python")
+      (synopsis
+       "The Qt for Python product enables the use of Qt5 APIs in Python applications")
+      (description
+       "The Qt for Python product enables the use of Qt5 APIs in Python
+applications.  It lets Python developers utilize the full potential of Qt,
+using the PySide2 module.  The PySide2 module provides access to the
+individual Qt modules such as QtCore, QtGui,and so on.  Qt for Python also
+comes with the Shiboken2 CPython binding code generator, which can be used to
+generate Python bindings for your C or C++ code.")
+      (license (list
+                license:lgpl3
+                ;;They state that:
+                ;; this file may be used under the terms of the GNU General
+                ;; Public License version 2.0 or (at your option) the GNU
+                ;; General Public license version 3 or any later version
+                ;; approved by the KDE Free Qt Foundation.
+                ;; Thus, it is currently v2 or v3, but no "+".
+                license:gpl3
+                license:gpl2)))))
+
+(define-public python-pyside-2-tools
+  (let ((revision "1")
+        ;; Pinned to branches with support for qt 5.11.3
+        (commit "f1b775537e7fbd718516749583b2abf1cb6adbce"))
+    (package
+      (name "python-pyside-2-tools")
+      (version (git-version "v5.11.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://code.qt.io/pyside/pyside-tools")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1w2g5afvww9r89wmdm9jx8sz67x4bzy9difkh72n4c73ya1n91ry"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("python-pyside-2" ,python-pyside-2)
+         ("python-shiboken-2" ,python-shiboken-2)
+         ("qtbase" ,qtbase)))
+      (arguments
+       `(#:tests? #f
+         #:configure-flags '("-DBUILD_TESTS=off")))
+      (home-page "https://wiki.qt.io/Qt_for_Python")
+      (synopsis
+       "Contains command line tools for PySide2")
+      (description
+       "Contains lupdate, rcc and uic tools for PySide2")
+      (license license:gpl2))))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 45d700ec37..c69345910b 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -154,14 +154,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.10.8")
+    (version "4.11.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.samba.org/pub/samba/stable/"
                                  "samba-" version ".tar.gz"))
              (sha256
               (base32
-               "1x0hlhb674fndfkmimjicnzs543n3i8465a5ifcmjwvzavxha7y4"))))
+               "174fwi8n191dnb8ix9afchfp59hic6iwa3062iz3y7zzmxs1rpva"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 9962cbdcb5..5753035643 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -204,8 +204,8 @@
               (base32
                "05sjyz90xxfnmi87qv8x0yx0fcallnzl1dciygdafp317pn489is"))
              (_
-               (base32
-                ""))))))))
+              (base32
+               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))))))
 
     ;; Fails to build on MIPS, see <http://bugs.gnu.org/18221>.
     ;; Also, the portable C version of MIT/GNU Scheme did not work in time for
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 3c5a9e7c9d..b01886c775 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -42,6 +42,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -393,17 +394,29 @@ it is comparable to protobuf.")
 (define-public nlohmann-json-cpp
   (package
     (name "nlohmann-json-cpp")
-    (version "2.1.1")
-    (source
-     (origin
-      (method url-fetch)
-      (uri (string-append "https://github.com/nlohmann/json/"
-                          "archive/v" version ".tar.gz"))
-      (file-name (string-append name "-" version ".tar.gz"))
-      (sha256
-       (base32
-        "0lrh6cjd643c7kmvmwafbgq7dqj3b778483gjhjbvp6rc6z5xf2r"))))
+    (version "3.7.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/nlohmann/json.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0v7xih4zjixxxfvkfbs7a8j9qcvpwlsv4vrkbyns3hc7b44nb8ap"))))
     (build-system cmake-build-system)
+    (native-inputs
+     ;; Integer overflow tests like those from
+     ;; <https://github.com/nlohmann/json/issues/1447> fail when building with
+     ;; gcc@5.  Thus, build with a newer GCC.
+     `(("gcc" ,gcc-9)))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'build 'unset-path-variables
+                    (lambda _
+                      (unsetenv "C_INCLUDE_PATH")
+                      (unsetenv "CPLUS_INCLUDE_PATH")
+                      #t)))))
     (home-page "https://nlohmann.github.io/json/")
     (synopsis "JSON library for C++")
     (description
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index dbdbe7ea49..21d6027004 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,12 +31,15 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils))
 
 (define-public espeak
@@ -220,3 +224,236 @@ to improve their productivity with speech engines, like eSpeak.  Sonic can also
 be used by the sighted.")
     (home-page "https://github.com/waywardgeek/sonic")
     (license license:asl2.0)))
+
+(define-public festival
+  (package
+    (name "festival")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://festvox.org/packed/festival/"
+                                  (version-major+minor version)
+                                  "/festival-" version "-release.tar.gz"))
+              (sha256
+               (base32
+                "1d5415nckiv19adxisxfm1l1xxfyw88g87ckkmcr0lhjdd10g42c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there is no test target
+       #:make-flags
+       (list (string-append "RM="
+                            (assoc-ref %build-inputs "coreutils")
+                            "/bin/rm")
+             (string-append "ECHO_N="
+                            (assoc-ref %build-inputs "coreutils")
+                            "/bin/printf \"%s\""))
+       #:parallel-build? #f ; not supported
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-and-patch-speech-tools
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "tar" "-C" ".."
+                     "-xf" (assoc-ref inputs "speech-tools"))
+             (with-directory-excursion "../speech_tools"
+               (substitute* '("config/rules/modules.mak"
+                              "config/rules/test_make_rules.mak"
+                              "config/make_system.mak")
+                 (("/bin/sh") (which "sh"))))
+             #t))
+         (add-after 'unpack 'patch-/bin/sh
+           (lambda _
+             (substitute* '("config/test_make_rules"
+                            "config/make_system.mak")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'build 'build-speech-tools
+           (lambda* (#:key configure-flags make-flags #:allow-other-keys)
+             (with-directory-excursion "../speech_tools"
+               (apply invoke "sh" "configure"
+                      (string-append "CONFIG_SHELL=" (which "sh"))
+                      (string-append "SHELL=" (which "sh"))
+                      configure-flags)
+               (apply invoke "make" make-flags))))
+         (add-after 'build 'build-documentation
+           (lambda _
+             (with-directory-excursion "doc"
+               (invoke "make" "festival.info"))))
+         (add-after 'unpack 'set-installation-directories
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "config/project.mak"
+                 (("^FTLIBDIR.*")
+                  (string-append "FTLIBDIR=" out "/share/festival/lib")))
+               (substitute* "config/systems/default.mak"
+                 (("^INSTALL_PREFIX.*")
+                  (string-append "INSTALL_PREFIX=" out)))
+               #t)))
+         (add-after 'install 'actually-install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Install Speech Tools first
+               (with-directory-excursion "../speech_tools"
+                 ;; Target directories
+                 (for-each (lambda (dir)
+                             (mkdir-p (string-append out dir)))
+                           '("/bin"
+                             "/lib"
+                             "/include/speech_tools/"
+                             "/include/speech_tools/instantiate"
+                             "/include/speech_tools/ling_class"
+                             "/include/speech_tools/rxp"
+                             "/include/speech_tools/sigpr"
+                             "/include/speech_tools/unix"))
+                 ;; Install binaries
+                 (for-each (lambda (file)
+                             (install-file file (string-append out "/bin")))
+                           (find-files "bin" ".*"))
+                 (for-each (lambda (file)
+                             (delete-file (string-append out "/bin/" file)))
+                           '("est_gdb" "est_examples" "est_program"))
+                 ;; Install libraries
+                 (for-each (lambda (file)
+                             (install-file file (string-append out "/lib")))
+                           (find-files "lib" "lib.*\\.so.*"))
+
+                 ;; Install headers
+                 (for-each
+                  (lambda (dir)
+                    (for-each
+                     (lambda (header)
+                       (install-file header
+                                     (string-append out "/include/speech_tools/" dir)))
+                     (find-files (string-append "include/" dir)
+                                 "\\.h$")))
+                  '("." "instantiate" "ling_class" "rxp" "sigpr" "unix")))
+
+               ;; Unpack files that will be installed together with the
+               ;; Festival libraries.
+               (invoke "tar" "--strip-components=1"
+                       "-xvf" (assoc-ref inputs "festvox-cmu"))
+               (invoke "tar" "--strip-components=1"
+                       "-xvf" (assoc-ref inputs "festvox-poslex"))
+               (invoke "tar" "--strip-components=1"
+                       "-xvf" (assoc-ref inputs "default-voice"))
+
+               ;; Install Festival
+               (let ((bin (string-append out "/bin"))
+                     (incdir (string-append out "/include/festival"))
+                     (share (string-append out "/share/festival"))
+                     (info (string-append out "/share/info")))
+                 (for-each (lambda (executable)
+                             (install-file executable bin))
+                           '("src/main/festival"
+                             "src/main/festival_client"
+                             "examples/benchmark"))
+                 (let ((scripts '("examples/dumpfeats"
+                                  "examples/durmeanstd"
+                                  "examples/latest"
+                                  "examples/make_utts"
+                                  "examples/powmeanstd"
+                                  "examples/run-festival-script"
+                                  "examples/saytime"
+                                  "examples/scfg_parse_text"
+                                  "examples/text2pos"
+                                  "examples/text2wave")))
+                   (substitute* scripts
+                     (("exec /tmp/guix-build.*/bin/festival")
+                      (string-append "exec " bin "/festival")))
+                   (for-each (lambda (script)
+                               (install-file script bin))
+                             scripts))
+
+                 ;; Documentation
+                 (for-each (lambda (file)
+                             (install-file file info))
+                           (find-files "doc/info/" "festival.info.*"))
+
+                 ;; Headers
+                 (mkdir-p incdir)
+                 (for-each (lambda (header)
+                             (install-file header
+                                           (string-append incdir "/"
+                                                          (dirname header))))
+                           (find-files "src/include" "\\.h$"))
+
+                 ;; Data
+                 (mkdir-p share)
+                 (for-each (lambda (file)
+                             (install-file file
+                                           (string-append share "/"
+                                                          (dirname file))))
+                           (find-files "lib" ".*"))
+                 (for-each delete-file
+                           (append (find-files share "Makefile")
+                                   (find-files bin "Makefile")))))
+             #t))
+         (add-after 'actually-install 'install-emacs-mode
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((emacs-dir (string-append (assoc-ref outputs "out")
+                                             "/share/emacs/site-lisp")))
+               (install-file "lib/festival.el" emacs-dir)
+               (emacs-generate-autoloads ,name emacs-dir)
+               #t)))
+         ;; Rebuild the very old configure script that is confused by extra
+         ;; arguments.
+         (add-before 'configure 'bootstrap
+           (lambda _ (invoke "autoreconf" "-vif"))))))
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("texinfo" ,texinfo)
+       ("emacs" ,emacs-minimal)
+       ("festvox-cmu"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/festlex_CMU.tar.gz"))
+           (sha256
+            (base32
+             "01vwidqhhg2zifvk1gby91mckg1z2pv2mj6lihvdaifakf8k1561"))))
+       ("festvox-poslex"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/festlex_POSLEX.tar.gz"))
+           (sha256
+            (base32
+             "18wywilxaqwy63lc47p5g5529mpxhslibh1bjij0snxx5mjf7ip7"))))
+       ("default-voice"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/voices/festvox_kallpc16k.tar.gz"))
+           (sha256
+            (base32
+             "136hmsyiwnlg2qwa508dy0imf19mzrb5r3dmb2kg8kcyxnslm740"))))
+       ("speech-tools"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://festvox.org/packed/festival/"
+                               (version-major+minor version)
+                               "/speech_tools-" version "-release.tar.gz"))
+           (sha256
+            (base32
+             "1k2xh13miyv48gh06rgsq2vj25xwj7z6vwq9ilsn8i7ig3nrgzg4"))))))
+    (home-page "http://www.cstr.ed.ac.uk/projects/festival/")
+    (synopsis "Speech synthesis system")
+    (description "Festival offers a general framework for building speech
+synthesis systems as well as including examples of various modules.  As a
+whole it offers full text to speech through a number APIs: from shell level,
+though a Scheme command interpreter, as a C++ library, from Java, and an Emacs
+interface.  Festival is multi-lingual though English is the most advanced.
+The system is written in C++ and uses the Edinburgh Speech Tools Library for
+low level architecture and has a Scheme (SIOD) based command interpreter for
+control.")
+    (license (license:non-copyleft "file://COPYING"))))
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 9bd1e8d421..da7492c42e 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -216,7 +216,7 @@ to code blocks.")
     (arguments
      `(#:tests? #f))                    ;XXX: circular dependency on Sphinx
     (home-page "https://github.com/sphinx-doc/sphinxcontrib-htmlhelp")
-    (synopsis "Sphinx exension for rendering HTML help files")
+    (synopsis "Sphinx extension for rendering HTML help files")
     (description
      "@code{sphinxcontrib-htmlhelp} is a Sphinx extension which renders
 HTML help files.")
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 2ffe0a10d6..74eb466066 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -4288,7 +4288,7 @@ including:
 @item enhanced regression diagnostic plots
 @item formula-enabled interface to @code{stats::lowess} function
 @item displaying textual data in plots
-@item baloon plots
+@item balloon plots
 @item plotting \"Venn\" diagrams
 @item displaying Open-Office style plots
 @item plotting multiple data on same region, with separate axes
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 0c840a1a1d..7a85b6ce9e 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -264,14 +264,14 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.49.2")
+    (version "1.49.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/rclone/rclone/releases/download/"
                            "v" version "/rclone-v" version ".tar.gz"))
        (sha256
-        (base32 "1q8lf85hg2havb1xsal75r19ck166rh19lffpd3i43zgblc6gs8j"))))
+        (base32 "04blngspm2hzi6d37bd3v19lpcvq0wlk38a9q0a4diwfwp2ab20n"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 74457f6ec4..7e1d8df333 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -1219,7 +1219,7 @@ quoting, commenting, and escaping.")
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/AudriusButkevicius/pfilter"))
-      (synopsis "Filter packets into mulitple virtual connections")
+      (synopsis "Filter packets into multiple virtual connections")
       (description "Pfilter is a Go package for filtering packets into multiple
 virtual connections from a single physical connection.")
       (home-page "https://github.com/AudriusButkevicius/pfilter")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 41896f2eb6..5d6f0ffed6 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -284,7 +284,7 @@ supporting cryptographic kernel.")
     (home-page "https://www.linphone.org")
     (synopsis "Utilities library for linphone software")
     (description "BCtoolbox is a utilities library used by Belledonne
-Communications softwares like linphone.")
+Communications software like linphone.")
     (license license:gpl2+)))
 
 (define-public ortp
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 98ed77289a..d9a5f1db9a 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -460,7 +460,7 @@ should be thread-safe.")
 (define-public libvterm
   (package
     (name "libvterm")
-    (version "0.1")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
@@ -468,13 +468,12 @@ should be thread-safe.")
                            "libvterm-" version ".tar.gz"))
        (sha256
         (base32
-         "1pcxjhvdwhr2f3lyzf2rv1vp3l62bgkjm1ybhj82qf8yly7ca6g4"))))
+         "1n5maylann2anfifjy576vzyar9q5m1kzpyiz2hca2pacxy8xf4v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
        (list "CC=gcc"
              (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:tests? #f ; XXX: some tests fail in this release
        #:test-target "test"
        #:phases
        (modify-phases %standard-phases
@@ -956,7 +955,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.14.4")
+    (version "0.14.5")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -967,7 +966,7 @@ tmux.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0z0y80wcbra3zfyaiim98afbqlfpkjkql430zfb8shx61rzzmn9i"))
+         "0qx3wj4n3zgjcpd1vjjwdlz8d1vp8bkxihsg2khlla1izandgxxa"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index e67b0505f3..1e26fc3965 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -2518,214 +2518,213 @@ formats.")
     (license license:lppl)))
 
 (define-public texlive-latex-base
-  (package
-    (name "texlive-latex-base")
-    (version (number->string %texlive-revision))
-    (source (texlive-origin
-             name version
-             (list "/doc/latex/base/"
-                   "/source/latex/base/"
-                   ;; Almost all files in /tex/latex/base are generated, but
-                   ;; these are not:
-                   "/tex/latex/base/idx.tex"
-                   "/tex/latex/base/lablst.tex"
-                   "/tex/latex/base/lppl.tex"
-                   "/tex/latex/base/ltnews.cls"
-                   "/tex/latex/base/ltxcheck.tex"
-                   "/tex/latex/base/ltxguide.cls"
-                   "/tex/latex/base/minimal.cls"
-                   "/tex/latex/base/sample2e.tex"
-                   "/tex/latex/base/small2e.tex"
-                   "/tex/latex/base/source2e.tex"
-                   "/tex/latex/base/testpage.tex"
-                   "/tex/latex/base/texsys.cfg")
-             (base32
-              "0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 match)
-                  (srfi srfi-26))
-       #:tests? #f                      ; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'build
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Find required fonts
-             (setenv "TFMFONTS"
-                     (string-join
-                      (map (match-lambda
-                             ((pkg-name . dir)
-                              (string-append
-                               (assoc-ref inputs pkg-name)
-                               "/share/texmf-dist/fonts/tfm/public"
-                               dir)))
-                           '(("texlive-etex" . "/etex")
-                             ("texlive-cm" . "/cm")
-                             ("texlive-fonts-latex" . "/latex-fonts")
-                             ("texlive-fonts-knuth-lib" . "/knuth-lib")))
-                      ":"))
-             (let ((cwd (getcwd)))
-               (setenv "TEXINPUTS"
-                       (string-append
-                        cwd "//:"
-                        cwd "/source/latex/base//:"
-                        cwd "/build:"
-                        (string-join
-                         (map (match-lambda ((_ . dir) dir)) inputs)
-                         "//:"))))
-
-             ;; This is the actual build step.
-             (mkdir "build")
-             (invoke "tex" "-ini" "-interaction=scrollmode"
-                     "-output-directory=build" "unpack.ins")
-
-             ;; XXX: We can't build all formats at this point, nor are they
-             ;; part of the LaTeX base, so we disable them.  Actually, we
-             ;; should be running this all in a profile hook, so that only
-             ;; selected formats and hyphenation patterns are included, but it
-             ;; takes long and TeX Live isn't designed to be modular like
-             ;; that.  Everything operates on a shared directory, which we
-             ;; would only have at profile generation time.
-             (let ((disabled-formats
-                    '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
-                      "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
-                      "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
-                      "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
-                      "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
-                      "mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
-                      "amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
-                      "xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
-                      "texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
-               (mkdir "web2c")
-               (install-file (string-append
-                              (assoc-ref inputs "texlive-kpathsea")
-                              "/share/texmf-dist/web2c/fmtutil.cnf")
-                             "web2c")
-               (make-file-writable "web2c/fmtutil.cnf")
-               (substitute* "web2c/fmtutil.cnf"
-                 (((string-append "^(" (string-join disabled-formats "|") ")") m)
-                  (string-append "#! " m))))
-             (invoke "fmtutil-sys" "--all"
-                     "--fmtdir=web2c"
-                     (string-append "--cnffile=web2c/fmtutil.cnf"))
-             ;; We don't actually want to install it.
-             (delete-file "web2c/fmtutil.cnf")
-             #t))
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (root (string-append out "/share/texmf-dist"))
-                    (target (string-append root "/tex/latex/base"))
-                    (web2c (string-append root "/web2c"))
-                    (makeindex (string-append root "/makeindex/latex")))
-               (for-each delete-file (find-files "." "\\.(log|aux)$"))
-
-               ;; The usedir directive in docstrip.ins is ignored, so these
-               ;; two files end up in the wrong place.  Move them.
-               (mkdir-p makeindex)
-               (for-each (lambda (file)
-                           (install-file file makeindex)
-                           (delete-file file))
-                         '("build/gglo.ist"
-                           "build/gind.ist"))
-               (for-each (cut install-file <> target)
-                         (find-files "build" ".*"))
-               (for-each (cut install-file <> web2c)
-                         (find-files "web2c" ".*"))
-               #t))))))
-    (native-inputs
-     `(("texlive-bin" ,texlive-bin)
-       ("texlive-tex-ini-files" ,texlive-tex-ini-files)
-       ("texlive-tex-plain" ,texlive-tex-plain)
-       ("texlive-kpathsea" ,texlive-kpathsea)
-       ("texlive-cm" ,texlive-cm)
-       ("texlive-fonts-latex" ,texlive-fonts-latex)
-       ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
-       ("texlive-luatexconfig"
-        ,(texlive-origin
-          "texlive-luatexconfig" (number->string %texlive-revision)
-          (list "/tex/generic/config/luatex-unicode-letters.tex"
-                "/tex/generic/config/luatexiniconfig.tex"
-                "/web2c/texmfcnf.lua")
-          (base32
-           "0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
-    (propagated-inputs
-     `(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
-       ("texlive-etex" ,texlive-etex)
-       ("texlive-hyph-utf8" ,texlive-hyph-utf8)
-       ("texlive-hyphen-base" ,texlive-hyphen-base)
-       ("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
-       ("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
-       ("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
-       ("texlive-hyphen-basque" ,texlive-hyphen-basque)
-       ("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
-       ("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
-       ("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
-       ("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
-       ("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
-       ("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
-       ("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
-       ("texlive-hyphen-czech" ,texlive-hyphen-czech)
-       ("texlive-hyphen-danish" ,texlive-hyphen-danish)
-       ("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
-       ("texlive-hyphen-english" ,texlive-hyphen-english)
-       ("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
-       ("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
-       ("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
-       ("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
-       ("texlive-hyphen-french" ,texlive-hyphen-french)
-       ("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
-       ("texlive-hyphen-galician" ,texlive-hyphen-galician)
-       ("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
-       ("texlive-hyphen-german" ,texlive-hyphen-german)
-       ("texlive-hyphen-greek" ,texlive-hyphen-greek)
-       ("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
-       ("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
-       ("texlive-hyphen-indic" ,texlive-hyphen-indic)
-       ("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
-       ("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
-       ("texlive-hyphen-irish" ,texlive-hyphen-irish)
-       ("texlive-hyphen-italian" ,texlive-hyphen-italian)
-       ("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
-       ("texlive-hyphen-latin" ,texlive-hyphen-latin)
-       ("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
-       ("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
-       ("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
-       ("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
-       ("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
-       ("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
-       ("texlive-hyphen-polish" ,texlive-hyphen-polish)
-       ("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
-       ("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
-       ("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
-       ("texlive-hyphen-russian" ,texlive-hyphen-russian)
-       ("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
-       ("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
-       ("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
-       ("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
-       ("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
-       ("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
-       ("texlive-hyphen-thai" ,texlive-hyphen-thai)
-       ("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
-       ("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
-       ("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
-       ("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
-       ("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
-       ("texlive-unicode-data" ,texlive-unicode-data)
-       ("texlive-ukrhyph" ,texlive-ukrhyph)
-       ("texlive-ruhyphen" ,texlive-ruhyphen)
-       ("texlive-latexconfig" ,texlive-latexconfig)))
-    (home-page "https://www.ctan.org/pkg/latex-base")
-    (synopsis "Base sources of LaTeX")
-    (description
-     "This bundle comprises the source of LaTeX itself, together with several
+  (let ((template (simple-texlive-package
+                   "texlive-latex-base"
+                   (list "/doc/latex/base/"
+                         "/source/latex/base/"
+                         ;; Almost all files in /tex/latex/base are generated, but
+                         ;; these are not:
+                         "/tex/latex/base/idx.tex"
+                         "/tex/latex/base/lablst.tex"
+                         "/tex/latex/base/lppl.tex"
+                         "/tex/latex/base/ltnews.cls"
+                         "/tex/latex/base/ltxcheck.tex"
+                         "/tex/latex/base/ltxguide.cls"
+                         "/tex/latex/base/minimal.cls"
+                         "/tex/latex/base/sample2e.tex"
+                         "/tex/latex/base/small2e.tex"
+                         "/tex/latex/base/source2e.tex"
+                         "/tex/latex/base/testpage.tex"
+                         "/tex/latex/base/texsys.cfg")
+                   (base32
+                    "0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5")
+                   #:trivial? #t)))
+    (package
+      (inherit template)
+      (arguments
+       (substitute-keyword-arguments (package-arguments template)
+         ((#:modules modules '())
+          '((guix build gnu-build-system)
+            (guix build utils)
+            (ice-9 match)
+            (srfi srfi-26)))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'build
+               (lambda* (#:key inputs #:allow-other-keys)
+                 ;; Find required fonts
+                 (setenv "TFMFONTS"
+                         (string-join
+                          (map (match-lambda
+                                 ((pkg-name . dir)
+                                  (string-append
+                                   (assoc-ref inputs pkg-name)
+                                   "/share/texmf-dist/fonts/tfm/public"
+                                   dir)))
+                               '(("texlive-etex" . "/etex")
+                                 ("texlive-cm" . "/cm")
+                                 ("texlive-fonts-latex" . "/latex-fonts")
+                                 ("texlive-fonts-knuth-lib" . "/knuth-lib")))
+                          ":"))
+                 (let ((cwd (getcwd)))
+                   (setenv "TEXINPUTS"
+                           (string-append
+                            cwd "//:"
+                            cwd "/source/latex/base//:"
+                            cwd "/build:"
+                            (string-join
+                             (map (match-lambda ((_ . dir) dir)) inputs)
+                             "//:"))))
+
+                 ;; This is the actual build step.
+                 (mkdir "build")
+                 (invoke "tex" "-ini" "-interaction=scrollmode"
+                         "-output-directory=build" "unpack.ins")
+
+                 ;; XXX: We can't build all formats at this point, nor are they
+                 ;; part of the LaTeX base, so we disable them.  Actually, we
+                 ;; should be running this all in a profile hook, so that only
+                 ;; selected formats and hyphenation patterns are included, but it
+                 ;; takes long and TeX Live isn't designed to be modular like
+                 ;; that.  Everything operates on a shared directory, which we
+                 ;; would only have at profile generation time.
+                 (let ((disabled-formats
+                        '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
+                          "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
+                          "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
+                          "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
+                          "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
+                          "mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
+                          "amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
+                          "xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
+                          "texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
+                   (mkdir "web2c")
+                   (install-file (string-append
+                                  (assoc-ref inputs "texlive-kpathsea")
+                                  "/share/texmf-dist/web2c/fmtutil.cnf")
+                                 "web2c")
+                   (make-file-writable "web2c/fmtutil.cnf")
+                   (substitute* "web2c/fmtutil.cnf"
+                     (((string-append "^(" (string-join disabled-formats "|") ")") m)
+                      (string-append "#! " m))))
+                 (invoke "fmtutil-sys" "--all"
+                         "--fmtdir=web2c"
+                         (string-append "--cnffile=web2c/fmtutil.cnf"))
+                 ;; We don't actually want to install it.
+                 (delete-file "web2c/fmtutil.cnf")
+                 #t))
+             (add-after 'install 'install-more
+               (lambda* (#:key inputs outputs #:allow-other-keys)
+                 (let* ((out (assoc-ref outputs "out"))
+                        (root (string-append out "/share/texmf-dist"))
+                        (target (string-append root "/tex/latex/base"))
+                        (web2c (string-append root "/web2c"))
+                        (makeindex (string-append root "/makeindex/latex")))
+                   (for-each delete-file (find-files "." "\\.(log|aux)$"))
+
+                   ;; The usedir directive in docstrip.ins is ignored, so these
+                   ;; two files end up in the wrong place.  Move them.
+                   (mkdir-p makeindex)
+                   (for-each (lambda (file)
+                               (install-file file makeindex)
+                               (delete-file file))
+                             '("build/gglo.ist"
+                               "build/gind.ist"))
+                   (for-each (cut install-file <> target)
+                             (find-files "build" ".*"))
+                   (for-each (cut install-file <> web2c)
+                             (find-files "web2c" ".*"))
+                   #t)))))))
+      (native-inputs
+       `(("texlive-bin" ,texlive-bin)
+         ("texlive-tex-ini-files" ,texlive-tex-ini-files)
+         ("texlive-tex-plain" ,texlive-tex-plain)
+         ("texlive-kpathsea" ,texlive-kpathsea)
+         ("texlive-cm" ,texlive-cm)
+         ("texlive-fonts-latex" ,texlive-fonts-latex)
+         ("texlive-fonts-knuth-lib" ,texlive-fonts-knuth-lib)
+         ("texlive-luatexconfig"
+          ,(texlive-origin
+            "texlive-luatexconfig" (number->string %texlive-revision)
+            (list "/tex/generic/config/luatex-unicode-letters.tex"
+                  "/tex/generic/config/luatexiniconfig.tex"
+                  "/web2c/texmfcnf.lua")
+            (base32
+             "0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7")))))
+      (propagated-inputs
+       `(("texlive-dehyph-exptl" ,texlive-dehyph-exptl)
+         ("texlive-etex" ,texlive-etex)
+         ("texlive-hyph-utf8" ,texlive-hyph-utf8)
+         ("texlive-hyphen-base" ,texlive-hyphen-base)
+         ("texlive-hyphen-afrikaans" ,texlive-hyphen-afrikaans)
+         ("texlive-hyphen-ancientgreek" ,texlive-hyphen-ancientgreek)
+         ("texlive-hyphen-armenian" ,texlive-hyphen-armenian)
+         ("texlive-hyphen-basque" ,texlive-hyphen-basque)
+         ("texlive-hyphen-belarusian" ,texlive-hyphen-belarusian)
+         ("texlive-hyphen-bulgarian" ,texlive-hyphen-bulgarian)
+         ("texlive-hyphen-catalan" ,texlive-hyphen-catalan)
+         ("texlive-hyphen-chinese" ,texlive-hyphen-chinese)
+         ("texlive-hyphen-churchslavonic" ,texlive-hyphen-churchslavonic)
+         ("texlive-hyphen-coptic" ,texlive-hyphen-coptic)
+         ("texlive-hyphen-croatian" ,texlive-hyphen-croatian)
+         ("texlive-hyphen-czech" ,texlive-hyphen-czech)
+         ("texlive-hyphen-danish" ,texlive-hyphen-danish)
+         ("texlive-hyphen-dutch" ,texlive-hyphen-dutch)
+         ("texlive-hyphen-english" ,texlive-hyphen-english)
+         ("texlive-hyphen-esperanto" ,texlive-hyphen-esperanto)
+         ("texlive-hyphen-estonian" ,texlive-hyphen-estonian)
+         ("texlive-hyphen-ethiopic" ,texlive-hyphen-ethiopic)
+         ("texlive-hyphen-finnish" ,texlive-hyphen-finnish)
+         ("texlive-hyphen-french" ,texlive-hyphen-french)
+         ("texlive-hyphen-friulan" ,texlive-hyphen-friulan)
+         ("texlive-hyphen-galician" ,texlive-hyphen-galician)
+         ("texlive-hyphen-georgian" ,texlive-hyphen-georgian)
+         ("texlive-hyphen-german" ,texlive-hyphen-german)
+         ("texlive-hyphen-greek" ,texlive-hyphen-greek)
+         ("texlive-hyphen-hungarian" ,texlive-hyphen-hungarian)
+         ("texlive-hyphen-icelandic" ,texlive-hyphen-icelandic)
+         ("texlive-hyphen-indic" ,texlive-hyphen-indic)
+         ("texlive-hyphen-indonesian" ,texlive-hyphen-indonesian)
+         ("texlive-hyphen-interlingua" ,texlive-hyphen-interlingua)
+         ("texlive-hyphen-irish" ,texlive-hyphen-irish)
+         ("texlive-hyphen-italian" ,texlive-hyphen-italian)
+         ("texlive-hyphen-kurmanji" ,texlive-hyphen-kurmanji)
+         ("texlive-hyphen-latin" ,texlive-hyphen-latin)
+         ("texlive-hyphen-latvian" ,texlive-hyphen-latvian)
+         ("texlive-hyphen-lithuanian" ,texlive-hyphen-lithuanian)
+         ("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian)
+         ("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian)
+         ("texlive-hyphen-occitan" ,texlive-hyphen-occitan)
+         ("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese)
+         ("texlive-hyphen-polish" ,texlive-hyphen-polish)
+         ("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese)
+         ("texlive-hyphen-romanian" ,texlive-hyphen-romanian)
+         ("texlive-hyphen-romansh" ,texlive-hyphen-romansh)
+         ("texlive-hyphen-russian" ,texlive-hyphen-russian)
+         ("texlive-hyphen-sanskrit" ,texlive-hyphen-sanskrit)
+         ("texlive-hyphen-serbian" ,texlive-hyphen-serbian)
+         ("texlive-hyphen-slovak" ,texlive-hyphen-slovak)
+         ("texlive-hyphen-slovenian" ,texlive-hyphen-slovenian)
+         ("texlive-hyphen-spanish" ,texlive-hyphen-spanish)
+         ("texlive-hyphen-swedish" ,texlive-hyphen-swedish)
+         ("texlive-hyphen-thai" ,texlive-hyphen-thai)
+         ("texlive-hyphen-turkish" ,texlive-hyphen-turkish)
+         ("texlive-hyphen-turkmen" ,texlive-hyphen-turkmen)
+         ("texlive-hyphen-ukrainian" ,texlive-hyphen-ukrainian)
+         ("texlive-hyphen-uppersorbian" ,texlive-hyphen-uppersorbian)
+         ("texlive-hyphen-welsh" ,texlive-hyphen-welsh)
+         ("texlive-unicode-data" ,texlive-unicode-data)
+         ("texlive-ukrhyph" ,texlive-ukrhyph)
+         ("texlive-ruhyphen" ,texlive-ruhyphen)
+         ("texlive-latexconfig" ,texlive-latexconfig)))
+      (home-page "https://www.ctan.org/pkg/latex-base")
+      (synopsis "Base sources of LaTeX")
+      (description
+       "This bundle comprises the source of LaTeX itself, together with several
 packages which are considered \"part of the kernel\".  This bundle, together
 with the required packages, constitutes what every LaTeX distribution should
 contain.")
-    (license license:lppl1.3c+)))
+      (license license:lppl1.3c+))))
 
 (define-public texlive-latex-filecontents
   (package
@@ -3578,7 +3577,10 @@ standard LaTeX packages."
                ;; the updmap.cfg file)
                (match (filter (match-lambda
                                 ((name . _)
-                                 (not (member name '("bash" "updmap.cfg")))))
+                                 (not (member name '("bash"
+                                                     "coreutils"
+                                                     "sed"
+                                                     "updmap.cfg")))))
                               %build-inputs)
                  (((names . directories) ...)
                   (union-build (assoc-ref %outputs "out")
@@ -3598,6 +3600,7 @@ standard LaTeX packages."
                (setenv "PATH" (string-append
                                (assoc-ref %build-inputs "bash") "/bin:"
                                (assoc-ref %build-inputs "coreutils") "/bin:"
+                               (assoc-ref %build-inputs "sed") "/bin:"
                                (string-append out "/bin")))
                (for-each
                 (cut wrap-program <>
@@ -3606,16 +3609,32 @@ standard LaTeX packages."
                 (find-files (string-append out "/bin") ".*"))
 
                ;; Remove invalid maps from config file.
-               (let ((port (open-pipe* OPEN_WRITE "updmap-sys"
-                                       "--syncwithtrees"
-                                       "--nohash"
-                                       (assoc-ref %build-inputs "updmap.cfg"))))
-                 (display "Y\n" port)
-                 (when (not (zero? (status:exit-val (close-pipe port))))
-                   (error "failed to filter updmap.cfg")))
-               ;; Generate maps.
-               (invoke "updmap-sys" "--force"
-                       (string-append out "/share/texmf-config/web2c/updmap.cfg"))
+               (let ((web2c (string-append out "/share/texmf-config/web2c/"))
+                     (maproot (string-append out "/share/texmf-dist/fonts/map/")))
+                 (mkdir-p web2c)
+                 (copy-file
+                  (assoc-ref %build-inputs "updmap.cfg")
+                  (string-append web2c "updmap.cfg"))
+                 (make-file-writable (string-append web2c "updmap.cfg"))
+
+                 (let* ((port (open-pipe* OPEN_WRITE "updmap-sys"
+                                          "--syncwithtrees"
+                                          "--nohash"
+                                          (string-append "--cnffile=" web2c "updmap.cfg"))))
+                   (display "Y\n" port)
+                   (when (not (zero? (status:exit-val (close-pipe port))))
+                     (error "failed to filter updmap.cfg")))
+                 ;; Generate maps.
+                 (invoke "updmap-sys"
+                         (string-append "--cnffile=" web2c "updmap.cfg")
+                         (string-append "--dvipdfmxoutputdir="
+                                        maproot "dvipdfmx/updmap/")
+                         (string-append "--dvipsoutputdir="
+                                        maproot "dvips/updmap/")
+                         (string-append "--pdftexoutputdir="
+                                        maproot "pdftex/updmap/"))
+                 ;; Having this file breaks all file lookups later.
+                 (delete-file (string-append out "/share/texmf-dist/ls-R")))
                #t))))
         (inputs
          `(("bash" ,bash)
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 432e79e350..e5dee2f4e5 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -607,7 +607,7 @@ The basic features of Geany are:
 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
+Its user interface is emacs-like and it has menus for the very most
 important functions to help beginners.  Further there is a reference
 card.  It offers:
 
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 2e8e48c8e2..27090c14cf 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -50,14 +50,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.1.5")
+    (version "0.4.1.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0984jb6hdcc10f7aq8xzl7l4jf93skp45wkv2v63z4zv0nvf0r58"))))
+               "0wgdid8w7srd218hh4rwslzdx2ickxw1pg18p2wry1r6wi65521a"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/usb-modeswitch.scm b/gnu/packages/usb-modeswitch.scm
index 8f1cf9df60..7e4526ae46 100644
--- a/gnu/packages/usb-modeswitch.scm
+++ b/gnu/packages/usb-modeswitch.scm
@@ -69,7 +69,7 @@
            (install-file (string-append files "/COPYING") license-dir)))))
     (home-page "http://www.draisberghof.de/usb_modeswitch/")
     (synopsis "Data package for USB_ModeSwitch")
-    (description "This packages contains data about devices and a UDEV rules
+    (description "This package contains data about devices and a UDEV rules
 file for use with USB_ModeSwitch.")
     (license license:gpl2+)))
 
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 11219589b6..eef481d52a 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1495,8 +1495,8 @@ access to mpv's powerful playback capabilities.")
     (version "2019.09.12")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
-                                  "download/" version "/youtube-dl-"
+              (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
+                                  "releases/download/" version "/youtube-dl-"
                                   version ".tar.gz"))
               (sha256
                (base32
@@ -2297,7 +2297,7 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "23.0.2")
+    (version "24.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2306,7 +2306,7 @@ be used for realtime video capture via Linux-specific APIs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1c0a5vy4h3qwz69qw3bydyk7r651ib5a9jna4yj6c25p3p9isdvp"))))
+                "056s0hs1ds3c57sc0gy39dxaxvwlakl3w25jxgawh0fs99211ar5"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -2326,6 +2326,7 @@ be used for realtime video capture via Linux-specific APIs.")
        ("mesa" ,mesa)
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
        ("speex" ,speex)
        ("v4l-utils" ,v4l-utils)
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index bfc0976f0e..6d9126dedc 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -368,7 +368,7 @@ driven and does not detract you from your daily work.")
 (define next-gtk-webkit
   (package
     (name "next-gtk-webkit")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method git-fetch)
@@ -379,7 +379,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "01fn1f080ydk0wj1bwkyakqz93bdq9xb5x8qz820jpl9id17bqgj"))
+         "0863p6ch4pdrn6b81cx2abis0ld7r2n6x34v3z0ihj3jlfj21yx4"))
        (file-name (git-file-name "next" version))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -417,19 +417,31 @@ features for productive professionals.")
        #:asd-file "next.asd"
        #:asd-system-name "next/download-manager"))
     (inputs
-     `(;; ASD libraries:
-       ("trivial-features" ,sbcl-trivial-features)
-       ;; Lisp libraries:
-       ("cl-ppcre" ,sbcl-cl-ppcre)
+     `(("cl-ppcre" ,sbcl-cl-ppcre)
        ("dexador" ,sbcl-dexador)
        ("log4cl" ,sbcl-log4cl)
        ("lparallel" ,sbcl-lparallel)
        ("quri" ,sbcl-quri)
        ("str" ,sbcl-cl-str)))
     (native-inputs
-     `(("prove-asdf" ,sbcl-prove-asdf)))
+     `(("trivial-features" ,sbcl-trivial-features)
+       ("prove-asdf" ,sbcl-prove-asdf)))
     (synopsis "Infinitely extensible web-browser (download manager)")))
 
+(define sbcl-next-ring
+  (package
+    (inherit next-gtk-webkit)
+    (name "sbcl-next-ring")
+    (build-system asdf-build-system/sbcl)
+    (arguments
+     `(#:tests? #t
+       #:asd-file "next.asd"
+       #:asd-system-name "next/ring"))
+    (native-inputs
+     `(("trivial-features" ,sbcl-trivial-features)
+       ("prove-asdf" ,sbcl-prove-asdf)))
+    (synopsis "Infinitely extensible web-browser (ring)")))
+
 (define-public next
   (let ((version (package-version next-gtk-webkit)))
     (package
@@ -491,14 +503,11 @@ features for productive professionals.")
                                 (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)
+       `(("alexandria" ,sbcl-alexandria)
          ("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("cl-annot" ,sbcl-cl-annot)
          ("cl-css" ,sbcl-cl-css)
+         ("cl-hooks" ,sbcl-cl-hooks)
          ("cl-json" ,sbcl-cl-json)
          ("cl-markup" ,sbcl-cl-markup)
          ("cl-ppcre" ,sbcl-cl-ppcre)
@@ -507,6 +516,7 @@ features for productive professionals.")
          ("dbus" ,cl-dbus)
          ("dexador" ,sbcl-dexador)
          ("ironclad" ,sbcl-ironclad)
+         ("local-time" ,sbcl-local-time)
          ("log4cl" ,sbcl-log4cl)
          ("lparallel" ,sbcl-lparallel)
          ("mk-string-metrics" ,sbcl-mk-string-metrics)
@@ -519,9 +529,12 @@ features for productive professionals.")
          ("trivial-clipboard" ,sbcl-trivial-clipboard)
          ("unix-opts" ,sbcl-unix-opts)
          ;; Local deps
-         ("next-download-manager" ,sbcl-next-download-manager)))
+         ("next-gtk-webkit" ,next-gtk-webkit)
+         ("next-download-manager" ,sbcl-next-download-manager)
+         ("next-ring" ,sbcl-next-ring)))
       (native-inputs
-       `(("prove-asdf" ,sbcl-prove-asdf)))
+       `(("trivial-features" ,sbcl-trivial-features)
+         ("prove-asdf" ,sbcl-prove-asdf)))
       (synopsis "Infinitely extensible web-browser (with Lisp development files)"))))
 
 (define-public sbcl-next
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 5b1f60cfdd..c9e46ef7e9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -123,6 +123,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages re2c)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
@@ -860,6 +861,45 @@ for efficient socket-like bidirectional reliable communication channels.")
     ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
     (license license:lgpl2.1)))
 
+(define-public wabt
+  (package
+    (name "wabt")
+    (version "1.0.11")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/WebAssembly/wabt")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hn88vlqyclpk79v3wg3lrssd9vwhjdgvb41g03jqakygxxgnmp5"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags '("-DBUILD_TESTS=OFF")
+       #:tests? #f))
+    (inputs `(("python" ,python-2)
+              ("re2c" ,re2c)))
+    (home-page "https://github.com/WebAssembly/wabt")
+    (synopsis "WebAssembly Binary Toolkit")
+    (description "WABT (pronounced: wabbit) is a suite of tools for
+WebAssembly, including:
+
+* wat2wasm: translate from WebAssembly text format to the WebAssembly binary
+  format
+* wasm2wat: the inverse of wat2wasm, translate from the binary format back
+  to the text format (also known as a .wat)
+* wasm-objdump: print information about a wasm binary.  Similar to objdump.
+* wasm-interp: decode and run a WebAssembly binary file using a stack-based
+  interpreter
+* wat-desugar: parse .wat text form as supported by the spec interpreter
+  (s-expressions, flat syntax, or mixed) and print canonical flat format
+* wasm2c: convert a WebAssembly binary file to a C source and header
+
+These tools are intended for use in (or for development of) toolchains or
+other systems that want to manipulate WebAssembly files.")
+    (license license:asl2.0)))
+
 (define-public websocketpp
   (package
     (name "websocketpp")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index ae399803f3..70213a617e 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -25,6 +25,7 @@
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
+;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1687,16 +1688,16 @@ temperature of the screen.")
 (define-public wl-clipboard
   (package
     (name "wl-clipboard")
-    (version "1.0.0")
+    (version "2.0.0_beta2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/bugaevc/wl-clipboard.git")
-             (commit (string-append "v" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "03h6ajcc30w6928bkd4h6xfj4iy2359ww6hdlybq8mr1zwmb2h0q"))))
+        (base32 "0wyqbaph9v1v6lwfcjf8gjhdl70icpss4wapshzfxcz3l9m1p8hv"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1708,3 +1709,28 @@ temperature of the screen.")
     (description "Wl-clipboard is a set of command-line copy/paste utilities for
 Wayland.")
     (license license:gpl3+)))
+
+(define-public autocutsel
+  (package
+    (name "autocutsel")
+    (version "0.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/sigmike/autocutsel"
+                                  "/releases/download/" version "/"
+                                  "autocutsel-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0gsys2dzh4az51ndcsabhlbbrjn2nm75lnjr45kg6r8sm8q66dx2"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f)) ; no "check" target
+    (native-inputs `(("libx11" ,libx11)
+                     ("libxaw" ,libxaw)))
+    (home-page "https://www.nongnu.org/autocutsel/")
+    (synopsis "Automated X11 clipboard and cutbuffer synchronization")
+    (description "@code{autocutsel} tracks changes in the server's cutbuffer
+and clipboard selection.  When the clipboard is changed, it updates the
+cutbuffer.  When the cutbuffer is changed, it owns the clipboard selection.
+The cutbuffer and clipboard selection are always synchronized.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index b8f3774039..3a853ea661 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1363,7 +1363,7 @@ maintaining each reference encountered.")
      "This module provides an XPath engine, that can be re-used by other
 modules/classes that implement trees.
 
-In order to use the XPath engine, nodes in the user module need to mimick DOM
+In order to use the XPath engine, nodes in the user module need to mimic DOM
 nodes.  The degree of similitude between the user tree and a DOM dictates how
 much of the XPath features can be used.  A module implementing all of the DOM
 should be able to use this module very easily (you might need to add the
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index 7bd43cd427..914a0d337f 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -81,70 +81,68 @@
 
 (define (cuirass-shepherd-service config)
   "Return a <shepherd-service> for the Cuirass service with CONFIG."
-  (and
-   (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))
-         (interval         (cuirass-configuration-interval config))
-         (database         (cuirass-configuration-database config))
-         (ttl              (cuirass-configuration-ttl config))
-         (port             (cuirass-configuration-port config))
-         (host             (cuirass-configuration-host config))
-         (specs            (cuirass-configuration-specifications config))
-         (use-substitutes? (cuirass-configuration-use-substitutes? config))
-         (one-shot?        (cuirass-configuration-one-shot? config))
-         (fallback?        (cuirass-configuration-fallback? config)))
-     (list (shepherd-service
-            (documentation "Run Cuirass.")
-            (provision '(cuirass))
-            (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")
-                            "--interval" #$(number->string interval)
-                            #$@(if use-substitutes? '("--use-substitutes") '())
-                            #$@(if one-shot? '("--one-shot") '())
-                            #$@(if fallback? '("--fallback") '()))
+  (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))
+        (interval         (cuirass-configuration-interval config))
+        (database         (cuirass-configuration-database config))
+        (ttl              (cuirass-configuration-ttl config))
+        (port             (cuirass-configuration-port config))
+        (host             (cuirass-configuration-host config))
+        (specs            (cuirass-configuration-specifications config))
+        (use-substitutes? (cuirass-configuration-use-substitutes? config))
+        (one-shot?        (cuirass-configuration-one-shot? config))
+        (fallback?        (cuirass-configuration-fallback? config)))
+    (list (shepherd-service
+           (documentation "Run Cuirass.")
+           (provision '(cuirass))
+           (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")
+                           "--interval" #$(number->string interval)
+                           #$@(if use-substitutes? '("--use-substitutes") '())
+                           #$@(if one-shot? '("--one-shot") '())
+                           #$@(if fallback? '("--fallback") '()))
 
-                      #:environment-variables
-                      (list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
-                            (string-append "GIT_EXEC_PATH=" #$git
-                                           "/libexec/git-core"))
+                     #:environment-variables
+                     (list "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
+                           (string-append "GIT_EXEC_PATH=" #$git
+                                          "/libexec/git-core"))
 
-                      #: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 #$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)))))))
+                     #:user #$user
+                     #:group #$group
+                     #:log-file #$web-log-file))
+           (stop #~(make-kill-destructor))))))
 
 (define (cuirass-account config)
   "Return the user accounts and user groups for CONFIG."
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 3de0b4c2f3..2606aa9e3e 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -137,7 +137,7 @@
 (define (free-form-fields? val)
   (match val
     (() #t)
-    ((((? symbol?) . (? string)) . val) (free-form-fields? val))
+    ((((? symbol?) . (? string?)) . val) (free-form-fields? val))
     (_ #f)))
 (define (serialize-free-form-fields field-name val)
   (for-each (match-lambda ((k . v) (serialize-field k v))) val))
@@ -145,7 +145,7 @@
 (define (free-form-args? val)
   (match val
     (() #t)
-    ((((? symbol?) . (? string)) . val) (free-form-args? val))
+    ((((? symbol?) . (? string?)) . val) (free-form-args? val))
     (_ #f)))
 (define (serialize-free-form-args field-name val)
   (serialize-field field-name
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index c775242f99..dd63009116 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -144,7 +145,14 @@
             iptables-configuration-iptables
             iptables-configuration-ipv4-rules
             iptables-configuration-ipv6-rules
-            iptables-service-type))
+            iptables-service-type
+
+            nftables-service-type
+            nftables-configuration
+            nftables-configuration?
+            nftables-configuration-package
+            nftables-configuration-ruleset
+            %default-nftables-ruleset))
 
 ;;; Commentary:
 ;;;
@@ -1415,4 +1423,76 @@ COMMIT
     (list (service-extension shepherd-root-service-type
                              (compose list iptables-shepherd-service))))))
 
+;;;
+;;; nftables
+;;;
+
+(define %default-nftables-ruleset
+  (plain-file "nftables.conf"
+              "# A simple and safe firewall
+table inet filter {
+  chain input {
+    type filter hook input priority 0; policy drop;
+
+    # early drop of invalid connections
+    ct state invalid drop
+
+    # allow established/related connections
+    ct state { established, related } accept
+
+    # allow from loopback
+    iifname lo accept
+
+    # allow icmp
+    ip protocol icmp accept
+    ip6 nexthdr icmpv6 accept
+
+    # allow ssh
+    tcp dport ssh accept
+
+    # reject everything else
+    reject with icmpx type port-unreachable
+  }
+  chain forward {
+    type filter hook forward priority 0; policy drop;
+  }
+  chain output {
+    type filter hook output priority 0; policy accept;
+  }
+}
+"))
+
+(define-record-type* <nftables-configuration>
+  nftables-configuration
+  make-nftables-configuration
+  nftables-configuration?
+  (package nftables-configuration-package
+           (default nftables))
+  (ruleset nftables-configuration-ruleset ; file-like object
+           (default %default-nftables-ruleset)))
+
+(define nftables-shepherd-service
+  (match-lambda
+    (($ <nftables-configuration> package ruleset)
+     (let ((nft (file-append package "/sbin/nft")))
+       (shepherd-service
+        (documentation "Packet filtering and classification")
+        (provision '(nftables))
+        (start #~(lambda _
+                   (invoke #$nft "--file" #$ruleset)))
+        (stop #~(lambda _
+                  (invoke #$nft "flush" "ruleset"))))))))
+
+(define nftables-service-type
+  (service-type
+   (name 'nftables)
+   (description
+    "Run @command{nft}, setting up the specified ruleset.")
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             (compose list nftables-shepherd-service))
+          (service-extension profile-service-type
+                             (compose list nftables-configuration-package))))
+   (default-value (nftables-configuration))))
+
 ;;; networking.scm ends here
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 3eecd2c085..bc8ac9b40a 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -313,7 +313,7 @@ be logged:
 Multiple filters can be defined in a single filters statement, they just
 need to be separated by spaces.")
   (log-outputs
-    (string "3:stderr")
+    (string "3:syslog:libvirtd")
     "Logging outputs.
 
 An output is one of the places to save logging information
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 06d72b5f60..1d55e388a1 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -773,6 +773,27 @@ the GNOME desktop environment.")
          (home-directory "/var/lib/gdm")
          (shell (file-append shadow "/sbin/nologin")))))
 
+(define %gdm-activation
+  ;; Ensure /var/lib/gdm is owned by the "gdm" user.  This is normally the
+  ;; case but could be wrong if the "gdm" user was created, then removed, and
+  ;; then recreated under a different UID/GID: <https://bugs.gnu.org/37423>.
+  (with-imported-modules '((guix build utils))
+    #~(begin
+        (use-modules (guix build utils))
+
+        (let* ((gdm (getpwnam "gdm"))
+               (uid (passwd:uid gdm))
+               (gid (passwd:gid gdm))
+               (st  (stat "/var/lib/gdm" #f)))
+          ;; Recurse into /var/lib/gdm only if it has wrong ownership.
+          (when (and st
+                     (or (not (= uid (stat:uid st)))
+                         (not (= gid (stat:gid st)))))
+            (for-each (lambda (file)
+                        (chown file uid gid))
+                      (find-files "/var/lib/gdm"
+                                  #:directories? #t)))))))
+
 (define dbus-daemon-wrapper
   (program-file
    "gdm-dbus-wrapper"
@@ -915,6 +936,8 @@ the GNOME desktop environment.")
                 (extensions
                  (list (service-extension shepherd-root-service-type
                                           gdm-shepherd-service)
+                       (service-extension activation-service-type
+                                          (const %gdm-activation))
                        (service-extension account-service-type
                                           (const %gdm-accounts))
                        (service-extension pam-root-service-type
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm
index c6124cd223..2ab679ff3f 100644
--- a/gnu/system/linux-container.scm
+++ b/gnu/system/linux-container.scm
@@ -257,11 +257,13 @@ effects."
                                            (lowered-gexp-guile lowered))
                                           "/bin/guile")
                            "guile"
-                           (append (map (lambda (directory) `("-L" ,directory))
-                                        (lowered-gexp-load-path lowered))
-                                   (map (lambda (directory) `("-C" ,directory))
-                                        (lowered-gexp-load-compiled-path
-                                         lowered))
+                           (append (append-map (lambda (directory)
+                                                 `("-L" ,directory))
+                                               (lowered-gexp-load-path lowered))
+                                   (append-map (lambda (directory)
+                                                 `("-C" ,directory))
+                                               (lowered-gexp-load-compiled-path
+                                                lowered))
                                    (list "-c"
                                          (object->string
                                           (lowered-gexp-sexp lowered))))))))))))
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 0871b4c6f7..27cb39c2b9 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -87,8 +87,7 @@
             (requirement `(udev ,@requirement))
 
             (modules '((ice-9 match)
-                       (srfi srfi-9 gnu)
-                       (rnrs bytevectors)))
+                       (srfi srfi-9 gnu)))
             (start
              (with-imported-modules imported-modules
                #~(lambda ()
@@ -98,8 +97,8 @@
                                                ((_ pred rest ...)
                                                 (or (pred x)
                                                     (one-of rest ...))))))
-                       (one-of symbol? string? pair? null? vector?
-                               bytevector? number? boolean?)))
+                       (one-of symbol? string? keyword? pair? null? array?
+                               number? boolean?)))
 
                    (match (primitive-fork)
                      (0