summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi33
-rw-r--r--gnu/local.mk12
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/base.scm10
-rw-r--r--gnu/packages/bioconductor.scm21
-rw-r--r--gnu/packages/bootloaders.scm7
-rw-r--r--gnu/packages/build-tools.scm26
-rw-r--r--gnu/packages/calendar.scm58
-rw-r--r--gnu/packages/cedille.scm9
-rw-r--r--gnu/packages/chromium.scm8
-rw-r--r--gnu/packages/code.scm3
-rw-r--r--gnu/packages/cran.scm208
-rw-r--r--gnu/packages/crates-io.scm1108
-rw-r--r--gnu/packages/crypto.scm45
-rw-r--r--gnu/packages/databases.scm30
-rw-r--r--gnu/packages/django.scm26
-rw-r--r--gnu/packages/docker.scm11
-rw-r--r--gnu/packages/emacs-xyz.scm190
-rw-r--r--gnu/packages/flex.scm13
-rw-r--r--gnu/packages/freedesktop.scm40
-rw-r--r--gnu/packages/games.scm130
-rw-r--r--gnu/packages/gcc.scm29
-rw-r--r--gnu/packages/geo.scm20
-rw-r--r--gnu/packages/gnome-xyz.scm42
-rw-r--r--gnu/packages/gnome.scm358
-rw-r--r--gnu/packages/gnupg.scm25
-rw-r--r--gnu/packages/graphics.scm2
-rw-r--r--gnu/packages/graphviz.scm2
-rw-r--r--gnu/packages/gtk.scm30
-rw-r--r--gnu/packages/guile-xyz.scm2
-rw-r--r--gnu/packages/haskell-apps.scm26
-rw-r--r--gnu/packages/haskell-xyz.scm70
-rw-r--r--gnu/packages/hyperledger.scm3
-rw-r--r--gnu/packages/image.scm4
-rw-r--r--gnu/packages/java.scm10
-rw-r--r--gnu/packages/kde-pim.scm802
-rw-r--r--gnu/packages/kde.scm31
-rw-r--r--gnu/packages/libreoffice.scm72
-rw-r--r--gnu/packages/linux.scm62
-rw-r--r--gnu/packages/lisp-xyz.scm8
-rw-r--r--gnu/packages/logging.scm4
-rw-r--r--gnu/packages/lua.scm2
-rw-r--r--gnu/packages/machine-learning.scm82
-rw-r--r--gnu/packages/mail.scm2
-rw-r--r--gnu/packages/maths.scm2
-rw-r--r--gnu/packages/networking.scm43
-rw-r--r--gnu/packages/ocaml.scm10
-rw-r--r--gnu/packages/opencl.scm2
-rw-r--r--gnu/packages/package-management.scm7
-rw-r--r--gnu/packages/patches/date-output-pkg-config-files.patch60
-rw-r--r--gnu/packages/patches/ffmpeg-prefer-dav1d.patch43
-rw-r--r--gnu/packages/patches/foobillard++-pkg-config.patch34
-rw-r--r--gnu/packages/patches/hash-extender-test-suite.patch13
-rw-r--r--gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch42
-rw-r--r--gnu/packages/patches/kdiagram-Fix-missing-link-libraries.patch23
-rw-r--r--gnu/packages/patches/kmail-Fix-missing-link-libraries.patch41
-rw-r--r--gnu/packages/patches/libksieve-Fix-missing-link-libraries.patch59
-rw-r--r--gnu/packages/patches/python-faker-fix-build-32bit.patch36
-rw-r--r--gnu/packages/perl-compression.scm6
-rw-r--r--gnu/packages/php.scm8
-rw-r--r--gnu/packages/python-crypto.scm2
-rw-r--r--gnu/packages/python-xyz.scm241
-rw-r--r--gnu/packages/rpc.scm177
-rw-r--r--gnu/packages/rsync.scm10
-rw-r--r--gnu/packages/ruby.scm11
-rw-r--r--gnu/packages/statistics.scm8
-rw-r--r--gnu/packages/time.scm27
-rw-r--r--gnu/packages/version-control.scm2
-rw-r--r--gnu/packages/video.scm6
-rw-r--r--gnu/packages/vim.scm4
-rw-r--r--gnu/packages/web.scm20
-rw-r--r--gnu/packages/wm.scm11
-rw-r--r--gnu/packages/xorg.scm100
-rw-r--r--gnu/system/shadow.scm10
-rw-r--r--gnu/tests/install.scm8
-rw-r--r--guix/inferior.scm24
-rw-r--r--guix/lint.scm1
-rw-r--r--guix/packages.scm37
-rw-r--r--guix/repl.scm86
-rw-r--r--guix/scripts/package.scm2
-rw-r--r--tests/inferior.scm3
82 files changed, 3871 insertions, 1032 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index c2eff582f8..92125abccc 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1738,22 +1738,18 @@ information.
 @subsection Emacs Packages
 
 @cindex @code{emacs}
-When you install Emacs packages with Guix, the elisp files may be placed
-either in @file{$HOME/.guix-profile/share/emacs/site-lisp/} or in
-sub-directories of
-@file{$HOME/.guix-profile/share/emacs/site-lisp/guix.d/}.  The latter
-directory exists because potentially there may exist thousands of Emacs
-packages and storing all their files in a single directory may not be
-reliable (because of name conflicts).  So we think using a separate
-directory for each package is a good idea.  It is very similar to how
-the Emacs package system organizes the file structure (@pxref{Package
-Files,,, emacs, The GNU Emacs Manual}).
-
-By default, Emacs (installed with Guix) ``knows'' where these packages
-are placed, so you do not need to perform any configuration.  If, for
-some reason, you want to avoid auto-loading Emacs packages installed
-with Guix, you can do so by running Emacs with @code{--no-site-file}
-option (@pxref{Init File,,, emacs, The GNU Emacs Manual}).
+When you install Emacs packages with Guix, the Elisp files are placed
+under the @file{share/emacs/site-lisp/} directory of the profile in
+which they are installed.  The Elisp libraries are made available to
+Emacs through the @code{EMACSLOADPATH} environment variable, which is
+set when installing Emacs itself.
+
+Additionally, autoload definitions are automatically evaluated at the
+initialization of Emacs, by the Guix-specific
+@code{guix-emacs-autoload-packages} procedure.  If, for some reason, you
+want to avoid auto-loading the Emacs packages installed with Guix, you
+can do so by running Emacs with the @code{--no-site-file} option
+(@pxref{Init File,,, emacs, The GNU Emacs Manual}).
 
 @subsection The GCC toolchain
 
@@ -6681,9 +6677,8 @@ of Emacs itself (@pxref{Packages,,, emacs, The GNU Emacs Manual}).
 It first creates the @code{@code{package}-autoloads.el} file, then it
 byte compiles all Emacs Lisp files.  Differently from the Emacs
 packaging system, the Info documentation files are moved to the standard
-documentation directory and the @file{dir} file is deleted.  Each
-package is installed in its own directory under
-@file{share/emacs/site-lisp/guix.d}.
+documentation directory and the @file{dir} file is deleted.  The Elisp
+package files are installed directly under @file{share/emacs/site-lisp}.
 @end defvr
 
 @defvr {Scheme Variable} font-build-system
diff --git a/gnu/local.mk b/gnu/local.mk
index f8414ec69f..9db4019d2b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -26,6 +26,8 @@
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
 # Copyright © 2019 Brett Gilio <brettg@gnu.org>
 # Copyright © 2019 Amin Bandali <mab@gnu.org>
+# Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
+# Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 #
 # This file is part of GNU Guix.
 #
@@ -439,6 +441,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/rednotebook.scm			\
   %D%/packages/regex.scm				\
   %D%/packages/robotics.scm			\
+  %D%/packages/rpc.scm				\
   %D%/packages/rrdtool.scm			\
   %D%/packages/rsync.scm			\
   %D%/packages/ruby.scm				\
@@ -811,6 +814,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
   %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch		\
+  %D%/packages/patches/date-output-pkg-config-files.patch	\
   %D%/packages/patches/darkice-workaround-fpermissive-error.patch	\
   %D%/packages/patches/datefudge-gettimeofday.patch		\
   %D%/packages/patches/dbus-helper-search-path.patch		\
@@ -871,6 +875,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/fasthenry-spSolve.patch			\
   %D%/packages/patches/fasthenry-spFactor.patch			\
   %D%/packages/patches/fbreader-curl-7.62.patch		\
+  %D%/packages/patches/ffmpeg-prefer-dav1d.patch		\
   %D%/packages/patches/fifengine-swig-compat.patch		\
   %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch		\
   %D%/packages/patches/fifo-map-remove-catch.hpp.patch		\
@@ -878,6 +883,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/findutils-test-rwlock-threads.patch	\
   %D%/packages/patches/flann-cmake-3.11.patch			\
   %D%/packages/patches/flint-ldconfig.patch			\
+  %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
   %D%/packages/patches/freeimage-unbundle.patch		\
@@ -1009,6 +1015,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gtksourceview-2-add-default-directory.patch \
   %D%/packages/patches/gzdoom-search-in-installed-share.patch	\
   %D%/packages/patches/gzdoom-find-system-libgme.patch	\
+  %D%/packages/patches/hash-extender-test-suite.patch		\
   %D%/packages/patches/haskell-mode-unused-variables.patch	\
   %D%/packages/patches/haskell-mode-make-check.patch		\
   %D%/packages/patches/hdf4-architectures.patch 		\
@@ -1062,6 +1069,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/libvirt-create-machine-cgroup.patch	\
   %D%/packages/patches/libziparchive-add-includes.patch		\
   %D%/packages/patches/localed-xorg-keyboard.patch		\
+  %D%/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch \
+  %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \
   %D%/packages/patches/kiki-level-selection-crash.patch		\
   %D%/packages/patches/kiki-makefile.patch			\
   %D%/packages/patches/kiki-missing-includes.patch		\
@@ -1069,6 +1078,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kinit-kdeinit-extra_libs.patch		\
   %D%/packages/patches/kinit-kdeinit-libpath.patch		\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
+  %D%/packages/patches/kmail-Fix-missing-link-libraries.patch \
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/kpackage-allow-external-paths.patch	\
@@ -1115,6 +1125,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libjxr-fix-function-signature.patch	\
   %D%/packages/patches/libjxr-fix-typos.patch			\
   %D%/packages/patches/libotr-test-auth-fix.patch		\
+  %D%/packages/patches/libksieve-Fix-missing-link-libraries.patch \
   %D%/packages/patches/libmad-armv7-thumb-pt1.patch		\
   %D%/packages/patches/libmad-armv7-thumb-pt2.patch		\
   %D%/packages/patches/libmad-length-check.patch		\
@@ -1335,7 +1346,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-cross-compile.patch		\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
   %D%/packages/patches/python-configobj-setuptools.patch	\
-  %D%/packages/patches/python-faker-fix-build-32bit.patch	\
   %D%/packages/patches/python-flask-restful-werkzeug-compat.patch	\
   %D%/packages/patches/python-keras-integration-test.patch	\
   %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 45d4a513c8..f5cebc0283 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1923,13 +1923,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.9.5")
+    (version "2.9.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "19fav6rs58zdc3gfhh1lxhki36jn4252183rrd769sv46b9m1bji"))))
+        (base32 "1jfbp1i3nl4yvqwd5ssy43dz3pq2x03mn875vb8r56gqh43kmksr"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 5772547e3e..e72fe66e6f 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3264,14 +3264,14 @@ with support for HD extensions.")
 (define-public bs1770gain
   (package
     (name "bs1770gain")
-    (version "0.6.5")
+    (version "0.6.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
                            version "/bs1770gain-" version ".tar.gz"))
        (sha256
-        (base32 "15nvlh9bg0a52cpg2mii17mlzmxszwivjjalbb4np1v5nj8l5fk6"))
+        (base32 "13hsbqj1dkpz1gbclnjxv50kr7b4gcjai6c1l38g01433h217qjc"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 8dbc0b4b40..c3298b3cec 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -335,10 +336,11 @@ used to apply commands with arbitrarily long arguments.")
                      #t)))))
    (synopsis "Core GNU utilities (file, text, shell)")
    (description
-    "GNU Coreutils includes all of the basic command-line tools that are
-expected in a POSIX system.  These provide the basic file, shell and text
-manipulation functions of the GNU system.  Most of these tools offer extended
-functionality beyond that which is outlined in the POSIX standard.")
+    "GNU Coreutils package includes all of the basic command-line tools that
+are expected in a POSIX system, excluding shell.  This package is the union of
+the GNU fileutils, sh-utils, and textutils packages.  Most of these tools
+offer extended functionality beyond that which is outlined in the POSIX
+standard.")
    (license gpl3+)
    (home-page "https://www.gnu.org/software/coreutils/")))
 
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index bc7623eac3..6ec74140e3 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -5316,14 +5316,14 @@ coefficients).")
 (define-public r-biosigner
   (package
     (name "r-biosigner")
-    (version "1.14.0")
+    (version "1.14.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "biosigner" version))
        (sha256
         (base32
-         "1kdfhw629qczrfms0jmphqz0ksjzi8js00xj92h1lnv092npfk0j"))))
+         "184vbbd010yzqv0qn1prxiazibxwiacvlpg9yzcgyhamcx9bvq73"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-biobase" ,r-biobase)
@@ -5332,10 +5332,7 @@ coefficients).")
        ("r-randomforest" ,r-randomforest)
        ("r-ropls" ,r-ropls)))
     (native-inputs
-     `(("r-knitr" ,r-knitr)
-       ("r-rmarkdown" ,r-rmarkdown)
-       ("pandoc" ,ghc-pandoc)
-       ("pandoc-citeproc" ,ghc-pandoc-citeproc))) ; all for vignettes
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://bioconductor.org/packages/biosigner/")
     (synopsis "Signature discovery from omics data")
     (description
@@ -7402,18 +7399,19 @@ gene selection, testing relationships, and so on.")
 (define-public r-biocpkgtools
   (package
     (name "r-biocpkgtools")
-    (version "1.4.0")
+    (version "1.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocPkgTools" version))
        (sha256
         (base32
-         "0gyhb3071pxmvaxla7cxy9k97s3z3ynl62jnqz9jnkd53c7jnd53"))))
+         "0grwnmncmpqcplbfw3j210m1a8f7mmdizklh4zksg4ic21dpjj1a"))))
     (properties `((upstream-name . "BiocPkgTools")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-biocmanager" ,r-biocmanager)
+     `(("r-biocfilecache" ,r-biocfilecache)
+       ("r-biocmanager" ,r-biocmanager)
        ("r-biocviews" ,r-biocviews)
        ("r-dplyr" ,r-dplyr)
        ("r-dt" ,r-dt)
@@ -7425,14 +7423,19 @@ gene selection, testing relationships, and so on.")
        ("r-igraph" ,r-igraph)
        ("r-jsonlite" ,r-jsonlite)
        ("r-magrittr" ,r-magrittr)
+       ("r-rappdirs" ,r-rappdirs)
        ("r-rbgl" ,r-rbgl)
        ("r-readr" ,r-readr)
        ("r-rex" ,r-rex)
+       ("r-rlang" ,r-rlang)
        ("r-rvest" ,r-rvest)
        ("r-stringr" ,r-stringr)
        ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)
+       ("r-tidyselect" ,r-tidyselect)
        ("r-xml2" ,r-xml2)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/seandavi/BiocPkgTools")
     (synopsis "Collection of tools for learning about Bioconductor packages")
     (description
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 425c0d53c9..44808e1225 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -173,10 +173,7 @@
      `(("pkg-config" ,pkg-config)
        ("unifont" ,unifont)
        ("bison" ,bison)
-       ;; Due to a bug in flex >= 2.6.2, GRUB must be built with an older flex:
-       ;; <http://lists.gnu.org/archive/html/grub-devel/2017-02/msg00133.html>
-       ;; TODO Try building with flex > 2.6.4.
-       ("flex" ,flex-2.6.1)
+       ("flex" ,flex)
        ("texinfo" ,texinfo)
        ("help2man" ,help2man)
 
@@ -199,7 +196,7 @@
        ;; Dependencies for the test suite.  The "real" QEMU is needed here,
        ;; because several targets are used.
        ("parted" ,parted)
-       ("qemu" ,qemu-minimal-2.10)
+       ("qemu" ,qemu-minimal)
        ("xorriso" ,xorriso)))
     (home-page "https://www.gnu.org/software/grub/")
     (synopsis "GRand Unified Boot loader")
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index e8f5be8f05..d7e4fd946b 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -245,6 +246,31 @@ other lower-level build files.")
     (home-page "https://premake.github.io")
     (license license:bsd-3)))
 
+(define-public premake5
+  (package
+    (inherit premake4)
+    (version "5.0.0-alpha14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/premake/premake-core/"
+                                  "releases/download/v" version
+                                  "/premake-" version "-src.zip"))
+              (sha256
+               (base32
+                "0236s7bjvxf7x1l5faywmfzjywflpx42ngyhkn0mqqjnh54a97vw"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments premake4)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (install-file "../../bin/release/premake5"
+                             (string-append (assoc-ref outputs "out") "/bin"))
+               #t))))))
+    (description "@code{premake5} is a command line utility that reads a
+scripted definition of a software project and outputs @file{Makefile}s or
+other lower-level build files.")))
+
 (define-public osc
   (package
     (name "osc")
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 060e4d18ad..bd47800d1d 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Stefan Reichoer <stefan@xsteve.at>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com
+;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +27,7 @@
 (define-module (gnu packages calendar)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -48,6 +50,62 @@
   #:use-module (gnu packages xml)
   #:use-module (srfi srfi-26))
 
+(define-public date
+  ;; We make the same choice as the Arch package maintainer by choosing a
+  ;; recent commit to fix some bugs.
+  ;; https://github.com/Alexays/Waybar/issues/565
+  (let ((commit "9a0ee2542848ab8625984fc8cdbfb9b5414c0082"))
+    (package
+      (name "date")
+      (version (string-append "2.4.1-" (string-take commit 8)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/HowardHinnant/date.git")
+               (commit "9a0ee2542848ab8625984fc8cdbfb9b5414c0082")))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0yxsn0hj22n61bjywysxqgfv7hj5xvsl6isma95fl8xrimpny083"))
+         (patches
+          ;; Install pkg-config files
+          ;; https://github.com/HowardHinnant/date/pull/538
+          (search-patches "date-output-pkg-config-files.patch"))))
+      (inputs `(("tzdata" ,tzdata)))
+      (build-system cmake-build-system)
+      (arguments
+       '(#:configure-flags (list "-DUSE_SYSTEM_TZ_DB=ON"
+                                 "-DBUILD_SHARED_LIBS=ON"
+                                 "-DBUILD_TZ_LIB=ON"
+                                 "-DENABLE_DATE_TESTING=ON")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-bin-bash
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "compile_fail.sh"
+                 (("/bin/bash") (which "bash")))
+               #t))
+           (add-after 'unpack 'patch-zoneinfo-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "src/tz.cpp"
+                 (("/usr/share/zoneinfo")
+                  (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
+               #t))
+           (replace 'check
+             (lambda _
+               ;; Disable test that requires checking timezone that
+               ;; isn't set in the build environment.
+               (substitute* "CTestTestfile.cmake"
+                 (("add_test.tz_test_pass_zoned_time_deduction_test.*") "")
+                 (("set_tests_properties.tz_test_pass_zoned_time_deduction_test.*") ""))
+               (invoke "make" "testit"))))))
+      (synopsis "Date and time library for C++11 and C++14")
+      (description "Date is a header only C++ library that extends the chrono
+date algorithms library for calendar dates and durations.  It also provides
+the <tz.h> library for handling time zones and leap seconds.")
+      (home-page "https://howardhinnant.github.io/date/date.html")
+      (license license:expat))))
+
 (define-public libical
   (package
     (name "libical")
diff --git a/gnu/packages/cedille.scm b/gnu/packages/cedille.scm
index d3a6850f9f..d9cf66c501 100644
--- a/gnu/packages/cedille.scm
+++ b/gnu/packages/cedille.scm
@@ -56,17 +56,12 @@
              (let ((out (assoc-ref outputs "out")))
                (substitute* "cedille-mode.el"
                  (("/usr/share/emacs/site-lisp/cedille-mode")
-                  (string-append
-                   out "/share/emacs/site-lisp/guix.d/cedille-"
-                   ,version)))
+                  (string-append out "/share/emacs/site-lisp")))
                #t)))
          (add-after 'unpack 'copy-cedille-mode
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (lisp
-                     (string-append
-                      out "/share/emacs/site-lisp/guix.d/cedille-"
-                      ,version "/")))
+                    (lisp (string-append out "/share/emacs/site-lisp")))
                (mkdir-p (string-append lisp "cedille-mode"))
                (copy-recursively
                 "cedille-mode"
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index f73c76b827..611f99c5a3 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -247,8 +247,8 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %chromium-version "80.0.3987.132")
-(define %ungoogled-revision "7e68f18f1d16a132fe7d913a176daf79897eaa58")
+(define %chromium-version "80.0.3987.149")
+(define %ungoogled-revision "516e2d990a50a4bbeb8c583e56333c2935e2af95")
 (define %debian-revision "debian/80.0.3987.116-1")
 (define package-revision "0")
 (define %package-version (string-append %chromium-version "-"
@@ -263,7 +263,7 @@ from forcing GEXP-PROMISE."
                         %chromium-version ".tar.xz"))
     (sha256
      (base32
-      "00f2hpi2d0n15yw29dv3dli566cgi7qh55bfpziag9a6j02i401c"))))
+      "07icl3hgg1wjkmz88lbpjf6ll4xyi64spki1nmsy6899jgkxvgjh"))))
 
 (define %ungoogled-origin
   (origin
@@ -274,7 +274,7 @@ from forcing GEXP-PROMISE."
                               (string-take %ungoogled-revision 7)))
     (sha256
      (base32
-      "196rr3nly42pzl2bap22vzw4d8x87yl3zy1wq2fla5z8iy4x8ym1"))))
+      "0nm55qq4ahw9haf5g7hmzic4mr2xjgpay7lxps7xjp7s1pda4g0q"))))
 
 (define %debian-origin
   (origin
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index a4697e34cd..fcf0e07db7 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -126,7 +126,8 @@ highlighting your own code that seemed comprehensible when you wrote it.")
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libltdl" ,libltdl)
-              ("sqlite" ,sqlite)))
+              ("sqlite" ,sqlite)
+              ("python-wrapper" ,python-wrapper)))
     (arguments
      `(#:configure-flags
        (list (string-append "--with-ncurses="
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 75e9afcac5..eed776e0c6 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1157,22 +1157,20 @@ in R and Shiny via the D3 visualization library.")
 (define-public r-crosstalk
   (package
     (name "r-crosstalk")
-    (version "1.0.0")
+    (version "1.1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "crosstalk" version))
        (sha256
         (base32
-         "0lfa89vhrzi7a1rghmygcjr8gzddw35sinb3jx6g49mc9jias7mk"))))
+         "03ihj7cimkklrbad9zic78xsrfcisygmgy859hqnx0hiph80p9rn"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-ggplot2" ,r-ggplot2)
-       ("r-htmltools" ,r-htmltools)
+     `(("r-htmltools" ,r-htmltools)
        ("r-jsonlite" ,r-jsonlite)
        ("r-lazyeval" ,r-lazyeval)
-       ("r-r6" ,r-r6)
-       ("r-shiny" ,r-shiny)))
+       ("r-r6" ,r-r6)))
     (home-page "https://rstudio.github.io/crosstalk/")
     (synopsis "Inter-widget interactivity for HTML widgets")
     (description
@@ -1523,14 +1521,14 @@ colors are provided.")
 (define-public r-glue
   (package
     (name "r-glue")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glue" version))
        (sha256
         (base32
-         "1a1ycg9r3gd91visp49q49rsrdgyf8kr9dxdy3hk99kikn4z5hag"))))
+         "0alklqcf68kmccssp4j7a7fv553pyqyy6mkkfslav83inppm4d3g"))))
     (build-system r-build-system)
     (home-page "https://github.com/tidyverse/glue")
     (synopsis "Interpreted string literals")
@@ -1691,16 +1689,14 @@ you to rapidly iterate while developing a package.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "03h3zyjq948y0hrrs95lfk4zgx6wfrg64hjlrfrzf5na7bfh0d9b"))))
+        (base32 "1m80pdhzi2p82db5xkbwc2m3fzv6df59955yj03nlq40fj7zx4nr"))))
     (build-system r-build-system)
-    (native-inputs
-     `(("r-knitr" ,r-knitr))) ; for vignettes
     (home-page "http://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
     (description
@@ -2014,14 +2010,14 @@ in main memory.")
 (define-public r-ffbase
   (package
     (name "r-ffbase")
-    (version "0.12.7")
+    (version "0.12.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ffbase" version))
        (sha256
         (base32
-         "04kxx2f3f0743c5nvpb7x1x0pcd220dazpd5ag1pidxbz3xa85nw"))))
+         "0mjk7dkq1ginqqfvngzny747ggf9a8fd7kblq96n5ys1jrwjyqhq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bit" ,r-bit)
@@ -2800,14 +2796,14 @@ dimensioned arrays.")
 (define-public r-rmysql
   (package
     (name "r-rmysql")
-    (version "0.10.19")
+    (version "0.10.20")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RMySQL" version))
        (sha256
         (base32
-         "0269pfq791qvax69lrwvvzgllyzm3cy3sdp9sakwxzvw5pxk2vhv"))))
+         "0lv9m6zpm8dgv7yixr6xhw379vbq45d7n7gkrmjrppdj8vcih77i"))))
     (properties `((upstream-name . "RMySQL")))
     (build-system r-build-system)
     (inputs
@@ -3102,14 +3098,14 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.1.9")
+    (version "0.1.10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "1fmnka583sqm6v5bhxbllb4cd5xfqbf268aij2xgxiwckv3c0ynm"))))
+         "11f96aanrzi2v6cn49fhvf9y4cmhra63wcy6nvpv6hcfaqqmwd2g"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -3127,6 +3123,8 @@ provides a one-row summary of model-level statistics.")
        ("r-tidyselect" ,r-tidyselect)
        ("r-timedate" ,r-timedate)
        ("r-withr" ,r-withr)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/topepo/recipes")
     (synopsis "Preprocessing tools to create design matrices")
     (description
@@ -5518,7 +5516,7 @@ simple method for converting between file types.")
      `(("r-foreign" ,r-foreign)
        ("r-lattice" ,r-lattice)
        ("r-sp" ,r-sp)))
-    (home-page "http://r-forge.r-project.org/projects/maptools/")
+    (home-page "https://r-forge.r-project.org/projects/maptools/")
     (synopsis "Tools for reading and handling spatial objects")
     (description
      "This package provides a set of tools for manipulating and reading
@@ -6200,22 +6198,23 @@ references and Rd files.")
 (define-public r-officer
   (package
     (name "r-officer")
-    (version "0.3.7")
+    (version "0.3.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "officer" version))
        (sha256
         (base32
-         "1zyrcf0xxm67bskynjac8dhil2as7rb0mmqaq30zp9lrgfwiycpz"))))
+         "0xhx5n6qksyh2s9hvwhnc8y0hn362asc5y94ld06snad786hz0rw"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-digest" ,r-digest)
-       ("r-magrittr" ,r-magrittr)
+     `(("r-magrittr" ,r-magrittr)
        ("r-r6" ,r-r6)
        ("r-uuid" ,r-uuid)
        ("r-xml2" ,r-xml2)
        ("r-zip" ,r-zip)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://davidgohel.github.io/officer")
     (synopsis "Manipulation of Word and PowerPoint documents")
     (description
@@ -8277,14 +8276,14 @@ comparisons of slopes.")
 (define-public r-pwr
   (package
     (name "r-pwr")
-    (version "1.2-2")
+    (version "1.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pwr" version))
        (sha256
         (base32
-         "0r5g781lr677vp3zyhgmi7r68c87l8gd05l1s3ffnxgn5wf043sm"))))
+         "1kfzy73v3z6ipc3kdfkcjrp4b4p5k54nwk796gqi36srm93hgc2v"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -8450,14 +8449,14 @@ models.")
 (define-public r-glmmtmb
   (package
     (name "r-glmmtmb")
-    (version "1.0.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glmmTMB" version))
        (sha256
         (base32
-         "1md4yw4kbng953rz1n9g1v2xffk3cxx1qmp0kvbdayg1s82l1rgx"))))
+         "0sdx1q7wc7895xh8747r4p0wkij0xjgn5ij62ipi9423zd0sr0mm"))))
     (properties `((upstream-name . "glmmTMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8534,19 +8533,21 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "0.14.1")
+    (version "0.14.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "07pvs18vlybp96zz1wjr7cwiwi1cvjwkb9ahxzq0vd6adnd6ya59"))))
+         "1y3yfb07jrr6vkc8hk6rp52l70dj7042jvqgjzllslzy7hx2jhyw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-insight" ,r-insight)
        ("r-mass" ,r-mass)
        ("r-sjlabelled" ,r-sjlabelled)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/strengejacke/ggeffects")
     (synopsis "Create tidy data frames of marginal effects for ggplot")
     (description
@@ -9755,14 +9756,14 @@ Processing.")
 (define-public r-waveslim
   (package
     (name "r-waveslim")
-    (version "1.7.5.2")
+    (version "1.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "waveslim" version))
        (sha256
         (base32
-         "166ai4q3mlh3v338si952z7fbgph80h0l4ws6bna8ig5jx81rnmz"))))
+         "0ibivnhz0l06sss5rrrcvyiwg3qpbyk3qn4vx4pp90kj09x4yg0k"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -12344,20 +12345,22 @@ latent growth curve models.")
 (define-public r-nonnest2
   (package
     (name "r-nonnest2")
-    (version "0.5-2")
+    (version "0.5-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nonnest2" version))
        (sha256
         (base32
-         "1bq44qqmm59j91m0sny4xnqmxqlga4cm48qdsw8xfs3x19xwmxk6"))))
+         "1mnv4pa583ir9s03h952hk40lwdywr3g88g76sk1zsa54rcmn82c"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-compquadform" ,r-compquadform)
        ("r-lavaan" ,r-lavaan)
        ("r-mvtnorm" ,r-mvtnorm)
        ("r-sandwich" ,r-sandwich)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://cran.r-project.org/web/packages/nonnest2/")
     (synopsis "Tests of non-nested models")
     (description
@@ -13014,19 +13017,21 @@ utilities for sequence data management under the ACNUC system.")
 (define-public r-units
   (package
     (name "r-units")
-    (version "0.6-5")
+    (version "0.6-6")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "units" version))
         (sha256
           (base32
-            "02nls8m0r1r7kljs4x35naz3szq62hyqyd5vracf1xwi1kz5kdsh"))))
+            "11x6xz1fbml28xmrhgn4sii9vfyj3gyfc1dfxahdg9cszdmcgdnh"))))
     (build-system r-build-system)
     (inputs
      `(("udunits" ,udunits)))
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/r-quantities/units/")
     (synopsis "Measurement Units for R Vectors")
     (description
@@ -14279,14 +14284,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
 (define-public r-ggraph
   (package
     (name "r-ggraph")
-    (version "2.0.1")
+    (version "2.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggraph" version))
        (sha256
         (base32
-         "0q2yqsb981a2arf9j530kqs61vw38ixyxbhb6yvv7skgbck02r6y"))))
+         "1ckq82hg52vr2wydkqv2wrppgjyvddd6bwqzrngqlm7j71xapjl0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -14303,6 +14308,8 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
        ("r-scales" ,r-scales)
        ("r-tidygraph" ,r-tidygraph)
        ("r-viridis" ,r-viridis)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://cran.r-project.org/web/packages/ggraph/")
     (synopsis "Implementation of grammar of graphics for graphs and networks")
     (description
@@ -15372,14 +15379,14 @@ in R, including a translation of the original algorithm into R.")
 (define-public r-uwot
   (package
     (name "r-uwot")
-    (version "0.1.5")
+    (version "0.1.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "uwot" version))
        (sha256
         (base32
-         "0pz9wa89xq4d119q86lskrznf979m0r1db8iaprcz7kxbi6b8lrj"))))
+         "1jzh8r1h6f7pw7pb1fr32vn6ai9g10s56ahkq0vi77iznihy1rpd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dqrng" ,r-dqrng)
@@ -15388,7 +15395,6 @@ in R, including a translation of the original algorithm into R.")
        ("r-matrix" ,r-matrix)
        ("r-rcpp" ,r-rcpp)
        ("r-rcppannoy" ,r-rcppannoy)
-       ("r-rcppparallel" ,r-rcppparallel)
        ("r-rcppprogress" ,r-rcppprogress)
        ("r-rspectra" ,r-rspectra)))
     (home-page "https://github.com/jlmelville/uwot")
@@ -16690,14 +16696,14 @@ elicitation options based on Kass and Vaidyanathan (1992)
 (define-public r-accept
   (package
     (name "r-accept")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "accept" version))
        (sha256
         (base32
-         "1r4mhy9g4wjcjgdd0gwdarmr09292il3vdkmx0hz7vh9mffyr9kx"))))
+         "0pn8q0jsi0nb2mm2kv6sjczflflshhy55y7nqqnk70yx9f6wm83y"))))
     (properties `((upstream-name . "accept")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19384,14 +19390,14 @@ and Euclidean distance is particularly fast.")
 (define-public r-isocodes
   (package
     (name "r-isocodes")
-    (version "2019.12.22")
+    (version "2020.03.16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ISOcodes" version))
        (sha256
         (base32
-         "1k2f2258bwzs0b3nxma9kcw395qkljvk514a7047rx4dn0iwd874"))))
+         "1hz1sj57qkkkrgn8slsz2n4jv1fkyp40503j9rg30lxy4gmb83hn"))))
     (properties `((upstream-name . "ISOcodes")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/package=ISOcodes")
@@ -19473,14 +19479,14 @@ Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
 (define-public r-quanteda
   (package
     (name "r-quanteda")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quanteda" version))
        (sha256
         (base32
-         "0snr610vahbdqkmma0zy5mg5qbb6n1b8sgsclqb2sccn1gg38vyy"))))
+         "0pym6vdzqbkyj87m3pla229092xvvx4j830x67qflxzzdmc9dzhz"))))
     (properties `((upstream-name . "quanteda")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19503,6 +19509,8 @@ Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
        ("r-stringi" ,r-stringi)
        ("r-xml2" ,r-xml2)
        ("r-yaml" ,r-yaml)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://quanteda.io")
     (synopsis "Quantitative analysis of textual data")
     (description
@@ -20794,3 +20802,111 @@ statistics and p-values of the correlation coefficients.")
 scales and utilities, including a spell check function for plot label fields
 and an overall emphasis on typography.")
     (license license:expat)))
+
+(define-public r-crochet
+  (package
+    (name "r-crochet")
+    (version "2.2.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (cran-uri "crochet" version))
+      (sha256
+       (base32
+        "1cbv79nyycxk6f8ldcsnn2pvgxqlnrj0qs19nhafnq2clxy863k6"))))
+    (build-system r-build-system)
+    (home-page "https://github.com/agrueneberg/crochet")
+    (synopsis "Implementation Helper for Matrix-Like Types")
+    (description
+     "Functions to help implement the extraction / subsetting / indexing
+function @code{[} and replacement function @code{[<-} of custom matrix-like
+types (based on S3, S4, etc.), modeled as closely to the base matrix class
+as possible (with tests to prove it).")
+    (license license:expat)))
+
+(define-public r-boa
+  (package
+    (name "r-boa")
+    (version "1.1.8-2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (cran-uri "boa" version))
+      (sha256
+       (base32
+        "04lhqk5qfvaz1jk90glr2yi5vq7cdy0w8m6g2lnzk359l9y41zhp"))))
+    (properties `((upstream-name . "boa")))
+    (build-system r-build-system)
+    (home-page "http://www.jstatsoft.org/v21/i11")
+    (synopsis "Library for @dfn{Bayesian Output Analysis Program} (BOA) for MCMC")
+    (description
+     "This package provides a menu-driven program and library of functions for
+carrying out convergence diagnostics and statistical and graphical analysis of
+@dfn{Markov chain Monte Carlo} (MCMC) sampling output.")
+    (license license:gpl2+)))
+
+(define-public r-httpcode
+  (package
+    (name "r-httpcode")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "httpcode" version))
+              (sha256
+               (base32
+                "06k853ihwzkcx4z3jzazpb03p91frqkwz18jy4fwr8j2nwyqbhgv"))))
+    (build-system r-build-system)
+    (home-page "https://github.com/sckott/httpcode")
+    (synopsis "HTTP status code helper")
+    (description "@code{httpcode} provides functionality for finding and
+explaining the meaning of @code{HTTP} status codes.  Functions are included for
+searching for codes by full or partial number, by message, and to get
+appropriate dog and cat images for many status codes.")
+    (license license:expat)))
+
+(define-public r-latex2exp
+  (package
+    (name "r-latex2exp")
+    (version "0.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "latex2exp" version))
+              (sha256
+               (base32
+                "12nbcgfmv13k6sc6m326ras9bcvy380b7rxcxphn06r3cfkby0zw"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-stringr" ,r-stringr)
+       ("r-magrittr", r-magrittr)))
+    (home-page "https://github.com/stefano-meschiari/latex2exp/")
+    (synopsis "Use LaTeX expressions in plots")
+    (description "@code{latex2exp} parses and converts LaTeX math formulas to
+R's plotmath expressions, used to enter mathematical formulas and symbols to be
+rendered as text, axis labels, etc. throughout R's plotting system.")
+    (license license:expat)))
+
+(define-public r-oai
+  (package
+    (name "r-oai")
+    (version "0.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "oai" version))
+              (sha256
+               (base32
+                "1ipw9bq3ra66d1ddj1rylyyd20mlcb2i7phzhywra53s1fdifq1g"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-xml2" ,r-xml2)
+       ("r-httr" ,r-httr)
+       ("r-plyr" ,r-plyr)
+       ("r-stringr" ,r-stringr)
+       ("r-tibble" ,r-tibble)))
+    (home-page "https://github.com/ropensci/oai/")
+    (synopsis "General purpose OAI-PMH services client")
+    (description "@code{oai} provides a general purpose client to work with
+any @dfn{Open Archives Initiative Protocol for 'Metadata' Harvesting} (OAI-PMH)
+service.  Functions are provided to work with the OAI-PMH verbs:
+@code{GetRecord}, @code{Identify}, @code{ListIdentifiers},
+@code{ListMetadataFormats}, @code{ListRecords}, and @code{ListSets}.")
+    (license license:expat)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1e1e9bf5db..64c170df73 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages pcre)
@@ -47,6 +48,30 @@
 ;;; Please: Try to add new module packages in alphabetic order.
 ;;;
 
+(define-public rust-abomonation-0.7
+  (package
+    (name "rust-abomonation")
+    (version "0.7.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "abomonation" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1cjg3hjf028n447pdj7zcdgrkngx30as8ndxlxx947wvr49jkrsn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-recycler" ,rust-recycler-0.1))))
+    (home-page "https://github.com/TimelyDataflow/abomonation")
+    (synopsis "High performance and very unsafe serialization library")
+    (description
+     "This package provides a high performance and very unsafe serialization
+library in Rust.")
+    (license license:expat)))
+
 (define-public rust-addr2line-0.9
   (package
     (name "rust-addr2line")
@@ -218,6 +243,67 @@ the Rust programming language.")
         ("rust-rand" ,rust-rand-0.3)
         ("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))))
 
+(define-public rust-alga-0.9
+  (package
+    (name "rust-alga")
+    (version "0.9.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "alga" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wl4z8ini9269x04g8wwdz1nn3hmmvaaysq4jwhymikyg81kv0jg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-approx" ,rust-approx-0.3)
+        ("rust-decimal" ,rust-decimal-2.0)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2))
+       #:cargo-development-inputs
+       (("rust-alga-derive" ,rust-alga-derive-0.9)
+        ("rust-quickcheck" ,rust-quickcheck-0.8))))
+    (home-page "https://github.com/rustsim/alga")
+    (synopsis "Abstract algebra for Rust")
+    (description "Alga aims to provide solid mathematical abstractions to
+algebra-focused applications.  It defines and organizes through trait
+inheritance the basic building blocks of general algebraic structures.
+Specific implementations of algebraic structure traits are left to other
+crates.  Higher-level traits for specialized domains of algebra (like linear
+algebra) are also provided and will prove useful for applications that include
+code that is generic with regard to the algebraic entity types.")
+    (license license:asl2.0)))
+
+(define-public rust-alga-derive-0.9
+  (package
+    (name "rust-alga-derive")
+    (version "0.9.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "alga-derive" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0a2594j6blczz18vfg85agr7vsjrbq6900d3xwxw0zzbqj9j2adz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-edit-distance" ,rust-edit-distance-2.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
+    (home-page "https://github.com/rustsim/alga")
+    (synopsis "Dutomatic deriving of abstract algebra traits")
+    (description "Derive attribute for implementing algebraic traits from the
+@code{alga} crate.")
+    (license license:asl2.0)))
+
 (define-public rust-andrew-0.2
   (package
     (name "rust-andrew")
@@ -966,7 +1052,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
     (home-page
      "https://rust-lang.github.io/rust-bindgen/")
     (synopsis
-     "Automatically generates FFI bindings to C and C++libraries")
+     "Automatically generates FFI bindings to C and C++ libraries")
     (description
      "Automatically generates Rust FFI bindings to C and C++
 libraries.")
@@ -1677,6 +1763,93 @@ exposed as Reader/Writer streams.")
      "The ChaCha family of stream ciphers.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-cairo-rs-0.8
+  (package
+    (name "rust-cairo-rs")
+    (version "0.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cairo-rs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "11303v1fv6hsc9n70ak380gknkf0098phpcxqdhkmahqjsx4jw0m"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-glib" ,rust-glib-0.9)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1)
+        ("rust-tempfile" ,rust-tempfile-3.1))))
+    (inputs
+     `(("cairo" ,cairo)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Cairo library")
+    (description
+     "Rust bindings for the Cairo library.")
+    (license license:expat)))
+
+(define-public rust-cairo-rs-0.7
+  (package
+    (inherit rust-cairo-rs-0.8)
+    (name "rust-cairo-rs")
+    (version "0.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cairo-rs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "171m98g41avp5mmshqir4ka21napp7ma5fx45wi9mw5hwdyv8pg0"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3.1))))))
+
+(define-public rust-cairo-sys-rs-0.9
+  (package
+    (name "rust-cairo-sys-rs")
+    (version "0.9.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cairo-sys-rs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qsdy6s57yvscg2rfm7wdqrlhzbn1aq9lhk3dy1vw5f7r81blrgz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-x11" ,rust-x11-2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
+    (inputs
+     `(("cairo" ,cairo)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libcairo")
+    (description "This package provides FFI bindings to libcairo.")
+    (license license:expat)))
+
 (define-public rust-calloop-0.4
   (package
     (name "rust-calloop")
@@ -3378,6 +3551,73 @@ intrinsics.")
 Code} (MAC) algorithms.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cssparser-0.25
+  (package
+    (name "rust-cssparser")
+    (version "0.25.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cssparser" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "03klvpdzsk4cyh8k0dbnlngzafv7gqywqrnsqqb3gfmrxyj8rqgv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Some test files missing.
+       #:cargo-inputs
+       (("rust-cssparser-macros" ,rust-cssparser-macros-0.3)
+        ("rust-dtoa-short" ,rust-dtoa-short-0.3)
+        ("rust-heapsize" ,rust-heapsize-0.4)
+        ("rust-itoa" ,rust-itoa-0.4)
+        ("rust-matches" ,rust-matches-0.1)
+        ("rust-phf" ,rust-phf-0.7)
+        ("rust-procedural-masquerade" ,rust-procedural-masquerade-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-smallvec" ,rust-smallvec-0.6)
+        ("rust-autocfg" ,rust-autocfg-0.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))
+       #:cargo-development-inputs
+       (("rust-difference" ,rust-difference-2.0)
+        ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/servo/rust-cssparser")
+    (synopsis "Rust implementation of CSS Syntax Level 3")
+    (description
+     "This package contains a Rust implementation of CSS Syntax Level 3.")
+    (license license:mpl2.0)))
+
+(define-public rust-cssparser-macros-0.3
+  (package
+    (name "rust-cssparser-macros")
+    (version "0.3.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cssparser-macros" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1vqyc5xm8a4va92vs1nn0cc46c930l2n21gccijnc5y7hx7cicav"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-phf-codegen" ,rust-phf-codegen-0.7)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-procedural-masquerade" ,rust-procedural-masquerade-0.1)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
+    (home-page "https://github.com/servo/rust-cssparser")
+    (synopsis "Procedural macros for cssparser")
+    (description
+     "This package provides the procedural macros for rust-cssparser.")
+    (license license:mpl2.0)))
+
 (define-public rust-csv-1.1
   (package
     (name "rust-csv")
@@ -3562,6 +3802,33 @@ attributes.")
 hexadecimal, base32, and base64.")
     (license license:expat)))
 
+(define-public rust-data-url-0.1
+  (package
+    (name "rust-data-url")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "data-url" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "176wa1n8h71iwyaxhar4sqwrgrvb5sxk26az0fy88vnxrsffjgyk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-matches" ,rust-matches-0.1))
+       #:cargo-development-inputs
+       (("rust-rustc-test" ,rust-rustc-test-0.3)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/servo/rust-url")
+    (synopsis "Processing of data: URL according to WHATWG's Fetch Standard")
+    (description
+     "Processing of data: URL according to WHATWG's Fetch Standard.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-datetime-0.4
   (package
     (name "rust-datetime")
@@ -3595,6 +3862,36 @@ hexadecimal, base32, and base64.")
 and arithmetic.")
     (license license:expat)))
 
+(define-public rust-decimal-2.0
+  (package
+    (name "rust-decimal")
+    (version "2.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "decimal" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1vb3i8vg1dxrw3kzbfiag3gg7rdjd73z80mwbwkq60vnphiqfig6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-ord-subset" ,rust-ord-subset-3)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-cc" ,rust-cc-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/alkis/decimal")
+    (synopsis "Decimal floating point arithmetic for Rust")
+    (description
+     "Decimal floating point arithmetic for Rust.")
+    (license license:asl2.0)))
+
 (define-public rust-deflate-0.7
   (package
     (name "rust-deflate")
@@ -4086,6 +4383,31 @@ floating-point primitives to an @code{io::Write}.")
          (base32
           "0g96cap6si1g6wi62hsdk2fnj3sf5vd4i97zj6163j8hhnsl3n0d"))))))
 
+(define-public rust-dtoa-short-0.3
+  (package
+    (name "rust-dtoa-short")
+    (version "0.3.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "dtoa-short" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1wkn7ziqffq8hj0a411lgn7674ackzdk734ikp230rmp2f2hn0jr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-dtoa" ,rust-dtoa-0.4))
+       #:cargo-development-inputs
+       (("rust-float-cmp" ,rust-float-cmp-0.3))))
+    (home-page "https://github.com/upsuper/dtoa-short")
+    (synopsis "Serialize float number and truncate to certain precision")
+    (description
+     "Serialize float number and truncate to certain precision in Rust.")
+    (license license:mpl2.0)))
+
 (define-public rust-duct-0.13
   (package
     (name "rust-duct")
@@ -4146,6 +4468,29 @@ floating-point primitives to an @code{io::Write}.")
      "This package provides lightweight binding to DirectWrite.")
     (license license:mpl2.0)))
 
+(define-public rust-edit-distance-2.1
+  (package
+    (name "rust-edit-distance")
+    (version "2.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "edit-distance" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0yq3wlmd7ly22qxhfysi77qp31yvpx2ll9waa75bkpiih7rsmfmv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-quickcheck" ,rust-quickcheck-0.9))))
+    (home-page "https://github.com/febeling/edit-distance")
+    (synopsis "Levenshtein edit distance between strings")
+    (description
+     "Levenshtein edit distance between strings, a measure for similarity.")
+    (license license:asl2.0)))
+
 (define-public rust-either-1.5
   (package
     (name "rust-either")
@@ -5026,6 +5371,45 @@ Reader/Writer streams.  Contains bindings for zlib, deflate, and gzip-based
 streams.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-float-cmp-0.5
+  (package
+    (name "rust-float-cmp")
+    (version "0.5.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "float-cmp" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "03hmx3n48hjm0x1ig84n1j87kzp75lzr6cj1sgi6a6pykgn4n8km"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-num-traits" ,rust-num-traits-0.2))))
+    (home-page "https://github.com/mikedilger/float-cmp")
+    (synopsis "Floating point approximate comparison traits")
+    (description
+     "Floating point approximate comparison traits in Rust.")
+    (license license:expat)))
+
+(define-public rust-float-cmp-0.3
+  (package
+    (inherit rust-float-cmp-0.5)
+    (name "rust-float-cmp")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "float-cmp" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1c0hmj46xma5aysz0qb49padhc26aw875whx6q6rglsj5dqpds1b"))))
+    (arguments
+     `(#:cargo-inputs (("rust-num" ,rust-num-0.1))))))
+
 (define-public rust-float-ord-0.2
   (package
     (name "rust-float-ord")
@@ -5202,6 +5586,26 @@ implementation that is more efficient for smaller hash keys.")
         (base32
          "0jxgzd04ra4imjv8jgkmdq59kj8fsz6w4zxsbmlai34h26225c00"))))))
 
+(define-public rust-fragile-0.3
+  (package
+    (name "rust-fragile")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fragile" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1yf2hmkw52x2dva3c9km1x8c2z5kwby7qqn8kz5ms3gs480i9y05"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/mitsuhiko/rust-fragile")
+    (synopsis "Wrapper types for sending non-send values to other threads")
+    (description "This package provides wrapper types for sending non-send
+values to other threads.")
+    (license license:asl2.0)))
+
 (define-public rust-freetype-rs-0.23
   (package
     (name "rust-freetype-rs")
@@ -5746,6 +6150,36 @@ for the futures-rs library.")
      "This package provides the @code{futures-rs} procedural macro implementations.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-futures-preview-0.3
+  (package
+    (name "rust-futures-preview")
+    (version "0.3.0-alpha.17")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "futures-preview" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rsq8d1ciyg37i5ysd9dynwmklwy4sx466z9a72687wsi8fgj9dz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-futures-channel-preview" ,rust-futures-channel-preview-0.3)
+        ("rust-futures-core-preview" ,rust-futures-core-preview-0.3)
+        ("rust-futures-executor-preview" ,rust-futures-executor-preview-0.3)
+        ("rust-futures-io-preview" ,rust-futures-io-preview-0.3)
+        ("rust-futures-sink-preview" ,rust-futures-sink-preview-0.3)
+        ("rust-futures-util-preview" ,rust-futures-util-preview-0.3))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs")
+    (synopsis "An implementation of futures and streams")
+    (description
+     "An implementation of futures and streams featuring zero allocations,
+composability, and iterator-like interfaces.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-futures-select-macro-preview-0.3
   (package
     (name "rust-futures-select-macro-preview")
@@ -5888,7 +6322,7 @@ for the futures-rs library.")
          "0kizm86wgr5qldyavskfi0r1msg6m4x2pkj0d4r04br2ig29i0dg"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
        (("rust-futures" ,rust-futures-0.1)
         ("rust-futures-channel-preview" ,rust-futures-channel-preview-0.3)
@@ -5901,8 +6335,7 @@ for the futures-rs library.")
         ("rust-pin-utils" ,rust-pin-utils-0.1)
         ("rust-proc-macro-hack" ,rust-proc-macro-hack-0.5)
         ("rust-proc-macro-nested" ,rust-proc-macro-nested-0.1)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-rand" ,rust-rand-0.7)
         ("rust-slab" ,rust-slab-0.4)
         ("rust-tokio-io" ,rust-tokio-io-0.1))))
     (home-page "https://github.com/rust-lang/futures-rs")
@@ -5990,6 +6423,74 @@ archive to be linked into Rustcode.")
 API library @code{gdi32}.")
     (license license:expat)))
 
+(define-public rust-gdk-pixbuf-0.7
+  (package
+    (name "rust-gdk-pixbuf")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk-pixbuf" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1k2g3w2p57m68bi5sldvkmgjgslgqswrjsijjhqaibdvw67409lp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-fragile" ,rust-fragile-0.3)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
+        ("rust-gio" ,rust-gio-0.7)
+        ("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (inputs
+     `(("gdk-pixbuf" ,gdk-pixbuf)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GdkPixbuf library")
+    (description
+     "Rust bindings for the GdkPixbuf library.")
+    (license license:expat)))
+
+(define-public rust-gdk-pixbuf-sys-0.9
+  (package
+    (name "rust-gdk-pixbuf-sys")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk-pixbuf-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1c2andpjb10y7bahh6nxnksh9m3g5qh4mgq9znx634cy1831p6fq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; tests not included in release
+       #:cargo-inputs
+       (("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-0.1)
+        ("rust-tempfile" ,rust-tempfile-3.1))))
+    (inputs
+     `(("gdk-pixbuf" ,gdk-pixbuf)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgdk_pixbuf-2.0")
+    (description "This package provides FFI bindings to @code{libgdk_pixbuf-2.0}.")
+    (license license:expat)))
+
 (define-public rust-generator-0.6
   (package
     (name "rust-generator")
@@ -6207,6 +6708,41 @@ retrieving random data from system source.")
 DWARF debugging format.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-gio-0.7
+  (package
+    (name "rust-gio")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gio" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1qv0wc1hqyb81c03h81s3xrl9jslrw23fr4yhygxbhih9k9vaqb2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-fragile" ,rust-fragile-0.3)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (inputs
+     `(("glib" ,glib)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Gio library")
+    (description "Rust bindings for the Gio library.")
+    (license license:expat)))
+
 (define-public rust-gio-sys-0.9
   (package
     (name "rust-gio-sys")
@@ -6238,6 +6774,25 @@ DWARF debugging format.")
     (description "This package provides FFI bindings to libgio-2.0.")
     (license license:expat)))
 
+(define-public rust-gir-format-check-0.1
+  (package
+    (name "rust-gir-format-check")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gir-format-check" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0znl4qcgmg0656zk9vjkwdn9wj1zpkd0m0l5jnzmahd80ii7vf4b"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/gtk-rs/gir-format-check")
+    (synopsis "File format checker")
+    (description "File format checker in Rust.")
+    (license license:expat)))
+
 (define-public rust-git2-0.11
   (package
     (name "rust-git2")
@@ -6391,6 +6946,68 @@ reading and writing git repositories.")
      "Generated OpenGL bindings and wrapper for Servo.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-glib-0.9
+  (package
+    (name "rust-glib")
+    (version "0.9.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "glib" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1h3100mf7kdfxibjz5na0sqzbd2mcsyd8pzivn3666w414x5gys0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-executor" ,rust-futures-executor-0.3)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-futures-task" ,rust-futures-task-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3.1))))
+    (inputs
+     `(("glib" ,glib)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the GLib library")
+    (description
+     "Rust bindings for the GLib library.")
+    (license license:expat)))
+
+(define-public rust-glib-0.8
+  (package
+    (inherit rust-glib-0.9)
+    (name "rust-glib")
+    (version "0.8.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "glib" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0ysy87zrwyzhfpf3d8rkyyr3amwj85wky05fsl7kx95s84l269xy"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3.1))))))
+
 (define-public rust-glib-sys-0.9
   (package
     (name "rust-glib-sys")
@@ -6991,6 +7608,29 @@ standard printing of search results, similar to grep itself.")
      "Fast line oriented regex searching as a library.")
     (license (list license:unlicense license:expat))))
 
+(define-public rust-gtk-rs-lgpl-docs-0.1
+  (package
+    (name "rust-gtk-rs-lgpl-docs")
+    (version "0.1.15")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gtk-rs-lgpl-docs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "06b1j64zg0xmhwfkyhzh3y0apclg6qihn3f7s1bd7kgjmkia4jlr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustdoc-stripper" ,rust-rustdoc-stripper-0.1))))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "LGPL-licensed docs for Gtk-rs crates")
+    (description
+     "LGPL-licensed docs for Gtk-rs crates.")
+    (license license:lgpl2.0)))
+
 (define-public rust-gzip-header-0.3
   (package
     (name "rust-gzip-header")
@@ -9276,19 +9916,19 @@ platform-independently.")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-markup5ever-0.8
+(define-public rust-markup5ever-0.9
   (package
     (name "rust-markup5ever")
-    (version "0.8.1")
+    (version "0.9.0")
     (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "markup5ever" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "08ayl9aqjnmf7ly1ipy6dk3wjvyfn4w51l40jzh1fh984ykldbzi"))))
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "markup5ever" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "00wxigkiw8f777pjp7q5kfq77xpwda9zskkwp698assh8yfisf35"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -9300,14 +9940,28 @@ platform-independently.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-string-cache-codegen"
-         ,rust-string-cache-codegen-0.4))))
+        ("rust-string-cache-codegen" ,rust-string-cache-codegen-0.4))))
     (home-page "https://github.com/servo/html5ever")
     (synopsis "Common code for xml5ever and html5ever")
     (description
      "Common code for xml5ever and html5ever.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-markup5ever-0.8
+  (package
+    (inherit rust-markup5ever-0.9)
+    (name "rust-markup5ever")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "markup5ever" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08ayl9aqjnmf7ly1ipy6dk3wjvyfn4w51l40jzh1fh984ykldbzi"))))))
+
 (define-public rust-matches-0.1
   (package
     (name "rust-matches")
@@ -9328,10 +9982,10 @@ platform-independently.")
 whether an expression matches a pattern.")
     (license license:expat)))
 
-(define-public rust-matrixmultiply-0.1
+(define-public rust-matrixmultiply-0.2
   (package
     (name "rust-matrixmultiply")
-    (version "0.1.15")
+    (version "0.2.3")
     (source
       (origin
         (method url-fetch)
@@ -9339,12 +9993,14 @@ whether an expression matches a pattern.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "00p0fpjhm45qdzi37mgv7ggsy8b9gqvq4999yrbgyn1dxkf6gbfw"))))
+          "13s7nfd3dfcsrixld2lk8c563ih5xzczl2w36hprfc016rkfrxyl"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs (("rust-rawpointer" ,rust-rawpointer-0.1))
-       #:cargo-development-inputs (("rust-bencher" ,rust-bencher-0.1))))
+     `(#:cargo-inputs
+       (("rust-rawpointer" ,rust-rawpointer-0.2))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1)
+        ("rust-itertools" ,rust-itertools-0.7))))
     (home-page "https://github.com/bluss/matrixmultiply/")
     (synopsis "General matrix multiplication for f32 and f64 matrices")
     (description "General matrix multiplication for f32 and f64 matrices.
@@ -9355,6 +10011,23 @@ parallelize and optimize.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-matrixmultiply-0.1
+  (package
+    (inherit rust-matrixmultiply-0.2)
+    (name "rust-matrixmultiply")
+    (version "0.1.15")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "matrixmultiply" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "00p0fpjhm45qdzi37mgv7ggsy8b9gqvq4999yrbgyn1dxkf6gbfw"))))
+    (arguments
+     `(#:cargo-inputs (("rust-rawpointer" ,rust-rawpointer-0.1))
+       #:cargo-development-inputs (("rust-bencher" ,rust-bencher-0.1))))))
+
 (define-public rust-maybe-uninit-2.0
   (package
     (name "rust-maybe-uninit")
@@ -9991,6 +10664,48 @@ checking.")
       "Chaining APIs for both self -> Self and &mut self methods.")
     (license license:expat)))
 
+(define-public rust-nalgebra-0.18
+  (package
+    (name "rust-nalgebra")
+    (version "0.18.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "nalgebra" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "18i1npny8s45ff67p5qpdwwsn36fp23mal8847fkb32cqgdzvada"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-abomonation" ,rust-abomonation-0.7)
+        ("rust-alga" ,rust-alga-0.9)
+        ("rust-approx" ,rust-approx-0.3)
+        ("rust-generic-array" ,rust-generic-array-0.12)
+        ("rust-matrixmultiply" ,rust-matrixmultiply-0.2)
+        ("rust-mint" ,rust-mint-0.5)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-num-rational" ,rust-num-rational-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-pest" ,rust-pest-2.1)
+        ("rust-pest-derive" ,rust-pest-derive-2.1)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0)
+        ("rust-typenum" ,rust-typenum-1.10))
+       #:cargo-development-inputs
+       (("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://nalgebra.org")
+    (synopsis "Linear algebra library")
+    (description
+     "This package provides a linear algebra library with transformations and
+statically-sized or dynamically-sized matrices.")
+    (license license:bsd-3)))
+
 (define-public rust-named-pipe-0.4
   (package
     (name "rust-named-pipe")
@@ -10430,6 +11145,29 @@ combinators library.")
 including bigint, complex, rational, range iterators, generic integers, and more.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-num-0.1
+  (package
+    (inherit rust-num-0.2)
+    (name "rust-num")
+    (version "0.1.42")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vhmyvfan380f86895z0f8rjscjc6qvwcmyvm15370ik2mjas0s7"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.1)
+        ("rust-num-complex" ,rust-num-complex-0.1)
+        ("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-iter" ,rust-num-iter-0.1)
+        ("rust-num-rational" ,rust-num-rational-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2))))))
+
 (define-public rust-num-bigint-0.2
   (package
     (name "rust-num-bigint")
@@ -10461,6 +11199,30 @@ including bigint, complex, rational, range iterators, generic integers, and more
      "Big integer implementation for Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-num-bigint-0.1
+  (package
+    (inherit rust-num-bigint-0.2)
+    (name "rust-num-bigint")
+    (version "0.1.44")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-bigint" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1hg80xd7vd5yqzks1h0zk2fcgqnf84m2cdj9q4cffk581nnrjf76"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rand" ,rust-rand-0.4)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-0.8))
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.4))))))
+
 (define-public rust-num-complex-0.2
   (package
     (name "rust-num-complex")
@@ -10489,6 +11251,27 @@ including bigint, complex, rational, range iterators, generic integers, and more
      "Complex numbers implementation for Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-num-complex-0.1
+  (package
+    (inherit rust-num-complex-0.2)
+    (name "rust-num-complex")
+    (version "0.1.43")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-complex" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0mln3h018lar511hadjwfkbyq1561s8kdzfg8aagbakqg0fn725j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-0.8))))))
+
 (define-public rust-num-cpus-1.11
   (package
     (name "rust-num-cpus")
@@ -10639,6 +11422,28 @@ including bigint, complex, rational, range iterators, generic integers, and more
      "Rational numbers implementation for Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-num-rational-0.1
+  (package
+    (inherit rust-num-rational-0.2)
+    (name "rust-num-rational")
+    (version "0.1.42")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-rational" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0kkqb8j3b3nis9hs4ww4hkrmb4a6v9sr9al08xmwhgvmpms4qcgf"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.1)
+        ("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-0.8))))))
+
 (define-public rust-num-traits-0.2
   (package
     (name "rust-num-traits")
@@ -11176,6 +11981,27 @@ system for OpenSSL.")
      "Extra FFI bindings to OpenSSL that require a C shim.")
     (license license:expat)))
 
+(define-public rust-ord-subset-3
+  (package
+    (name "rust-ord-subset")
+    (version "3.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ord-subset" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1vvb6zmz279nb59dki7kbsvixbk8zpg2gxvgcpsjfnxg9ik19knp"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/emerentius/ord_subset")
+    (synopsis "Tools for working with the Ord subset of certain PartialOrd types")
+    (description
+     "This package provides tools for working with the Ord subset of certain
+PartialOrd types, like floats.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-ordered-float-1.0
   (package
     (name "rust-ordered-float")
@@ -11361,6 +12187,139 @@ normally prevent moving a type that has been borrowed from.")
       "This package provides a library for padding strings at runtime.")
     (license license:expat)))
 
+(define-public rust-pango-0.7
+  (package
+    (name "rust-pango")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pango" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "11np7nxb69g3kid2l78b7k519x1wk1c3f9yy7swgzy24n5qs0grr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (inputs
+     `(("pango" ,pango)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "Rust bindings for the Pango library")
+    (description
+     "Rust bindings for the Pango library.")
+    (license license:expat)))
+
+(define-public rust-pango-sys-0.9
+  (package
+    (name "rust-pango-sys")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pango-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0zdynikh6jrfa31fpmbrwnz46a57idci73zzkf0z0g3vj223vfc6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Some test files not included in release.
+       #:cargo-inputs
+       (("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-0.1)
+        ("rust-tempfile" ,rust-tempfile-3.1))))
+    (inputs
+     `(("pango" ,pango)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libpango-1.0")
+    (description "This package provides FFI bindings to @code{libpango-1.0}.")
+    (license license:expat)))
+
+(define-public rust-pangocairo-0.8
+  (package
+    (name "rust-pangocairo")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pangocairo" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qjiwsp73x3w0493dzycyjzxnzwq7ixwmf1ccr5r41pjhxbnk1kl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-pangocairo-sys" ,rust-pangocairo-sys-0.10)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+    (inputs
+     `(("gtk+" ,gtk+)))
+    (home-page "http://gtk-rs.org/")
+    (synopsis "Rust bindings for the PangoCairo library")
+    (description
+     "Rust bindings for the PangoCairo library.")
+    (license license:expat)))
+
+(define-public rust-pangocairo-sys-0.10
+  (package
+    (name "rust-pangocairo-sys")
+    (version "0.10.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pangocairo-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1zlyf5vajarnxg5034b8qa5w5zajv96lfvlgiki26svpmcqip4m3"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))
+       #:cargo-development-inputs
+       (("rust-shell-words" ,rust-shell-words-0.1)
+        ("rust-tempfile" ,rust-tempfile-3.1))))
+    (inputs
+     `(("gtk+" ,gtk+)))
+    (home-page "https://gtk-rs.org/")
+    (synopsis "FFI bindings to libgtk-3")
+    (description "This package provides FFI bindings to libgtk-3.")
+    (license license:expat)))
+
 (define-public rust-parity-wasm-0.40
   (package
     (name "rust-parity-wasm")
@@ -12511,6 +13470,27 @@ in terms of the upstream unstable API.")
        #:cargo-development-inputs
        (("rust-quote" ,rust-quote-0.6))))))
 
+(define-public rust-procedural-masquerade-0.1
+  (package
+    (name "rust-procedural-masquerade")
+    (version "0.1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "procedural-masquerade" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1l098px1hwdzqnxl376a9hfxb9q8kmj2n0y0s8k7plrz3jjp85cs"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/servo/rust-cssparser")
+    (synopsis "Macro rules for proc-macro-derive")
+    (description
+     "This package provides @code{macro_rules} for making
+@code{proc_macro_derive} pretend to be @code{proc_macro}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-proptest-0.9
   (package
     (name "rust-proptest")
@@ -13602,10 +14582,10 @@ random number generators.")
      "Interoperability library for Rust Windowing applications.")
     (license license:expat)))
 
-(define-public rust-rawpointer-0.1
+(define-public rust-rawpointer-0.2
   (package
     (name "rust-rawpointer")
-    (version "0.1.0")
+    (version "0.2.1")
     (source
       (origin
         (method url-fetch)
@@ -13613,7 +14593,7 @@ random number generators.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "06ghpm9y7gacks78s3maakha07kbnwrxif5q37r2l7z1sali3b7b"))))
+          "1qy1qvj17yh957vhffnq6agq0brvylw27xgks171qrah75wmg8v0"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/bluss/rawpointer/")
     (synopsis "Extra methods for raw pointers")
@@ -13623,6 +14603,20 @@ and @code{ptrdistance}.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rawpointer-0.1
+  (package
+    (inherit rust-rawpointer-0.2)
+    (name "rust-rawpointer")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rawpointer" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "06ghpm9y7gacks78s3maakha07kbnwrxif5q37r2l7z1sali3b7b"))))))
+
 (define-public rust-rawslice-0.1
   (package
     (name "rust-rawslice")
@@ -13773,6 +14767,26 @@ accessors.")
         ("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
         ("rust-scoped-tls" ,rust-scoped-tls-1.0))))))
 
+(define-public rust-rctree-0.3
+  (package
+    (name "rust-rctree")
+    (version "0.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rctree" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1a54z2b850albiqx9vw009p9xg363vqzh1ybkwb89zn8375jk7my"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/RazrFalcon/rctree")
+    (synopsis "DOM-like tree implemented using reference counting")
+    (description "This package provides a @code{DOM-like} tree implemented using
+reference counting.")
+    (license license:expat)))
+
 (define-public rust-rdrand-0.4
   (package
     (name "rust-rdrand")
@@ -13797,6 +14811,27 @@ accessors.")
 @code{rdrand} and @code{rdseed} instructions")
     (license license:isc)))
 
+(define-public rust-recycler-0.1
+  (package
+    (name "rust-recycler")
+    (version "0.1.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "recycler" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1yll0sqswy6afk9ik7r22djqafa3wfgvgdzqqh7jbczyiqr2gp4q"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/frankmcsherry/recycler")
+    (synopsis "Rust library for recycling types containing owned memory")
+    (description
+     "This package provides a small Rust library for recycling types containing
+owned memory.")
+    (license license:expat)))
+
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
 (define-public rust-redox-syscall-0.1
@@ -14492,6 +15527,29 @@ require unstable language features.")
 rustc compiler.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustdoc-stripper-0.1
+  (package
+    (name "rust-rustdoc-stripper")
+    (version "0.1.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rustdoc-stripper" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "13rf65a0xk1zyb92jd8p12x529rsbfchwk9zvjr0snr9savpxw19"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3.1))))
+    (home-page "https://github.com/GuillaumeGomez/rustdoc-stripper")
+    (synopsis "Nanipulate rustdoc comments")
+    (description
+     "This package provides a tool to manipulate rustdoc comments.")
+    (license license:asl2.0)))
+
 (define-public rust-rustfix-0.4
   (package
     (name "rust-rustfix")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index a338c4d47a..2b77a79c2f 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1086,3 +1087,47 @@ cryptographic ratchet.  It is written in C and C++11, and exposed as a C
 API.")
     (home-page "https://matrix.org/docs/projects/other/olm/")
     (license license:asl2.0)))
+
+(define-public hash-extender
+  (let ((commit "9ecef26809a1ceea2a455f6f591b004298df551b")
+        (revision "1"))
+    (package
+      (name "hash-extender")
+      (version (git-version "0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/iagox86/hash_extender")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0fqy3d559zgf71w39py0931d8na0ylils45r8zs6r79wgr6qn78c"))
+                (file-name (git-file-name name version))
+                (patches
+                  (search-patches "hash-extender-test-suite.patch"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'check
+             (lambda _
+               (invoke "./hash_extender_test")))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((outdir (assoc-ref outputs "out"))
+                      (bindir (string-append outdir "/bin"))
+                      (docdir (string-append outdir
+                                             "/share/doc/hash-extender-"
+                                             ,version)))
+                 (install-file "hash_extender" bindir)
+                 (install-file "README.md" docdir)
+                 #t))))))
+      (inputs
+       `(("openssl" ,openssl)))
+      (synopsis "Tool for hash length extension attacks")
+      (description "@command{hash_extender} is a utility for performing hash
+length extension attacks supporting MD4, MD5, RIPEMD-160, SHA-0, SHA-1,
+SHA-256, SHA-512, and WHIRLPOOL hashes.")
+      (home-page "https://github.com/iagox86/hash_extender")
+      (license license:bsd-3))))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 0c097a3383..91ec254609 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
-;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017, 2020 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
@@ -217,7 +217,7 @@ either single machines or networked clusters.")
      "@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language.
 It implements a rich selection of features under a simple API following
 standard Go idioms.")
-    (home-page "http://labix.org/mgo")
+    (home-page "https://labix.org/mgo")
     (license license:bsd-2)))
 
 (define-public ephemeralpg
@@ -2391,32 +2391,17 @@ Memory-Mapped Database} (LMDB), a high-performance key-value store.")
 (define-public python-orator
   (package
     (name "python-orator")
-    (version "0.9.7")
+    (version "0.9.9")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "orator" version))
               (sha256
                (base32
-                "14r58z64fdp76ixnvmi4lni762b405ynmsx6chr1qihs3yl9zn6c"))))
+                "0mbgybz63ryhr9p1f4glnls5c57jp6il3dw0kf97f3pj80687rvg"))))
     (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'loosen-dependencies
-           ;; Tests are not actually run since they are not included with the
-           ;; distributed package, but dependencies are checked.
-           (lambda _
-             (substitute* "setup.py"
-               ((",<.*'") "'")
-               (("flexmock==0.9.7") "flexmock")
-               ;; The pytest-mock package is out of date, so we remove minimum
-               ;; version requirement.
-               (("pytest-mock.*'") "pytest-mock'"))
-             #t)))))
-    (native-inputs
-     `(("python-pytest-mock" ,python-pytest-mock)
-       ("python-pytest" ,python-pytest)
-       ("python-flexmock" ,python-flexmock)))
+    ;; FIXME: Tests are not distributed with PyPI, and the repository
+    ;; does not contain setup.py.  How to test?
+    (arguments '(#:tests? #f))
     (propagated-inputs
      `(("python-backpack" ,python-backpack)
        ("python-blinker" ,python-blinker)
@@ -2427,6 +2412,7 @@ Memory-Mapped Database} (LMDB), a high-performance key-value store.")
        ("python-pendulum" ,python-pendulum)
        ("python-pyaml" ,python-pyaml)
        ("python-pygments" ,python-pygments)
+       ("python-pyyaml" ,python-pyyaml)
        ("python-simplejson" ,python-simplejson)
        ("python-six" ,python-six)
        ("python-wrapt" ,python-wrapt)))
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 0652ea15e6..8e72139a07 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -99,7 +99,7 @@
        ("python-tblib" ,python-tblib)))
     (propagated-inputs
      `(("python-pytz" ,python-pytz)))
-    (home-page "http://www.djangoproject.com/")
+    (home-page "https://www.djangoproject.com/")
     (synopsis "High-level Python Web framework")
     (description
      "Django is a high-level Python Web framework that encourages rapid
@@ -223,6 +223,30 @@ with arguments to the field constructor.")
      "Django-taggit is a reusable Django application for simple tagging.")
     (license license:bsd-3)))
 
+(define-public python-easy-thumbnails
+  (package
+    (name "python-easy-thumbnails")
+    (version "2.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "easy-thumbnails" version))
+       (sha256
+        (base32
+         "14gzp5cv24z0qhxb7f7k7v9jgzpaj4n8yhjq83ynpx8183fs1rz4"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-pillow" ,python-pillow)))
+    (home-page "https://github.com/SmileyChris/easy-thumbnails")
+    (synopsis "Easy thumbnails for Django")
+    (description
+     "Easy thumbnails is a Django plugin to dynamically create thumbnails
+based on source images.  Multiple thumbnails can be created from a single
+source image, using different options to control parameters like the image
+size and quality.")
+    (license license:bsd-3)))
+
 (define-public python-pytest-django
   (package
     (name "python-pytest-django")
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 7524a0dc1b..69dee2b856 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -98,19 +99,17 @@ pseudo-terminal (PTY) allocated to a Docker container using the Python
 client.")
     (license license:asl2.0)))
 
-;; When updating, check whether python-jsonschema-2.6 can be removed from Guix
-;; entirely.
 (define-public docker-compose
   (package
     (name "docker-compose")
-    (version "1.24.1")
+    (version "1.25.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "docker-compose" version))
        (sha256
         (base32
-         "0lx7bx6jvhydbab8vwry0bclhdf0dfj6jrns1m5y45yp9ybqxmd5"))))
+         "1ww8ckpj3n5jdg63qvmiqx3gk0fsrnynnnqj17fppymbwjzf5fps"))))
     (build-system python-build-system)
     ;; TODO: Tests require running Docker daemon.
     (arguments '(#:tests? #f))
@@ -120,9 +119,9 @@ client.")
        ("python-docker-py" ,python-docker-py)
        ("python-dockerpty" ,python-dockerpty)
        ("python-docopt" ,python-docopt)
-       ("python-jsonschema" ,python-jsonschema-2.6)
+       ("python-jsonschema" ,python-jsonschema)
        ("python-pyyaml" ,python-pyyaml)
-       ("python-requests" ,python-requests-2.20)
+       ("python-requests" ,python-requests)
        ("python-six" ,python-six)
        ("python-texttable" ,python-texttable)
        ("python-websocket-client" ,python-websocket-client)))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index acd690fee5..7ded5ba7e5 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -64,6 +64,7 @@
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 6033fe7de85d <6033fe7de85d@airmail.cc>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -295,7 +296,7 @@ on stdout instead of using a socket as the Emacsclient does.")
   (let ((commit "c761d28d49e5238037512b898db0ec9b40d85770"))
     (package
       (name "emacs-magit")
-      (version (git-version "2.90.1" "2" commit))
+      (version (git-version "2.90.1" "3" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -335,24 +336,10 @@ on stdout instead of using a socket as the Emacsclient does.")
                              (guix build emacs-utils))
          #:test-target "test"
          #:tests? #f                   ; tests are not included in the release
-
          #:make-flags
          (list (string-append "PREFIX=" %output)
                ;; Don't put .el files in a sub-directory.
-               (string-append "lispdir=" %output "/share/emacs/site-lisp")
-               (string-append "DASH_DIR="
-                              (assoc-ref %build-inputs "dash")
-                              "/share/emacs/site-lisp/guix.d/dash-"
-                              ,(package-version emacs-dash))
-               (string-append "WITH_EDITOR_DIR="
-                              (assoc-ref %build-inputs "with-editor")
-                              "/share/emacs/site-lisp/guix.d/with-editor-"
-                              ,(package-version emacs-with-editor))
-               (string-append "TRANSIENT_DIR="
-                              (assoc-ref %build-inputs "transient")
-                              "/share/emacs/site-lisp/guix.d/transient-"
-                              ,(package-version emacs-transient)))
-
+               (string-append "lispdir=" %output "/share/emacs/site-lisp"))
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'patch
@@ -414,7 +401,7 @@ operations.")
   (let ((commit "9e33ceee32f665db59909e1c00a667ccdd04178f"))
     (package
       (name "emacs-magit-svn")
-      (version (git-version "2.2.1" "1" commit))
+      (version (git-version "2.2.1" "2" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -424,48 +411,11 @@ operations.")
                 (sha256
                  (base32
                   "1mlqz8dh6jy5rv72lgkxv253dgh73fmbaidskicypapvbl3lr6xy"))))
-      (build-system trivial-build-system)
-      (native-inputs `(("emacs" ,emacs-minimal)))
+      (build-system emacs-build-system)
       (propagated-inputs `(("dash" ,emacs-dash)
                            ("with-editor" ,emacs-with-editor)
                            ("magit" ,emacs-magit)
                            ("transient" ,emacs-transient)))
-      (arguments
-       `(#:modules ((guix build utils)
-                    (guix build emacs-utils))
-
-         #:builder
-         (begin
-           (use-modules (guix build utils)
-                        (guix build emacs-utils))
-
-           (let ((emacs    (string-append (assoc-ref %build-inputs "emacs")
-                                          "/bin/emacs"))
-                 (magit    (string-append (assoc-ref %build-inputs "magit")
-                                          "/share/emacs/site-lisp"))
-                 (transient (string-append (assoc-ref %build-inputs "transient")
-                                           "/share/emacs/site-lisp/guix.d/transient-"
-                                           ,(package-version emacs-transient)))
-                 (dash     (string-append (assoc-ref %build-inputs "dash")
-                                          "/share/emacs/site-lisp/guix.d/dash-"
-                                          ,(package-version emacs-dash)))
-                 (with-editor (string-append (assoc-ref %build-inputs "with-editor")
-                                             "/share/emacs/site-lisp/guix.d/with-editor-"
-                                             ,(package-version emacs-with-editor)))
-                 (source   (assoc-ref %build-inputs "source"))
-                 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
-
-             (install-file (string-append source "/magit-svn.el")
-                           lisp-dir)
-
-             (with-directory-excursion lisp-dir
-               (parameterize ((%emacs emacs))
-                 (emacs-generate-autoloads ,name lisp-dir)
-                 (setenv "EMACSLOADPATH"
-                         (string-append ":" magit ":" transient
-                                        ":" dash ":" with-editor))
-                 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
-             #t))))
       (home-page "https://github.com/magit/magit-svn")
       (synopsis "Git-SVN extension to Magit")
       (description
@@ -2164,47 +2114,6 @@ type, for example: packages, buffers, files, etc.")
                (base32
                 "0yz64c0z4ygi2k4af18k4r1ncgys18jb8icywkp2g5pgmpn5l7ps"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
-       (let ((guix        (assoc-ref %build-inputs "guix"))
-             (gcrypt      (assoc-ref %build-inputs "guile-gcrypt"))
-             (geiser      (assoc-ref %build-inputs "geiser"))
-             (dash        (assoc-ref %build-inputs "dash"))
-             (bui         (assoc-ref %build-inputs "bui"))
-             (magit-popup (assoc-ref %build-inputs "magit-popup"))
-             (edit-indirect (assoc-ref %build-inputs "edit-indirect"))
-             (site-lisp   "/share/emacs/site-lisp")
-             (site-scm    "/share/guile/site")
-             (site-go     "/lib/guile")
-             (guile-dir (lambda (dir)
-                          (car (find-files dir
-                                           (lambda (file stat)
-                                             (string-prefix?
-                                              "2." (basename file)))
-                                           #:directories? #t)))))
-         (list (string-append "--with-guix-site-dir="
-                              (guile-dir (string-append guix site-scm)))
-               (string-append "--with-guix-site-ccache-dir="
-                              (guile-dir (string-append guix site-go))
-                              "/site-ccache")
-               (string-append "--with-guile-gcrypt-site-dir="
-                              (guile-dir (string-append gcrypt site-scm)))
-               (string-append "--with-guile-gcrypt-site-ccache-dir="
-                              (guile-dir (string-append gcrypt site-go))
-                              "/site-ccache")
-               (string-append "--with-geiser-lispdir=" geiser site-lisp)
-               (string-append "--with-dash-lispdir="
-                              dash site-lisp "/guix.d/dash-"
-                              ,(package-version emacs-dash))
-               (string-append "--with-bui-lispdir="
-                              bui site-lisp "/guix.d/bui-"
-                              ,(package-version emacs-bui))
-               (string-append "--with-editindirect-lispdir="
-                              edit-indirect site-lisp "/guix.d/edit-indirect-"
-                              ,(package-version emacs-edit-indirect))
-               (string-append "--with-popup-lispdir="
-                              magit-popup site-lisp "/guix.d/magit-popup-"
-                              ,(package-version emacs-magit-popup))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("emacs" ,emacs-minimal)))
@@ -3725,7 +3634,7 @@ build jobs.")
 (define-public emacs-company
   (package
     (name "emacs-company")
-    (version "0.9.11")
+    (version "0.9.12")
     (source
      (origin
        (method git-fetch)
@@ -3734,7 +3643,7 @@ build jobs.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0x7ag716jp4xb7kmcmr8pqlxx1v0f2gkjx5gx34wxxqfrndwyx8i"))))
+        (base32 "0c31amc6gyfkmb1ii6mm56c75za1yxkj2iyhrjc45nn2mrh7yj7a"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -3750,7 +3659,7 @@ build jobs.")
              #t)))
        #:tests? #t
        #:test-command '("make" "test-batch")))
-    (home-page "http://company-mode.github.io/")
+    (home-page "https://company-mode.github.io/")
     (synopsis "Modular text completion framework")
     (description
      "Company is a modular completion mechanism.  Modules for retrieving
@@ -4346,7 +4255,7 @@ for @code{AUCTeX}.")
                (substitute* "mit-scheme-doc.el"
                  (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/")
                   (string-append "file:" doc-dir "/mit-scheme-ref/")))))))))
-    (home-page "http://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
+    (home-page "https://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
     (synopsis "MIT-Scheme documentation lookup for Emacs")
     (description
      "This package provides a set of Emacs functions to search definitions of
@@ -6486,7 +6395,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
 (define-public emacs-projectile
   (package
     (name "emacs-projectile")
-    (version "2.0.0")
+    (version "2.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
@@ -6494,7 +6403,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
               (file-name (string-append "projectile-" version ".el"))
               (sha256
                (base32
-                "149hablms6n9b4wp78dz4pjz1rzyylfw9ayghq5p9d7k661mvyby"))))
+                "1jj9wk91clyph3zmxkd7y7d6gdqmjd1vndhyq5fxp7i7dy013571"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -12707,7 +12616,7 @@ files to be expanded upon opening them.")
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-parsebib" ,emacs-parsebib)))
-      (home-page "http://joostkremers.github.io/ebib/")
+      (home-page "https://joostkremers.github.io/ebib/")
       (synopsis "BibTeX database manager for Emacs")
       (description
        "Ebib is a BibTeX database manager that runs in GNU Emacs.
@@ -18378,7 +18287,7 @@ a suffix) we prefer to call it just a \"transient\".")
   (let ((commit "63cbf81f166fc71861d8e3d246df8e5ccedcb9bb"))
     (package
       (name "emacs-forge")
-      (version (git-version "0.1.0" "2" commit))
+      (version (git-version "0.1.0" "3" commit))
       (source
        (origin
          (method git-fetch)
@@ -18389,7 +18298,7 @@ a suffix) we prefer to call it just a \"transient\".")
          (sha256
           (base32
            "1yf2xjx3459py6rji740jm8bmh2pv66ghnbjxsvjd4jf9kcdav83"))))
-      (build-system gnu-build-system)
+      (build-system emacs-build-system)
       (native-inputs
        `(("texinfo" ,texinfo)
          ("emacs" ,emacs-minimal)))
@@ -18404,51 +18313,22 @@ a suffix) we prefer to call it just a \"transient\".")
          ("emacs-transient" ,emacs-transient)))
       (arguments
        `(#:tests? #f ;no tests
-         #:modules ((srfi srfi-26)
-                    (guix build gnu-build-system)
-                    ((guix build emacs-build-system) #:prefix emacs:)
-                    (guix build utils)
-                    (guix build emacs-utils))
-         #:imported-modules (,@%gnu-build-system-modules
-                             (guix build emacs-build-system)
-                             (guix build emacs-utils))
          #:phases
          (modify-phases %standard-phases
-           (delete 'configure)
-           (delete 'install)
-           (add-after 'unpack 'delete-doc-targets
+           (add-after 'unpack 'build-info-manual
              (lambda _
-               (substitute* "./Makefile"
-                 (("lisp docs") "lisp"))))
-           (add-after 'delete-doc-targets 'chdir-lisp
+               (invoke "make" "info")
+               ;; Move the info file to lisp so that it gets installed by the
+               ;; emacs-build-system.
+               (rename-file "docs/forge.info" "lisp/forge.info")))
+           (add-after 'build-info-manual 'chdir-lisp
              (lambda _
-               (chdir "lisp")))
-           (add-after 'chdir-lisp 'emacs-install
-             (assoc-ref emacs:%standard-phases 'install))
-           (add-after 'emacs-install 'emacs-make-autoloads
-             (assoc-ref emacs:%standard-phases 'make-autoloads))
-           (add-after 'build 'install-elc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (el-dir (string-append
-                               out "/share/emacs/site-lisp/guix.d/forge-"
-                               ,version)))
-                 (for-each (cut install-file <> el-dir)
-                           (find-files "." "\\.elc"))
-                 #t)))
-           (add-after 'install-elc 'install-doc
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((out (assoc-ref outputs "out"))
-                      (info (string-append out "/share/info")))
-                 (with-directory-excursion "../docs"
-                   (invoke "makeinfo" "forge.texi")
-                   (install-file "forge.info" info)
-                   #t)))))))
+               (chdir "lisp")
+               #t)))))
       (home-page "https://github.com/magit/forge/")
       (synopsis "Access Git forges from Magit")
-      (description
-       "Work with Git forges, such as Github and Gitlab, from the comfort of
-Magit and the rest of Emacs.")
+      (description "Work with Git forges, such as Github and Gitlab, from the
+comfort of Magit and the rest of Emacs.")
       (license license:gpl3+))))
 
 (define-public emacs-matcha
@@ -21829,3 +21709,25 @@ a @samp{date} keywords, and optionally, a @samp{filetags} keyword.")
        "Daredevil SKK is a version of @acronym{SKK, Simple Kana to Kanji
 conversion program}, a Japanese input method on Emacs.")
       (license license:gpl2+))))
+
+(define-public emacs-objed
+  (package
+    (name "emacs-objed")
+    (version "0.8.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://elpa.gnu.org/packages/objed-" version ".tar"))
+        (sha256
+          (base32
+            "1s38d6bvggdk5p45ww1jb4gxifzgjwgw1m6ar920nlg0j4fgbcvr"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/clemera/objed")
+    (synopsis "Navigate and edit text objects")
+    (description
+      "@code{emacs-objed} allows to navigate and edit text objects.  It
+enables modal editing and composition of commands, too.  It combines ideas of
+other Editors like Vim or Kakoune and tries to align them with regular Emacs
+conventions.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm
index f9a21204d9..9e52f3bb38 100644
--- a/gnu/packages/flex.scm
+++ b/gnu/packages/flex.scm
@@ -74,16 +74,3 @@ regular expressions for each rule.  Whenever it finds a match, it
 executes the corresponding C code.")
     (license (non-copyleft "file://COPYING"
                            "See COPYING in the distribution."))))
-
-(define-public flex-2.6.1
-  (package
-    (inherit flex)
-    (version "2.6.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/westes/flex"
-                                  "/releases/download/v" version "/"
-                                  "flex-" version ".tar.xz"))
-             (sha256
-              (base32
-               "0gqhk4vkwy4gl9xbpgkljph8c0a5kpijz6wd0p5r9q202qn42yic"))))))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 5c158c0f99..855414a211 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2017, 2020 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
@@ -72,6 +72,7 @@
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
@@ -804,6 +805,43 @@ composes the final output.  A Wayland compositor is essentially a
 multiplexer to the KMS/DRM Linux kernel devices.")
     (license license:expat)))
 
+(define-public wev
+  ;; There simple tool has no version or release yet.
+  (let ((commit "cee3dfb2a8b40ee303611018c68ae182d84a7f46"))
+    (package
+      (name "wev")
+      (version (string-append "2020-02-06-" (string-take commit 8)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.sr.ht/~sircmpwn/wev")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0l71v3fzgiiv6xkk365q1l08qvaymxd4kpaya6r2g8yzkr7i2hms"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f ; no tests
+         #:make-flags
+         (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("scdoc" ,scdoc)))
+      (inputs
+       `(("libxkbcommon" ,libxkbcommon)
+         ("wayland" ,wayland)
+         ("wayland-protocols" ,wayland-protocols)))
+      (home-page "https://git.sr.ht/~sircmpwn/wev")
+      (synopsis "Wayland event viewer")
+      (description "Wev is a tool that opens a window, printing all events
+sent to a Wayland window, such as key presses.  It is analogous to the X11 tool
+XEv.")
+      (license license:expat))))
+
 (define-public exempi
   (package
     (name "exempi")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c34537a146..0e37675775 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -598,6 +598,136 @@ regular @command{cat}, but it also adds terminal escape codes between
 characters and lines resulting in a rainbow effect.")
       (license license:wtfpl2))))
 
+(define-public foobillard++
+  ;; Even though this latest revision is old already, stable release is
+  ;; lagging way behind it, and has issues with textures rendering.
+  (let ((svn-revision 170))
+    (package
+      (name "foobillard++")
+      (version (string-append "3.43-r" (number->string svn-revision)))
+      (source
+       (origin
+         (method svn-fetch)
+         (uri (svn-reference
+               (url "svn://svn.code.sf.net/p/foobillardplus/code/")
+               (revision svn-revision)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
+         (patches
+          (search-patches "foobillard++-pkg-config.patch"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             ;; Unfortunately, the game includes background music with
+             ;; a non-commercial clause.  Delete it.
+             (for-each delete-file (find-files "data/music" "\\.ogg$"))
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:configure-flags
+         (list
+          ;; Install data in a less exotic location.
+          (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
+          ;; Prevent a build error about undefined trigonometric functions.
+          "--enable-fastmath=no")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-makefile
+             ;; Remove hard-coded directories.  Also fix installation
+             ;; rule: it tries to move around non-existent files or
+             ;; files already moved.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "Makefile.am"
+                 (("/usr") (assoc-ref outputs "out"))
+                 (("cp .*?/foobillardplus\\.desktop.*") "")
+                 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
+                  ""))
+               #t))
+           (add-after 'unpack 'unbundle-font
+             ;; XXX: The package ships with LinBiolinum_aSB.ttf and
+             ;; LinBiolinum_aS.ttf, which are not provided by
+             ;; `font-linuxlibertine' package.  Therefore, we cannot replace
+             ;; them yet.
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
+                                            "/share/fonts/truetype/")))
+                 (with-directory-excursion "data"
+                   (for-each (lambda (f)
+                               (delete-file f)
+                               (symlink (string-append dejavu f) f))
+                             '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
+               #t))
+           (replace 'bootstrap
+             (lambda _
+               (invoke "aclocal" "--force")
+               (invoke "autoconf" "-f")
+               (invoke "autoheader" "-f")
+               (invoke "automake" "-a" "-c" "-f")))
+           (add-before 'build 'prepare-build
+             ;; Set correct environment for SDL.
+             (lambda* (#:key inputs #:allow-other-keys)
+               (setenv "CPATH"
+                       (string-append (assoc-ref inputs "sdl")
+                                      "/include/SDL:"
+                                      (or (getenv "CPATH") "")))
+               #t))
+           (add-before 'build 'fix-settings-directory
+             ;; Hide foobillardplus settings directory in $HOME.
+             (lambda _
+               (substitute* "src/history.c"
+                 (("/foobillardplus-data") "/.foobillardplus"))
+               #t))
+           (add-before 'install 'create-directories
+             ;; Install process does not create directories before
+             ;; trying to move file in it.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (mkdir-p (string-append out "/share/icons"))
+                 (mkdir-p (string-append out "/share/applications")))
+               #t))
+           (add-after 'install 'symlink-executable
+             ;; Symlink executable to $out/bin.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (mkdir-p bin)
+                 (with-directory-excursion bin
+                   (symlink "../share/foobillardplus/bin/foobillardplus"
+                            "foobillardplus"))
+                 #t))))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("font-dejavu" ,font-dejavu)
+         ("freetype" ,freetype)
+         ("glu" ,glu)
+         ("libpng" ,libpng)
+         ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
+      (home-page "http://foobillardplus.sourceforge.net/")
+      (synopsis "3D billiard game")
+      (description "FooBillard++ is an advanced 3D OpenGL billiard game
+based on the original foobillard 3.0a sources from Florian Berger.
+You can play it with one or two players or against the computer.
+
+The game features:
+
+@itemize
+@item Wood paneled table with gold covers and gold diamonds.
+@item Reflections on balls.
+@item Zoom in and out, rotation, different angles and bird's eye view.
+@item Different game modes: 8 or 9-ball, Snooker or Carambole.
+@item Tournaments.  Compete against other players.
+@item Animated cue with strength and eccentric hit adjustment.
+@item Jump shots and snipping.
+@item Realistic gameplay and billiard sounds.
+@item Red-Green stereo.
+@item And much more.
+@end itemize")
+      (license (list license:gpl2 license:silofl1.1)))))
+
 (define-public freedoom
   (package
     (name "freedoom")
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index f465470d49..5c5c51a0ad 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
+;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -605,26 +606,22 @@ using compilers other than GCC."
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'chdir
-                     (lambda _
-                       (chdir "libiberty")
-                       #t))
-         (replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out     (assoc-ref outputs "out"))
-                   (lib     (string-append out "/lib/"))
-                   (include (string-append out "/include/")))
-              (mkdir-p lib)
-              (mkdir-p include)
-              (copy-file "libiberty.a"
-                         (string-append lib "libiberty.a"))
-              (copy-file "../include/libiberty.h"
-                         (string-append include "libiberty.h"))
-              #t))))))
+           (lambda _
+             (chdir "libiberty")
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out     (assoc-ref outputs "out"))
+                    (lib     (string-append out "/lib/"))
+                    (include (string-append out "/include/")))
+               (install-file "libiberty.a" lib)
+               (install-file "../include/libiberty.h" include))
+             #t)))))
     (inputs '())
     (outputs '("out"))
     (native-inputs '())
     (propagated-inputs '())
+    (properties '())
     (synopsis "Collection of subroutines used by various GNU programs")))
 
 (define-public libiberty
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index a8fd36f03c..4352129fe2 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -81,6 +81,7 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
   #:use-module (gnu packages wxwidgets)
@@ -839,7 +840,7 @@ to create databases that are optimized for rendering/tile/map-services.")
 (define-public libosmium
   (package
     (name "libosmium")
-    (version "2.14.2")
+    (version "2.15.4")
     (source
      (origin
        (method git-fetch)
@@ -848,16 +849,18 @@ to create databases that are optimized for rendering/tile/map-services.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "123ri1l0a2b9fljgpwsl7z2w4i3kmgxz79d4ns9z4mwbp8sw0250"))))
+        (base32 "0mlcvqrhp40bzj5r5j9nfc5vbis8hmzcq9xi8jylkciyydaynhz4"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("boost" ,boost)
+       ("bzip2" ,bzip2)
        ("expat" ,expat)
        ("gdal" ,gdal)
        ("geos" ,geos)
-       ("proj.4" ,proj.4)
+       ("proj" ,proj)
        ("protozero" ,protozero)
        ("sparsehash" ,sparsehash)
+       ("utfcpp" ,utfcpp)
        ("zlib" ,zlib)))
     (native-inputs
      `(("doxygen" ,doxygen)))
@@ -870,7 +873,7 @@ OpenStreetMap data.")
 (define-public osm2pgsql
   (package
     (name "osm2pgsql")
-    (version "0.96.0")
+    (version "1.2.1")
     (source
      (origin
        (method git-fetch)
@@ -879,7 +882,7 @@ OpenStreetMap data.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "032cydh8ynaqfhdzmkvgbmqyjql668y6qln1l59l2s3ni9963bbl"))
+        (base32 "1ysan01lpqzjxlq3y2kdminfjs5d9zksicpf9vvzpdk3fzq51fc9"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -898,16 +901,17 @@ OpenStreetMap data.")
                             "/include"))))
     (inputs
      `(("boost" ,boost)
+       ("bzip2" ,bzip2)
        ("expat" ,expat)
        ("libosmium" ,libosmium)
        ("lua" ,lua)
        ("postgresql" ,postgresql)
-       ("proj.4" ,proj.4)
+       ("proj" ,proj)
        ("protozero" ,protozero)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("python-2" ,python-2)
-       ("python2-psycopg2" ,python2-psycopg2)))
+     `(("python" ,python)
+       ("python-psycopg2" ,python-psycopg2)))
     (home-page "https://github.com/openstreetmap/osm2pgsql")
     (synopsis "OSM data importer to postgresql")
     (description "Osm2pgsql is a tool for loading OpenStreetMap data into a
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index aeeced42bd..d9d757e614 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -146,6 +147,47 @@ GNOME Shell.")
     (home-page "https://github.com/ubuntu/gnome-shell-extension-appindicator/")
     (license license:gpl2+)))
 
+(define-public gnome-shell-extension-topicons-redux
+  (package
+    (name "gnome-shell-extension-topicons-redux")
+    (version "6")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/pop-planet/TopIcons-Redux.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1dli9xb545n3xlj6q4wl0y5gzkm903zs47p8fiq71pdvbr6v38rj"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("glib" ,glib "bin")))
+    (arguments
+     `(#:tests? #f                      ;no test defined in the project
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make"
+                       "install"
+                       (string-append
+                        "INSTALL_PATH="
+                        out
+                        "/share/gnome-shell/extensions"))))))))
+    (home-page "https://gitlab.com/pop-planet/TopIcons-Redux")
+    (synopsis "Display legacy tray icons in the GNOME Shell top panel")
+    (description "Many applications, such as chat clients, downloaders, and
+some media players, are meant to run long-term in the background even after you
+close their window.  These applications remain accessible by adding an icon to
+the GNOME Shell Legacy Tray.  However, the Legacy Tray was removed in GNOME
+3.26.  TopIcons Redux brings those icons back into the top panel so that it's
+easier to keep track of apps running in the backround.")
+    (license license:gpl2+)))
+
 (define-public gnome-shell-extension-dash-to-dock
   (package
     (name "gnome-shell-extension-dash-to-dock")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index f0b4d01e3d..ef65c5bcca 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -44,7 +44,7 @@
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;; Copyright © 2019, 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
-;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2019, 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2020 raingloom <raingloom@riseup.net>
@@ -1587,15 +1587,17 @@ on the GNOME Desktop with a single simple application.")
     (build-system meson-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'set-adwaita-theme-file-name
+                  (add-after 'unpack 'patch-schemas
                     (lambda* (#:key inputs #:allow-other-keys)
-                      ;; Provide the correct file name of the default GNOME
-                      ;; background, 'adwaita-timed.xml'.
                       (let ((theme (assoc-ref inputs "gnome-backgrounds")))
                         (substitute* (find-files "schemas"
                                                  "\\.gschema\\.xml\\.in$")
+                          ;; Provide the correct file name of the default GNOME
+                          ;; background, 'adwaita-timed.xml'.
                           (("@datadir@/backgrounds/gnome")
-                           (string-append theme "/share/backgrounds/gnome")))
+                           (string-append theme "/share/backgrounds/gnome"))
+                          ;; Do not reference fonts, that may not exist.
+                          (("'Source Code Pro 10'") "'Monospace 11'"))
                         #t))))))
     (inputs
      `(("glib" ,glib)
@@ -2160,245 +2162,84 @@ dealing with different structured file formats.")
 library.")
     (license license:lgpl2.0+)))
 
-(define* (computed-origin-method gexp-promise hash-algo hash
-                                 #:optional (name "source")
-                                 #:key (system (%current-system))
-                                 (guile (default-guile)))
-  "Return a derivation that executes the G-expression that results
-from forcing GEXP-PROMISE."
-  (mlet %store-monad ((guile (package->derivation guile system)))
-    (gexp->derivation (or name "computed-origin")
-                      (force gexp-promise)
-                      #:graft? #f       ;nothing to graft
-                      #:system system
-                      #:guile-for-build guile)))
-
-(define librsvg-next-source
-  (let* ((version         "2.46.4")
-         (upstream-source (origin
-                           (method url-fetch)
-                           (uri (string-append "mirror://gnome/sources/librsvg/"
-                                               (version-major+minor version)  "/"
-                                               "librsvg-" version ".tar.xz"))
-                           (sha256
-                            (base32
-                             "0afc82nsxc6kw136xid4vcq9kmq4rmgzzk8bh2pvln2cnvirwnxl")))))
-    (origin
-      (method computed-origin-method)
-      (file-name (string-append "librsvg-" version ".tar.xz"))
-      (sha256 #f)
-      (uri
-       (delay
-        (with-imported-modules '((guix build utils))
-          #~(begin
-              (use-modules (guix build utils))
-              (set-path-environment-variable
-               "PATH" '("bin")
-               (list "/tmp"
-                     #+(canonical-package xz)
-                     #+(canonical-package gzip)
-                     #+(canonical-package tar)))
-              (invoke "tar" "xvf" #+upstream-source)
-              (with-directory-excursion (string-append "librsvg-" #$version)
-                ;; The following crate(s) are needed in addition to the ones replaced:
-                (begin
-                  (invoke
-                   "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor")
-                  (invoke
-                   "tar" "xvf" #+(package-source rust-proc-macro2-0.4) "-C" "vendor")
-                  (invoke
-                   "tar" "xvf" #+(package-source rust-quote-0.6) "-C" "vendor")
-                  (invoke
-                   "tar" "xvf" #+(package-source rust-unicode-xid-0.1) "-C" "vendor")
-                  (invoke
-                   "tar" "xvf" #+(package-source rust-maybe-uninit-2.0) "-C" "vendor"))
-                (for-each
-                  (lambda (crate)
-                    (delete-file-recursively (string-append "vendor/" (car crate)))
-                    (invoke "tar" "xvf" (cdr crate) "-C" "vendor"))
-                  '(("aho-corasick" . #+(package-source rust-aho-corasick-0.7))
-;; alga 0.9
-                    ("approx" . #+(package-source rust-approx-0.3))
-                    ("arrayvec" . #+(package-source rust-arrayvec-0.4))
-                    ("atty" . #+(package-source rust-atty-0.2))
-                    ("autocfg" . #+(package-source rust-autocfg-1.0))
-                    ("bitflags" . #+(package-source rust-bitflags-1))
-;; block 0.1
-                    ("bstr" . #+(package-source rust-bstr-0.2))
-                    ("byteorder" . #+(package-source rust-byteorder-1.3))
-;; cairo-rs 0.7
-;; cairo-sys-rs 0.9
-                    ("cast" . #+(package-source rust-cast-0.2))
-                    ("cfg-if" . #+(package-source rust-cfg-if-0.1))
-                    ("clap" . #+(package-source rust-clap-2))
-                    ("cloudabi" . #+(package-source rust-cloudabi-0.0))
-                    ("criterion" . #+(package-source rust-criterion-0.2))
-                    ("criterion-plot" . #+(package-source rust-criterion-plot-0.3))
-                    ("crossbeam-deque" . #+(package-source rust-crossbeam-deque-0.7))
-                    ("crossbeam-epoch" . #+(package-source rust-crossbeam-epoch-0.8))
-                    ("crossbeam-queue" . #+(package-source rust-crossbeam-queue-0.2))
-                    ("crossbeam-utils" . #+(package-source rust-crossbeam-utils-0.7))
-;; cssparser 0.25
-;; cssparser-macros 0.3
-                    ("csv" . #+(package-source rust-csv-1.1))
-                    ("csv-core" . #+(package-source rust-csv-core-0.1))
-;; data-url 0.1
-;; downcast-rs 1.0
-                    ("dtoa" . #+(package-source rust-dtoa-0.4))
-;; dtoa-short 0.3
-                    ("either" . #+(package-source rust-either-1.5))
-                    ("encoding" . #+(package-source rust-encoding-0.2))
-                    ("encoding-index-japanese" . #+(package-source rust-encoding-index-japanese-1.20141219))
-                    ("encoding-index-korean" . #+(package-source rust-encoding-index-korean-1.20141219))
-                    ("encoding-index-simpchinese" . #+(package-source rust-encoding-index-simpchinese-1.20141219))
-                    ("encoding-index-singlebyte" . #+(package-source rust-encoding-index-singlebyte-1.20141219))
-                    ("encoding-index-tradchinese" . #+(package-source rust-encoding-index-tradchinese-1.20141219))
-                    ("encoding_index_tests" . #+(package-source rust-encoding-index-tests-0.1))
-;; float-cmp 0.5
-;; fragile 0.3
-                    ("fuchsia-cprng" . #+(package-source rust-fuchsia-cprng-0.1))
-                    ("futf" . #+(package-source rust-futf-0.1))
-;; gdk-pixbuf 0.7
-;; gdk-pixbuf-sys 0.9
-                    ("generic-array" . #+(package-source rust-generic-array-0.12))
-;; gio 0.7
-                    ("gio-sys" . #+(package-source rust-gio-sys-0.9))
-;; glib 0.8
-                    ("glib-sys" . #+(package-source rust-glib-sys-0.9))
-                    ("gobject-sys" . #+(package-source rust-gobject-sys-0.9))
-                    ("idna" . #+(package-source rust-idna-0.2))
-                    ("itertools" . #+(package-source rust-itertools-0.8))
-                    ("itoa" . #+(package-source rust-itoa-0.4))
-                    ("language-tags" . #+(package-source rust-language-tags-0.2))
-                    ("lazy_static" . #+(package-source rust-lazy-static-1))
-                    ("libc" . #+(package-source rust-libc-0.2))
-                    ("libm" . #+(package-source rust-libm-0.1))
-                    ("locale_config" . #+(package-source rust-locale-config-0.3))
-                    ("log" . #+(package-source rust-log-0.4))
-                    ("mac" . #+(package-source rust-mac-0.1))
-                    ("malloc_buf" . #+(package-source rust-malloc-buf-0.0))
-;; markup5ever 0.9
-                    ("matches" . #+(package-source rust-matches-0.1))
-;; matrixmultiply 0.2
-                    ("memchr" . #+(package-source rust-memchr-2.2))
-                    ("memoffset" . #+(package-source rust-memoffset-0.5))
-;; nalgebra 0.18
-                    ("new_debug_unreachable" . #+(package-source rust-new-debug-unreachable-1.0))
-                    ("nodrop" . #+(package-source rust-nodrop-0.1))
-                    ("num-complex" . #+(package-source rust-num-complex-0.2))
-                    ("num-integer" . #+(package-source rust-num-integer-0.1))
-                    ("num-rational" . #+(package-source rust-num-rational-0.2))
-                    ("num-traits" . #+(package-source rust-num-traits-0.2))
-                    ("num_cpus" . #+(package-source rust-num-cpus-1.10))
-                    ("objc" . #+(package-source rust-objc-0.2))
-                    ("objc-foundation" . #+(package-source rust-objc-foundation-0.1))
-                    ("objc_id" . #+(package-source rust-objc-id-0.1))
-;; pango 0.7
-;; pango-sys 0.9
-;; pangocairo 0.8
-;; pangocairo-sys 0.10
-                    ("percent-encoding" . #+(package-source rust-percent-encoding-2.1))
-                    ("phf" . #+(package-source rust-phf-0.7))
-                    ("phf_codegen" . #+(package-source rust-phf-codegen-0.7))
-                    ("phf_generator" . #+(package-source rust-phf-generator-0.7))
-                    ("phf_shared" . #+(package-source rust-phf-shared-0.7))
-                    ("pkg-config" . #+(package-source rust-pkg-config-0.3))
-                    ("precomputed-hash" . #+(package-source rust-precomputed-hash-0.1))
-                    ("proc-macro2" . #+(package-source rust-proc-macro2-1.0))
-;; procedural-masquerade 0.1
-                    ("quote" . #+(package-source rust-quote-1.0))
-                    ("rand" . #+(package-source rust-rand-0.6))
-                    ("rand_chacha" . #+(package-source rust-rand-chacha-0.1))
-                    ("rand_core-0.3.1" . #+(package-source rust-rand-core-0.3))
-                    ("rand_core" . #+(package-source rust-rand-core-0.4))
-                    ("rand_hc" . #+(package-source rust-rand-hc-0.1))
-                    ("rand_isaac" . #+(package-source rust-rand-isaac-0.1))
-                    ("rand_jitter" . #+(package-source rust-rand-jitter-0.1))
-                    ("rand_os" . #+(package-source rust-rand-os-0.1))
-                    ("rand_pcg" . #+(package-source rust-rand-pcg-0.1))
-                    ("rand_xorshift" . #+(package-source rust-rand-xorshift-0.1))
-                    ("rand_xoshiro" . #+(package-source rust-rand-xoshiro-0.1))
-;; rawpointer 0.2
-                    ("rayon" . #+(package-source rust-rayon-1.3))
-                    ("rayon-core" . #+(package-source rust-rayon-core-1.7))
-;; rctree 0.3
-                    ("rdrand" . #+(package-source rust-rdrand-0.4))
-                    ("regex" . #+(package-source rust-regex-1.3))
-                    ("regex-automata" . #+(package-source rust-regex-automata-0.1))
-                    ("regex-syntax" . #+(package-source rust-regex-syntax-0.6))
-                    ("rustc_version" . #+(package-source rust-rustc-version-0.2))
-                    ("ryu" . #+(package-source rust-ryu-1.0))
-                    ("same-file" . #+(package-source rust-same-file-1.0))
-                    ("scopeguard" . #+(package-source rust-scopeguard-1.0))
-                    ("semver" . #+(package-source rust-semver-0.9))
-                    ("semver-parser" . #+(package-source rust-semver-parser-0.7))
-                    ("serde" . #+(package-source rust-serde-1.0))
-                    ("serde_derive" . #+(package-source rust-serde-derive-1.0))
-                    ("serde_json" . #+(package-source rust-serde-json-1.0))
-                    ("siphasher" . #+(package-source rust-siphasher-0.2))
-                    ("smallvec" . #+(package-source rust-smallvec-0.6))
-                    ("string_cache" . #+(package-source rust-string-cache-0.7))
-                    ("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
-                    ("string_cache_shared" . #+(package-source rust-string-cache-shared-0.3))
-                    ("syn" . #+(package-source rust-syn-1.0))
-                    ("tendril" . #+(package-source rust-tendril-0.4))
-                    ("textwrap" . #+(package-source rust-textwrap-0.11))
-                    ("thread_local" . #+(package-source rust-thread-local-1.0))
-                    ("tinytemplate" . #+(package-source rust-tinytemplate-1.0))
-                    ("typenum" . #+(package-source rust-typenum-1.10))
-                    ("unicode-bidi" . #+(package-source rust-unicode-bidi-0.3))
-                    ("unicode-normalization" . #+(package-source rust-unicode-normalization-0.1))
-                    ("unicode-width" . #+(package-source rust-unicode-width-0.1))
-                    ("unicode-xid" . #+(package-source rust-unicode-xid-0.2))
-                    ("url" . #+(package-source rust-url-2.1))
-                    ("utf-8" . #+(package-source rust-utf-8-0.7))
-                    ("walkdir" . #+(package-source rust-walkdir-2.2))
-                    ("winapi" . #+(package-source rust-winapi-0.3))
-                    ("winapi-i686-pc-windows-gnu" . #+(package-source rust-winapi-i686-pc-windows-gnu-0.4))
-                    ("winapi-util" . #+(package-source rust-winapi-util-0.1))
-                    ("winapi-x86_64-pc-windows-gnu" . #+(package-source rust-winapi-x86-64-pc-windows-gnu-0.4))
-                    ("xml-rs" . #+(package-source rust-xml-rs-0.8)))))
-              (format #t "Replacing vendored crates in the tarball and repacking ...~%")
-              (force-output)
-              (invoke "tar" "cfa" #$output
-                      ;; Avoid non-determinism in the archive.  We set the
-                      ;; mtime of files in the archive to early 1980 because
-                      ;; the build process fails if the mtime of source
-                      ;; files is pre-1980, due to the creation of zip
-                      ;; archives.
-                      "--mtime=@315619200" ; 1980-01-02 UTC
-                      "--owner=root:0"
-                      "--group=root:0"
-                      "--sort=name"
-                      (string-append "librsvg-" #$version))
-              #t)))))))
-
 (define-public librsvg-next
   (package
+    (inherit librsvg)
     (name "librsvg")
     (version "2.46.4")
-    (source librsvg-next-source)
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
-       (list "--disable-static"
-             "--enable-vala") ; needed for e.g. gnome-mines
-       #:make-flags '("CC=gcc")
-       #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/librsvg/"
+                                  (version-major+minor version)  "/"
+                                  "librsvg-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0afc82nsxc6kw136xid4vcq9kmq4rmgzzk8bh2pvln2cnvirwnxl"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin (delete-file-recursively "vendor")
+                       ;; Don't demand an exact version for string_cache
+                       (substitute* "rsvg_internals/Cargo.toml"
+                         (("\"=") "\""))
+                       #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:modules ((guix build cargo-build-system)
+                  (guix build utils)
+                  ((guix build gnu-build-system) #:prefix gnu:))
+       #:vendor-dir "vendor"
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-cssparser" ,rust-cssparser-0.25)
+        ("rust-data-url" ,rust-data-url-0.1)
+        ("rust-downcast-rs" ,rust-downcast-rs-1.1)
+        ("rust-encoding" ,rust-encoding-0.2)
+        ("rust-float-cmp" ,rust-float-cmp-0.5)
+        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.7)
+        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
+        ("rust-gio" ,rust-gio-0.7)
+        ("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-itertools" ,rust-itertools-0.8)
+        ("rust-language-tags" ,rust-language-tags-0.2)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-locale-config" ,rust-locale-config-0.3)
+        ("rust-markup5ever" ,rust-markup5ever-0.9)
+        ("rust-nalgebra" ,rust-nalgebra-0.18)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-pkg-config" ,rust-pkg-config-0.3)
+        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-pangocairo" ,rust-pangocairo-0.8)
+        ("rust-phf" ,rust-phf-0.7)
+        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-rctree" ,rust-rctree-0.3)
+        ("rust-string-cache" ,rust-string-cache-0.7)
+        ("rust-regex" ,rust-regex-1.3)
+        ("rust-url" ,rust-url-2.1)
+        ("rust-xml-rs" ,rust-xml-rs-0.8))
+       #:cargo-development-inputs
+       (("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-criterion" ,rust-criterion-0.2))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'patch-cargo-checksums
+         (add-after 'unpack 'prepare-for-build
            (lambda _
-             (use-modules (guix build cargo-utils))
-             (substitute* "librsvg/Cargo.toml"
-               (("bitflags .*") "bitflags = \"1\"\n")) ; 1.2 is vendored
-             (substitute* "rsvg_internals/Cargo.toml"
-               (("\"=") "\""))
-             (generate-all-checksums "vendor")
-             (delete-file "Cargo.lock")
-             (invoke "cargo" "generate-lockfile")))
+             ;; In lieu of #:make-flags
+             (setenv "CC" "gcc")
+             ;; Something about the build environment resists building
+             ;; successfully with the '--locked' flag.
+             (substitute* '("Makefile.am"
+                            "Makefile.in")
+               (("--locked") ""))
+             #t))
          (add-before 'configure 'pre-configure
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda _
              (substitute* "gdk-pixbuf-loader/Makefile.in"
                ;; By default the gdk-pixbuf loader is installed under
                ;; gdk-pixbuf's prefix.  Work around that.
@@ -2410,6 +2251,27 @@ from forcing GEXP-PROMISE."
                (("gdk_pixbuf_cache_file = .*$")
                 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
              #t))
+         (add-after 'configure 'gnu-configure
+           (assoc-ref gnu:%standard-phases 'configure))
+           ;(lambda* (#:key outputs #:allow-other-keys)
+           ;  ((assoc-ref gnu:%standard-phases 'configure)
+           ;   #:outputs outputs
+           ;   #:configure-flags ("--disable-static"
+           ;                      "--enable-vala"))))
+         (add-after 'configure 'dont-vendor-self
+           (lambda* (#:key vendor-dir #:allow-other-keys)
+             ;; Don't keep the whole tarball in the vendor directory
+             (delete-file-recursively
+               (string-append vendor-dir "/" ,name "-" ,version ".tar.xz"))
+             #t))
+         (replace 'build
+           (assoc-ref gnu:%standard-phases 'build))
+         (replace 'check
+           (lambda* args
+             ((assoc-ref gnu:%standard-phases 'check)
+              #:test-target "check")))
+         (replace 'install
+           (assoc-ref gnu:%standard-phases 'install))
          (add-before 'check 'remove-failing-tests
            (lambda _
              (with-directory-excursion "tests/fixtures/reftests"
@@ -2431,30 +2293,6 @@ from forcing GEXP-PROMISE."
                            ;; This test fails on aarch64:
                            "bugs/777834-empty-text-children.svg")))
              #t)))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ;; This is the minimum supported Rust version in Librsvg 2.46.
-       ("rust" ,rust-1.34)
-       ("cargo" ,rust-1.34 "cargo")
-       ("vala" ,vala)
-       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
-       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
-    (inputs
-     `(("pango" ,pango)
-       ("libcroco" ,libcroco)
-       ("bzip2" ,bzip2)
-       ("libgsf" ,libgsf)
-       ("libxml2" ,libxml2)))
-    (propagated-inputs
-     ;; librsvg-2.0.pc refers to all of that.
-     `(("cairo" ,cairo)
-       ("gdk-pixbuf" ,gdk-pixbuf)
-       ("glib" ,glib)))
-    (home-page "https://wiki.gnome.org/LibRsvg")
-    (synopsis "Render SVG files using Cairo")
-    (description
-     "Librsvg is a C library to render SVG files using the Cairo 2D graphics
-library.")
     (license license:lgpl2.1+)))
 
 (define-public libidl
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index c22eb57fc7..e1abcc1c83 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -251,14 +251,14 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.2.19")
+    (version "2.2.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1h6yx6sdpz3lf9gdppgxqcf73baynr8gflmh43286fkgw3058994"))))
+                "0c6a4v9p6qzhsw1pfcwc459bxpc8hma0w9z8iqb9khvligack9q4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -404,6 +404,15 @@ libskba (working with X.509 certificates and CMS data).")
       (sha256
        (base32 "0imyjfryvvjdbai454p70zcr95m94j9xnzywrlilqdw2fqi0pqy4"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-failing-test
+           ;; XXX gnupg@2.2.20 breaks the expected JSON response for this test.
+           (lambda _
+             (substitute* "tests/json/t-json.c"
+               (("\"t-keylist-secret\", ") ""))
+             #t)))))
     (native-inputs
      `(("gnupg" ,gnupg)))
     (propagated-inputs
@@ -1003,6 +1012,16 @@ however, pgpdump produces more detailed and easier to understand output.")
                (base32
                 "1cbpc45f8qbdkd62p12s3q2rdq6fa5xdzwmcwd3xrj55bzkspnwm"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gnupg (assoc-ref inputs "gnupg")))
+               (wrap-program (string-append out "/bin/gpa")
+                 `("PATH" ":" prefix (,(string-append gnupg "/bin"))))
+               #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 77cb3ba79d..ef1bea7b7c 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -326,7 +326,7 @@ exception-handling library.")
 flexible 3D engine written in C++ designed to make it easier and more intuitive
 for developers to produce applications utilising hardware-accelerated 3D
 graphics.")
-    (home-page "http://www.ogre3d.org/")
+    (home-page "https://www.ogre3d.org/")
     (license license:expat)))
 
 (define-public openexr
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 9e89fe1e61..b887da1076 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -228,7 +228,7 @@ visualization tool suite.")
      `(("python-nose" ,python-nose)
        ("python-mock" ,python-mock)
        ("python-doctest-ignore-unicode" ,python-doctest-ignore-unicode)))
-    (home-page "http://pygraphviz.github.io")
+    (home-page "https://pygraphviz.github.io")
     (synopsis "Python interface to Graphviz")
     (description "PyGraphviz is a Python interface to the Graphviz graph
 layout and visualization package.  With PyGraphviz you can create, edit, read,
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 12530c95b4..d20d460e1b 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -956,7 +957,7 @@ exceptions, macros, and a dynamic programming environment.")
       (description
        "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
 images onto Cairo surfaces.")
-      (home-page "http://wingolog.org/projects/guile-rsvg/")
+      (home-page "https://wingolog.org/projects/guile-rsvg/")
       (license license:lgpl2.1+))))
 
 (define-public guile2.2-rsvg
@@ -1944,3 +1945,30 @@ displayed on the other side of the bus.")
 
     ;; Dual-licensed under either LGPLv2.1 or LGPLv3.
     (license (list license:lgpl2.1 license:lgpl3))))
+
+(define-public gtk-layer-shell
+  (package
+    (name "gtk-layer-shell")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/wmww/gtk-layer-shell/releases/download/v"
+             version "/gtk-layer-shell-" version ".tar.xz"))
+       (sha256
+        (base32 "0ncklk3z0fzlz6p76jdcrr1ykyp1f4ykjjch4x2hfp9bwsnl4a3m"))))
+    (build-system meson-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("gobject-introspection" ,gobject-introspection)))
+    (inputs `(("wayland" ,wayland)
+              ("gtk+" ,gtk+)))
+    (home-page "https://github.com/wmww/gtk-layer-shell")
+    (synopsis "Library to create Wayland desktop components using the Layer
+Shell protocol")
+    (description "Layer Shell is a Wayland protocol for desktop shell
+components, such as panels, notifications and wallpapers.  It can be used to
+anchor windows to a corner or edge of the output, or stretch them across the
+entire output.  It supports all Layer Shell features including popups and
+popovers.")
+    (license license:expat)))
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index fe99fb9236..661a725fca 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -598,7 +598,7 @@ is not available for Guile 2.0.")
 highlighting library for GNU Guile.  It can parse code written in various
 programming languages into a simple s-expression that can be converted to
 HTML (via SXML) or any other format for rendering.")
-    (home-page "http://dthompson.us/projects/guile-syntax-highlight.html")
+    (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
     (license license:lgpl3+)))
 
 (define-public guile2.2-syntax-highlight
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index f5b45d0bfb..12cb857cbb 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -754,8 +754,26 @@ advanced user's otherwise working script to fail under future circumstances.
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
     (home-page "https://github.com/jaspervdj/stylish-haskell")
     (synopsis "Haskell code prettifier")
-    (description
-     "A simple Haskell code prettifier.  The goal is not to format all of the
-code in a file, just clean up import statements and a few other tedious
-items.  This tool tries to help where necessary without getting in the way.")
+    (description "Stylish-haskell is a Haskell code prettifier.  The goal is
+not to format all of the code in a file, to avoid \"getting in the way\".
+However, this tool can e.g. clean up import statements and help doing various
+tasks that get tedious very quickly.  It can
+@itemize
+@item
+Align and sort @code{import} statements
+@item
+Group and wrap @code{{-# LANGUAGE #-}} pragmas, remove (some) redundant
+pragmas
+@item
+Remove trailing whitespaces
+@item
+Align branches in @code{case} and fields in records
+@item
+Convert line endings (customisable)
+@item
+Replace tabs by four spaces (turned off by default)
+@item
+Replace some ASCII sequences by their Unicode equivalent (turned off by
+default)
+@end itemize")
     (license license:bsd-3)))
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 418eb7cc46..0828dc93c6 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -3774,7 +3774,7 @@ versions of GHC (i.e., < 6.10).")
 (define-public ghc-extra
   (package
     (name "ghc-extra")
-    (version "1.7.1")
+    (version "1.6.21")
     (source
      (origin
        (method url-fetch)
@@ -3784,7 +3784,7 @@ versions of GHC (i.e., < 6.10).")
              ".tar.gz"))
        (sha256
         (base32
-         "0zshxv9dnd8vksncmb8dj4wvq2wdybzwxyhmy2zp6a81icm4azx4"))))
+         "1gjx98w4w61g043k6rzc8i34cbxpcigi8lb6i7pp1vwp8w8jm5vl"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-clock" ,ghc-clock)
@@ -5286,8 +5286,7 @@ descriptions.")
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out   (assoc-ref outputs "out"))
                     (elisp-file "elisp/hindent.el")
-                    (dest  (string-append out "/share/emacs/site-lisp"
-                                          "/guix.d/hindent-" ,version))
+                    (dest  (string-append out "/share/emacs/site-lisp"))
                     (emacs (string-append (assoc-ref inputs "emacs")
                                           "/bin/emacs")))
                (make-file-writable elisp-file)
@@ -11120,68 +11119,7 @@ occurrences of a substring (the first in case of overlaps) with another.")
     (license license:bsd-3)))
 
 (define-public ghc-stylish-haskell
-  (package
-    (name "ghc-stylish-haskell")
-    (version "0.9.2.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "mirror://hackage/package/stylish-haskell/stylish-haskell-"
-               version
-               ".tar.gz"))
-        (sha256
-          (base32
-            "1ls11fdx6snvfx8yykpidz142zzxwi5bazl49hgfqlwx50rqcp7w"))))
-    (build-system haskell-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'update-constraints
-           (lambda _
-             (substitute* "stylish-haskell.cabal"
-               (("haskell-src-exts >= 1\\.18   && < 1\\.21,")
-                "haskell-src-exts >= 1.18   && < 1.22,"))
-             #t)))))
-    (inputs
-      `(("ghc-aeson" ,ghc-aeson)
-        ("ghc-file-embed" ,ghc-file-embed)
-        ("ghc-haskell-src-exts" ,ghc-haskell-src-exts)
-        ("ghc-semigroups" ,ghc-semigroups)
-        ("ghc-syb" ,ghc-syb)
-        ("ghc-yaml" ,ghc-yaml)
-        ("ghc-strict" ,ghc-strict)
-        ("ghc-optparse-applicative"
-         ,ghc-optparse-applicative)))
-    (native-inputs
-      `(("ghc-hunit" ,ghc-hunit)
-        ("ghc-test-framework" ,ghc-test-framework)
-        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
-    (home-page "https://github.com/jaspervdj/stylish-haskell")
-    (synopsis "Haskell code prettifier")
-    (description "Stylish-haskell is a Haskell code prettifier.  The goal is
-not to format all of the code in a file, to avoid \"getting in the way\".
-However, this tool can e.g. clean up import statements and help doing various
-tasks that get tedious very quickly.  It can
-@itemize
-@item
-Align and sort @code{import} statements
-@item
-Group and wrap @code{{-# LANGUAGE #-}} pragmas, remove (some) redundant
-pragmas
-@item
-Remove trailing whitespaces
-@item
-Align branches in @code{case} and fields in records
-@item
-Convert line endings (customisable)
-@item
-Replace tabs by four spaces (turned off by default)
-@item
-Replace some ASCII sequences by their Unicode equivalent (turned off by
-default)
-@end itemize")
-    (license license:bsd-3)))
+  (deprecated-package "ghc-stylish-haskell" stylish-haskell))
 
 (define-public ghc-svg-builder
   (package
diff --git a/gnu/packages/hyperledger.scm b/gnu/packages/hyperledger.scm
index f0b33e0deb..86eb86d3b5 100644
--- a/gnu/packages/hyperledger.scm
+++ b/gnu/packages/hyperledger.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages popt)
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages rpc)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages web))
@@ -189,7 +190,7 @@ link-time.  New implementations can be added as well.")
     (inputs
      `(("boost" ,boost-1.69)
        ("gflags" ,gflags)
-       ("grpc" ,grpc)
+       ("grpc" ,grpc-1.16.1)
        ("hyperledger-iroha-ed25519" ,hyperledger-iroha-ed25519)
        ("postgresql" ,postgresql)
        ("protobuf" ,protobuf)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 46ad22d2a0..1b8fd32c80 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1805,10 +1805,10 @@ identical visual appearance.")
      (sha256
       (base32 "0brljl4zfbn5mh9hkfrfkvd27c5y9vdkgap9r1hrfy9r1x20sskn"))))
    (build-system meson-build-system)
-   (native-inputs `(("pkg-config" ,pkg-config)))
+   (native-inputs `(("pkg-config" ,pkg-config)
+                    ("scdoc" ,scdoc)))
    (inputs `(("cairo" ,cairo)
              ("libjpeg-turbo" ,libjpeg-turbo)
-             ("scdoc" ,scdoc)
              ("wayland" ,wayland)
              ("wayland-protocols" ,wayland-protocols)))
    (home-page "https://github.com/emersion/grim")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 26b67ae041..c9d59bbabd 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3669,7 +3669,7 @@ these two libraries to vary independently of one another.")
        #:tests? #f));; FIXME: we need to generate some resources as in pom.xml
     (native-inputs
      `(("java-junit" ,java-junit)))
-    (home-page "http://codehaus-plexus.github.io/plexus-classworlds/")
+    (home-page "https://codehaus-plexus.github.io/plexus-classworlds/")
     (synopsis "Java class loader framework")
     (description "Plexus classworlds replaces the native @code{ClassLoader}
 mechanism of Java.  It is especially useful for dynamic loading of application
@@ -4179,7 +4179,7 @@ project and determining what files need to be rebuilt.")
        ("java-plexus-classworlds" ,java-plexus-classworlds)
        ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
        ("java-guava" ,java-guava)))
-    (home-page "http://codehaus-plexus.github.io/modello/")
+    (home-page "https://codehaus-plexus.github.io/modello/")
     (synopsis "Framework for code generation from a simple model")
     (description "Modello is a framework for code generation from a simple model.
 
@@ -4753,7 +4753,7 @@ available in the Java programming language or Commons Lang.")
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://openjdk.java.net/projects/code-tools/jmh/")
+    (home-page "https://openjdk.java.net/projects/code-tools/jmh/")
     (synopsis "Benchmark harness for the JVM")
     (description "JMH is a Java harness for building, running, and analysing
 nano/micro/milli/macro benchmarks written in Java and other languages
@@ -8040,7 +8040,7 @@ package contains utilities for obtaining services via the Java SE 6
      `(#:jar-name "java-aqute-bnd-annotation.jar"
        #:source-dir "biz.aQute.bnd.annotation/src"
        #:tests? #f)); empty test dir
-    (home-page "http://bnd.bndtools.org/")
+    (home-page "https://bnd.bndtools.org/")
     (synopsis "Tools for OSGi")
     (description "Bnd is a swiss army knife for OSGi, it creates manifest
 headers based on analyzing the class code, it verifies the project settings,
@@ -10363,7 +10363,7 @@ wider problem of Object to Object transformation.")
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)
        ("tzdata" ,tzdata)))
-    (home-page "http://www.joda.org/joda-time/")
+    (home-page "https://www.joda.org/joda-time/")
     (synopsis "Replacement for the Java date and time classes")
     (description "Joda-Time is a replacement for the Java date and time
 classes prior to Java SE 8.")
diff --git a/gnu/packages/kde-pim.scm b/gnu/packages/kde-pim.scm
index 07293b6bd1..bf962859b9 100644
--- a/gnu/packages/kde-pim.scm
+++ b/gnu/packages/kde-pim.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages kde-internet)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages search)
@@ -334,6 +335,112 @@ Akonadi PIM data server.  It uses Xapian for indexing and querying.")
     (license ;; GPL for programs, LGPL for libraries
      (list license:gpl2+ license:lgpl2.0+))))
 
+(define-public kincidenceeditor
+  (package
+    (name "kincidenceeditor")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/incidenceeditor-" version ".tar.xz"))
+       (sha256
+        (base32 "0v962v2ihawndg39ypkfawa449vpbdyg00ib7avb19a153y3wxg6"))))
+    (properties `((upstream-name . "incidenceeditor")))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-calendar" ,akonadi-calendar)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("boost" ,boost)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalendarsupport" ,kcalendarsupport)
+       ("kcalutils" ,kcalutils)
+       ("kcodecs" ,kcodecs)
+       ("kcontacts" ,kcontacts)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("kdiagram" ,kdiagram)
+       ("keventviews" ,keventviews)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kldap" ,kldap)
+       ("kmailtransport" ,kmailtransport)
+       ("kmime" ,kmime)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallat" ,kwallet)
+       ("libkdepim" ,libkdepim)
+       ("qtbase" ,qtbase)))
+    (home-page "https://cgit.kde.org/incidenceeditor.git")
+    (synopsis "KDE PIM library for editing incidences")
+    (description "This library provides an incidence editor for KDE PIM.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
+(define-public kaddressbook
+  (package
+    (name "kaddressbook")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kaddressbook-" version ".tar.xz"))
+       (sha256
+        (base32 "1bpl9cqjv7s6pnsaa266jqmny2s6ldkylxviri162jxg51v1hhz3"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-search" ,akonadi-search)
+       ("boost" ,boost)
+       ("gpgme" ,gpgme)
+       ("grantlee" ,grantlee)
+       ("grantleetheme" ,grantleetheme)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcmutils" ,kcmutils)
+       ("kcompletion" ,kcompletion)
+       ("kcontacts" ,kcontacts)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("kdoctools" ,kdoctools)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kmime" ,kmime)
+       ("kontactinterface" ,kontactinterface)
+       ("kparts" ,kparts)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kxmlgui" ,kxmlgui)
+       ("libkdepim" ,libkdepim)
+       ("libkleo" ,libkleo)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set, required for tests
+       ("prison" ,prison)
+       ("qgpgme" ,qgpgme)
+       ("qtbase" ,qtbase)))
+    (home-page "https://kontact.kde.org/components/kaddressbook.html")
+    (synopsis "Address Book application to manage your contacts")
+    (description "KAddressBook stores all the personal details of your family,
+friends and other contacts.  It supports large variety of services, including
+NextCloud, Kolab, Google Contacts, Microsoft Exchange (EWS) or any standard
+CalDAV server.")
+    (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
 (define-public kalarmcal
   (package
     (name "kalarmcal")
@@ -375,6 +482,86 @@ Akonadi PIM data server.  It uses Xapian for indexing and querying.")
 calendar data.")
     (license  license:lgpl2.0+)))
 
+(define-public kblog
+  (package
+    (name "kblog")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kblog-" version ".tar.xz"))
+       (sha256
+        (base32 "0r3ik3df444kzg2mnzckkh4kk6v08zil1f26dwmxsslsqw9hl0vv"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("kcalendarcore" ,kcalendarcore)
+       ("kcoreaddons" ,kcoreaddons)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kxmlrpcclient" ,kxmlrpcclient)
+       ("qtbase" ,qtbase)
+       ("syndication" ,syndication)))
+    ;; Note: Some tests take up to 90 sec.
+    (home-page "https://cgit.kde.org/kblog.git")
+    (synopsis "Client-side support library for web application remote blogging
+APIs")
+    (description "KBlog is a library for calling functions on Blogger 1.0,
+MetaWeblog, MovableType and GData compatible blogs.  It calls the APIs using
+KXmlRpcClient and Syndication.  It supports asynchronous sending and fetching
+of posts and, if supported on the server, multimedia files.  Almost every
+modern blogging web application that provides an XML data interface supports
+one of the APIs mentioned above.")
+    (license license:lgpl2.0+)))
+
+(define-public kcalendarsupport
+  (package
+    (name "kcalendarsupport")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/calendarsupport-" version ".tar.xz"))
+       (sha256
+        (base32 "1hwfh5njq4614ypwdilna33hdcn11kshpwg6n27cag1qhwrxs1i4"))))
+    (properties `((upstream-name . "calendarsupport")))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-calendar" ,akonadi-calendar)
+       ("akonadi-mime" ,akonadi-mime)
+       ("boost" ,boost)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalutils", kcalutils)
+       ("kcompletion" ,kcompletion)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("kguiaddons" ,kguiaddons)
+       ("kholidays" ,kholidays)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kmime" ,kmime)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kxmlgui" ,kxmlgui)
+       ("qtbase" ,qtbase)))
+    (home-page "https://api.kde.org/stable/calendarsupport/")
+    (synopsis "Calendar Support library for KDE PIM")
+    (description "The Calendar Support library provides helper utilities for
+calendaring applications.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kcalutils
   (package
     (name "kcalutils")
@@ -414,6 +601,34 @@ data")
 functions for accessing calendar data using the kcalcore API.")
     (license  license:lgpl2.0+)))
 
+(define-public kdav
+  (package
+    (name "kdav")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kdav-" version ".tar.xz"))
+       (sha256
+        (base32 "1w59n17lridglphnm4mnmmzq1ijpbp269qxfmz01vk6wry6hlnp8"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("kcoreaddons" ,kcoreaddons)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("qtbase" ,qtbase)
+       ("qtxmlpatterns" ,qtxmlpatterns)))
+    (home-page "https://cgit.kde.org/kdav.git")
+    (synopsis "DAV protocol implementation with KJobs")
+    (description "This is a DAV protocol implemention with KJobs.  Calendars
+and todos are supported, using either GroupDAV or CalDAV, and contacts are
+supported using GroupDAV or CardDAV.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kdepim-apps-libs
   (package
     (name "kdepim-apps-libs")
@@ -460,6 +675,135 @@ for KDE PIM.")
     (license ;; GPL for programs, LGPL for libraries
      (list license:gpl2+ license:lgpl2.0+))))
 
+(define-public kdepim-runtime
+  (package
+    (name "kdepim-runtime")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kdepim-runtime-" version ".tar.xz"))
+       (sha256
+        (base32 "1skid9v6viw379mwhmb4xjh6bylv8wg7cy56kkbcpsmpars9cwr6"))
+       (patches (search-patches
+                 "kdepim-runtime-Fix-missing-link-libraries.patch"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("dbus" ,dbus)
+       ("kdoctools" ,kdoctools)
+       ("libxslt" ,libxslt)
+       ("shared-mime-info" ,shared-mime-info)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-calendar" ,akonadi-calendar)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-notes" ,akonadi-notes)
+       ("boost" ,boost)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("kalarmcal" ,kalarmcal)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalutils" ,kcalutils)
+       ("kcodecs" ,kcodecs)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kdav" ,kdav)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kholidays" ,kholidays)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kmailtransport" ,kmailtransport)
+       ("kmbox" ,kmbox)
+       ("kmime" ,kmime)
+       ("knotifications" ,knotifications)
+       ("knotifyconfig" ,knotifyconfig)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("kross" ,kross)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallet" ,kwallet)
+       ("kwindowsystem" ,kwindowsystem)
+       ("libkgapi" ,libkgapi)
+       ;; TODO: libkolab
+       ("qca" ,qca)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtnetworkauth" ,qtnetworkauth)
+       ("qtspeech" ,qtspeech)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebengine" ,qtwebengine)
+       ("qtxmlpatterns" ,qtxmlpatterns)))
+    (arguments
+      ;; TODO: 5/45 tests fail for quite different reasons, even with
+      ;; "offscreen" and dbus
+     `(#:tests? #f))
+    (home-page "https://cgit.kde.org/kdepim-runtime.git")
+    (synopsis "Runtime components for Akonadi KDE")
+    (description "This package contains Akonadi agents written using KDE
+Development Platform libraries.  Any package that uses Akonadi should probably
+pull this in as a dependency.  The kres-bridges is also parts of this
+package.")
+    (license ;; Files vary a lot regarding the license. GPL2+ and LGPL2.1+
+     ;; have been used in those I checked. But the archive also includes
+     ;; license texts for GPL3 and AGPL3.
+     (list license:gpl2+ license:lgpl2.0+))))
+
+(define-public keventviews
+  (package
+    (name "keventviews")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/eventviews-" version ".tar.xz"))
+       (sha256
+        (base32 "190vx074ligzysc9w5pf2b51dfy0i4v9mc53m9jdcw8y02shy49w"))))
+    (properties `((upstream-name . "eventviews")))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-calendar" ,akonadi-calendar)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("boost" ,boost)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalendarsupport" ,kcalendarsupport)
+       ("kcalutils" ,kcalutils)
+       ("kcodecs", kcodecs)
+       ("kcompletion" ,kcompletion)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdiagram" ,kdiagram)
+       ("kguiaddons" ,kguiaddons)
+       ("kholidays" ,kholidays)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kmime" ,kmime)
+       ("kpimtextedit" ,kpimtextedit)
+       ("kservice" ,kservice)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kxmlgui" ,kxmlgui)
+       ("libkdepim" ,libkdepim)
+       ("qtbase" ,qtbase)))
+    (home-page "https://cgit.kde.org/eventviews.git")
+    (synopsis "KDE PIM library for creating events")
+    (description "This library provides an event creator for KDE PIM.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kgpg
   (package
     (name "kgpg")
@@ -664,6 +1008,167 @@ and retrieving certificates from LDAP servers.")
     (license ;; GPL for programs, FDL for documentation
      (list license:gpl2+ license:fdl1.2+))))
 
+(define-public kmail
+  (package
+    (name "kmail")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kmail-" version ".tar.xz"))
+       (sha256
+        (base32 "0gsdpv9pf4h031zcawc4qv78a5kl9hxp2amd0spjhs7wc7nl17fk"))
+       (patches (search-patches "kmail-Fix-missing-link-libraries.patch"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("dbus" ,dbus)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-search" ,akonadi-search)
+       ("boost" ,boost)
+       ("gpgme" ,gpgme)
+       ("kbookmarks" ,kbookmarks)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalutils" ,kcalutils)
+       ("kcmutils" ,kcmutils)
+       ("kcodecs" ,kcodecs)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("kguiaddons" ,kguiaddons)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kitemviews" ,kitemviews)
+       ("kjobwidgets" ,kjobwidgets)
+       ("kldap" ,kldap)
+       ("kmailcommon" ,kmailcommon)
+       ("kmailtransport" ,kmailtransport)
+       ("kmessagelib" ,kmessagelib)
+       ("kmime" ,kmime)
+       ("kmime" ,kmime)
+       ("knotifications" ,knotifications)
+       ("knotifyconfig" ,knotifyconfig)
+       ("kontactinterface" ,kontactinterface)
+       ("kparts" ,kparts)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("kservice" ,kservice)
+       ("ksyntaxhighlighting" ,ksyntaxhighlighting)
+       ("ktextwidgets" ,ktextwidgets)
+       ("ktnef" ,ktnef)
+       ("kwallet" ,kwallet)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libgravatar" ,libgravatar)
+       ("libkdepim" ,libkdepim)
+       ("libkleo" ,libkleo)
+       ("libksieve" ,libksieve)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set, required for tests
+       ("qgpgme" ,qgpgme)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebengine" ,qtwebengine)
+       ("sonnet" ,sonnet)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "dbus-launch" "ctest" ".")
+             #t)))))
+    (home-page "https://kontact.kde.org/components/kmail.html")
+    (synopsis "Full featured graphical email client")
+    (description "KMail supports multiple accounts, mail filtering and email
+encryption.  The program let you configure your workflow and it has good
+integration into KDE (Plasma Desktop) but is also useable with other Desktop
+Envionments.
+
+KMail is the email component of Kontact, the integrated personal information
+manager from KDE.")
+    (license ;; GPL for programs, LGPL for libraries, FDL for documentation
+     (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
+(define-public kmailcommon
+  (package
+    (name "kmailcommon")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/mailcommon-" version ".tar.xz"))
+       (sha256
+        (base32 "1gsj89kgq4457mnfjlys4wiixpzwlbwhj4zpd7r4fdhbyihz3k2m"))))
+    (properties `((upstream-name . "mailcommon")))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("dbus" ,dbus)
+       ("gnupg" ,gnupg)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("boost" ,boost)
+       ("gpgme" ,gpgme)
+       ("karchive" ,karchive)
+       ("kcodecs" ,kcodecs)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdesignerplugin" ,kdesignerplugin)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kitemviews" ,kitemviews)
+       ("kldap" ,kldap)
+       ("kmailimporter" ,kmailimporter)
+       ("kmailtransport" ,kmailtransport)
+       ("kmessagelib" ,kmessagelib)
+       ("kmime" ,kmime)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ksyntaxhighlighting" ,ksyntaxhighlighting)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallet" ,kwallet)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libkdepim" ,libkdepim)
+       ("libkleo" ,libkleo)
+       ("libxslt" ,libxslt)
+       ("phonon" ,phonon)
+       ("qgpgme" ,qgpgme)
+       ("qtbase" ,qtbase)))
+    (arguments
+     `(#:tests? #f))  ;; TODO: 4/56 tests fail, even with "offscreen" and dbus
+    (home-page "https://cgit.kde.org/mailcommon.git")
+    (synopsis "KDE email utility library")
+    (description "The mail common library provides utility functions for
+dealing with email.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kmailimporter
   (package
     (name "kmailimporter")
@@ -769,6 +1274,84 @@ mail transport.")
 using a Qt/KMime C++ API.")
     (license license:lgpl2.0+ )))
 
+(define-public kmessagelib
+  (package
+    (name "kmessagelib")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/messagelib-" version ".tar.xz"))
+       (sha256
+        (base32 "0a378aqkdjzyzlxxha2qxa6vzrj92l1fplzb6fajz4l7ipj4hbnv"))))
+    (properties `((upstream-name . "messagelib")))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("gnupg" ,gnupg)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-notes" ,akonadi-notes)
+       ("akonadi-search" ,akonadi-search)
+       ("boost" ,boost)
+       ("gpgme" ,gpgme)
+       ("grantlee" ,grantlee)
+       ("grantleetheme" ,grantleetheme)
+       ("karchive" ,karchive)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcodecs" ,kcodecs)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kitemmodels" ,kitemmodels)
+       ("kitemviews" ,kitemviews)
+       ("kjobwidgets" ,kjobwidgets)
+       ("kldap" ,kldap)
+       ("kmailtransport" ,kmailtransport)
+       ("kmbox" ,kmbox)
+       ("kmime" ,kmime)
+       ("knewstuff" ,knewstuff)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("kservice" ,kservice)
+       ("ksyntaxhighlighting" ,ksyntaxhighlighting)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallet" ,kwallet)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libgravatar" ,libgravatar)
+       ("libkdepim" ,libkdepim)
+       ("libkleo" ,libkleo)
+       ("qgpgme" ,qgpgme)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebengine" ,qtwebengine)
+       ("qtwebkit" ,qtwebkit)
+       ("sonnet" ,sonnet)))
+    (arguments
+     `(#:tests? #f)) ;; TODO many test fail for quite different reasons
+    (home-page "https://cgit.kde.org/messagelib.git")
+    (synopsis "KDE PIM messaging libraries")
+    (description "This packages provides several libraries for messages,
+e.g. a message list, a mime tree parse, a template parser and the
+kwebengineviewer.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kmime
   (package
     (name "kmime")
@@ -807,6 +1390,80 @@ US-ASCII, non-text attachments, multi-part message bodies, and header
 information in non-ASCII character sets.")
     (license license:lgpl2.0+)))
 
+(define-public knotes
+  (package
+    (name "knotes")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/knotes-" version ".tar.xz"))
+       (sha256
+        (base32 "128qpfqjn5zwl5550srmbjyxns242q6a3b0jy70jjx2yixy3rb87"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("libxslt" ,libxslt)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-notes" ,akonadi-notes)
+       ("akonadi-search" ,akonadi-search)
+       ("boost" ,boost)
+       ("grantlee" ,grantlee)
+       ("grantleetheme" ,grantleetheme)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalutils" ,kcalutils)
+       ("kcmutils" ,kcmutils)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdnssd" ,kdnssd)
+       ("kdoctools" ,kdoctools)
+       ("kglobalaccel" ,kglobalaccel)
+       ("kiconthemes" ,kiconthemes)
+       ("kimap" ,kimap)
+       ("kitemmodels" ,kitemmodels)
+       ("kitemviews" ,kitemviews)
+       ("kmime" ,kmime)
+       ("kmime" ,kmime)
+       ("knewstuff" ,knewstuff)
+       ("knotifications" ,knotifications)
+       ("knotifyconfig" ,knotifyconfig)
+       ("kontactinterface" ,kontactinterface)
+       ("kparts" ,kparts)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("kxmlgui" ,kxmlgui)
+       ("libkdepim" ,libkdepim)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set, required for tests
+       ("qtbase" ,qtbase)
+       ("qtx11extras" ,qtx11extras)))
+    (home-page "https://kontact.kde.org/components/knotes.html")
+    (synopsis "Note-taking utility")
+    (description "KNotes lets you write the computer equivalent of sticky
+notes.  The notes are saved automatically when you exit the program, and they
+display when you open the program.
+
+Features:
+@itemize
+@item Write notes in your choice of font and background color
+@item Use drag and drop to email your notes
+@item Can be dragged into Calendar to book a time-slot
+@item Notes can be printed
+@end itemize")
+    (license (list license:gpl2+ license:lgpl2.0+))))
+
 (define-public kontactinterface
   (package
     (name "kontactinterface")
@@ -835,6 +1492,93 @@ information in non-ASCII character sets.")
 application \"Parts\" to be embedded as a Kontact component (or plugin).")
     (license license:lgpl2.0+)))
 
+(define-public korganizer
+  (package
+    (name "korganizer")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/korganizer-" version ".tar.xz"))
+       (sha256
+        (base32 "1ixdmmczccvwr7a6vvzv0kyjay0mjnbwcwkq6yym32m2lb3vcxdn"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("dbus" ,dbus)
+       ("qttools" ,qttools)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("akonadi-calendar" ,akonadi-calendar)
+       ("akonadi-contacts" ,akonadi-contacts)
+       ("akonadi-mime" ,akonadi-mime)
+       ("akonadi-notes" ,akonadi-notes)
+       ("akonadi-search" ,akonadi-search)
+       ("boost" ,boost)
+       ("kcalendarcore" ,kcalendarcore)
+       ("kcalendarsupport" ,kcalendarsupport)
+       ("kcalutils" ,kcalutils)
+       ("kcmutils" ,kcmutils)
+       ("kcodecs" ,kcodecs)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcontacts" ,kcontacts)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdepim-apps-libs" ,kdepim-apps-libs)
+       ("keventviews" ,keventviews)
+       ("kholidays" ,kholidays)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kincidenceeditor" ,kincidenceeditor)
+       ("kitemmodels" ,kitemmodels)
+       ("kitemviews" ,kitemviews)
+       ("kjobwidgets" ,kjobwidgets)
+       ("kldap" ,kldap)
+       ("kmailtransport" ,kmailtransport)
+       ("kmime" ,kmime)
+       ("knewstuff" ,knewstuff)
+       ("knotifications" ,knotifications)
+       ("kontactinterface" ,kontactinterface)
+       ("kparts" ,kparts)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("kservice" ,kservice)
+       ("kwallet" ,kwallet)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libkdepim" ,libkdepim)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set, required for tests
+       ("phonon" ,phonon)
+       ("qtbase" ,qtbase)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "dbus-launch" "ctest" ".")
+             #t)))))
+    (home-page "https://kontact.kde.org/components/korganizer.html")
+    (synopsis "Organizational assistant, providing calendars and other similar
+functionality to help you organize your life.")
+    (description "KOrganizer is the calendar and scheduling component of
+Kontact.  It provides management of events and tasks, alarm notification, web
+export, network transparent handling of data, group scheduling, import and
+export of calendar files and more.  It is able to work together with a wide
+variety of clanedaring services, including NextCloud, Kolab, Google Calendar
+and others.  KOrganizer is fully customizable to your needs and is an integral
+part of the Kontact suite, which aims to be a complete solution for organizing
+your personal data.  KOrganizer supports the two dominant standards for storing
+and exchanging calendar data, vCalendar and iCalendar.")
+    (license ;; GPL for programs, LGPL for libraries, FDL for documentation
+     (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
 (define-public kpimcommon
   (package
     (name "kpimcommon")
@@ -1132,3 +1876,61 @@ various Google services.")
 KDE using certificate-based crypto.")
     (license ;; GPL for programs, LGPL for libraries
      (list license:gpl2+ license:lgpl2.0+))))
+
+(define-public libksieve
+  (package
+    (name "libksieve")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/libksieve-" version ".tar.xz"))
+       (sha256
+        (base32 "0q6f6lc4yvlq0vsfml10lz844z6zxxf7yivk7l3vglap58ci20x1"))
+       (patches (search-patches "libksieve-Fix-missing-link-libraries.patch"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("akonadi" ,akonadi)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("karchive" ,karchive)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kidentitymanagement" ,kidentitymanagement)
+       ("kimap" ,kimap)
+       ("kio" ,kio)
+       ("kmailtransport" ,kmailtransport)
+       ("kmime" ,kmime)
+       ("knewstuff" ,knewstuff)
+       ("kpimcommon" ,kpimcommon)
+       ("kpimtextedit" ,kpimtextedit)
+       ("ksyntaxhighlighting" ,ksyntaxhighlighting)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallet" ,kwallet)
+       ("kwindowsystem" ,kwindowsystem)
+       ("libkdepim" ,libkdepim)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebengine" ,qtwebengine)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'substitute
+           (lambda _
+             ;; Disable a failing test
+             ;; sieveeditorhelphtmlwidgettest fails with `sigtrap`
+             (substitute*
+                 "src/ksieveui/editor/webengine/autotests/CMakeLists.txt"
+               (("^\\s*(add_test|ecm_mark_as_test)\\W" line)
+                (string-append "# " line)))
+             #t)))))
+    (home-page "https://cgit.kde.org/libksieve.git")
+    (synopsis "KDE Sieve library")
+    (description "Sieve is a language that can be used filter emails.  KSieve
+is a Sieve parser and interpreter library for KDE.")
+    (license ;; GPL for programs, LGPL for libraries
+     (list license:gpl2+ license:lgpl2.0+))))
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 7a689c9b29..6eb02119a4 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -325,6 +325,37 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
 ;; kdevplatform was merged into kdevelop as of 5.2.x
 (define-deprecated kdevplatform kdevelop)
 
+(define-public kdiagram
+  (package
+    (name "kdiagram")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/kdiagram/" version
+                           "/kdiagram-" version ".tar.xz"))
+       (sha256
+        (base32 "1c6dbp9gssjrx59z8yxzq1ay56pnw7h28symjrv0gcvhxyjirrxx"))
+       (patches (search-patches
+                 "kdiagram-Fix-missing-link-libraries.patch"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)))
+    (home-page "https://cgit.kde.org/kdiagram.git/")
+    (synopsis "Libraries for creating business diagrams")
+    (description "This package provides libraries for integrating business
+diagrams in Qt-based applications.
+
+@code{KCharts} provides an implementation of the ODF Chart specification.  It
+supports stock charts, box charts, and whisker charts.  @code{KGantt} provides
+a module for implementing ODF Gantt charts, which are bar charts that
+illustrate project schedules.")
+    (license license:gpl2+)))
+
 (define-public krita
   (package
     (name "krita")
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 7f437e425e..d5dd3c092b 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -35,9 +35,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
-                          non-copyleft x11-style bsd-3))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (ice-9 match)
@@ -110,7 +108,7 @@
 expressions stored in multiple named targets, or \"cells\".  The cells can
 be referenced from each other, and the library takes care of resolving
 their dependencies automatically upon calculation.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public orcus
   (package
@@ -140,7 +138,7 @@ spreadsheet documents.  The library includes import filters for
 Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet,
 Plain Text, Gnumeric XML, Generic XML.  It also includes low-level parsers for
 CSV, CSS and XML.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public unoconv
   (package
@@ -197,7 +195,7 @@ Format (@file{.odt}, @file{.ods}, @file{.odp})), Portable Document Format
 @file{.docx}), @file{.xls} and @file{.xlsx}).
 
 All required fonts must be installed on the converting system.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public librevenge
   (package
@@ -229,7 +227,7 @@ All required fonts must be installed on the converting system.")
     (description "Librevenge is a base library for writing document import
 filters.  It has interfaces for text documents, vector graphics,
 spreadsheets and presentations.")
-    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+    (license (list license:mpl2.0 license:lgpl2.1+)))) ; dual-licensed
 
 (define-public libwpd
   (package
@@ -257,7 +255,7 @@ spreadsheets and presentations.")
     (description "Libwpd is a C++ library designed to help process
 WordPerfect documents.  It is most commonly used to import such documents
 into other word processors.")
-    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+    (license (list license:mpl2.0 license:lgpl2.1+)))) ; dual-licensed
 
 (define-public libe-book
   (package
@@ -294,7 +292,7 @@ Broad Band eBook, eReader .pdb, FictionBook v. 2 (including zipped files),
 PalmDoc Ebook, Plucker .pdb, QiOO (mobile format, for java-enabled
 cellphones), TCR (simple compressed text format), TealDoc, zTXT,
 ZVR (simple compressed text format).")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libepubgen
   (package
@@ -322,7 +320,7 @@ ZVR (simple compressed text format).")
     (description "libepubgen is an EPUB generator for librevenge.  It supports
 librevenge's text document interface and--currently in a very limited
 way--presentation and vector drawing interfaces.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libwpg
   (package
@@ -348,7 +346,7 @@ way--presentation and vector drawing interfaces.")
     (synopsis "Library and tools for the WordPerfect Graphics format")
     (description "The libwpg project provides a library and tools for
 working with graphics in the WPG (WordPerfect Graphics) format.")
-    (license (list mpl2.0 lgpl2.1+))))            ;dual licensed
+    (license (list license:mpl2.0 license:lgpl2.1+)))) ; dual-licensed
 
 (define-public libcmis
   (package
@@ -390,7 +388,8 @@ working with graphics in the WPG (WordPerfect Graphics) format.")
     (description "LibCMIS is a C++ client library for the CMIS interface.  It
 allows C++ applications to connect to any ECM behaving as a CMIS server such
 as Alfresco or Nuxeo.")
-    (license (list mpl1.1 gpl2+ lgpl2.1+)))) ; triple license
+    (license
+     (list license:mpl1.1 license:gpl2+ license:lgpl2.1+)))) ; triple license
 
 (define-public libabw
   (package
@@ -418,7 +417,7 @@ as Alfresco or Nuxeo.")
     (synopsis "Library for parsing the AbiWord format")
     (description "Libabw is a library that parses the file format of
 AbiWord documents.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libcdr
   (package
@@ -447,7 +446,7 @@ AbiWord documents.")
     (synopsis "Library for parsing the CorelDRAW format")
     (description "Libcdr is a library that parses the file format of
 CorelDRAW documents of all versions.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libetonyek
   (package
@@ -481,7 +480,7 @@ CorelDRAW documents of all versions.")
     (synopsis "Library for parsing the Apple Keynote format")
     (description "Libetonyek is a library that parses the file format of
 Apple Keynote documents.  It currently supports Keynote versions 2 to 5.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public liblangtag
   (package
@@ -507,7 +506,7 @@ for identifying languages as described in RFC 5646.  It supports the
 extensions described in RFC6067 and RFC6497, and Extension T for
 language/locale identifiers as described in the Unicode CLDR
 standard 21.0.2.")
-    (license (list lgpl3+ mpl2.0)))) ; dual license
+    (license (list license:lgpl3+ license:mpl2.0)))) ; dual license
 
 (define-public libexttextcat
   (package
@@ -525,8 +524,8 @@ standard 21.0.2.")
     (synopsis "Text Categorization library")
     (description "Libexttextcat is an N-Gram-Based Text Categorization
 library primarily intended for language guessing.")
-    (license (non-copyleft "file://LICENSE"
-                           "See LICENSE in the distribution."))))
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
 
 (define-public libfreehand
   (package
@@ -567,7 +566,7 @@ library primarily intended for language guessing.")
     (synopsis "Library for parsing the FreeHand format")
     (description "Libfreehand is a library that parses the file format of
 Aldus/Macromedia/Adobe FreeHand documents.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libmspub
   (package
@@ -594,7 +593,7 @@ Aldus/Macromedia/Adobe FreeHand documents.")
     (synopsis "Library for parsing the Microsoft Publisher format")
     (description "Libmspub is a library that parses the file format of
 Microsoft Publisher documents of all versions.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libnumbertext
   (package
@@ -617,7 +616,7 @@ Microsoft Publisher documents of all versions.")
      "The libnumbertext library provides language-neutral @code{NUMBERTEXT}
 and @code{MONEYTEXT} functions for LibreOffice Calc, available for C++ and
 Java.")
-    (license (list lgpl3+ bsd-3))))
+    (license (list license:lgpl3+ license:bsd-3))))
 
 (define-public libpagemaker
   (package
@@ -646,7 +645,7 @@ Java.")
     (description "Libpagemaker is a library that parses the file format of
 Aldus/Adobe PageMaker documents.  Currently it only understands documents
 created by PageMaker version 6.x and 7.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libvisio
   (package
@@ -676,7 +675,7 @@ created by PageMaker version 6.x and 7.")
     (synopsis "Library for parsing the Microsoft Visio format")
     (description "Libvisio is a library that parses the file format of
 Microsoft Visio documents of all versions.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libodfgen
   (package
@@ -707,7 +706,7 @@ Microsoft Visio documents of all versions.")
 Open Document Format (ODF).  It provides generator implementations for all
 document interfaces supported by librevenge:
 text documents, vector drawings, presentations and spreadsheets.")
-    (license (list mpl2.0 lgpl2.1+)))) ; dual license
+    (license (list license:mpl2.0 license:lgpl2.1+)))) ; dual license
 
 (define-public libmwaw
   (package
@@ -734,7 +733,7 @@ text documents, vector drawings, presentations and spreadsheets.")
     (description "Libmwaw contains some import filters for old Macintosh
 text documents (MacWrite, ClarisWorks, ... ) and for some graphics and
 spreadsheet documents.")
-    (license (list mpl2.0 lgpl2.1+))))  ; dual license
+    (license (list license:mpl2.0 license:lgpl2.1+))))  ; dual license
 
 (define-public libstaroffice
   (package
@@ -757,7 +756,7 @@ spreadsheet documents.")
     (synopsis "Provides LibreOffice support for old StarOffice documents")
     (description "@code{libstaroffice} is an import filter for the document formats
 from the old StarOffice (.sdc, .sdw, ...).")
-    (license (list mpl2.0 lgpl2.1+)))) ; dual license
+    (license (list license:mpl2.0 license:lgpl2.1+)))) ; dual license
 
 (define-public libwps
   (package
@@ -783,7 +782,7 @@ from the old StarOffice (.sdc, .sdw, ...).")
     (synopsis "Import library for Microsoft Works text documents")
     (description "Libwps is a library for importing files in the Microsoft
 Works word processor file format.")
-    (license (list mpl2.0 lgpl2.1+))))  ; dual license
+    (license (list license:mpl2.0 license:lgpl2.1+))))  ; dual license
 
 (define-public libzmf
   (package
@@ -815,7 +814,7 @@ Works word processor file format.")
     (description "Libzmf is a library that parses the file format of Zoner
 Callisto/Draw documents.  Currently it only understands documents created by
 Zoner Draw version 4 and 5.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public hunspell
   (package
@@ -847,7 +846,7 @@ Zoner Draw version 4 and 5.")
 library and program designed for languages with rich morphology and complex
 word compounding or character encoding.")
     ;; Triple license, including "mpl1.1 or later".
-    (license (list mpl1.1 gpl2+ lgpl2.1+))))
+    (license (list license:mpl1.1 license:gpl2+ license:lgpl2.1+))))
 
 (define (dicollecte-french-dictionary variant synopsis)
   ;; Return a French dictionary package from dicollecte.org, for the given
@@ -895,7 +894,7 @@ word compounding or character encoding.")
      "This package provides a dictionary for the Hunspell spell-checking
 library.")
     (home-page "https://www.dicollecte.org/home.php?prj=fr")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-syntax define-french-dictionary
   (syntax-rules (synopsis)
@@ -940,8 +939,9 @@ library.")
     (synopsis "Hyphenation library")
     (description "Hyphen is a hyphenation library using TeX hyphenation
 patterns, which are pre-processed by a perl script.")
-    ;; triple license, including "mpl1.1 or later"
-    (license (list mpl1.1 mpl2.0 gpl2+ lgpl2.1+))))
+    ;; Triple license, including "mpl1.1 or later".
+    (license
+     (list license:mpl1.1 license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
 
 (define-public mythes
   (package
@@ -965,8 +965,8 @@ patterns, which are pre-processed by a perl script.")
     (description "MyThes is a simple thesaurus that uses a structured text
 data file and an index file with binary search to look up words and phrases
 and to return information on pronunciations, meanings and synonyms.")
-    (license (non-copyleft "file://COPYING"
-                           "See COPYING in the distribution."))))
+    (license (license:non-copyleft "file://COPYING"
+                                   "See COPYING in the distribution."))))
 
 (define-public libqxp
   (package
@@ -993,7 +993,7 @@ and to return information on pronunciations, meanings and synonyms.")
     (synopsis "Library and tools for the QuarkXPress file format")
     (description "libqxp is a library and a set of tools for reading and
 converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
 
 (define-public libreoffice
   (package
@@ -1214,4 +1214,4 @@ a number of components: Writer, a word processor; Calc, a spreadsheet
 application; Impress, a presentation engine; Draw, a drawing and
 flowcharting application; Base, a database and database frontend;
 Math for editing mathematics.")
-    (license mpl2.0)))
+    (license license:mpl2.0)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 2c0674c338..69c2818355 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -362,42 +362,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.4-version "5.4.26")
+(define-public linux-libre-5.4-version "5.4.27")
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1bqdiw4pjzwm7pxml2dl09bj85ijs82rq788c58681zgmvs796k6")))
+        (hash (base32 "0szc1p9y6z8gs2f1nj45nrz52sxcabg2xh7zqlljazv45lvcvf8r")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.111")
+(define-public linux-libre-4.19-version "4.19.112")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0cjjf3wbvbkjy4mss8c74afx8ng31i22km66ydh9f9mz182piyy6")))
+        (hash (base32 "0yiyqwgh6wcyshpdj98s7dc4ahyx47y6whvnww6sjmzdq0fb3hi4")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.173")
+(define-public linux-libre-4.14-version "4.14.174")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "0kxp3mgiags8hdax15masab9zr89xraqvl9ri7zwgksx8ixav0m2")))
+        (hash (base32 "12ai2lc2ny38s93d0m5ngrv030vwv1h2hhzp0fs6fhjxasikq8jc")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.216")
+(define-public linux-libre-4.9-version "4.9.217")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0lgv5k8v5xz9z2z4k42566bh0akyk1gr0dx6s1m1rjrzsf9k86l6")))
+        (hash (base32 "06b8av9f9pk2yp95nzv4322k0d5wsg40sxd9kfim1xzb093abckg")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.216")
+(define-public linux-libre-4.4-version "4.4.217")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "1hjgh9brvxzi6ypgfnk07l3j28xsxgz88sdshnz19vj96bn1w70q")))
+        (hash (base32 "0vsjchywznmjn01flgvm9vsja5zqni319rfwgy997afcbz0c9spx")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -4072,6 +4072,48 @@ system calls, important for the performance of databases and other advanced
 applications.")
     (license license:lgpl2.1+)))
 
+(define-public blktrace
+  ;; Take a newer commit to get the fix for CVE-2018-10689.
+  (let ((commit "db4f6340e04716285ea56fe26d76381c3adabe58")
+        (revision "1"))
+    (package
+      (name "blktrace")
+      (version (git-version "1.2.0" revision commit))
+      (home-page
+        "https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32 "0ah7xn4qnx09k6bm39p69av7d0c8cl6863drv6a1nf914sq1kpgp"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:make-flags
+         (list "CC=gcc" (string-append "prefix=" %output))
+         #:tests? #f ; no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure) ; no configure script
+           (add-after 'unpack 'fix-gnuplot-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((gnuplot (assoc-ref inputs "gnuplot")))
+                 (substitute* "btt/bno_plot.py"
+                   (("gnuplot %s")
+                    (string-append gnuplot "/bin/gnuplot %s")))
+                 #t))))))
+      (inputs
+       `(("libaio" ,libaio)
+         ("gnuplot" ,gnuplot)
+         ("python" ,python-wrapper)))             ;for 'bno_plot.py'
+      (synopsis "Block layer IO tracing mechanism")
+      (description "Blktrace is a block layer IO tracing mechanism which provides
+detailed information about request queue operations to user space.  It extracts
+event traces from the kernel (via the relaying through the debug file system).")
+      (license license:gpl2))))
+
 (define-public sbc
   (package
     (name "sbc")
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index ae7057ca3f..5631383eda 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -926,7 +926,7 @@ multiple inspectors with independent history.")
           (base32
            "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
       (build-system asdf-build-system/sbcl)
-      (home-page "http://marijnhaverbeke.nl/parse-js/")
+      (home-page "https://marijnhaverbeke.nl/parse-js/")
       (synopsis "Parse JavaScript")
       (description "Parse-js is a Common Lisp package for parsing
 JavaScript (ECMAScript 3).  It has basic support for ECMAScript 5.")
@@ -950,7 +950,7 @@ JavaScript (ECMAScript 3).  It has basic support for ECMAScript 5.")
         (base32
          "0sk06ib1bhqv9y39vwnnw44vmbc4b0kvqm37xxmkxd4dwchq82d7"))))
     (build-system asdf-build-system/sbcl)
-    (home-page "http://www.cliki.net/PARSE-NUMBER")
+    (home-page "https://www.cliki.net/PARSE-NUMBER")
     (synopsis "Parse numbers")
     (description "@code{parse-number} is a library of functions for parsing
 strings into one of the standard Common Lisp number types without using the
@@ -3504,7 +3504,7 @@ RFC 1321 by R. Rivest, published April 1992.")
          ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)
          ("sbcl-alexandria" ,sbcl-alexandria)
          ("sbcl-trivial-features" ,sbcl-trivial-features)))
-      (home-page "http://common-lisp.net/project/cl-plus-ssl/")
+      (home-page "https://common-lisp.net/project/cl-plus-ssl/")
       (synopsis "Common Lisp bindings to OpenSSL")
       (description
        "This library is a fork of SSL-CMUCL.  The original SSL-CMUCL source
@@ -4281,7 +4281,7 @@ streams (though primarily the former, while wrapping the latter).")
         ("sbcl-fast-io" ,sbcl-fast-io)
         ("sbcl-proc-parse" ,sbcl-proc-parse)
         ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)))
-     (home-page "http://rudolph-miller.github.io/jonathan/overview.html")
+     (home-page "https://rudolph-miller.github.io/jonathan/overview.html")
      (synopsis "JSON encoder and decoder")
      (description
       "High performance JSON encoder and decoder.  Currently support: SBCL,
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 86ebee35cd..9139dc440e 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -191,7 +191,7 @@ windows in a terminal, colorize, filter and merge.")
 (define-public spdlog
   (package
     (name "spdlog")
-    (version "1.3.1")
+    (version "1.5.0")
     (source
      (origin
        (method git-fetch)
@@ -201,7 +201,7 @@ windows in a terminal, colorize, filter and merge.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1rd4zmrlkcdjx0m0wpmjm1g9srj7jak6ai08qkhbn2lsn0niifzd"))))
+         "0dn44r3xbw1w0bk9yflnxkh3rzdq2bpxkks44skfmqig0rsj1f1x"))))
     (build-system cmake-build-system)
     ;; TODO run benchmark. Currently not possible, as adding
     ;; (gnu packages benchmark) forms a dependency cycle
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 45e08e066a..181ce76559 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -182,7 +182,7 @@ language.")
     (inputs
      `(("lua" ,lua)
        ("expat" ,expat)))
-    (home-page "http://matthewwild.co.uk/projects/luaexpat/")
+    (home-page "https://matthewwild.co.uk/projects/luaexpat/")
     (synopsis "SAX XML parser based on the Expat library")
     (description "LuaExpat is a SAX XML parser based on the Expat library.")
     (license (package-license lua-5.1))))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 27b15ddcea..32aa6849d2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -73,12 +73,12 @@
   #:use-module (gnu packages python-science)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages rpc)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages swig)
-  #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
@@ -842,7 +842,7 @@ computing environments.")
     (propagated-inputs
      `(("python-numpy" ,python-numpy)
        ("python-scipy" ,python-scipy)))
-    (home-page "http://scikit-learn.org/")
+    (home-page "https://scikit-learn.org/")
     (synopsis "Machine Learning in Python")
     (description
      "Scikit-learn provides simple and efficient tools for data mining and
@@ -1296,80 +1296,6 @@ based on the Kaldi toolkit and the GStreamer framework and implemented in
 Python.")
       (license license:bsd-2))))
 
-(define-public grpc
-  (package
-    (name "grpc")
-    (version "1.16.1")
-    (outputs '("out" "static"))
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/grpc/grpc.git")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f ; no test target
-       #:configure-flags
-       (list "-DgRPC_ZLIB_PROVIDER=package"
-             "-DgRPC_CARES_PROVIDER=package"
-             "-DgRPC_SSL_PROVIDER=package"
-             "-DgRPC_PROTOBUF_PROVIDER=package"
-             (string-append "-DCMAKE_INSTALL_PREFIX="
-                            (assoc-ref %outputs "out"))
-             "-DCMAKE_INSTALL_LIBDIR=lib"
-             (string-append "-DCMAKE_INSTALL_RPATH="
-                            (assoc-ref %outputs "out") "/lib")
-             "-DCMAKE_VERBOSE_MAKEFILE=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'configure-shared
-           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
-             (mkdir "../build-shared")
-             (with-directory-excursion "../build-shared"
-               (apply invoke
-                      "cmake" "../source"
-                      "-DBUILD_SHARED_LIBS=ON"
-                      configure-flags)
-               (apply invoke "make"
-                      `("-j" ,(number->string (parallel-job-count)))))))
-         (add-after 'install 'install-shared-libraries
-           (lambda _
-             (with-directory-excursion "../build-shared"
-               (invoke "make" "install"))))
-         (add-before 'strip 'move-static-libs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (static (assoc-ref outputs "static")))
-               (mkdir-p (string-append static "/lib"))
-               (with-directory-excursion
-                 (string-append out "/lib")
-                 (for-each
-                   (lambda (file)
-                     (rename-file file
-                                  (string-append static "/lib/" file)))
-                   (find-files "." "\\.a$"))))
-             #t)))))
-    (inputs
-     `(("c-ares" ,c-ares/cmake)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("protobuf" ,protobuf)
-       ("python" ,python-wrapper)))
-    (home-page "https://grpc.io")
-    (synopsis "High performance universal RPC framework")
-    (description "gRPC is a modern high performance @dfn{Remote Procedure Call}
-(RPC) framework that can run in any environment.  It can efficiently connect
-services in and across data centers with pluggable support for load balancing,
-tracing, health checking and authentication.  It is also applicable in last
-mile of distributed computing to connect devices, mobile applications and
-browsers to backend services.")
-    (license license:asl2.0)))
-
 ;; Note that Tensorflow includes a "third_party" directory, which seems to not
 ;; only contain modified subsets of upstream library source code, but also
 ;; adapter headers provided by Google (such as the fft.h header, which is not
@@ -1782,7 +1708,6 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
              (sha256
               (base32
                "161g9841rjfsy5pn52fcis0s9hdr7rxvb06pad38j5rppfihvign")))))
-       ("grpc" ,grpc "static")
        ("googletest" ,googletest)
        ("swig" ,swig)
        ("unzip" ,unzip)))
@@ -1804,7 +1729,8 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
        ("libjpeg" ,libjpeg-turbo)
        ("libpng" ,libpng)
        ("giflib" ,giflib)
-       ("grpc:bin" ,grpc)
+       ("grpc" ,grpc-1.16.1 "static")
+       ("grpc:bin" ,grpc-1.16.1)
        ("jsoncpp" ,jsoncpp-for-tensorflow)
        ("snappy" ,snappy)
        ("sqlite" ,sqlite)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 6be6662057..3e02a99562 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -676,7 +676,7 @@ repository and Maildir/IMAP as LOCAL repository.")
        ("ruby" ,ruby))) ; to set GEM_PATH so ruby-sqlite3 is found at runtime
     (build-system gnu-build-system)
     (arguments
-     (let ((elisp-dir "/share/emacs/site-lisp/guix.d/mew")
+     (let ((elisp-dir "/share/emacs/site-lisp")
            (icon-dir  "/share/mew"))
        `(#:modules ((guix build gnu-build-system)
                     (guix build utils)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9feb54d87d..a83800b0cb 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1138,7 +1138,7 @@ implemented in C.")
      `( #:configure-flags '("--enable-install-include" "--enable-shared"
                             "CC=h4cc -Df2cFortran" "LIBS=-lgctp")
         #:parallel-tests? #f))
-    (home-page "http://hdfeos.org/software/library.php#HDF-EOS2")
+    (home-page "https://hdfeos.org/software/library.php#HDF-EOS2")
     (synopsis "HDF4-based data format for NASA's Earth Observing System")
     (description "HDF-EOS2 is a software library built on HDF4 which supports
 the construction of data structures used in NASA's Earth Observing
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 8083a43fdb..84aab45e5f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -82,6 +82,7 @@
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
@@ -98,6 +99,7 @@
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
+  #:use-module (gnu packages openldap)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
@@ -862,6 +864,47 @@ prints timing information for each step of the HTTP request (DNS lookup,
 TCP connection, TLS handshake and so on) in the terminal.")
     (license license:expat)))
 
+(define-public squid
+  (package
+    (name "squid")
+    (version "4.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.squid-cache.org/Versions/v4/squid-"
+                           version ".tar.xz"))
+       (sha256
+        (base32 "07sz0adv8nkhy797675bpra7lvdkwjq9isw1ddgylhlazl511w4q"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-true-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "test-suite/testheaders.sh"
+               (("/bin/true")
+                (string-append (assoc-ref inputs "coreutils")
+                               "/bin/true")))
+             #t)))))
+    (inputs
+     `(("perl" ,perl)
+       ("openldap" ,openldap)
+       ("linux-pam" ,linux-pam)
+       ("libcap" ,libcap)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("expat" ,expat)
+       ("libxml2" ,libxml2)
+       ("openssl" ,openssl)))
+    (native-inputs
+     `(("cppunit" ,cppunit)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Web caching proxy")
+    (description "Squid is a caching proxy for the Web supporting HTTP, HTTPS,
+FTP, and more.  It reduces bandwidth and improves response times by caching and
+reusing frequently-requested web pages.")
+    (home-page "http://www.squid-cache.org/")
+    (license license:gpl2+)))
+
 (define-public bwm-ng
   (package
     (name "bwm-ng")
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index c9a1037902..5181d6156b 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -2088,7 +2088,7 @@ and consumable.")
            (sha256
             (base32
              "0gsb1jpj3mnqbjgbavi4l95gl6g4agq58j82km22fdfg63j3w3fk"))))))
-    (home-page "http://www.cduce.org/download.html#side")
+    (home-page "https://www.cduce.org/download.html#side")
     (synopsis "Lexer generator for Unicode and OCaml")
     (description "Lexer generator for Unicode and OCaml.")
     (license license:expat)))
@@ -3340,8 +3340,8 @@ OCaml projects that contain C stubs.")
 (define-public ocaml-tsdl
   (package
     (name "ocaml-tsdl")
-    (version "0.9.6")
-    (home-page "http://erratique.ch/software/tsdl")
+    (version "0.9.7")
+    (home-page "https://erratique.ch/software/tsdl")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "/releases/tsdl-"
@@ -3349,7 +3349,7 @@ OCaml projects that contain C stubs.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "00krjhmnchsnz33h9zhh0v69xbvi86l0xf0dvy7iivylb7f7x3n4"))))
+                "1zwv0ixkigh1gzk5n49rwvz2f2m62jdkkqg40j7dclg4gri7691f"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:build-flags '("build")
@@ -3360,12 +3360,10 @@ OCaml projects that contain C stubs.")
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)
        ("ocaml-astring" ,ocaml-astring)
-       ("ocaml-ocb-stubblr" ,ocaml-ocb-stubblr)
        ("opam" ,opam)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("topkg" ,ocaml-topkg)
-       ("result" ,ocaml-result)
        ("sdl2" ,sdl2)
        ("integers" ,ocaml-integers)
        ("ctypes" ,ocaml-ctypes)))
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index 32eb360e04..f14d5df130 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -130,7 +130,7 @@ programming.")
        ;; The regression tests require a lot more dependencies.
        #:tests? #f))
     (build-system cmake-build-system)
-    (home-page "http://github.khronos.org/OpenCL-CLHPP/")
+    (home-page "https://github.khronos.org/OpenCL-CLHPP/")
     (synopsis "Khronos OpenCL-CLHPP")
     (description
      "This package provides the @dfn{host API} C++ headers for OpenCL.")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index bcc30638e5..1c4503995b 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -172,6 +172,13 @@
                           (lambda (port)
                             (display ,version port)))
 
+                        ;; Install SysV init files to $(prefix)/etc rather
+                        ;; than to /etc.
+                        (substitute* "nix/local.mk"
+                          (("^sysvinitservicedir = .*$")
+                           (string-append "sysvinitservicedir = \
+$(prefix)/etc/init.d\n")))
+
                         (invoke "sh" "bootstrap")))
                     (add-before 'check 'copy-bootstrap-guile
                       (lambda* (#:key system inputs #:allow-other-keys)
diff --git a/gnu/packages/patches/date-output-pkg-config-files.patch b/gnu/packages/patches/date-output-pkg-config-files.patch
new file mode 100644
index 0000000000..3fd1d54b36
--- /dev/null
+++ b/gnu/packages/patches/date-output-pkg-config-files.patch
@@ -0,0 +1,60 @@
+From e56b2dce7e89a92e1b9b35caa13b3e938c4cedea Mon Sep 17 00:00:00 2001
+From: Cole Mickens <cole.mickens@gmail.com>
+Date: Sun, 26 Jan 2020 01:27:08 -0800
+Subject: [PATCH] CMakeLists.txt: output date.pc for pkg-config
+
+---
+ CMakeLists.txt | 15 +++++++++++++++
+ date.pc.in     | 10 ++++++++++
+ 2 files changed, 25 insertions(+)
+ create mode 100644 date.pc.in
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f30c473..fe778e8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -128,6 +128,15 @@ if( BUILD_TZ_LIB )
+     endif( )
+ endif( )
+ 
++if ( BUILD_TZ_LIB )
++  # Cflags: -I${includedir} @TZ_COMPILE_DEFINITIONS@
++  set( TZ_COMPILE_DEFINITIONS "$<IF:$<TARGET_EXISTS:tz>,-D$<JOIN:$<TARGET_PROPERTY:tz,INTERFACE_COMPILE_DEFINITIONS>, -D>,>" )
++  configure_file(date.pc.in date.pc.cf @ONLY)
++  file( GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/date.pc"
++    INPUT "${CMAKE_CURRENT_BINARY_DIR}/date.pc.cf" )
++
++endif( )
++
+ #[===================================================================[
+    installation
+ #]===================================================================]
+@@ -171,6 +180,12 @@ install (
+   FILES cmake/dateConfig.cmake "${version_config}"
+   DESTINATION ${CONFIG_LOC})
+ 
++if ( BUILD_TZ_LIB )
++  install(
++    FILES ${CMAKE_BINARY_DIR}/date.pc
++    DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
++endif( )
++
+ #[===================================================================[
+    testing
+ #]===================================================================]
+diff --git a/date.pc.in b/date.pc.in
+new file mode 100644
+index 0000000..b9c4623
+--- /dev/null
++++ b/date.pc.in
+@@ -0,0 +1,10 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=@CMAKE_INSTALL_BINDIR@
++libdir=@CMAKE_INSTALL_LIB@
++includedir=@CMAKE_INSTALL_INCLUDE@
++
++Name: date
++Description: A date and time library based on the C++11/14/17 <chrono> header
++Version: @PACKAGE_VERSION@
++Libs: -L${libdir} -ltz
++Cflags: -I${includedir} @TZ_COMPILE_DEFINITIONS@
diff --git a/gnu/packages/patches/ffmpeg-prefer-dav1d.patch b/gnu/packages/patches/ffmpeg-prefer-dav1d.patch
new file mode 100644
index 0000000000..95e3712a7f
--- /dev/null
+++ b/gnu/packages/patches/ffmpeg-prefer-dav1d.patch
@@ -0,0 +1,43 @@
+When decoding AV1 files, prefer dav1d over libaom for performance
+reasons.
+
+Patch copied from upstream source repository:
+
+<https://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;a=commitdiff;h=dc0806dd25882f41f6085c8356712f95fded56c7>
+
+From dc0806dd25882f41f6085c8356712f95fded56c7 Mon Sep 17 00:00:00 2001
+From: James Almer <jamrial@gmail.com>
+Date: Sun, 15 Sep 2019 11:29:56 -0300
+Subject: [PATCH] avcodec/allcodecs: make libdav1d the preferred AV1 decoder
+
+It's considerably faster than libaom in most systems.
+
+Reviewed-by: BBB
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+ libavcodec/allcodecs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
+index 5130fca026..d5dfba1877 100644
+--- a/libavcodec/allcodecs.c
++++ b/libavcodec/allcodecs.c
+@@ -680,7 +680,6 @@ extern AVCodec ff_pcm_mulaw_at_encoder;
+ extern AVCodec ff_pcm_mulaw_at_decoder;
+ extern AVCodec ff_qdmc_at_decoder;
+ extern AVCodec ff_qdm2_at_decoder;
+-extern AVCodec ff_libaom_av1_decoder;
+ extern AVCodec ff_libaom_av1_encoder;
+ extern AVCodec ff_libaribb24_decoder;
+ extern AVCodec ff_libcelt_decoder;
+@@ -738,6 +737,7 @@ extern AVCodec ff_idf_decoder;
+ /* external libraries, that shouldn't be used by default if one of the
+  * above is available */
+ extern AVCodec ff_h263_v4l2m2m_encoder;
++extern AVCodec ff_libaom_av1_decoder;
+ extern AVCodec ff_libopenh264_encoder;
+ extern AVCodec ff_libopenh264_decoder;
+ extern AVCodec ff_h264_amf_encoder;
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/foobillard++-pkg-config.patch b/gnu/packages/patches/foobillard++-pkg-config.patch
new file mode 100644
index 0000000000..7cc40a4777
--- /dev/null
+++ b/gnu/packages/patches/foobillard++-pkg-config.patch
@@ -0,0 +1,34 @@
+From: Markus Koschany <apo@debian.org>
+Date: Thu, 8 Mar 2018 17:49:24 +0100
+Subject: pkg-config
+
+Use pkg-config instead of the deprecated freetype-config command.
+
+Bug-Debian: https://bugs.debian.org/892338
+Forwarded: no
+---
+ src/Makefile.am | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 3b7d0fe..0f5a5dd 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -158,8 +158,8 @@ endif
+ SDL_CFLAGS = `sdl-config --cflags`

+ SDL_LIBS   = `sdl-config --libs`

+ 

+-FREETYPE_CFLAGS = `freetype-config --cflags`

+-FREETYPE_LIBS   = `freetype-config --libs`

++FREETYPE_CFLAGS = `pkg-config --cflags freetype2`

++FREETYPE_LIBS   = `pkg-config --libs freetype2`

+ 

+ if USE_MATHSINGLE

+ MATH_CFLAGS = -DVMATH_SINGLE_PRECISION

+@@ -233,4 +233,4 @@ AM_CFLAGS = -Wall ${FREETYPE_CFLAGS} ${SDL_CFLAGS} ${NVIDIA_CFLAGS} ${SOUND_CFLA
+             ${OPTIMIZATION_CFLAGS} ${USESSE_CFLAGS} ${USEWIN_CFLAGS} ${FASTMATH_CFLAGS} ${DEBIAN_CFLAGS} -lm

+ 

+ AM_LDFLAGS = ${all_libraries} ${FREETYPE_LIBS} ${SDL_LIBS}

+-LDADD = ${LDADD_FLAGS}
+\ No newline at end of file
++LDADD = ${LDADD_FLAGS}

diff --git a/gnu/packages/patches/hash-extender-test-suite.patch b/gnu/packages/patches/hash-extender-test-suite.patch
new file mode 100644
index 0000000000..59de52dad4
--- /dev/null
+++ b/gnu/packages/patches/hash-extender-test-suite.patch
@@ -0,0 +1,13 @@
+Make the test suite exit with a non-zero exit code if some tests failed.
+Pull request pending upstream: https://github.com/iagox86/hash_extender/pull/13
+--- a/test.c
++++ b/test.c
+@@ -79,5 +79,9 @@ void test_report(void)
+     printf("TESTS PASSED: %d / %d [%2.4f%%]\n", tests_passed, tests_run, 100 * (float)tests_passed / tests_run);
+     printf("--------------------------------------------------------------------------------\n");
+   }
++
++  if (tests_passed != tests_run) {
++      exit(1);
++  }
+ }
diff --git a/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch b/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch
new file mode 100644
index 0000000000..13345c0038
--- /dev/null
+++ b/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch
@@ -0,0 +1,42 @@
+From b84c4ba97cecf7304e99cafdd8a9c5866ce27050 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Tue, 21 Jan 2020 23:33:50 +0100
+Subject: [PATCH] Fix missing link libraries.
+
+See <https://phabricator.kde.org/D26819>
+
+These are only actually missing if the libraries reside in different
+prefixes, as it is the case in Guix or Nix.
+---
+ resources/ews/test/CMakeLists.txt | 1 +
+ resources/facebook/CMakeLists.txt | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/resources/ews/test/CMakeLists.txt b/resources/ews/test/CMakeLists.txt
+index b20eddcb8..6355eb994 100644
+--- a/resources/ews/test/CMakeLists.txt
++++ b/resources/ews/test/CMakeLists.txt
+@@ -35,6 +35,7 @@ qt5_add_resources(isolatestestcommon_RSRCS isolatedtestcommon.qrc)
+ add_library(isolatedtestcommon STATIC ${isolatestestcommon_SRCS})
+ target_link_libraries(isolatedtestcommon
+   KF5::AkonadiCore
++  KF5::AkonadiMime
+   Qt5::Core
+   Qt5::Network
+   Qt5::Test
+diff --git a/resources/facebook/CMakeLists.txt b/resources/facebook/CMakeLists.txt
+index bdd5eeaa7..27a9c83c1 100644
+--- a/resources/facebook/CMakeLists.txt
++++ b/resources/facebook/CMakeLists.txt
+@@ -21,7 +21,8 @@ add_library(facebookresourcelib STATIC ${fbresource_SRCS})
+ 
+ target_link_libraries(facebookresourcelib
+     KF5::KIOWidgets
++    KF5::AkonadiCore
+     KF5::IconThemes
+     KF5::I18n
+     KF5::ConfigGui
+     KF5::CalendarCore
+-- 
+2.21.1
+
diff --git a/gnu/packages/patches/kdiagram-Fix-missing-link-libraries.patch b/gnu/packages/patches/kdiagram-Fix-missing-link-libraries.patch
new file mode 100644
index 0000000000..cdfb608d9b
--- /dev/null
+++ b/gnu/packages/patches/kdiagram-Fix-missing-link-libraries.patch
@@ -0,0 +1,23 @@
+From c59acf1f54a2cd760e55082a01593a31a690d786 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Wed, 22 Jan 2020 00:56:27 +0100
+Subject: [PATCH] Fix missing link libraries.
+
+These are only actually missing if the libraries reside in different
+prefixes, as it is the case in Guix or Nix.
+---
+ examples/Bars/Simple/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/examples/Bars/Simple/CMakeLists.txt b/examples/Bars/Simple/CMakeLists.txt
+index be2a6fc..b13befb 100644
+--- a/examples/Bars/Simple/CMakeLists.txt
++++ b/examples/Bars/Simple/CMakeLists.txt
+@@ -1,3 +1,3 @@
+ add_executable(BarsSimple  main.cpp)
+ 
+-target_link_libraries(BarsSimple KChart Qt5::Widgets)
++target_link_libraries(BarsSimple KChart Qt5::Widgets Qt5::Svg)
+-- 
+2.21.1
+
diff --git a/gnu/packages/patches/kmail-Fix-missing-link-libraries.patch b/gnu/packages/patches/kmail-Fix-missing-link-libraries.patch
new file mode 100644
index 0000000000..fc784d63dd
--- /dev/null
+++ b/gnu/packages/patches/kmail-Fix-missing-link-libraries.patch
@@ -0,0 +1,41 @@
+From 6b0a3a60870499b20ce9ae2ea07cbc5ee53cbdd2 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Tue, 21 Jan 2020 23:23:38 +0100
+Subject: [PATCH] Fix missing link libraries.
+
+See <https://phabricator.kde.org/D26821>
+
+These are only actually missing if the libraries reside in different
+prefixes, as it is the case in Guix or Nix.
+---
+ agents/archivemailagent/CMakeLists.txt      | 1 +
+ agents/followupreminderagent/CMakeLists.txt | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/agents/archivemailagent/CMakeLists.txt b/agents/archivemailagent/CMakeLists.txt
+index 95c6249de..d0ddcd475 100644
+--- a/agents/archivemailagent/CMakeLists.txt
++++ b/agents/archivemailagent/CMakeLists.txt
+@@ -22,6 +22,7 @@ ki18n_wrap_ui(libarchivemailagent_SRCS ui/archivemailwidget.ui )
+ add_library(archivemailagent STATIC ${libarchivemailagent_SRCS})
+ target_link_libraries(archivemailagent
+     KF5::MailCommon
++    KF5::Libkdepim
+     KF5::I18n
+     KF5::Notifications
+     KF5::KIOWidgets
+diff --git a/agents/followupreminderagent/CMakeLists.txt b/agents/followupreminderagent/CMakeLists.txt
+index 9ae7eaa29..527044807 100644
+--- a/agents/followupreminderagent/CMakeLists.txt
++++ b/agents/followupreminderagent/CMakeLists.txt
+@@ -27,6 +27,7 @@ target_link_libraries(followupreminderagent
+     KF5::AkonadiMime
+     KF5::AkonadiAgentBase
+     KF5::DBusAddons
++    KF5::FollowupReminder
+     KF5::XmlGui
+     KF5::KIOWidgets
+     KF5::Notifications
+-- 
+2.21.1
+
diff --git a/gnu/packages/patches/libksieve-Fix-missing-link-libraries.patch b/gnu/packages/patches/libksieve-Fix-missing-link-libraries.patch
new file mode 100644
index 0000000000..238c4ec46c
--- /dev/null
+++ b/gnu/packages/patches/libksieve-Fix-missing-link-libraries.patch
@@ -0,0 +1,59 @@
+From 732861dda9c466841a09329a0b2c992f2b78c40a Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Tue, 21 Jan 2020 23:15:23 +0100
+Subject: [PATCH] Fix missing link libraries.
+
+See <https://phabricator.kde.org/D26818>
+
+These are only actually missing if the libraries reside in different
+prefixes, as it is the case in Guix or Nix.
+---
+ src/ksieveui/autocreatescripts/tests/CMakeLists.txt  | 2 ++
+ src/ksieveui/scriptsparsing/autotests/CMakeLists.txt | 2 +-
+ src/ksieveui/scriptsparsing/tests/CMakeLists.txt     | 8 ++++++--
+ 3 files changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/ksieveui/autocreatescripts/tests/CMakeLists.txt b/src/ksieveui/autocreatescripts/tests/CMakeLists.txt
+index 8a482b4..c43216c 100644
+--- a/src/ksieveui/autocreatescripts/tests/CMakeLists.txt
++++ b/src/ksieveui/autocreatescripts/tests/CMakeLists.txt
+@@ -15,6 +16,7 @@ set(parsingscript_gui_SRCS parsingscript_gui.cpp ../../tests/capability.cpp)
+ add_executable(parsingscript_gui ${parsingscript_gui_SRCS})
+ target_link_libraries(parsingscript_gui
+   KF5::KIOCore
++  KF5::SyntaxHighlighting
+   KF5::KSieveUi
+   KF5::KSieve
+   KF5::PimCommon
+diff --git a/src/ksieveui/scriptsparsing/autotests/CMakeLists.txt b/src/ksieveui/scriptsparsing/autotests/CMakeLists.txt
+index e41a74e..31703ef 100644
+--- a/src/ksieveui/scriptsparsing/autotests/CMakeLists.txt
++++ b/src/ksieveui/scriptsparsing/autotests/CMakeLists.txt
+@@ -5,7 +5,7 @@ macro(add_sieveeditor_xmlprintingscriptbuilding _source _extrasource)
+     ecm_add_test(${_test}
+         TEST_NAME ${_name}
+         NAME_PREFIX "sieveeditor-xmlprintingscriptbuilding-"
+-        LINK_LIBRARIES Qt5::Test KF5::I18n KF5::KSieveUi
++        LINK_LIBRARIES Qt5::Test KF5::I18n KF5::KSieveUi KF5::SyntaxHighlighting
+         )
+ endmacro()
+ add_sieveeditor_xmlprintingscriptbuilding(xmlprintingscriptbuildertest.cpp "" "")
+diff --git a/src/ksieveui/scriptsparsing/tests/CMakeLists.txt b/src/ksieveui/scriptsparsing/tests/CMakeLists.txt
+index a252039..99a1aaa 100644
+--- a/src/ksieveui/scriptsparsing/tests/CMakeLists.txt
++++ b/src/ksieveui/scriptsparsing/tests/CMakeLists.txt
+@@ -9,5 +9,9 @@ set(xmlsieveparsing_SRCS
+ )
+ 
+ add_executable(xmlsieveparsing ${xmlsieveparsing_SRCS} )
+-target_link_libraries(xmlsieveparsing   KF5::KSieveUi KF5::KSieve KF5::I18n)
+-
++target_link_libraries(xmlsieveparsing
++  KF5::KSieveUi
++  KF5::SyntaxHighlighting
++  KF5::KSieve
++  KF5::I18n
++)
+-- 
+2.21.1
+
diff --git a/gnu/packages/patches/python-faker-fix-build-32bit.patch b/gnu/packages/patches/python-faker-fix-build-32bit.patch
deleted file mode 100644
index 466b289012..0000000000
--- a/gnu/packages/patches/python-faker-fix-build-32bit.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-These tests fail on 32-bit due to an overflow.
-
-Upstream bug URL: https://github.com/joke2k/faker/issues/408
-
-diff --git a/tests/__init__.py b/tests/__init__.py
-index 6026772..58b6b83 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -384,7 +384,6 @@ class FactoryTestCase(unittest.TestCase):
-         provider = Provider
-         # test century
-         self.assertTrue(self._datetime_to_time(provider.date_time_this_century(after_now=False)) <= self._datetime_to_time(datetime.datetime.now()))
--        self.assertTrue(self._datetime_to_time(provider.date_time_this_century(before_now=False, after_now=True)) >= self._datetime_to_time(datetime.datetime.now()))
-         # test decade
-         self.assertTrue(self._datetime_to_time(provider.date_time_this_decade(after_now=False)) <= self._datetime_to_time(datetime.datetime.now()))
-         self.assertTrue(self._datetime_to_time(provider.date_time_this_decade(before_now=False, after_now=True)) >= self._datetime_to_time(datetime.datetime.now()))
-@@ -413,8 +412,6 @@ class FactoryTestCase(unittest.TestCase):
- 
-         # ensure all methods provide timezone aware datetimes
-         with self.assertRaises(TypeError):
--            provider.date_time_this_century(before_now=False, after_now=True, tzinfo=utc) >= datetime.datetime.now()
--        with self.assertRaises(TypeError):
-             provider.date_time_this_decade(after_now=False, tzinfo=utc) <= datetime.datetime.now()
-         with self.assertRaises(TypeError):
-             provider.date_time_this_year(after_now=False, tzinfo=utc) <= datetime.datetime.now()
-@@ -423,7 +420,6 @@ class FactoryTestCase(unittest.TestCase):
- 
-         # test century
-         self.assertTrue(provider.date_time_this_century(after_now=False, tzinfo=utc) <= datetime.datetime.now(utc))
--        self.assertTrue(provider.date_time_this_century(before_now=False, after_now=True, tzinfo=utc) >= datetime.datetime.now(utc))
-         # test decade
-         self.assertTrue(provider.date_time_this_decade(after_now=False, tzinfo=utc) <= datetime.datetime.now(utc))
-         self.assertTrue(provider.date_time_this_decade(before_now=False, after_now=True, tzinfo=utc) >= datetime.datetime.now(utc))
--- 
-2.11.1
-
diff --git a/gnu/packages/perl-compression.scm b/gnu/packages/perl-compression.scm
index af6d575435..6bb67bcb59 100644
--- a/gnu/packages/perl-compression.scm
+++ b/gnu/packages/perl-compression.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
@@ -130,7 +130,7 @@ type by using either Perl modules, or command-line tools on your system.")
 (define-public perl-archive-zip
   (package
     (name "perl-archive-zip")
-    (version "1.67")
+    (version "1.68")
     (source
      (origin
        (method url-fetch)
@@ -138,7 +138,7 @@ type by using either Perl modules, or command-line tools on your system.")
              "mirror://cpan/authors/id/P/PH/PHRED/Archive-Zip-"
              version ".tar.gz"))
        (sha256
-        (base32 "0x17b7s5c3bqy9gx7psdqxbzkilylnwwd3c3i68vynbn9hs788my"))))
+        (base32 "0l663s3a68p8r2qjy4pn1g05lx0i8js8wpz7qqln3bsvg1fihklq"))))
     (build-system perl-build-system)
     (native-inputs
      ;; For tests.
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 2551028e49..ff4bd8d3a1 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -60,15 +60,15 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.3")
-    (home-page "https://www.php.net/")
+    (version "7.4.4")
+    (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "distributions/"
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "0alqqs5hn4jmz1adrbysbw92n55nkw6f9vfivqj829kwhxnqa7yg"))
+                "0k57zj1z8kf8403rd72wymj08bswpa5ikcpzviw9mpykzp7c8wqq"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 23c06267a7..1286693fc2 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1043,7 +1043,7 @@ been constructed to maintain extensive documentation on how to use
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
-    (home-page "http://bitbucket.org/mhallin/py-scrypt")
+    (home-page "https://bitbucket.org/mhallin/py-scrypt")
     (synopsis "Bindings for the scrypt key derivation function library")
     (description "This is a set of Python bindings for the scrypt key
 derivation function.")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c20ef40192..1180485e2e 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -1600,7 +1600,7 @@ commands.")
     (synopsis "Toolkit for XML processing in Python")
     (description
      "ElementTree is a Python library supporting lightweight XML processing.")
-    (home-page "http://effbot.org/zone/element-index.htm")
+    (home-page "https://effbot.org/zone/element-index.htm")
     (license (license:x11-style
               "http://docs.python.org/2/license.html"
               "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
@@ -2306,32 +2306,6 @@ compare, diff, and patch JSON and JSON-like structures in Python.")
               `(("python2-functools32" ,python2-functools32)
                 ,@(package-propagated-inputs jsonschema))))))
 
-;; This old version is still required by docker-compose as of 1.24.0.
-(define-public python-jsonschema-2.6
-  (package
-    (name "python-jsonschema")
-    (version "2.6.0")
-    (source (origin
-             (method url-fetch)
-             (uri (pypi-uri "jsonschema" version))
-             (sha256
-              (base32
-               "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"))))
-    (build-system python-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check (lambda _ (invoke "nosetests"))))))
-    (native-inputs
-     `(("python-nose" ,python-nose)
-       ("python-vcversioner" ,python-vcversioner)))
-    (home-page "https://github.com/Julian/jsonschema")
-    (synopsis "Implementation of JSON Schema for Python")
-    (description
-     "Jsonschema is an implementation of JSON Schema for Python.")
-    (license license:expat)
-    (properties `((python2-variant . ,(delay python2-jsonschema))))))
-
 (define-public python-schema
   (package
     (name "python-schema")
@@ -2424,6 +2398,40 @@ somewhat intelligible.")
 (define-public python2-unidecode
   (package-with-python2 python-unidecode))
 
+(define-public python-text-unidecode
+  (package
+    (name "python-text-unidecode")
+    (version "1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "text-unidecode" version))
+              (sha256
+               (base32
+                "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (setenv "PYTHONPATH"
+                              (string-append "./build/lib:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "pytest" "-vv"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/kmike/text-unidecode/")
+    (synopsis "Decode Unicode data")
+    (description
+     "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode}
+Perl library.  It can create ASCII representations of Unicode data.  In general
+users should prefer the @code{python-unidecode} package which offers better
+memory usage and transliteration quality.")
+    ;; The user can choose either license.
+    (license (list license:clarified-artistic license:gpl2+))))
+
+(define-public python2-text-unidecode
+  (package-with-python2 python-text-unidecode))
+
 (define-public python-pyjwt
   (package
     (name "python-pyjwt")
@@ -3451,7 +3459,9 @@ Server (PLS).")
     (propagated-inputs
      `(("python-pluggy" ,python-pluggy)
        ("python-jsonrpc-server" ,python-jsonrpc-server)
-       ("python-jedi" ,python-jedi)
+       ;; Note: Remove the special versions of Jedi and Parso when updating
+       ;; this package.
+       ("python-jedi" ,python-jedi-0.15)
        ("python-yapf" ,python-yapf)
        ("python-pyflakes" ,python-pyflakes)
        ("python-pydocstyle" ,python-pydocstyle)
@@ -7713,7 +7723,7 @@ printing of sub-tables by specifying a row range.")
      `(("hdf5" ,hdf5-1.10)
        ("bzip2" ,bzip2)
        ("zlib" ,zlib)))
-    (home-page "http://www.pytables.org/")
+    (home-page "https://www.pytables.org/")
     (synopsis "Hierarchical datasets for Python")
     (description "PyTables is a package for managing hierarchical datasets and
 designed to efficiently cope with extremely large amounts of data.")
@@ -9469,14 +9479,14 @@ document.")
 (define-public python-botocore
   (package
     (name "python-botocore")
-    (version "1.12.149")
+    (version "1.15.26")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "botocore" version))
        (sha256
         (base32
-         "12597f74khp3ngwr282cb949w0gcqj20rkfc3x275dijavyy5cmf"))))
+         "1a87pbwkk5vlwz92hy1wizfnpiwn11bhaicr6bmji1i5ybwdhnr8"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: Many tests are failing.
@@ -10315,7 +10325,7 @@ the same purpose: to provide Python bindings for libmagic.")
        ;; without libmagic bindings at all:
        ;; https://github.com/s3tools/s3cmd/issues/198
        ("python2-magic" ,python2-magic)))
-    (home-page "http://s3tools.org/s3cmd")
+    (home-page "https://s3tools.org/s3cmd")
     (synopsis "Command line tool for S3-compatible storage services")
     (description
      "S3cmd is a command line tool for uploading, retrieving and managing data
@@ -10407,7 +10417,7 @@ development version of CPython that are not available in older releases.")
     ;; https://github.com/PythonCharmers/python-future/issues/210
     (arguments
      `(#:tests? #f))
-    (home-page "http://python-future.org")
+    (home-page "https://python-future.org")
     (synopsis "Single-source support for Python 3 and 2")
     (description
      "@code{python-future} is the missing compatibility layer between Python 2 and
@@ -11223,8 +11233,18 @@ more, possibly remote, memcached servers.")
     (description
      "CliKit is a group of utilities to build testable command line
 interfaces.")
+    (properties `((python2-variant . ,(delay python2-clikit))))
     (license license:expat)))
 
+(define-public python2-clikit
+  (let ((base (package-with-python2 (strip-python2-variant python-clikit))))
+    (package/inherit
+     base
+     (propagated-inputs
+      `(("python-enum34" ,python2-enum34)
+        ("python-typing" ,python2-typing)
+        ,@(package-propagated-inputs base))))))
+
 (define-public python-msgpack-python
   (package
     (name "python-msgpack-python")
@@ -11422,34 +11442,29 @@ parsing UK postcodes.")
 (define-public python-faker
   (package
   (name "python-faker")
-  (version "0.7.9")
+  (version "4.0.2")
   (source (origin
             (method url-fetch)
             (uri (pypi-uri "Faker" version))
             (sha256
              (base32
-              "1fh2p2yz0fsdr4fqwxgddwbvfb6qn6vp8yx0qwqzra27yq5d1wsm"))
-            (patches
-             (search-patches "python-faker-fix-build-32bit.patch"))
-            (modules '((guix build utils)))
-            (snippet
-             '(begin
-                (for-each delete-file (find-files "." "\\.pyc$"))
-                #t))))
+              "13qq485ydxmdnqn3xbfv1xfyqbf9qfnfw33v1vw5l6jyy9p8cgrd"))))
   (build-system python-build-system)
   (arguments
    '(#:phases
      (modify-phases %standard-phases
        (replace 'check
-         (lambda _ (invoke "python" "-m" "unittest" "-v" "tests"))))))
+         (lambda _ (invoke "python" "-m" "pytest" "-v"))))))
   (native-inputs
    `(;; For testing
-     ("python-email-validator" ,python-email-validator)
-     ("python-mock" ,python-mock)
-     ("python-ukpostcodeparser" ,python-ukpostcodeparser)))
+     ("python-freezegun" ,python-freezegun)
+     ("python-pytest" ,python-pytest)
+     ("python-random2" ,python-random2)
+     ("python-ukpostcodeparser" ,python-ukpostcodeparser)
+     ("python-validators" ,python-validators)))
   (propagated-inputs
    `(("python-dateutil" ,python-dateutil)
-     ("python-six" ,python-six)))
+     ("python-text-unidecode" ,python-text-unidecode)))
   (home-page "https://github.com/joke2k/faker")
   (synopsis "Python package that generates fake data")
   (description
@@ -11458,13 +11473,25 @@ addresses, and phone numbers.")
   (license license:expat)
   (properties `((python2-variant . ,(delay python2-faker))))))
 
+;; Faker 4.0 dropped Python 2 support, so we stick with this older version here.
 (define-public python2-faker
   (let ((base (package-with-python2 (strip-python2-variant
                                      python-faker))))
     (package
       (inherit base)
+      (version "3.0.1")
+      (source (origin
+                (method url-fetch)
+                (uri (pypi-uri "Faker" version))
+                (sha256
+                 (base32
+                  "11cr0qvspkdh6198rqy56qildk7bnp6llj8kyy1dan5sp5n4dxy7"))))
+      (native-inputs
+       `(("python-mock" ,python2-mock)
+         ,@(package-native-inputs base)))
       (propagated-inputs
        `(("python2-ipaddress" ,python2-ipaddress)
+         ("python2-six" ,python2-six)
          ,@(package-propagated-inputs base))))))
 
 (define-public python-pyaml
@@ -11613,6 +11640,20 @@ well.")
 (define-public python2-jedi
   (package-with-python2 python-jedi))
 
+;; python-language-server requires 0.15 specifically.  Remove once unused.
+(define-public python-jedi-0.15
+  (package
+    (inherit python-jedi)
+    (version "0.15.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "jedi" version))
+              (sha256
+               (base32
+                "01zqasl690x1i6dq4mvh13pz0cw8i276xsivsrnn00x90iqm42g9"))))
+    (propagated-inputs
+     `(("python-parso" ,python-parso-0.5)))))
+
 (define-public ptpython
   (package
     (name "ptpython")
@@ -11743,7 +11784,7 @@ and/or Xon/Xoff.  The port is accessed in RAW mode.")
        ("mesa" ,mesa)
        ("sdl-union"
         ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
-    (home-page "http://kivy.org")
+    (home-page "https://kivy.org")
     (synopsis
      "Multitouch application framework")
     (description
@@ -12217,6 +12258,34 @@ provide extendible implementations of common aspects of a cloud so that you can
 focus on building massively scalable web applications.")
     (license license:expat)))
 
+(define-public python-random2
+  (package
+    (name "python-random2")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "random2" version ".zip"))
+              (sha256
+               (base32
+                "01y0s4747plsx8fdnxy0nz83dp69naddz58m81r9h0s1qfm31b9l"))))
+    (build-system python-build-system)
+    (native-inputs `(("unzip" ,unzip)))
+    (home-page "http://pypi.python.org/pypi/random2")
+    (synopsis "Python 3 version of the Python 2 @code{random} module")
+    (description
+     "This package provides a Python 3 ported version of Python 2.7’s
+@code{random} module.  It has also been back-ported to work in Python 2.6.
+
+In Python 3, the implementation of @code{randrange()} was changed, so that
+even with the same seed you get different sequences in Python 2 and 3.
+
+This package closes that gap, allowing stable random number generation
+between the different Python versions.")
+    (license license:psfl)))
+
+(define-public python2-random2
+  (package-with-python2 python-random2))
+
 (define-public python-snowballstemmer
   (package
     (name "python-snowballstemmer")
@@ -12580,7 +12649,7 @@ possible on all supported Python versions.")
                         (invoke "python" "Cheetah/Tests/Test.py")))))))
     (propagated-inputs
      `(("python-markdown" ,python-markdown)))    ;optional
-    (home-page "http://cheetahtemplate.org/")
+    (home-page "https://cheetahtemplate.org/")
     (synopsis "Template engine")
     (description "Cheetah is a text-based template engine and Python code
 generator.
@@ -14145,6 +14214,41 @@ validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
 (define-public python2-rfc3987
   (package-with-python2 python-rfc3987))
 
+(define-public python-validators
+  (package
+    (name "python-validators")
+    (version "0.14.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "validators" version))
+              (sha256
+               (base32
+                "024m15j33szd0v8k5l4ccish6n0b4knq81gmb4fq25ynwyyyd4mi"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "pytest" "-vv"))))))
+    (propagated-inputs
+     `(("python-decorator" ,python-decorator)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-isort" ,python-isort)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/kvesteri/validators")
+    (synopsis "Data validation library")
+    (description
+     "This package contains validators for different things such as email
+addresses, IP addresses, URLs, hashes and more.  It has been designed to
+be easy to use and not require defining a schema or form just to validate
+some input.")
+    (license license:expat)))
+
+(define-public python2-validators
+  (package-with-python2 python-validators))
+
 (define-public python-validate-email
   (package
     (name "python-validate-email")
@@ -15132,7 +15236,7 @@ objects on other machines, also known as remote procedure calls (RPC).")
      `(#:python ,python-2
        ;; Pyro has no test cases for automatic execution
        #:tests? #f))
-    (home-page "http://pythonhosted.org/Pyro/")
+    (home-page "https://pythonhosted.org/Pyro/")
     (synopsis "Distributed object manager for Python")
     (description "Pyro is a Distributed Object Technology system
 written in Python that is designed to be easy to use.  It resembles
@@ -15898,6 +16002,19 @@ Parso is also able to list multiple syntax errors in your Python file.")
 (define-public python2-parso
   (package-with-python2 python-parso))
 
+;; This version is required for Jedi@0.15, which in turn is needed for
+;; python-language-server.
+(define-public python-parso-0.5
+  (package
+    (inherit python-parso)
+    (version "0.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "parso" version))
+              (sha256
+               (base32
+                "1qgvrkpma7vylrk047mxxvqd66nwqk978n3ig2w8iz9m3bgjbksm"))))))
+
 (define-public python-async-generator
   (package
     (name "python-async-generator")
@@ -17011,26 +17128,6 @@ source via the Abstract Syntax Tree.")
 (define-public python2-astor
   (package-with-python2 python-astor))
 
-(define-public python-grpcio
-  (package
-    (name "python-grpcio")
-    (version "1.17.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "grpcio" version))
-       (sha256
-        (base32
-         "0qb9y6j83nxa6d4kc60i8yfgdm7a8ms7b54kncjzf5y7nsxp8rzx"))))
-    (build-system python-build-system)
-    (propagated-inputs
-     `(("python-six" ,python-six)))
-    (home-page "https://grpc.io")
-    (synopsis "HTTP/2-based RPC framework")
-    (description "This package provides a Python library for communicating
-with the HTTP/2-based RPC framework gRPC.")
-    (license license:asl2.0)))
-
 (define-public python-astunparse
   (package
     (name "python-astunparse")
@@ -17056,13 +17153,13 @@ distribution.")
 (define-public python-gast
   (package
     (name "python-gast")
-    (version "0.2.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "gast" version))
        (sha256
-        (base32 "1w5dzdb3gpcfmd2s0b93d8gff40a1s41rv31458z14inb3s9v4zy"))))
+        (base32 "0mrvvfzqafj1wzd0xxfmjf4vphnlxypbhpic1m283aj9i8lfz0dq"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-astunparse" ,python-astunparse)))
diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm
new file mode 100644
index 0000000000..e73695b613
--- /dev/null
+++ b/gnu/packages/rpc.scm
@@ -0,0 +1,177 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rpc)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages adns)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages tls))
+
+(define-public grpc
+  (package
+    (name "grpc")
+    (version "1.27.3")
+    (outputs '("out" "static"))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/grpc/grpc.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0czmbwnafc7jnrrq2fnac2av83vs2q7q0wy4k11w9zbpld7j5h6d"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; no test target
+       #:configure-flags
+       (list "-DgRPC_ZLIB_PROVIDER=package"
+             "-DgRPC_ABSL_PROVIDER=package"
+             "-DgRPC_CARES_PROVIDER=package"
+             "-DgRPC_SSL_PROVIDER=package"
+             "-DgRPC_PROTOBUF_PROVIDER=package"
+             (string-append "-DCMAKE_INSTALL_PREFIX="
+                            (assoc-ref %outputs "out"))
+             "-DCMAKE_INSTALL_LIBDIR=lib"
+             (string-append "-DCMAKE_INSTALL_RPATH="
+                            (assoc-ref %outputs "out") "/lib")
+             "-DCMAKE_VERBOSE_MAKEFILE=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'configure-shared
+           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+             (mkdir "../build-shared")
+             (with-directory-excursion "../build-shared"
+               (apply invoke
+                      "cmake" "../source"
+                      "-DBUILD_SHARED_LIBS=ON"
+                      configure-flags)
+               (apply invoke "make"
+                      `("-j" ,(number->string (parallel-job-count)))))))
+         (add-after 'install 'install-shared-libraries
+           (lambda _
+             (with-directory-excursion "../build-shared"
+               (invoke "make" "install"))))
+         (add-before 'strip 'move-static-libs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (static (assoc-ref outputs "static")))
+               (mkdir-p (string-append static "/lib"))
+               (with-directory-excursion
+                 (string-append out "/lib")
+                 (for-each
+                   (lambda (file)
+                     (rename-file file
+                                  (string-append static "/lib/" file)))
+                   (find-files "." "\\.a$"))))
+             #t)))))
+    (inputs
+     `(("abseil-cpp" ,abseil-cpp)
+       ("c-ares" ,c-ares/cmake)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("protobuf" ,protobuf)
+       ("python" ,python-wrapper)))
+    (home-page "https://grpc.io")
+    (synopsis "High performance universal RPC framework")
+    (description "gRPC is a modern high performance @dfn{Remote Procedure Call}
+(RPC) framework that can run in any environment.  It can efficiently connect
+services in and across data centers with pluggable support for load balancing,
+tracing, health checking and authentication.  It is also applicable in last
+mile of distributed computing to connect devices, mobile applications and
+browsers to backend services.")
+    (license license:asl2.0)))
+
+;; Some packages require this older version.
+(define-public grpc-1.16.1
+  (package
+    (inherit grpc)
+    (version "1.16.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/grpc/grpc.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name "grpc" version))
+              (sha256
+               (base32
+                "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2"))))))
+
+(define-public python-grpcio
+  (package
+    (name "python-grpcio")
+    (version "1.27.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "grpcio" version))
+       (sha256
+        (base32
+         "0zl89jwcff9hkd8mi4yf3qbhns9vbv1s4x4vahm5mkpr7jwk5ras"))
+       (modules '((guix build utils) (ice-9 ftw)))
+       (snippet
+        '(begin
+           (with-directory-excursion "third_party"
+             ;; Delete the bundled source code of libraries that are possible
+             ;; to provide as inputs.
+             (for-each delete-file-recursively
+                       (scandir "."
+                                (lambda (file)
+                                  (not (member file
+                                               '("." ".."
+                                                 "abseil-cpp"
+                                                 "address_sorting"
+                                                 "upb")))))))
+           #t))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'build 'use-system-libraries
+                    (lambda _
+                      (setenv "GRPC_PYTHON_BUILD_SYSTEM_CARES" "1")
+                      (setenv "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL" "1")
+                      (setenv "GRPC_PYTHON_BUILD_SYSTEM_ZLIB" "1")
+                      #t))
+                  (add-before 'build 'configure-compiler
+                    (lambda _
+                      (substitute* '("setup.py" "src/python/grpcio/commands.py")
+                        (("'cc'") "'gcc'"))
+                      #t)))))
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://grpc.io")
+    (synopsis "HTTP/2-based RPC framework")
+    (description "This package provides a Python library for communicating
+with the HTTP/2-based RPC framework gRPC.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
index 74efae753c..0d8217ee20 100644
--- a/gnu/packages/rsync.scm
+++ b/gnu/packages/rsync.scm
@@ -34,7 +34,6 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu))
 
-
 (define-public rsync
   (package
    (name "rsync")
@@ -47,10 +46,17 @@
              (base32
               "1h0011dj6jgqpgribir4anljjv7bbrdcs8g91pbsmzf5zr75bk2m"))))
    (build-system gnu-build-system)
+   (arguments
+    `(#:configure-flags
+      ;; The bundled copies are preferred by default.
+      (list "--without-included-zlib"
+            "--without-included-popt")))
    (native-inputs
     `(("perl" ,perl)))
    (inputs
-    `(("acl" ,acl)))
+    `(("acl" ,acl)
+      ("popt" ,popt)
+      ("zlib" ,zlib)))
    (synopsis "Remote (and local) file copying tool")
    (description
     "Rsync is a fast and versatile file copying tool.  It can copy locally,
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0e7d35f44f..87d98525fa 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017, 2018, 2019 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
@@ -758,7 +758,7 @@ interactions.")
     (description "RSpec is a behavior-driven development (BDD) framework for
 Ruby.  This meta-package includes the RSpec test runner, along with the
 expectations and mocks frameworks.")
-    (home-page "http://rspec.info/")
+    (home-page "https://rspec.info/")
     (license license:expat)))
 
 (define-public ruby-rspec-2
@@ -1318,14 +1318,13 @@ with a similar style to the original OAuth spec.")
 (define-public ruby-omniauth
   (package
     (name "ruby-omniauth")
-    (version "1.9.0")
+    (version "1.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "omniauth" version))
        (sha256
-        (base32
-         "1p16h1rp8by05k8gfw17xjhgwp60dk8qmj1xalv1n23kmxfsxb1x"))))
+        (base32 "002vi9gwamkmhf0dsj2im1d47xw2n1jfhnzl18shxf3ampkqfmyz"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; No included tests
@@ -7225,7 +7224,7 @@ generation.")
 concise DSL for constructing SQL queries and table schemas.  It includes a
 comprehensive ORM layer for mapping records to Ruby objects and handling
 associated records.")
-    (home-page "http://sequel.jeremyevans.net")
+    (home-page "https://sequel.jeremyevans.net")
     (license license:expat)))
 
 (define-public ruby-timecop
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index d8e77184ca..59bce3af02 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -3573,13 +3573,13 @@ t-probabilities, quantiles, random deviates and densities.")
 (define-public r-matrixstats
   (package
     (name "r-matrixstats")
-    (version "0.55.0")
+    (version "0.56.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "matrixStats" version))
               (sha256
                (base32
-                "06fvx0rlaz80k0lkqq2n7v0309xpz7h7ss0m9kgyikp4xs8bvmhn"))))
+                "09qgfv9x32x6ncgf19iy7yjp26fwy6p5wm8spc2xzfc0qhylmqrr"))))
     (properties `((upstream-name . "matrixStats")))
     (build-system r-build-system)
     (native-inputs
@@ -5029,14 +5029,14 @@ decompositions of such matrices, and solutions of linear systems.")
 (define-public r-modelmetrics
   (package
     (name "r-modelmetrics")
-    (version "1.2.2.1")
+    (version "1.2.2.2")
     (source
      (origin
        (method url-fetch)
         (uri (cran-uri "ModelMetrics" version))
         (sha256
          (base32
-          "17yw46yr0n9hddvlhh73jdpmpdlpa581n5xjpwkr6cpr2f7xxpqc"))))
+          "0mrlsw4c5y1vdsqynxr2dcvmhh5h37pnd71jw5a5djpbda9g21jy"))))
     (properties `((upstream-name . "ModelMetrics")))
     (build-system r-build-system)
     (propagated-inputs
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index d4c0f7efc6..41a0802cde 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
@@ -89,18 +89,20 @@ expressions.")
 (define-public python-pytzdata
   (package
     (name "python-pytzdata")
-    (version "2017.3.1")
+    (version "2019.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytzdata" version))
        (sha256
         (base32
-         "1wi3jh39zsa9iiyyhynhj7w5b2p9wdyd0ppavpsrmf3wxvr7cwz8"))))
+         "0ppfc6kz4p41mxyqxq1g1zp6gvns99g6b344qj6ih0x9vxy6zh7s"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-nose" ,python-nose)))
+    ;; XXX: The PyPI distribution contains no tests, and the upstream
+    ;; repository lacks a setup.py!  How to build from git?
+    (arguments '(#:tests? #f))
+    (propagated-inputs
+     `(("python-cleo" ,python-cleo)))
     (home-page "https://github.com/sdispater/pytzdata")
     (synopsis "Timezone database for Python")
     (description
@@ -136,22 +138,21 @@ saving time.  Almost all of the Olson timezones are supported.")
 (define-public python-pendulum
   (package
     (name "python-pendulum")
-    (version "1.2.4")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pendulum" version))
        (sha256
         (base32
-         "1fj36yxi2f4lzchzd8ny1qjl67dbypnk0gn8qwad2w78579m8m8z"))))
+         "1zhzk0ai8is8zclw4v73dllf0hx0l5nmm4sbwrh6cl8h5qsang09"))))
     (build-system python-build-system)
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-nose" ,python-nose)))
+    ;; XXX: The PyPI distribution lacks tests, and the upstream repository
+    ;; lacks a setup.py!
+    (arguments '(#:tests? #f))
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
-       ("python-pytzdata" ,python-pytzdata)
-       ("python-tzlocal" ,python-tzlocal)))
+       ("python-pytzdata" ,python-pytzdata)))
     (home-page "https://github.com/sdispater/pendulum")
     (synopsis "Alternate API for Python datetimes")
     (description "Pendulum is a drop-in replacement for the standard
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index ac2a849705..813970fcba 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1287,7 +1287,7 @@ though this can be overridden.")
                        (install-file (string-append source "/" script)
                                      bindir)
                        #t))))
-      (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
+      (home-page "https://dustin.sallings.org/2010/03/28/git-test-sequence.html")
       (synopsis "Run a command over a sequence of commits")
       (description
        "git-test-sequence is similar to an automated git bisect except it’s
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 861e5c427e..e90650b5eb 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -922,6 +922,8 @@ operate properly.")
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
+             ;; See <https://issues.guix.gnu.org/issue/39719>
+             (patches (search-patches "ffmpeg-prefer-dav1d.patch"))
              (sha256
               (base32
                "176jn1lcdf0gk7sa5l2mv0faqp5dsqdhx1gqcrgymqhfmdal4xfb"))))
@@ -1204,6 +1206,10 @@ videoformats depend on the configuration flags of ffmpeg.")
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("avahi" ,avahi)
+       ;; XXX Try removing dav1d here and testing AV1 playback when FFmpeg 4.3
+       ;; is released.
+       ;; <https://issues.guix.gnu.org/issue/39719>
+       ("dav1d" ,dav1d)
        ("dbus" ,dbus)
        ("eudev" ,eudev)
        ("flac" ,flac)
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 7bea7fa791..75e8f0bb2e 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -70,7 +70,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.0343")
+    (version "8.2.0411")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -79,7 +79,7 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "063i52h8v7f87zamrw2ph057f0x2nzwf1s0izrm2psy41cyf4wa3"))))
+               "0idjbf15yqk5jz2dqbh2lzj7glxcwn1jl5pp9kk908ps02vzqyai"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 171e83650e..3f59bbdb73 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -37,7 +37,7 @@
 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
-;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
+;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -443,20 +443,10 @@ documentation.")
                (begin
                  ;; The nginx source code is part of the module’s source.
                  (format #t "decompressing nginx source code~%")
-                 (call-with-output-file "nginx.tar"
-                   (lambda (out)
-                     (let* ((gzip (assoc-ref inputs "gzip"))
-                            (nginx-srcs (assoc-ref inputs "nginx-sources"))
-                            (pipe (open-pipe* OPEN_READ
-                                              (string-append gzip "/bin/gzip")
-                                              "-cd"
-                                              nginx-srcs)))
-                       (dump-port pipe out)
-                       (unless (= (status:exit-val (close-pipe pipe)) 0)
-                         (error "gzip decompress failed")))))
-                 (invoke (string-append (assoc-ref inputs "tar") "/bin/tar")
-                         "xvf" "nginx.tar" "--strip-components=1")
-                 (delete-file "nginx.tar")
+                 (let ((tar (assoc-ref inputs "tar"))
+                       (nginx-srcs (assoc-ref inputs "nginx-sources")))
+                   (invoke (string-append tar "/bin/tar")
+                           "xvf" nginx-srcs "--strip-components=1"))
                  #t)))
            (add-after 'unpack 'convert-to-dynamic-module
              (lambda _
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index f5b9e62afe..7fee167185 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -66,6 +66,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages calendar)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
@@ -1485,7 +1486,7 @@ modules for building a Wayland compositor.")
 (define-public waybar
   (package
     (name "waybar")
-    (version "0.8.0")
+    (version "0.9.1")
     (source
      (origin
        (method git-fetch)
@@ -1494,12 +1495,14 @@ modules for building a Wayland compositor.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0s8ck7qxka0l91ayma6amp9sc8cidi43byqgzcavi3a6id983r1z"))))
+        (base32 "0drlv8im5phz39jxp3gxkc40b6f85bb3piff2v3hmnfzh7ib915s"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
        (list (string-append "-Dout=" (assoc-ref %outputs "out")))))
-    (inputs `(("fmt" ,fmt)
+    (inputs `(("date" ,date)
+              ("fmt" ,fmt)
+              ("gtk-layer-shell" ,gtk-layer-shell)
               ("gtkmm" ,gtkmm)
               ("jsoncpp" ,jsoncpp)
               ("libdbusmenu" ,libdbusmenu)
@@ -1513,7 +1516,7 @@ modules for building a Wayland compositor.")
                      ("pkg-config" ,pkg-config)
                      ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/Alexays/Waybar")
-    (synopsis "Wayland bar for Sway and Wlroots based compositors.")
+    (synopsis "Wayland bar for Sway and Wlroots based compositors")
     (description "Waybar is a highly customisable Wayland bar for Sway and
 Wlroots based compositors.")
     (license license:expat))) ; MIT license
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 2ec151fd01..4353a095e8 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
+;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3468,6 +3469,105 @@ X server.")
 X server.")
     (license license:x11)))
 
+(define-public v86d
+  (package
+    (name "v86d")
+    (version "0.1.10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mjanusz/v86d.git")
+             (commit (string-append name "-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c4iiggb5r9i2hxhk8c6q1m2vpfva39l1w33fsfkrz6fav6x34pp"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; remove bundled x86emu
+           (for-each delete-file
+                     (filter (lambda (name) ;keep customized Makefile
+                               (not (string-suffix? "Makefile" name)))
+                             (find-files "libs/x86emu")))
+           ;; remove non-working vbetest utility program (it is unnecessary)
+           (delete-file "libs/lrmi-0.10/vbe.h")
+           (delete-file "libs/lrmi-0.10/vbetest.c")
+           #t))))
+
+    ;; We keep the bundled copy of the Linux Real Mode Interface lrmi-0.10,
+    ;; because it includes fixes missing from upstream lrmi.  We do not use
+    ;; libx86, because we already use x86emu with the more current lrmi.
+
+    (inputs `(("xorg-server-sources" ,(package-source xorg-server)) ;for x86emu
+              ("xorgproto" ,xorgproto))) ;upstream x86emu uses X11/Xfuncproto.h
+    (outputs '("out" ;main v86d helper
+               "testvbe")) ;test program for listing video modes
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ;there are no tests
+       #:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (ice-9 popen))
+       #:phases
+       (modify-phases %standard-phases
+         ;; Replace the bundled x86emu with its upstream copy from Xorg-server:
+         (add-after 'unpack 'unpack-x86emu-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             (begin
+               (format #t "decompressing x86emu source code~%")
+               (with-directory-excursion "libs"
+                 (let ((srcs (assoc-ref inputs "xorg-server-sources"))
+                       (tar-binary (string-append (assoc-ref inputs "tar")
+                                                  "/bin/tar")))
+                   (invoke tar-binary "xvf" srcs "--strip-components=3"
+                           "--wildcards" "*/hw/xfree86/x86emu/")
+                   ;; extract license:
+                   (with-directory-excursion "x86emu"
+                     (invoke tar-binary "xvf" srcs "--strip-components=1"
+                             "--wildcards" "*/COPYING"))
+                   #t)))))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "CC" (which "gcc"))
+               (setenv "DESTDIR" out)
+               (invoke "./configure" "--with-x86emu"))))
+         (add-after 'build 'build-testvbe
+           (lambda _
+             (invoke "make" "testvbe")))
+         (add-after 'install 'install-testvbe
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((testvbe (assoc-ref outputs "testvbe"))
+                   (olddest (getenv "DESTDIR")))
+               (setenv "DESTDIR" testvbe)
+               (invoke "make" "install_testvbe")
+               (setenv "DESTDIR" olddest)
+               #t)))
+         (add-after 'install 'install-docs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc-dir (string-append out "/share/doc/v86d")))
+               (mkdir-p doc-dir)
+               (copy-file "README"
+                          (string-append doc-dir "/README"))
+               (copy-file "libs/lrmi-0.10/README"
+                          (string-append doc-dir "/README.lrmi"))
+               (copy-file "libs/x86emu/COPYING"
+                          (string-append doc-dir "/COPYING.xorg-server.x86emu"))
+               #t))))))
+    (home-page "https://github.com/mjanusz/v86d")
+    (synopsis "Userspace helper for uvesafb")
+    (description
+     "v86d provides a backend for kernel drivers that need to execute x86 BIOS
+code.  The code is executed in a controlled environment and the results are
+passed back to the kernel via the netlink interface.  v86d is required by the
+uvesafb Linux kernel module that provides an fbdev framebuffer when Kernel
+Mode Setting is unavailable.  It can be a last resort when no other Xorg X
+server driver works.")
+    (license (list license:gpl2
+                   license:x11)))) ;for bundled lrmi and x86emu
 
 (define-public xf86-video-vmware
   (package
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 13b8b14095..46efdfddab 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,7 +33,6 @@
   #:use-module ((gnu packages admin)
                 #:select (shadow))
   #:use-module (gnu packages bash)
-  #:use-module (gnu packages guile-wm)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
@@ -117,12 +117,6 @@
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
 'useradd' in the home directory of newly created user accounts."
-  (define copy-guile-wm
-    (with-imported-modules '((guix build utils))
-      #~(begin
-          (use-modules (guix build utils))
-          (copy-file (car (find-files #+guile-wm "wm-init-sample.scm"))
-                     #$output))))
 
   (let ((profile (plain-file "bash_profile" "\
 # Honor per-interactive-shell startup file
@@ -162,7 +156,6 @@ alias grep='grep --color=auto'\n"))
         (zprofile    (plain-file "zprofile" "\
 # Honor system-wide environment variables
 source /etc/profile\n"))
-        (guile-wm  (computed-file "guile-wm" copy-guile-wm))
         (xdefaults (plain-file "Xdefaults" "\
 XTerm*utf8: always
 XTerm*metaSendsEscape: true\n"))
@@ -202,7 +195,6 @@ convenient interactive line editing and input history.\\n\\n\")))
               (else
                (display \"Consider installing the 'guile-colorized' package
 for a colorful Guile experience.\\n\\n\"))))\n"))
-      (".guile-wm" ,guile-wm)
       (".gdbinit" ,gdbinit))))
 
 (define (skeleton-directory skeletons)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 9ecc45cc04..4f650ffb34 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -270,8 +270,12 @@ packages defined in installation-os."
                                   (lambda (port)
                                     (write '#$target-os-source port)))
                                marionette)
-              (exit (marionette-eval '(zero? (system #$script))
-                                     marionette)))
+
+              ;; Run SCRIPT.  It typically invokes 'reboot' as a last step and
+              ;; thus normally gets killed with SIGTERM by PID 1.
+              (let ((status (marionette-eval '(system #$script) marionette)))
+                (exit (or (equal? (status:term-sig status) SIGTERM)
+                          (equal? (status:exit-val status) 0)))))
 
             (when #$(->bool gui-test)
               (wait-for-unix-socket "/var/guix/installer-socket"
diff --git a/guix/inferior.scm b/guix/inferior.scm
index 6b685ece30..c9a5ee5129 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -66,6 +66,7 @@
             inferior-exception?
             inferior-exception-arguments
             inferior-exception-inferior
+            inferior-exception-stack
             read-repl-response
 
             inferior-packages
@@ -159,6 +160,15 @@ inferior."
      (letrec ((result (inferior 'pipe pipe close (cons 0 rest)
                                 (delay (%inferior-packages result))
                                 (delay (%inferior-package-table result)))))
+
+       ;; For protocol (0 1) and later, send the protocol version we support.
+       (match rest
+         ((n _ ...)
+          (when (>= n 1)
+            (send-inferior-request '(() repl-version 0 1 1) result)))
+         (_
+          #t))
+
        (inferior-eval '(use-modules (guix)) result)
        (inferior-eval '(use-modules (gnu)) result)
        (inferior-eval '(use-modules (ice-9 match)) result)
@@ -202,7 +212,8 @@ equivalent.  Return #f if the inferior could not be launched."
 (define-condition-type &inferior-exception &error
   inferior-exception?
   (arguments  inferior-exception-arguments)       ;key + arguments
-  (inferior   inferior-exception-inferior))       ;<inferior> | #f
+  (inferior   inferior-exception-inferior)        ;<inferior> | #f
+  (stack      inferior-exception-stack))          ;list of (FILE COLUMN LINE)
 
 (define* (read-repl-response port #:optional inferior)
   "Read a (guix repl) response from PORT and return it as a Scheme object.
@@ -217,10 +228,19 @@ Raise '&inferior-exception' when an exception is read from PORT."
   (match (read port)
     (('values objects ...)
      (apply values (map sexp->object objects)))
+    (('exception ('arguments key objects ...)
+                 ('stack frames ...))
+     ;; Protocol (0 1 1) and later.
+     (raise (condition (&inferior-exception
+                        (arguments (cons key (map sexp->object objects)))
+                        (inferior inferior)
+                        (stack frames)))))
     (('exception key objects ...)
+     ;; Protocol (0 0).
      (raise (condition (&inferior-exception
                         (arguments (cons key (map sexp->object objects)))
-                        (inferior inferior)))))))
+                        (inferior inferior)
+                        (stack '())))))))
 
 (define (read-inferior-response inferior)
   (read-repl-response (inferior-socket inferior)
diff --git a/guix/lint.scm b/guix/lint.scm
index 24fbf05202..40bddd0a41 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -317,6 +317,7 @@ of a package, and INPUT-NAMES, a list of package specifications such as
             "python-pytest-cov" "python2-pytest-cov"
             "python-setuptools-scm" "python2-setuptools-scm"
             "python-sphinx" "python2-sphinx"
+            "scdoc"
             "swig"
             "qmake"
             "qttools"
diff --git a/guix/packages.scm b/guix/packages.scm
index d925e754a3..5c6d1a92d5 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -355,25 +355,24 @@ object."
      (catch 'system-error
        (lambda ()
          ;; In general we want to keep relative file names for modules.
-         (with-fluids ((%file-port-name-canonicalization 'relative))
-           (call-with-input-file (search-path %load-path file)
-             (lambda (port)
-               (goto port line column)
-               (match (read port)
-                 (('package inits ...)
-                  (let ((field (assoc field inits)))
-                    (match field
-                      ((_ value)
-                       ;; Put the `or' here, and not in the first argument of
-                       ;; `and=>', to work around a compiler bug in 2.0.5.
-                       (or (and=> (source-properties value)
-                                  source-properties->location)
-                           (and=> (source-properties field)
-                                  source-properties->location)))
-                      (_
-                       #f))))
-                 (_
-                  #f))))))
+         (call-with-input-file (search-path %load-path file)
+           (lambda (port)
+             (goto port line column)
+             (match (read port)
+               (('package inits ...)
+                (let ((field (assoc field inits)))
+                  (match field
+                    ((_ value)
+                     (let ((props (source-properties value)))
+                       (and props
+                            ;; Preserve the original file name, which may be a
+                            ;; relative file name.
+                            (let ((loc (source-properties->location props)))
+                              (set-field loc (location-file) file)))))
+                    (_
+                     #f))))
+               (_
+                #f)))))
        (lambda _
          #f)))
     (_ #f)))
diff --git a/guix/repl.scm b/guix/repl.scm
index 0f75f9cd0b..0ace5976cf 100644
--- a/guix/repl.scm
+++ b/guix/repl.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,6 +17,8 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (guix repl)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:export (send-repl-response
             machine-repl))
@@ -39,15 +41,53 @@
     (one-of symbol? string? keyword? pair? null? array?
             number? boolean? char?)))
 
-(define (send-repl-response exp output)
+(define repl-prompt
+  ;; Current REPL prompt or #f.
+  (make-parameter #f))
+
+(define (stack->frames stack)
+  "Return STACK's frames as a list."
+  (unfold (cute >= <> (stack-length stack))
+          (cut stack-ref stack <>)
+          1+
+          0))
+
+(define* (send-repl-response exp output
+                             #:key (version '(0 0)))
   "Write the response corresponding to the evaluation of EXP to PORT, an
-output port."
+output port.  VERSION is the client's protocol version we are targeting."
   (define (value->sexp value)
     (if (self-quoting? value)
         `(value ,value)
         `(non-self-quoting ,(object-address value)
                            ,(object->string value))))
 
+  (define (frame->sexp frame)
+    `(,(frame-procedure-name frame)
+      ,(match (frame-source frame)
+         ((_ (? string? file) (? integer? line) . (? integer? column))
+          (list file line column))
+         (_
+          '(#f #f #f)))))
+
+  (define (handle-exception key . args)
+    (define reply
+      (match version
+        ((0 1 (? positive?) _ ...)
+         ;; Protocol (0 1 1) and later.
+         (let ((stack (if (repl-prompt)
+                          (make-stack #t handle-exception (repl-prompt))
+                          (make-stack #t))))
+           `(exception (arguments ,key ,@(map value->sexp args))
+                       (stack ,@(map frame->sexp (stack->frames stack))))))
+        (_
+         ;; Protocol (0 0).
+         `(exception ,key ,@(map value->sexp args)))))
+
+    (write reply output)
+    (newline output)
+    (force-output output))
+
   (catch #t
     (lambda ()
       (let ((results (call-with-values
@@ -58,10 +98,8 @@ output port."
                output)
         (newline output)
         (force-output output)))
-    (lambda (key . args)
-      (write `(exception ,key ,@(map value->sexp args)))
-      (newline output)
-      (force-output output))))
+    (const #t)
+    handle-exception))
 
 (define* (machine-repl #:optional
                        (input (current-input-port))
@@ -72,13 +110,33 @@ The protocol of this REPL is meant to be machine-readable and provides proper
 support to represent multiple-value returns, exceptions, objects that lack a
 read syntax, and so on.  As such it is more convenient and robust than parsing
 Guile's REPL prompt."
-  (write `(repl-version 0 0) output)
-  (newline output)
-  (force-output output)
+  (define tag
+    (make-prompt-tag "repl-prompt"))
 
-  (let loop ()
-    (match (read input)
+  (define (loop exp version)
+    (match exp
       ((? eof-object?) #t)
       (exp
-       (send-repl-response exp output)
-       (loop)))))
+       (send-repl-response exp output
+                           #:version version)
+       (loop (read input) version))))
+
+  (write `(repl-version 0 1 1) output)
+  (newline output)
+  (force-output output)
+
+  ;; In protocol version (0 0), clients would not send their supported
+  ;; protocol version.  Thus, the code below checks for two case: (1) a (0 0)
+  ;; client that directly sends an expression to evaluate, and (2) a more
+  ;; recent client that sends (() repl-version ...).  This form is chosen to
+  ;; be unambiguously distinguishable from a regular Scheme expression.
+
+  (call-with-prompt tag
+    (lambda ()
+      (parameterize ((repl-prompt tag))
+        (match (read input)
+          ((() 'repl-version version ...)
+           (loop (read input) version))
+          (exp
+           (loop exp '(0 0))))))
+    (const #f)))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 792c458850..bdddc11b7b 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -42,8 +42,6 @@
   #:autoload   (guix store roots) (gc-roots user-owned?)
   #:use-module ((guix build utils)
                 #:select (directory-exists? mkdir-p))
-  #:use-module ((guix build syscalls)
-                #:select (with-file-lock/no-wait))
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
diff --git a/tests/inferior.scm b/tests/inferior.scm
index 5236a3f3e2..5fddb1fd13 100644
--- a/tests/inferior.scm
+++ b/tests/inferior.scm
@@ -68,6 +68,9 @@
     (guard (c ((inferior-exception? c)
                (close-inferior inferior)
                (and (eq? inferior (inferior-exception-inferior c))
+                    (match (inferior-exception-stack c)
+                      (((_ (files lines columns)) ..1)
+                       (member "guix/repl.scm" files)))
                     (inferior-exception-arguments c))))
       (inferior-eval '(throw 'a 'b 'c 'd) inferior)
       'badness)))