summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix-cookbook.texi802
-rw-r--r--doc/guix.texi78
-rw-r--r--etc/news.scm16
-rw-r--r--gnu/local.mk8
-rw-r--r--gnu/packages/admin.scm10
-rw-r--r--gnu/packages/algebra.scm10
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/bootstrap.scm34
-rw-r--r--gnu/packages/cdrom.scm13
-rw-r--r--gnu/packages/ci.scm8
-rw-r--r--gnu/packages/cran.scm19
-rw-r--r--gnu/packages/crates-io.scm2396
-rw-r--r--gnu/packages/databases.scm2
-rw-r--r--gnu/packages/diffoscope.scm6
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/dns.scm28
-rw-r--r--gnu/packages/docker.scm6
-rw-r--r--gnu/packages/dunst.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm63
-rw-r--r--gnu/packages/emulators.scm4
-rw-r--r--gnu/packages/finance.scm12
-rw-r--r--gnu/packages/freedesktop.scm17
-rw-r--r--gnu/packages/game-development.scm328
-rw-r--r--gnu/packages/games.scm27
-rw-r--r--gnu/packages/genealogy.scm7
-rw-r--r--gnu/packages/geo.scm4
-rw-r--r--gnu/packages/glib.scm27
-rw-r--r--gnu/packages/gnome.scm25
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnuzilla.scm19
-rw-r--r--gnu/packages/golang.scm800
-rw-r--r--gnu/packages/gps.scm4
-rw-r--r--gnu/packages/gtk.scm4
-rw-r--r--gnu/packages/guile-xyz.scm45
-rw-r--r--gnu/packages/haskell-apps.scm63
-rw-r--r--gnu/packages/haskell-xyz.scm54
-rw-r--r--gnu/packages/ipfs.scm18
-rw-r--r--gnu/packages/libedit.scm6
-rw-r--r--gnu/packages/libreoffice.scm49
-rw-r--r--gnu/packages/linux.scm32
-rw-r--r--gnu/packages/mail.scm31
-rw-r--r--gnu/packages/man.scm10
-rw-r--r--gnu/packages/messaging.scm13
-rw-r--r--gnu/packages/mp3.scm4
-rw-r--r--gnu/packages/music.scm80
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/password-utils.scm2
-rw-r--r--gnu/packages/patches/icecat-default-search-ddg.patch1108
-rw-r--r--gnu/packages/patches/icecat-disable-sync.patch9
-rw-r--r--gnu/packages/patches/icecat-gnuzilla-fixes.patch241
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch25
-rw-r--r--gnu/packages/patches/libreoffice-boost.patch17
-rw-r--r--gnu/packages/patches/weasyprint-library-paths.patch5
-rw-r--r--gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch47
-rw-r--r--gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch107
-rw-r--r--gnu/packages/patchutils.scm21
-rw-r--r--gnu/packages/pdf.scm61
-rw-r--r--gnu/packages/perl.scm23
-rw-r--r--gnu/packages/python-web.scm23
-rw-r--r--gnu/packages/python-xyz.scm280
-rw-r--r--gnu/packages/rust-cbindgen.scm938
-rw-r--r--gnu/packages/security-token.scm37
-rw-r--r--gnu/packages/serialization.scm17
-rw-r--r--gnu/packages/syncthing.scm246
-rw-r--r--gnu/packages/terminals.scm42
-rw-r--r--gnu/packages/toys.scm92
-rw-r--r--gnu/packages/video.scm21
-rw-r--r--gnu/packages/vim.scm7
-rw-r--r--gnu/packages/web.scm10
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/packages/xdisorg.scm43
-rw-r--r--gnu/services/audio.scm85
-rw-r--r--guix/channels.scm2
-rw-r--r--guix/derivations.scm38
-rw-r--r--guix/gexp.scm48
-rw-r--r--guix/scripts/pull.scm5
-rw-r--r--guix/store.scm67
78 files changed, 3977 insertions, 4900 deletions
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi
index 1b081a820e..869b9666df 100644
--- a/doc/guix-cookbook.texi
+++ b/doc/guix-cookbook.texi
@@ -269,7 +269,7 @@ online}, together with
 @uref{https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/,
 videos of the lectures by the authors}.  The book is available in Texinfo
 format as the @code{sicp} Guix package.  Go ahead, run @code{guix install
-sicp} and start reading with @code{info sicp} (or with the Emacs Info reader).
+sicp} and start reading with @code{info sicp} (@pxref{,,, sicp, Structure and Interpretation of Computer Programs}).
 An @uref{https://sarabander.github.io/sicp/, unofficial ebook is also
 available}.
 
@@ -331,6 +331,7 @@ It does not assume much knowledge of the Guix system nor of the Lisp language.
 The reader is only expected to be familiar with the command line and to have some
 basic programming knowledge.
 
+@node A "Hello World" package
 @subsection A "Hello World" package
 
 The “Defining Packages” section of the manual introduces the basics of Guix
@@ -521,8 +522,785 @@ We've gone as far as we could without any knowledge of Scheme.  Before moving
 on to more complex packages, now is the right time to brush up on your Scheme
 knowledge.  @pxref{A Scheme Crash Course} to get up to speed.
 
-@c TODO: Continue the tutorial
+@node Setup
+@subsection Setup
 
+In the rest of this chapter we will rely on some basic Scheme
+programming knowledge.  Now let's detail the different possible setups
+for working on Guix packages.
+
+There are several ways to set up a Guix packaging environment.
+
+We recommend you work directly on the Guix source checkout since it makes it
+easier for everyone to contribute to the project.
+
+But first, let's look at other possibilities.
+
+@node Local file
+@subsubsection Local file
+
+This is what we previously did with @samp{my-hello}.  With the Scheme basics we've
+covered, we are now able to explain the leading chunks.  As stated in @code{guix
+package --help}:
+
+@example
+  -f, --install-from-file=FILE
+                         install the package that the code within FILE
+                         evaluates to
+@end example
+
+Thus the last expression @emph{must} return a package, which is the case in our
+earlier example.
+
+The @code{use-modules} expression tells which of the modules we need in the file.
+Modules are a collection of values and procedures.  They are commonly called
+"libraries" or "packages" in other programming languages.
+
+@node @samp{GUIX_PACKAGE_PATH}
+@subsubsection @samp{GUIX_PACKAGE_PATH}
+
+@emph{Note: Starting from Guix 0.16, the more flexible Guix "channels" are the
+preferred way and supersede @samp{GUIX_PACKAGE_PATH}.  See next section.}
+
+It can be tedious to specify the file from the command line instead of simply
+calling @code{guix package --install my-hello} as you would do with the official
+packages.
+
+Guix makes it possible to streamline the process by adding as many "package
+declaration paths" as you want.
+
+Create a directory, say @samp{~./guix-packages} and add it to the @samp{GUIX_PACKAGE_PATH}
+environment variable:
+
+@example
+$ mkdir ~/guix-packages
+$ export GUIX_PACKAGE_PATH=~/guix-packages
+@end example
+
+To add several directories, separate them with a colon (@code{:}).
+
+Our previous @samp{my-hello} needs some adjustments though:
+
+@example
+(define-module (my-hello)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download))
+
+(define-public my-hello
+  (package
+    (name "my-hello")
+    (version "2.10")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/hello/hello-" version
+                                  ".tar.gz"))
+              (sha256
+               (base32
+                "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
+    (build-system gnu-build-system)
+    (synopsis "Hello, Guix world: An example custom Guix package")
+    (description
+     "GNU Hello prints the message \"Hello, world!\" and then exits.  It
+serves as an example of standard GNU coding practices.  As such, it supports
+command-line arguments, multiple languages, and so on.")
+    (home-page "https://www.gnu.org/software/hello/")
+    (license gpl3+)))
+@end example
+
+Note that we have assigned the package value to an exported variable name with
+@code{define-public}.  This is effectively assigning the package to the @code{my-hello}
+variable so that it can be referenced, among other as dependency of other
+packages.
+
+If you use @code{guix package --install-from-file=my-hello.scm} on the above file, it
+will fail because the last expression, @code{define-public}, does not return a
+package.  If you want to use @code{define-public} in this use-case nonetheless, make
+sure the file ends with an evaluation of @code{my-hello}:
+
+@example
+; ...
+(define-public my-hello
+  ; ...
+  )
+
+my-hello
+@end example
+
+This last example is not very typical.
+
+Now @samp{my-hello} should be part of the package collection like all other official
+packages.  You can verify this with:
+
+@example
+$ guix package --show=my-hello
+@end example
+
+@node Guix channels
+@subsubsection Guix channels
+
+Guix 0.16 features channels, which is very similar to @samp{GUIX_PACKAGE_PATH} but
+provides better integration and provenance tracking.  Channels are not
+necessarily local, they can be maintained as a public Git repository for
+instance.  Of course, several channels can be used at the same time.
+
+@xref{Channels,,, guix, GNU Guix Reference Manual} for setup details.
+
+@node Direct checkout hacking
+@subsubsection Direct checkout hacking
+
+Working directly on the Guix project is recommended: it reduces the friction
+when the time comes to submit your changes upstream to let the community benefit
+from your hard work!
+
+Unlike most software distributions, the Guix repository holds in one place both
+the tooling (including the package manager) and the package definitions.  This
+choice was made so that it would give developers the flexibility to modify the
+API without breakage by updating all packages at the same time.  This reduces
+development inertia.
+
+Check out the official @uref{https://git-scm.com/, Git} repository:
+
+@example
+$ git clone https://git.savannah.gnu.org/git/guix.git
+@end example
+
+In the rest of this article, we use @samp{$GUIX_CHECKOUT} to refer to the location of
+the checkout.
+
+
+Follow the instruction in the manual (@pxref{Contributing,,, guix, GNU Guix
+Reference Manual}) to set up the repository environment.
+
+Once ready, you should be able to use the package definitions from the
+repository environment.
+
+Feel free to edit package definitions found in @samp{$GUIX_CHECKOUT/gnu/packages}.
+
+The @samp{$GUIX_CHECKOUT/pre-inst-env} script lets you use @samp{guix} over the package
+collection of the repository.
+
+@itemize
+@item
+Search packages, such as Ruby:
+
+@example
+  $ cd $GUIX_CHECKOUT
+  $ ./pre-inst-env guix package --list-available=ruby
+      ruby    1.8.7-p374      out     gnu/packages/ruby.scm:119:2
+      ruby    2.1.6   out     gnu/packages/ruby.scm:91:2
+      ruby    2.2.2   out     gnu/packages/ruby.scm:39:2
+@end example
+
+@item
+Build a package, here Ruby version 2.1:
+
+@example
+  $ ./pre-inst-env guix build --keep-failed ruby@@2.1
+  /gnu/store/c13v73jxmj2nir2xjqaz5259zywsa9zi-ruby-2.1.6
+@end example
+
+@item
+Install it to your user profile:
+
+@example
+  $ ./pre-inst-env guix package --install ruby@@2.1
+@end example
+
+@item
+Check for common mistakes:
+
+@example
+  $ ./pre-inst-env guix lint ruby@@2.1
+@end example
+@end itemize
+
+Guix strives at maintaining a high packaging standard; when contributing to the
+Guix project, remember to
+
+@itemize
+@item
+follow the coding style (@pxref{Coding Style,,, guix, GNU Guix Reference Manual}),
+@item
+and review the check list from the manual (@pxref{Submitting Patches,,, guix, GNU Guix Reference Manual}).
+@end itemize
+
+Once you are happy with the result, you are welcome to send your contribution to
+make it part of Guix.  This process is also detailed in the manual.  (@pxref{Contributing,,, guix, GNU Guix Reference Manual})
+
+
+It's a community effort so the more join in, the better Guix becomes!
+
+@node Extended example
+@subsection Extended example
+
+The above "Hello World" example is as simple as it goes.  Packages can be more
+complex than that and Guix can handle more advanced scenarios.  Let's look at
+another, more sophisticated package (slightly modified from the source):
+
+@example
+(define-module (gnu packages version-control)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages tls))
+
+(define-public my-libgit2
+  (let ((commit "e98d0a37c93574d2c6107bf7f31140b548c6a7bf")
+        (revision "1"))
+    (package
+      (name "my-libgit2")
+      (version (git-version "0.26.6" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/libgit2/libgit2/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "17pjvprmdrx4h6bb1hhc98w9qi6ki7yl57f090n9kbhswxqfs7s3"))
+                (patches (search-patches "libgit2-mtime-0.patch"))
+                (modules '((guix build utils)))
+                (snippet '(begin
+                            ;; Remove bundled software.
+                            (delete-file-recursively "deps")
+                            #t))))
+      (build-system cmake-build-system)
+      (outputs '("out" "debug"))
+      (arguments
+       `(#:tests? #t                            ; Run the test suite (this is the default)
+         #:configure-flags '("-DUSE_SHA1DC=ON") ; SHA-1 collision detection
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-hardcoded-paths
+             (lambda _
+               (substitute* "tests/repo/init.c"
+                 (("#!/bin/sh") (string-append "#!" (which "sh"))))
+               (substitute* "tests/clar/fs.h"
+                 (("/bin/cp") (which "cp"))
+                 (("/bin/rm") (which "rm")))
+               #t))
+           ;; Run checks more verbosely.
+           (replace 'check
+             (lambda _ (invoke "./libgit2_clar" "-v" "-Q")))
+           (add-after 'unpack 'make-files-writable-for-tests
+               (lambda _ (for-each make-file-writable (find-files "." ".*")))))))
+      (inputs
+       `(("libssh2" ,libssh2)
+         ("http-parser" ,http-parser)
+         ("python" ,python-wrapper)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (propagated-inputs
+       ;; These two libraries are in 'Requires.private' in libgit2.pc.
+       `(("openssl" ,openssl)
+         ("zlib" ,zlib)))
+      (home-page "https://libgit2.github.com/")
+      (synopsis "Library providing Git core methods")
+      (description
+       "Libgit2 is a portable, pure C implementation of the Git core methods
+provided as a re-entrant linkable library with a solid API, allowing you to
+write native speed custom Git applications in any language with bindings.")
+      ;; GPLv2 with linking exception
+      (license license:gpl2))))
+@end example
+
+(In those cases were you only want to tweak a few fields from a package
+definition, you should rely on inheritance instead of copy-pasting everything.
+See below.)
+
+Let's discuss those fields in depth.
+
+@subsubsection @code{git-fetch} method
+
+Unlike the @code{url-fetch} method, @code{git-fetch} expects a @code{git-reference} which takes
+a Git repository and a commit.  The commit can be any Git reference such as
+tags, so if the @code{version} is tagged, then it can be used directly.  Sometimes
+the tag is prefixed with a @code{v}, in which case you'd use @code{(commit (string-append
+"v" version))}.
+
+To ensure that the source code from the Git repository is stored in a unique
+directory with a readable name we use @code{(file-name (git-file-name name
+version))}.
+
+Note that there is also a @code{git-version} procedure that can be used to derive the
+version when packaging programs for a specific commit.
+
+@subsubsection Snippets
+
+Snippets are quoted (i.e. non-evaluated) Scheme code that are a means of patching
+the source.  They are a Guix-y alternative to the traditional @samp{.patch} files.
+Because of the quote, the code in only evaluated when passed to the Guix daemon
+for building.
+
+There can be as many snippet as needed.
+
+Snippets might need additional Guile modules which can be imported from the
+@code{modules} field.
+
+@subsubsection Inputs
+
+First, a syntactic comment: See the quasi-quote / comma syntax?
+
+@example
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+@end example
+
+is equivalent to
+
+@example
+    (native-inputs
+     (list (list "pkg-config" pkg-config)))
+@end example
+
+You'll mostly see the former because it's shorter.
+
+There are 3 different input types.  In short:
+
+@table @asis
+@item native-inputs
+Required for building but not runtime -- installing a package
+through a substitute won't install these inputs.
+@item inputs
+Installed in the store but not in the profile, as well as being
+present at build time.
+@item propagated-inputs
+Installed in the store and in the profile, as well as
+being present at build time.
+@end table
+
+@xref{Package Reference,,, guix, GNU Guix Reference Manual} for more details.
+
+The distinction between the various inputs is important: if a dependency can be
+handled as an @emph{input} instead of a @emph{propagated input}, it should be done so, or
+else it "pollutes" the user profile for no good reason.
+
+For instance, a user installing a graphical program that depends on a
+command line tool might only be interested in the graphical part, so there is no
+need to force the command line tool into the user profile.  The dependency is a
+concern to the package, not to the user.  @emph{Inputs} make it possible to handle
+dependencies without bugging the user by adding undesired executable files (or
+libraries) to their profile.
+
+Same goes for @emph{native-inputs}: once the program is installed, build-time
+dependencies can be safely garbage-collected.
+It also matters when a substitute is available, in which case only the @emph{inputs}
+and @emph{propagated inputs} will be fetched: the @emph{native inputs} are not required to
+install a package from a substitute.
+
+@subsubsection Outputs
+
+Just like how a package can have multiple inputs, it can also produce multiple
+outputs.
+
+Each output corresponds to a separate directory in the store.
+
+The user can choose which output to install; this is useful to save space or
+to avoid polluting the user profile with unwanted executables or libraries.
+
+Output separation is optional.  When the @code{outputs} field is left out, the
+default and only output (the complete package) is referred to as @code{"out"}.
+
+Typical separate output names include @code{debug} and @code{doc}.
+
+It's advised to separate outputs only when you've shown it's worth it: if the
+output size is significant (compare with @code{guix size}) or in case the package is
+modular.
+
+@subsubsection Build system arguments
+
+The @code{arguments} is a keyword-value list used to configure the build process.
+
+The simplest argument @code{#:tests?} can be used to disable the test suite when
+building the package.  This is mostly useful when the package does not feature
+any test suite.  It's strongly recommended to keep the test suite on if there is
+one.
+
+Another  common argument is @code{:make-flags}, which specifies a list of flags to
+append when running make, as you would from the command line.  For instance, the
+following flags
+
+@example
+#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))
+                   "CC=gcc")
+@end example
+
+translate into
+
+@example
+$ make CC=gcc prefix=/gnu/store/...-<out>
+@end example
+
+This sets the C compiler to @code{gcc} and the @code{prefix} variable (the installation
+directory in Make parlance) to @code{(assoc-ref %outputs "out")}, which is a build-stage
+global variable pointing to the destination directory in the store (something like
+@samp{/gnu/store/...-my-libgit2-20180408}).
+
+Similarly, it's possible to set the "configure" flags.
+
+@example
+#:configure-flags '("-DUSE_SHA1DC=ON")
+@end example
+
+The @code{%build-inputs} variable is also generated in scope.  It's an association
+table that maps the input names to their store directories.
+
+The @code{phases} keyword lists the sequential steps of the build system.  Typically
+phases include @code{unpack}, @code{configure}, @code{build}, @code{install} and @code{check}.  To know
+more about those phases, you need to work out the appropriate build system
+definition in @samp{$GUIX_CHECKOUT/guix/build/gnu-build-system.scm}:
+
+@example
+(define %standard-phases
+  ;; Standard build phases, as a list of symbol/procedure pairs.
+  (let-syntax ((phases (syntax-rules ()
+                         ((_ p ...) `((p . ,p) ...)))))
+    (phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack
+            bootstrap
+            patch-usr-bin-file
+            patch-source-shebangs configure patch-generated-file-shebangs
+            build check install
+            patch-shebangs strip
+            validate-runpath
+            validate-documentation-location
+            delete-info-dir-file
+            patch-dot-desktop-files
+            install-license-files
+            reset-gzip-timestamps
+            compress-documentation)))
+@end example
+
+Or from the REPL:
+
+@example
+> (add-to-load-path "/path/to/guix/checkout")
+> ,module (guix build gnu-build-system)
+> (map first %standard-phases)
+(set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files install-license-files reset-gzip-timestamps compress-documentation)
+@end example
+
+If you want to know more about what happens during those phases, consult the
+associated procedures.
+
+For instance, as of this writing the definition of @code{unpack} for the GNU build
+system is
+
+@example
+(define* (unpack #:key source #:allow-other-keys)
+  "Unpack SOURCE in the working directory, and change directory within the
+source.  When SOURCE is a directory, copy it in a sub-directory of the current
+working directory."
+  (if (file-is-directory? source)
+      (begin
+        (mkdir "source")
+        (chdir "source")
+
+        ;; Preserve timestamps (set to the Epoch) on the copied tree so that
+        ;; things work deterministically.
+        (copy-recursively source "."
+                          #:keep-mtime? #t))
+      (begin
+        (if (string-suffix? ".zip" source)
+            (invoke "unzip" source)
+            (invoke "tar" "xvf" source))
+        (chdir (first-subdirectory "."))))
+  #t)
+@end example
+
+Note the @code{chdir} call: it changes the working directory to where the source was
+unpacked.
+Thus every phase following the @code{unpack} will use the source as a working
+directory, which is why we can directly work on the source files.
+That is to say, unless a later phase changes the working directory to something
+else.
+
+We modify the list of @code{%standard-phases} of the build system with the
+@code{modify-phases} macro as per the list of specified modifications, which may have
+the following forms:
+
+@itemize
+@item
+@code{(add-before PHASE NEW-PHASE PROCEDURE)}: Run @code{PROCEDURE} named @code{NEW-PHASE} before @code{PHASE}.
+@item
+@code{(add-after PHASE NEW-PHASE PROCEDURE)}: Same, but afterwards.
+@item
+@code{(replace PHASE PROCEDURE)}.
+@item
+@code{(delete PHASE)}.
+@end itemize
+
+The @code{PROCEDURE} supports the keyword arguments @code{inputs} and @code{outputs}.  Each
+input (whether @emph{native}, @emph{propagated} or not) and output directory is referenced
+by their name in those variables.  Thus @code{(assoc-ref outputs "out")} is the store
+directory of the main output of the package.  A phase procedure may look like
+this:
+
+@example
+(lambda* (#:key inputs outputs #:allow-other-keys)
+  (let (((bash-directory (assoc-ref inputs "bash"))
+         (output-directory (assoc-ref outputs "out"))
+         (doc-directory (assoc-ref outputs "doc"))
+  ; ...
+  #t)
+@end example
+
+The procedure must return @code{#t} on success.  It's brittle to rely on the return
+value of the last expression used to tweak the phase because there is no
+guarantee it would be a @code{#t}.  Hence the trailing @code{#t} to ensure the right value
+is returned on success.
+
+@subsubsection Code staging
+
+The astute reader may have noticed the quasi-quote and comma syntax in the
+argument field.  Indeed, the build code in the package declaration should not be
+evaluated on the client side, but only when passed to the Guix daemon.  This
+mechanism of passing code around two running processes is called @uref{https://arxiv.org/abs/1709.00833, code staging}.
+
+@subsubsection "Utils" functions
+
+When customizing @code{phases}, we often need to write code that mimics the
+equivalent system invocations (@code{make}, @code{mkdir}, @code{cp}, etc.) commonly used during
+regular "Unix-style" installations.
+
+Some like @code{chmod} are native to Guile.
+@xref{,,, guile, Guile reference manual} for a complete list.
+
+Guix provides additional helper functions which prove especially handy in the
+context of package management.
+
+Some of those functions can be found in
+@samp{$GUIX_CHECKOUT/guix/guix/build/utils.scm}.  Most of them mirror the behaviour
+of the traditional Unix system commands:
+
+@table @asis
+@item which
+Like the @samp{which} system command.
+@item find-files
+Akin to the @samp{find} system command.
+@item mkdir-p
+Like @samp{mkdir -p}, which creates all parents as needed.
+@item install-file
+Similar to @samp{install} when installing a file to a (possibly
+non-existing) directory.  Guile has @code{copy-file} which works
+like @samp{cp}.
+@item copy-recursively
+Like @samp{cp -r}.
+@item delete-file-recursively
+Like @samp{rm -rf}.
+@item invoke
+Run an executable.  This should be used instead of @code{system*}.
+@item with-directory-excursion
+Run the body in a different working directory,
+then restore the previous working directory.
+@item substitute*
+A "sed-like" function.
+@end table
+
+@subsubsection Module prefix
+
+The license in our last example needs a prefix: this is because of how the
+@code{license} module was imported in the package, as @code{#:use-module ((guix licenses)
+#:prefix license:)}.  The Guile module import mechanism
+(@pxref{Using Guile Modules,,, guile, Guile reference manual})
+gives the user full control over namespacing: this is needed to avoid
+clashes between, say, the
+@samp{zlib} variable from @samp{licenses.scm} (a @emph{license} value) and the @samp{zlib} variable
+from @samp{compression.scm} (a @emph{package} value).
+
+@node Other build systems
+@subsection Other build systems
+
+What we've seen so far covers the majority of packages using a build system
+other than the @code{trivial-build-system}.  The latter does not automate anything
+and leaves you to build everything manually.  This can be more demanding and we
+won't cover it here for now, but thankfully it is rarely necessary to fall back
+on this system.
+
+For the other build systems, such as ASDF, Emacs, Perl, Ruby and many more, the
+process is very similar to the GNU build system except for a few specialized
+arguments.
+
+Learn more about build systems in
+@itemize
+@item
+@uref{https://www.gnu.org/software/guix/manual/en/html_node/Build-Systems.html#Build-Systems, the manual, section 4.2 Build systems},
+@item
+the source code in the @samp{$GUIX_CHECKOUT/guix/build} and
+@samp{$GUIX_CHECKOUT/guix/build-system} directories.
+@end itemize
+
+@node Programmable and automated package definition
+@subsection Programmable and automated package definition
+
+We can't repeat it enough: having a full-fledged programming language at hand
+empowers us in ways that reach far beyond traditional package management.
+
+Let's illustrate this with some awesome features of Guix!
+
+@node Recursive importers
+@subsubsection Recursive importers
+
+You might find some build systems good enough that there is little to do at all
+to write a package, to the point that it becomes repetitive and tedious after a
+while.  A @emph{raison d'être} of computers is to replace human beings at those
+boring tasks.  So let's tell Guix to do this for us and create the package
+definition of an R package from CRAN (the output is trimmed for conciseness):
+
+@example
+$ guix import cran --recursive walrus
+
+(define-public r-mc2d
+    ; ...
+    (license gpl2+)))
+
+(define-public r-jmvcore
+    ; ...
+    (license gpl2+)))
+
+(define-public r-wrs2
+    ; ...
+    (license gpl3)))
+
+(define-public r-walrus
+  (package
+    (name "r-walrus")
+    (version "1.0.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "walrus" version))
+        (sha256
+          (base32
+            "1nk2glcvy4hyksl5ipq2mz8jy4fss90hx6cq98m3w96kzjni6jjj"))))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-ggplot2" ,r-ggplot2)
+        ("r-jmvcore" ,r-jmvcore)
+        ("r-r6" ,r-r6)
+        ("r-wrs2" ,r-wrs2)))
+    (home-page "https://github.com/jamovi/walrus")
+    (synopsis "Robust Statistical Methods")
+    (description
+      "This package provides a toolbox of common robust statistical
+tests, including robust descriptives, robust t-tests, and robust ANOVA.
+It is also available as a module for 'jamovi' (see
+<https://www.jamovi.org> for more information).  Walrus is based on the
+WRS2 package by Patrick Mair, which is in turn based on the scripts and
+work of Rand Wilcox.  These analyses are described in depth in the book
+'Introduction to Robust Estimation & Hypothesis Testing'.")
+    (license gpl3)))
+@end example
+
+The recursive importer won't import packages for which Guix already has package
+definitions, except for the very first.
+
+Not all applications can be packaged this way, only those relying on a select
+number of supported systems.  Read about the full list of importers in
+the guix import section of the manual
+(@pxref{Invoking guix import,,, guix, GNU Guix Reference Manual}).
+
+@node Automatic update
+@subsubsection Automatic update
+
+Guix can be smart enough to check for updates on systems it knows.  It can
+report outdated package definitions with
+
+@example
+$ guix refresh hello
+@end example
+
+In most cases, updating a package to a newer version requires little more than
+changing the version number and the checksum.  Guix can do that automatically as
+well:
+
+@example
+$ guix refresh hello --update
+@end example
+
+@node Inheritance
+@subsubsection Inheritance
+
+If you've started browsing the existing package definitions, you might have
+noticed that a significant number of them have a @code{inherit} field:
+
+@example
+(define-public adwaita-icon-theme
+  (package (inherit gnome-icon-theme)
+    (name "adwaita-icon-theme")
+    (version "3.26.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "17fpahgh5dyckgz7rwqvzgnhx53cx9kr2xw0szprc6bnqy977fi8"))))
+    (native-inputs
+     `(("gtk-encode-symbolic-svg" ,gtk+ "bin")))))
+@end example
+
+All unspecified fields are inherited from the parent package.  This is very
+convenient to create alternative packages, for instance with different source,
+version or compilation options.
+
+@node Getting help
+@subsection Getting help
+
+Sadly, some applications can be tough to package.  Sometimes they need a patch to
+work with the non-standard filesystem hierarchy enforced by the store.
+Sometimes the tests won't run properly.  (They can be skipped but this is not
+recommended.)  Other times the resulting package won't be reproducible.
+
+Should you be stuck, unable to figure out how to fix any sort of packaging
+issue, don't hesitate to ask the community for help.
+
+See the @uref{https://www.gnu.org/software/guix/contact/, Guix homepage} for information on the mailing lists, IRC, etc.
+
+@node Conclusion
+@subsection Conclusion
+
+This tutorial was a showcase of the sophisticated package management that Guix
+boasts.  At this point we have mostly restricted this introduction to the
+@code{gnu-build-system} which is a core abstraction layer on which more advanced
+abstractions are based.
+
+Where do we go from here?  Next we ought to dissect the innards of the build
+system by removing all abstractions, using the @code{trivial-build-system}: this
+should give us a thorough understanding of the process before investigating some
+more advanced packaging techniques and edge cases.
+
+Other features worth exploring are the interactive editing and debugging
+capabilities of Guix provided by the Guile REPL@.
+
+Those fancy features are completely optional and can wait; now is a good time
+to take a well-deserved break.  With what we've introduced here you should be
+well armed to package lots of programs.  You can get started right away and
+hopefully we will see your contributions soon!
+
+@node References
+@subsection References
+
+@itemize
+@item
+The @uref{https://www.gnu.org/software/guix/manual/en/html_node/Defining-Packages.html, package reference in the manual}
+
+@item
+@uref{https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org, Pjotr’s hacking guide to GNU Guix}
+
+@item
+@uref{https://www.gnu.org/software/guix/guix-ghm-andreas-20130823.pdf, "GNU Guix: Package without a scheme!"}, by Andreas Enge
+@end itemize
 
 @c *********************************************************************
 @node System Configuration
@@ -801,7 +1579,7 @@ reference.
 
 Guix provides a very useful feature that may be quite foreign to newcomers:
 @emph{profiles}.  They are a way to group package installations together and all users
-on a same system are free to use as many profiles as they want.
+on the same system are free to use as many profiles as they want.
 
 Whether you're a developer or not, you may find that multiple profiles bring you
 great power and flexibility.  While they shift the paradigm somewhat compared to
@@ -830,7 +1608,7 @@ shells, each of them running different profiles.
 
 @item
 Isolation: Programs from one profile will not use programs from the other, and
-they user can even install different versions of the same programs to the two
+the user can even install different versions of the same programs to the two
 profiles without conflict.
 
 @item
@@ -840,8 +1618,10 @@ This makes multiple profiles storage-efficient.
 @item
 Reproducible: when used with declarative manifests, a profile can be fully
 specified by the Guix commit that was active when it was set up.  This means
-that the exact same profile can be @uref{https://guix.gnu.org/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/, set up anywhere, anytime}, with just the
-commit information.  See the section on @ref{Reproducible profiles}.
+that the exact same profile can be
+@uref{https://guix.gnu.org/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/,
+set up anywhere and anytime}, with just the commit information.  See the
+section on @ref{Reproducible profiles}.
 
 @item
 Easier upgrades and maintenance: Multiple profiles make it easy to keep
@@ -994,6 +1774,14 @@ You can roll-back to any generation of a given profile:
 guix package -p "$GUIX_EXTRA_PROFILES"/my-project/my-project --switch-generations=17
 @end example
 
+Finally, if you want to switch to a profile without inheriting from the
+current environment, you can activate it from an empty shell:
+
+@example
+env -i $(which bash) --login --noprofile --norc
+. my-project/etc/profile
+@end example
+
 @node Required packages
 @subsection Required packages
 
@@ -1012,7 +1800,7 @@ the profile is loaded, you've got two options:
 @item
 Either export the variable manually, e.g.
 @example
-export MANPATH=/path/to/profile$@{MANPATH:+:@}$MANPATH"
+export MANPATH=/path/to/profile$@{MANPATH:+:@}$MANPATH
 @end example
 
 @item
diff --git a/doc/guix.texi b/doc/guix.texi
index a934626e5a..f6dcb2ac63 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3666,6 +3666,21 @@ descriptions, and deploys it.  Source code is downloaded from a
 @uref{https://git-scm.com, Git} repository, by default the official
 GNU@tie{}Guix repository, though this can be customized.
 
+Specifically, @command{guix pull} downloads code from the @dfn{channels}
+(@pxref{Channels}) specified by one of the followings, in this order:
+
+@enumerate
+@item
+the @option{--channels} option;
+@item
+the user's @file{~/.config/guix/channels.scm} file;
+@item
+the system-wide @file{/etc/guix/channels.scm} file;
+@item
+the built-in default channels specified in the @code{%default-channels}
+variable.
+@end enumerate
+
 On completion, @command{guix package} will use packages and package
 versions from this just-retrieved copy of Guix.  Not only that, but all
 the Guix commands and Scheme modules will also be taken from that latest
@@ -3763,7 +3778,8 @@ configuration in the @file{~/.config/guix/channels.scm} file or using the
 @item --channels=@var{file}
 @itemx -C @var{file}
 Read the list of channels from @var{file} instead of
-@file{~/.config/guix/channels.scm}.  @var{file} must contain Scheme code that
+@file{~/.config/guix/channels.scm} or @file{/etc/guix/channels.scm}.
+@var{file} must contain Scheme code that
 evaluates to a list of channel objects.  @xref{Channels}, for more
 information.
 
@@ -22378,9 +22394,69 @@ The port to run mpd on.
 The address that mpd will bind to.  To use a Unix domain socket,
 an absolute path can be specified here.
 
+@item @code{outputs} (default: @code{"(list (mpd-output))"})
+The audio outputs that MPD can use.  By default this is a single output using pulseaudio.
+
 @end table
 @end deftp
 
+@deftp {Data Type} mpd-output
+Data type representing an @command{mpd} audio output.
+
+@table @asis
+@item @code{name} (default: @code{"MPD"})
+The name of the audio output.
+
+@item @code{type} (default: @code{"pulse"})
+The type of audio output.
+
+@item @code{enabled?} (default: @code{#t})
+Specifies whether this audio output is enabled when MPD is started.  By
+default, all audio outputs are enabled.  This is just the default
+setting when there is no state file; with a state file, the previous
+state is restored.
+
+@item @code{tags?} (default: @code{#t})
+If set to @code{#f}, then MPD will not send tags to this output.  This
+is only useful for output plugins that can receive tags, for example the
+@code{httpd} output plugin.
+
+@item @code{always-on?} (default: @code{#f})
+If set to @code{#t}, then MPD attempts to keep this audio output always
+open. This may be useful for streaming servers, when you don’t want to
+disconnect all listeners even when playback is accidentally stopped.
+
+@item @code{mixer-type}
+This field accepts a symbol that specifies which mixer should be used
+for this audio output: the @code{hardware} mixer, the @code{software}
+mixer, the @code{null} mixer (allows setting the volume, but with no
+effect; this can be used as a trick to implement an external mixer
+External Mixer) or no mixer (@code{none}).
+
+@item @code{extra-options} (default: @code{'()"})
+An association list of option symbols to string values to be appended to
+the audio output configuration.
+
+@end table
+@end deftp
+
+The following example shows a configuration of @code{mpd} that provides
+an HTTP audio streaming output.
+
+@lisp
+(service mpd-service-type
+         (mpd-configuration
+           (outputs
+             (list (mpd-output
+                     (name "streaming")
+                     (type "httpd")
+                     (mixer-type 'null)
+                     (extra-options
+                      `((encoder . "vorbis")
+                        (port    . "8080"))))))))
+@end lisp
+
+
 @node Virtualization Services
 @subsection Virtualization services
 
diff --git a/etc/news.scm b/etc/news.scm
index 80f7ba522c..5bcd075057 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -9,6 +9,22 @@
 (channel-news
  (version 0)
 
+ (entry (commit "49af34cfac89d384c46269bfd9388b2c73b1220a")
+        (title (en "@command{guix pull} now honors
+@file{/etc/guix/channels.scm}")
+               (fr "@command{guix pull} lit maintenant
+@file{/etc/guix/channels.scm}"))
+        (body
+         (en "The @command{guix pull} command will now read the
+@file{/etc/guix/channels.scm} file if it exists and if the per-user
+@file{~/.config/guix/channels.scm} is not present.  This allows administrators
+of multi-user systems to define site-wide defaults.")
+         (fr "La commande @command{guix pull} lira maintenant le fichier
+@file{/etc/guix/channels.scm} s'il existe et si le fichier
+@file{~/.config/guix/channels.scm} par utilisateur·rice n'est pas présent.
+Cela permet aux personnes administrant des systèmes multi-utilisateurs de
+définir les canaux par défaut.")))
+
  (entry (commit "81c580c8664bfeeb767e2c47ea343004e88223c7")
         (title (en "Insecure @file{/var/guix/profiles/per-user} permissions (CVE-2019-18192)")
                (de "Sicherheitslücke in @file{/var/guix/profiles/per-user}-Berechtigungen (CVE-2019-18192)")
diff --git a/gnu/local.mk b/gnu/local.mk
index 683bcc5f45..5dab77f899 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -974,9 +974,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch        \
   %D%/packages/patches/hplip-remove-imageprocessor.patch	\
   %D%/packages/patches/hydra-disable-darcs-test.patch		\
+  %D%/packages/patches/icecat-gnuzilla-fixes.patch			\
   %D%/packages/patches/icecat-makeicecat.patch			\
-  %D%/packages/patches/icecat-default-search-ddg.patch		\
-  %D%/packages/patches/icecat-disable-sync.patch		\
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch	\
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch	\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
@@ -1066,7 +1065,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmpeg2-global-symbol-test.patch	\
   %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch		\
   %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
-  %D%/packages/patches/libreoffice-boost.patch			\
   %D%/packages/patches/libreoffice-icu.patch			\
   %D%/packages/patches/libreoffice-glm.patch			\
   %D%/packages/patches/libsndfile-armhf-type-checks.patch	\
@@ -1448,9 +1446,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-panel-plugins.patch		\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xinetd-fix-fd-leak.patch			\
-  %D%/packages/patches/xinetd-CVE-2013-4342.patch		\
-  %D%/packages/patches/xorriso-no-partition-table-in-inner-efi.patch \
-  %D%/packages/patches/xorriso-no-mbr-in-inner-efi.patch
+  %D%/packages/patches/xinetd-CVE-2013-4342.patch
 
 MISC_DISTRO_FILES =				\
   %D%/packages/ld-wrapper.in
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 82f1bb4eb8..08dac76a41 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1128,7 +1128,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.28p1")
+    (version "1.8.29")
     (source (origin
               (method url-fetch)
               (uri
@@ -1138,7 +1138,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "09xhx2k7j6wlqs9bl7snamd4k6lkyv9ycjwdspgbbqrimy25mfi3"))
+                "0z4wyadh9cks17gdpfgx4kvbrlnyb6nai2sd6chk7qh4jsngylyf"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1184,6 +1184,12 @@ system administrator.")
                (("\\$\\(DESTDIR\\)\\$\\(vardir\\)")
                 ;; Don't try to create /var/db/sudo.
                 "$(TMPDIR)/dummy"))
+
+             ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is
+             ;; not the task of the build system, and fails.
+             (substitute* "plugins/sudoers/Makefile.in"
+               (("^pre-install:" match)
+                (string-append match "\ndisabled-" match)))
              #t)))
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 828a0fc748..6a9784f551 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -483,7 +483,7 @@ fast arithmetic.")
 (define-public arb
   (package
     (name "arb")
-    (version "2.16.0")
+    (version "2.17.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -492,7 +492,7 @@ fast arithmetic.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0478671wfwy3gl26sbxh1jq1ih36z4k72waa8y2y2lvn649gb7cd"))))
+                "05lpy3hkl5f8ik19aw40cqydrb932xaf2n8hbq9ib5dnk7f010p1"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("flint" ,flint)))               ; flint.h is included by arf.h
@@ -508,8 +508,8 @@ fast arithmetic.")
                    (flint (assoc-ref inputs "flint"))
                    (gmp (assoc-ref inputs "gmp"))
                    (mpfr (assoc-ref inputs "mpfr")))
-               ;; do not pass "--enable-fast-install", which makes the
-               ;; homebrew configure process fail
+               ;; Do not pass "--enable-fast-install", which makes the
+               ;; homebrew configure process fail.
                (invoke "./configure"
                        (string-append "--prefix=" out)
                        (string-append "--with-flint=" flint)
@@ -522,7 +522,7 @@ arithmetic.  It supports efficient high-precision computation with
 polynomials, power series, matrices and special functions over the
 real and complex numbers, with automatic, rigorous error control.")
     (license license:lgpl2.1+)
-    (home-page "http://fredrikj.net/arb/")))
+    (home-page "http://arblib.org")))
 
 (define-public python-flint
   (package
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 110903e2fe..88b5696a9b 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1107,7 +1107,7 @@ follower.")
 (define-public fluidsynth
   (package
     (name "fluidsynth")
-    (version "2.0.7")
+    (version "2.0.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1116,7 +1116,7 @@ follower.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1h1dj3wmjwzny2hgr41k3p67w4kxvzn365kkqwyfd6yk0v3rahic"))))
+                "1s32c0jxjica2agy0mp36vgvpgj2vl5i5zvacd6igmbam0x4gs7c"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; no check target
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 416186409c..6b6998b323 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -416,7 +416,7 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.1.8")
+    (version "4.1.9")
     (source
      (origin
        (method git-fetch)
@@ -425,7 +425,7 @@ desktops.")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1mx59mazfmd5yaqdgb6cm8hr5sbp2xgzz3y3yipq1fwq85dj3r5w"))))
+        (base32 "044r3y3vvm2rqagmwlqlhvb4kkyqpkmpnlhv68hzkl3w5bvf8zl8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index ee713db0cf..c6e3c697e6 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -33,6 +33,7 @@
   #:use-module ((guix derivations)
                 #:select (derivation derivation-input derivation->output-path))
   #:use-module ((guix utils) #:select (gnu-triplet->nix-system))
+  #:use-module ((guix gexp) #:select (lower-object))
   #:use-module (guix memoization)
   #:use-module (guix i18n)
   #:use-module (srfi srfi-1)
@@ -167,19 +168,22 @@ for system '~a'")
       ("patch" ,%bootstrap-coreutils&co)))
 
   (let ((orig-method (origin-method source)))
-    (origin (inherit source)
-      (method (cond ((eq? orig-method url-fetch)
-                     (boot url-fetch))
-                    (else orig-method)))
-      (patch-guile %bootstrap-guile)
-      (patch-inputs %bootstrap-patch-inputs)
-
-      ;; Patches can be origins as well, so process them.
-      (patches (map (match-lambda
-                     ((? origin? patch)
-                      (bootstrap-origin patch))
-                     (patch patch))
-                    (origin-patches source))))))
+    (if (or (not (null? (origin-patches source)))
+            (origin-snippet source))
+        (origin (inherit source)
+                (method (if (eq? orig-method url-fetch)
+                            (boot url-fetch)
+                            orig-method))
+                (patch-guile %bootstrap-guile)
+                (patch-inputs %bootstrap-patch-inputs)
+
+                ;; Patches can be origins as well, so process them.
+                (patches (map (match-lambda
+                                ((? origin? patch)
+                                 (bootstrap-origin patch))
+                                (patch patch))
+                              (origin-patches source))))
+        source)))
 
 (define* (package-from-tarball name source program-to-test description
                                #:key snippet)
@@ -345,8 +349,8 @@ or false to signal an error."
                     #:allow-other-keys)
   (define (->store file)
     (run-with-store store
-      (origin->derivation (bootstrap-executable file system)
-                          system)))
+      (lower-object (bootstrap-executable file system)
+                    system)))
 
   (let* ((tar   (->store "tar"))
          (xz    (->store "xz"))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index ef4ce022e4..9c2b11c047 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
@@ -155,17 +155,14 @@ libcdio.")
 (define-public xorriso
   (package
     (name "xorriso")
-    (version "1.5.0")
+    (version "1.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/xorriso/xorriso-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0aq6lvlwlkxz56l5sbvgycr6j5c82ch2bv6zrnc2345ibfpafgx9"))
-             (patches
-              (search-patches "xorriso-no-partition-table-in-inner-efi.patch"
-                              "xorriso-no-mbr-in-inner-efi.patch"))))
+               "1rqpzj95f70jfwpn4lamasfgqpizjsipz12aprdhri777b4zas9v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -815,14 +812,14 @@ DVD-RW, DVD-R, DVD-R/DL, BD-R, and BD-RE.")
 (define-public libisofs
   (package
     (name "libisofs")
-    (version "1.5.0")
+    (version "1.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://files.libburnia-project.org/releases/"
                                  "libisofs-" version ".tar.gz"))
              (sha256
               (base32
-               "001l3akf3wb6msl9man776w560iqyvsbwwzs7d7y7msx13irspys"))))
+               "002mcyqwg625a8hqvsrmgm26mhhfwj0j7rahfhsqirmk02b16npg"))))
     (build-system gnu-build-system)
     (inputs
      `(("zlib" ,zlib)
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 964980ef88..b49ac0f7c1 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -47,8 +47,8 @@
   #:use-module (guix build-system gnu))
 
 (define-public cuirass
-  (let ((commit "80b6e89a7b2e9a6f9dee26dcf22277970930039f")
-        (revision "25"))
+  (let ((commit "e20ff86d97f7dd92dad140b5919e3cbdf2fb1ce6")
+        (revision "26"))
     (package
       (name "cuirass")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -60,7 +60,7 @@
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "0m7g7wqa1l8gab8pcyi43a6w6rxhaqbpsrwlnadwsds1b95x9bka"))))
+                  "1c3rcfmx7vm13x3nid9xbl18rrqljh5vb71qxps4yqid75br4hrb"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fc5d40186c..1509ff5d0d 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -9556,14 +9556,13 @@ maps.")
 (define-public r-tidytree
   (package
     (name "r-tidytree")
-    (version "0.2.8")
+    (version "0.2.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidytree" version))
        (sha256
-        (base32
-         "1hkddl8kj1g01dy7xiracx81f6b405b3ga2qp4wlrl552b9xxpby"))))
+        (base32 "1l9rk71dzlwg8736l0g4rdlq3pghxkfzmlxyln8y4bxx7ym51i6g"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
@@ -10879,14 +10878,13 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
 (define-public r-spam
   (package
     (name "r-spam")
-    (version "2.3-0.1")
+    (version "2.3-0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spam" version))
        (sha256
-        (base32
-         "0mas2ra7d5f9ccwxwsvxls3dz53prpf59hi2a0rvc347wbm6540b"))))
+        (base32 "0czmzwhvcs0shm1asvphhz366df3n7vrlls4cfpq5b3i19fak3w4"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dotcall64" ,r-dotcall64)))
@@ -11262,14 +11260,13 @@ regression coefficients can be conducted via jackknifing.")
 (define-public r-huge
   (package
     (name "r-huge")
-    (version "1.3.3")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "huge" version))
        (sha256
-        (base32
-         "18f8w4hdp9fdi2k5ip6fnrn5z47w4ybgxs2m6a7jdvd2v4wfdr69"))))
+        (base32 "07n3j1va2z4v30rj22cww72khgzbz2xsp0yc0qswlrwyxi4my5i3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)
@@ -15547,13 +15544,13 @@ effect size.")
 (define-public r-rgdal
   (package
     (name "r-rgdal")
-    (version "1.4-6")
+    (version "1.4-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgdal" version))
        (sha256
-        (base32 "0lj1dax56dxxsj1hindxcvgz169p9dxd0y4wjypbyr01nja8rz4d"))))
+        (base32 "05rvqy8lr2c3phaylmc4g5761208b0xrmgwn9c4a60x7p251dzjs"))))
     (properties `((upstream-name . "rgdal")))
     (build-system r-build-system)
     (inputs
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 51d9363b55..b4bb599dcc 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -24,24 +24,13 @@
   #:use-module (guix build-system cargo)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
-  #:use-module (guix packages)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages gcc)
-  #:use-module (gnu packages jemalloc)
-  #:use-module (gnu packages llvm)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages ssh)
-  #:use-module (gnu packages tls)
-  #:use-module (gnu packages version-control)
-  #:use-module (gnu packages web))
+  #:use-module (guix packages))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
 ;;;
 
-(define-public rust-adler32
+(define-public rust-adler32-1.0
   (package
     (name "rust-adler32")
     (version "1.0.3")
@@ -50,22 +39,21 @@
         (method url-fetch)
         (uri (crate-uri "adler32" version))
         (file-name
-          (string-append name "-" version ".tar.gz"))
+          (string-append name "-" version ".crate"))
         (sha256
           (base32
             "0p7fxlnks9l7p7rwfqi7aqgnk2bps5zc0rjiw00mdw19nnbjjlky"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs (("rust-rand" ,rust-rand))))
     (home-page "https://github.com/remram44/adler32-rs")
     (synopsis "Implementation of the Adler32 rolling hash algorithm")
     (description
      "This library is an implementation of the Adler32 rolling hash algorithm in
 the Rust programming language.")
+    (properties '((hidden? . #t)))
     (license (list license:bsd-3
                    license:zlib))))
 
-(define-public rust-ansi-term
+(define-public rust-ansi-term-0.11
   (package
     (name "rust-ansi-term")
     (version "0.11.0")
@@ -73,31 +61,20 @@ the Rust programming language.")
       (origin
         (method url-fetch)
         (uri (crate-uri "ansi_term" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
-           ;; https://github.com/ogham/rust-ansi-term/commit/5ff6af6f38790abcb3aafee1239286c10ef69576.patch
-           (lambda _
-             (substitute* "src/debug.rs"
-               (("^ *Blue") "        Blue,")
-               (("underline: false") "underline: false,"))
-             #t)))))
     (home-page "https://github.com/ogham/rust-ansi-term")
     (synopsis "Library for ANSI terminal colours and styles")
     (description
      "This is a library for controlling colours and formatting, such as red bold
 text or blue underlined text, on ANSI terminals.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-antidote
+(define-public rust-antidote-1.0
   (package
     (name "rust-antidote")
     (version "1.0.0")
@@ -105,7 +82,7 @@ text or blue underlined text, on ANSI terminals.")
       (origin
         (method url-fetch)
         (uri (crate-uri "antidote" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "19g2sw2qa2ibnh4x7j1snk46593jgx6y7rnvva496ynq61af5z9l"))))
@@ -115,10 +92,11 @@ text or blue underlined text, on ANSI terminals.")
     (description
     "These types expose identical APIs to the standard library @code{Mutex} and
 @code{RwLock} except that they do not return @code{PoisonError}s.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-atty
+(define-public rust-atty-0.2
   (package
     (name "rust-atty")
     (version "0.2.13")
@@ -126,34 +104,30 @@ text or blue underlined text, on ANSI terminals.")
       (origin
         (method url-fetch)
         (uri (crate-uri "atty" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "140sswp1bwqwc4zk80bxkbnfb3g936hgrb77g9g0k1zcld3wc0qq"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))
-       #:tests? #f)) ; tests fail in our sandbox
     (home-page "https://github.com/softprops/atty")
     (synopsis "A simple interface for querying atty")
     (description
      "This package provides a simple interface for querying atty.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-autocfg
+(define-public rust-autocfg-0.1
   (package
     (name "rust-autocfg")
-    (version "0.1.5")
+    (version "0.1.7")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "autocfg" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0asl6fnc35yk5l2rxwhp25v128jgm45dp754h9z8x51b6n90w4r2"))))
+          "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/cuviper/autocfg")
     (synopsis "Automatic cfg for Rust compiler features")
@@ -161,10 +135,11 @@ text or blue underlined text, on ANSI terminals.")
 code based on compiler support.  Code snippets are dynamically tested to see
 if the @code{rustc} will accept them, rather than hard-coding specific version
 support.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-backtrace-sys
+(define-public rust-backtrace-sys-0.1
   (package
     (name "rust-backtrace-sys")
     (version "0.1.31")
@@ -172,28 +147,20 @@ support.")
       (origin
         (method url-fetch)
         (uri (crate-uri "backtrace-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0as2pk77br4br04daywhivpi1ixxb8y2c7f726kj849dxys31a42"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-compiler-builtins"
-         ,rust-compiler-builtins)
-        ("rust-libc" ,rust-libc)
-        ("rust-rustc-std-workspace-core"
-         ,rust-rustc-std-workspace-core))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc))))
     (home-page "https://github.com/rust-lang/backtrace-rs")
     (synopsis "Bindings to the libbacktrace gcc library")
     (description
      "This package provides bindings to the libbacktrace gcc library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-base-x
+(define-public rust-base-x-0.2
   (package
     (name "rust-base-x")
     (version "0.2.5")
@@ -201,22 +168,18 @@ support.")
       (origin
         (method url-fetch)
         (uri (crate-uri "base-x" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0hv4y5cdhv6bk0ghk2434clw8v4mmk5cc9lsh6qrpri92zlfmx3n"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-bencher" ,rust-bencher)
-        ("rust-json" ,rust-json)
-        ("rust-rand" ,rust-rand-0.3))))
     (home-page "https://github.com/OrKoN/base-x-rs")
     (synopsis "Encode/decode any base")
     (description "This library provides for encoding and decoding any base.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-bencher
+(define-public rust-bencher-0.1
   (package
     (name "rust-bencher")
     (version "0.1.5")
@@ -224,7 +187,7 @@ support.")
       (origin
         (method url-fetch)
         (uri (crate-uri "bencher" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1x8p2xblgqssay8cdykp5pkfc0np0jk5bs5cx4f5av097aav9zbx"))))
@@ -235,10 +198,11 @@ support.")
 benchmark runner to Rust stable releases.  Supports running benchmarks and
 filtering based on the name.  Benchmark execution works exactly the same way
 and no more (caveat: black_box is still missing!).")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-bitflags
+(define-public rust-bitflags-1
   (package
     (name "rust-bitflags")
     (version "1.1.0")
@@ -246,7 +210,7 @@ and no more (caveat: black_box is still missing!).")
       (origin
         (method url-fetch)
         (uri (crate-uri "bitflags" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1zc1qb1hwsnl2d8rhzicsv9kqd5b2hwbrscrcfw5as4sfr35659x"))))
@@ -255,10 +219,11 @@ and no more (caveat: black_box is still missing!).")
     (synopsis "Macro to generate structures which behave like bitflags")
     (description "This package provides a macro to generate structures which
 behave like a set of bitflags.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-blas-sys
+(define-public rust-blas-sys-0.7
   (package
     (name "rust-blas-sys")
     (version "0.7.1")
@@ -266,21 +231,20 @@ behave like a set of bitflags.")
       (origin
         (method url-fetch)
         (uri (crate-uri "blas-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0h14zjycwc76v15h8qll9z1xiryvmpvsb5gam97pqpdjrrwv5c8k"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
     (home-page "https://github.com/blas-lapack-rs/blas-sys")
     (synopsis "Bindings to BLAS (Fortran)")
     (description
      "Ths package provides bindings to BLAS (Fortran).")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-cargon
+(define-public rust-cargon-0.0
   (package
     (name "rust-cargon")
     (version "0.0.1")
@@ -288,22 +252,20 @@ behave like a set of bitflags.")
       (origin
         (method url-fetch)
         (uri (crate-uri "cargon" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1cszlab7jk736p0lb50ag4l9nv72m7j41bwrmygl0lr4iz0350w2"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-gcc" ,rust-gcc))))
     (home-page "https://github.com/bryant/argon2rs")
     (synopsis "Thin wrapper around the Argon2 C library")
     (description
      "This package provides a thin wrapper around the Argon2 C library.  It is
 used in argon2rs' bench suite.")
+    (properties '((hidden? . #t)))
     (license license:wtfpl2)))
 
-(define-public rust-cblas-sys
+(define-public rust-cblas-sys-0.1
   (package
     (name "rust-cblas-sys")
     (version "0.1.4")
@@ -311,21 +273,20 @@ used in argon2rs' bench suite.")
       (origin
         (method url-fetch)
         (uri (crate-uri "cblas-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0rgsn3klhhh09d8qf3b87zl4rwk93l2g0qzh9hhb0lff5kcfrzmn"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
     (home-page "https://github.com/blas-lapack-rs/cblas-sys")
     (synopsis "Bindings to CBLAS (C)")
     (description
      "The package provides bindings to CBLAS (C).")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-cc
+(define-public rust-cc-1.0
   (package
     (name "rust-cc")
     (version "1.0.41")
@@ -333,59 +294,44 @@ used in argon2rs' bench suite.")
       (origin
         (method url-fetch)
         (uri (crate-uri "cc" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1zxzd559dbbf1iwdzmkj7czapzccs17kqqmsj9ayijpdix5rrbld"))))
     (build-system cargo-build-system)
-    (arguments
-     `(;#:cargo-inputs
-       ;(("rust-rayon" ,rust-rayon))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-optional-deps
-           (lambda _
-             (substitute* "Cargo.toml.orig"
-               ((".*optional.*") "\n")
-               ((".*features.*") "")
-               ((".*parallel.*") ""))
-             (delete-file "Cargo.toml")
-             (copy-file "Cargo.toml.orig" "Cargo.toml")
-             #t)))
-       #:tests? #f)) ; Tests require cc-test from git repo.
     (home-page "https://github.com/alexcrichton/cc-rs")
     (synopsis "Invoke the native C compiler")
     (description
      "This package provides a build-time dependency for Cargo build scripts to
 assist in invoking the native C compiler to compile native C code into a static
 archive to be linked into Rustcode.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-cfg-if
+(define-public rust-cfg-if-0.1
   (package
     (name "rust-cfg-if")
-    (version "0.1.9")
+    (version "0.1.10")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "cfg-if" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0csygklgz3ybpr0670rkip49zh76m43ar3k7xgypkzbzrwycx1ml"))))
+          "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/alexcrichton/cfg-if")
     (synopsis "Define an item depending on parameters")
     (description "This package provides a macro to ergonomically define an item
 depending on a large number of #[cfg] parameters.  Structured like an
 @code{if-else} chain, the first matching branch is the item that gets emitted.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-clang-sys
+(define-public rust-clang-sys-0.28
   (package
     (name "rust-clang-sys")
     (version "0.28.1")
@@ -393,64 +339,65 @@ depending on a large number of #[cfg] parameters.  Structured like an
       (origin
         (method url-fetch)
         (uri (crate-uri "clang-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0ls8zcqi5bmmrvrk3b6r1ym4wlivinbv590d2dvg2xn9f44mbpl1"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-glob" ,rust-glob)
-        ("rust-libc" ,rust-libc)
-        ("rust-libloading" ,rust-libloading))
-       #:cargo-development-inputs
-       (("rust-glob" ,rust-glob))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-             #t)))))
-    (inputs
-     `(("libclang" ,clang)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;     (add-after 'unpack 'set-environmental-variable
+    ;       (lambda* (#:key inputs #:allow-other-keys)
+    ;         (let ((clang (assoc-ref inputs "libclang")))
+    ;           (setenv "LIBCLANG_PATH"
+    ;                   (string-append clang "/lib")))
+    ;         #t)))))
+    ;(inputs
+    ; `(("libclang" ,clang)))
     (home-page "https://github.com/KyleMayes/clang-sys")
     (synopsis "Rust bindings for libclang")
     (description
      "This package provides Rust bindings for @code{libclang}.")
+    (properties '((hidden? . #t)))
     (license license:asl2.0)))
 
 (define-public rust-clang-sys-0.26
   (package
-    (inherit rust-clang-sys)
+    (inherit rust-clang-sys-0.28)
     (name "rust-clang-sys")
     (version "0.26.4")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "clang-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1r50dwy5hj5gq07dn0qf8222d07qv0970ymx0j8n9779yayc3w3f"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-glob" ,rust-glob-0.2)
-        ("rust-libc" ,rust-libc)
-        ("rust-libloading" ,rust-libloading))
-       #:cargo-development-inputs
-       (("rust-glob" ,rust-glob-0.2))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-environmental-variable
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "libclang")))
-               (setenv "LIBCLANG_PATH"
-                       (string-append clang "/lib")))
-            #t)))))))
-
-(define-public rust-clicolors-control
+          "1r50dwy5hj5gq07dn0qf8222d07qv0970ymx0j8n9779yayc3w3f"))))))
+
+(define-public rust-clap-2
+  (package
+    (name "rust-clap")
+    (version "2.33.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clap" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1nf6ld3bims1n5vfzhkvcb55pdzh04bbhzf8nil5vvw05nxzarsh"))))
+    (build-system cargo-build-system)
+    (home-page "https://clap.rs/")
+    (synopsis "Command Line Argument Parser")
+    (description
+     "This package provides a simple to use, efficient, and full-featured
+Command Line Argument Parser.")
+    (properties '((hidden? . #t)))
+    (license license:expat)))
+
+(define-public rust-clicolors-control-1.0
   (package
     (name "rust-clicolors-control")
     (version "1.0.0")
@@ -458,25 +405,20 @@ depending on a large number of #[cfg] parameters.  Structured like an
       (origin
         (method url-fetch)
         (uri (crate-uri "clicolors-control" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1y80cgarxhrd1bz5yjm81r444v6flvy36aaxrrsac0yhfd6gvavk"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-atty" ,rust-atty)
-        ("rust-lazy-static" ,rust-lazy-static)
-        ("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/mitsuhiko/clicolors-control")
     (synopsis "Common utility library to control CLI colorization")
     (description
      "This package provides a common utility library to control CLI
 colorization.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-cloudabi
+(define-public rust-cloudabi-0.0
   (package
     (name "rust-cloudabi")
     (version "0.0.3")
@@ -484,21 +426,19 @@ colorization.")
       (origin
         (method url-fetch)
         (uri (crate-uri "cloudabi" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags))))
     (home-page "https://nuxi.nl/cloudabi/")
     (synopsis "Low level interface to CloudABI")
     (description
      "Low level interface to CloudABI.  Contains all syscalls and related types.")
+    (properties '((hidden? . #t)))
     (license license:bsd-2)))
 
-(define-public rust-cmake
+(define-public rust-cmake-0.1
   (package
     (name "rust-cmake")
     (version "0.1.42")
@@ -506,25 +446,24 @@ colorization.")
       (origin
         (method url-fetch)
         (uri (crate-uri "cmake" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0qkwibkvx5xjazvv9v8gvdlpky2jhjxvcz014nrixgzqfyv2byw1"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-cc" ,rust-cc))))
     (home-page "https://github.com/alexcrichton/cmake-rs")
     (synopsis "Rust build dependency for running cmake")
     (description
      "This package provides a build dependency for running @code{cmake} to build
 a native library.  The CMake executable is assumed to be @code{cmake} unless the
 CMAKE environmental variable is set.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
-(define-public rust-compiler-builtins
+(define-public rust-compiler-builtins-0.1
   (package
     (name "rust-compiler-builtins")
     (version "0.1.19")
@@ -532,27 +471,22 @@ CMAKE environmental variable is set.")
       (origin
         (method url-fetch)
         (uri (crate-uri "compiler_builtins" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1fpabpmg8paj4r5a37vmidh1jx1b7a6ilxm4s3xsxczx27ybjcjf"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-rustc-std-workspace-core"
-         ,rust-rustc-std-workspace-core))))
     (home-page "https://github.com/rust-lang-nursery/compiler-builtins")
     (synopsis "Compiler intrinsics used by the Rust compiler")
     (description
      "This package provides compiler intrinsics used by the Rust compiler.  This
 package is primarily useful when building the @code{core} crate yourself and you
 need compiler-rt intrinsics.")
-    (properties `((hidden? . #t)))
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-constant-time-eq
+(define-public rust-constant-time-eq-0.1
   (package
     (name "rust-constant-time-eq")
     (version "0.1.4")
@@ -560,7 +494,7 @@ need compiler-rt intrinsics.")
      (origin
        (method url-fetch)
        (uri (crate-uri "constant_time_eq" version))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
          "083icpr9xb72rrdxw3p4068dcspn6ai22jy7rhl2a8grfz448nlr"))))
@@ -571,9 +505,10 @@ need compiler-rt intrinsics.")
     (description
      "This package compares two equal-sized byte strings in constant time.
 It is inspired by the Linux kernel's @code{crypto_memneq}.")
+    (properties '((hidden? . #t)))
     (license license:cc0)))
 
-(define-public rust-core-foundation-sys
+(define-public rust-core-foundation-sys-0.6
   (package
     (name "rust-core-foundation-sys")
     (version "0.6.2")
@@ -581,7 +516,7 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "core-foundation-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0fzsw1j9g1x598yhwklg59l15hwzc0pyvs01w9fg2kin4598mjp7"))))
@@ -590,10 +525,11 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
     (synopsis "Bindings to Core Foundation for OS X")
     (description
      "Bindings to Core Foundation for OS X.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-curl-sys
+(define-public rust-curl-sys-0.4
   (package
     (name "rust-curl-sys")
     (version "0.4.20")
@@ -601,44 +537,34 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "curl-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "02542zmvl3fpdqf7ai4cqnamm4albx9j645dkjx5qr1myq8ax42y"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-libnghttp2-sys" ,rust-libnghttp2-sys)
-        ("rust-libz-sys" ,rust-libz-sys)
-        ("rust-openssl-sys" ,rust-openssl-sys)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-pkg-config" ,rust-pkg-config)
-        ("rust-openssl-src" ,rust-openssl-src)
-        ("rust-vcpkg" ,rust-vcpkg))
-        #:phases
-       (modify-phases %standard-phases
-        (add-after 'unpack 'find-openssl
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((openssl (assoc-ref inputs "openssl")))
-              (setenv "OPENSSL_DIR" openssl))
-            #t)))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("curl" ,curl)
-       ("nghttp2" ,nghttp2)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;    (add-after 'unpack 'find-openssl
+    ;      (lambda* (#:key inputs #:allow-other-keys)
+    ;        (let ((openssl (assoc-ref inputs "openssl")))
+    ;          (setenv "OPENSSL_DIR" openssl))
+    ;        #t)))))
+    ;(native-inputs
+    ; `(("pkg-config" ,pkg-config)))
+    ;(inputs
+    ; `(("curl" ,curl)
+    ;   ("nghttp2" ,nghttp2)
+    ;   ("openssl" ,openssl)
+    ;   ("zlib" ,zlib)))
     (home-page "https://github.com/alexcrichton/curl-rust")
     (synopsis "Native bindings to the libcurl library")
     (description
      "This package provides native bindings to the @code{libcurl} library.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-data-encoding
+(define-public rust-data-encoding-2.1
   (package
     (name "rust-data-encoding")
     (version "2.1.2")
@@ -646,7 +572,7 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "data-encoding" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "15xd6afhsjl08285piwczrafmckpp8i29padj8v12xhahshprx7l"))))
@@ -655,10 +581,11 @@ It is inspired by the Linux kernel's @code{crypto_memneq}.")
     (synopsis "Efficient and customizable data-encoding functions")
     (description
      "This library provides encodings for many different common cases, including
-hexadecimal, bas32, and base64.")
+hexadecimal, base32, and base64.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-defmac
+(define-public rust-defmac-0.2
   (package
     (name "rust-defmac")
     (version "0.2.0")
@@ -666,7 +593,7 @@ hexadecimal, bas32, and base64.")
       (origin
         (method url-fetch)
         (uri (crate-uri "defmac" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "01ff3jdmcc5waffkwllndnx5hsn414r7x1rq4ib73n7awsyzxkxv"))))
@@ -674,24 +601,25 @@ hexadecimal, bas32, and base64.")
     (home-page "https://github.com/bluss/defmac")
     (synopsis "Macro to define lambda-like macros inline")
     (description "A macro to define lambda-like macros inline.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-defmac-0.1
   (package
-    (inherit rust-defmac)
+    (inherit rust-defmac-0.2)
     (name "rust-defmac")
     (version "0.1.3")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "defmac" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
 
-(define-public rust-dirs
+(define-public rust-dirs-1.0
   (package
     (name "rust-dirs")
     (version "1.0.3")
@@ -699,15 +627,11 @@ hexadecimal, bas32, and base64.")
       (origin
         (method url-fetch)
         (uri (crate-uri "dirs" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "02vigc566z5i6n9wr2x8sch39qp4arn89xhhrh18fhpm3jfc0ygn"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/soc/dirs-rs")
     (synopsis "Abstractions for standard locations for various platforms")
     (description
@@ -716,9 +640,10 @@ platform-specific standard locations of directories for config, cache and other
 data on Linux, Windows, macOS and Redox by leveraging the mechanisms defined by
 the XDG base/user directory specifications on Linux, the Known Folder API on
 Windows, and the Standard Directory guidelines on macOS.")
+    (properties '((hidden? . #t)))
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-discard
+(define-public rust-discard-1.0
   (package
     (name "rust-discard")
     (version "1.0.4")
@@ -726,7 +651,7 @@ Windows, and the Standard Directory guidelines on macOS.")
       (origin
         (method url-fetch)
         (uri (crate-uri "discard" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1h67ni5bxvg95s91wgicily4ix7lcw7cq0a5gy9njrybaibhyb91"))))
@@ -736,9 +661,10 @@ Windows, and the Standard Directory guidelines on macOS.")
     (description "There are situations where you need to intentionally leak some
 memory but not other memory.  This package provides a discard trait which allows
 for intentionally leaking memory")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-doc-comment
+(define-public rust-doc-comment-0.3
   (package
     (name "rust-doc-comment")
     (version "0.3.1")
@@ -746,7 +672,7 @@ for intentionally leaking memory")
       (origin
         (method url-fetch)
         (uri (crate-uri "doc-comment" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "15rsqxgarfpb1yim9sbp9yfgj7p2dq6v51c6bq1a62paii9ylgcj"))))
@@ -755,9 +681,10 @@ for intentionally leaking memory")
     (synopsis "Macro to generate doc comments")
     (description "This package provides a way to generate doc comments
 from macros.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-dtoa
+(define-public rust-dtoa-0.4
   (package
     (name "rust-dtoa")
     (version "0.4.4")
@@ -765,7 +692,7 @@ from macros.")
       (origin
         (method url-fetch)
         (uri (crate-uri "dtoa" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0phbm7i0dpn44gzi07683zxaicjap5064w62pidci4fhhciv8mza"))))
@@ -774,24 +701,25 @@ from macros.")
     (synopsis "Fast functions for printing floating-point primitives")
     (description "This crate provides fast functions for printing
 floating-point primitives to an @code{io::Write}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-dtoa-0.2
   (package
-    (inherit rust-dtoa)
+    (inherit rust-dtoa-0.4)
     (name "rust-dtoa")
     (version "0.2.2")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "dtoa" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0g96cap6si1g6wi62hsdk2fnj3sf5vd4i97zj6163j8hhnsl3n0d"))))))
 
-(define-public rust-fallible-iterator
+(define-public rust-fallible-iterator-0.2
   (package
     (name "rust-fallible-iterator")
     (version "0.2.0")
@@ -799,7 +727,7 @@ floating-point primitives to an @code{io::Write}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "fallible-iterator" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1xq759lsr8gqss7hva42azn3whgrbrs2sd9xpn92c5ickxm1fhs4"))))
@@ -810,10 +738,11 @@ floating-point primitives to an @code{io::Write}.")
 crate provides implementations for @code{Box}, @code{Vec}, @code{BTreeMap}, and
 @code{BTreeSet}.  If the @code{std} feature is enabled, this crate additionally
 provides implementations for @code{HashMap} and @code{HashSet}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-filetime
+(define-public rust-filetime-0.2
   (package
     (name "rust-filetime")
     (version "0.2.7")
@@ -821,19 +750,11 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "filetime" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0sflihq2l77xjrza7yjalnxsc7dxzg25rhzcfbd9vmyfah5kimvb"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if)
-        ("rust-libc" ,rust-libc)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))))
     (home-page "https://github.com/alexcrichton/filetime")
     (synopsis "Platform-agnostic accessors of timestamps in File metadata")
     (description
@@ -842,10 +763,11 @@ various timestamps of files in Rust.  This library takes into account
 cross-platform differences in terms of where the timestamps are located, what
 they are called, and how to convert them into a platform-independent
 representation.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-findshlibs
+(define-public rust-findshlibs-0.5
   (package
     (name "rust-findshlibs")
     (version "0.5.0")
@@ -853,24 +775,21 @@ representation.")
       (origin
         (method url-fetch)
         (uri (crate-uri "findshlibs" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1n2vagn0q5yim32hxkwi1cjgp3yn1dm45p7z8nw6lapywihhs9mi"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-lazy-static" ,rust-lazy-static)
-        ("rust-libc" ,rust-libc))))
     (home-page "https://github.com/gimli-rs/findshlibs")
     (synopsis "Find the set of shared libraries loaded in the current process")
     (description
      "Find the set of shared libraries loaded in the current process with a
 cross platform API.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-fixedbitset
+(define-public rust-fixedbitset-0.1
   (package
     (name "rust-fixedbitset")
     (version "0.1.9")
@@ -878,7 +797,7 @@ cross platform API.")
       (origin
         (method url-fetch)
         (uri (crate-uri "fixedbitset" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0czam11mi80dbyhf4rd4lz0ihcf7vkfchrdcrn45wbs0h40dxm46"))))
@@ -886,10 +805,11 @@ cross platform API.")
     (home-page "https://github.com/petgraph/fixedbitset")
     (synopsis "FixedBitSet is a simple bitset collection")
     (description "FixedBitSet is a simple bitset collection.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-fnv
+(define-public rust-fnv-1.0
   (package
     (name "rust-fnv")
     (version "1.0.6")
@@ -897,7 +817,7 @@ cross platform API.")
       (origin
         (method url-fetch)
         (uri (crate-uri "fnv" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1ww56bi1r5b8id3ns9j3qxbi7w5h005rzhiryy0zi9h97raqbb9g"))))
@@ -906,10 +826,11 @@ cross platform API.")
     (synopsis "implementation of the Fowler-Noll-Vo hash function")
     (description "The @code{fnv} hash function is a custom @code{Hasher}
 implementation that is more efficient for smaller hash keys.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-foreign-types-shared
+(define-public rust-foreign-types-shared-0.2
   (package
     (name "rust-foreign-types-shared")
     (version "0.2.0")
@@ -917,7 +838,7 @@ implementation that is more efficient for smaller hash keys.")
       (origin
         (method url-fetch)
         (uri (crate-uri "foreign-types-shared" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0kanxlif1vp0ffh2r9l610jqbkmb3183yqykxq1z5w1vay2rn7y6"))))
@@ -926,10 +847,11 @@ implementation that is more efficient for smaller hash keys.")
     (synopsis "An internal crate used by foreign-types")
     (description
      "An internal crate used by foreign-types.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-fs-extra
+(define-public rust-fs-extra-1.1
   (package
     (name "rust-fs-extra")
     (version "1.1.0")
@@ -937,7 +859,7 @@ implementation that is more efficient for smaller hash keys.")
       (origin
         (method url-fetch)
         (uri (crate-uri "fs_extra" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0x6675wdhsx277k1k1235jwcv38naf20d8kwrk948ds26hh4lajz"))))
@@ -947,9 +869,10 @@ implementation that is more efficient for smaller hash keys.")
     (description "Expanding opportunities standard library @code{std::fs} and
 @code{std::io}.  Recursively copy folders with recept information about
 process and much more.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-fuchsia-cprng
+(define-public rust-fuchsia-cprng-0.1
   (package
     (name "rust-fuchsia-cprng")
     (version "0.1.1")
@@ -957,20 +880,19 @@ process and much more.")
       (origin
         (method url-fetch)
         (uri (crate-uri "fuchsia-cprng" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:tests? #f)) ; tests require zircon
     (home-page "https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/rust/fuchsia-cprng")
     (synopsis "Fuchsia cryptographically secure pseudorandom number generator")
     (description "Rust crate for the Fuchsia cryptographically secure
 pseudorandom number generator")
+    (properties '((hidden? . #t)))
     (license license:bsd-3)))
 
-(define-public rust-fuchsia-zircon
+(define-public rust-fuchsia-zircon-0.3
   (package
     (name "rust-fuchsia-zircon")
     (version "0.3.3")
@@ -978,22 +900,18 @@ pseudorandom number generator")
       (origin
         (method url-fetch)
         (uri (crate-uri "fuchsia-zircon" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "10jxc5ks1x06gpd0xg51kcjrxr35nj6qhx2zlc5n7bmskv3675rf"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-bitflags" ,rust-bitflags)
-        ("rust-fuchsia-zircon-sys" ,rust-fuchsia-zircon-sys))
-       #:tests? #f)) ; tests require zircon
     (home-page "https://fuchsia.googlesource.com/garnet/")
     (synopsis "Rust bindings for the Zircon kernel")
     (description "Rust bindings for the Zircon kernel.")
+    (properties '((hidden? . #t)))
     (license license:bsd-3)))
 
-(define-public rust-fuchsia-zircon-sys
+(define-public rust-fuchsia-zircon-sys-0.3
   (package
     (name "rust-fuchsia-zircon-sys")
     (version "0.3.3")
@@ -1001,19 +919,18 @@ pseudorandom number generator")
       (origin
         (method url-fetch)
         (uri (crate-uri "fuchsia-zircon-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "19zp2085qsyq2bh1gvcxq1lb8w6v6jj9kbdkhpdjrl95fypakjix"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:tests? #f)) ; tests require zircon
     (home-page "https://fuchsia.googlesource.com/garnet/")
     (synopsis "Low-level Rust bindings for the Zircon kernel")
     (description "Low-level Rust bindings for the Zircon kernel.")
+    (properties '((hidden? . #t)))
     (license license:bsd-3)))
 
-(define-public rust-futures
+(define-public rust-futures-0.1
   (package
     (name "rust-futures")
     (version "0.1.28")
@@ -1021,7 +938,7 @@ pseudorandom number generator")
       (origin
         (method url-fetch)
         (uri (crate-uri "futures" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0saq8ffjw1pwf1pzhw3kq1z7dfq6wpd8x93dnni6vbkc799kkp25"))))
@@ -1030,10 +947,11 @@ pseudorandom number generator")
     (synopsis "Implementation of zero-cost futures in Rust")
     (description "An implementation of @code{futures} and @code{streams}
 featuring zero allocations, composability, and iterator-like interfaces.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-futures-core-preview
+(define-public rust-futures-core-preview-0.3
   (package
     (name "rust-futures-core-preview")
     (version "0.3.0-alpha.17")
@@ -1041,21 +959,20 @@ featuring zero allocations, composability, and iterator-like interfaces.")
       (origin
         (method url-fetch)
         (uri (crate-uri "futures-core-preview" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1xaq8m609k6cz8xydwhwp8xxyxigabcw1w9ngycfy0bnkg7iq52b"))))
     (build-system cargo-build-system)
-    (arguments
-     '(#:tests? #f)) ; The only tests are doc tests, which fail.
     (home-page "https://rust-lang-nursery.github.io/futures-rs/")
     (synopsis "Core traits and types in for the @code{futures} library.")
     (description "This crate provides the core traits and types in for the
 @code{futures} library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-futures-cpupool
+(define-public rust-futures-cpupool-0.1
   (package
     (name "rust-futures-cpupool")
     (version "0.1.8")
@@ -1063,24 +980,21 @@ featuring zero allocations, composability, and iterator-like interfaces.")
       (origin
         (method url-fetch)
         (uri (crate-uri "futures-cpupool" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1r32456gpblzfvnkf60545v8acqk7gh5zhyhi1jn669k9gicv45b"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-futures" ,rust-futures)
-        ("rust-num-cpus" ,rust-num-cpus))))
     (home-page "https://github.com/rust-lang-nursery/futures-rs")
     (synopsis "Implementation of thread pools which hand out futures")
     (description
      "An implementation of thread pools which hand out futures to the results of
 the computation on the threads themselves.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-futures-io-preview
+(define-public rust-futures-io-preview-0.3
   (package
     (name "rust-futures-io-preview")
     (version "0.3.0-alpha.17")
@@ -1088,7 +1002,7 @@ the computation on the threads themselves.")
       (origin
         (method url-fetch)
         (uri (crate-uri "futures-io-preview" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0fhvwhdb8ywjjbfng0ra1r8yyc9yzpyxg9sv3spb3f7w0lk40bh8"))))
@@ -1097,10 +1011,11 @@ the computation on the threads themselves.")
     (synopsis "Async read and write traits for the futures library")
     (description "This crate provides the @code{AsyncRead} and
 @code{AsyncWrite} traits for the @code{futures-rs} library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-futures-sink-preview
+(define-public rust-futures-sink-preview-0.3
   (package
     (name "rust-futures-sink-preview")
     (version "0.3.0-alpha.17")
@@ -1108,63 +1023,45 @@ the computation on the threads themselves.")
       (origin
         (method url-fetch)
         (uri (crate-uri "futures-sink-preview" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1r4d0gy73hdxkh5g1lrhl1kjnwp6mywjgcj70v0z78b921da42a3"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-futures-core-preview" ,rust-futures-core-preview))))
     (home-page "https://rust-lang-nursery.github.io/futures-rs/")
     (synopsis  "Asynchronous `Sink` trait for the futures-rs library")
     (description
      "This package provides the asynchronous @code{Sink} trait for the
 futures-rs library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-gcc
+(define-public rust-gcc-0.3
   (package
-    (inherit rust-cc)
+    (inherit rust-cc-1.0)
     (name "rust-gcc")
     (version "0.3.55")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "gcc" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1hng1sajn4r67hndvhjysswz8niayjwvcj42zphpxzhbz89kjpwg"))))
     (build-system cargo-build-system)
-    (arguments
-     `(;#:cargo-inputs
-       ;(("rust-rayon" ,rust-rayon))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'remove-optional-deps
-           (lambda _
-             (substitute* "Cargo.toml.orig"
-               ((".*optional.*") "\n")
-               ((".*features.*") "")
-               ((".*parallel.*") ""))
-             (delete-file "Cargo.toml")
-             (copy-file "Cargo.toml.orig" "Cargo.toml")
-             #t)))
-       #:tests? #f))
     (home-page "https://github.com/alexcrichton/cc-rs")
     (synopsis "Library to compile C/C++ code into a Rust library/application")
     (description
      "This package provides a build-time dependency for Cargo build scripts to
 assist in invoking the native C compiler to compile native C code into a static
 archive to be linked into Rustcode.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-getopts
+(define-public rust-getopts-0.2
   (package
     (name "rust-getopts")
     (version "0.2.17")
@@ -1172,21 +1069,19 @@ archive to be linked into Rustcode.")
       (origin
         (method url-fetch)
         (uri (crate-uri "getopts" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "018yhq97zgcrcxwhj3pxh31h83704sgaiijdnpl0r1ir366c005r"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-log" ,rust-log))))
     (home-page "https://github.com/rust-lang-nursery/getopts")
     (synopsis "Rust library for option parsing for CLI utilities")
     (description "This library provides getopts-like option parsing.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-glob
+(define-public rust-glob-0.3
   (package
     (name "rust-glob")
     (version "0.3.0")
@@ -1194,56 +1089,35 @@ archive to be linked into Rustcode.")
       (origin
         (method url-fetch)
         (uri (crate-uri "glob" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0x25wfr7vg3mzxc9x05dcphvd3nwlcmbnxrvwcvrrdwplcrrk4cv"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
-           ;; This test assumes /root exists but is unreadable by the user.
-           (lambda _
-             (substitute* "src/lib.rs"
-               (("cfg\\(all\\(unix,.*") "cfg(windows)]\n"))
-             #t)))))
     (home-page "https://github.com/rust-lang-nursery/glob")
     (synopsis "Match file paths against Unix shell style patterns")
     (description
      "This package provides support for matching file paths against Unix
 shell style patterns.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-glob-0.2
   (package
-    (inherit rust-glob)
+    (inherit rust-glob-0.3)
     (name "rust-glob")
     (version "0.2.11")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "glob" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
-           ;; This test assumes /root exists but is unreadable by the user.
-           (lambda _
-             (substitute* "src/lib.rs"
-               (("cfg\\(unix") "cfg(windows"))
-             #t)))))))
-
-(define-public rust-heapsize
+          "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))))
+
+(define-public rust-heapsize-0.4
   (package
     (name "rust-heapsize")
     (version "0.4.2")
@@ -1251,43 +1125,36 @@ shell style patterns.")
       (origin
         (method url-fetch)
         (uri (crate-uri "heapsize" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0q94q9ppqjgrw71swiyia4hgby2cz6dldp7ij57nkvhd6zmfcy8n"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-winapi" ,rust-winapi))
-       ;; Tests assume rust is built with jemalloc.
-       ;; https://github.com/servo/heapsize/issues/74
-       #:cargo-test-flags '("--features" "flexible-tests")))
     (home-page "https://github.com/servo/heapsize")
     (synopsis "Measure the total runtime size of an object on the heap")
     (description
      "Infrastructure for measuring the total runtime size of an object on the
 heap.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-heapsize-0.3
   (package
-    (inherit rust-heapsize)
+    (inherit rust-heapsize-0.4)
     (name "rust-heapsize")
     (version "0.3.9")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "heapsize" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0dmwc37vgsdjzk10443dj4f23439i9gch28jcwzmry3chrwx8v2m"))))
-    (arguments
-     `(#:cargo-inputs (("rust-kernel32-sys" ,rust-kernel32-sys))
-       #:tests? #f)))) ;; No flexible-tests feature flags on this release.
+          "0dmwc37vgsdjzk10443dj4f23439i9gch28jcwzmry3chrwx8v2m"))))))
 
 ;; This package makes use of removed features
-(define-public rust-heapsize-plugin
+(define-public rust-heapsize-plugin-0.1
   (package
     (name "rust-heapsize-plugin")
     (version "0.1.6")
@@ -1295,20 +1162,11 @@ heap.")
       (origin
         (method url-fetch)
         (uri (crate-uri "heapsize_plugin" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1i72isf699q9jl167g2kg4xd6h3cd05rc79zaph58aqjy0g0m9y9"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs (("rust-heapsize" ,rust-heapsize-0.3))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-Cargo-toml
-           (lambda _
-             (substitute* "Cargo.toml"
-               (("path = \"..\", ") ""))
-             #t)))))
     (home-page "https://github.com/servo/heapsize")
     (synopsis "Measure runtime size of an object on the heap")
     (description
@@ -1317,7 +1175,7 @@ total runtime size of an object on the heap")
     (properties `((hidden? . #t)))
     (license license:mpl2.0)))
 
-(define-public rust-hex
+(define-public rust-hex-0.3
   (package
     (name "rust-hex")
     (version "0.3.2")
@@ -1325,7 +1183,7 @@ total runtime size of an object on the heap")
       (origin
         (method url-fetch)
         (uri (crate-uri "hex" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0xsdcjiik5j750j67zk42qdnmm4ahirk3gmkmcqgq7qls2jjcl40"))))
@@ -1334,10 +1192,11 @@ total runtime size of an object on the heap")
     (synopsis "Encode and decode data to/from hexadecimals")
     (description "This crate allows for encoding and decoding data into/from
 hexadecimal representation.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-hostname
+(define-public rust-hostname-0.1
   (package
     (name "rust-hostname")
     (version "0.1.5")
@@ -1345,22 +1204,19 @@ hexadecimal representation.")
       (origin
         (method url-fetch)
         (uri (crate-uri "hostname" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0kprf862qaa7lwdms6aw7f3275h0j2rwhs9nz5784pm8hdmb9ki1"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winutil" ,rust-winutil))))
     (home-page "https://github.com/fengcen/hostname")
     (synopsis "Get hostname for Rust")
     (description
      "Get hostname for Rust.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-iovec
+(define-public rust-iovec-0.1
   (package
     (name "rust-iovec")
     (version "0.1.2")
@@ -1368,23 +1224,20 @@ hexadecimal representation.")
       (origin
         (method url-fetch)
         (uri (crate-uri "iovec" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "025vi072m22299z3fg73qid188z2iip7k41ba6v5v5yhwwby9rnv"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi-0.2))))
     (home-page "https://github.com/carllerche/iovec")
     (synopsis "Portable buffer type for scatter/gather I/O operations")
     (description
      "Portable buffer type for scatter/gather I/O operations.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-itoa
+(define-public rust-itoa-0.4
   (package
     (name "rust-itoa")
     (version "0.4.4")
@@ -1392,7 +1245,7 @@ hexadecimal representation.")
       (origin
         (method url-fetch)
         (uri (crate-uri "itoa" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0zvg2d9qv3avhf3d8ggglh6fdyw8kkwqg3r4622ly5yhxnvnc4jh"))))
@@ -1401,24 +1254,25 @@ hexadecimal representation.")
     (synopsis "Fast functions for printing integer primitives")
     (description "This crate provides fast functions for printing integer
 primitives to an @code{io::Write}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-itoa-0.1
  (package
-   (inherit rust-itoa)
+   (inherit rust-itoa-0.4)
    (name "rust-itoa")
    (version "0.1.1")
    (source
      (origin
        (method url-fetch)
        (uri (crate-uri "itoa" version))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
          "18g7p2hrb3dk84z3frfgmszfc9hjb4ps9vp99qlb1kmf9gm8hc5f"))))))
 
-(define-public rust-jemalloc-sys
+(define-public rust-jemalloc-sys-0.3
   (package
     (name "rust-jemalloc-sys")
     (version "0.3.2")
@@ -1426,34 +1280,31 @@ primitives to an @code{io::Write}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "jemalloc-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0ify9vlql01qhfxlj7d4p9jvcp90mj2h69nkbq7slccvbhzryfqd"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-cc" ,rust-cc)
-        ("rust-fs-extra" ,rust-fs-extra))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'override-jemalloc
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((jemalloc (assoc-ref inputs "jemalloc")))
-               (delete-file-recursively "jemalloc")
-               (setenv "JEMALLOC_OVERRIDE"
-                       (string-append jemalloc "/lib/libjemalloc_pic.a")))
-             #t)))))
-    (inputs
-     `(("jemalloc" ,jemalloc)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;     (add-after 'unpack 'override-jemalloc
+    ;       (lambda* (#:key inputs #:allow-other-keys)
+    ;         (let ((jemalloc (assoc-ref inputs "jemalloc")))
+    ;           (delete-file-recursively "jemalloc")
+    ;           (setenv "JEMALLOC_OVERRIDE"
+    ;                   (string-append jemalloc "/lib/libjemalloc_pic.a")))
+    ;         #t)))))
+    ;(inputs
+    ; `(("jemalloc" ,jemalloc)))
     (home-page "https://github.com/gnzlbg/jemallocator")
     (synopsis "Rust FFI bindings to jemalloc")
     (description "This package provides Rust FFI bindings to jemalloc.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-json
+(define-public rust-json-0.11
   (package
     (name "rust-json")
     (version "0.11.14")
@@ -1461,7 +1312,7 @@ primitives to an @code{io::Write}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "json" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1hj8c6xj5c2aqqszi8naaflmcdbya1i9byyjrq4iybxjb4q91mq1"))))
@@ -1470,10 +1321,11 @@ primitives to an @code{io::Write}.")
     (synopsis "JSON implementation in Rust")
     (description "This crate provides a JSON implementation in Rust, reducing
 friction with idiomatic Rust structs to ease interopability.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-kernel32-sys
+(define-public rust-kernel32-sys-0.2
   (package
     (name "rust-kernel32-sys")
     (version "0.2.2")
@@ -1481,29 +1333,19 @@ friction with idiomatic Rust structs to ease interopability.")
       (origin
         (method url-fetch)
         (uri (crate-uri "kernel32-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi-0.2)
-        ("rust-winapi-build" ,rust-winapi-build))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-Cargo-toml
-           (lambda _
-             (substitute* "Cargo.toml"
-               ((", path =.* }") "}\n"))
-             #t)))))
     (home-page "https://github.com/retep998/winapi-rs")
     (synopsis "Function definitions for the Windows API library kernel32")
     (description "Contains function definitions for the Windows API library
 kernel32.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-language-tags
+(define-public rust-language-tags-0.2
   (package
     (name "rust-language-tags")
     (version "0.2.2")
@@ -1511,16 +1353,11 @@ kernel32.")
       (origin
         (method url-fetch)
         (uri (crate-uri "language-tags" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "16hrjdpa827carq5x4b8zhas24d8kg4s16m6nmmn1kb7cr5qh7d9"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-heapsize" ,rust-heapsize-0.3))
-       #:cargo-development-inputs
-       (("rust-heapsize-plugin" ,rust-heapsize-plugin))))
     (home-page "https://github.com/pyfisch/rust-language-tags")
     (synopsis "Language tags for Rust")
     (description
@@ -1529,9 +1366,10 @@ script, countries and other regions.  They are commonly used in HTML and HTTP
 @code{Content-Language} and @code{Accept-Language} header fields.  This package
 currently supports parsing (fully conformant parser), formatting and comparing
 language tags.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-lazy-static
+(define-public rust-lazy-static-1.3
   (package
     (name "rust-lazy-static")
     (version "1.3.0")
@@ -1539,13 +1377,11 @@ language tags.")
       (origin
         (method url-fetch)
         (uri (crate-uri "lazy_static" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "052ac27w189hrf1j3hz7sga46rp84zl2hqnzyihxv78mgzr2jmxw"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-spin" ,rust-spin))))
     (home-page  "https://github.com/rust-lang-nursery/lazy-static.rs")
     (synopsis "Macro for declaring lazily evaluated statics in Rust")
     (description
@@ -1554,26 +1390,23 @@ Rust.  Using this macro, it is possible to have @code{static}s that require code
 to be executed at runtime in order to be initialized.  This includes anything
 requiring heap allocations, like vectors or hash maps, as well as anything that
 requires non-const function calls to be computed.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-libc
+(define-public rust-libc-0.2
   (package
     (name "rust-libc")
-    (version "0.2.62")
+    (version "0.2.65")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "libc" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
-         "1fh69kpjg8hqff36kdczx7sax98gk4qs4ws1dwvjz0rgip0d5z1l"))))
+         "1s14bjxnz6haw0gr1h3j4sr7s2s407hpgm8dxhwnl7yzgxia0c8s"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core))))
     (home-page "https://github.com/rust-lang/libc")
     (synopsis "Raw FFI bindings to platform libraries like libc")
     (description
@@ -1586,10 +1419,11 @@ This crate exports all underlying platform types, functions, and
 constants under the crate root, so all items are accessible as
 @samp{libc::foo}.  The types and values of all the exported APIs match
 the platform that libc is compiled for.")
+    (properties '((hidden? . #t)))
     (license (list license:expat
                    license:asl2.0))))
 
-(define-public rust-libgit2-sys
+(define-public rust-libgit2-sys-0.8
   (package
     (name "rust-libgit2-sys")
     (version "0.8.2")
@@ -1597,72 +1431,52 @@ the platform that libc is compiled for.")
       (origin
         (method url-fetch)
         (uri (crate-uri "libgit2-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0y2mibmx7wy91s2kmb2gfb29mrqlqaxpy5wcwr8s1lwws7b9w5sc")) ))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-libssh2-sys" ,rust-libssh2-sys)
-        ("rust-libz-sys" ,rust-libz-sys)
-        ("rust-openssl-sys" ,rust-openssl-sys))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-pkg-config" ,rust-pkg-config))
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'find-openssl
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((openssl (assoc-ref inputs "openssl")))
-              (setenv "OPENSSL_DIR" openssl))
-            (delete-file-recursively "libgit2")
-            (setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
-            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
-            #t)))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("libgit2" ,libgit2)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
+    ;(arguments
+    ; `(#:phases
+    ;  (modify-phases %standard-phases
+    ;    (add-after 'unpack 'find-openssl
+    ;      (lambda* (#:key inputs #:allow-other-keys)
+    ;        (let ((openssl (assoc-ref inputs "openssl")))
+    ;          (setenv "OPENSSL_DIR" openssl))
+    ;        (delete-file-recursively "libgit2")
+    ;        (setenv "LIBGIT2_SYS_USE_PKG_CONFIG" "1")
+    ;        (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+    ;        #t)))))
+    ;(native-inputs
+    ; `(("pkg-config" ,pkg-config)))
+    ;(inputs
+    ; `(("libgit2" ,libgit2)
+    ;   ("openssl" ,openssl)
+    ;   ("zlib" ,zlib)))
     (home-page "https://github.com/rust-lang/git2-rs")
     (synopsis "Native bindings to the libgit2 library")
     (description
      "This package provides native rust bindings to the @code{libgit2} library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-libgit2-sys-0.7
   (package
-    (inherit rust-libgit2-sys)
+    (inherit rust-libgit2-sys-0.8)
     (name "rust-libgit2-sys")
     (version "0.7.11")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "libgit2-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1wcvg2qqra2aviasvqcscl8gb2rnjnd6h998wy5dlmf2bnriqi28"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-curl-sys" ,rust-curl-sys)
-        ("rust-libc" ,rust-libc)
-        ("rust-libssh2-sys" ,rust-libssh2-sys)
-        ("rust-libz-sys" ,rust-libz-sys)
-        ("rust-openssl-sys" ,rust-openssl-sys))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-pkg-config" ,rust-pkg-config))))
-   (inputs
-    `(("curl" ,curl)
-      ,@(package-inputs rust-libgit2-sys)))))
-
-(define-public rust-libloading
+    (build-system cargo-build-system)))
+
+(define-public rust-libloading-0.5
   (package
     (name "rust-libloading")
     (version "0.5.2")
@@ -1670,15 +1484,11 @@ the platform that libc is compiled for.")
       (origin
         (method url-fetch)
         (uri (crate-uri "libloading" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0lyply8rcqc8agajzxs7bq6ivba9dnn1i68kgb9z2flnfjh13cgj"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/nagisa/rust_libloading/")
     (synopsis "Rust library for loading dynamic libraries")
     (description
@@ -1687,9 +1497,10 @@ The most important safety guarantee by this library is prevention of
 dangling-Symbols that may occur after a Library is unloaded.  Using this library
 allows loading dynamic libraries (also known as shared libraries) as well as use
 functions and static variables these libraries contain.")
+    (properties '((hidden? . #t)))
     (license license:isc)))
 
-(define-public rust-libssh2-sys
+(define-public rust-libssh2-sys-0.2
   (package
     (name "rust-libssh2-sys")
     (version "0.2.12")
@@ -1697,45 +1508,37 @@ functions and static variables these libraries contain.")
       (origin
         (method url-fetch)
         (uri (crate-uri "libssh2-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1zb6gsw795nq848nk5x2smzpfnn1s15wjlzjnvr8ihlz2l5x2549"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-libz-sys" ,rust-libz-sys)
-        ("rust-openssl-sys" ,rust-openssl-sys))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-openssl-src" ,rust-openssl-src)
-        ("rust-pkg-config" ,rust-pkg-config)
-        ("rust-vcpkg" ,rust-vcpkg))
-      #:phases
-      (modify-phases %standard-phases
-        (add-after 'unpack 'find-openssl
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((openssl (assoc-ref inputs "openssl")))
-              (setenv "OPENSSL_DIR" openssl))
-            (delete-file-recursively "libssh2")
-            (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
-            #t)))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("libssh2" ,libssh2)
-       ("openssl" ,openssl)
-       ("zlib" ,zlib)))
+    ;(arguments
+    ; `(#:phases
+    ;  (modify-phases %standard-phases
+    ;    (add-after 'unpack 'find-openssl
+    ;      (lambda* (#:key inputs #:allow-other-keys)
+    ;        (let ((openssl (assoc-ref inputs "openssl")))
+    ;          (setenv "OPENSSL_DIR" openssl))
+    ;        (delete-file-recursively "libssh2")
+    ;        (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "1")
+    ;        #t)))))
+    ;(native-inputs
+    ; `(("pkg-config" ,pkg-config)))
+    ;(inputs
+    ; `(("libssh2" ,libssh2)
+    ;   ("openssl" ,openssl)
+    ;   ("zlib" ,zlib)))
     (home-page "https://github.com/alexcrichton/ssh2-rs")
     (synopsis "Native bindings to the libssh2 library")
     (description
      "This package provides native rust bindings to the @code{libssh2} library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 
-(define-public rust-lock-api
+(define-public rust-lock-api-0.1
   (package
     (name "rust-lock-api")
     (version "0.1.5")
@@ -1743,44 +1546,55 @@ functions and static variables these libraries contain.")
       (origin
         (method url-fetch)
         (uri (crate-uri "lock_api" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0b24q9mh258xa52ap636q1sxz0j5vrnp0hwbbh7ddjka3wwz3sv2"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-owning-ref" ,rust-owning-ref)
-        ("rust-scopeguard" ,rust-scopeguard-0.3))))
     (home-page "https://github.com/Amanieu/parking_lot")
     (synopsis "Wrappers to create fully-featured Mutex and RwLock types")
     (description
      "This package provides wrappers to create fully-featured @code{Mutex} and
 @code{RwLock} types.  It is compatible with @code{no_std}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-log
+(define-public rust-log-0.4
   (package
     (name "rust-log")
-    (version "0.3.8")
+    (version "0.4.8")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "log" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0nsn28syc49vvjhxcfc8261rd1frhjc0r4bn9v3mqvps3ra7f3w8"))))
+          "1xz18ixccl5c6np4linv3ypc7hpmmgpc5zzd2ymp2ssfx0mhbdhl"))))
     (build-system cargo-build-system)
-    (home-page "https://github.com/rust-lang-nursery/log")
-    (synopsis "Lightweight logging")
+    (home-page "https://github.com/rust-lang/log")
+    (synopsis "Lightweight logging facade for Rust")
     (description
-     "This package provides a lightweight logging facade for Rust")
-    (license (list license:asl2.0
-                   license:expat))))
+     "This package provides a lightweight logging facade for Rust.")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-log-0.3
+  (package
+    (inherit rust-log-0.4)
+    (name "rust-log")
+    (version "0.3.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "log" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0nsn28syc49vvjhxcfc8261rd1frhjc0r4bn9v3mqvps3ra7f3w8"))))))
 
-(define-public rust-lzma-sys
+(define-public rust-lzma-sys-0.1
   (package
     (name "rust-lzma-sys")
     (version "0.1.15")
@@ -1788,35 +1602,32 @@ functions and static variables these libraries contain.")
       (origin
         (method url-fetch)
         (uri (crate-uri "lzma-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "14gyj256yh0wm77jbvmlc39v7lfn0navpfrja4alczarzlc8ir2k"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-libc" ,rust-libc)
-        ("rust-pkg-config" ,rust-pkg-config))
-        #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unbundle-xz
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((xz (assoc-ref inputs "xz")))
-               (delete-file-recursively "xz-5.2"))
-             #t)))))
-    (inputs
-     `(("pkg-config" ,pkg-config)
-       ("xz" ,xz)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;     (add-after 'unpack 'unbundle-xz
+    ;       (lambda* (#:key inputs #:allow-other-keys)
+    ;         (let ((xz (assoc-ref inputs "xz")))
+    ;           (delete-file-recursively "xz-5.2"))
+    ;         #t)))))
+    ;(inputs
+    ; `(("pkg-config" ,pkg-config)
+    ;   ("xz" ,xz)))
     (home-page "https://github.com/alexcrichton/xz2-rs")
     (synopsis "Bindings to liblzma for lzma and xz stream encoding/decoding")
     (description
      "This package contains the raw bindings to liblzma which contains an
 implementation of LZMA and xz stream encoding/decoding.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-maplit
+(define-public rust-maplit-1.0
   (package
     (name "rust-maplit")
     (version "1.0.1")
@@ -1824,7 +1635,7 @@ implementation of LZMA and xz stream encoding/decoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "maplit" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0hsczmvd6zkqgzqdjp5hfyg7f339n68w83n4pxvnsszrzssbdjq8"))))
@@ -1833,10 +1644,11 @@ implementation of LZMA and xz stream encoding/decoding.")
     (synopsis "Collection of Map macros")
     (description "This crate provides a collection of @code{literal} macros for
 @code{HashMap}, @code{HashSet}, @code{BTreeMap}, and @code{BTreeSet.}")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-matches
+(define-public rust-matches-0.1
   (package
     (name "rust-matches")
     (version "0.1.8")
@@ -1844,7 +1656,7 @@ implementation of LZMA and xz stream encoding/decoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "matches" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "020axl4q7rk9vz90phs7f8jas4imxal9y9kxl4z4v7a6719mrz3z"))))
@@ -1853,9 +1665,10 @@ implementation of LZMA and xz stream encoding/decoding.")
     (synopsis "Macro to evaluate whether an expression matches a pattern.")
     (description "This package provides a macro to evaluate, as a boolean,
 whether an expression matches a pattern.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-md5
+(define-public rust-md5-0.6
   (package
     (name "rust-md5")
     (version "0.6.1")
@@ -1863,7 +1676,7 @@ whether an expression matches a pattern.")
       (origin
         (method url-fetch)
         (uri (crate-uri "md5" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "17b2xm4h4cvxsdjsf3kdrzqv2za60kak961xzi5kmw6g6djcssvy"))))
@@ -1871,10 +1684,11 @@ whether an expression matches a pattern.")
     (home-page "https://github.com/stainless-steel/md5")
     (synopsis "MD5 hash function in Rust")
     (description "The package provides the MD5 hash function.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-memmap
+(define-public rust-memmap-0.7
   (package
     (name "rust-memmap")
     (version "0.7.0")
@@ -1882,46 +1696,35 @@ whether an expression matches a pattern.")
       (origin
         (method url-fetch)
         (uri (crate-uri "memmap" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0ns7kkd1h4pijdkwfvw4qlbbmqmlmzwlq3g2676dcl5vwyazv1b5"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))))
     (home-page "https://github.com/danburkert/memmap-rs")
     (synopsis "Rust library for cross-platform memory mapped IO")
     (description
      "This package provides a cross-platform Rust API for memory-mapped
 file IO.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-memmap-0.6
   (package
-    (inherit rust-memmap)
+    (inherit rust-memmap-0.7)
     (name "rust-memmap")
     (version "0.6.2")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "memmap" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1zy6s0ni0lx9rjzq3gq2zz9r8zgjmbp02332g3gsj4fyhv4s5zz2"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))))))
+          "1zy6s0ni0lx9rjzq3gq2zz9r8zgjmbp02332g3gsj4fyhv4s5zz2"))))))
 
-(define-public rust-mime
+(define-public rust-mime-0.3
   (package
     (name "rust-mime")
     (version "0.3.13")
@@ -1929,22 +1732,20 @@ file IO.")
       (origin
         (method url-fetch)
         (uri (crate-uri "mime" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "09clbyvdkwflp8anwjhqdib0sw8191gphcchdp80nc8ayhhwl9ry"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-unicase" ,rust-unicase))))
     (home-page "https://github.com/hyperium/mime")
     (synopsis "Strongly Typed Mimes")
     (description
      "Support MIME (HTTP Media Types) as strong types in Rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-miniz-oxide
+(define-public rust-miniz-oxide-0.3
   (package
     (name "rust-miniz-oxide")
     (version "0.3.3")
@@ -1952,29 +1753,20 @@ file IO.")
       (origin
         (method url-fetch)
         (uri (crate-uri "miniz_oxide" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32 "1bmanbbcdmssfbgik3fs323g7vljc5wkjz7s61jsbbz2kg0nckrh"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-adler32" ,rust-adler32))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-tests
-           (lambda _
-             (substitute* "tests/test.rs"
-               (("../miniz/miniz.c") "Cargo.toml"))
-             #t)))))
     (home-page  "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide")
     (synopsis "Pure rust replacement for the miniz DEFLATE/zlib encoder/decoder")
     (description
      "A pure rust replacement for the miniz DEFLATE/zlib encoder/decoder.  Using
 @code{flate2} with the @code{rust_backend} feature provides an easy to use
 streaming API for miniz_oxide.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-miniz-sys
+(define-public rust-miniz-sys-0.1
   (package
     (name "rust-miniz-sys")
     (version "0.1.12")
@@ -1982,23 +1774,20 @@ streaming API for miniz_oxide.")
       (origin
         (method url-fetch)
         (uri (crate-uri "miniz-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "00l2r4anm8g35x0js2zfdnwfbrih9m43vphdpb77c5ga3kjkm7hy"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cc" ,rust-cc)
-        ("rust-libc" ,rust-libc))))
     (home-page "https://github.com/alexcrichton/flate2-rs")
     (synopsis "Bindings to the miniz.c library")
     (description
      "This package provides bindings to the @code{miniz.c} library.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-miow
+(define-public rust-miow-0.3
   (package
     (name "rust-miow")
     (version "0.3.3")
@@ -2006,48 +1795,35 @@ streaming API for miniz_oxide.")
       (origin
         (method url-fetch)
         (uri (crate-uri "miow" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "09ljvx6wg30f2xlv7b7hhpkw7k312n3hjgmrbhwzhz9x03ra0sir"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-socket2" ,rust-socket2)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-rand" ,rust-rand))))
     (home-page "https://github.com/alexcrichton/miow")
     (synopsis "Rust I/O library for Windows")
     (description
      "This package provides a zero overhead I/O library for Windows, focusing on
 IOCP and Async I/O abstractions.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-miow-0.2
   (package
-    (inherit rust-miow)
+    (inherit rust-miow-0.3)
     (name "rust-miow")
     (version "0.2.1")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "miow" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "06g9b8sqlh5gxakwqq4rrib07afwanfnxgxajrldwcgk3hxjy7wc"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-kernel32-sys" ,rust-kernel32-sys)
-        ("rust-net2" ,rust-net2)
-        ("rust-winapi" ,rust-winapi-0.2)
-        ("rust-ws2-32-sys" ,rust-ws2-32-sys))
-       #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.3))))))
+          "06g9b8sqlh5gxakwqq4rrib07afwanfnxgxajrldwcgk3hxjy7wc"))))))
 
-(define-public rust-modifier
+(define-public rust-modifier-0.1
   (package
     (name "rust-modifier")
     (version "0.1.0")
@@ -2055,7 +1831,7 @@ IOCP and Async I/O abstractions.")
       (origin
         (method url-fetch)
         (uri (crate-uri "modifier" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0n3fmgli1nsskl0whrfzm1gk0rmwwl6pw1q4nb9sqqmn5h8wkxa1"))))
@@ -2065,9 +1841,10 @@ IOCP and Async I/O abstractions.")
       "Chaining APIs for both self -> Self and &mut self methods.")
     (description
       "Chaining APIs for both self -> Self and &mut self methods.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-net2
+(define-public rust-net2-0.2
   (package
     (name "rust-net2")
     (version "0.2.33")
@@ -2075,25 +1852,21 @@ IOCP and Async I/O abstractions.")
       (origin
         (method url-fetch)
         (uri (crate-uri "net2" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "126g3fgfxp06zimc1l9iyxnn9cif1hjsg7sd81nlls5nnyghsma2"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if)
-        ("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/rust-lang-nursery/net2-rs")
     (synopsis "Extensions to the standard library's networking types")
     (description
      "This library contains extensions to the standard library's networking
 types as proposed in RFC 1158.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-netlib-src
+(define-public rust-netlib-src-0.7
   (package
     (name "rust-netlib-src")
     (version "0.7.4")
@@ -2101,35 +1874,23 @@ types as proposed in RFC 1158.")
       (origin
         (method url-fetch)
         (uri (crate-uri "netlib-src" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "112hwfw1zzdj10h3j213xxqjrq38iygb3nb3ijay65ycmrg819s4"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-cmake" ,rust-cmake)
-        ("rust-libc" ,rust-libc))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-system-lapack
-           (lambda _
-             (delete-file-recursively "source")
-             (substitute* "Cargo.toml"
-               (("default .*")
-                "default = [\"system\"]\n"))
-             #t)))))
-    (inputs
-     `(("gfortran:lib" ,gfortran "lib")
-       ("lapack" ,lapack)))
+    ;(inputs
+    ; `(("gfortran:lib" ,gfortran "lib")
+    ;   ("lapack" ,lapack)))
     (home-page "https://github.com/blas-lapack-rs/netlib-src")
     (synopsis "Source of BLAS and LAPACK via Netlib")
     (description
      "The package provides a source of BLAS and LAPACK via Netlib.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-libnghttp2-sys
+(define-public rust-libnghttp2-sys-0.1
   (package
     (name "rust-libnghttp2-sys")
     (version "0.1.2")
@@ -2137,26 +1898,22 @@ types as proposed in RFC 1158.")
       (origin
         (method url-fetch)
         (uri (crate-uri "libnghttp2-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0qr4lyh7righx9n22c7amlcpk906rn1jnb2zd6gdfpa3yi24s982"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc))
-       #:cargo-development-inputs
-       (("rust-cc" ,rust-cc))))
-    (inputs
-     `(("nghttp2" ,nghttp2)))
+    ;(inputs
+    ; `(("nghttp2" ,nghttp2)))
     (home-page "https://github.com/alexcrichton/nghttp2-rs")
     (synopsis "FFI bindings for libnghttp2 (nghttp2)")
     (description
      "This package provides FFI bindings for libnghttp2 (nghttp2).")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-libz-sys
+(define-public rust-libz-sys-1.0
   (package
     (name "rust-libz-sys")
     (version "1.0.25")
@@ -2164,35 +1921,31 @@ types as proposed in RFC 1158.")
       (origin
         (method url-fetch)
         (uri (crate-uri "libz-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1gjycyl2283525abks98bhxa4r259m617xfm5z52p3p3c8ry9d9f"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-cc" ,rust-cc)
-        ("rust-pkg-config" ,rust-pkg-config)
-        ("rust-vcpkg" ,rust-vcpkg))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'delete-vendored-zlib
-           (lambda _
-             (delete-file-recursively "src/zlib")
-             #t)))))
-    (inputs
-     `(("pkg-config" ,pkg-config)
-       ("zlib" ,zlib)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;     (add-after 'unpack 'delete-vendored-zlib
+    ;       (lambda _
+    ;         (delete-file-recursively "src/zlib")
+    ;         #t)))))
+    ;(inputs
+    ; `(("pkg-config" ,pkg-config)
+    ;   ("zlib" ,zlib)))
     (home-page "https://github.com/rust-lang/libz-sys")
     (synopsis "Bindings to the system libz library")
     (description
      "This package provides bindings to the system @code{libz} library (also
 known as zlib).")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-nodrop
+(define-public rust-nodrop-0.1
   (package
     (name "rust-nodrop")
     (version "0.1.13")
@@ -2200,24 +1953,22 @@ known as zlib).")
       (origin
         (method url-fetch)
         (uri (crate-uri "nodrop" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0if9ifn6rvar5jirx4b3qh4sl5kjkmcifycvzhxa9j3crkfng5ig"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-nodrop-union" ,rust-nodrop-union))))
     (home-page "https://github.com/bluss/arrayvec")
     (synopsis "Wrapper type to inhibit drop (destructor)")
     (description "This package provides a wrapper type to inhibit drop
 (destructor).  Use @code{std::mem::ManuallyDrop} instead!")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
-(define-public rust-nodrop-union
+(define-public rust-nodrop-union-0.1
   (package
     (name "rust-nodrop-union")
     (version "0.1.10")
@@ -2225,7 +1976,7 @@ known as zlib).")
       (origin
         (method url-fetch)
         (uri (crate-uri "nodrop-union" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0jsnkdn9l8jlmb9h4wssi76sxnyxwnyi00p6y1p2gdq7c1gdw2b7"))))
@@ -2239,7 +1990,7 @@ implementation (which is unstable / requires nightly).")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-num-cpus
+(define-public rust-num-cpus-1.10
   (package
     (name "rust-num-cpus")
     (version "1.10.1")
@@ -2247,24 +1998,20 @@ implementation (which is unstable / requires nightly).")
       (origin
         (method url-fetch)
         (uri (crate-uri "num_cpus" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0wrj3zvj6h3q26sqj9zxpd59frjb54n7jhjwf307clq31ic47vxw"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment))))
     (home-page "https://github.com/seanmonstar/num_cpus")
     (synopsis "Get the number of CPUs on a machine")
     (description
      "Get the number of CPUs on a machine.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-num-integer
+(define-public rust-num-integer-0.1
   (package
     (name "rust-num-integer")
     (version "0.1.41")
@@ -2273,23 +2020,20 @@ implementation (which is unstable / requires nightly).")
        (method url-fetch)
        (uri (crate-uri "num-integer" version))
        (file-name
-        (string-append name "-" version ".tar.gz"))
+        (string-append name "-" version ".crate"))
        (sha256
         (base32
          "02dwjjpfbi16c71fq689s4sw3ih52cvfzr5z5gs6qpr5z0g58pmq"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg)
-        ("rust-num-traits" ,rust-num-traits))))
     (home-page "https://github.com/rust-num/num-integer")
     (synopsis "Integer traits and functions")
     (description "Integer traits and functions.")
+    (properties '((hidden? . #t)))
     ;; Dual licensed.
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-num-iter
+(define-public rust-num-iter-0.1
   (package
     (name "rust-num-iter")
     (version "0.1.39")
@@ -2297,25 +2041,20 @@ implementation (which is unstable / requires nightly).")
       (origin
         (method url-fetch)
         (uri (crate-uri "num-iter" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0bhk2qbr3261r6zvfc58lz4spfqjhvdripxgz5mks5rd85r55gbn"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-num-integer" ,rust-num-integer)
-        ("rust-num-traits" ,rust-num-traits))
-       #:cargo-development-inputs
-       (("rust-autocfg" ,rust-autocfg))))
     (home-page "https://github.com/rust-num/num-iter")
     (synopsis "External iterators for generic mathematics")
     (description
      "This crate provides external iterators for generic mathematics.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-num-traits
+(define-public rust-num-traits-0.2
   (package
     (name "rust-num-traits")
     (version "0.2.8")
@@ -2324,40 +2063,55 @@ implementation (which is unstable / requires nightly).")
        (method url-fetch)
        (uri (crate-uri "num-traits" version))
        (file-name
-        (string-append name "-" version ".tar.gz"))
+        (string-append name "-" version ".crate"))
        (sha256
         (base32
          "0clvrm34rrqc8p6gq5ps5fcgws3kgq5knh7nlqxf2ayarwks9abb"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg))))
     (home-page "https://github.com/rust-num/num-traits")
     (synopsis "Numeric traits for generic mathematics")
     (description "Numeric traits for generic mathematics.")
+    (properties '((hidden? . #t)))
     ;; Dual licensed.
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-num-traits-0.1
   (package
-    (inherit rust-num-traits)
+    (inherit rust-num-traits-0.2)
     (name "rust-num-traits")
     (version "0.1.43")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "num-traits" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj"))))
+    (build-system cargo-build-system)))
+
+(define-public rust-numtoa-0.1
+  (package
+    (name "rust-numtoa")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "numtoa" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1vs9rhggqbql1p26x8nkha1j06wawwgb2jp5fs88b5gi7prvvy5q"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-num-traits" ,rust-num-traits))))))
+    (home-page "https://gitlab.com/mmstick/numtoa")
+    (synopsis "Convert numbers into stack-allocated byte arrays")
+    (description
+     "This package can convert numbers into stack-allocated byte arrays.")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
 
-(define-public rust-openssl-probe
+(define-public rust-openssl-probe-0.1
   (package
     (name "rust-openssl-probe")
     (version "0.1.2")
@@ -2365,7 +2119,7 @@ implementation (which is unstable / requires nightly).")
       (origin
         (method url-fetch)
         (uri (crate-uri "openssl-probe" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1pijrdifgsdwd45b08c2g0dsmnhz7c3kmagb70839ngrd7d29bvp"))))
@@ -2375,10 +2129,11 @@ implementation (which is unstable / requires nightly).")
     (description
      "This package provides a tool to find SSL certificate locations on the
 system for OpenSSL.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-openssl-src
+(define-public rust-openssl-src-111
   (package
     (name "rust-openssl-src")
     (version "111.6.0+1.1.1d")
@@ -2386,21 +2141,20 @@ system for OpenSSL.")
       (origin
         (method url-fetch)
         (uri (crate-uri "openssl-src" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "172xh95hp7aygahah1940kg1dnx60c5m80cwj5hgi8x7x0fxmhmr"))))
     (build-system cargo-build-system)
-    (arguments
-      `(#:cargo-inputs (("rust-cc" ,rust-cc))))
     (home-page "https://github.com/alexcrichton/openssl-src-rs")
     (synopsis "Source of OpenSSL for rust crates")
     (description
      "This package contains the source of OpenSSL and logic to build it.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-openssl-sys
+(define-public rust-openssl-sys-0.9
   (package
     (name "rust-openssl-sys")
     (version "0.9.50")
@@ -2408,37 +2162,29 @@ system for OpenSSL.")
       (origin
         (method url-fetch)
         (uri (crate-uri "openssl-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32 "1dn3capgiz77s6rpmc2sf8gadwkmhwgfd6mw4rcnnm9jp36dqhic"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg)
-        ("rust-libc" ,rust-libc))
-       #:cargo-development-inputs
-       (("rust-autocfg" ,rust-autocfg)
-        ("rust-cc" ,rust-cc)
-        ("rust-openssl-src" ,rust-openssl-src)
-        ("rust-pkg-config" ,rust-pkg-config)
-        ("rust-vcpkg" ,rust-vcpkg))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'find-openssl
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((openssl (assoc-ref inputs "openssl")))
-               (setenv "OPENSSL_DIR" openssl))
-             #t)))))
-    (inputs
-     `(("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)))
+    ;(arguments
+    ; `(#:phases
+    ;   (modify-phases %standard-phases
+    ;     (add-after 'unpack 'find-openssl
+    ;       (lambda* (#:key inputs #:allow-other-keys)
+    ;         (let ((openssl (assoc-ref inputs "openssl")))
+    ;           (setenv "OPENSSL_DIR" openssl))
+    ;         #t)))))
+    ;(inputs
+    ; `(("openssl" ,openssl)
+    ;   ("pkg-config" ,pkg-config)))
     (home-page "https://github.com/sfackler/rust-openssl")
     (synopsis "FFI bindings to OpenSSL")
     (description
      "This package provides FFI bindings to OpenSSL for use in rust crates.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-owning-ref
+(define-public rust-owning-ref-0.4
   (package
     (name "rust-owning-ref")
     (version "0.4.0")
@@ -2446,23 +2192,21 @@ system for OpenSSL.")
       (origin
         (method url-fetch)
         (uri (crate-uri "owning_ref" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "04zgwy77lin8qz398s6g44467pd6kjhbrlqifkia5rkr47mbi929"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-stable-deref-trait" ,rust-stable-deref-trait))))
     (home-page "https://github.com/Kimundi/owning-ref-rs")
     (synopsis "Create references that carry their owner with them")
     (description
      "This package provides a library for creating references that carry their
 owner with them.  This can sometimes be useful because Rust borrowing rules
 normally prevent moving a type that has been borrowed from.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-parity-wasm
+(define-public rust-parity-wasm-0.40
   (package
     (name "rust-parity-wasm")
     (version "0.40.1")
@@ -2470,24 +2214,21 @@ normally prevent moving a type that has been borrowed from.")
       (origin
         (method url-fetch)
         (uri (crate-uri "parity-wasm" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1p84f0k36q05j18jy66n122lyali794cj78hbxgy9wj6si84plqd"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-time" ,rust-time))
-       #:tests? #f)) ; Test files are not included in release.
     (home-page "https://github.com/paritytech/parity-wasm")
     (synopsis "Low-level WebAssembly format library")
     (description
      "This package provides a WebAssembly binary format serialization,
 deserialization, and interpreter in Rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-peeking-take-while
+(define-public rust-peeking-take-while-0.1
   (package
     (name "rust-peeking-take-while")
     (version "0.1.2")
@@ -2495,7 +2236,7 @@ deserialization, and interpreter in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "peeking_take_while" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "16bhqr6rdyrp12zv381cxaaqqd0pwysvm1q8h2ygihvypvfprc8r"))))
@@ -2507,10 +2248,11 @@ deserialization, and interpreter in Rust.")
 value.  This allows you to use @code{Iterator::by_ref} and
 @code{Iterator::take_while} together, and still get the first value for which
 the @code{take_while} predicate returned false after dropping the @code{by_ref}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-percent-encoding
+(define-public rust-percent-encoding-2.1
   (package
     (name "rust-percent-encoding")
     (version "2.1.0")
@@ -2518,7 +2260,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
       (origin
         (method url-fetch)
         (uri (crate-uri "percent-encoding" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0bp3zrsk3kr47fbpipyczidbbx4g54lzxdm77ni1i3qws10mdzfl"))))
@@ -2526,24 +2268,25 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (home-page "https://github.com/servo/rust-url/")
     (synopsis "Percent encoding and decoding")
     (description "This crate provides percent encoding and decoding.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-percent-encoding-1
+(define-public rust-percent-encoding-1.0
   (package
-    (inherit rust-percent-encoding)
+    (inherit rust-percent-encoding-2.1)
     (name "rust-percent-encoding")
     (version "1.0.1")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "percent-encoding" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0cgq08v1fvr6bs5fvy390cz830lq4fak8havdasdacxcw790s09i"))))))
 
-(define-public rust-permutohedron
+(define-public rust-permutohedron-0.2
   (package
     (name "rust-permutohedron")
     (version "0.2.4")
@@ -2551,7 +2294,7 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
       (origin
         (method url-fetch)
         (uri (crate-uri "permutohedron" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0b1pzh48j86v46wxngch6k1kx9cdw3jr3lwa86gd6jd4bmxzz1xn"))))
@@ -2562,10 +2305,11 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
      "Generate permutations of sequences.  Either lexicographical order
 permutations, or a minimal swaps permutation sequence implemented using Heap's
 algorithm.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-pico-sys
+(define-public rust-pico-sys-0.0
   (package
     (name "rust-pico-sys")
     (version "0.0.1")
@@ -2573,22 +2317,19 @@ algorithm.")
       (origin
         (method url-fetch)
         (uri (crate-uri "pico-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1q5pg0ms6szz6b5h26h4k40zb76zbwwjgyigac4wly9qngdj4yl5"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-gcc" ,rust-gcc)
-        ("rust-libc" ,rust-libc))))
     (home-page "https://github.com/reem/rust-pico-sys")
     (synopsis "Bindings to the PicoHTTPParser")
     (description
      "This package provides bindings to the PicoHTTPParser.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-pin-utils
+(define-public rust-pin-utils-0.1
   (package
     (name "rust-pin-utils")
     (version "0.1.0-alpha.4")
@@ -2596,7 +2337,7 @@ algorithm.")
       (origin
         (method url-fetch)
         (uri (crate-uri "pin-utils" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "11xmyx00n4m37d546by2rxb8ryxs12v55cc172i3yak1rqccd52q"))))
@@ -2604,10 +2345,11 @@ algorithm.")
     (home-page "https://github.com/rust-lang-nursery/pin-utils")
     (synopsis "Utilities for pinning")
     (description "This crate provides utilities for pinning values on the stack.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-pkg-config
+(define-public rust-pkg-config-0.3
   (package
     (name "rust-pkg-config")
     (version "0.3.14")
@@ -2615,25 +2357,23 @@ algorithm.")
       (origin
         (method url-fetch)
         (uri (crate-uri "pkg-config" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "135ia995lqzr0gxpk85h0bjxf82kj6hbxdx924sh9jdln6r8wvk7"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-lazy-static" ,rust-lazy-static))))
-    (inputs
-     `(("pkg-config" ,pkg-config)))
+    ;(inputs
+    ; `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/rust-lang/pkg-config-rs")
     (synopsis "Library to run the pkg-config system tool")
     (description
      "A library to run the pkg-config system tool at build time in order to be
 used in Cargo build scripts.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-plain
+(define-public rust-plain-0.2
   (package
     (name "rust-plain")
     (version "0.2.3")
@@ -2641,7 +2381,7 @@ used in Cargo build scripts.")
       (origin
         (method url-fetch)
         (uri (crate-uri "plain" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "19n1xbxb4wa7w891268bzf6cbwq4qvdb86bik1z129qb0xnnnndl"))))
@@ -2650,10 +2390,11 @@ used in Cargo build scripts.")
     (synopsis "Rust library that allows reinterpreting data safely")
     (description "This package provides a small Rust library that allows users
  to reinterpret data of certain types safely.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-plugin
+(define-public rust-plugin-0.2
   (package
     (name "rust-plugin")
     (version "0.2.6")
@@ -2661,23 +2402,19 @@ used in Cargo build scripts.")
       (origin
         (method url-fetch)
         (uri (crate-uri "plugin" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1q7nghkpvxxr168y2jnzh3w7qc9vfrby9n7ygy3xpj0bj71hsshs"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-typemap" ,rust-typemap))
-       #:cargo-development-inputs
-       (("rust-void" ,rust-void))))
     (home-page "https://github.com/reem/rust-plugin")
     (synopsis "Lazily evaluated, order-independent plugins for extensible types")
     (description
      "Lazily evaluated, order-independent plugins for extensible types.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-pocket-resources
+(define-public rust-pocket-resources-0.3
   (package
     (name "rust-pocket-resources")
     (version "0.3.2")
@@ -2685,7 +2422,7 @@ used in Cargo build scripts.")
       (origin
         (method url-fetch)
         (uri (crate-uri "pocket-resources" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1n2i5vmi8fdbw89wm5nz1ws1z9f1qax911p6ksg4scmdg23z6df1"))))
@@ -2694,9 +2431,10 @@ used in Cargo build scripts.")
     (synopsis "Include resources in your applications")
     (description "This crate allows you to include resources in your
 applications.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-ppv-lite86
+(define-public rust-ppv-lite86-0.2
   (package
     (name "rust-ppv-lite86")
     (version "0.2.5")
@@ -2704,7 +2442,7 @@ applications.")
       (origin
         (method url-fetch)
         (uri (crate-uri "ppv-lite86" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "06snnv338w341nicfqba2jgln5dsla72ndkgrw7h1dfdb3vgkjz3"))))
@@ -2713,35 +2451,46 @@ applications.")
     (synopsis "Implementation of the crypto-simd API for x86")
     (description "This crate provides an implementation of the crypto-simd API
 for x86.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-proc-macro2
+(define-public rust-proc-macro2-1.0
   (package
     (name "rust-proc-macro2")
-    (version "0.4.30")
+    (version "1.0.6")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "proc-macro2" version))
-        (file-name
-          (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
-          (base32
-            "0nd71fl24sys066jrha6j7i34nfkjv44yzw8yww9742wmc8j0gfg"))))
+         (base32
+          "09rgb5ab0jgw39kyad0lgqs4nb9yaf7mwcrgxqnsxbn4il54g7lw"))))
     (build-system cargo-build-system)
-    (arguments
-      `(#:cargo-inputs (("rust-unicode-xid" ,rust-unicode-xid-0.1))
-        #:cargo-development-inputs (("rust-quote" ,rust-quote))))
     (home-page "https://github.com/alexcrichton/proc-macro2")
     (synopsis "Stable implementation of the upcoming new `proc_macro` API")
     (description "This package provides a stable implementation of the upcoming new
 `proc_macro` API.  Comes with an option, off by default, to also reimplement itself
 in terms of the upstream unstable API.")
-    ;; Dual licensed.
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-quick-error
+(define-public rust-proc-macro2-0.4
+  (package
+    (inherit rust-proc-macro2-1.0)
+    (name "rust-proc-macro2")
+    (version "0.4.30")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "proc-macro2" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0nd71fl24sys066jrha6j7i34nfkjv44yzw8yww9742wmc8j0gfg"))))))
+
+(define-public rust-quick-error-1.2
   (package
     (name "rust-quick-error")
     (version "1.2.2")
@@ -2749,7 +2498,7 @@ in terms of the upstream unstable API.")
       (origin
         (method url-fetch)
         (uri (crate-uri "quick-error" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1w6kgwwv7p7zr0yyg5rb315lkk24bimywklwx7fsvsbwi10bjx4j"))))
@@ -2758,76 +2507,278 @@ in terms of the upstream unstable API.")
     (synopsis "Macro which makes error types pleasant to write")
     (description "This crate provides a macro which makes error types pleasant
 to write.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-quote
+(define-public rust-quote-1.0
   (package
     (name "rust-quote")
-    (version "0.6.12")
+    (version "1.0.2")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "quote" version))
-        (file-name
-          (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
-          (base32
-            "1nw0klza45hf127kfyrpxsxd5jw2l6h21qxalil3hkr7bnf7kx7s"))))
+         (base32
+          "1zkc46ryacf2jdkc6krsy2z615xbk1x8kp1830rcxz3irj5qqfh5"))))
     (build-system cargo-build-system)
-    (arguments
-      `(#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2))))
     (home-page "https://github.com/dtolnay/quote")
     (synopsis "Quasi-quoting macro quote!(...)")
     (description "Quasi-quoting macro quote!(...)")
-    ;; Dual licensed.
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-rand
+(define-public rust-quote-0.6
+  (package
+    (inherit rust-quote-1.0)
+    (name "rust-quote")
+    (version "0.6.12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "quote" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1nw0klza45hf127kfyrpxsxd5jw2l6h21qxalil3hkr7bnf7kx7s"))))))
+
+(define-public rust-rand-0.6
   (package
     (name "rust-rand")
-    (version "0.4.3")
+    (version "0.6.5")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "rand" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1gfgnqfj2pyh27dcb720jpawskllwnbvxh816ddyykv269xz8ml3"))))
+          "1jl4449jcl4wgmzld6ffwqj5gwxrp8zvx8w573g1z368qg6xlwbd"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-fuchsia-zircon" ,rust-fuchsia-zircon)
-        ("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://crates.io/crates/rand")
     (synopsis "Random number generators and other randomness functionality")
     (description
      "Rand provides utilities to generate random numbers, to convert them to
 useful types and distributions, and some randomness-related algorithms.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rand-0.4
+  (package
+    (inherit rust-rand-0.6)
+    (name "rust-rand")
+    (version "0.4.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1gfgnqfj2pyh27dcb720jpawskllwnbvxh816ddyykv269xz8ml3"))))))
+
 (define-public rust-rand-0.3
   (package
-    (inherit rust-rand)
+    (inherit rust-rand-0.6)
     (name "rust-rand")
     (version "0.3.23")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "rand" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0v679h38pjjqj5h4md7v2slsvj6686qgcn7p9fbw3h43iwnk1b34"))))))
+
+(define-public rust-rand-chacha-0.1
+  (package
+    (name "rust-rand-chacha")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_chacha" version))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0v679h38pjjqj5h4md7v2slsvj6686qgcn7p9fbw3h43iwnk1b34"))))
+          "1vxwyzs4fy1ffjc8l00fsyygpiss135irjf7nyxgq2v0lqf3lvam"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_chacha")
+    (synopsis "ChaCha random number generator")
+    (description "ChaCha random number generator")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-core-0.4
+  (package
+    (name "rust-rand-core")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_core" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1p09ynysrq1vcdlmcqnapq4qakl2yd1ng3kxh3qscpx09k2a6cww"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_core")
+    (synopsis
+      "Core random number generator traits and tools for implementation.")
+    (description
+      "Core random number generator traits and tools for implementation.")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-core-0.3
+  (package
+    (inherit rust-rand-core-0.4)
+    (name "rust-rand-core")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_core" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0jzdgszfa4bliigiy4hi66k7fs3gfwi2qxn8vik84ph77fwdwvvs"))))
+    ;; This version is a 0.3 API wrapper around the 0.4 version.
     (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-rand" ,rust-rand))))))
+     `(#:cargo-inputs (("rand-core" ,rust-rand-core-0.4))))))
+
+(define-public rust-rand-hc-0.1
+  (package
+    (name "rust-rand-hc")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_hc" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1i0vl8q5ddvvy0x8hf1zxny393miyzxkwqnw31ifg6p0gdy6fh3v"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_hc")
+    (synopsis "HC128 random number generator")
+    (description "HC128 random number generator")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-isaac-0.1
+  (package
+    (name "rust-rand-isaac")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_isaac" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "027flpjr4znx2csxk7gxb7vrf9c7y5mydmvg5az2afgisp4rgnfy"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_isaac")
+    (synopsis "ISAAC random number generator")
+    (description "ISAAC random number generator")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-jitter-0.1
+  (package
+    (name "rust-rand-jitter")
+    (version "0.1.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_jitter" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "16z387y46bfz3csc42zxbjq89vcr1axqacncvv8qhyy93p4xarhi"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/rust-random/rand")
+    (synopsis
+      "Random number generator based on timing jitter")
+    (description
+      "Random number generator based on timing jitter")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
 
-(define-public rust-rawpointer
+(define-public rust-rand-os-0.1
+  (package
+    (name "rust-rand-os")
+    (version "0.1.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_os" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0wahppm0s64gkr2vmhcgwc0lij37in1lgfxg5rbgqlz0l5vgcxbv"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_os")
+    (synopsis "OS backed Random Number Generator")
+    (description "OS backed Random Number Generator")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-pcg-0.1
+  (package
+    (name "rust-rand-pcg")
+    (version "0.1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_pcg" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0i0bdla18a8x4jn1w0fxsbs3jg7ajllz6azmch1zw33r06dv1ydb"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_pcg")
+    (synopsis
+      "Selected PCG random number generators")
+    (description
+      "Selected PCG random number generators")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rand-xorshift-0.1
+  (package
+    (name "rust-rand-xorshift")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand_xorshift" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0p2x8nr00hricpi2m6ca5vysiha7ybnghz79yqhhx6sl4gkfkxyb"))))
+    (build-system cargo-build-system)
+    (home-page "https://crates.io/crates/rand_xorshift")
+    (synopsis "Xorshift random number generator")
+    (description
+      "Xorshift random number generator")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-rawpointer-0.1
   (package
     (name "rust-rawpointer")
     (version "0.1.0")
@@ -2835,7 +2786,7 @@ useful types and distributions, and some randomness-related algorithms.")
       (origin
         (method url-fetch)
         (uri (crate-uri "rawpointer" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "06ghpm9y7gacks78s3maakha07kbnwrxif5q37r2l7z1sali3b7b"))))
@@ -2845,12 +2796,34 @@ useful types and distributions, and some randomness-related algorithms.")
     (description "Extra methods for raw pointers.  For example
 @code{.post_inc()} and @code{.pre_dec()} (c.f. @code{ptr++} and @code{--ptr})
 and @code{ptrdistance}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rdrand-0.4
+  (package
+    (name "rust-rdrand")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rdrand" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1cjq0kwx1bk7jx3kzyciiish5gqsj7620dm43dc52sr8fzmm9037"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/nagisa/rust_rdrand/")
+    (synopsis "Random number generator")
+    (description
+     "This package is an implementation of random number generator based on
+@code{rdrand} and @cpde{rdseed} instructions")
+    (properties '((hidden? . #t)))
+    (license license:isc)))
+
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
-(define-public rust-redox-syscall ; guix upstreamable
+(define-public rust-redox-syscall-0.1
   (package
     (name "rust-redox-syscall")
     (version "0.1.56")
@@ -2858,7 +2831,7 @@ and @code{ptrdistance}.")
       (origin
         (method url-fetch)
         (uri (crate-uri "redox_syscall" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "110y7dyfm2vci4x5vk7gr0q551dvp31npl99fnsx2fb17wzwcf94"))))
@@ -2870,7 +2843,27 @@ system calls.")
     (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-regex-syntax
+(define-public rust-redox-termios-0.1
+  (package
+    (name "rust-redox-termios")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "redox-termios" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0xhgvdh62mymgdl3jqrngl8hr4i8xwpnbsxnldq0l47993z1r2by"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/redox-os/termios")
+    (synopsis "Rust library to access Redox termios functions")
+    (description
+     "This package provides a Rust library to access Redox termios functions.")
+    (properties '((hidden? . #t)))
+    (license license:expat)))
+
+(define-public rust-regex-syntax-0.6
   (package
     (name "rust-regex-syntax")
     (version "0.6.10")
@@ -2878,22 +2871,20 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "regex-syntax" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0p47lf38yj2g2fnmvnraccqlxwk35zr76hlnqi8yva932nzqam6d"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-ucd-util" ,rust-ucd-util))))
     (home-page "https://github.com/rust-lang/regex")
     (synopsis "Regular expression parser")
     (description
      "This package provides a regular expression parser.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-remove-dir-all
+(define-public rust-remove-dir-all-0.5
   (package
     (name "rust-remove-dir-all")
     (version "0.5.2")
@@ -2901,31 +2892,21 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "remove_dir_all" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0bkrlyg26mgizpiy1yb2hhpgscxcag8r5fnckqsvk25608vzm0sa"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-source
-           ;; The test phase expects there to be a README.md in the root directory.
-           (lambda _
-             (invoke "touch" "README.md"))))))
     (home-page "https://github.com/XAMPPRocky/remove_dir_all")
     (synopsis "Implementation of remove_dir_all for Windows")
     (description
      "This package provides a safe, reliable implementation of
 @code{remove_dir_all} for Windows")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-resolv-conf
+(define-public rust-resolv-conf-0.6
   (package
     (name "rust-resolv-conf")
     (version "0.6.2")
@@ -2933,24 +2914,20 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "resolv-conf" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1jvdsmksdf6yiipm3aqahyv8n1cjd7wqc8sa0p0gzsax3fmb8qxj"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-quick-error" ,rust-quick-error)
-        ("rust-hostname" ,rust-hostname))
-       #:cargo-test-flags '("--release" "--lib" "--examples"))) ; doc tests fail
     (home-page "https://github.com/tailhook/resolv-conf")
     (synopsis "/etc/resolv.conf parser")
     (description
      "An /etc/resolv.conf parser crate for Rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-rustc-demangle
+(define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
     (version "0.1.16")
@@ -2958,25 +2935,20 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "rustc-demangle" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "10qp42sl1wrdbgbbh8rnay2grm976z7hqgz32c4y09l1c071qsac"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-compiler-builtins"
-         ,rust-compiler-builtins)
-        ("rust-rustc-std-workspace-core"
-         ,rust-rustc-std-workspace-core))))
     (home-page "https://github.com/alexcrichton/rustc-demangle")
     (synopsis "Rust compiler symbol demangling")
     (description
      "This package demanges the symbols from the Rust compiler.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-rustc-hash
+(define-public rust-rustc-hash-1.0
   (package
     (name "rust-rustc-hash")
     (version "1.0.0")
@@ -2984,7 +2956,7 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "rustc-hash" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "114bf72466bl63i5hh8fgqfnhihs0w1m9c9jz505095agfixnvg0"))))
@@ -2993,10 +2965,11 @@ system calls.")
     (synopsis "Speedy, non-cryptographic hash used in rustc")
     (description
      "This package provides a speedy, non-cryptographic hash used in rustc.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-rustc-serialize
+(define-public rust-rustc-serialize-0.3
   (package
     (name "rust-rustc-serialize")
     (version "0.3.24")
@@ -3004,14 +2977,11 @@ system calls.")
       (origin
         (method url-fetch)
         (uri (crate-uri "rustc-serialize" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1nkg3vasg7nk80ffkazizgiyv3hb1l9g3d8h17cajbkx538jiwfw"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.3))))
     (home-page "https://github.com/rust-lang-deprecated/rustc-serialize")
     (synopsis "Generic serialization/deserialization support")
     (description
@@ -3019,10 +2989,11 @@ system calls.")
 corresponding to the @code{derive(RustcEncodable, RustcDecodable)} mode in the
 compiler.  Also includes support for hex, base64, and json encoding and
 decoding.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-rustc-std-workspace-core
+(define-public rust-rustc-std-workspace-core-1.0
   (package
     (name "rust-rustc-std-workspace-core")
     (version "1.0.0")
@@ -3030,7 +3001,7 @@ decoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "rustc-std-workspace-core" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1309xhwyai9xpz128xrfjqkmnkvgjwddznmj7brbd8i8f58zamhr"))))
@@ -3039,10 +3010,32 @@ decoding.")
     (synopsis "Explicitly empty crate for rust-lang/rust integration")
     (description "This crate provides an explicitly empty crate for
 rust-lang/rust integration.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-safemem
+(define-public rust-ryu-1.0
+  (package
+    (name "rust-ryu")
+    (version "1.0.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ryu" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1j0h74f1xqf9hjkhanp8i20mqc1aw35kr1iq9i79q7713mn51a5z"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/dtolnay/ryu")
+    (synopsis
+      "Fast floating point to string conversion")
+    (description
+      "Fast floating point to string conversion")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0 license:boost1.0))))
+
+(define-public rust-safemem-0.3
   (package
     (name "rust-safemem")
     (version "0.3.2")
@@ -3050,7 +3043,7 @@ rust-lang/rust integration.")
       (origin
         (method url-fetch)
         (uri (crate-uri "safemem" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1l1ljkm4lpyryrv2ndaxi1f7z1f3v9bwy1rzl9f9mbhx04iq9c6j"))))
@@ -3059,10 +3052,11 @@ rust-lang/rust integration.")
     (synopsis "Safe wrappers for memory-accessing functions")
     (description
      "Safe wrappers for memory-accessing functions, like @code{std::ptr::copy()}.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-same-file
+(define-public rust-same-file-1.0
   (package
     (name "rust-same-file")
     (version "1.0.5")
@@ -3070,23 +3064,21 @@ rust-lang/rust integration.")
       (origin
         (method url-fetch)
         (uri (crate-uri "same-file" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "08a4zy10pjindf2rah320s6shgswk13mqw7s61m8i1y1xpf8spjq"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-      (("rust-winapi-util" ,rust-winapi-util))))
     (home-page "https://github.com/BurntSushi/same-file")
     (synopsis "Determine whether two file paths point to the same file")
     (description
      "This package provides a simple crate for determining whether two file
 paths point to the same file.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-schannel
+(define-public rust-schannel-0.1
   (package
     (name "rust-schannel")
     (version "0.1.15")
@@ -3094,23 +3086,20 @@ paths point to the same file.")
       (origin
         (method url-fetch)
         (uri (crate-uri "schannel" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0f9k4pm8yc3z0n1n8hazvnrvg52f0sfxjc91bhf3r76rb3rapxpj"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-lazy-static" ,rust-lazy-static)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/steffengy/schannel-rs")
     (synopsis "Rust bindings to the Windows SChannel APIs")
     (description
      "Rust bindings to the Windows SChannel APIs providing TLS client and
 server functionality.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-scoped-threadpool
+(define-public rust-scoped-threadpool-0.1
   (package
     (name "rust-scoped-threadpool")
     (version "0.1.9")
@@ -3118,14 +3107,11 @@ server functionality.")
       (origin
         (method url-fetch)
         (uri (crate-uri "scoped_threadpool" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1a26d3lk40s9mrf4imhbik7caahmw2jryhhb6vqv6fplbbgzal8x"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-lazy-static" ,rust-lazy-static))))
     (home-page "https://github.com/Kimundi/scoped-threadpool-rs")
     (synopsis "library for scoped and cached threadpools")
     (description
@@ -3135,10 +3121,11 @@ the underlying threads.  Jobs are runnable by borrowing the pool for a given
 scope, during which an arbitrary number of them can be executed. These jobs can
 access data of any lifetime outside of the pools scope, which allows working on
 non-'static references in parallel.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-scoped-tls
+(define-public rust-scoped-tls-1.0
   (package
     (name "rust-scoped-tls")
     (version "1.0.0")
@@ -3146,7 +3133,7 @@ non-'static references in parallel.")
       (origin
         (method url-fetch)
         (uri (crate-uri "scoped-tls" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1hj8lifzvivdb1z02lfnzkshpvk85nkgzxsy2hc0zky9wf894spa"))))
@@ -3156,24 +3143,25 @@ non-'static references in parallel.")
     (description "This crate provides a library implementation of the standard
 library's old @code{scoped_thread_local!} macro for providing scoped access to
 @dfn{thread local storage} (TLS) so any type can be stored into TLS.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-scoped-tls-0.1
   (package
-    (inherit rust-scoped-tls)
+    (inherit rust-scoped-tls-1.0)
     (name "rust-scoped-tls")
     (version "0.1.2")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "scoped-tls" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0a2bn9d2mb07c6l16sadijy4p540g498zddfxyiq4rsqpwrglbrk"))))))
 
-(define-public rust-scopeguard
+(define-public rust-scopeguard-1.0
   (package
     (name "rust-scopeguard")
     (version "1.0.0")
@@ -3181,7 +3169,7 @@ library's old @code{scoped_thread_local!} macro for providing scoped access to
       (origin
         (method url-fetch)
         (uri (crate-uri "scopeguard" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "03aay84r1f6w87ckbpj6cc4rnsxkxcfs13n5ynxjia0qkgjiabml"))))
@@ -3193,12 +3181,13 @@ given closure when it goes out of scope, even if the code between panics
 (assuming unwinding panic).  Defines the macros @code{defer!},
 @code{defer_on_unwind!}, @code{defer_on_success!} as shorthands for guards
 with one of the implemented strategies.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-scopeguard-0.3
   (package
-    (inherit rust-scopeguard)
+    (inherit rust-scopeguard-1.0)
     (name "rust-scopeguard")
     (version "0.3.3")
     (source
@@ -3206,12 +3195,12 @@ with one of the implemented strategies.")
         (method url-fetch)
         (uri (crate-uri "scopeguard" version))
         (file-name
-          (string-append name "-" version ".tar.gz"))
+          (string-append name "-" version ".crate"))
         (sha256
          (base32
           "09sy9wbqp409pkwmqni40qmwa99ldqpl48pp95m1xw8sc19qy9cl"))))))
 
-(define-public rust-security-framework-sys
+(define-public rust-security-framework-sys-0.3
   (package
     (name "rust-security-framework-sys")
     (version "0.3.1")
@@ -3219,23 +3208,20 @@ with one of the implemented strategies.")
       (origin
         (method url-fetch)
         (uri (crate-uri "security-framework-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0mlsakq9kmqyc0fg2hcbgm6rjk55mb0rhjw2wid3hqdzkjcghdln"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-core-foundation-sys"
-         ,rust-core-foundation-sys))))
     (home-page "https://lib.rs/crates/security-framework-sys")
     (synopsis "Apple `Security.framework` low-level FFI bindings")
     (description
      "Apple `Security.framework` low-level FFI bindings.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-semver-parser
+(define-public rust-semver-parser-0.9
   (package
     (name "rust-semver-parser")
     (version "0.9.0")
@@ -3243,7 +3229,7 @@ with one of the implemented strategies.")
       (origin
         (method url-fetch)
         (uri (crate-uri "semver-parser" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1ahqhvgpzhcsd28id7xnrjv4419i9yyalhm7d7zi430qx0hi2vml"))))
@@ -3251,24 +3237,86 @@ with one of the implemented strategies.")
     (home-page "https://github.com/steveklabnik/semver-parser")
     (synopsis "Parsing of the semver spec")
     (description "This package provides for parsing of the semver spec.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-semver-parser-0.7
   (package
-    (inherit rust-semver-parser)
+    (inherit rust-semver-parser-0.9)
     (name "rust-semver-parser")
     (version "0.7.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "semver-parser" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "18vhypw6zgccnrlm5ps1pwa0khz7ry927iznpr88b87cagr1v2iq"))))))
 
-(define-public rust-shlex
+(define-public rust-serde-1.0
+  (package
+    (name "rust-serde")
+    (version "1.0.101")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serde" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1p8r24hagcsrl92w5z32nfrg9040qkgqf8iwwnf7mzigpavwk5lp"))))
+    (build-system cargo-build-system)
+    (home-page "https://serde.rs")
+    (synopsis "Generic serialization/deserialization framework")
+    (description
+     "This package provides a generic serialization/deserialization framework.")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-serde-derive-1.0
+  (package
+    (name "rust-serde-derive")
+    (version "1.0.101")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serde-derive" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0bn0wz3j48248187mfmypyqnh73mq734snxxhr05vmgcl51kl4sb"))))
+    (build-system cargo-build-system)
+    (home-page "https://serde.rs")
+    (synopsis
+      "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]")
+    (description
+      "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-serde-json-1.0
+  (package
+    (name "rust-serde-json")
+    (version "1.0.41")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serde-json" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1hipk84x40454mf599752mi7l08wb8qakz8vd6d3zp57d0mfnwig"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/serde-rs/json")
+    (synopsis "A JSON serialization file format")
+    (description
+     "This package provides a JSON serialization file format.")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-shlex-0.1
   (package
     (name "rust-shlex")
     (version "0.1.1")
@@ -3276,7 +3324,7 @@ with one of the implemented strategies.")
       (origin
         (method url-fetch)
         (uri (crate-uri "shlex" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1lmv6san7g8dv6jdfp14m7bdczq9ss7j7bgsfqyqjc3jnjfippvz"))))
@@ -3285,10 +3333,11 @@ with one of the implemented strategies.")
     (synopsis "Split a string into shell words, like Python's shlex")
     (description "This crate provides a method to split a string into shell
 words, like Python's shlex.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-slab
+(define-public rust-slab-0.4
   (package
     (name "rust-slab")
     (version "0.4.2")
@@ -3296,7 +3345,7 @@ words, like Python's shlex.")
       (origin
         (method url-fetch)
         (uri (crate-uri "slab" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1y59xsa27jk84sxzswjk60xcjf8b4fm5960jwpznrrcmasyva4f1"))))
@@ -3305,9 +3354,10 @@ words, like Python's shlex.")
     (synopsis "Pre-allocated storage for a uniform data type")
     (description "This create provides a pre-allocated storage for a uniform
 data type.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-socket2
+(define-public rust-socket2-0.3
   (package
     (name "rust-socket2")
     (version "0.3.11")
@@ -3315,29 +3365,21 @@ data type.")
       (origin
         (method url-fetch)
         (uri (crate-uri "socket2" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "11bdcz04i106g4q7swkll0qxrb4287srqd2k3aq2q6i22zjlvdz8"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if)
-        ("rust-libc" ,rust-libc)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:tests? #f)) ; Tests expect network connectivity.
     (home-page "https://github.com/alexcrichton/socket2-rs")
     (synopsis "Networking sockets in Rust")
     (description
      "This package provides utilities for handling networking sockets with a
 maximal amount of configuration possible intended.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-sourcefile
+(define-public rust-sourcefile-0.1
   (package
     (name "rust-sourcefile")
     (version "0.1.4")
@@ -3345,23 +3387,21 @@ maximal amount of configuration possible intended.")
       (origin
         (method url-fetch)
         (uri (crate-uri "sourcefile" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1lwa6973zs4bgj29my7agfjgk4nw9hp6j7dfnr13nid85fw7rxsb"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile))))
     (home-page "https://github.com/derekdreery/sourcefile-rs")
     (synopsis "Concatenate source from multiple files")
     (description
      "A library for concatenating source from multiple files, whilst keeping
 track of where each new file and line starts.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-spin
+(define-public rust-spin-0.5
   (package
     (name "rust-spin")
     (version "0.5.0")
@@ -3369,7 +3409,7 @@ track of where each new file and line starts.")
       (origin
         (method url-fetch)
         (uri (crate-uri "spin" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0m9clchsj0rf13bggsgvbv9haiy0f6rhvnvkpvkk8720a5pkydj4"))))
@@ -3379,9 +3419,10 @@ track of where each new file and line starts.")
     (description "This crate provides synchronization primitives based on
 spinning.  They may contain data, are usable without @code{std},and static
 initializers are available.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-stable-deref-trait
+(define-public rust-stable-deref-trait-1.1
   (package
     (name "rust-stable-deref-trait")
     (version "1.1.1")
@@ -3389,7 +3430,7 @@ initializers are available.")
       (origin
         (method url-fetch)
         (uri (crate-uri "stable_deref_trait" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1j2lkgakksmz4vc5hfawcch2ipiskrhjs1sih0f3br7s7rys58fv"))))
@@ -3402,10 +3443,11 @@ types which deref to a fixed address which is valid even when the containing
 type is moved.  For example, Box, Vec, Rc, Arc and String implement this trait.
 Additionally, it defines CloneStableDeref for types like Rc where clones deref
 to the same address.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-stacker
+(define-public rust-stacker-0.1
   (package
     (name "rust-stacker")
     (version "0.1.5")
@@ -3413,26 +3455,21 @@ to the same address.")
       (origin
         (method url-fetch)
         (uri (crate-uri "stacker" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0js0axz5nla1mkr2dm2vrv9rj964ng1lrv4l43sqlnfgawplhygv"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if)
-        ("rust-libc" ,rust-libc)
-        ("rust-winapi" ,rust-winapi)
-        ("rust-cc" ,rust-cc))))
     (home-page "https://github.com/rust-lang/stacker")
     (synopsis "Manual segmented stacks for Rust")
     (description
      "This package provides a stack growth library useful when implementing
 deeply recursive algorithms that may accidentally blow the stack.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-static-assertions
+(define-public rust-static-assertions-0.3
   (package
     (name "rust-static-assertions")
     (version "0.3.4")
@@ -3440,7 +3477,7 @@ deeply recursive algorithms that may accidentally blow the stack.")
       (origin
         (method url-fetch)
         (uri (crate-uri "static-assertions" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1lw33i89888yb3x29c6dv4mrkg3534n0rlg3r7qzh4p58xmv6gkz"))))
@@ -3450,9 +3487,10 @@ deeply recursive algorithms that may accidentally blow the stack.")
     (description
      "This package provides compile-time assertions to ensure that invariants
 are met.")
+    (properties '((hidden? . #t)))
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-stdweb-internal-runtime
+(define-public rust-stdweb-internal-runtime-0.1
   (package
     (name "rust-stdweb-internal-runtime")
     (version "0.1.4")
@@ -3460,7 +3498,7 @@ are met.")
       (origin
         (method url-fetch)
         (uri (crate-uri "stdweb-internal-runtime" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1nhpyra7glbwcpakhpj5a3d7h7kx1ynif473nzshmk226m91f8ym"))))
@@ -3469,10 +3507,11 @@ are met.")
     (synopsis "Internal runtime for the @code{stdweb} crate")
     (description "This crate provides internal runtime for the @code{stdweb}
 crate.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-stdweb-internal-test-macro
+(define-public rust-stdweb-internal-test-macro-0.1
   (package
     (name "rust-stdweb-internal-test-macro")
     (version "0.1.0")
@@ -3480,23 +3519,20 @@ crate.")
       (origin
         (method url-fetch)
         (uri (crate-uri "stdweb-internal-test-macro" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "12rrm7p77xnm3xacgn3rgniiyyjb4gq7902wpbljsvbx045z69l2"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2)
-        ("rust-quote" ,rust-quote))))
     (home-page "https://github.com/koute/stdweb")
     (synopsis "Internal crate of the `stdweb` crate")
     (description
      "Internal crate of the @code{stdweb} crate.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-streaming-stats
+(define-public rust-streaming-stats-0.2
   (package
     (name "rust-streaming-stats")
     (version "0.2.2")
@@ -3504,22 +3540,20 @@ crate.")
       (origin
         (method url-fetch)
         (uri (crate-uri "streaming-stats" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0l7xz4g6709s80zqpvlhrg0qhgz64r94cwhmfsg8xhabgznbp2px"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-num-traits" ,rust-num-traits))))
     (home-page "https://github.com/BurntSushi/rust-stats")
     (synopsis "Compute basic statistics on streams")
     (description
      "Experimental crate for computing basic statistics on streams.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-strsim
+(define-public rust-strsim-0.9
   (package
     (name "rust-strsim")
     (version "0.9.2")
@@ -3527,7 +3561,7 @@ crate.")
       (origin
         (method url-fetch)
         (uri (crate-uri "strsim" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1xphwhf86yxxmcpvm4mikj8ls41f6nf7gqyjm98b74mfk81h6b03"))))
@@ -3537,23 +3571,43 @@ crate.")
     (description "This crate includes implementations of string similarity
 metrics.  It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
 and Jaro-Winkler.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-strsim-0.8
   (package
-    (inherit rust-strsim)
+    (inherit rust-strsim-0.9)
     (name "rust-strsim")
     (version "0.8.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "strsim" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))))))
 
-(define-public rust-synstructure-test-traits
+(define-public rust-syn-1.0
+  (package
+    (name "rust-syn")
+    (version "1.0.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "syn" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "1gw03w7lzrlqmp2vislcybikgl5wkhrqi6sy70w93xss2abhx1b6"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/dtolnay/syn")
+    (synopsis "Parser for Rust source code")
+    (description "Parser for Rust source code")
+    (properties '((hidden? . #t)))
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-synstructure-test-traits-0.1
   (package
     (name "rust-synstructure-test-traits")
     (version "0.1.0")
@@ -3561,7 +3615,7 @@ and Jaro-Winkler.")
       (origin
         (method url-fetch)
         (uri (crate-uri "synstructure_test_traits" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1b3fs2b9kc1gy9dilaxqjbdl4z0mlrbbxjzkprdx953rif1c3q66"))))
@@ -3570,9 +3624,10 @@ and Jaro-Winkler.")
     (synopsis "Helper test traits for synstructure doctests")
     (description
      "This package provides helper test traits for synstructure doctests.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-tar
+(define-public rust-tar-0.4
   (package
     (name "rust-tar")
     (version "0.4.26")
@@ -3580,20 +3635,11 @@ and Jaro-Winkler.")
       (origin
         (method url-fetch)
         (uri (crate-uri "tar" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1lr6v3cpkfxd2lk5ll2jd8wr1xdskwj35smnh5sfb8xvzzxnn6dk"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-filetime" ,rust-filetime)
-        ("rust-libc" ,rust-libc)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-xattr" ,rust-xattr))
-       #:cargo-development-inputs
-       (("rust-tempdir" ,rust-tempdir))
-       #:tests? #f)) ; Test archives are not distributed in the crate tarball.
     (home-page "https://github.com/alexcrichton/tar-rs")
     (synopsis "Tar file reading/writing for Rust")
     (description
@@ -3602,10 +3648,11 @@ writer.  This library does not currently handle compression, but it is abstract
 over all I/O readers and writers.  Additionally, great lengths are taken to
 ensure that the entire contents are never required to be entirely resident in
 memory all at once.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-tempdir
+(define-public rust-tempdir-0.3
   (package
     (name "rust-tempdir")
     (version "0.3.7")
@@ -3613,52 +3660,43 @@ memory all at once.")
       (origin
         (method url-fetch)
         (uri (crate-uri "tempdir" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1n5n86zxpgd85y0mswrp5cfdisizq2rv3la906g6ipyc03xvbwhm"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-rand" ,rust-rand)
-        ("rust-remove-dir-all" ,rust-remove-dir-all))))
     (home-page "https://github.com/rust-lang-deprecated/tempdir")
     (synopsis "Temporary directory management for Rust")
     (description
      "This package provides a library for managing a temporary directory and
 deleting all contents when it's dropped.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-tempfile
+(define-public rust-tempfile-3.0
   (package
     (name "rust-tempfile")
-    (version "3.0.2")
+    (version "3.0.8")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "tempfile" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0ny1cdbcsrmwjpy4k9366xm6p0jqkrmrvr0cln2djxspp1inyxs7"))))
+          "1vqk7aq2l04my2r3jiyyxirnf8f90nzcvjasvrajivb85s7p7i3x"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-rand" ,rust-rand)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-remove-dir-all" ,rust-remove-dir-all)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "http://stebalien.com/projects/tempfile-rs")
     (synopsis "Library for managing temporary files and directories")
     (description
      "This package provides a library for managing temporary files and
 directories.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-term
+(define-public rust-term-0.4
   (package
     (name "rust-term")
     (version "0.4.6")
@@ -3666,23 +3704,20 @@ directories.")
       (origin
         (method url-fetch)
         (uri (crate-uri "term" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1wbh8ngqkqr3f6wz902yplf60bd5yapnckvrkgmzp5nffi7n8qzs"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-kernel32-sys" ,rust-kernel32-sys)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/Stebalien/term")
     (synopsis "Terminal formatting library")
     (description
      "This package provides a terminal formatting library in rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-termcolor
+(define-public rust-termcolor-1.0
   (package
     (name "rust-termcolor")
     (version "1.0.5")
@@ -3690,22 +3725,40 @@ directories.")
       (origin
         (method url-fetch)
         (uri (crate-uri "termcolor" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0vjfsn1a8zvqhnrbygrz1id6yckwv1dncw3w4zj65qdx0f00kmln"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-wincolor" ,rust-wincolor))))
     (home-page "https://github.com/BurntSushi/termcolor")
     (synopsis "Library for writing colored text to a terminal")
     (description "This package provides a simple cross platform library for
 writing colored text to a terminal.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-termios
+(define-public rust-termion-1.5
+  (package
+    (name "rust-termion")
+    (version "1.5.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "termion" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0c634rg520zjjfhwnxrc2jbfjz7db0rcpsjs1qici0nyghpv53va"))))
+    (build-system cargo-build-system)
+    (home-page "https://gitlab.redox-os.org/redox-os/termion")
+    (synopsis "Library for manipulating terminals")
+    (description
+     "This package provides a bindless library for manipulating terminals.")
+    (properties '((hidden? . #t)))
+    (license license:expat)))
+
+(define-public rust-termios-0.3
   (package
     (name "rust-termios")
     (version "0.3.1")
@@ -3713,13 +3766,11 @@ writing colored text to a terminal.")
       (origin
         (method url-fetch)
         (uri (crate-uri "termios" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "09any1p4jp4bphvb5ikagnvwjc3xn2djchy96nkpa782xb2j1dkj"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-libc" ,rust-libc))))
     (home-page  "https://github.com/dcuddeback/termios-rs")
     (synopsis "Safe bindings for the termios library")
     (description
@@ -3727,9 +3778,33 @@ writing colored text to a terminal.")
 to the terminal I/O interface implemented by Unix operating systems.  The safe
 bindings are a small wrapper around the raw C functions, which converts integer
 return values to @code{std::io::Result} to indicate success or failure.")
+    (properties '((hidden? . #t)))
+    (license license:expat)))
+
+(define-public rust-textwrap-0.11
+  (package
+    (name "rust-textwrap")
+    (version "0.11.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "textwrap" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/mgeisler/textwrap")
+    (synopsis "Library for word wrapping, indenting, and dedenting strings")
+    (description
+     "Textwrap is a small library for word wrapping, indenting, and dedenting
+strings.  You can use it to format strings (such as help and error messages)
+for display in commandline applications.  It is designed to be efficient and
+handle Unicode characters correctly.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-thread-id
+(define-public rust-thread-id-3.3
   (package
     (name "rust-thread-id")
     (version "3.3.0")
@@ -3737,25 +3812,21 @@ return values to @code{std::io::Result} to indicate success or failure.")
       (origin
         (method url-fetch)
         (uri (crate-uri "thread-id" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1h90v19fjz3x9b25ywh68z5yf2zsmm6h5zb4rl302ckbsp4z9yy7"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/ruuda/thread-id")
     (synopsis "Get a unique ID for the current thread in Rust")
     (description
      "For diagnostics and debugging it can often be useful to get an ID that is
 different for every thread.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-thread-local
+(define-public rust-thread-local-0.3
   (package
     (name "rust-thread-local")
     (version "0.3.6")
@@ -3763,21 +3834,19 @@ different for every thread.")
       (origin
         (method url-fetch)
         (uri (crate-uri "thread_local" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "06rzik99p8c5js8238yhc8rk6np543ylb1dy9nrw5v80j0r3xdf6"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-      (("rust-lazy-static" ,rust-lazy-static))))
     (home-page "https://github.com/Amanieu/thread_local-rs")
     (synopsis "Per-object thread-local storage")
     (description "Per-object thread-local storage")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-threadpool
+(define-public rust-threadpool-1.7
   (package
     (name "rust-threadpool")
     (version "1.7.1")
@@ -3785,23 +3854,21 @@ different for every thread.")
       (origin
         (method url-fetch)
         (uri (crate-uri "threadpool" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0rd89n1q7vy47w4c32cnynibffv9kj3jy3dwr0536n9lbw5ckw72"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-num-cpus" ,rust-num-cpus))))
     (home-page "https://github.com/rust-threadpool/rust-threadpool")
     (synopsis "Thread pool for running jobs on a fixed set of worker threads")
     (description
      "This package provides a thread pool for running a number of jobs on a
 fixed set of worker threads.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-time
+(define-public rust-time-0.1
   (package
     (name "rust-time")
     (version "0.1.39")
@@ -3809,30 +3876,21 @@ fixed set of worker threads.")
       (origin
         (method url-fetch)
         (uri (crate-uri "time" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "161hqx0gw722ikydanpahky447vaxqncwmkj66rny282vzqpalx1"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc)
-        ("rust-redox-syscall" ,rust-redox-syscall)
-        ("rust-rustc-serialize" ,rust-rustc-serialize)
-        ("rust-winapi" ,rust-winapi))
-       #:cargo-development-inputs
-       (("rust-log" ,rust-log)
-        ("rust-winapi" ,rust-winapi))
-       #:tests? #f)) ; Tests have difficulty with the timezones.
     (home-page "https://github.com/rust-lang-deprecated/time")
     (synopsis "Simple time handling in Rust")
     (description
      "This package provides utilities for working with time-related functions
 in Rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-tokio-mock-task
+(define-public rust-tokio-mock-task-0.1
   (package
     (name "rust-tokio-mock-task")
     (version "0.1.1")
@@ -3840,19 +3898,42 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "tokio-mock-task" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1y7q83qfk9ljjfvs82b453pmz9x1v3d6kr4x55j8mal01s6790dw"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-futures" ,rust-futures))))
     (home-page  "https://github.com/carllerche/tokio-mock-task")
     (synopsis "Mock a Tokio task")
     (description "Mock a Tokio task")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-tracing-core
+(define-public rust-toml-0.5
+  (package
+    (name "rust-toml")
+    (version "0.5.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "toml" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "093p48vpqm4bb8q3514xsij0dkljxlr3jp9ypxr4p48xjisvxan7"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/alexcrichton/toml-rs")
+    (synopsis "Rust encoder and decoder of TOML-formatted files and streams")
+    (description
+     "This package provides a native Rust encoder and decoder of TOML-formatted
+files and streams.  Provides implementations of the standard
+Serialize/Deserialize traits for TOML data to facilitate deserializing and
+serializing Rust structures.")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-tracing-core-0.1
   (package
     (name "rust-tracing-core")
     (version "0.1.2")
@@ -3860,22 +3941,20 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "tracing-core" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "01fa73wzw2m5ybi3kkd52dgrw97mgc3i6inmhwys46ab28giwnxi"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-lazy-static" ,rust-lazy-static))))
     (home-page "https://tokio.rs")
     (synopsis "Core primitives for application-level tracing")
     (description
      "Core primitives for application-level tracing.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-traitobject
+(define-public rust-traitobject-0.1
   (package
     (name "rust-traitobject")
     (version "0.1.0")
@@ -3883,7 +3962,7 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "traitobject" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0yb0n8822mr59j200fyr2fxgzzgqljyxflx9y8bdy3rlaqngilgg"))))
@@ -3891,10 +3970,11 @@ in Rust.")
     (home-page "https://github.com/reem/rust-traitobject")
     (synopsis "Unsafe helpers for dealing with raw trait objects")
     (description "Unsafe helpers for dealing with raw trait objects.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-try-from
+(define-public rust-try-from-0.3
   (package
     (name "rust-try-from")
     (version "0.3.2")
@@ -3902,21 +3982,19 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "try_from" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "12wdd4ja7047sd3rx70hv2056hyc8gcdllcx3a41g1rnw64kng98"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-      (("rust-cfg-if" ,rust-cfg-if))))
     (home-page "https://github.com/derekjw/try_from")
     (synopsis "TryFrom and TryInto traits for failable conversions")
     (description
       "TryFrom and TryInto traits for failable conversions that return a Result.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-try-lock
+(define-public rust-try-lock-0.2
   (package
     (name "rust-try-lock")
     (version "0.2.2")
@@ -3924,7 +4002,7 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "try-lock" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "10p36rx6pqi9d0zr876xa8vksx2m66ha45myakl50rn08dxyn176"))))
@@ -3933,9 +4011,10 @@ in Rust.")
     (synopsis "Lightweight atomic lock")
     (description
      "This package provides a lightweight atomic lock.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-typeable
+(define-public rust-typeable-0.1
   (package
     (name "rust-typeable")
     (version "0.1.2")
@@ -3943,7 +4022,7 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "typeable" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "11w8dywgnm32hb291izjvh4zjd037ccnkk77ahk63l913zwzc40l"))))
@@ -3951,9 +4030,10 @@ in Rust.")
     (home-page "https://github.com/reem/rust-typeable")
     (synopsis "Exposes Typeable, for getting TypeIds at runtime")
     (description "Exposes Typeable, for getting TypeIds at runtime.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-typemap
+(define-public rust-typemap-0.3
   (package
     (name "rust-typemap")
     (version "0.3.3")
@@ -3961,21 +4041,19 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "typemap" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1xm1gbvz9qisj1l6d36hrl9pw8imr8ngs6qyanjnsad3h0yfcfv5"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-unsafe-any" ,rust-unsafe-any))))
     (home-page "https://github.com/reem/rust-typemap")
     (synopsis "Typesafe store for many value types")
     (description
      "A typesafe store for many value types.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-typenum
+(define-public rust-typenum-1.10
   (package
     (name "rust-typenum")
     (version "1.10.0")
@@ -3983,7 +4061,7 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "typenum" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0sc1jirllfhdi52z1xv9yqzxzpk6v7vadd13n7wvs1wnjipn6bb1"))))
@@ -3994,10 +4072,11 @@ in Rust.")
 compile time.  It currently supports bits, unsigned integers, and signed
 integers.  It also provides a type-level array of type-level numbers, but its
 implementation is incomplete.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-ucd-trie
+(define-public rust-ucd-trie-0.1
   (package
     (name "rust-ucd-trie")
     (version "0.1.2")
@@ -4005,22 +4084,20 @@ implementation is incomplete.")
       (origin
         (method url-fetch)
         (uri (crate-uri "ucd-trie" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1hh6kyzh5xygwy96wfmsf8v8czlzhps2lgbcyhj1xzy1w1xys04g"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-      (("rust-lazy-static" ,rust-lazy-static))))
     (home-page "https://github.com/BurntSushi/ucd-generate")
     (synopsis "Trie for storing Unicode codepoint sets and maps")
     (description
      "This package provides a trie for storing Unicode codepoint sets and maps.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-ucd-util
+(define-public rust-ucd-util-0.1
   (package
     (name "rust-ucd-util")
     (version "0.1.5")
@@ -4028,7 +4105,7 @@ implementation is incomplete.")
       (origin
         (method url-fetch)
         (uri (crate-uri "ucd-util" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0x088q5z0m09a2jqcfgsnq955y8syn1mgn35cl78qinkxm4kp6zs"))))
@@ -4037,10 +4114,11 @@ implementation is incomplete.")
     (synopsis "library for working with the Unicode character database")
     (description "This package provides a small utility library for working
 with the Unicode character database.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-unicase
+(define-public rust-unicase-2.4
   (package
     (name "rust-unicase")
     (version "2.4.0")
@@ -4048,41 +4126,41 @@ with the Unicode character database.")
       (origin
         (method url-fetch)
         (uri (crate-uri "unicase" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1xmpmkakhhblq7dzab1kwyv925kv7fqjkjsxjspg6ix9n88makm8"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-version-check" ,rust-version-check-0.1))))
     (home-page "https://github.com/seanmonstar/unicase")
     (synopsis "Case-insensitive wrapper around strings")
     (description
      "A case-insensitive wrapper around strings.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-unicode-width
+(define-public rust-unicode-width-0.1
   (package
     (name "rust-unicode-width")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "unicode-width" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "09k5lipygardwy0660jhls08fsgknrazzivmn804gps53hiqc8w8"))))
+          "082f9hv1r3gcd1xl33whjhrm18p0w9i77zhhhkiccb5r47adn1vh"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/unicode-rs/unicode-width")
     (synopsis "Determine displayed width according to Unicode rules")
     (description "This crate allows you to determine displayed width of
 @code{char} and @code{str} types according to Unicode Standard Annex #11 rules.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-unicode-xid
+(define-public rust-unicode-xid-0.2
   (package
     (name "rust-unicode-xid")
     (version "0.2.0")
@@ -4091,7 +4169,7 @@ with the Unicode character database.")
         (method url-fetch)
         (uri (crate-uri "unicode-xid" version))
         (file-name
-          (string-append name "-" version ".tar.gz"))
+          (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0z09fn515xm7zyr0mmdyxa9mx2f7azcpv74pqmg611iralwpcvl2"))))
@@ -4101,24 +4179,25 @@ with the Unicode character database.")
     (synopsis "Determine Unicode XID related properties")
     (description "Determine whether characters have the XID_Start
 or XID_Continue properties according to Unicode Standard Annex #31.")
+    (properties '((hidden? . #t)))
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))
 
 (define-public rust-unicode-xid-0.1
   (package
-    (inherit rust-unicode-xid)
+    (inherit rust-unicode-xid-0.2)
     (name "rust-unicode-xid")
     (version "0.1.0")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "unicode-xid" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1z57lqh4s18rr4x0j4fw4fmp9hf9346h0kmdgqsqx0fhjr3k0wpw"))))))
 
-(define-public rust-unindent
+(define-public rust-unindent-0.1
   (package
     (name "rust-unindent")
     (version "0.1.5")
@@ -4126,7 +4205,7 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
       (origin
         (method url-fetch)
         (uri (crate-uri "unindent" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32 "14s97blyqgf9hzxk22iazrghj60midajkw2801dfspz3n2iqmwb3"))))
     (build-system cargo-build-system)
@@ -4134,10 +4213,11 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
     (synopsis "Remove a column of leading whitespace from a string")
     (description "This crate allows you to remove a column of leading
 whitespace from a string.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-unreachable
+(define-public rust-unreachable-1.0
   (package
     (name "rust-unreachable")
     (version "1.0.0")
@@ -4145,21 +4225,20 @@ whitespace from a string.")
       (origin
         (method url-fetch)
         (uri (crate-uri "unreachable" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0mps2il4xy2mjqc3appas27hhn2xmvixc3bzzhfrjj74gy3i0a1q"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-void" ,rust-void))))
     (home-page "https://github.com/reem/rust-unreachable")
     (synopsis "Unreachable code optimization hint in rust")
     (description
      "This package provides an unreachable code optimization hint in rust.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-unsafe-any
+(define-public rust-unsafe-any-0.4
   (package
     (name "rust-unsafe-any")
     (version "0.4.2")
@@ -4167,21 +4246,19 @@ whitespace from a string.")
       (origin
         (method url-fetch)
         (uri (crate-uri "unsafe-any" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0zwwphsqkw5qaiqmjwngnfpv9ym85qcsyj7adip9qplzjzbn00zk"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-traitobject" ,rust-traitobject))))
     (home-page "https://tokio.rs")
     (synopsis "Traits and implementations for unchecked downcasting")
     (description
      "Traits and implementations for unchecked downcasting.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-untrusted
+(define-public rust-untrusted-0.7
   (package
     (name "rust-untrusted")
     (version "0.7.0")
@@ -4189,7 +4266,7 @@ whitespace from a string.")
       (origin
         (method url-fetch)
         (uri (crate-uri "untrusted" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1kmfykcwif6ashkwg54gcnhxj03kpba2i9vc7z5rpr0xlgvrwdk0"))))
@@ -4199,9 +4276,10 @@ whitespace from a string.")
     (description
      "Safe, fast, zero-panic, zero-crashing, zero-allocation parsing of
 untrusted inputs in Rust.")
+    (properties '((hidden? . #t)))
     (license license:isc)))
 
-(define-public rust-vcpkg
+(define-public rust-vcpkg-0.2
   (package
     (name "rust-vcpkg")
     (version "0.2.7")
@@ -4209,25 +4287,42 @@ untrusted inputs in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "vcpkg" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "15dzk1b96q946v9aisbd1bbhi33n93wvgziwh1shmscn1xflbp9k"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-lazy-static" ,rust-lazy-static)
-        ("rust-tempdir" ,rust-tempdir))
-       #:tests? #f)) ; tests try to link libmysql, graphite2, harfbuzz
     (home-page "https://github.com/mcgoo/vcpkg-rs")
     (synopsis "Find native dependencies in a vcpkg tree at build time")
     (description
      "This package provides a library to find native dependencies in a
 @code{vcpkg} tree at build time in order to be used in Cargo build scripts.")
+    (properties '((hidden? . #t)))
+    (license (list license:asl2.0
+                   license:expat))))
+
+(define-public rust-vec-map-0.8
+  (package
+    (name "rust-vec-map")
+    (version "0.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "vec_map" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/contain-rs/vec-map")
+    (synopsis "Simple map based on a vector for small integer keys")
+    (description
+     "This package provides a simple map based on a vector for small integer keys.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-version-check
+(define-public rust-version-check-0.9
   (package
     (name "rust-version-check")
     (version "0.9.1")
@@ -4235,7 +4330,7 @@ untrusted inputs in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "version_check" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1kikqlnggii1rvnxrbls55sc46lxvinz5k3giscgncjj4p87b1q7"))))
@@ -4248,24 +4343,25 @@ version requirements.  The version is queried by calling the Rust compiler with
 @code{--version}.  The path to the compiler is determined first via the
 @code{RUSTC} environment variable.  If it is not set, then @code{rustc} is used.
 If that fails, no determination is made, and calls return None.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-version-check-0.1
   (package
-    (inherit rust-version-check)
+    (inherit rust-version-check-0.9)
     (name "rust-version-check")
     (version "0.1.5")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "version_check" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1pf91pvj8n6akh7w6j5ypka6aqz08b3qpzgs0ak2kjf4frkiljwi"))))))
 
-(define-public rust-void
+(define-public rust-void-1.0
   (package
     (name "rust-void")
     (version "1.0.2")
@@ -4273,7 +4369,7 @@ If that fails, no determination is made, and calls return None.")
       (origin
         (method url-fetch)
         (uri (crate-uri "void" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0zc8f0ksxvmhvgx4fdg0zyn6vdnbxd2xv9hfx4nhzg6kbs4f80ka"))))
@@ -4282,9 +4378,10 @@ If that fails, no determination is made, and calls return None.")
     (synopsis "Void type for use in statically impossible cases")
     (description
      "The uninhabited void type for use in statically impossible cases.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-walkdir
+(define-public rust-walkdir-2.2
   (package
     (name "rust-walkdir")
     (version "2.2.9")
@@ -4292,25 +4389,19 @@ If that fails, no determination is made, and calls return None.")
       (origin
         (method url-fetch)
         (uri (crate-uri "walkdir" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "07ppalpvxkf8cnqr64np422792y4z5bs9m8b4nrflh5rm17wjn4n"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-same-file" ,rust-same-file)
-        ("rust-winapi" ,rust-winapi)
-        ("rust-winapi-util" ,rust-winapi-util))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment))))
     (home-page  "https://github.com/BurntSushi/walkdir")
     (synopsis "Recursively walk a directory")
     (description "Recursively walk a directory.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-wasi
+(define-public rust-wasi-0.5
   (package
     (name "rust-wasi")
     (version "0.5.0")
@@ -4319,7 +4410,7 @@ If that fails, no determination is made, and calls return None.")
        (method url-fetch)
        (uri (crate-uri "wasi" version))
        (file-name
-        (string-append name "-" version ".tar.gz"))
+        (string-append name "-" version ".crate"))
        (sha256
         (base32
          "1ir3pd4phdfml0cbziw9bqp7mnk0vfp9biy8bh25lln6raml4m7x"))))
@@ -4328,9 +4419,10 @@ If that fails, no determination is made, and calls return None.")
     (synopsis "Experimental WASI API bindings for Rust")
     (description "This package contains experimental WASI API bindings
 in Rust.")
+    (properties '((hidden? . #t)))
     (license license:asl2.0)))
 
-(define-public rust-wasm-bindgen-shared
+(define-public rust-wasm-bindgen-shared-0.2
   (package
     (name "rust-wasm-bindgen-shared")
     (version "0.2.48")
@@ -4338,7 +4430,7 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "wasm-bindgen-shared" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "08rnfhjyk0f6liv8n4rdsvhx7r02glkhcbj2lp9lcbkbfpad9hnr"))))
@@ -4347,10 +4439,11 @@ in Rust.")
     (synopsis "Shared support between wasm-bindgen and wasm-bindgen cli")
     (description "This package provides shared support between
 @code{wasm-bindgen} and @code{wasm-bindgen} cli, an internal dependency.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-wasm-bindgen-test-macro
+(define-public rust-wasm-bindgen-test-macro-0.2
   (package
     (name "rust-wasm-bindgen-test-macro")
     (version "0.2.48")
@@ -4358,23 +4451,20 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "wasm-bindgen-test-macro" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0n28mr6vncf1k1qr2b5bvfxq4jvqkjdzq0z0ab6w2f5d6v8q3q3l"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2)
-        ("rust-quote" ,rust-quote))))
     (home-page "https://github.com/rustwasm/wasm-bindgen")
     (synopsis "Internal testing macro for wasm-bindgen")
     (description
      "This library contains the internal testing macro for wasm-bindgen.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-widestring
+(define-public rust-widestring-0.4
   (package
     (name "rust-widestring")
     (version "0.4.0")
@@ -4382,24 +4472,22 @@ in Rust.")
       (origin
         (method url-fetch)
         (uri (crate-uri "widestring" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1dhx6dndjsz1y7c9w06922412kdxyrrkqblvggm76mh8z17hxz7g"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-development-inputs
-       (("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/starkat99/widestring-rs")
     (synopsis "Wide string Rust FFI library")
     (description
      "A wide string Rust FFI library for converting to and from wide strings,
 such as those often used in Windows API or other FFI libraries.  Both UTF-16 and
 UTF-32 types are provided, including support for malformed encoding.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-winapi
+(define-public rust-winapi-0.3
   (package
     (name "rust-winapi")
     (version "0.3.8")
@@ -4407,46 +4495,40 @@ UTF-32 types are provided, including support for malformed encoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1ii9j9lzrhwri0902652awifzx9fpayimbp6hfhhc296xcg0k4w0"))))
     (build-system cargo-build-system)
+    ;; This package depends unconditionally on these two crates.
     (arguments
      `(#:cargo-inputs
-       (("rust-winapi-i686-pc-windows-gnu"
-         ,rust-winapi-i686-pc-windows-gnu)
-        ("rust-winapi-x86-64-pc-windows-gnu"
-         ,rust-winapi-x86-64-pc-windows-gnu))))
+       (("winapi-i686-pc-windows-gnu" ,rust-winapi-i686-pc-windows-gnu-0.4)
+        ("winapi-x86-64-pc-windows-gnu" ,rust-winapi-x86-64-pc-windows-gnu-0.4))))
     (home-page "https://github.com/retep998/winapi-rs")
     (synopsis "Raw FFI bindings for all of Windows API.")
     (description
      "Raw FFI bindings for all of Windows API.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-winapi-0.2
   (package
-    (inherit rust-winapi)
+    (inherit rust-winapi-0.3)
     (name "rust-winapi")
     (version "0.2.8")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
-    ;; We do not want to package 48 -sys crates for a package we do not want.
-    ;; They are all dev dependencies, so we skip building and testing.
-    (arguments
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build))))))
+    (arguments '())))
 
-(define-public rust-winapi-build
+(define-public rust-winapi-build-0.1
   (package
     (name "rust-winapi-build")
     (version "0.1.1")
@@ -4454,7 +4536,7 @@ UTF-32 types are provided, including support for malformed encoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi-build" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
@@ -4463,9 +4545,10 @@ UTF-32 types are provided, including support for malformed encoding.")
     (synopsis "Common code for build.rs in WinAPI -sys crates")
     (description
      "Common code for build.rs in WinAPI -sys crates.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-winapi-i686-pc-windows-gnu
+(define-public rust-winapi-i686-pc-windows-gnu-0.4
   (package
     (name "rust-winapi-i686-pc-windows-gnu")
     (version "0.4.0")
@@ -4473,7 +4556,7 @@ UTF-32 types are provided, including support for malformed encoding.")
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi-i686-pc-windows-gnu" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"))))
@@ -4483,10 +4566,11 @@ UTF-32 types are provided, including support for malformed encoding.")
     (description "This crate provides import libraries for the
 i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
 @code{winapi} instead.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-winapi-util
+(define-public rust-winapi-util-0.1
   (package
     (name "rust-winapi-util")
     (version "0.1.2")
@@ -4494,22 +4578,21 @@ i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi-util" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1j839dc6y8vszvrsb7yk0qvs0w6asnahxzbyans37vnsw6vbls3i"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-winapi" ,rust-winapi))))
     (home-page "https://github.com/BurntSushi/winapi-util")
     (synopsis "Dumping ground for high level safe wrappers over winapi")
     (description
      "This package provides a dumping ground for high level safe wrappers over
 winapi.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-winapi-x86-64-pc-windows-gnu
+(define-public rust-winapi-x86-64-pc-windows-gnu-0.4
   (package
     (name "rust-winapi-x86-64-pc-windows-gnu")
     (version "0.4.0")
@@ -4517,7 +4600,7 @@ winapi.")
       (origin
         (method url-fetch)
         (uri (crate-uri "winapi-x86_64-pc-windows-gnu" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"))))
@@ -4527,10 +4610,11 @@ winapi.")
     (description "This package provides import libraries for the
 x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
 @code{winapi} instead.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-wincolor
+(define-public rust-wincolor-1.0
   (package
     (name "rust-wincolor")
     (version "1.0.2")
@@ -4538,24 +4622,21 @@ x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
       (origin
         (method url-fetch)
         (uri (crate-uri "wincolor" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "1agaf3hcav113i86912ajnw6jxcy4rvkrgyf8gdj8kc031mh3xcn"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi)
-        ("rust-winapi-util" ,rust-winapi-util))))
     (home-page "https://github.com/BurntSushi/termcolor/tree/master/wincolor")
     (synopsis "Windows API for controlling text color in a Windows console")
     (description
      "This package provides a simple Windows specific API for controlling text
 color in a Windows console.")
+    (properties '((hidden? . #t)))
     (license (list license:unlicense
                    license:expat))))
 
-(define-public rust-winutil
+(define-public rust-winutil-0.1
   (package
     (name "rust-winutil")
     (version "0.1.1")
@@ -4563,26 +4644,19 @@ color in a Windows console.")
       (origin
         (method url-fetch)
         (uri (crate-uri "winutil" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0vkyl3fbbf05n5ph5yz8sfaccrk9x3qsr25560w6w68ldf5i7bvx"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi))
-       ;; This unmaintained crate cannot find winapi when built directly.
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'build))))
     (home-page "https://bitbucket.org/DaveLancaster/winutil")
     (synopsis "Library wrapping a handful of useful winapi functions")
     (description
      "A simple library wrapping a handful of useful winapi functions.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-ws2-32-sys
+(define-public rust-ws2-32-sys-0.2
   (package
     (name "rust-ws2-32-sys")
     (version "0.2.1")
@@ -4590,29 +4664,19 @@ color in a Windows console.")
       (origin
         (method url-fetch)
         (uri (crate-uri "ws2_32-sys" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-winapi" ,rust-winapi-0.2)
-        ("rust-winapi-build" ,rust-winapi-build))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-Cargo-toml
-           (lambda _
-             (substitute* "Cargo.toml"
-               ((", path =.* }") "}\n"))
-             #t)))))
     (home-page "https://github.com/retep998/winapi-rs")
     (synopsis "Function definitions for the Windows API library ws2_32")
     (description
      "Contains function definitions for the Windows API library ws2_32.")
+    (properties '((hidden? . #t)))
     (license license:expat)))
 
-(define-public rust-xattr
+(define-public rust-xattr-0.2
   (package
     (name "rust-xattr")
     (version "0.2.2")
@@ -4620,26 +4684,21 @@ color in a Windows console.")
       (origin
         (method url-fetch)
         (uri (crate-uri "xattr" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0k556fb6f5jc907975j9c8iynl2fqz3rf0w6fiig83i4yi0kfk14"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc))
-       #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile))
-       #:tests? #f)) ; Tests assume read access to /var.
     (home-page "https://github.com/Stebalien/xattr")
     (synopsis "Unix extended filesystem attributes")
     (description
      "This package provide a small library for setting, getting, and listing
 extended attributes.")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-xdg
+(define-public rust-xdg-2.2
   (package
     (name "rust-xdg")
     (version "2.2.0")
@@ -4647,7 +4706,7 @@ extended attributes.")
       (origin
         (method url-fetch)
         (uri (crate-uri "xdg" version))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
           "0mws8a0fr3cqk5nh7aq9lmkmhzghvasqy4mhw6nnza06l4d6i2fh"))))
@@ -4657,5 +4716,6 @@ extended attributes.")
     (description
      "This package provides a library for storing and retrieving files according
 to XDG Base Directory specification")
+    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 9373f7d9a9..669ee93819 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3028,7 +3028,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
     (native-inputs
      `(("go-github.com-howeyc-gopass" ,go-github.com-howeyc-gopass)
        ("go-github.com-jessevdk-go-flags" ,go-github.com-jessevdk-go-flags)
-       ("go-golang.org-x-crypto-ssh-terminal" ,go-golang.org-x-crypto-ssh-terminal)
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
        ("go-gopkg.in-mgo.v2" ,go-gopkg.in-mgo.v2)
        ("go-gopkg.in-tomb.v2" ,go-gopkg.in-tomb.v2)
        ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 23acf0aeb8..cfa98f63f2 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -67,7 +67,7 @@
   #:use-module (ice-9 match))
 
 (define-public diffoscope
-  (let ((version "126"))
+  (let ((version "129"))
     (package
       (name "diffoscope")
       (version version)
@@ -79,7 +79,7 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0lmn2116g5l05nns8qd2kwsnnd144zrqhs53fsr88inzf0mkqwhj"))))
+                  "1r8hq93gga9n4jv4fyf1divc9cwvvjadkzl47lazzrfy3nn1qjwr"))))
       (build-system python-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
@@ -153,6 +153,8 @@
       (native-inputs `(("python-pytest" ,python-pytest)
                        ("python-chardet" ,python-chardet)
                        ("python-binwalk" ,python-binwalk)
+                       ("python-pypdf2" ,python-pypdf2)
+                       ("python-progressbar33" ,python-progressbar33)
                        ;; test suite skips tests when tool is missing
                        ,@(match (%current-system)
                                 ;; ghc is only available on x86 currently.
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 08ce9eb2d7..88a917dda7 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -612,7 +612,7 @@ passphrases.")
 (define-public ndctl
   (package
     (name "ndctl")
-    (version "65")
+    (version "67")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -621,7 +621,7 @@ passphrases.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0d8hzfvyxs2q8kgkwgdizlml41kin4mhx3vpdsjk34pfi7mqy69y"))))
+                "076jgw1g2aafqgnq705in0wnabysqk46dq5yxdv1qzgjmyhka39n"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index b072a43e11..ec4008bf19 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -273,21 +273,33 @@ the two.")
 (define-public libasr
   (package
     (name "libasr")
-    (version "201602131606")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
-                           name "-" version ".tar.gz"))
+                           "libasr-" version ".tar.gz"))
        (sha256
-        (base32
-         "18kdmbjsxrfai16d66qslp48b1zf7gr8him2jj5dcqgbsl44ls75"))))
+        (base32 "13fn4sr4vlcx1xijpl26nmnxawyls4lr5q3mi11jdm76f80qxn4w"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'bootstrap
+           ;; ‘GNU build system bootstrapping not needed’, the default lies.
+           (lambda _
+             (invoke "sh" "./bootstrap")))
+         (add-after 'install 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (install-file "src/asr_run.3"
+                             (string-append out "/share/man/man3"))
+               #t))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-       ("pkg-config" ,pkg-config)
-       ("groff" ,groff)))
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
     (home-page "https://www.opensmtpd.org")
     (synopsis "Asynchronous resolver library by the OpenBSD project")
     (description
@@ -373,14 +385,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.9.3")
+    (version "1.9.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1ykdy62sgzv33ggkmzwx2h0ifm7hyyxyfkb4zckv7gz4f28xsm8v"))))
+        (base32 "1c2bjm13x8bkw0ds1mhn9ivd2gzmfrb0x5y76bkz09a04bxjagix"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 28eff0a56c..69325449a1 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -291,9 +291,9 @@ the required network abstractions for applications.")
        ("logrus" ,go-github-com-sirupsen-logrus)
        ("go-netlink" ,go-netlink)
        ("go-netns" ,go-netns)
-       ("go-golang-org-x-crypto-ssh-terminal"
-        ,go-golang-org-x-crypto-ssh-terminal)
-       ("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+       ("go-golang-org-x-crypto"
+        ,go-golang-org-x-crypto)
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
     (synopsis "Docker user-space proxy")
     (description "A proxy running in the user space.  It is used by the
 built-in registry server of Docker.")
diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm
index 31b7f58758..2621fc55ab 100644
--- a/gnu/packages/dunst.scm
+++ b/gnu/packages/dunst.scm
@@ -33,7 +33,7 @@
 (define-public dunst
   (package
     (name "dunst")
-    (version "1.3.2")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -42,7 +42,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "12nj8qw3y3nl8sm24wizy2a7k06v1p88bnz1xr9l39h527xyidma"))))
+                "1zmx30qp2s9ca4q70j9ny4aq97pp442j9vfvsyihfcxgks6gwqqm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ; no check target
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e14151bffb..36b1c6aa13 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -6955,29 +6955,33 @@ for search-based navigation of buffers.")
 as well as features for editing search results.")
       (license license:gpl3+))))
 
+;; There hasn't been a tag or release since 2016, so we take the latest
+;; commit.
 (define-public emacs-helm-projectile
-  (package
-    (name "emacs-helm-projectile")
-    (version "0.14.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/bbatsov/helm-projectile.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "0lph38p112fridighqcizpsyzjbv7qr3d8prbfj6w6q6gfl6cna4"))))
-    (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-dash" ,emacs-dash)
-       ("emacs-helm" ,emacs-helm)
-       ("emacs-projectile" ,emacs-projectile)))
-    (home-page "https://github.com/bbatsov/helm-projectile")
-    (synopsis "Helm integration for Projectile")
-    (description
-     "This Emacs library provides a Helm interface for Projectile.")
-    (license license:gpl3+)))
+  (let ((commit "5328b74dddcee8d1913803ca8167868831a07463")
+        (version "0.14.0")
+        (revision "1"))
+    (package
+      (name "emacs-helm-projectile")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/bbatsov/helm-projectile.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0a811cblrvc8llpv771b8dppgxs6bwjyvjy3qn2xns4nigvn93s0"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)
+         ("emacs-projectile" ,emacs-projectile)))
+      (home-page "https://github.com/bbatsov/helm-projectile")
+      (synopsis "Helm integration for Projectile")
+      (description
+       "This Emacs library provides a Helm interface for Projectile.")
+      (license license:gpl3+))))
 
 (define-public emacs-taskrunner
   (let ((commit "3afd4a546d42339543d3d4e51b175fc3e82b3358")
@@ -7417,10 +7421,15 @@ news items, openrc and runscripts.")
        (sha256
         (base32
          "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'fix-test-helpers
+           (lambda _
+             (substitute* "evil-test-helpers.el"
+               (("\\(undo-tree-mode 1\\)") ""))
+             #t)))))
     (build-system emacs-build-system)
-    (propagated-inputs
-     `(("emacs-undo-tree" ,emacs-undo-tree)
-       ("emacs-goto-chg" ,emacs-goto-chg)))
     (home-page "https://github.com/emacs-evil/evil")
     (synopsis "Extensible Vi layer for Emacs")
     (description
@@ -10823,14 +10832,14 @@ let users kill or mark things easily.")
 (define-public emacs-csv-mode
   (package
     (name "emacs-csv-mode")
-    (version "1.9")
+    (version "1.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/csv-mode-"
                            version ".el"))
        (sha256
-        (base32 "0sdnyi9in904k49yy5imapypnmk75lv14k9c1yyjhjpalvvh6br1"))))
+        (base32 "0q7j2cmj7vs6hz8cnf7j7lmlcjmig3jn2p6az345z96agl8a5xsq"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/csv-mode.html")
     (synopsis "Major mode for editing comma/char separated values")
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 604214ecbd..b7ad855a8c 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1053,7 +1053,7 @@ emulation community.  It provides highly accurate emulation.")
 (define-public retroarch
   (package
     (name "retroarch")
-    (version "1.7.9.2")
+    (version "1.8.0")
     (source
      (origin
        (method git-fetch)
@@ -1062,7 +1062,7 @@ emulation community.  It provides highly accurate emulation.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "14kay5g9rnm79mly7b4x5jwkidjaki8qqkpf21hnj1r2z1q7bp5b"))))
+        (base32 "1mgszd8gb5nk08kfykap9b1l5rl4qfy39dbba8crjj0zkc4z1jga"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 1230e5c270..68bd2f97c5 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -87,7 +87,7 @@
 (define-public bitcoin-core
   (package
     (name "bitcoin-core")
-    (version "0.18.0")
+    (version "0.18.1")
     (source (origin
              (method url-fetch)
              (uri
@@ -95,15 +95,15 @@
                              version "/bitcoin-" version ".tar.gz"))
              (sha256
               (base32
-               "0ps0vw9iknz1b1sx74rabd1yhlxvwbd0aimjzn9hlqkvw286hkjy"))))
+               "15mz0gmm058gmq2gdpffbw25jpv7mksyhyfws6i7mqvrapqr6zaw"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python" ,python) ; for the tests
-       ("util-linux" ,util-linux)   ; provides the hexdump command for tests
+       ("python" ,python)               ; for the tests
+       ("util-linux" ,util-linux)       ; provides the hexdump command for tests
        ("qttools" ,qttools)))
     (inputs
-     `(("bdb" ,bdb-4.8) ; Bitcoin Core requires bdb 4.8 for compatibility
+     `(("bdb" ,bdb-4.8)                 ; 4.8 required for compatibility
        ("boost" ,boost)
        ("libevent" ,libevent)
        ("miniupnpc" ,miniupnpc)
@@ -134,7 +134,7 @@
             #t))
           (add-before 'check 'set-home
            (lambda _
-            (setenv "HOME" (getenv "TMPDIR"))  ; Tests write to $HOME.
+            (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
             #t))
           (add-after 'check 'check-functional
            (lambda _
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 8f539939d1..15c098bc45 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -1101,14 +1101,15 @@ messaging clients such as Empathy, GNOME Shell or KDE Telepathy.")
 (define-public telepathy-mission-control
   (package
     (name "telepathy-mission-control")
-    (version "5.16.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://telepathy.freedesktop.org/releases/"
-                                  name "/" name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1jz6wwgsfxixha6ys2hbzbk5faqnj9kh2m5qdlgx5anqgandsscp"))))
+    (version "5.16.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://telepathy.freedesktop.org/releases/"
+                           "telepathy-mission-control/"
+                           "telepathy-mission-control-" version ".tar.gz"))
+       (sha256
+        (base32 "00xxv38cfdirnfvgyd56m60j0nkmsv5fz6p2ydyzsychicxl6ssc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index eb92443e0d..54d2f32f94 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2017, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Comrade Yuri <yuri@nijino>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -622,14 +623,14 @@ archive on a per-file basis.")
 (define-public love
   (package
     (name "love")
-    (version "11.1")
+    (version "11.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/rude/love/downloads/"
                                  "love-" version "-linux-src.tar.gz"))
              (sha256
               (base32
-               "1pkwiszmjs0xrwk0wqbc5cp9108b1y8gwsid0gqk1s0x09q9lpmw"))))
+               "0m8lvlabmcchskx4qpzkdlsm44360f3j0q3vvvj2388cfnvhv7v4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -971,6 +972,329 @@ to create fully featured games and multimedia programs in the python language.")
 (define-public python2-pygame
   (package-with-python2 python-pygame))
 
+(define-public python2-pygame-sdl2
+  (let ((real-version "2.1.0")
+        (renpy-version "7.3.5"))
+    (package
+      (inherit python2-pygame)
+      (name "python2-pygame-sdl2")
+      (version (string-append real-version "-for-renpy-" renpy-version))
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append "https://www.renpy.org/dl/" renpy-version
+                             "/pygame_sdl2-" version ".tar.gz"))
+         (sha256 (base32 "1bmr7j9mlsc4czpgw70ld15ymyp4wxrk9hdsqad40wjwdxvvg2dr"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:tests? #f                ; tests require pygame to be installed first
+         #:python ,python-2
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'set-paths 'set-sdl-vars
+             (lambda* (#:key inputs #:allow-other-keys)
+               (setenv "PYGAME_SDL2_CFLAGS"
+                       (string-append "-I"
+                                      (assoc-ref inputs "sdl-union")
+                                      "/include/SDL2 -D_REENTRANT"))
+               (setenv "PYGAME_SDL2_LDFLAGS"
+                       (string-append "-L"
+                                      (assoc-ref inputs "sdl-union")
+                                      "/lib -Wl,-rpath,"
+                                      (assoc-ref inputs "sdl-union")
+                                      "/lib -Wl,--enable-new-dtags -lSDL2"))
+               #t))
+           (add-before 'build 'drop-generated-files
+             (lambda args
+               (delete-file-recursively "gen")
+               (delete-file-recursively "gen3")
+               #t)))))
+      (inputs
+       `(("sdl-union"
+          ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
+      (native-inputs
+       `(("python2-cython" ,python2-cython)))
+      (home-page "http://www.renpy.org/")
+      (synopsis "Reimplementation of the Pygame API using SDL2")
+      (description "Pygame_SDL2 reimplements the Pygame API using SDL2,
+staying close to the original, but also adding some SDL2-specific features.
+While it aims to be used as a drop-in replacement, it appears to be
+developed mainly for Ren'py.")
+      (license (list license:lgpl2.1 license:zlib)))))
+
+(define-public python2-renpy
+  (package
+    (name "python2-renpy")
+    (version "7.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.renpy.org/dl/" version
+                           "/renpy-" version "-source.tar.bz2"))
+       (sha256 (base32 "1anr5cfbvbsbik4v4rvrkdkciwhg700k4lydfbs4n85raimz9mw4"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; Ren'py doesn't seem to package tests
+       #:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-commands
+           (lambda _
+             (substitute* "renpy/editor.py"
+               (("xdg-open")
+                (which "xdg-open")))
+             #t))
+         (add-after 'set-paths 'set-build-vars
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "RENPY_CYTHON"
+                     (string-append (assoc-ref inputs "python2-cython")
+                                    "/bin/cython"))
+             (setenv "RENPY_DEPS_INSTALL" (string-join (map cdr inputs) ":"))
+             #t))
+         (replace 'build
+           (lambda args
+             (apply
+              (lambda* (build-root #:key inputs outputs #:allow-other-keys)
+                ;; The "module" subdirectory contains a python (really cython)
+                ;; project, which is built using a script, that is thankfully
+                ;; named "setup.py".
+                (chdir "module")
+                (apply (assoc-ref %standard-phases 'build) args)
+                ;; the above causes renpy.__init__ to be compiled but does not
+                ;; compile anything else, hence we do that here
+                (chdir build-root)
+                (delete-file "renpy/__init__.pyc")
+                (invoke "python" "-m" "compileall" "renpy"))
+              (getcwd) args)
+             #t))
+         (replace 'install
+           (lambda args
+             (apply
+              (lambda* (build-root #:key inputs outputs #:allow-other-keys)
+                ;; Again, we have to wrap the module installation.
+                ;; Additionally, we want to install the python code
+                ;; (both source and compiled) in the same directory.
+                (let* ((out (assoc-ref outputs "out"))
+                       (site (string-append "/lib/python"
+                                            ,(version-major+minor
+                                              (package-version python-2))
+                                            "/site-packages")))
+                  (chdir "module")
+                  (apply (assoc-ref %standard-phases 'install) args)
+                  (chdir build-root)
+                  (copy-recursively "renpy"
+                                    (string-append out site "/renpy"))))
+              (getcwd) args)
+             #t)))))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("libpng" ,libpng)
+       ("python2-pygame" ,python2-pygame-sdl2)
+       ("sdl-union"
+        ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
+    (native-inputs
+     `(("python2-cython" ,python2-cython)
+       ("xdg-utils" ,xdg-utils)))
+    (home-page "http://www.renpy.org/")
+    (synopsis "Ren'py python module")
+    (description "This package contains the shared libraries and Python
+modules of Ren'py.")
+    (license license:expat)))
+
+(define-public renpy
+  (package
+    (inherit python2-renpy)
+    (name "renpy")
+    (version "7.3.5")
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; see python2-renpy
+       #:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-commands
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "launcher/game/choose_directory.rpy"
+               (("/usr/bin/python") (which "python2")))
+             (substitute* "launcher/game/front_page.rpy"
+               (("xdg-open")
+                (which "xdg-open")))
+             (substitute* "launcher/game/project.rpy"
+               (("cmd = \\[ executable, \"-EO\", sys.argv\\[0\\] \\]")
+                (string-append "cmd = [ \"" (assoc-ref outputs "out")
+                               "/bin/renpy\" ]"))
+               ;; Projects are still created in the usual style, so we need
+               ;; to adjust the path.
+               (("cmd.append\\(self.path\\)")
+                "cmd.append(self.path + \"/game\")"))
+             #t))
+         (add-after 'unpack 'drop-game-from-paths
+           (lambda _
+             (substitute* (list "launcher/game/gui7.rpy"
+                                "launcher/game/gui7/images.py")
+               ((", \"game\",") ","))
+             #t))
+         (add-before 'build 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server")))
+               (setenv "HOME" (getcwd))
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
+               #t)))
+         (replace 'build
+           (lambda _
+             (invoke "python" "renpy.py" "launcher" "quit")
+             (invoke "python" "renpy.py" "the_question" "quit")
+             (invoke "python" "renpy.py" "tutorial" "quit")
+             #t))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Here we install our custom renpy program.
+             ;; After finishing this step, "out" will have the following:
+             ;; |-- bin/renpy
+             ;; `-- share/renpy ; i.e. path_to_renpy_base()
+             ;;     `-- common
+             ;;
+             ;; Note that common is also a de facto unused directory in
+             ;; python2-renpy. On other systems, renpy_base would point to
+             ;; site-packages or even somewhere in /opt.
+             ;; The former approach is not as straightforward as it seems
+             ;; -- it causes renpy to load files twice for some weird reason --
+             ;; and the latter is impossible on Guix. Hence the detour through
+             ;; share/renpy and the custom renpy program.
+             ;;
+             ;; As a convention, other games should be installed as
+             ;; subdirectories of share/renpy in their respective outputs as
+             ;; well. This differs from the traditional layout, which is
+             ;; roughly the following:
+             ;; `-- Super Awesome Game
+             ;;     |-- game      ; <- the folder we actually want
+             ;;     |-- lib       ; compiled renpy module and dependencies
+             ;;     |-- renpy     ; Ren'py python code (source + compiled)
+             ;;     |-- Super Awesome Game.py
+             ;;     `-- Super Awesome Game.sh
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin/renpy (string-append out "/bin/renpy")))
+               (mkdir-p (string-append out "/bin"))
+               (copy-recursively "renpy/common"
+                                 (string-append out "/share/renpy/common"))
+               (copy-recursively "gui"
+                                 (string-append out "/share/renpy/gui"))
+
+               (call-with-output-file bin/renpy
+                 (lambda (port)
+                   (format port "#!~a~%" (which "python2"))
+                   (format port "
+from __future__ import print_function
+
+import os
+import sys
+import warnings
+
+def path_to_common(renpy_base):
+    return renpy_base + \"/common\"
+
+def path_to_saves(gamedir, save_directory=None):
+    import renpy  # @UnresolvedImport
+
+    if save_directory is None:
+        save_directory = renpy.config.save_directory
+        save_directory = renpy.exports.fsencode(save_directory)
+
+    if not save_directory:
+        return gamedir + \"/saves\"
+
+    return os.path.expanduser(\"~~/.renpy/\" + save_directory)
+
+def path_to_renpy_base():
+    return \"~a\"
+
+def main():
+    renpy_base = path_to_renpy_base()
+    try:
+        import renpy.bootstrap
+        import renpy.arguments
+    except ImportError:
+        print(\"\"\"Could not import renpy.bootstrap.
+Please ensure you decompressed Ren'Py correctly, preserving the directory
+structure.\"\"\", file=sys.stderr)
+        raise
+
+    args = renpy.arguments.bootstrap()
+    if not args.basedir:
+        print(\"\"\"This Ren'py requires a basedir to launch.
+The basedir is the directory, in which .rpy files live -- usually the 'game'
+subdirectory of a game packaged by Ren'py.
+
+If you want the Ren'py launcher, use renpy-launcher instead.\"\"\",
+              file=sys.stderr)
+        sys.exit()
+
+    renpy.bootstrap.bootstrap(renpy_base)
+
+if __name__ == \"__main__\":
+    main()
+"
+                           (string-append out "/share/renpy"))))
+               (chmod bin/renpy #o755)
+               #t)))
+
+         (add-after 'install 'install-games
+           (lambda* (#:key outputs #:allow-other-keys)
+             (define renpy (assoc-ref outputs "out"))
+             ;; TODO: We should offer a renpy-build-system to make the
+             ;; installation of Ren'py games easier.
+             (define* (install-renpy-game #:key output game name (renpy renpy)
+                                          #:allow-other-keys)
+               (let* ((name (or name (basename game)))
+                      (launcher (string-append output "/bin/renpy-" name))
+                      (share (string-append output "/share/renpy/" name)))
+                 (copy-recursively (string-append game "/game") share)
+                 (mkdir-p (string-append output "/bin"))
+                 (with-output-to-file launcher
+                   (lambda ()
+                     (format #t
+                             "#!~a~%~a ~a \"$@\""
+                             (which "bash")
+                             (string-append renpy "/bin/renpy")
+                             share)))
+                 (chmod launcher #o755)))
+
+             (install-renpy-game #:output (assoc-ref outputs "out")
+                                 #:game "launcher")
+
+             (install-renpy-game #:output (assoc-ref outputs "the-question")
+                                 #:game "the_question"
+                                 #:name "the-question")
+
+             (install-renpy-game #:output (assoc-ref outputs "tutorial")
+                                 #:game "tutorial")
+             #t))
+         (replace 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (string-append (assoc-ref outputs "out")
+                                          "/bin/renpy")
+               `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))
+             #t)))))
+    (inputs
+     `(("python2-tkinter" ,python-2 "tk")
+       ("python2-pygame" ,python2-pygame-sdl2)
+       ("python2-renpy" ,python2-renpy)
+       ("xorg-server" ,xorg-server)))
+    (outputs
+     (list "out" "tutorial" "the-question"))
+    (home-page "http://www.renpy.org/")
+    (synopsis "Visual Novel Engine")
+    (description "Ren'Py is a visual novel engine that helps you use words,
+images, and sounds to tell interactive stories that run on computers and
+mobile devices.  These can be both visual novels and life simulation games.
+The easy to learn script language allows anyone to efficiently write large
+visual novels, while its Python scripting is enough for complex simulation
+games.")
+    (license license:expat)))
+
 (define-public grafx2
   (package
     (name "grafx2")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 3e85449fac..d0a5d28f04 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -44,6 +44,7 @@
 ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
+;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2594,24 +2595,14 @@ world}, @uref{http://evolonline.org, Evol Online} and
 (define openttd-engine
   (package
     (name "openttd-engine")
-    (version "1.8.0")
+    (version "1.9.3")
     (source
      (origin (method url-fetch)
-             (uri (string-append "http://binaries.openttd.org/releases/"
+             (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
                                  version "/openttd-" version "-source.tar.xz"))
-             (patches
-              (list
-               (origin (method url-fetch)
-                       (uri (string-append
-                             "https://github.com/OpenTTD/OpenTTD/commit/"
-                             "19076c24c1f3baf2a22d1fa832d5688216cf54a3.patch"))
-                       (file-name "openttd-fix-compilation-with-ICU-61.patch")
-                       (sha256
-                        (base32
-                         "02d1xmb75yv4x6rfnvxk3vvq4l3lvvwr2pfsdzn7lzalic51ziqh")))))
              (sha256
               (base32
-               "0zq8xdg0k92p3s4j9x76591zaqz7k9ra69q008m209vdfffjvly2"))
+               "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
              (modules '((guix build utils)))
              (snippet
               ;; The DOS port contains proprietary software.
@@ -2656,7 +2647,7 @@ Tycoon Deluxe with many enhancements including multiplayer mode,
 internationalization support, conditional orders and the ability to clone,
 autoreplace and autoupdate vehicles.  This package only includes the game
 engine.  When you start it you will be prompted to download a graphics set.")
-    (home-page "http://openttd.org/")
+    (home-page "https://www.openttd.org/")
     ;; This package is GPLv2, except for a few files located in
     ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
     ;; licenses.  In addition, this software contains an in-game downloader
@@ -2667,7 +2658,7 @@ engine.  When you start it you will be prompted to download a graphics set.")
 (define openttd-opengfx
   (package
     (name "openttd-opengfx")
-    (version "0.5.2")
+    (version "0.5.5")
     (source
      (origin
        (method url-fetch)
@@ -2675,7 +2666,7 @@ engine.  When you start it you will be prompted to download a graphics set.")
                            version "/opengfx-" version "-source.tar.xz"))
        (sha256
         (base32
-         "0iz66q7p1mf00njfjbc4vibh3jaybki7armkl18iz7p6x4chp9zv"))))
+         "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list "CC=gcc"
@@ -2910,7 +2901,7 @@ Transport Tycoon Deluxe.")
 (define-public openrct2
   (package
     (name "openrct2")
-    (version "0.2.3")
+    (version "0.2.4")
     (source
      (origin
        (method git-fetch)
@@ -2919,7 +2910,7 @@ Transport Tycoon Deluxe.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01mj6jlbl2cn3wpk6sy34ldzdl0qykpn7fncznjykklj2nqzr4ig"))))
+        (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
diff --git a/gnu/packages/genealogy.scm b/gnu/packages/genealogy.scm
index ec9d99400f..bb3ed3d0aa 100644
--- a/gnu/packages/genealogy.scm
+++ b/gnu/packages/genealogy.scm
@@ -38,7 +38,7 @@
 (define-public gramps
   (package
     (name "gramps")
-    (version "5.0.2")
+    (version "5.1.1")
     (source
      (origin
        (method git-fetch)
@@ -48,13 +48,14 @@
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0wg743q8ixy5dmwricgkl4zck4109vq5ppmkyi18qjmna9m0aq7r"))))
+         "1zrvr543zzsiapda75vdd2669fgijmx4cv7nfj5d1jsyz4qnif7b"))))
     (build-system python-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("intltool" ,intltool)))
     (inputs
-     `(("font-gnu-freefont-ttf" ,font-gnu-freefont-ttf)
+     `(("cairo" ,cairo)
+       ("font-gnu-freefont-ttf" ,font-gnu-freefont-ttf)
        ("geocode-glib" ,geocode-glib)
        ("gexiv2" ,gexiv2)
        ("ghostscript" ,ghostscript)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index bb9f897e51..5796db3eb9 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -634,14 +634,14 @@ utilities for data translation and processing.")
 (define-public postgis
   (package
     (name "postgis")
-    (version "2.4.4")
+    (version "2.4.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.osgeo.org/postgis/source/postgis-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1hm8migjb53cymp4qvg1h20yqllmy9f7x0awv5450391i6syyqq6"))))
+                "0nanza15xzfhbpbq49p1xqz96dgbsam5332y9zj6snmz2mq685ll"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index c558d9fcb6..33e569a5d3 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -708,6 +708,33 @@ useful for C++.")
        ("pkg-config" ,pkg-config)
        ("python-pytest" ,python2-pytest)))))
 
+;; Newer version of this core-updates package, for Lollypop.
+(define-public python-pygobject-3.34
+  (package/inherit
+   python-pygobject
+   (version "3.34.0")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://gnome/sources/pygobject/"
+                          (version-major+minor version)
+                          "/pygobject-" version ".tar.xz"))
+      (sha256
+       (base32 "06i7ynnbvgpz0gw09zsjbvhgcp5qz4yzdifw27qjwdazg2mckql7"))))
+   (build-system meson-build-system)
+   (arguments
+    `(#:phases
+      (modify-phases %standard-phases
+        (add-after 'unpack 'delete-broken-tests
+          (lambda _
+            (with-directory-excursion "tests"
+              (for-each
+               delete-file
+               ;; FIXME: these tests require Gdk and/or Gtk 4.
+               '("test_atoms.py"
+                 "test_overrides_gtk.py")))
+            #t)))))))
+
 (define-public perl-glib
   (package
     (name "perl-glib")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 12993eadef..276fa56138 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -772,7 +772,7 @@ forgotten when the session ends.")
 (define-public evince
   (package
     (name "evince")
-    (version "3.30.2")
+    (version "3.34.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -780,7 +780,7 @@ forgotten when the session ends.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "0k7jln6dpg4bpv61niicjzkzyq6fhb3yfld7pc8ck71c8pmvsnx9"))))
+               "1pr6fvbaam1mzxjwyqd53hcxzdjzf73idn10j4j7n54nwg6hgr45"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-nautilus")
@@ -2062,17 +2062,17 @@ Hints specification (EWMH).")
 (define-public goffice
   (package
     (name "goffice")
-    (version "0.10.44")
+    (version "0.10.45")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/goffice/"
                                   (version-major+minor version)  "/"
-                                  name "-" version ".tar.xz"))
+                                  "goffice-" version ".tar.xz"))
               (sha256
-               (base32 "1fd7cm6j0g0mqgpqs4y22b4gd2ll4mcyvg4d0q22d5ndjapl4q3d"))))
+               (base32 "0iqrygv2bh8kiw98kjx6ay6qdd288v91q5m8n7cvs2zcx5ksaavh"))))
     (build-system gnu-build-system)
     (outputs '("out"
-               "doc"))                            ;4.0 MiB of gtk-doc
+               "doc"))                  ; 4.0 MiB of gtk-doc
     (arguments
      '(#:configure-flags (list (string-append "--with-html-dir="
                                               (assoc-ref %outputs "doc")
@@ -7784,16 +7784,15 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
 (define-public lollypop
   (package
     (name "lollypop")
-    (version "1.1.3.1")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://gitlab.gnome.org/World/lollypop/uploads/"
-                           "5a7cd7c72b6d83ae08d0c54c4691f9df/"
-                           name "-" version ".tar.xz"))
+                           "aa4fbd92bf338296c28e54710271ccab/"
+                           "lollypop-" version ".tar.xz"))
        (sha256
-        (base32
-         "1r5wn0bja9psz6nr1rcaysdkkwz84rbyzpdfw66cxa6wiy52pkjm"))))
+        (base32 "1wz5fna24qr3v7h29ijwhdxza85r9srz9xsqz4f4df3p5f8rfyql"))))
     (build-system meson-build-system)
     (arguments
      `(#:imported-modules ((guix build python-build-system)
@@ -7831,7 +7830,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.")
        ("python-gst" ,python-gst)
        ("python-pil" ,python-pillow)
        ("python-pycairo" ,python-pycairo)
-       ("python-pygobject" ,python-pygobject)
+       ("python-pygobject" ,python-pygobject-3.34)
        ("python-pylast" ,python-pylast)
        ("totem-pl-parser" ,totem-pl-parser)
        ("webkitgtk" ,webkitgtk)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index e07702f994..0904022f08 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -147,14 +147,14 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.66")
+   (version "0.9.68")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "06xblz77bnn29y7sl43avxbcrjbw486x3416plpr3x3l2pdx8rjf"))))
+              "0q8bc4hrxn6llml7w2vam6n833x8injs39wgdkhwkawr50m6wwf5"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 01647fedd9..71cffa64f5 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -550,7 +550,8 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "68.2.0-guix0-preview1")
+(define %icecat-version "68.2.0-guix0-preview2")
+(define %icecat-build-id "20191028000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -576,7 +577,7 @@ from forcing GEXP-PROMISE."
 
          (upstream-icecat-base-version "68.1.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
-         (gnuzilla-commit "395cc0798600cde44a30abaa3f5d08ce8b68f782")
+         (gnuzilla-commit "aa7ab9483a64c43e77736917dd83841ccc437300")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -586,8 +587,10 @@ from forcing GEXP-PROMISE."
             (file-name (git-file-name "gnuzilla" upstream-icecat-base-version))
             (sha256
              (base32
-              "1ll3j2kpsfp1f9dxy67fay1cidsng02l8a3a23wdjqkxgrg1cf4g"))))
+              "03jygq1zna621y0ba6370cff4v2g9l57g3015y3vxbahnmzn9msa"))))
 
+         (gnuzilla-fixes-patch
+          (local-file (search-patch "icecat-gnuzilla-fixes.patch")))
          (makeicecat-patch
           (local-file (search-patch "icecat-makeicecat.patch"))))
 
@@ -634,6 +637,8 @@ from forcing GEXP-PROMISE."
                 (with-directory-excursion "/tmp/gnuzilla"
                   (make-file-writable "makeicecat")
                   (invoke "patch" "--force" "--no-backup-if-mismatch"
+                          "-p1" "--input" #+gnuzilla-fixes-patch)
+                  (invoke "patch" "--force" "--no-backup-if-mismatch"
                           "-p1" "--input" #+makeicecat-patch)
                   (patch-shebang "makeicecat")
                   (substitute* "makeicecat"
@@ -772,10 +777,6 @@ from forcing GEXP-PROMISE."
        ;;  ,(search-patch "icecat-use-system-graphite2+harfbuzz.patch"))
        ;; ("icecat-use-system-media-libs.patch"
        ;;  ,(search-patch "icecat-use-system-media-libs.patch"))
-       ("icecat-default-search-ddg.patch"
-        ,(search-patch "icecat-default-search-ddg.patch"))
-       ("icecat-disable-sync.patch"
-        ,(search-patch "icecat-disable-sync.patch"))
 
        ("patch" ,(canonical-package patch))
 
@@ -1008,6 +1009,7 @@ from forcing GEXP-PROMISE."
                (setenv "CONFIG_SHELL" bash)
                (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13
                (setenv "CC" "gcc")  ; apparently needed when Stylo is enabled
+               (setenv "MOZ_BUILD_DATE" ,%icecat-build-id) ; avoid timestamp
                (mkdir "../build")
                (chdir "../build")
                (format #t "build directory: ~s~%" (getcwd))
@@ -1071,8 +1073,7 @@ from forcing GEXP-PROMISE."
                     (pulseaudio-lib (string-append pulseaudio "/lib")))
                (wrap-program (car (find-files lib "^icecat$"))
                  `("XDG_DATA_DIRS" prefix (,gtk-share))
-                 `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib))
-                 `("MOZ_LEGACY_PROFILES" = ("1")))
+                 `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib)))
                #t))))))
     (home-page "https://www.gnu.org/software/gnuzilla/")
     (synopsis "Entirely free browser derived from Mozilla Firefox")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 51be20b066..e3b22c13a2 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -216,192 +216,11 @@ in the style of communicating sequential processes (@dfn{CSP}).")
     (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
     (license license:bsd-3)))
 
-(define-public go-1.11
-  (package
-    (inherit go-1.4)
-    (name "go")
-    (version "1.11.12")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "https://storage.googleapis.com/golang/"
-                           name version ".src.tar.gz"))
-       (sha256
-        (base32
-         "09k9zmq7hhgg0bf1y7rwa0kn7q1vkkr94cmg2iv9lq3najh5nykd"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments go-1.4)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (replace 'prebuild
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
-                      (ld (string-append (assoc-ref inputs "libc") "/lib"))
-                      (loader (car (find-files ld "^ld-linux.+")))
-                      (net-base (assoc-ref inputs "net-base"))
-                      (tzdata-path
-                       (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
-                      (output (assoc-ref outputs "out")))
-
-                 (for-each delete-file
-                           ;; Removing net/ tests, which fail when attempting to access
-                           ;; network resources not present in the build container.
-                           '("net/listen_test.go"
-                             "net/parse_test.go"
-                             "net/cgo_unix_test.go"
-                             ;; A side effect of these test scripts is testing
-                             ;; cgo. Attempts at using cgo flags and
-                             ;; directives with these scripts as specified
-                             ;; here (https://golang.org/cmd/cgo/) have not
-                             ;; worked. The tests continue to state that they
-                             ;; can not find crt1.o despite being present.
-                             "cmd/go/testdata/script/list_compiled_imports.txt"
-                             "cmd/go/testdata/script/mod_case_cgo.txt"
-                             ;; https://github.com/golang/go/issues/24884
-                             "os/user/user_test.go"))
-
-                 (substitute* "os/os_test.go"
-                   (("/usr/bin") (getcwd))
-                   (("/bin/pwd") (which "pwd"))
-                   (("/bin/sh") (which "sh")))
-
-                 (substitute* "cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go"
-                   (("/usr/bin") "/tmp"))
-
-                 ;; Add libgcc to runpath
-                 (substitute* "cmd/link/internal/ld/lib.go"
-                   (("!rpath.set") "true"))
-                 (substitute* "cmd/go/internal/work/gccgo.go"
-                   (("cgoldflags := \\[\\]string\\{\\}")
-                    (string-append "cgoldflags := []string{"
-                                   "\"-rpath=" gcclib "\""
-                                   "}"))
-                   (("\"-lgcc_s\", ")
-                    (string-append
-                     "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
-                 (substitute* "cmd/go/internal/work/gc.go"
-                   (("ldflags = setextld\\(ldflags, compiler\\)")
-                    (string-append
-                     "ldflags = setextld(ldflags, compiler)\n"
-                     "ldflags = append(ldflags, \"-r\")\n"
-                     "ldflags = append(ldflags, \"" gcclib "\")\n")))
-
-                 ;; Disable failing tests: these tests attempt to access
-                 ;; commands or network resources which are neither available
-                 ;; nor necessary for the build to succeed.
-                 (for-each
-                  (match-lambda
-                    ((file regex)
-                     (substitute* file
-                       ((regex all before test_name)
-                        (string-append before "Disabled" test_name)))))
-                  '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
-                    ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
-                    ("os/os_test.go" "(.+)(TestHostname.+)")
-                    ("time/format_test.go" "(.+)(TestParseInSydney.+)")
-                    ("time/format_test.go" "(.+)(TestParseInLocation.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
-                    ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
-                    ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
-                    ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
-                    ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
-                    ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
-                    ("syscall/exec_linux_test.go"
-                     "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
-
-                 ;; fix shebang for testar script
-                 ;; note the target script is generated at build time.
-                 (substitute* "../misc/cgo/testcarchive/carchive_test.go"
-                   (("#!/usr/bin/env") (string-append "#!" (which "env"))))
-
-                 (substitute* "net/lookup_unix.go"
-                   (("/etc/protocols") (string-append net-base "/etc/protocols")))
-                 (substitute* "net/port_unix.go"
-                   (("/etc/services") (string-append net-base "/etc/services")))
-                 (substitute* "time/zoneinfo_unix.go"
-                   (("/usr/share/zoneinfo/") tzdata-path))
-                 (substitute* (find-files "cmd" "\\.go")
-                   (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
-                 #t)))
-           (add-before 'build 'set-bootstrap-variables
-             (lambda* (#:key outputs inputs #:allow-other-keys)
-               ;; Tell the build system where to find the bootstrap Go.
-               (let ((go  (assoc-ref inputs "go")))
-                 (setenv "GOROOT_BOOTSTRAP" go)
-                 (setenv "GOGC" "400")
-                 #t)))
-           (replace 'build
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               ;; FIXME: Some of the .a files are not bit-reproducible.
-               (let* ((output (assoc-ref outputs "out")))
-                 (setenv "CC" (which "gcc"))
-                 (setenv "GOOS" "linux")
-                 (setenv "GOROOT" (dirname (getcwd)))
-                 (setenv "GOROOT_FINAL" output)
-                 (setenv "CGO_ENABLED" "1")
-                 (invoke "sh" "all.bash"))))
-
-           (replace 'install
-             ;; TODO: Most of this could be factorized with Go 1.4.
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let* ((output (assoc-ref outputs "out"))
-                      (doc_out (assoc-ref outputs "doc"))
-                      (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
-                      (src (string-append
-                            (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
-                 (delete-file-recursively "../pkg/bootstrap")
-                 ;; Prevent installation of the build cache, which contains
-                 ;; store references to most of the tools used to build Go and
-                 ;; would unnecessarily increase the size of Go's closure if it
-                 ;; was installed.
-                 (delete-file-recursively "../pkg/obj")
-
-                 (mkdir-p src)
-                 (copy-recursively "../test" (string-append src "/test"))
-                 (delete-file-recursively "../test")
-                 (mkdir-p docs)
-                 (copy-recursively "../api" (string-append docs "/api"))
-                 (delete-file-recursively "../api")
-                 (copy-recursively "../doc" (string-append docs "/doc"))
-                 (delete-file-recursively "../doc")
-
-                 (for-each
-                  (lambda (file)
-                    (let* ((filein (string-append "../" file))
-                           (fileout (string-append docs "/" file)))
-                      (copy-file filein fileout)
-                      (delete-file filein)))
-                  ;; Note the slightly different file names compared to 1.4.
-                  '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
-                    "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
-
-                 (copy-recursively "../" output)
-                 #t)))))))
-    (native-inputs
-     `(("go" ,go-1.4)
-       ,@(match (%current-system)
-           ((or "armhf-linux" "aarch64-linux")
-            `(("gold" ,binutils-gold)))
-           (_ `()))
-       ,@(package-native-inputs go-1.4)))
-    (supported-systems %supported-systems)))
-
-
 (define-public go-1.12
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.12.7")
+    (version "1.12.10")
     (source
      (origin
        (method url-fetch)
@@ -409,7 +228,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "04rvwj69gmw3bz8pw5pf10r21ar0pgpnswp15nkddf04dxyl9s4m"))))
+         "0m1rvawvpdl7kd0asw10m50xbxlhykix6dng9p4x6ih6x3y4hvpm"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:phases phases)
@@ -841,182 +660,18 @@ Go programming language.")
                       ".*\\.gz$"))
                #t)))))
       (propagated-inputs
-       `(("go-golang-org-x-sys-cpu" ,go-golang-org-x-sys-cpu)))
+       `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
       (synopsis "Supplementary cryptographic libraries in Go")
       (description "This package provides supplementary cryptographic libraries
 for the Go language.")
       (home-page "https://go.googlesource.com/crypto/")
       (license license:bsd-3))))
 
-(define-public go-golang-org-x-crypto-bcrypt
-  (let ((commit "b7391e95e576cacdcdd422573063bc057239113d")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-crypto-bcrypt")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-crypto-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "1jqfh81mhgwcc6b9l0bs6rb0707s01qpvn7896i5bsmig46lc7zm"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/crypto/bcrypt"
-         #:unpack-path "golang.org/x/crypto"))
-      (synopsis "Bcrypt in Go")
-      (description "This package provides a Go implementation of the bcrypt
-password hashing function.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-crypto-blowfish
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-blowfish")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/blowfish"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Blowfish in Go")
-    (description "This package provides a Go implementation of the Blowfish
-symmetric-key block cipher.")))
-
-(define-public go-golang-org-x-crypto-pbkdf2
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-pbkdf2")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/pbkdf2"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "PBKDF2 in Go")
-    (description "This package provides a Go implementation of the PBKDF2 key
-derivation function.")))
-
-(define-public go-golang-org-x-crypto-tea
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-tea")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/tea"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Tiny Encryption Algorithm (TEA) in Go")
-    (description "This package provides a Go implementation of the Tiny Encryption
-Algorithm (TEA) block cipher.")))
-
-(define-public go-golang-org-x-crypto-salsa20
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-salsa20")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/salsa20"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Salsa20 in Go")
-    (description "This package provides a Go implementation of the Salsa20
-stream cipher.")))
-
-(define-public go-golang-org-x-crypto-cast5
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-cast5")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/cast5"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Cast5 in Go")
-    (description "This package provides a Go implementation of the Cast5
-symmetric-key block cipher.")))
-
-(define-public go-golang-org-x-crypto-twofish
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-twofish")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/twofish"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Twofish in Go")
-    (description "This package provides a Go implementation of the Twofish
-symmetric-key block cipher.")))
-
-(define-public go-golang-org-x-crypto-xtea
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-xtea")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/xtea"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "eXtended Tiny Encryption Algorithm (XTEA) in Go")
-    (description "This package provides a Go implementation of the eXtended
-Tiny Encryption Algorithm (XTEA) block cipher.")))
-
-(define-public go-golang-org-x-crypto-ed25519
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-ed25519")
-    (arguments
-     `(#:import-path "golang.org/x/crypto/ed25519"
-       #:unpack-path "golang.org/x/crypto"
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-           (lambda* (#:key outputs #:allow-other-keys)
-             (map (lambda (file)
-                    (make-file-writable file))
-                  (find-files
-                    (string-append (assoc-ref outputs "out")
-                                   "/src/golang.org/x/crypto/ed25519/testdata")
-                    ".*\\.gz$"))
-             #t)))))
-    (synopsis "ED25519 in Go")
-    (description "This package provides a Go implementation of the ED25519
-signature algorithm.")))
-
-(define-public go-golang-org-x-crypto-ripemd160
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-ripemd160")
-    (arguments
-     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
-       ((#:import-path _)
-        "golang.org/x/crypto/ripemd160")))
-    (synopsis "RIPEMD-160 in Go")
-    (description "This package provides a Go implementation of the RIPEMD-160
-hash algorithm.")))
-
-(define-public go-golang-org-x-crypto-blake2s
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-blake2s")
-    (arguments
-     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
-       ((#:import-path _)
-        "golang.org/x/crypto/blake2s")))
-    (propagated-inputs
-     `(("go-golang-org-x-sys-cpu" ,go-golang-org-x-sys-cpu)))
-    (synopsis "BLAKE2s in Go")
-    (description "This package provides a Go implementation of the BLAKE2s
-hash algorithm.")))
-
-(define-public go-golang-org-x-crypto-sha3
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-sha3")
-    (arguments
-     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
-       ((#:import-path _)
-        "golang.org/x/crypto/sha3")))
-    (synopsis "SHA-3 in Go")
-    (description "This package provides a Go implementation of the SHA-3
-fixed-output-length hash functions and the SHAKE variable-output-length hash
-functions defined by FIPS-202.")))
-
-(define-public go-golang-org-x-net-ipv4
+(define-public go-golang-org-x-net
   (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
         (revision "3"))
     (package
-      (name "go-golang-org-x-net-ipv4")
+      (name "go-golang-org-x-net")
       (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
@@ -1029,208 +684,22 @@ functions defined by FIPS-202.")))
                   "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
       (build-system go-build-system)
       (arguments
-       `(#:import-path "golang.org/x/net/ipv4"
-         #:unpack-path "golang.org/x/net"))
-      (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-      (synopsis "Go IPv4 support")
-      (description "This package provides @code{ipv4}, which implements IP-level
-socket options for the Internet Protocol version 4.")
-      (home-page "https://go.googlesource.com/net")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-bpf
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-bpf")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/bpf"
-         #:unpack-path "golang.org/x/net"))
-      (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-      (synopsis "Berkeley Packet Filters (BPF) in Go")
-      (description "This package provides a Go implementation of the Berkeley
-Packet Filter (BPF) virtual machine.")
-      (home-page "https://go.googlesource.com/net/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-context
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-context")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/context"
-         #:unpack-path "golang.org/x/net"))
-      (synopsis "Golang Context type")
-      (description "This package provides @code{context}, which defines the
-Context type, which carries deadlines, cancellation signals, and other
-request-scoped values across API boundaries and between processes.")
-      (home-page "https://go.googlesource.com/net/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-internal-socks
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-internal-socks")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/internal/socks"
-         #:unpack-path "golang.org/x/net"))
-      (synopsis "")
-      (description "")
-      (home-page "https://go.googlesource.com/net/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-internal-socket
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-internal-socket")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/internal/socket"
-         #:unpack-path "golang.org/x/net"))
-      (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-      (synopsis "")
-      (description "")
-      (home-page "https://go.googlesource.com/net/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-internal-iana
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-internal-iana")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/internal/iana"
-         #:unpack-path "golang.org/x/net"))
-      (synopsis "Go support for assigned numbers (IANA)")
-      (description "This package provides @code{iana}, which provides protocol
-number resources managed by the Internet Assigned Numbers Authority (IANA).")
-      (home-page "https://go.googlesource.com/net/")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-ipv6
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-ipv6")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/ipv6"
-         #:unpack-path "golang.org/x/net"))
-      (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-      (synopsis "Go IPv6 support")
-      (description "This package provides @code{ipv6}, which implements
-IP-level socket options for the Internet Protocol version 6.")
-      (home-page "https://go.googlesource.com/net")
-      (license license:bsd-3))))
-
-(define-public go-golang-org-x-net-proxy
-  (let ((commit "d28f0bde5980168871434b95cfc858db9f2a7a99")
-        (revision "3"))
-    (package
-      (name "go-golang-org-x-net-proxy")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/net")
-                      (commit commit)))
-                (file-name (string-append "go.googlesource.com-net-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "18xj31h70m7xxb7gc86n9i21w6d7djbjz67zfaljm4jqskz6hxkf"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "golang.org/x/net/proxy"
-         #:unpack-path "golang.org/x/net/"))
-      (synopsis "Go support for network proxies")
-      (description "This package provides @code{proxy}, which provides support
-for a variety of protocols to proxy network data.")
+       `(#:import-path "golang.org/x/net"
+         ; Source-only package
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build))))
+      (synopsis "Go supplemental networking libraries")
+      (description "This package provides supplemental Go networking libraries.")
       (home-page "https://go.googlesource.com/net")
       (license license:bsd-3))))
 
-(define-public go-golang-org-x-sys-unix
+(define-public go-golang-org-x-sys
   (let ((commit "04f50cda93cbb67f2afa353c52f342100e80e625")
         (revision "4"))
     (package
-      (name "go-golang-org-x-sys-unix")
+      (name "go-golang-org-x-sys")
       (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
@@ -1243,28 +712,21 @@ for a variety of protocols to proxy network data.")
                   "0hmfsz9y1ingwsn482hlzzmzs7kr3cklm0ana0mbdk70isw2bxnw"))))
       (build-system go-build-system)
       (arguments
-       `(#:import-path "golang.org/x/sys/unix"
-         #:unpack-path "golang.org/x/sys"))
+       `(#:import-path "golang.org/x/sys"
+         ;; Source-only package
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build))))
       (synopsis "Go support for low-level system interaction")
-      (description "This package provides @code{unix}, which offers Go support
-for low-level interaction with the operating system.")
+      (description "This package provides supplemental libraries offering Go
+support for low-level interaction with the operating system.")
       (home-page "https://go.googlesource.com/sys")
       (license license:bsd-3))))
 
-(define-public go-golang-org-x-sys-cpu
-  (package
-    (inherit go-golang-org-x-sys-unix)
-    (name "go-golang-org-x-sys-cpu")
-    (arguments
-     '(#:import-path "golang.org/x/sys/cpu"
-       #:unpack-path "golang.org/x/sys"))
-    (synopsis "CPU feature detection")
-    (description "Thi spackage provides @code{cpu}, which offers tools for CPU
-feature detection in Go.")))
-
-(define-public go-golang-org-x-text-encoding
+(define-public go-golang-org-x-text
   (package
-    (name "go-golang-org-x-text-encoding")
+    (name "go-golang-org-x-text")
     (version "0.3.2")
     (source (origin
               (method git-fetch)
@@ -1278,45 +740,23 @@ feature detection in Go.")))
                 "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh"))))
     (build-system go-build-system)
     (arguments
-     `(#:import-path "golang.org/x/text/encoding"
-       #:unpack-path "golang.org/x/text"))
-    (synopsis "Interface for character encodings for conversion to and from
-UTF-8")
-    (description "This package defines an interface for character encodings.
-Specific implementations of encoding for CJK text as well as simple character
-encodings are provided in subpackages.")
+     `(#:import-path "golang.org/x/text"
+       ; Source-only package
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build))))
+    (synopsis "Supplemental Go text processing libraries")
+    (description "This package provides supplemental Go libraries for text
+    processing.")
     (home-page "https://go.googlesource.com/text")
     (license license:bsd-3)))
 
-(define-public go-golang-org-x-text-transform
-  (package
-    (inherit go-golang-org-x-text-encoding)
-    (name "go-golang-org-x-text-transform")
-    (arguments
-     `(#:import-path "golang.org/x/text/transform"
-       #:unpack-path "golang.org/x/text"))
-    (synopsis "Go text transformation")
-    (description "This package provides @code{transform}, which provides
-reader and writer wrappers that transform the bytes passing through.  Example
-transformations provided by other packages include normalization and conversion
-between character sets.")))
-
-(define-public go-golang-org-x-text-unicode-norm
-  (package
-    (inherit go-golang-org-x-text-encoding)
-    (name "go-golang-org-x-text-unicode-norm")
-    (arguments
-     `(#:import-path "golang.org/x/text/unicode/norm"
-       #:unpack-path "golang.org/x/text"))
-    (synopsis "Unicode normalization in Go")
-    (description "This package provides @code{norm}, which contains types and
-functions for normalizing Unicode strings.")))
-
-(define-public go-golang-org-x-time-rate
+(define-public go-golang-org-x-time
   (let ((commit "6dc17368e09b0e8634d71cac8168d853e869a0c7")
         (revision "1"))
     (package
-      (name "go-golang-org-x-time-rate")
+      (name "go-golang-org-x-time")
       (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
@@ -1329,29 +769,20 @@ functions for normalizing Unicode strings.")))
                   "1fx4cf5fpdz00g3c7vxzy92hdcg0vh4yqw00qp5s52j72qixynbk"))))
       (build-system go-build-system)
       (arguments
-       `(#:import-path "golang.org/x/time/rate"
-         #:unpack-path "golang.org/x/time"))
-      (propagated-inputs
-       `(("go-golang-org-x-net-context" ,go-golang-org-x-net-context)))
-      (synopsis "Rate limiting in Go")
-      (description "This package provides @{rate}, which implements rate
-limiting in Go.")
+       `(#:import-path "golang.org/x/time"
+         ; Source-only package
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build))))
+;      (propagated-inputs
+;       `(("go-golang-org-x-net" ,go-golang-org-x-net)))
+      (synopsis "Supplemental Go time libraries")
+      (description "This package provides supplemental Go libraries related to
+time.")
       (home-page "https://godoc.org/golang.org/x/time/rate")
       (license license:bsd-3))))
 
-(define-public go-golang-org-x-crypto-ssh-terminal
-  (package
-    (inherit go-golang-org-x-crypto-bcrypt)
-    (name "go-golang-org-x-crypto-ssh-terminal")
-    (inputs
-     `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
-    (arguments
-     `(#:import-path "golang.org/x/crypto/ssh/terminal"
-       #:unpack-path "golang.org/x/crypto"))
-    (synopsis "Terminal functions for Go")
-    (description "This package provides @{terminal}, which implements support
-functions for dealing with terminals, as commonly found on UNIX systems.")))
-
 (define-public go-github-com-burntsushi-toml
   (package
     (name "go-github-com-burntsushi-toml")
@@ -1740,12 +1171,11 @@ GNU extensions} to the POSIX recommendations for command-line options.")
          "0g5z7al7kky11ai2dhac6gkp3b5pxsvx72yj3xg4wg3265gbn7yz"))))
     (build-system go-build-system)
     (native-inputs
-     `(("go-golang-org-x-crypto-ssh-terminal"
-        ,go-golang-org-x-crypto-ssh-terminal)
+     `(("go-golang-org-x-crypto"
+        ,go-golang-org-x-crypto)
        ("go-github-com-stretchr-testify"
         ,go-github-com-stretchr-testify)
-       ("go-golang-org-x-sys-unix"
-        ,go-golang-org-x-sys-unix)))
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
     (arguments
      '(#:tests? #f                    ;FIXME missing dependencies
        #:import-path "github.com/sirupsen/logrus"))
@@ -1834,12 +1264,11 @@ SysVinit, and more.")
            "1yg2zrikn3vkvkx5mn51p6bfjk840qdkn7ahhhvvcsc8mpigrjc6"))))
       (build-system go-build-system)
       (native-inputs
-       `(("go-golang-org-x-sys-unix"
-          ,go-golang-org-x-sys-unix)
+       `(("go-golang-org-x-sys" ,go-golang-org-x-sys)
          ("go-github-com-sirupsen-logrus"
           ,go-github-com-sirupsen-logrus)
-         ("go-golang-org-x-crypto-ssh-terminal"
-          ,go-golang-org-x-crypto-ssh-terminal)))
+         ("go-golang-org-x-crypto"
+          ,go-golang-org-x-crypto)))
       (arguments
        '(#:import-path "github.com/docker/distribution"
          #:phases
@@ -2011,7 +1440,7 @@ values.")
          "1i77aq4gf9as03m8fpfh8fq49n4z9j7548blrcsidm1xhslzk5xd"))))
     (build-system go-build-system)
     (propagated-inputs
-     `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
     (arguments
      '(#:import-path "github.com/mattn/go-isatty"))
     (home-page "https://github.com/mattn/go-isatty")
@@ -2350,7 +1779,7 @@ and lookup requests.  Browse requests are not supported yet.")
          ("taglib" ,taglib)))
       (arguments
        `(#:import-path "github.com/wtolson/go-taglib"
-         ;; Tests don't pass "vet" on go-1.11.  See
+         ;; Tests don't pass "vet" on Go since 1.11.  See
          ;; https://github.com/wtolson/go-taglib/issues/12.
          #:phases
          (modify-phases %standard-phases
@@ -2379,40 +1808,12 @@ and lookup requests.  Browse requests are not supported yet.")
                 "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
     (build-system go-build-system)
     (arguments
-     `(#:import-path "github.com/gogo/protobuf/proto"
-       #:unpack-path "github.com/gogo/protobuf"))
-    (synopsis "Protocol Buffers for Go with Gadgets")
-    (description "Gogoprotobuf is a fork of golang/protobuf with extra code
-generation features.  This code generation is used to achieve:
-@itemize
-@item fast marshalling and unmarshalling
-@item more canonical Go structures
-@item goprotobuf compatibility
-@item less typing by optionally generating extra helper code
-@item peace of mind by optionally generating test and benchmark code
-@item other serialization formats
-@end itemize")
-    (home-page "https://github.com/gogo/protobuf")
-    (license license:bsd-3)))
-
-(define-public go-github-com-gogo-protobuf-protoc-gen-gogo
-  (package
-    (name "go-github-com-gogo-protobuf-protoc-gen-gogo")
-    (version "1.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/gogo/protobuf")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
-    (build-system go-build-system)
-    (arguments
-     `(#:import-path "github.com/gogo/protobuf/protoc-gen-gogo"
-       #:unpack-path "github.com/gogo/protobuf"
-       #:tests? #f)) ; Requires the unpackaged 'protoc-min-version'
+     `(#:import-path "github.com/gogo/protobuf"
+       ; Source-only package
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build))))
     (synopsis "Protocol Buffers for Go with Gadgets")
     (description "Gogoprotobuf is a fork of golang/protobuf with extra code
 generation features.  This code generation is used to achieve:
@@ -2427,54 +1828,6 @@ generation features.  This code generation is used to achieve:
     (home-page "https://github.com/gogo/protobuf")
     (license license:bsd-3)))
 
-(define-public go-github-com-gogo-protobuf-gogoproto
-  (package
-    (name "go-github-com-gogo-protobuf-gogoproto")
-    (version "1.2.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/gogo/protobuf.git")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
-    (build-system go-build-system)
-    (arguments
-     '(#:unpack-path "github.com/gogo/protobuf"
-       #:import-path "github.com/gogo/protobuf/gogoproto"))
-    (home-page "https://github.com/gogo/protobuf")
-    (synopsis "Extensions to protocol buffers")
-    (description "This package provides extensions to the Gogo protocol buffers
-implementation.")
-    (license license:bsd-3)))
-
-(define-public go-github-com-gogo-protobuf-proto
-  (package
-    (name "go-github-com-gogo-protobuf-proto")
-    (version "1.2.1")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/gogo/protobuf.git")
-               (commit (string-append "v" version))))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
-    (build-system go-build-system)
-    (arguments
-     '(#:unpack-path "github.com/gogo/protobuf"
-       #:import-path "github.com/gogo/protobuf/proto"))
-    (home-page "https://github.com/gogo/protobuf")
-    (synopsis "Protocol buffers component")
-    (description "This is a component of the Gogo protocol buffers
-implementation.")
-    (license license:bsd-3)))
-
 (define-public go-github-com-libp2p-go-flow-metrics
   (let ((commit "7e5a55af485341567f98d6847a373eb5ddcdcd43")
         (revision "0"))
@@ -2663,9 +2016,9 @@ Architecture Processors\" by J. Guilford et al.")
       (arguments
        '(#:import-path "github.com/libp2p/go-libp2p-crypto"))
       (native-inputs
-       `(("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+       `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
          ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
-         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)))
       (home-page
        "https://github.com/libp2p/go-libp2p-crypto")
@@ -2811,8 +2164,7 @@ required by Go's standard Hash interface.")
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
       (home-page "https://github.com/multiformats/go-multihash")
       (synopsis "Multihash implementation in Go")
       (description "Multihash implementation in Go.")
@@ -2839,7 +2191,7 @@ required by Go's standard Hash interface.")
        '(#:import-path "github.com/libp2p/go-libp2p-peer"))
       (native-inputs
        `(("go-github-com-libp2p-go-libp2p-crypto" ,go-github-com-libp2p-go-libp2p-crypto)
-         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
@@ -2847,9 +2199,7 @@ required by Go's standard Hash interface.")
          ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
          ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
-         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
       (home-page "https://github.com/libp2p/go-libp2p-peer")
       (synopsis "PKI based identities for use in go-libp2p")
       (description "PKI based identities for use in @command{go-libp2p}.")
@@ -2907,14 +2257,12 @@ required by Go's standard Hash interface.")
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
          ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
-         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
          ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
-         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
       (home-page "https://github.com/libp2p/go-libp2p-metrics")
       (synopsis "Connection wrapper for go-libp2p that provides bandwidth metrics")
       (description "A connection wrapper for @command{go-libp2p} that provides bandwidth
@@ -2987,8 +2335,7 @@ cross-compilation.")
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
       (home-page "https://github.com/multiformats/go-multiaddr")
       (synopsis "Composable and future-proof network addresses")
       (description "Multiaddr is a standard way to represent addresses that
@@ -3032,8 +2379,7 @@ does the following:
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
       (home-page "https://github.com/multiformats/go-multiaddr-net")
       (synopsis "Multiaddress net tools")
       (description "This package provides Multiaddr specific versions of
@@ -3388,8 +2734,7 @@ colorspaces.")
     (arguments
      '(#:import-path "github.com/gdamore/encoding"))
     (inputs
-     `(("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
-       ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)))
+     `(("go-golang-org-x-text" ,go-golang-org-x-text)))
     (home-page "https://github.com/gdamore/encoding")
     (synopsis "Provide encodings missing from Go")
     (description "This package provides useful encodings not included in the
@@ -3430,8 +2775,7 @@ non-UTF-friendly sources.")
       (inputs
        `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)
          ("go-golang-org-colorful" ,go-golang-org-colorful)
-         ("go-golang-org-x-text-encoding" ,go-golang-org-x-text-encoding)
-         ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)
+         ("go-golang-org-x-text" ,go-golang-org-x-text)
          ("go-github-com-gdamore-encoding" ,go-github-com-gdamore-encoding)))
       (home-page "https://github.com/gdamore/tcell")
       (synopsis "Provide a cell-based view for text terminals")
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index d2481cf25b..8f23be05e6 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -171,7 +171,7 @@ coordinates as well as partial support for adjustments in global coordinate syst
 (define-public gpxsee
   (package
     (name "gpxsee")
-    (version "7.12")
+    (version "7.16")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -180,7 +180,7 @@ coordinates as well as partial support for adjustments in global coordinate syst
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0c3axs3mm6xzabwbvy9vgq1sryjpi4h91nwzy9iyv9zjxz7phgzc"))))
+                "1mkfhb2c9qafjpva600nyn6yik49l4q1k6id1xvrci37wsn6ijav"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index ec69424151..c22ab0b9f1 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1085,7 +1085,7 @@ toolkit.")
 (define-public gtkmm
   (package
     (name "gtkmm")
-    (version "3.24.1")
+    (version "3.24.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1093,7 +1093,7 @@ toolkit.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1zfj89spr8ianib5y10wcw63ybdmyjy58a15vqs0m8jq4knl5znx"))))
+               "1hxdnhavjyvbcpxhd5z17l9fj4182028s66lc0s16qqqrldhjwbd"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("glib" ,glib "bin")        ;for 'glib-compile-resources'
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 3a55585251..d5c7325ba4 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -41,6 +41,7 @@
 (define-module (gnu packages guile-xyz)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages aspell)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
@@ -2608,3 +2609,47 @@ bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
 enriched with pure Guile Scheme algorithms, all accessible through a nice,
 clean and easy to use high level API.")
     (license license:gpl3+)))
+
+(define-public guile-ffi-fftw
+  (let ((commit "95d7ffb55860f3163c5283ecec1ef43bc3d174dd")
+        (revision "1"))
+    (package
+      (name "guile-ffi-fftw")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/lloda/guile-ffi-fftw.git")
+                      (commit commit)))
+                (file-name (git-file-name "guile-ffi-fftw" version))
+                (sha256
+                 (base32
+                  "0v9vk9cr4x9gn36lihi9gfkxyiqak0i598v5li6qw8bg95004p49"))))
+      (build-system guile-build-system)
+      (arguments
+       `(#:source-directory "mod"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'prepare-build
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "mod/ffi/fftw.scm"
+                 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
+                  (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
+               #t))
+           (add-after 'build 'check
+             (lambda _
+               (invoke "guile" "-L" "mod"
+                       "-s" "test/test-ffi-fftw.scm"))))))
+      (inputs
+       `(("fftw" ,fftw)
+         ("guile" ,guile-2.2)))
+      (home-page "https://github.com/lloda/guile-ffi-fftw/")
+      (synopsis "Access FFTW through Guile's FFI")
+      (description "This is a minimal set of Guile FFI bindings for the FFTW
+library's ‘guru interface’.  It provides two functions: @code{fftw-dft! rank
+sign in out} and @code{fftw-dft rank sign in}.  These bindings being minimal,
+there is no support for computing & reusing plans, or split r/i transforms, or
+anything other than straight complex DFTs.")
+      ;; TODO: This might actually be LGPLv3+
+      ;; See https://github.com/lloda/guile-ffi-fftw/issues/1
+      (license license:gpl3+))))
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index c5e1cd6c64..0fab912f4f 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -11,6 +11,8 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015 John Soo <jsoo1@asu.edu>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -256,7 +258,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
-       '("--flags=-Android -Assistant -Pairing -S3 -Webapp -WebDAV")
+       '("--flags=-Android -Assistant -Pairing -Webapp -WebDAV")
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'patch-shell-for-tests
@@ -317,6 +319,7 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
      `(("curl" ,curl)
        ("ghc-aeson" ,ghc-aeson)
        ("ghc-async" ,ghc-async)
+       ("ghc-aws" ,ghc-aws)
        ("ghc-bloomfilter" ,ghc-bloomfilter)
        ("ghc-byteable" ,ghc-byteable)
        ("ghc-case-insensitive" ,ghc-case-insensitive)
@@ -496,6 +499,64 @@ with CSS and mouseover annotations, XHTML 1.0 with inline CSS styling, LaTeX,
 and mIRC chat codes.")
     (license license:bsd-3)))
 
+(define-public kmonad
+  (package
+    (name "kmonad")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/david-janssen/kmonad.git")
+             (commit "06d7b8c709efa695be35df9bde91275cbb2ba099")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1rjr4h5yq63x3kad6yn4p8v26389sd9dgr5n2w73s1chafapzwwd"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'haddock)             ; Haddock fails to generate docs
+         (add-after 'install 'install-udev-rules
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (rules (string-append out "/lib/udev/rules.d")))
+               (mkdir-p rules)
+               (call-with-output-file (string-append rules "/70-kmonad.rules")
+                 (lambda (port)
+                   (display
+                    (string-append
+                     "KERNEL==\"uinput\", MODE=\"0660\", "
+                     "GROUP=\"input\", OPTIONS+=\"static_node=uinput\"\n")
+                    port)))
+               #t)))
+         (add-after 'install-udev-rules 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/kmonad-" ,version)))
+               (install-file "README.md" doc)
+               (copy-recursively "doc" doc)
+               (copy-recursively "example" (string-append doc "/example"))
+               #t))))))
+    (inputs
+     `(("ghc-cereal" ,ghc-cereal)
+       ("ghc-exceptions" ,ghc-exceptions)
+       ("ghc-hashable" ,ghc-hashable)
+       ("ghc-lens" ,ghc-lens)
+       ("ghc-megaparsec" ,ghc-megaparsec-7)
+       ("ghc-optparse-applicative" ,ghc-optparse-applicative)
+       ("ghc-unagi-chan" ,ghc-unagi-chan)
+       ("ghc-unliftio" ,ghc-unliftio)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (home-page "https://github.com/david-janssen/kmonad")
+    (synopsis "Advanced keyboard manager")
+    (description "KMonad is a keyboard remapping utility that supports
+advanced functionality, such as custom keymap layers and modifiers, macros,
+and conditional mappings that send a different keycode when tapped or held.
+By operating at a lower level than most similar tools, it supports X11,
+Wayland, and Linux console environments alike.")
+    (license license:expat)))
+
 (define-public raincat
   (package
     (name "raincat")
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 2977398880..217c78a08c 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
 ;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -381,6 +382,28 @@ over threads in Haskell, in which @code{Async a} is a concurrent thread that
 will eventually deliver a value of type @code{a}.")
     (license license:bsd-3)))
 
+(define-public ghc-atomic-primops
+  (package
+    (name "ghc-atomic-primops")
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/atomic-primops"
+                           "/atomic-primops-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cyr2x6xqz6s233znrz9rnrfj56m9bmnawwnka0lsqqy1hp8gy37"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-primitive" ,ghc-primitive)))
+    (home-page "https://github.com/rrnewton/haskell-lockfree/wiki")
+    (synopsis "Safe approach to CAS and other atomic ops")
+    (description
+     "GHC 7.4 introduced a new @code{casMutVar} PrimOp which is difficult to
+use safely, because pointer equality is a highly unstable property in Haskell.
+This library provides a safer method based on the concept of @code{Ticket}s.")
+    (license license:bsd-3)))
+
 (define-public ghc-atomic-write
   (package
     (name "ghc-atomic-write")
@@ -10605,6 +10628,37 @@ processes.  It wraps around the @code{process} library, and intends to improve
 upon it.")
     (license license:expat)))
 
+(define-public ghc-unagi-chan
+  (package
+    (name "ghc-unagi-chan")
+    (version "0.4.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/unagi-chan"
+                           "/unagi-chan-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1lnl5n4jnjmm4chp461glcwkrrw63rjz3fvprwxcy3lkpbkrqvgn"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-atomic-primops" ,ghc-atomic-primops)
+       ("ghc-primitive" ,ghc-primitive)))
+    (arguments
+     `(#:tests? #f ; FIXME: Tests expect primitive 0.7
+       #:cabal-revision
+       ("1"
+        "09pqi867wskwgc5lpn197f895mbn1174ydgllvcppcsmrz2b6yr6")))
+    (home-page "http://hackage.haskell.org/package/unagi-chan")
+    (synopsis "Fast concurrent queues with a Chan-like API, and more")
+    (description
+     "This library provides implementations of concurrent FIFO queues (for
+both general boxed and primitive unboxed values) that are fast, perform well
+under contention, and offer a Chan-like interface.  The library may be of
+limited usefulness outside of x86 architectures where the fetch-and-add
+instruction is not available.")
+    (license license:bsd-3)))
+
 (define-public ghc-unbounded-delays
   (package
     (name "ghc-unbounded-delays")
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 2dd2097075..39c22262c1 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -86,14 +86,12 @@ that are shared between @command{go-ipfs/commands} and its rewrite
          ("go-github-com-multiformats-go-multiaddr" ,go-github-com-multiformats-go-multiaddr)
          ("go-github-com-multiformats-go-multiaddr-net" ,go-github-com-multiformats-go-multiaddr-net)
          ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
-         ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+         ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
-         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
-         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
-         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
+         ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
          ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
          ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
@@ -140,15 +138,13 @@ that are shared between @command{go-ipfs/commands} and its rewrite
        ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
        ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
        ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
-       ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+       ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
        ("go-github-com-sabhiram-go-gitignore" ,go-github-com-sabhiram-go-gitignore)
        ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
        ("go-github-com-whyrusleeping-json-filter" ,go-github-com-whyrusleeping-json-filter)
        ("go-github-com-whyrusleeping-progmeter" ,go-github-com-whyrusleeping-progmeter)
        ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)
-       ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
-       ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
-       ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
     (home-page "https://github.com/whyrusleeping/gx")
     (synopsis "Package management tool using IPFS")
     (description "@command{gx} is a packaging tool built around the
@@ -202,14 +198,12 @@ powerful and simple.")
        ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
        ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
        ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
-       ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
+       ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
        ("go-github-com-sabhiram-go-gitignore" ,go-github-com-sabhiram-go-gitignore)
        ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
        ("go-github-com-whyrusleeping-progmeter" ,go-github-com-whyrusleeping-progmeter)
        ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)
-       ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
-       ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
-       ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
     (home-page "https://github.com/whyrusleeping/gx-go")
     (synopsis "Golang subtool for the @command{gx} package manager")
     (description "A subtool for the @command{gx} package manager for packages
diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm
index 7681677938..37638a2b6a 100644
--- a/gnu/packages/libedit.scm
+++ b/gnu/packages/libedit.scm
@@ -29,14 +29,14 @@
 (define-public libedit
   (package
     (name "libedit")
-    (version "20190324-3.1")
+    (version "20191025-3.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "http://thrysoee.dk/editline"
+      (uri (string-append "https://thrysoee.dk/editline"
                           "/libedit-" version ".tar.gz"))
       (sha256
-       (base32 "1bhvp8xkkgrg89k4ci1k8vjl3nhb6szd4ghy9lp4jrfgq58hz3xc"))))
+       (base32 "0fdznw6fklis39xqk30ihw8dl8kdw9fzq1z42jmbyy6lc1k07zvd"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index f8b1433aa3..ddf1c9aab3 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -929,7 +929,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "6.1.5.2")
+    (version "6.2.8.2")
     (source
      (origin
        (method url-fetch)
@@ -939,36 +939,9 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
        (sha256
         (base32
-         "1wh8qhqkmb89nmfcb0w6iwpdzxwqr7c5kzxgpk4gy60xin6gwjgb"))
-       (patches
-        (append (list (origin
-                        ;; Support newer versions of Orcus and MDDS.  These patches
-                        ;; are taken from upstream, but we use the patches from Arch
-                        ;; because they are adapted for the release tarball.
-                        ;; Note: remove the related substitutions below when these
-                        ;; are no longer needed.
-                        (method url-fetch)
-                        (uri (string-append "https://git.archlinux.org/svntogit"
-                                            "/packages.git/plain/trunk/"
-                                            "0001-Update-orcus-to-0.14.0.patch?&id="
-                                            "4002fa927f2a143bd2ec008a0c400b2ce9f2c8a7"))
-                        (file-name "libreoffice-orcus.patch")
-                        (sha256
-                         (base32
-                          "0v1knblrmfzkb4g9pm5mdnrmjib59bznvca1ygbwlap2ln1h4mk0")))
-                      (origin
-                        (method url-fetch)
-                        (uri (string-append "https://git.archlinux.org/svntogit"
-                                            "/packages.git/plain/trunk/"
-                                            "0001-Update-mdds-to-1.4.1.patch?&id="
-                                            "4002fa927f2a143bd2ec008a0c400b2ce9f2c8a7"))
-                        (file-name "libreoffice-mdds.patch")
-                        (sha256
-                         (base32
-                          "0apbmammmp4pk473xiv5vk50r4c5gjvqzf9jkficksvz58q6114f"))))
-                (search-patches "libreoffice-boost.patch"
-                                "libreoffice-icu.patch"
-                                "libreoffice-glm.patch")))
+         "1npxyj0hklls3jnaxx9kj3r6bgydgrbz6nacy05n0zhq8i6zb5ir"))
+       (patches (search-patches "libreoffice-icu.patch"
+                                "libreoffice-glm.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -992,6 +965,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
        ("cups" ,cups)
        ("dbus-glib" ,dbus-glib)
        ("fontconfig" ,fontconfig)
+       ("fontforge" ,fontforge)
        ("gconf" ,gconf)
        ("glew" ,glew)
        ("glm" ,glm)
@@ -1031,6 +1005,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
        ("libxt" ,libxt)
        ("libzmf" ,libzmf)
        ("lpsolve" ,lpsolve)
+       ("mariadb" ,mariadb)
        ("mdds" ,mdds)
        ("mythes" ,mythes)
        ("neon" ,neon)
@@ -1066,13 +1041,6 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
                          "solenv/gbuild/platform/unxgcc.mk")
                  (("/bin/sh") (which "sh")))
 
-               ;; XXX: Adjust the checks for MDDS and liborcus to avoid having
-               ;; to re-bootstrap the whole thing.  Remove this with the related
-               ;; patches above.
-               (substitute* "configure"
-                 (("mdds-1.2 >= 1.2.3") "mdds-1.4 >= 1.4.1")
-                 (("liborcus-0.13 >= 0.13.3") "liborcus-0.14 >= 0.14.0"))
-
                ;; GPGME++ headers are installed in a gpgme++ subdirectory, but
                ;; files in "xmlsecurity/source/gpg/" and elsewhere expect to
                ;; find them on the include path without a prefix.
@@ -1161,16 +1129,15 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
           ;; With java, the build fails since sac.jar is missing.
           "--without-java"
           ;; FIXME: Enable once the corresponding inputs are packaged.
-          "--without-system-npapi-headers"
           "--disable-coinmp"
           "--disable-firebird-sdbc" ; embedded firebird
-          "--disable-gltf"
           ;; XXX: PDFium support requires fetching an external tarball and
           ;; patching the build scripts to work with GCC5.  Try enabling this
           ;; when our default compiler is >=GCC 6.
           "--disable-pdfium"
           "--disable-gtk" ; disable use of GTK+ 2
-          "--without-doxygen")))
+          "--without-doxygen"
+          "--enable-build-opensymbol")))
     (home-page "https://www.libreoffice.org/")
     (synopsis "Office suite")
     (description "LibreOffice is a comprehensive office suite.  It contains
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8f4cccce81..0344f5b37c 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -351,42 +351,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.3-version "5.3.7")
+(define-public linux-libre-5.3-version "5.3.8")
 (define-public linux-libre-5.3-pristine-source
   (let ((version linux-libre-5.3-version)
-        (hash (base32 "00j8sdrmmppqf38vl50a4zas5gy7yv37n43b61f8472k45773jf6")))
+        (hash (base32 "0jb6yya9yx4z52p5m32dqj0kgc6aaz9df8mvq0hzy40bqb3czwvq")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.3)))
 
-(define-public linux-libre-4.19-version "4.19.80")
+(define-public linux-libre-4.19-version "4.19.81")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "1v776s6q5wxn8ci86dwa8s8y41b94g09fnpgvzysg2h89rvbmac0")))
+        (hash (base32 "17g2wiaa7l7mxi72k79drxij2zqk3nsj8wi17bl4nfvb1ypc2gi9")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.150")
+(define-public linux-libre-4.14-version "4.14.151")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1c2pxfvv31af0mzcqnbfjk8pc0wrhg4yhspl8a3ab2w5dfwa9ib5")))
+        (hash (base32 "1bizb1wwni5r4m5i0mrsqbc5qw73lwrfrdadm09vbfz9ir19qlgz")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.197")
+(define-public linux-libre-4.9-version "4.9.198")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "032as6g4xvqjarqhvx7mr14yhn6idak4g0ps1skmsl4dfav6hdam")))
+        (hash (base32 "1b05jra6q695s1d4rzdr39i6m8xsi5xjrdn73sgwzvx0dgxfnwlm")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.197")
+(define-public linux-libre-4.4-version "4.4.198")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "0ypfl1q1bdbk81hk0bm8a0grqzz4z5rp7z7asa3191ji3r8q9x4w")))
+        (hash (base32 "04pkryy1lc75c88vq5wcjjcxs43i7bb8hhplbfi6s204ipc0iy7c")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -2076,14 +2076,14 @@ devices.  It replaces @code{iwconfig}, which is deprecated.")
 (define-public powertop
   (package
     (name "powertop")
-    (version "2.10")
+    (version "2.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://01.org/sites/default/files/downloads/"
-                           "powertop-v" version ".tar.gz"))
+                           "powertop-v" version "-1-g7ef7f79.tar_0.gz"))
        (sha256
-        (base32 "0xaazqccyd42v2q532dxx40nqhb9sfsa6cyx8641rl57mfg4bdyk"))))
+        (base32 "0kynypj5cydfbma0ssblq1k4m1arixc1s2vf0ybv8y2gg09wjs5f"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -3901,7 +3901,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "5.3")
+    (version "5.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -3909,7 +3909,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "13ivb1b627qkiiqxh2y7zawynarkmgxrnwwpqhx6cci621yyqqqp"))))
+                "0f6s1iwiqbncrvxp74k50s88x6zqf85sjxg04kyni82l1vk1m8xz"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"
@@ -5855,7 +5855,7 @@ management tools in userspace.")
     (arguments
      `(#:import-path "github.com/vishvananda/netlink"))
     (native-inputs
-     `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)
+     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)
        ("go-netns" ,go-netns)))
     (home-page "https://github.com/vishvananda/netlink")
     (synopsis "Simple netlink library for Go")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 2c6192ca01..f753e3756f 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -320,21 +320,30 @@ to run without any changes.")
 (define-public fetchmail
   (package
     (name "fetchmail")
-    (version "6.3.26")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/fetchmail/branch_6.3/fetchmail-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "0l78ayvi9dm8hd190gl139cs2xqsrf7r9ncilslw20mgvd6cbd3r"))))
+    (version "6.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/fetchmail/branch_"
+                           (version-major+minor version) "/"
+                           "fetchmail-" version ".tar.xz"))
+       (sha256
+        (base32 "1859wvfc9fq72mwp4njdiy0x89hnddlfr3nix71qqglcs0fz2crz"))))
     (build-system gnu-build-system)
     (inputs
      `(("openssl" ,openssl)))
     (arguments
-     `(#:configure-flags (list (string-append "--with-ssl="
-                                              (assoc-ref %build-inputs "openssl")))))
-    (home-page "http://www.fetchmail.info/")
+     `(#:configure-flags
+       (list (string-append "--with-ssl="
+                            (assoc-ref %build-inputs "openssl")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'create-test-environment
+           (lambda _
+             ;; Fix ‘Cannot find absolute path for user's home directory’.
+             (setenv "HOME" "/tmp")
+             #t)))))
+    (home-page "https://www.fetchmail.info/")
     (synopsis "Remote-mail retrieval and forwarding utility")
     (description
      "Fetchmail is a full-featured, robust, well-documented remote-mail
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 86efe64e52..e7e14c54ae 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -251,15 +251,11 @@ automatically.")
        "00zc3rzj97gscby31djlqyczvqpyhrl66i44czwzmmn7rc5j03m1"))))
    (build-system gnu-build-system)
    (arguments
-    `(#:make-flags '("CC=gcc")
+    `(#:make-flags
+      (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")))
       #:phases
       (modify-phases %standard-phases
-        (delete 'configure)
-        (add-before 'install 'hardcode-paths
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* "Makefile"
-                         (("/usr/local") (assoc-ref outputs "out")))
-            #t)))))
+        (delete 'configure))))
    (home-page "https://git.sr.ht/~sircmpwn/scdoc")
    (synopsis "Simple man page generator")
    (description "scdoc is a simple man page generator written for POSIX systems
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index f890ad8dd5..a6e9dcbbb3 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -1627,6 +1627,14 @@ are both supported).")
                (base32
                 "0nxh81j8ky0fzv47pip1jb7rs5rrin3jx0f3h632bvpjiya45r1z"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "--enable-c-plugins"
+             "--enable-otr"
+             "--enable-omemo"
+             "--enable-pgp"
+             "--enable-icons"
+             "--enable-notifications")))
     (inputs
      `(("curl" ,curl)
        ("expat" ,expat)
@@ -1642,12 +1650,15 @@ are both supported).")
        ("autoconf-archive" ,autoconf-archive)
        ("automake" ,automake)
        ("cmocka" ,cmocka)
+       ("gtk+" ,gtk+-2)
+       ("libnotify" ,libnotify)
        ("libtool" ,libtool)
+       ("libsignal-protocol-c" ,libsignal-protocol-c)
        ("pkg-config" ,pkg-config)))
     (synopsis "Console-based XMPP client")
     (description "Profanity is a console based XMPP client written in C
 using ncurses and libmesode, inspired by Irssi.")
-    (home-page "http://www.profanity.im")
+    (home-page "https://profanity-im.github.io")
     (license license:gpl3+)))
 
 (define-public libircclient
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 9a1cf60c2e..b8e54d4058 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -306,7 +306,7 @@ This package contains the binary.")
 (define-public mpg123
   (package
     (name "mpg123")
-    (version "1.25.12")
+    (version "1.25.13")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "mirror://sourceforge/mpg123/mpg123/"
@@ -316,7 +316,7 @@ This package contains the binary.")
                           version ".tar.bz2")))
               (sha256
                (base32
-                "1l9iwwgqzw6yg5zk9pqmlbfyq6d8dqysbmj0j3m8dyrxd34wgzhz"))))
+                "02l915jq0ymndb082g6w89bpf66z04ifa1lr7ga3yycw6m46hc4h"))))
     (build-system gnu-build-system)
     (arguments '(#:configure-flags '("--with-default-audio=pulse")))
     (native-inputs `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index c0707772e4..463f7fd9ef 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2383,52 +2383,46 @@ follows a traditional multi-track tape recorder control paradigm.")
     (license license:gpl2+)))
 
 (define-public ams-lv2
-  ;; Version 1.2.1 built with Python 3.7 raises an error in the waf-script.
-  ;; Therefore, we take two more commmits than 1.2.1 that introduce an updated
-  ;; waf-script and fix one error.
-  (let ((commit "377d166db54a787b48979171c5652d2eb4f1bbb5")
-        (revision "1"))
-    (package
-      (name "ams-lv2")
-      (version (git-version "1.2.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/blablack/ams-lv2.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1ndgxcxjxwidg7436k0nb5clxkyi878k1j999sbbd1gk2fm0kcqm"))))
-      (build-system waf-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'remove-sse-flags
-             (lambda* (#:key system #:allow-other-keys)
-               (unless (or (string-prefix? "x86_64" system)
-                              (string-prefix? "i686" system))
-                     (substitute* "wscript"
-                       (("'-msse', '-mfpmath=sse', ") "")))
-               #t)))
-         #:tests? #f)) ; no tests
-      (inputs
-       `(("lv2" ,lv2)
-         ("lvtk" ,lvtk)
-         ("gtkmm" ,gtkmm-2)
-         ("gtk" ,gtk+-2)
-         ("cairo" ,cairo)
-         ("fftw" ,fftw)))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)))
-      (home-page "https://objectivewave.wordpress.com/ams-lv2/")
-      (synopsis "Port of Alsa Modular Synth internal modules into LV2")
-      (description "This set of LV2 plugins is a port of the internal modules
+  (package
+    (name "ams-lv2")
+    (version "1.2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/blablack/ams-lv2.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1lz2mvk4gqsyf92yxd3aaldx0d0qi28h4rnnvsaz4ls0ccqm80nk"))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-sse-flags
+           (lambda* (#:key system #:allow-other-keys)
+             (unless (or (string-prefix? "x86_64" system)
+                         (string-prefix? "i686" system))
+               (substitute* "wscript"
+                 (("'-msse', '-mfpmath=sse', ") "")))
+             #t)))
+       #:tests? #f))                    ; no tests
+    (inputs
+     `(("cairo" ,cairo)
+       ("fftw" ,fftw)
+       ("gtk" ,gtk+-2)
+       ("gtkmm" ,gtkmm-2)
+       ("lv2" ,lv2)
+       ("lvtk" ,lvtk)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/blablack/ams-lv2")
+    (synopsis "Port of Alsa Modular Synth internal modules into LV2")
+    (description "This set of LV2 plugins is a port of the internal modules
 found in Alsa Modular Synth.  These plugins are used to create modular
 synthesizers and contain: VCO, VCF, VCA, LFO, slew limiter, envelopes, sample
 and hold, etc.")
-      (license license:gpl2))))
+    (license license:gpl2)))
 
 (define-public gxtuner
   (package
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index d9134ff910..9173871497 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -595,14 +595,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.0.5")
+    (version "3.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "087qv7nd7zlbckvcs37fkkg7v0mw0hjd5yfbghqym764fpjgqlf5"))))
+        (base32 "0gp3qg0280ysrsaa97yfazka8xcyrspsrw8bfgqxnpf1l0i40zx8"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 207e501520..9bea0e68c1 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -115,7 +115,7 @@ human.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/keepassxreboot/" name
+       (uri (string-append "https://github.com/keepassxreboot/keepassxc"
                            "/releases/download/" version "/keepassxc-"
                            version "-src.tar.xz"))
        (sha256
diff --git a/gnu/packages/patches/icecat-default-search-ddg.patch b/gnu/packages/patches/icecat-default-search-ddg.patch
deleted file mode 100644
index 9eea07bcab..0000000000
--- a/gnu/packages/patches/icecat-default-search-ddg.patch
+++ /dev/null
@@ -1,1108 +0,0 @@
---- a/browser/components/search/SearchTelemetry.jsm.orig	1980-01-01 18:59:51.000000000 -0500
-+++ b/browser/components/search/SearchTelemetry.jsm	2019-10-25 06:58:49.564335696 -0400
-@@ -40,6 +40,12 @@
-  *     page mightbe an advert.
-  */
- const SEARCH_PROVIDER_INFO = {
-+  duckduckgo: {
-+    regexp: /^https:\/\/duckduckgo\.com\//,
-+    queryParam: "q",
-+    codeParam: "t",
-+    codePrefixes: ["ff"],
-+  },
-   google: {
-     regexp: /^https:\/\/www\.google\.(?:.+)\/search/,
-     queryParam: "q",
-@@ -50,12 +56,6 @@
-       /^https:\/\/www\.googleadservices\.com\/(?:pagead\/)?aclk/,
-     ],
-   },
--  duckduckgo: {
--    regexp: /^https:\/\/duckduckgo\.com\//,
--    queryParam: "q",
--    codeParam: "t",
--    codePrefixes: ["ff"],
--  },
-   yahoo: {
-     regexp: /^https:\/\/(?:.*)search\.yahoo\.com\/search/,
-     queryParam: "p",
---- a/browser/components/search/extensions/list.json.orig	1980-01-01 18:59:51.000000000 -0500
-+++ b/browser/components/search/extensions/list.json	2019-10-25 07:27:58.209006756 -0400
-@@ -1,9 +1,9 @@
- {
-   "default": {
--    "searchDefault": "Google",
--    "searchOrder": ["Google", "Bing"],
-+    "searchDefault": "DuckDuckGo",
-+    "searchOrder": ["DuckDuckGo", "Google", "Bing"],
-     "visibleDefaultEngines": [
--      "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
-+      "ddg", "google-b-d", "amazondotcom", "bing", "ebay", "twitter", "wikipedia"
-     ]
-   },
-   "regionOverrides": {
-@@ -54,32 +54,32 @@
-     "en-US": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "twitter", "wikipedia"
-+          "ddg", "google-b-d", "amazondotcom", "bing", "ebay", "twitter", "wikipedia"
-         ]
-       },
-       "KZ": {
-         "visibleDefaultEngines": [
--          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
-+          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
-         "visibleDefaultEngines": [
--          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
-+          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
-         "visibleDefaultEngines": [
--          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
-+          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
-         "visibleDefaultEngines": [
--          "amazondotcom", "bing", "google", "twitter", "wikipedia", "ddg", "yandex-en"
-+          "ddg", "amazondotcom", "bing", "google", "twitter", "wikipedia", "yandex-en"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "experimental-hidden": {
-         "visibleDefaultEngines": [
-@@ -90,131 +90,131 @@
-     "ach": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ]
-       }
-     },
-     "af": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-af"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-af"
-         ]
-       }
-     },
-     "an": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ebay-es", "wikipedia-an", "ddg", "twitter"
-+          "ddg", "google-b-d", "bing", "ebay-es", "wikipedia-an", "twitter"
-         ]
-       }
-     },
-     "ar": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ar"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-ar"
-         ]
-       }
-     },
-     "as": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "ddg", "wikipedia-as"
-+          "ddg", "google-b-d", "amazon-in", "wikipedia-as"
-         ]
-       }
-     },
-     "ast": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "ebay-es", "wikipedia-ast"
-+          "ddg", "google-b-d", "bing", "ebay-es", "wikipedia-ast"
-         ]
-       }
-     },
-     "az": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "azerdict", "bing", "ddg", "wikipedia-az", "yandex-az"
-+          "ddg", "google-b-d", "amazondotcom", "azerdict", "bing", "wikipedia-az", "yandex-az"
-         ]
-       }
-     },
-     "be": {
-       "default": {
-         "visibleDefaultEngines": [
--          "yandex-by", "google-b-d", "ddg", "wikipedia-be", "wikipedia-be-tarask"
-+          "ddg", "yandex-by", "google-b-d", "wikipedia-be", "wikipedia-be-tarask"
-         ]
-       },
-       "BY": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "KZ": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "bg": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "ddg", "pazaruvaj", "wikipedia-bg"
-+          "ddg", "google-b-d", "amazondotcom", "pazaruvaj", "wikipedia-bg"
-         ]
-       }
-     },
-     "bn": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "bing", "ddg", "wikipedia-bn"
-+          "ddg", "google-b-d", "amazon-in", "bing", "wikipedia-bn"
-         ]
-       }
-     },
-     "bn-BD": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-bn"
-+          "ddg", "google-b-d", "bing", "wikipedia-bn"
-         ]
-       }
-     },
-     "bn-IN": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "bing", "ddg", "wikipedia-bn"
-+          "ddg", "google-b-d", "amazon-in", "bing", "wikipedia-bn"
-         ]
-       }
-     },
-     "br": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-france", "ddg", "ebay-fr", "freelang", "wikipedia-br"
-+          "ddg", "google-b-d", "amazon-france", "ebay-fr", "freelang", "wikipedia-br"
-         ]
-       }
-     },
-     "bs": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "olx", "twitter", "wikipedia-bs"
-+          "ddg", "google-b-d", "olx", "twitter", "wikipedia-bs"
-         ]
-       }
-     },
-     "ca": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "diec2", "ddg", "ebay-es", "twitter", "wikipedia-ca"
-+          "ddg", "google-b-d", "bing", "diec2", "ebay-es", "twitter", "wikipedia-ca"
-         ]
-       }
-     },
-     "cak": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-es"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-es"
-         ]
-       }
-     },
-     "crh": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "twitter", "wikipedia-crh"
-+          "ddg", "google-b-d", "twitter", "wikipedia-crh"
-         ]
-       }
-     },
-@@ -222,74 +222,74 @@
-       "default": {
-         "searchOrder": ["Google", "Seznam"],
-         "visibleDefaultEngines": [
--          "google-b-d", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"
-+          "ddg", "google-b-d", "seznam-cz", "heureka-cz", "mapy-cz", "wikipedia-cz"
-         ]
-       }
-     },
-     "cy": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "ddg", "ebay-uk", "palasprint", "wikipedia-cy"
-+          "ddg", "google-b-d", "amazon-en-GB", "ebay-uk", "palasprint", "wikipedia-cy"
-         ]
-       }
-     },
-     "da": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-da"
-+          "ddg", "google-b-d", "bing", "amazon-en-GB", "wikipedia-da"
-         ]
-       }
-     },
-     "de": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-de", "bing", "ddg", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
-+          "ddg", "google-b-d", "amazon-de", "bing", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
-         ]
-       }
-     },
-     "dsb": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-dsb"
-+          "ddg", "google-b-d", "bing", "amazon-de", "ebay-de", "leo_ende_de", "wikipedia-dsb"
-         ]
-       }
-     },
-     "el": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-el"
-+          "ddg", "google-b-d", "amazon-en-GB", "bing", "wikipedia-el"
-         ]
-       }
-     },
-     "en-CA": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
-+          "ddg", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
-         ]
-       },
-       "KZ": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "amazon-ca", "bing", "ddg", "ebay-ca", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "amazon-ca", "bing", "ebay-ca", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "experimental-hidden": {
-         "visibleDefaultEngines": [
-@@ -300,32 +300,32 @@
-     "en-GB": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
-+          "ddg", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
-         ]
-       },
-       "KZ": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ddg", "ebay-uk", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazon-en-GB", "chambers-en-GB", "ebay-uk", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "experimental-hidden": {
-         "visibleDefaultEngines": [
-@@ -336,66 +336,66 @@
-     "en-ZA": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ]
-       },
-       "KZ": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
-         "visibleDefaultEngines": [
--          "yandex-en", "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia"
-+          "ddg", "yandex-en", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia"
-         ],
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "eo": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-eo"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-eo"
-         ]
-       }
-     },
-     "es-AR": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"
-+          "ddg", "google-b-d", "amazondotcom", "drae", "mercadolibre-ar", "wikipedia-es"
-         ]
-       }
-     },
-     "es-CL": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "drae", "ddg", "mercadolibre-cl", "wikipedia-es"
-+          "ddg", "google-b-d", "bing", "drae", "mercadolibre-cl", "wikipedia-es"
-         ]
-       }
-     },
-     "es-ES": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "drae", "ddg", "ebay-es", "twitter", "wikipedia-es"
-+          "ddg", "google-b-d", "bing", "drae", "ebay-es", "twitter", "wikipedia-es"
-         ]
-       }
-     },
-     "es-MX": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "mercadolibre-mx", "wikipedia-es"
-+          "ddg", "google-b-d", "bing", "mercadolibre-mx", "wikipedia-es"
-         ]
-       },
-       "experimental-hidden": {
-@@ -407,49 +407,49 @@
-     "et": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "neti-ee", "ddg", "osta-ee", "wikipedia-et", "eki-ee"
-+          "ddg", "google-b-d", "neti-ee", "osta-ee", "wikipedia-et", "eki-ee"
-         ]
-       }
-     },
-     "eu": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-eu"
-+          "ddg", "google-b-d", "bing", "amazon-en-GB", "ebay-es", "wikipedia-eu"
-         ]
-       }
-     },
-     "fa": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "bing", "ddg", "wikipedia-fa"
-+          "ddg", "google-b-d", "amazondotcom", "bing", "wikipedia-fa"
-         ]
-       }
-     },
-     "ff": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-france", "ddg", "wikipedia-fr"
-+          "ddg", "google-b-d", "bing", "amazon-france", "wikipedia-fr"
-         ]
-       }
-     },
-     "fi": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-fi"
-+          "ddg", "google-b-d", "bing", "wikipedia-fi"
-         ]
-       }
-     },
-     "fr": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "qwant", "wikipedia-fr"
-+          "ddg", "google-b-d", "bing", "amazon-france", "ebay-fr", "qwant", "wikipedia-fr"
-         ]
-       }
-     },
-     "fy-NL": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "bolcom-fy-NL", "ddg", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
-+          "ddg", "google-b-d", "bing", "bolcom-fy-NL", "ebay-nl", "marktplaats-fy-NL", "wikipedia-fy-NL"
-         ]
-       },
-       "experimental-hidden": {
-@@ -461,105 +461,105 @@
-     "ga-IE": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "ddg", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
-+          "ddg", "google-b-d", "amazon-en-GB", "ebay-ie", "tearma", "twitter", "wikipedia-ga-IE"
-         ]
-       }
-     },
-     "gd": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "bbc-alba", "ddg", "ebay-uk", "faclair-beag", "wikipedia-gd"
-+          "ddg", "google-b-d", "amazon-en-GB", "bbc-alba", "ebay-uk", "faclair-beag", "wikipedia-gd"
-         ]
-       }
-     },
-     "gl": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "ddg", "ebay-es", "wikipedia-gl"
-+          "ddg", "google-b-d", "amazon-en-GB", "ebay-es", "wikipedia-gl"
-         ]
-       }
-     },
-     "gn": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-gn"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-gn"
-         ]
-       }
-     },
-     "gu-IN": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-gu"
-+          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-gu"
-         ]
-       }
-     },
-     "he": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "wikipedia-he", "morfix-dic"
-+          "ddg", "google-b-d", "wikipedia-he", "morfix-dic"
-         ]
-       }
-     },
-     "hi-IN": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-hi"
-+          "ddg", "google-b-d", "bing", "wikipedia-hi"
-         ]
-       }
-     },
-     "hr": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "bing", "ddg", "eudict", "twitter", "wikipedia-hr"
-+          "ddg", "google-b-d", "amazon-en-GB", "bing", "eudict", "twitter", "wikipedia-hr"
-         ]
-       }
-     },
-     "hsb": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-de", "ddg", "ebay-de", "leo_ende_de", "wikipedia-hsb"
-+          "ddg", "google-b-d", "bing", "amazon-de", "ebay-de", "leo_ende_de", "wikipedia-hsb"
-         ]
-       }
-     },
-     "hu": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "vatera", "wikipedia-hu"
-+          "ddg", "google-b-d", "vatera", "wikipedia-hu"
-         ]
-       }
-     },
-     "hy-AM": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "ddg", "list-am", "wikipedia-hy"
-+          "ddg", "google-b-d", "amazondotcom", "list-am", "wikipedia-hy"
-         ]
-       }
-     },
-     "ia": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ia"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ia"
-         ]
-       }
-     },
-     "id": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "wikipedia-id"
-+          "ddg", "google-b-d", "wikipedia-id"
-         ]
-       }
-     },
-     "is": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-is"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-is"
-         ]
-       }
-     },
-     "it": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "wikipedia-it"
-+          "ddg", "google-b-d", "bing", "amazon-it", "ebay-it", "wikipedia-it"
-         ]
-       }
-     },
-@@ -567,7 +567,7 @@
-       "default": {
-         "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],
-         "visibleDefaultEngines": [
--          "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
-+          "ddg", "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
-         ]
-       }
-     },
-@@ -575,159 +575,159 @@
-       "default": {
-         "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Twitter", "Wikipedia (ja)"],
-         "visibleDefaultEngines": [
--          "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja", "ddg"
-+            "ddg", "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
-         ]
-       }
-     },
-     "ka": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ka"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ka"
-         ]
-       }
-     },
-     "kab": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-kab"
-+          "ddg", "google-b-d", "bing", "wikipedia-kab"
-         ]
-       }
-     },
-     "kk": {
-       "default": {
-         "visibleDefaultEngines": [
--          "yandex-kk", "google-b-d", "ddg", "flip", "twitter", "wikipedia-kk"
-+          "ddg", "yandex-kk", "google-b-d", "flip", "twitter", "wikipedia-kk"
-         ]
-       },
-       "KZ": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "km": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-km"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-km"
-         ]
-       }
-     },
-     "kn": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "kannadastore", "wikipedia-kn"
-+          "ddg", "google-b-d", "bing", "amazon-in", "kannadastore", "wikipedia-kn"
-         ]
-       }
-     },
-     "ko": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "naver-kr", "daum-kr", "wikipedia-kr"
-+          "ddg", "google-b-d", "naver-kr", "daum-kr", "wikipedia-kr"
-         ]
-       }
-     },
-     "lij": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "wikipedia-lij"
-+          "ddg", "google-b-d", "bing", "amazon-it", "ebay-it", "wikipedia-lij"
-         ]
-       }
-     },
-     "lo": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-lo", "twitter"
-+          "ddg", "google-b-d", "bing", "wikipedia-lo", "twitter"
-         ]
-       }
-     },
-     "lt": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "wikipedia-lt", "bing", "amazondotcom", "ddg", "twitter"
-+          "ddg", "google-b-d", "wikipedia-lt", "bing", "amazondotcom", "twitter"
-         ]
-       }
-     },
-     "ltg": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "salidzinilv", "sslv", "wikipedia-ltg"
-+          "ddg", "google-b-d", "salidzinilv", "sslv", "wikipedia-ltg"
-         ]
-       }
-     },
-     "lv": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "salidzinilv", "sslv", "wikipedia-lv"
-+          "ddg", "google-b-d", "salidzinilv", "sslv", "wikipedia-lv"
-         ]
-       }
-     },
-     "mai": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "twitter", "wikipedia-hi"
-+          "ddg", "google-b-d", "bing", "amazon-in", "twitter", "wikipedia-hi"
-         ]
-       }
-     },
-     "mk": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-mk"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-mk"
-         ]
-       }
-     },
-     "ml": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia", "wikipedia-ml"
-+          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia", "wikipedia-ml"
-         ]
-       }
-     },
-     "mr": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "ddg", "wikipedia-mr"
-+          "ddg", "google-b-d", "amazon-in", "wikipedia-mr"
-         ]
-       }
-     },
-     "ms": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-ms"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-ms"
-         ]
-       }
-     },
-     "my": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-my"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-my"
-         ]
-       }
-     },
-     "nb-NO": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
-+          "ddg", "google-b-d", "amazon-en-GB", "bing", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
-         ]
-       }
-     },
-     "ne-NP": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "twitter", "wikipedia-ne"
-+          "ddg", "google-b-d", "bing", "twitter", "wikipedia-ne"
-         ]
-       }
-     },
-     "nl": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "bolcom-nl", "ddg", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
-+          "ddg", "google-b-d", "bing", "bolcom-nl", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
-         ]
-       },
-       "experimental-hidden": {
-@@ -739,244 +739,244 @@
-     "nn-NO": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-en-GB", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
-+          "ddg", "google-b-d", "bing", "amazon-en-GB", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NN"
-         ]
-       }
-     },
-     "oc": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "twitter", "wikipedia-oc", "wiktionary-oc"
-+          "ddg", "google-b-d", "bing", "twitter", "wikipedia-oc", "wiktionary-oc"
-         ]
-       }
-     },
-     "or": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-or"
-+          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-or"
-         ]
-       }
-     },
-     "pa-IN": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "wikipedia-pa"
-+          "ddg", "google-b-d", "bing", "amazon-in", "wikipedia-pa"
-         ]
-       }
-     },
-     "pl": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
-+          "ddg", "google-b-d", "allegro-pl", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
-         ]
-       }
-     },
-     "pt-BR": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "mercadolivre", "twitter", "wikipedia-pt"
-+          "ddg", "google-b-d", "bing", "mercadolivre", "twitter", "wikipedia-pt"
-         ]
-       }
-     },
-     "pt-PT": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "ddg", "priberam", "wikipedia-pt"
-+          "ddg", "google-b-d", "amazon-en-GB", "priberam", "wikipedia-pt"
-         ]
-       }
-     },
-     "rm": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "ebay-ch", "leo_ende_de", "wikipedia-rm"
-+          "ddg", "google-b-d", "bing", "ebay-ch", "leo_ende_de", "wikipedia-rm"
-         ]
-       }
-     },
-     "ro": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ro"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-ro"
-         ]
-       }
-     },
-     "ru": {
-       "default": {
-         "visibleDefaultEngines": [
--          "yandex-ru", "google-b-d", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"
-+          "ddg", "yandex-ru", "google-b-d", "ozonru", "priceru", "wikipedia-ru", "mailru"
-         ]
-       },
-       "RU": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "KZ": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "TR": {
--        "searchDefault": "Яндекс"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "si": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "ddg", "wikipedia-si"
-+          "ddg", "google-b-d", "amazondotcom", "wikipedia-si"
-         ]
-       }
-     },
-     "sk": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "azet-sk", "atlas-sk", "ddg", "wikipedia-sk", "zoznam-sk"
-+          "ddg", "google-b-d", "azet-sk", "atlas-sk", "wikipedia-sk", "zoznam-sk"
-         ]
-       }
-     },
-     "sl": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ceneji", "ddg", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
-+          "ddg", "google-b-d", "ceneji", "najdi-si", "odpiralni", "twitter", "wikipedia-sl"
-         ]
-       }
-     },
-     "son": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-france", "ddg", "wikipedia-fr"
-+          "ddg", "google-b-d", "bing", "amazon-france", "wikipedia-fr"
-         ]
-       }
-     },
-     "sq": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-sq"
-+          "ddg", "google-b-d", "bing", "amazon-en-GB", "wikipedia-sq"
-         ]
-       }
-     },
-     "sr": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-sr", "pogodak"
-+          "ddg", "google-b-d", "amazon-en-GB", "bing", "wikipedia-sr", "pogodak"
-         ]
-       }
-     },
-     "sv-SE": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
-+          "ddg", "google-b-d", "bing", "allaannonser-sv-SE", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
-         ]
-       }
-     },
-     "ta": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "ddg", "wikipedia-ta"
-+          "ddg", "google-b-d", "amazon-in", "wikipedia-ta"
-         ]
-       }
-     },
-     "te": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazon-in", "ddg", "wikipedia-te", "wiktionary-te"
-+          "ddg", "google-b-d", "amazon-in", "wikipedia-te", "wiktionary-te"
-         ]
-       }
-     },
-     "th": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "amazondotcom", "bing", "ddg", "longdo", "wikipedia-th"
-+          "ddg", "google-b-d", "amazondotcom", "bing", "longdo", "wikipedia-th"
-         ]
-       }
-     },
-     "tl": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-tl"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-tl"
-         ]
-       }
-     },
-     "tr": {
-       "default": {
-         "visibleDefaultEngines": [
--          "yandex-tr", "google-b-d", "ddg", "twitter", "wikipedia-tr"
-+          "ddg", "yandex-tr", "google-b-d", "twitter", "wikipedia-tr"
-         ]
-       },
-       "TR": {
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "BY": {
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "KZ": {
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       },
-       "RU": {
--        "searchDefault": "Yandex"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "trs": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-es"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "wikipedia-es"
-         ]
-       }
-     },
-     "uk": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia-uk", "hotline-ua"
-+          "ddg", "google-b-d", "bing", "wikipedia-uk", "hotline-ua"
-         ]
-       }
-     },
-     "ur": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-in", "ddg", "twitter", "wikipedia-ur"
-+          "ddg", "google-b-d", "bing", "amazon-in", "twitter", "wikipedia-ur"
-         ]
-       }
-     },
-     "uz": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazondotcom", "ddg", "twitter", "wikipedia-uz"
-+          "ddg", "google-b-d", "bing", "amazondotcom", "twitter", "wikipedia-uz"
-         ]
-       }
-     },
-     "vi": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "coccoc", "ddg", "wikipedia-vi"
-+          "ddg", "google-b-d", "coccoc", "wikipedia-vi"
-         ]
-       }
-     },
-     "wo": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "twitter", "wikipedia-wo"
-+          "ddg", "google-b-d", "bing", "amazon-france", "ebay-fr", "twitter", "wikipedia-wo"
-         ]
-       }
-     },
-     "xh": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "bing", "ddg", "wikipedia"
-+          "ddg", "google-b-d", "bing", "wikipedia"
-         ]
-       }
-     },
-     "zh-CN": {
-       "default": {
-         "visibleDefaultEngines": [
--          "baidu", "google-b-d", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"
-+          "ddg", "baidu", "google-b-d", "bing", "wikipedia-zh-CN", "amazondotcn"
-         ]
-       },
-       "CN": {
--        "searchDefault": "百度"
-+        "searchDefault": "DuckDuckGo"
-       }
-     },
-     "zh-TW": {
-       "default": {
-         "visibleDefaultEngines": [
--          "google-b-d", "ddg", "readmoo", "wikipedia-zh-TW"
-+          "ddg", "google-b-d", "readmoo", "wikipedia-zh-TW"
-         ]
-       }
-     }
diff --git a/gnu/packages/patches/icecat-disable-sync.patch b/gnu/packages/patches/icecat-disable-sync.patch
deleted file mode 100644
index 6d4459ee31..0000000000
--- a/gnu/packages/patches/icecat-disable-sync.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/browser/app/profile/icecat.js.orig	1980-01-01 18:59:51.000000000 -0500
-+++ b/browser/app/profile/icecat.js	2019-10-25 06:24:03.065989309 -0400
-@@ -2275,3 +2275,6 @@
- pref("general.buildID.override", "Gecko/20100101");
- pref("general.oscpu.override", "Windows NT 6.1");
- pref("general.platform.override", "Win32");
-+
-+// Disable Firefox Accounts and Sign in to Sync.
-+pref("identity.fxaccounts.enabled", false);
diff --git a/gnu/packages/patches/icecat-gnuzilla-fixes.patch b/gnu/packages/patches/icecat-gnuzilla-fixes.patch
new file mode 100644
index 0000000000..41f0d2e3a3
--- /dev/null
+++ b/gnu/packages/patches/icecat-gnuzilla-fixes.patch
@@ -0,0 +1,241 @@
+From 2676d4e1eb64e18d2e4722c0ea0babdc1f716fa4 Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Mon, 28 Oct 2019 01:54:19 -0400
+Subject: [PATCH 1/4] Update to 68.2.0-gnu1.
+
+* makeicecat: Update to FFMINOR to 2, and update the expected
+sha256sum of the firefox source tarball.
+---
+ makeicecat | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/makeicecat b/makeicecat
+index 97ee473..1bcf465 100644
+--- a/makeicecat
++++ b/makeicecat
+@@ -21,7 +21,7 @@
+ set -euxo pipefail
+ 
+ FFMAJOR=68
+-FFMINOR=1
++FFMINOR=2
+ FFSUB=0
+ GNUVERSION=1
+ FFVERSION=$FFMAJOR.$FFMINOR.$FFSUB
+@@ -43,7 +43,7 @@ wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr
+ wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
+ gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
+ gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
+-echo -n f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++echo -n 85f1c2eaf68ebedcbc0b78a342f6d16ef0865dedd426a1bba94b75c85f716f38 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+ 
+ echo Extracting Firefox tarball
+ tar -xf firefox-${FFVERSION}esr.source.tar.xz
+-- 
+2.23.0
+
+From c3a7b761f11c75d3764779e731a7c7e86b072d2f Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Mon, 28 Oct 2019 04:18:26 -0400
+Subject: [PATCH 2/4] Disable MOZ_SERVICES_HEALTHREPORT and MOZ_DATA_REPORTING.
+
+* data/patches/fix-data-reporting-check.patch: New file.
+* data/patches/legacy-profiles.patch: Rename to ...
+* data/patches/moz-configure-changes.patch: ... this,
+and set MOZ_SERVICES_HEALTHREPORT to False.
+---
+ data/patches/fix-data-reporting-check.patch | 22 +++++++++++++++++++++
+ data/patches/legacy-profiles.patch          | 11 -----------
+ data/patches/moz-configure-changes.patch    | 14 +++++++++++++
+ 3 files changed, 36 insertions(+), 11 deletions(-)
+ create mode 100644 data/patches/fix-data-reporting-check.patch
+ delete mode 100644 data/patches/legacy-profiles.patch
+ create mode 100644 data/patches/moz-configure-changes.patch
+
+diff --git a/data/patches/fix-data-reporting-check.patch b/data/patches/fix-data-reporting-check.patch
+new file mode 100644
+index 0000000..d586dc5
+--- /dev/null
++++ b/data/patches/fix-data-reporting-check.patch
+@@ -0,0 +1,22 @@
++--- a/old-configure.in.orig	1980-01-01 18:59:51.000000000 -0500
+++++ b/old-configure.in	2019-10-28 04:13:17.343606008 -0400
++@@ -3116,7 +3116,7 @@
++ dnl If we have any service that uploads data (and requires data submission
++ dnl policy alert), set MOZ_DATA_REPORTING.
++ dnl We need SUBST for build system and DEFINE for xul preprocessor.
++-if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
+++if test "$MOZ_TELEMETRY_REPORTING" = 1 || test "$MOZ_SERVICES_HEALTHREPORT" = 1 || test "$MOZ_CRASHREPORTER" = 1; then
++   MOZ_DATA_REPORTING=1
++   AC_DEFINE(MOZ_DATA_REPORTING)
++   AC_SUBST(MOZ_DATA_REPORTING)
++--- a/old-configure.orig	1980-01-01 18:59:51.000000000 -0500
+++++ b/old-configure	2019-10-28 04:15:41.772322191 -0400
++@@ -12150,7 +12150,7 @@
++ 
++ 
++ 
++-if test -n "$MOZ_TELEMETRY_REPORTING" || test -n "$MOZ_SERVICES_HEALTHREPORT" || test -n "$MOZ_CRASHREPORTER"; then
+++if test "$MOZ_TELEMETRY_REPORTING" = 1 || test "$MOZ_SERVICES_HEALTHREPORT" = 1 || test "$MOZ_CRASHREPORTER" = 1; then
++   MOZ_DATA_REPORTING=1
++   cat >> confdefs.pytmp <<\EOF
++     (''' MOZ_DATA_REPORTING ''', ' 1 ')
+diff --git a/data/patches/legacy-profiles.patch b/data/patches/legacy-profiles.patch
+deleted file mode 100644
+index 33e9e99..0000000
+--- a/data/patches/legacy-profiles.patch
++++ /dev/null
+@@ -1,11 +0,0 @@
+---- a/browser/moz.configure.orig	1980-01-01 18:59:51.000000000 -0500
+-+++ b/browser/moz.configure	2019-10-26 21:58:37.719617701 -0400
+-@@ -7,7 +7,7 @@
+- imply_option('MOZ_PLACES', True)
+- imply_option('MOZ_SERVICES_HEALTHREPORT', True)
+- imply_option('MOZ_SERVICES_SYNC', True)
+--imply_option('MOZ_DEDICATED_PROFILES', True)
+-+imply_option('MOZ_DEDICATED_PROFILES', False)
+- imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', True)
+- 
+- with only_when(target_is_linux & compile_environment):
+diff --git a/data/patches/moz-configure-changes.patch b/data/patches/moz-configure-changes.patch
+new file mode 100644
+index 0000000..aa6f1a5
+--- /dev/null
++++ b/data/patches/moz-configure-changes.patch
+@@ -0,0 +1,14 @@
++--- a/browser/moz.configure.orig	1980-01-01 18:59:51.000000000 -0500
+++++ b/browser/moz.configure	2019-10-28 01:36:13.132873871 -0400
++@@ -5,9 +5,9 @@
++ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
++ 
++ imply_option('MOZ_PLACES', True)
++-imply_option('MOZ_SERVICES_HEALTHREPORT', True)
+++imply_option('MOZ_SERVICES_HEALTHREPORT', False)
++ imply_option('MOZ_SERVICES_SYNC', True)
++-imply_option('MOZ_DEDICATED_PROFILES', True)
+++imply_option('MOZ_DEDICATED_PROFILES', False)
++ imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', True)
++ 
++ with only_when(target_is_linux & compile_environment):
+-- 
+2.23.0
+
+From 62f50f15abc91483c6aa7a2ac7ebb972e6f9affd Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Mon, 28 Oct 2019 13:05:28 -0400
+Subject: [PATCH 3/4] Disable MOZ_BLOCK_PROFILE_DOWNGRADE.
+
+It would be desirable to prevent downgrades from one major version of
+IceCat to another.  However, as MOZ_BLOCK_PROFILE_DOWNGRADE is
+currently implemented, it prevents downgrades from one build of
+IceCat-68.2 to an earlier build of IceCat-68.2.  Until we can find a
+satisfactory solution, we disable this functionality entirely.
+
+* data/patches/moz-configure-changes.patch: Set
+MOZ_BLOCK_PROFILE_DOWNGRADE to 'False'.
+---
+ data/patches/moz-configure-changes.patch | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/data/patches/moz-configure-changes.patch b/data/patches/moz-configure-changes.patch
+index aa6f1a5..53091a4 100644
+--- a/data/patches/moz-configure-changes.patch
++++ b/data/patches/moz-configure-changes.patch
+@@ -1,6 +1,6 @@
+ --- a/browser/moz.configure.orig	1980-01-01 18:59:51.000000000 -0500
+-+++ b/browser/moz.configure	2019-10-28 01:36:13.132873871 -0400
+-@@ -5,9 +5,9 @@
+++++ b/browser/moz.configure	2019-10-28 13:04:11.469562089 -0400
++@@ -5,10 +5,10 @@
+  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+  
+  imply_option('MOZ_PLACES', True)
+@@ -8,7 +8,9 @@
+ +imply_option('MOZ_SERVICES_HEALTHREPORT', False)
+  imply_option('MOZ_SERVICES_SYNC', True)
+ -imply_option('MOZ_DEDICATED_PROFILES', True)
++-imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', True)
+ +imply_option('MOZ_DEDICATED_PROFILES', False)
+- imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', True)
+++imply_option('MOZ_BLOCK_PROFILE_DOWNGRADE', False)
+  
+  with only_when(target_is_linux & compile_environment):
++     option(env='MOZ_NO_PIE_COMPAT',
+-- 
+2.23.0
+
+From 036f74092d223976054f9eafd8caa056f5975c54 Mon Sep 17 00:00:00 2001
+From: Mark H Weaver <mhw@netris.org>
+Date: Mon, 28 Oct 2019 19:57:37 -0400
+Subject: [PATCH 4/4] Improve branding for version 68 ESR.
+
+* data/branding/icecat/locales/en-US/brand.dtd: Add brandProductName.
+* data/branding/icecat/locales/en-US/brand.ftl: Add
+brand-shorter-name, brand-full-name, brand-product-name,
+vendor-short-name, and trademarkInfo.
+* data/branding/icecat/locales/en-US/brand.properties: Add
+brandProductName.
+* makeicecat: Limit replacement of trademarkInfo.part1 of brand.dtd
+files to only be done within l10n directory.  Replace trademarkInfo of
+brand.ftl files within l10n directory.
+---
+ data/branding/icecat/locales/en-US/brand.dtd        | 1 +
+ data/branding/icecat/locales/en-US/brand.ftl        | 5 +++++
+ data/branding/icecat/locales/en-US/brand.properties | 1 +
+ makeicecat                                          | 3 ++-
+ 4 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/data/branding/icecat/locales/en-US/brand.dtd b/data/branding/icecat/locales/en-US/brand.dtd
+index 3788266..475ce7d 100644
+--- a/data/branding/icecat/locales/en-US/brand.dtd
++++ b/data/branding/icecat/locales/en-US/brand.dtd
+@@ -5,5 +5,6 @@
+ <!ENTITY  brandShorterName      "IceCat">
+ <!ENTITY  brandShortName        "IceCat">
+ <!ENTITY  brandFullName         "GNU IceCat">
++<!ENTITY  brandProductName      "IceCat">
+ <!ENTITY  vendorShortName       "GNU">
+ <!ENTITY  trademarkInfo.part1   "The IceCat logo is Copyright 2008-2015 Free Software Foundation, released under the terms of the GNU Lesser General Public License, version 3 or any later version.">
+diff --git a/data/branding/icecat/locales/en-US/brand.ftl b/data/branding/icecat/locales/en-US/brand.ftl
+index bd7fbe0..7c9fcc8 100644
+--- a/data/branding/icecat/locales/en-US/brand.ftl
++++ b/data/branding/icecat/locales/en-US/brand.ftl
+@@ -2,4 +2,9 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
++-brand-shorter-name = IceCat
+ -brand-short-name = IceCat
++-brand-full-name = GNU IceCat
++-brand-product-name = IceCat
++-vendor-short-name = GNU
++trademarkInfo = The IceCat logo is Copyright 2008-2015 Free Software Foundation, released under the terms of the GNU Lesser General Public License, version 3 or any later version.
+diff --git a/data/branding/icecat/locales/en-US/brand.properties b/data/branding/icecat/locales/en-US/brand.properties
+index 85e2894..9b9cf97 100644
+--- a/data/branding/icecat/locales/en-US/brand.properties
++++ b/data/branding/icecat/locales/en-US/brand.properties
+@@ -5,6 +5,7 @@
+ brandShorterName=IceCat
+ brandShortName=IceCat
+ brandFullName=IceCat
++brandProductName=IceCat
+ vendorShortName=GNU
+ 
+ syncBrandShortName=Sync
+diff --git a/makeicecat b/makeicecat
+index 1bcf465..3ff2ead 100644
+--- a/makeicecat
++++ b/makeicecat
+@@ -226,7 +226,8 @@ cp $DATA/bookmarks.html.in browser/locales/generic/profile/bookmarks.html.in
+ 
+ # Custom legal about pages
+ 
+-find -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
++find l10n -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
++find l10n -wholename '*/brand.ftl' |xargs /bin/sed 's/^trademarkInfo = .*/trademarkInfo = The IceCat logo is Copyright 2008-2015 Free Software Foundation, released under the terms of the GNU Lesser General Public License, version 3 or any later version./' -i
+ 
+ for STRING in rights.intro-point3-unbranded rights.intro-point4a-unbranded rights.intro-point4b-unbranded rights.intro-point4c-unbranded
+ do
+-- 
+2.23.0
+
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index f0b36d7d52..90a79eebc9 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -25,7 +25,7 @@ index b04c731..06d1f3f 100644
 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 85f1c2eaf68ebedcbc0b78a342f6d16ef0865dedd426a1bba94b75c85f716f38 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 -
 -echo Extracting Firefox tarball
 -tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -37,7 +37,7 @@ index b04c731..06d1f3f 100644
 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n f56f5fa5a4744be0b9acf259cb991254d708a50b9a0a12d1d846ffa5a6c409ac firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 85f1c2eaf68ebedcbc0b78a342f6d16ef0865dedd426a1bba94b75c85f716f38 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 +# 
 +# echo Extracting Firefox tarball
 +# tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -96,24 +96,9 @@ index b04c731..06d1f3f 100644
 -cd $SOURCEDIR
 +# cd $SOURCEDIR
  
- #for patch in $DATA/patches/*; do
- #    echo Patching with file: $patch
-@@ -226,10 +226,10 @@ cp $DATA/bookmarks.html.in browser/locales/generic/profile/bookmarks.html.in
- 
- find -wholename '*/brand.dtd' |xargs /bin/sed 's/trademarkInfo.part1.*/trademarkInfo.part1 "">/' -i
- 
--for STRING in rights.intro-point3-unbranded rights.intro-point4a-unbranded rights.intro-point4b-unbranded rights.intro-point4c-unbranded
--do
-- find -name aboutRights.dtd | xargs sed -i "s/ENTITY $STRING.*/ENTITY $STRING \"\">/"
--done
-+# for STRING in rights.intro-point3-unbranded rights.intro-point4a-unbranded rights.intro-point4b-unbranded rights.intro-point4c-unbranded
-+# do
-+#  find -name aboutRights.dtd | xargs sed -i "s/ENTITY $STRING.*/ENTITY $STRING \"\">/"
-+# done
- 
- for STRING in rights-intro-point-2 rights-intro-point-3 rights-intro-point-4 rights-intro-point-5 rights-intro-point-6 rights-webservices rights-safebrowsing
- do
-@@ -595,6 +595,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+ shopt -s nullglob
+ for patch in $DATA/patches/*.patch; do
+@@ -598,6 +598,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
  # Fix CVE-2012-3386
  /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
  
diff --git a/gnu/packages/patches/libreoffice-boost.patch b/gnu/packages/patches/libreoffice-boost.patch
deleted file mode 100644
index b50664226b..0000000000
--- a/gnu/packages/patches/libreoffice-boost.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix compatibility with newer Boost.
-
-Extracted from this upstream commit:
-https://cgit.freedesktop.org/libreoffice/core/commit/?id=23a8d5ffbbe58761b89f590f0735abccd69a3681
-
-diff --git a/sfx2/source/appl/shutdownicon.cxx b/sfx2/source/appl/shutdownicon.cxx
---- a/sfx2/source/appl/shutdownicon.cxx
-+++ b/sfx2/source/appl/shutdownicon.cxx
-@@ -144,7 +144,7 @@ bool LoadModule()
- #endif // ENABLE_QUICKSTART_APPLET
-     }
-     assert(!boost::logic::indeterminate(loaded));
--    return loaded;
-+    return bool(loaded);
- }
- 
- }
diff --git a/gnu/packages/patches/weasyprint-library-paths.patch b/gnu/packages/patches/weasyprint-library-paths.patch
index eabbdbdcd6..317f0c542e 100644
--- a/gnu/packages/patches/weasyprint-library-paths.patch
+++ b/gnu/packages/patches/weasyprint-library-paths.patch
@@ -1,3 +1,8 @@
+Make weasyprint load dynamic libraries from hard-coded path.
+
+From NixOS
+pkgs/development/python-modules/weasyprint/library-paths.patch
+
 diff --git a/weasyprint/fonts.py b/weasyprint/fonts.py
 index 377716c1..2016e01c 100644
 --- a/weasyprint/fonts.py
diff --git a/gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch b/gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch
deleted file mode 100644
index a43889d2c6..0000000000
--- a/gnu/packages/patches/xorriso-no-mbr-in-inner-efi.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-https://dev.lovelyhq.com/libburnia/libisoburn/commit/1eb51f44dadb8b6c5f87533ca357186cdc1ac625
-diff --git a/frontend/grub-mkrescue-sed.sh b/frontend/grub-mkrescue-sed.sh
-index b3948c99..dcd9d696 100755
---- a/frontend/grub-mkrescue-sed.sh
-+++ b/frontend/grub-mkrescue-sed.sh
-@@ -120,6 +120,7 @@ fi
- # "yes" overwrites the MBR partition table area in the EFI boot image by zeros.
- # Some EFI implementations get stuck when seeing in the EFI partition a
- # partition table entry which begins at LBA 0.
-+# "extra" not only zeros the partition table but also the MBR signature.
- efi_zero_inner_pt=no
- if test -n "$MKRESCUE_SED_IN_EFI_NO_PT"
- then
-@@ -192,24 +193,31 @@ then
-   find "$dir"
- fi
- 
--if test "$efi_zero_inner_pt" = yes
-+if test "$efi_zero_inner_pt" = yes -o "$efi_zero_inner_pt" = extra
- then
-   did_dd=0
-   if test -e "$dir"/efi.img
-   then
-+    # Look for 0x55 0xAA in bytes 510 and 511
-     magic=$(dd bs=1 skip=510 count=2 if="$dir"/efi.img 2>/dev/null | \
-             od -c | head -1 | awk '{print $2 " " $3}')
-     if test "$magic" = "U 252"
-     then
-+      echo "Performing actions for MKRESCUE_SED_IN_EFI_NO_PT=$efi_zero_inner_pt" >&2
-       dd if=/dev/zero bs=1 seek=446 count=64 conv=notrunc of="$dir"/efi.img
-       did_dd=1
-+      if test "$efi_zero_inner_pt" = extra
-+      then
-+        dd if=/dev/zero bs=1 seek=510 count=2 conv=notrunc of="$dir"/efi.img
-+      fi
-+      echo >&2
-     fi
-   fi
-   if test "$did_dd" = 0
-   then
-     echo >&2
-     echo "$0 : NOTE : No EFI image found or no MBR signature in it." >&2
--    echo "$0 : NOTE : Will not obey MKRESCUE_SED_IN_EFI_NO_PT=yes" >&2
-+    echo "$0 : NOTE : Will not obey MKRESCUE_SED_IN_EFI_NO_PT=$efi_zero_inner_pt" >&2
-     echo >&2
-   fi
- fi
diff --git a/gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch b/gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch
deleted file mode 100644
index a719ca1f89..0000000000
--- a/gnu/packages/patches/xorriso-no-partition-table-in-inner-efi.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-https://dev.lovelyhq.com/libburnia/libisoburn/commit/3a2a3ba737a06162c22ace0ae09d33ba97aa2673
-diff --git a/frontend/grub-mkrescue-sed.sh b/frontend/grub-mkrescue-sed.sh
-index d772ff22..b3948c99 100755
---- a/frontend/grub-mkrescue-sed.sh
-+++ b/frontend/grub-mkrescue-sed.sh
-@@ -1,6 +1,6 @@
- #!/bin/sh
- 
--# Copyright (C) 2015 - 2016
-+# Copyright (C) 2015 - 2019
- # Thomas Schmitt <scdbackup@gmx.net>, libburnia-project.org
- # Provided under BSD license: Use, modify, and distribute as you like.
- 
-@@ -117,6 +117,15 @@ fi
- #  command line.)
- # Each argument must be a single word. No whitespace. No quotation marks.
- 
-+# "yes" overwrites the MBR partition table area in the EFI boot image by zeros.
-+# Some EFI implementations get stuck when seeing in the EFI partition a
-+# partition table entry which begins at LBA 0.
-+efi_zero_inner_pt=no
-+if test -n "$MKRESCUE_SED_IN_EFI_NO_PT"
-+then
-+  efi_zero_inner_pt="$MKRESCUE_SED_IN_EFI_NO_PT"
-+fi
-+
- 
- #
- #                               Do the work 
-@@ -183,12 +192,48 @@ then
-   find "$dir"
- fi
- 
-+if test "$efi_zero_inner_pt" = yes
-+then
-+  did_dd=0
-+  if test -e "$dir"/efi.img
-+  then
-+    magic=$(dd bs=1 skip=510 count=2 if="$dir"/efi.img 2>/dev/null | \
-+            od -c | head -1 | awk '{print $2 " " $3}')
-+    if test "$magic" = "U 252"
-+    then
-+      dd if=/dev/zero bs=1 seek=446 count=64 conv=notrunc of="$dir"/efi.img
-+      did_dd=1
-+    fi
-+  fi
-+  if test "$did_dd" = 0
-+  then
-+    echo >&2
-+    echo "$0 : NOTE : No EFI image found or no MBR signature in it." >&2
-+    echo "$0 : NOTE : Will not obey MKRESCUE_SED_IN_EFI_NO_PT=yes" >&2
-+    echo >&2
-+  fi
-+fi
-+
- efi_tmp_name=
-+if test x"$mode" = xmjg \
-+     -o x"$mode" = xmbr_only \
-+     -o x"$mode" = xgpt_appended \
-+     -o x"$mode" = xmbr_hfs
-+then
-+  # Move EFI partition image file out of the "$dir" tree, i.e. out of the ISO
-+  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
-+  if test -e "$dir"/efi.img
-+  then
-+    mv "$dir"/efi.img /tmp/$efi_tmp_name
-+  elif test -e /tmp/$efi_tmp_name
-+  then
-+    rm /tmp/$efi_tmp_name
-+  fi
-+fi
-+
- if test x"$mode" = xmjg
- then
-   # Exchange arguments for the experimental GRUB2 mjg layout
--  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
--  mv "$dir"/efi.img /tmp/$efi_tmp_name
-   x=$(echo " $*" | sed \
-     -e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition $partno 0xef \/tmp\/$efi_tmp_name/" \
-     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_${partno}:all:: -no-emul-boot -isohybrid-gpt-basdat/" \
-@@ -207,8 +252,6 @@ then
- elif test x"$mode" = xmbr_only
- then
-   # Exchange arguments for no-HFS MBR-only layout
--  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
--  mv "$dir"/efi.img /tmp/$efi_tmp_name
-   x=$(echo " $*" | sed \
-     -e "s/-efi-boot-part --efi-boot-image/$iso_mbr_part_type -no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name/" \
-     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \
-@@ -228,8 +271,6 @@ then
- elif test x"$mode" = xmbr_hfs
- then
-   # Exchange arguments for MBR and HFS+ layout
--  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
--  mv "$dir"/efi.img /tmp/$efi_tmp_name
-   x=$(echo " $*" | sed \
-     -e "s/-efi-boot-part --efi-boot-image/$iso_mbr_part_type -no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name/" \
-     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \
-@@ -247,8 +288,6 @@ then
- elif test x"$mode" = xgpt_appended
- then
-   # Exchange arguments for no-HFS MBR-only layout
--  efi_tmp_name=grub-mkrescue-sed-efi-img.$$
--  mv "$dir"/efi.img /tmp/$efi_tmp_name
-   x=$(echo " $*" | sed \
-     -e "s/-efi-boot-part --efi-boot-image/-no-pad -append_partition 2 0xef \/tmp\/$efi_tmp_name -appended_part_as_gpt -partition_offset 16/" \
-     -e "s/--efi-boot efi\.img/-eltorito-alt-boot -e --interval:appended_partition_2:all:: -no-emul-boot/" \
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index a63d889cff..80c454a5c4 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -265,11 +265,17 @@ GiB).")
     (inputs
      `(("python-cairo" ,python-pycairo)
        ("python-gobject" ,python-pygobject)
-       ("gtksourceview" ,gtksourceview)))
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtksourceview" ,gtksourceview-3)))
     (propagated-inputs
      `(("dconf" ,dconf)))
     (arguments
-     `(#:phases
+     `(#:imported-modules ((guix build glib-or-gtk-build-system)
+                           ,@%python-build-system-modules)
+       #:modules ((guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
+                  (guix build utils))
+       #:phases
        (modify-phases %standard-phases
          ;; This setup.py script does not support one of the Python build
          ;; system's default flags, "--single-version-externally-managed".
@@ -292,7 +298,16 @@ GiB).")
              (setenv "HOME" "/tmp")
              (invoke "py.test" "-v" "-k"
                      ;; TODO: Those tests fail, why?
-                     "not test_classify_change_actions"))))))
+                     "not test_classify_change_actions")))
+         (add-after 'wrap 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+         (add-after 'wrap 'wrap-typelib
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/meld")
+                 `("GI_TYPELIB_PATH" prefix
+                   ,(search-path-as-string->list (getenv "GI_TYPELIB_PATH"))))
+               #t))))))
     (home-page "https://meldmerge.org/")
     (synopsis "Compare files, directories and working copies")
     (description "Meld is a visual diff and merge tool targeted at
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 6cca129ce6..03b18a6f50 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -1120,48 +1120,29 @@ presentation.  The input files processed by pdfpc are PDF documents.")
     (license license:gpl2+)))
 
 (define-public paps
-  (let ((commit "37e6ca1cd96d751bbbff5539d795c90d657289a5")
-        (revision "1"))
-    (package
-      (name "paps")
-      ;; The last release was in 2015, but since then there have been security
-      ;; bug fixes.
-      (version (git-version "0.7.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/dov/paps.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1ilcyjqdynxsd2p8dnn8h4592dwf531x9pbkxa1w09hkcdn7hgwc"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'do-not-run-configure-script-during-bootstrap
-             (lambda _
-               (substitute* "autogen.sh"
-                 (("^./configure") "#"))
-               #t)))))
-      (inputs
-       `(("pango" ,pango)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("gettext" ,gettext-minimal)
-         ("glib" ,glib "bin")
-         ("intltool" ,intltool)
-         ("pkg-config" ,pkg-config)))
-      (home-page "https://github.com/dov/paps")
-      (synopsis "Pango to PostScript converter")
-      (description
-       "Paps reads a UTF-8 encoded file and generates a PostScript language
+  (package
+    (name "paps")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/dov/paps/releases/download/v"
+                           version "/paps-" version ".tar.gz"))
+       (sha256
+        (base32 "1z1w1fg2bvb8p92n1jlpqp3n9mq42szb2mqhh4xqmmnmfcdkpi9s"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("pango" ,pango)))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/dov/paps")
+    (synopsis "Pango to PostScript converter")
+    (description
+     "Paps reads a UTF-8 encoded file and generates a PostScript language
 rendering of the file.  The rendering is done by creating outline curves
 through the Pango @code{ft2} backend.")
-      (license license:lgpl2.0+))))
+    (license license:lgpl2.0+)))
 
 (define-public stapler
   (package
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 97d754d405..f92d50290e 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1611,14 +1611,14 @@ CPAN::Meta object are present.")
 (define-public perl-cpanel-json-xs
   (package
     (name "perl-cpanel-json-xs")
-    (version "4.12")
+    (version "4.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Cpanel-JSON-XS-" version ".tar.gz"))
        (sha256
-        (base32 "0n66da8s88srr591i7gm1d611z9jbcz488fhqxy604diiw8pnha9"))))
+        (base32 "1695408fj6jjx6dv5082hhxg5am480x1nz7s0f355npv0wm776wx"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-common-sense" ,perl-common-sense)))
@@ -4287,7 +4287,7 @@ Perl IO idioms.  It exports a single function called io, which returns a new
 (define-public perl-io-captureoutput
   (package
     (name "perl-io-captureoutput")
-    (version "1.1104")
+    (version "1.1105")
     (source
      (origin
        (method url-fetch)
@@ -4296,8 +4296,7 @@ Perl IO idioms.  It exports a single function called io, which returns a new
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "0c437zvzpqi8f0h3nmblwdi2bvsb92b7g30fndr7my9qnky35izw"))))
+        (base32 "11zlfbahac09q3jvwmpijmkwgihwxps85jwy2q7q0wqjragh16df"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/IO-CaptureOutput")
     (synopsis "Capture STDOUT and STDERR from Perl code, subprocesses or XS")
@@ -5552,15 +5551,14 @@ Moose and is optimised for rapid startup.")
   (package
     (inherit perl-moo)
     (name "perl-moo-2")
-    (version "2.003004")
+    (version "2.003006")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Moo-" version ".tar.gz"))
        (sha256
-        (base32
-         "1qciprcgb4661g2g4ks0fxkx5gbjvn7h9yfg0nzflqz9z0jvdfzq"))))
+        (base32 "0wi4gyp5kn4lbags0hrax3c9jj9spxg4d11fbrdh0ican4m0kcmw"))))
     (propagated-inputs
      `(("perl-role-tiny" ,perl-role-tiny-2)
        ("perl-sub-name" ,perl-sub-name)
@@ -6549,7 +6547,7 @@ name, but they won't show up as methods on your class or instances.")
 (define-public perl-net-dns-native
   (package
     (name "perl-net-dns-native")
-    (version "0.21")
+    (version "0.22")
     (source
      (origin
        (method url-fetch)
@@ -6557,7 +6555,7 @@ name, but they won't show up as methods on your class or instances.")
              "mirror://cpan/authors/id/O/OL/OLEG/Net-DNS-Native-"
              version ".tar.gz"))
        (sha256
-        (base32 "0jjcgzmgas7k5rwalirrmbnlj4ihdxyydajc18qviwg863qjannl"))))
+        (base32 "1m9hbj83ikg52wvq7z8bjm78i50qvqk5alh11mmazzxrpbnrv38h"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Net-DNS-Native")
     (synopsis "Non-blocking system DNS resolver")
@@ -9632,15 +9630,14 @@ files, using JSON::PP and/or CPAN::Meta::YAML.")
 (define-public perl-scalar-list-utils
   (package
     (name "perl-scalar-list-utils")
-    (version "1.50")
+    (version "1.53")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
                            "Scalar-List-Utils-" version ".tar.gz"))
        (sha256
-        (base32
-         "0x9n0617gjjcqa4nk5biiwkxdi90xpdfg6z07gjr009qjg3bkah6"))))
+        (base32 "16dfpnrcf5846j998rdd6gra16m9030rnz9fpsh1hfzvcsq8ch5x"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Scalar-List-Utils")
     (synopsis "Common Scalar and List utility subroutines")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index b79b10d51e..eb25bd0ade 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2013,7 +2013,7 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
 (define-public python-cachecontrol
   (package
     (name "python-cachecontrol")
-    (version "0.11.6")
+    (version "0.12.5")
     (source
      (origin
        (method git-fetch)
@@ -2024,25 +2024,12 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0pb16bzbkk99nh317xyfk8fxc2ngimsbz7lz9pxsw8c82n83d4dh"))))
+         "03lgc65sl04n0cgzmmgg99bk83f9i6k8yrmcd4hpl46q1pymn0kz"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             ;; Drop test that requires internet access.
-             (delete-file "tests/test_regressions.py")
-             (setenv "PYTHONPATH"
-                     (string-append (getcwd) "/build/lib:"
-                                    (getenv "PYTHONPATH")))
-             (invoke "py.test" "-vv")
-             #t)))))
-    (native-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-redis" ,python-redis)
-       ("python-webtest" ,python-webtest)
-       ("python-mock" ,python-mock)))
+     ;; Versions > 0.11.6 depend on CherryPy for testing.
+     ;; It's too much work to package CherryPy for now.
+     `(#:tests? #f))
     (propagated-inputs
      `(("python-requests" ,python-requests)
        ("python-lockfile" ,python-lockfile)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 019cc7664c..397d15c99b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -548,14 +548,13 @@ concepts.")
 (define-public python-cftime
   (package
     (name "python-cftime")
-    (version "1.0.3.4")
+    (version "1.0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cftime" version))
        (sha256
-        (base32
-         "0362dhxbzk593walyjz30dll6y2y79wialik647cbwdsf3ad0x6x"))))
+        (base32 "0w0gi6jnch38hiygl62j4xkcirv4y3dcwrvxl9p7bsk6j27lzihs"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-numpy" ,python-numpy)))
@@ -934,14 +933,14 @@ add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
 (define-public python-coloredlogs
   (package
     (name "python-coloredlogs")
-    (version "7.3")
+    (version "10.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "coloredlogs" version))
        (sha256
         (base32
-         "1blcann6dyg5dhps9pg12rn0q0rjrlajpmmil0gy0j4cbvnl2il9"))))
+         "0dkw6xp0r1dwgz4s2f58npx5nxfq51wf4l6qkm5ib27slgfs4sdq"))))
     (build-system python-build-system)
     (arguments
      `(;Tests require some updated modules
@@ -1158,13 +1157,13 @@ human-friendly syntax.")
 (define-public python-pandas
   (package
     (name "python-pandas")
-    (version "0.24.2")
+    (version "0.25.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pandas" version))
        (sha256
-        (base32 "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag"))))
+        (base32 "1gp2pvzdiakvgjmykdzdlzrsfbg4vjm49jjdl9s0ha0a3yfs34fa"))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -1227,10 +1226,22 @@ structures designed to make working with structured (tabular,
 multidimensional, potentially heterogeneous) and time series data both easy
 and intuitive.  It aims to be the fundamental high-level building block for
 doing practical, real world data analysis in Python.")
+    (properties `((python2-variant . ,(delay python2-pandas))))
     (license license:bsd-3)))
 
+;; Pandas 0.24.x are the last versions that support Python 2.
 (define-public python2-pandas
-  (package-with-python2 python-pandas))
+  (let ((pandas (package-with-python2
+                 (strip-python2-variant python-pandas))))
+    (package/inherit
+     pandas
+     (version "0.24.2")
+     (source (origin
+               (method url-fetch)
+               (uri (pypi-uri "pandas" version))
+               (sha256
+                (base32
+                 "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag")))))))
 
 (define-public python2-mechanize
   (package
@@ -3451,7 +3462,7 @@ between language specification and implementation aspects.")
 (define-public python-numpy
   (package
     (name "python-numpy")
-    (version "1.15.4")
+    (version "1.17.3")
     (source
      (origin
        (method url-fetch)
@@ -3460,7 +3471,7 @@ between language specification and implementation aspects.")
              version "/numpy-" version ".tar.gz"))
        (sha256
         (base32
-         "102vcl2qq4pjbm7a3d67vkkvn4466ngia1d8wi5avqwqh8j0jvkn"))))
+         "1ak9dmjja0q90a7fsxli51ypcwssh8c4pb6f8wkrsnf2xgdk6dy9"))))
     (build-system python-build-system)
     (inputs
      `(("openblas" ,openblas)
@@ -3525,10 +3536,24 @@ with Python.  It contains among other things: a powerful N-dimensional array
 object, sophisticated (broadcasting) functions, tools for integrating C/C++
 and Fortran code, useful linear algebra, Fourier transform, and random number
 capabilities.")
+    (properties `((python2-variant . ,(delay python2-numpy))))
     (license license:bsd-3)))
 
+;; Numpy 1.16.x are the last versions that support Python 2.
 (define-public python2-numpy
-  (package-with-python2 python-numpy))
+  (let ((numpy (package-with-python2
+                (strip-python2-variant python-numpy))))
+    (package/inherit
+     numpy
+      (version "1.16.5")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append
+                      "https://github.com/numpy/numpy/releases/download/v"
+                      version "/numpy-" version ".tar.gz"))
+                (sha256
+                 (base32
+                  "0lg1cycxzi4rvvrd5zxinpdz0ni792fpx6xjd75z1923zcac8qrb")))))))
 
 ;; NOTE: NumPy 1.8 is packaged only for Python 2 because it is of
 ;; interest only for legacy code going back to NumPy's predecessor
@@ -5218,13 +5243,13 @@ releases.")
 (define-public python-pathpy
   (package
     (name "python-pathpy")
-    (version "11.5.0")
+    (version "11.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "path.py" version))
        (sha256
-        (base32 "1jxkf91syzxlpiwgm83fjfz1m5xh3jrvv4iyl5wjsnkk599pls5n"))))
+        (base32 "0ir9j1haq2jbi7aip6k2fa9l7q1l03k4hp1awxhjhcwzsnwp3ll8"))))
     (outputs '("out" "doc"))
     (build-system python-build-system)
     (propagated-inputs
@@ -5625,13 +5650,13 @@ computing.")
 (define-public python-ipython
   (package
     (name "python-ipython")
-    (version "7.5.0")
+    (version "7.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ipython" version ".tar.gz"))
        (sha256
-        (base32 "09mbxq37mfn88xjnib7qfzaq9krr7gf1jxwy1p6mcjr254082h78"))))
+        (base32 "103jkw18z7fnwdal1mdbijjxi1fndzn31g887lmj7ddpf2r07lyz"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-backcall" ,python-backcall)
@@ -5964,15 +5989,20 @@ the GObject Introspection bindings to libnotify for non-GTK applications.")
 (define-public python-lxml
   (package
     (name "python-lxml")
-    (version "4.2.5")
+    (version "4.4.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "lxml" version))
         (sha256
          (base32
-          "0zw0y9hs0nflxhl9cs6ipwwh53szi3w2x06wl0k9cylyqac0cwin"))))
+          "14jnpfcpgqr9sx8ppd286jzcbk0b36hbqsvd8jkvffipzw5v8768"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "make" "test"))))))
     (inputs
       `(("libxml2" ,libxml2)
         ("libxslt" ,libxslt)))
@@ -7243,21 +7273,23 @@ Supported netlink families and protocols include:
 (define-public python-xlrd
   (package
     (name "python-xlrd")
-    (version "1.0.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "xlrd" version))
               (sha256
                (base32
-                "0s8hjiz01vbhy85xalrz0qlsmd9ypf36zjqrf97hh984spapvy0g"))))
+                "1ci93fda4n67qhdvfl16zasyxrpygzk53hs6m8z0rd4dxrnb6vjl"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         ;; Current test in setup.py does not work as of 1.0.0, so use nose to
-         ;; run tests instead for now.
-         (replace 'check (lambda _ (invoke "nosetests"))))))
-    (native-inputs `(("python-nose"       ,python-nose)))
+         ;; Some tests depend on writing a temporary file to the user's home
+         ;; directory.
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (delete-file "tests/test_open_workbook.py")
+             #t)))))
     (home-page "http://www.python-excel.org/")
     (synopsis "Library for extracting data from Excel files")
     (description "This package provides a library to extract data from
@@ -9558,6 +9590,7 @@ useful for solving the Assignment Problem.")
         (base32
          "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
     (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python.
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (home-page "https://bitbucket.org/mchaput/whoosh")
@@ -10588,16 +10621,16 @@ Wikipedia code samples at
 (define-public python-cleo
   (package
     (name "python-cleo")
-    (version "0.6.1")
+    (version "0.6.8")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "cleo" version))
               (sha256
                (base32
-                "0q1cf0szr0d54am4pypzwdnm74zpladdsinad94c2fz5i06fdpf7"))))
+                "06zp695hq835rkaq6irr1ds1dp2qfzyf32v60vxpd8rcnxv319l5"))))
     (build-system python-build-system)
     (native-inputs
-     `(;; For testing
+     `( ;; For testing
        ("python-mock" ,python-mock)
        ("python-pytest-mock" ,python-pytest-mock)
        ("python-pytest" ,python-pytest)))
@@ -10615,6 +10648,191 @@ docstring and colored output.")
 (define-public python2-cleo
   (package-with-python2 python-cleo))
 
+(define-public python-tomlkit
+  (package
+    (name "python-tomlkit")
+    (version "0.5.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "tomlkit" version))
+       (sha256
+        (base32
+         "18820ga5z3if1w8dvykxrfm000akracq01ic402xrbljgbn5grn4"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page
+     "https://github.com/sdispater/tomlkit")
+    (synopsis "Style preserving TOML library")
+    (description
+     "TOML Kit is a 0.5.0-compliant TOML library.  It includes a parser that
+preserves all comments, indentations, whitespace and internal element ordering,
+and makes them accessible and editable via an intuitive API.  It can also
+create new TOML documents from scratch using the provided helpers.  Part of the
+implementation as been adapted, improved and fixed from Molten.")
+    (license license:expat)))
+
+(define-public python-shellingham
+  (package
+    (name "python-shellingham")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "shellingham" version))
+       (sha256
+        (base32
+         "1q7kws7w4x2hji3g7y0ni9ddk4sd676ylrb3db54gbpys6xj6nwq"))))
+    (build-system python-build-system)
+    (home-page
+     "https://github.com/sarugaku/shellingham")
+    (synopsis "Tool to detect surrounding shell")
+    (description
+     "Shellingham detects what shell the current Python executable is
+running in.")
+    (license license:isc)))
+
+(define-public python-memcached
+  (package
+    (name "python-memcached")
+    (version "1.59")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "python-memcached" version))
+       (sha256
+        (base32
+         "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2"))))
+    (build-system python-build-system)
+    (propagated-inputs `(("python-six" ,python-six)))
+    (home-page
+     "https://github.com/linsomniac/python-memcached")
+    (synopsis "Pure python memcached client")
+    (description
+     "This software is a pure Python interface to the memcached memory cache
+daemon.  It is the client side software which allows storing values in one or
+more, possibly remote, memcached servers.")
+    (license license:psfl)))
+
+(define-public python-clikit
+  (package
+    (name "python-clikit")
+    (version "0.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "clikit" version))
+       (sha256
+        (base32
+         "0dc8czib5f4j9px1ivcpqnmivnx2zjpc0xb00ldrhsqylks7r06n"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pastel" ,python-pastel)
+       ("python-pylev" ,python-pylev)))
+    (home-page "https://github.com/sdispater/clikit")
+    (synopsis "Group of utilities to build command line interfaces")
+    (description
+     "CliKit is a group of utilities to build testable command line
+interfaces.")
+    (license license:expat)))
+
+(define-public python-msgpack-python
+  (package
+    (name "python-msgpack-python")
+    (version "0.5.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "msgpack-python" version))
+       (sha256
+        (base32
+         "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p"))))
+    (build-system python-build-system)
+    (home-page "http://msgpack.org/")
+    (synopsis "Package to deserialize messages in MessagePack binary format")
+    (description
+     "MessagePack is an efficient binary serialization format.  It lets you
+exchange data among multiple languages like JSON.  But it's faster and
+smaller.  Small integers are encoded into a single byte, and typical short
+strings require only one extra byte in addition to the strings themselves.")
+    (license license:asl2.0)))
+
+(define-public python-cachy
+  (package
+    (name "python-cachy")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "cachy" version))
+       (sha256
+        (base32
+         "0v6mjyhgx6j7ya20bk69cr3gdzdkdf6psay0h090rscclgji65dp"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-fakeredis" ,python-fakeredis)
+       ("python-flexmock" ,python-flexmock)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-memcached" ,python-memcached)
+       ("python-msgpack-python" ,python-msgpack-python)
+       ("python-redis" ,python-redis)))
+    (home-page "https://github.com/sdispater/cachy")
+    (synopsis "Simple yet effective caching library")
+    (description
+     "Cachy provides a simple yet effective caching library.  A simple but
+powerful API: thread-safety; decorator syntax; support for memcached, redis,
+database, file, dict stores.  Cachy supports python versions 2.7+ and 3.2+.")
+    (license license:expat)))
+
+(define-public poetry
+  (package
+    (name "poetry")
+    (version "0.12.17")
+    ;; Poetry can only be built from source with poetry.
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "poetry" version))
+       (sha256
+        (base32
+         "0gxwcd65qjmzqzppf53x51sic1rbcd9py6cdzx3aprppipimslvf"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ;; Pypi does not have tests.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             ;; Bug in poetry https://github.com/sdispater/poetry/issues/866.
+             (invoke "sed" "-i" "-e" "s/from distutils.core/from setuptools/"
+                     "setup.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-cachecontrol" ,python-cachecontrol)
+       ("python-cachy" ,python-cachy)
+       ("python-cleo" ,python-cleo)
+       ("python-glob2" ,python-glob2)
+       ("python-html5lib" ,python-html5lib)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-msgpack" ,python-msgpack)
+       ("python-pathlib2" ,python-pathlib2)
+       ("python-pkginfo" ,python-pkginfo)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-pyrsistent" ,python-pyrsistent)
+       ("python-requests" ,python-requests)
+       ("python-requests-toolbelt" ,python-requests-toolbelt)
+       ("python-shellingham" ,python-shellingham)
+       ("python-tomlkit" ,python-tomlkit)
+       ("python-virtualenv" ,python-virtualenv)))
+    (home-page "https://poetry.eustace.io/")
+    (synopsis "Python dependency management and packaging made easy")
+    (description "Poetry is a tool for dependency management and packaging
+in Python.  It allows you to declare the libraries your project depends on and
+it will manage (install/update) them for you.")
+    (license license:expat)))
+
 (define-public python-lazy-object-proxy
   (package
     (name "python-lazy-object-proxy")
@@ -14325,14 +14543,20 @@ such as figshare or Zenodo.")
 (define-public python-pyro4
   (package
     (name "python-pyro4")
-    (version "4.75")
+    (version "4.77")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pyro4" version))
        (sha256
-        (base32 "1dfpp36imddx19yv0kd28gk1l71ckhpqy6jd590wpm2680jw15rq"))))
+        (base32 "0gsjg869y4gpy265s1gj1f2qy6jn5iz8r2bwwnq78r1r5yi15zib"))))
     (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ;FIXME: Some tests require network access.
+    (native-inputs
+     `(("python-cloudpickle" ,python-cloudpickle)
+       ("python-dill" ,python-dill)
+       ("python-msgpack" ,python-msgpack)))
     (propagated-inputs
      `(("python-serpent" ,python-serpent)))
     (home-page "https://pyro4.readthedocs.io")
diff --git a/gnu/packages/rust-cbindgen.scm b/gnu/packages/rust-cbindgen.scm
index 9d20310346..2590af913f 100644
--- a/gnu/packages/rust-cbindgen.scm
+++ b/gnu/packages/rust-cbindgen.scm
@@ -20,7 +20,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system cargo))
+  #:use-module (guix build-system cargo)
+  #:use-module (gnu packages crates-io))
 
 (define-public rust-cbindgen
   (package
@@ -50,7 +51,7 @@
        (("ansi-term" ,rust-ansi-term-0.11)
         ("atty" ,rust-atty-0.2)
         ("autocfg" ,rust-autocfg-0.1)
-        ("bitflags" ,rust-bitflags-1.1)
+        ("bitflags" ,rust-bitflags-1)
         ("cfg-if" ,rust-cfg-if-0.1)
         ("cloudabi" ,rust-cloudabi-0.0)
         ("fuchsia-cprng" ,rust-fuchsia-cprng-0.1)
@@ -84,936 +85,3 @@
     (description
      "This package provides a tool for generating C/C++ bindings to Rust code.")
     (license license:mpl2.0)))
-
-;;;
-;;;^L
-;;;
-
-(define rust-ansi-term-0.11
-  (package
-    (name "rust-ansi-term")
-    (version "0.11.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "ansi_term" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/ogham/rust-ansi-term")
-    (synopsis "Library for ANSI terminal colours and styles")
-    (description
-     "This is a library for controlling colours and formatting, such as red bold
-text or blue underlined text, on ANSI terminals.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-atty-0.2
-  (package
-    (name "rust-atty")
-    (version "0.2.13")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "atty" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "140sswp1bwqwc4zk80bxkbnfb3g936hgrb77g9g0k1zcld3wc0qq"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/softprops/atty")
-    (synopsis "A simple interface for querying atty")
-    (description
-     "This package provides a simple interface for querying atty.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-autocfg-0.1
-  (package
-    (name "rust-autocfg")
-    (version "0.1.7")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "autocfg" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/cuviper/autocfg")
-    (synopsis "Automatic cfg for Rust compiler features")
-    (description "Rust library for build scripts to automatically configure
-code based on compiler support.  Code snippets are dynamically tested to see
-if the @code{rustc} will accept them, rather than hard-coding specific version
-support.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-bitflags-1.1
-  (package
-    (name "rust-bitflags")
-    (version "1.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "bitflags" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1zc1qb1hwsnl2d8rhzicsv9kqd5b2hwbrscrcfw5as4sfr35659x"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/bitflags/bitflags")
-    (synopsis "Macro to generate structures which behave like bitflags")
-    (description "This package provides a macro to generate structures which
-behave like a set of bitflags.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-cfg-if-0.1
-  (package
-    (name "rust-cfg-if")
-    (version "0.1.10")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "cfg-if" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/alexcrichton/cfg-if")
-    (synopsis "Define an item depending on parameters")
-    (description "This package provides a macro to ergonomically define an item
-depending on a large number of #[cfg] parameters.  Structured like an
-@code{if-else} chain, the first matching branch is the item that gets emitted.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-clap-2
-  (package
-    (name "rust-clap")
-    (version "2.33.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "clap" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1nf6ld3bims1n5vfzhkvcb55pdzh04bbhzf8nil5vvw05nxzarsh"))))
-    (build-system cargo-build-system)
-    (home-page "https://clap.rs/")
-    (synopsis "Command Line Argument Parser")
-    (description
-     "This package provides a simple to use, efficient, and full-featured
-Command Line Argument Parser.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-cloudabi-0.0
-  (package
-    (name "rust-cloudabi")
-    (version "0.0.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "cloudabi" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x"))))
-    (build-system cargo-build-system)
-    (home-page "https://nuxi.nl/cloudabi/")
-    (synopsis "Low level interface to CloudABI")
-    (description
-     "Low level interface to CloudABI.  Contains all syscalls and related types.")
-    (properties '((hidden? . #t)))
-    (license license:bsd-2)))
-
-(define rust-fuchsia-cprng-0.1
-  (package
-    (name "rust-fuchsia-cprng")
-    (version "0.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "fuchsia-cprng" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0"))))
-    (build-system cargo-build-system)
-    (home-page "https://fuchsia.googlesource.com/fuchsia/+/master/garnet/public/rust/fuchsia-cprng")
-    (synopsis "Fuchsia cryptographically secure pseudorandom number generator")
-    (description "Thix package provides a rust crate for the Fuchsia
-cryptographically secure pseudorandom number generator.")
-    (properties '((hidden? . #t)))
-    (license license:bsd-3)))
-
-(define rust-itoa-0.4
-  (package
-    (name "rust-itoa")
-    (version "0.4.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "itoa" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0zvg2d9qv3avhf3d8ggglh6fdyw8kkwqg3r4622ly5yhxnvnc4jh"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/dtolnay/itoa")
-    (synopsis "Fast functions for printing integer primitives")
-    (description "This crate provides fast functions for printing integer
-primitives to an @code{io::Write}.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-libc-0.2
-  (package
-    (name "rust-libc")
-    (version "0.2.65")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "libc" version))
-       (file-name (string-append name "-" version ".crate"))
-       (sha256
-        (base32
-         "1s14bjxnz6haw0gr1h3j4sr7s2s407hpgm8dxhwnl7yzgxia0c8s"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/rust-lang/libc")
-    (synopsis "Raw FFI bindings to platform libraries like libc")
-    (description
-     "libc provides all of the definitions necessary to easily
-interoperate with C code (or \"C-like\" code) on each of the platforms
-that Rust supports. This includes type definitions (e.g., c_int),
-constants (e.g., EINVAL) as well as function headers (e.g., malloc).
-
-This crate exports all underlying platform types, functions, and
-constants under the crate root, so all items are accessible as
-@samp{libc::foo}.  The types and values of all the exported APIs match
-the platform that libc is compiled for.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat
-                   license:asl2.0))))
-
-(define rust-log-0.4
-  (package
-    (name "rust-log")
-    (version "0.4.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "log" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1xz18ixccl5c6np4linv3ypc7hpmmgpc5zzd2ymp2ssfx0mhbdhl"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/rust-lang/log")
-    (synopsis "Lightweight logging facade for Rust")
-    (description
-     "This package provides a lightweight logging facade for Rust.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-numtoa-0.1
-  (package
-    (name "rust-numtoa")
-    (version "0.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "numtoa" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1vs9rhggqbql1p26x8nkha1j06wawwgb2jp5fs88b5gi7prvvy5q"))))
-    (build-system cargo-build-system)
-    (home-page "https://gitlab.com/mmstick/numtoa")
-    (synopsis "Convert numbers into stack-allocated byte arrays")
-    (description
-     "This package can convert numbers into stack-allocated byte arrays.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-proc-macro2-1.0
-  (package
-    (name "rust-proc-macro2")
-    (version "1.0.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "proc-macro2" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "09rgb5ab0jgw39kyad0lgqs4nb9yaf7mwcrgxqnsxbn4il54g7lw"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/alexcrichton/proc-macro2")
-    (synopsis "Stable implementation of the upcoming new `proc_macro` API")
-    (description "This package provides a stable implementation of the upcoming new
-`proc_macro` API.  Comes with an option, off by default, to also reimplement itself
-in terms of the upstream unstable API.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-quote-1.0
-  (package
-    (name "rust-quote")
-    (version "1.0.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "quote" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1zkc46ryacf2jdkc6krsy2z615xbk1x8kp1830rcxz3irj5qqfh5"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/dtolnay/quote")
-    (synopsis "Quasi-quoting macro quote!(...)")
-    (description "Quasi-quoting macro quote!(...)")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-rand-0.6
-  (package
-    (name "rust-rand")
-    (version "0.6.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1jl4449jcl4wgmzld6ffwqj5gwxrp8zvx8w573g1z368qg6xlwbd"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand")
-    (synopsis "Random number generators and other randomness functionality")
-    (description
-     "This package contains random number generators and other randomness
-functionality.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-chacha-0.1
-  (package
-    (name "rust-rand-chacha")
-    (version "0.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_chacha" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1vxwyzs4fy1ffjc8l00fsyygpiss135irjf7nyxgq2v0lqf3lvam"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_chacha")
-    (synopsis "ChaCha random number generator")
-    (description "ChaCha random number generator")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-core-0.4
-  (package
-    (name "rust-rand-core")
-    (version "0.4.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_core" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1p09ynysrq1vcdlmcqnapq4qakl2yd1ng3kxh3qscpx09k2a6cww"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_core")
-    (synopsis
-      "Core random number generator traits and tools for implementation.")
-    (description
-      "Core random number generator traits and tools for implementation.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-core-0.3
-  (package
-    (inherit rust-rand-core-0.4)
-    (name "rust-rand-core")
-    (version "0.3.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_core" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0jzdgszfa4bliigiy4hi66k7fs3gfwi2qxn8vik84ph77fwdwvvs"))))
-    ;; This version is a 0.3 API wrapper around the 0.4 version.
-    (arguments
-     `(#:cargo-inputs (("rand-core" ,rust-rand-core-0.4))))))
-
-(define rust-rand-hc-0.1
-  (package
-    (name "rust-rand-hc")
-    (version "0.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_hc" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1i0vl8q5ddvvy0x8hf1zxny393miyzxkwqnw31ifg6p0gdy6fh3v"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_hc")
-    (synopsis "HC128 random number generator")
-    (description "HC128 random number generator")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-isaac-0.1
-  (package
-    (name "rust-rand-isaac")
-    (version "0.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_isaac" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "027flpjr4znx2csxk7gxb7vrf9c7y5mydmvg5az2afgisp4rgnfy"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_isaac")
-    (synopsis "ISAAC random number generator")
-    (description "ISAAC random number generator")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-jitter-0.1
-  (package
-    (name "rust-rand-jitter")
-    (version "0.1.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_jitter" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "16z387y46bfz3csc42zxbjq89vcr1axqacncvv8qhyy93p4xarhi"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/rust-random/rand")
-    (synopsis
-      "Random number generator based on timing jitter")
-    (description
-      "Random number generator based on timing jitter")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-os-0.1
-  (package
-    (name "rust-rand-os")
-    (version "0.1.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_os" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0wahppm0s64gkr2vmhcgwc0lij37in1lgfxg5rbgqlz0l5vgcxbv"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_os")
-    (synopsis "OS backed Random Number Generator")
-    (description "OS backed Random Number Generator")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-pcg-0.1
-  (package
-    (name "rust-rand-pcg")
-    (version "0.1.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_pcg" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0i0bdla18a8x4jn1w0fxsbs3jg7ajllz6azmch1zw33r06dv1ydb"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_pcg")
-    (synopsis
-      "Selected PCG random number generators")
-    (description
-      "Selected PCG random number generators")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rand-xorshift-0.1
-  (package
-    (name "rust-rand-xorshift")
-    (version "0.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rand_xorshift" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0p2x8nr00hricpi2m6ca5vysiha7ybnghz79yqhhx6sl4gkfkxyb"))))
-    (build-system cargo-build-system)
-    (home-page "https://crates.io/crates/rand_xorshift")
-    (synopsis "Xorshift random number generator")
-    (description
-      "Xorshift random number generator")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-rdrand-0.4
-  (package
-    (name "rust-rdrand")
-    (version "0.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "rdrand" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1cjq0kwx1bk7jx3kzyciiish5gqsj7620dm43dc52sr8fzmm9037"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/nagisa/rust_rdrand/")
-    (synopsis "Random number generator")
-    (description
-     "This package is an implementation of random number generator based on
-@code{rdrand} and @cpde{rdseed} instructions")
-    (properties '((hidden? . #t)))
-    (license license:isc)))
-
-(define rust-redox-syscall-0.1
-  (package
-    (name "rust-redox-syscall")
-    (version "0.1.56")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "redox_syscall" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "110y7dyfm2vci4x5vk7gr0q551dvp31npl99fnsx2fb17wzwcf94"))))
-    (build-system cargo-build-system)
-    (home-page "https://gitlab.redox-os.org/redox-os/syscall")
-    (synopsis "Rust library to access raw Redox system calls")
-    (description "This package provides a Rust library to access raw Redox
-system calls.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-redox-termios-0.1
-  (package
-    (name "rust-redox-termios")
-    (version "0.1.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "redox-termios" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0xhgvdh62mymgdl3jqrngl8hr4i8xwpnbsxnldq0l47993z1r2by"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/redox-os/termios")
-    (synopsis "Rust library to access Redox termios functions")
-    (description
-     "This package provides a Rust library to access Redox termios functions.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-remove-dir-all-0.5
-  (package
-    (name "rust-remove-dir-all")
-    (version "0.5.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "remove-dir-all" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0bkrlyg26mgizpiy1yb2hhpgscxcag8r5fnckqsvk25608vzm0sa"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/XAMPPRocky/remove_dir_all.git")
-    (synopsis "Implementation of remove_dir_all for Windows")
-    (description
-     "This package provides a safe, reliable implementation of remove_dir_all
-for Windows.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-ryu-1.0
-  (package
-    (name "rust-ryu")
-    (version "1.0.2")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "ryu" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1j0h74f1xqf9hjkhanp8i20mqc1aw35kr1iq9i79q7713mn51a5z"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/dtolnay/ryu")
-    (synopsis
-      "Fast floating point to string conversion")
-    (description
-      "Fast floating point to string conversion")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0 license:boost1.0))))
-
-(define rust-serde-1.0
-  (package
-    (name "rust-serde")
-    (version "1.0.101")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "serde" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1p8r24hagcsrl92w5z32nfrg9040qkgqf8iwwnf7mzigpavwk5lp"))))
-    (build-system cargo-build-system)
-    (home-page "https://serde.rs")
-    (synopsis "Generic serialization/deserialization framework")
-    (description
-     "This package provides a generic serialization/deserialization framework.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-serde-derive-1.0
-  (package
-    (name "rust-serde-derive")
-    (version "1.0.101")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "serde-derive" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0bn0wz3j48248187mfmypyqnh73mq734snxxhr05vmgcl51kl4sb"))))
-    (build-system cargo-build-system)
-    (home-page "https://serde.rs")
-    (synopsis
-      "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]")
-    (description
-      "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-serde-json-1.0
-  (package
-    (name "rust-serde-json")
-    (version "1.0.41")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "serde-json" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1hipk84x40454mf599752mi7l08wb8qakz8vd6d3zp57d0mfnwig"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/serde-rs/json")
-    (synopsis "A JSON serialization file format")
-    (description
-     "This package provides a JSON serialization file format.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-strsim-0.8
-  (package
-    (name "rust-strsim")
-    (version "0.8.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "strsim" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/dguo/strsim-rs")
-    (synopsis "Rust implementations of string similarity metrics")
-    (description "This crate includes implementations of string similarity
-metrics.  It includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro,
-and Jaro-Winkler.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-syn-1.0
-  (package
-    (name "rust-syn")
-    (version "1.0.5")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "syn" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1gw03w7lzrlqmp2vislcybikgl5wkhrqi6sy70w93xss2abhx1b6"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/dtolnay/syn")
-    (synopsis "Parser for Rust source code")
-    (description "Parser for Rust source code")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-tempfile-3.0
-  (package
-    (name "rust-tempfile")
-    (version "3.0.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "tempfile" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1vqk7aq2l04my2r3jiyyxirnf8f90nzcvjasvrajivb85s7p7i3x"))))
-    (build-system cargo-build-system)
-    (home-page "http://stebalien.com/projects/tempfile-rs")
-    (synopsis "Library for managing temporary files and directories")
-    (description
-     "This package provides a library for managing temporary files and
-directories.")
-    (properties '((hidden? . #t)))
-    (license (list license:expat license:asl2.0))))
-
-(define rust-termion-1.5
-  (package
-    (name "rust-termion")
-    (version "1.5.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "termion" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0c634rg520zjjfhwnxrc2jbfjz7db0rcpsjs1qici0nyghpv53va"))))
-    (build-system cargo-build-system)
-    (home-page "https://gitlab.redox-os.org/redox-os/termion")
-    (synopsis "Library for manipulating terminals")
-    (description
-     "This package provides a bindless library for manipulating terminals.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-textwrap-0.11
-  (package
-    (name "rust-textwrap")
-    (version "0.11.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "textwrap" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/mgeisler/textwrap")
-    (synopsis "Library for word wrapping, indenting, and dedenting strings")
-    (description
-     "Textwrap is a small library for word wrapping, indenting, and dedenting
-strings.  You can use it to format strings (such as help and error messages)
-for display in commandline applications.  It is designed to be efficient and
-handle Unicode characters correctly.")
-    (properties '((hidden? . #t)))
-    (license license:expat)))
-
-(define rust-toml-0.5
-  (package
-    (name "rust-toml")
-    (version "0.5.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "toml" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "093p48vpqm4bb8q3514xsij0dkljxlr3jp9ypxr4p48xjisvxan7"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/alexcrichton/toml-rs")
-    (synopsis "Rust encoder and decoder of TOML-formatted files and streams")
-    (description
-     "This package provides a native Rust encoder and decoder of TOML-formatted
-files and streams.  Provides implementations of the standard
-Serialize/Deserialize traits for TOML data to facilitate deserializing and
-serializing Rust structures.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-unicode-width-0.1
-  (package
-    (name "rust-unicode-width")
-    (version "0.1.6")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "unicode-width" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "082f9hv1r3gcd1xl33whjhrm18p0w9i77zhhhkiccb5r47adn1vh"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/unicode-rs/unicode-width")
-    (synopsis "Determine displayed width according to Unicode rules")
-    (description "This crate allows you to determine displayed width of
-@code{char} and @code{str} types according to Unicode Standard Annex #11 rules.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-unicode-xid-0.2
-  (package
-    (name "rust-unicode-xid")
-    (version "0.2.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "unicode-xid" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0z09fn515xm7zyr0mmdyxa9mx2f7azcpv74pqmg611iralwpcvl2"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/unicode-rs/unicode-xid")
-    (synopsis "Determine Unicode XID related properties")
-    (description "Determine whether characters have the XID_Start
-or XID_Continue properties according to Unicode Standard Annex #31.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0 license:expat))))
-
-(define rust-vec-map-0.8
-  (package
-    (name "rust-vec-map")
-    (version "0.8.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "vec_map" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/contain-rs/vec-map")
-    (synopsis "Simple map based on a vector for small integer keys")
-    (description
-     "This package provides a simple map based on a vector for small integer keys.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-winapi-0.3
-  (package
-    (name "rust-winapi")
-    (version "0.3.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "winapi" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1ii9j9lzrhwri0902652awifzx9fpayimbp6hfhhc296xcg0k4w0"))))
-    (build-system cargo-build-system)
-    ;; This package depends unconditionally on these two crates.
-    (arguments
-     `(#:cargo-inputs
-       (("winapi-i686-pc-windows-gnu" ,rust-winapi-i686-pc-windows-gnu-0.4)
-        ("winapi-x86-64-pc-windows-gnu" ,rust-winapi-x86-64-pc-windows-gnu-0.4))))
-    (home-page "https://github.com/retep998/winapi-rs")
-    (synopsis "Raw FFI bindings for all of Windows API")
-    (description
-     "This package contains raw FFI bindings for all of Windows API.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define-public rust-winapi-i686-pc-windows-gnu-0.4
-  (package
-    (name "rust-winapi-i686-pc-windows-gnu")
-    (version "0.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "winapi-i686-pc-windows-gnu" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/retep998/winapi-rs")
-    (synopsis "Import libraries for the i686-pc-windows-gnu target")
-    (description "This crate provides import libraries for the
-i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
-@code{winapi} instead.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
-
-(define rust-winapi-x86-64-pc-windows-gnu-0.4
-  (package
-    (name "rust-winapi-x86-64-pc-windows-gnu")
-    (version "0.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "winapi-x86_64-pc-windows-gnu" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/retep998/winapi-rs")
-    (synopsis "Import libraries for the x86_64-pc-windows-gnu target")
-    (description "This package provides import libraries for the
-x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
-@code{winapi} instead.")
-    (properties '((hidden? . #t)))
-    (license (list license:asl2.0
-                   license:expat))))
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index fb84a764ab..1c2c4c7a0e 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -499,6 +499,43 @@ Registration and U2F Authentication operations, and functionality for
 verifying the cryptographic operations.")
     (license license:bsd-2)))
 
+(define-public pam-u2f
+  (package
+    (name "pam-u2f")
+    (version "1.0.8")
+    (source (origin
+              (method git-fetch)
+              (uri
+               (git-reference
+                (url "https://github.com/Yubico/pam-u2f.git")
+                (commit (string-append "pam_u2f-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "04d9davyi33gqbvga1rvh9fijp6f16mx2xmnn4n61rnhcn2jac98"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-pam-dir="
+                            (assoc-ref %outputs "out") "/lib/security"))))
+    (inputs
+     `(("libu2f-host" ,libu2f-host)
+       ("libu2f-server" ,libu2f-server)
+       ("linux-pam" ,linux-pam)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("asciidoc" ,asciidoc)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://developers.yubico.com/pam-u2f/")
+    (synopsis "PAM module for U2F authentication")
+    (description
+     "This package provides a module implementing PAM over U2F, providing an
+easy way to integrate the YubiKey (or other U2F compliant authenticators) into
+your existing infrastructure.")
+    (license license:bsd-2)))
+
 (define-public python-fido2
   (package
     (name "python-fido2")
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index ea016bc6c2..249b6f1af5 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -53,14 +53,15 @@
   (package
     (name "cereal")
     (version "1.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/USCiLab/cereal/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0kj32h3j2128anig0g9gzw82kfyd5xqfkwq6vdyv900jx8i1qckx"))))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/USCiLab/cereal.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1vxkrsnxkiblzi1z61vfix167c184fy868sgwj2dxxgbgjcq2nrh"))))
     (build-system cmake-build-system)
     (arguments
      `(;; The only included tests are portability tests requiring
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 7e1d8df333..8b41a6317f 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -74,33 +74,18 @@
        ("go-github-com-syncthing-notify" ,go-github-com-syncthing-notify)
        ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
        ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
-       ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)
+       ("go-golang-org-x-time" ,go-golang-org-x-time)
        ("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2)
        ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
-       ("go-github-com-gogo-protobuf-gogoproto"
-        ,go-github-com-gogo-protobuf-gogoproto)
-       ("go-github-com-gogo-protobuf-protoc-gen-gogo"
-        ,go-github-com-gogo-protobuf-protoc-gen-gogo)
-       ("go-github-com-prometheus-client-golang-prometheus"
-        ,go-github-com-prometheus-client-golang-prometheus)
        ("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
-       ("go-golang-org-x-net-bpf" ,go-golang-org-x-net-bpf)
-       ("go-golang-org-x-net-internal-iana" ,go-golang-org-x-net-internal-iana)
-       ("go-golang-org-x-net-internal-socket"
-        ,go-golang-org-x-net-internal-socket)
-       ("go-golang-org-x-net-internal-socks"
-        ,go-golang-org-x-net-internal-socks)
-       ("go-golang-org-x-net-ipv4" ,go-golang-org-x-net-ipv4)
-       ("go-golang-org-x-net-ipv6" ,go-golang-org-x-net-ipv6)
-       ("go-golang-org-x-net-proxy" ,go-golang-org-x-net-proxy)
-       ("go-golang-org-x-text-unicode-norm" ,go-golang-org-x-text-unicode-norm)
-       ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)
+       ("go-github-com-prometheus-client-golang"
+        ,go-github-com-prometheus-client-golang)
+       ("go-golang-org-x-net" ,go-golang-org-x-net)
+       ("go-golang-org-x-text" ,go-golang-org-x-text)
        ("go-github-com-audriusbutkevicius-recli"
         ,go-github-com-audriusbutkevicius-recli)
        ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
-       ("go-github-com-vitrun-qart-qr" ,go-github-com-vitrun-qart-qr)
-       ("go-github-com-vitrun-qart-coding" ,go-github-com-vitrun-qart-coding)
-       ("go-github-com-vitrun-qart-gf256" ,go-github-com-vitrun-qart-gf256)
+       ("go-github-com-vitrun-qart" ,go-github-com-vitrun-qart)
        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
        ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
        ("go-github-com-flynn-archive-go-shlex"
@@ -461,7 +446,7 @@ database/sql package.")
     (propagated-inputs
      `(("go-github-com-oschwald-maxminddb-golang"
         ,go-github-com-oschwald-maxminddb-golang)
-       ("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+       ("go-golang-org-x-sys" ,go-golang-org-x-sys)))
     (arguments
      `(#:import-path "github.com/oschwald/geoip2-golang"
        #:tests? #f)) ; Requires some unpackaged software and test data
@@ -488,7 +473,7 @@ GeoLite2 and GeoIP2 databases in Go.")
                   "1i6d935f3cv9djpjvc2ibh8aps8jqvg454b9pkwg2h98al759ggk"))))
       (build-system go-build-system)
       (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+       `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
       (arguments
        `(#:import-path "github.com/oschwald/maxminddb-golang"
          #:tests? #f)) ; Requires some unpackaged software and test data
@@ -629,11 +614,11 @@ environment")
     (home-page "https://github.com/thejerf/suture")
     (license expat)))
 
-(define-public go-github-com-vitrun-qart-coding
+(define-public go-github-com-vitrun-qart
   (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
         (revision "0"))
     (package
-      (name "go-github-com-vitrun-qart-coding")
+      (name "go-github-com-vitrun-qart")
       (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
@@ -647,77 +632,16 @@ environment")
                   "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
       (build-system go-build-system)
       (arguments
-       `(#:import-path "github.com/vitrun/qart/coding"
-         #:unpack-path "github.com/vitrun/qart"))
-      (synopsis "Low-level QR coding library")
+       `(#:import-path "github.com/vitrun/qart"))
+      (synopsis "Create QR codes with an embedded image")
       (description "This package provides a library for embedding
 human-meaningful graphics in QR codes.  However, instead of scribbling on
 redundant pieces and relying on error correction to preserve the meaning,
 @code{qart} engineers the encoded values to create the picture in a code with no
-inherent errors.  This @code{qart} component, @code{coding}, implements
-low-level QR coding details.")
-      (home-page "https://github.com/vitrun/qart/")
-      (license bsd-3))))
-
-(define-public go-github-com-vitrun-qart-gf256
-  (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
-        (revision "0"))
-    (package
-      (name "go-github-com-vitrun-qart-gf256")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/vitrun/qart")
-                      (commit commit)))
-                (file-name (string-append "go-github-com-vitrun-qart-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/vitrun/qart/gf256"
-         #:unpack-path "github.com/vitrun/qart"))
-      (synopsis "Qart library for Galois Field GF(256) math")
-      (description "This package, a component of @code{qart}, provides @code{gf256},
-implements arithmetic over the Galois Field GF(256).")
-      (home-page "https://github.com/vitrun/qart")
-      (license bsd-3))))
-
-(define-public go-github-com-vitrun-qart-qr
-  (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
-        (revision "0"))
-    (package
-      (name "go-github-com-vitrun-qart-qr")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/vitrun/qart")
-                      (commit commit)))
-                (file-name (string-append "go-github-com-vitrun-qart-"
-                                          version "-checkout"))
-                (sha256
-                 (base32
-                  "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/vitrun/qart/qr"
-         #:unpack-path "github.com/vitrun/qart"))
-      (synopsis "Qart component for generating QR codes")
-      (description "This package provides a library for embedding
-human-meaningful graphics in QR codes.  However, instead of scribbling on
-redundant pieces and relying on error correction to preserve the meaning,
-@code{qart} engineers the encoded values to create the picture in a code with no
-inherent errors.  This @code{qart} component, @code{qr}, provides QR code
-generation.")
+inherent errors.")
       (home-page "https://github.com/vitrun/qart")
       (license bsd-3))))
 
-;; XXX Syncthing actually imports 'github.com/chmduquesne/rollinghash/adler32'.
-;; Normally we'd package this module indpendenctly but the adler32 module itself
-;; imports 'github.com/chmduquesne/rollinghash/', so this is the easy way out.
 (define-public go-github-com-chmduquesne-rollinghash
   (let ((commit "a60f8e7142b536ea61bb5d84014171189eeaaa81")
         (revision "0"))
@@ -811,7 +735,7 @@ using sh's word-splitting rules.")
       (arguments
        '(#:import-path "github.com/syncthing/notify"))
       (propagated-inputs
-       `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
+       `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
       (synopsis "File system event notification library")
       (description "This package provides @code{notify}, a file system event
 notification library in Go.")
@@ -869,11 +793,11 @@ data serialization format.")
       (home-page "https://github.com/golang/protobuf")
       (license bsd-3)))
 
-(define-public go-github-com-prometheus-client-model-go
+(define-public go-github-com-prometheus-client-model
   (let ((commit "fd36f4220a901265f90734c3183c5f0c91daa0b8")
         (revision "1"))
     (package
-      (name "go-github-com-prometheus-client-model-go")
+      (name "go-github-com-prometheus-client-model")
       (version (git-version "0.0.2" revision commit))
       (source (origin
                 (method git-fetch)
@@ -886,8 +810,12 @@ data serialization format.")
                   "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5"))))
       (build-system go-build-system)
       (arguments
-       '(#:import-path "github.com/prometheus/client_model/go"
-         #:unpack-path "github.com/prometheus/client_model"))
+       '(#:import-path "github.com/prometheus/client_model"
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           ;; Source-only package
+           (delete 'build))))
       (propagated-inputs
        `(("go-github-com-golang-protobuf-proto"
           ,go-github-com-golang-protobuf-proto)))
@@ -927,9 +855,9 @@ message streaming.")
       (home-page "https://github.com/matttproud/golang_protobuf_extensions")
       (license asl2.0))))
 
-(define-public go-github-com-prometheus-common-expfmt
+(define-public go-github-com-prometheus-common
     (package
-      (name "go-github-com-prometheus-common-expfmt")
+      (name "go-github-com-prometheus-common")
       (version "0.4.1")
       (source (origin
                 (method git-fetch)
@@ -942,8 +870,8 @@ message streaming.")
                   "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s"))))
       (build-system go-build-system)
       (arguments
-       '(#:import-path "github.com/prometheus/common/expfmt"
-         #:unpack-path "github.com/prometheus/common"
+       '(#:import-path "github.com/prometheus/common"
+         #:tests? #f
          #:phases
          (modify-phases %standard-phases
            (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
@@ -955,49 +883,21 @@ message streaming.")
                                      "/src/github.com/prometheus/common/expfmt/testdata/")
                       ".*\\.gz$"))
                #t))
-           (replace 'check
-             ;; Tests don't pass "vet" on go-1.11.  See
-             ;; https://github.com/syncthing/syncthing/issues/5311.
-             (lambda* (#:key import-path #:allow-other-keys)
-               (invoke "go" "test"
-                       "-vet=off"
-                       import-path))))))
+           ;; Source-only package
+           (delete 'build))))
       (propagated-inputs
        `(("go-github-com-golang-protobuf-proto"
           ,go-github-com-golang-protobuf-proto)
          ("go-github-com-matttproud-golang-protobuf-extensions-pbutil"
           ,go-github-com-matttproud-golang-protobuf-extensions-pbutil)
-         ("go-github-com-prometheus-client-model-go"
-          ,go-github-com-prometheus-client-model-go)))
+         ("go-github-com-prometheus-client-model"
+          ,go-github-com-prometheus-client-model)))
       (synopsis "Prometheus metrics")
       (description "This package provides tools for reading and writing
 Prometheus metrics.")
       (home-page "https://github.com/prometheus/common")
       (license asl2.0)))
 
-(define-public go-github-com-prometheus-common-model
-    (package
-      (name "go-github-com-prometheus-common-model")
-      (version "0.4.1")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/prometheus/common.git")
-                       (commit (string-append "v" version))))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/prometheus/common/model"
-         #:unpack-path "github.com/prometheus/common"))
-      (synopsis "Prometheus component")
-      (description "This package provides a component of the Go Prometheus
-implementation.")
-      (home-page "https://github.com/prometheus/common")
-      (license asl2.0)))
-
 (define-public go-github-com-prometheus-procfs
     (package
       (name "go-github-com-prometheus-procfs")
@@ -1023,9 +923,9 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
       (home-page "https://github.com/prometheus/procfs")
       (license asl2.0)))
 
-(define-public go-github-com-client-golang-prometheus-promhttp
+(define-public go-github-com-prometheus-client-golang
     (package
-      (name "go-github-com-client-golang-prometheus-promhttp")
+      (name "go-github-com-prometheus-client-golang")
       (version "0.9.4")
       (source (origin
                 (method git-fetch)
@@ -1038,22 +938,21 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
                   "0s134fj4i7k6pxdmxwkdi7amb1882yq33spv15hg3pkpbd3h311p"))))
       (build-system go-build-system)
       (arguments
-       '(#:tests? #f ; The tests require internet access
-         #:import-path "github.com/prometheus/client_golang/prometheus/promhttp"
-         #:unpack-path "github.com/prometheus/client_golang"))
+       '(#:tests? #f
+         #:import-path "github.com/prometheus/client_golang"
+         #:phases
+         (modify-phases %standard-phases
+           ;; Source-only package
+           (delete 'build))))
       (propagated-inputs
        `(("go-github-com-beorn7-perks-quantile"
           ,go-github-com-beorn7-perks-quantile)
          ("go-github-com-golang-protobuf-proto"
           ,go-github-com-golang-protobuf-proto)
-         ("go-github-com-prometheus-common-model"
-          ,go-github-com-prometheus-common-model)
-         ("go-github-com-prometheus-client-model-go"
-          ,go-github-com-prometheus-client-model-go)
-         ("go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg"
-          ,go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg)
-         ("go-github-com-prometheus-common-expfmt"
-          ,go-github-com-prometheus-common-expfmt)
+         ("go-github-com-prometheus-client-model"
+          ,go-github-com-prometheus-client-model)
+         ("go-github-com-prometheus-common"
+          ,go-github-com-prometheus-common)
          ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)))
       (synopsis "HTTP server and client tools for Prometheus")
       (description "This package @code{promhttp} provides HTTP client and
@@ -1061,43 +960,6 @@ server tools for Prometheus metrics.")
       (home-page "https://github.com/prometheus/client_golang")
       (license asl2.0)))
 
-(define-public go-github-com-prometheus-client-golang-prometheus
-    (package
-      (name "go-github-com-prometheus-client-golang-prometheus")
-      (version "0.9.4")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/prometheus/client_golang.git")
-                       (commit (string-append "v" version))))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0s134fj4i7k6pxdmxwkdi7amb1882yq33spv15hg3pkpbd3h311p"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/prometheus/client_golang/prometheus"
-         #:unpack-path "github.com/prometheus/client_golang"
-         #:tests? #f)) ; 'TestHandler' test fails in this non-critical dependency
-      (propagated-inputs
-       `(("go-github-com-beorn7-perks-quantile"
-          ,go-github-com-beorn7-perks-quantile)
-         ("go-github-com-prometheus-common-model" ,go-github-com-prometheus-common-model)
-         ("go-github-com-prometheus-client-model-go"
-          ,go-github-com-prometheus-client-model-go)
-         ("go-github-com-prometheus-common-expfmt"
-          ,go-github-com-prometheus-common-expfmt)
-         ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)
-         ("go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg"
-          ,go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg)))
-      (synopsis "Prometheus instrumentation library for Go applications")
-      (description "This package provides the Go client library for the
-Prometheus monitoring and alerting system.  It has two separate parts, one for
-instrumenting application code, and one for creating clients that talk to the
-Prometheus HTTP API.")
-      (home-page "https://github.com/prometheus/client_golang")
-      (license asl2.0)))
-
 (define-public go-gopkg.in-asn1-ber.v1
   (package
     (name "go-gopkg.in-asn1-ber.v1")
@@ -1114,7 +976,7 @@ Prometheus HTTP API.")
     (build-system go-build-system)
     (arguments
      '(#:import-path "gopkg.in/asn1-ber.v1"
-       ;; Tests don't pass "vet" on go-1.11.  See
+       ;; Tests don't pass "vet" on Go since 1.11.  See
        ;; https://github.com/go-asn1-ber/asn1-ber/issues/20.
        #:phases
        (modify-phases %standard-phases
@@ -1178,28 +1040,6 @@ quoting, commenting, and escaping.")
       (home-page "https://github.com/flynn-archive/go-shlex")
       (license asl2.0))))
 
-(define-public go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg
-  (package
-    (name "go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg")
-    (version "0.4.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/prometheus/common.git")
-                     (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s"))))
-    (build-system go-build-system)
-    (arguments
-     '(#:import-path "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
-       #:unpack-path "github.com/prometheus/common"))
-    (synopsis "Internal Prometheus component")
-    (description "This package is an internal component of Prometheus.")
-    (home-page "https://github.com/prometheus/common")
-    (license asl2.0)))
-
 (define-public go-github-com-audriusbutkevicius-pfilter
   (let ((commit "c55ef6137fc6f075801eac099cc2687ede0f101d")
         (revision "3"))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index cd40ce3744..22083940c4 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -721,42 +721,6 @@ programmer to write text-based user interfaces.")
       (home-page "https://github.com/nsf/termbox-go")
       (license license:expat))))
 
-(define-public go-golang.org-x-crypto-ssh-terminal
-  (let ((commit "c78caca803c95773f48a844d3dcab04b9bc4d6dd")
-        (revision "0"))
-    (package
-      (name "go-golang.org-x-crypto-ssh-terminal")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://go.googlesource.com/crypto")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0vxlfxr9y681yn2cfh6dbqmq35vvq4f45ay0mm31ffkny9cms0y4"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "golang.org/x/crypto/ssh/terminal"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                     (string-append (assoc-ref outputs "out")
-                                    "/src/golang.org/x/crypto/ed25519/testdata")
-                     ".*\\.gz$"))
-               #t)))))
-      (synopsis "Support functions for dealing with terminals in Go")
-      (description "@code{terminal} provides support functions for dealing
-with terminals in Go.")
-      (home-page "https://go.googlesource.com/crypto/")
-      (license license:bsd-3))))
-
 (define-public go-github-com-junegunn-fzf
   (package
     (name "go-github-com-junegunn-fzf")
@@ -779,7 +743,7 @@ with terminals in Go.")
        ("go-github-com-mattn-go-shellwords" ,go-github-com-mattn-go-shellwords)
        ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
        ("go-github-com-gdamore-tcell" ,go-github-com-gdamore-tcell)
-       ("go-golang-org-x-crypto-ssh-terminal" ,go-golang-org-x-crypto-ssh-terminal)))
+       ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
     (home-page "https://github.com/junegunn/fzf")
     (synopsis "Command-line fuzzy-finder")
     (description "This package provides an interactive command-line filter
@@ -805,8 +769,8 @@ usable with any list--including files, command history, processes and more.")
       (arguments
        '(#:import-path "github.com/howeyc/gopass"))
       (propagated-inputs
-       `(("go-golang.org-x-crypto-ssh-terminal"
-          ,go-golang.org-x-crypto-ssh-terminal)))
+       `(("go-golang-org-x-crypto"
+          ,go-golang-org-x-crypto)))
       (synopsis "Retrieve password from a terminal or piped input in Go")
       (description
        "@code{gopass} is a Go package for retrieving a password from user
diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index 87706d2277..8c1a03b5d2 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,7 +18,10 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages toys)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -64,3 +68,91 @@ on the text terminal.  It serves no useful purpose but to discourage mistakenly
 typing @command{sl} instead of @command{ls}.")
     (license (license:non-copyleft "file://LICENSE"
                                    "See LICENSE in the distribution."))))
+
+(define-public filters
+  (let ((version "2.55")
+        (commit "c5c291916b52ed9e6418448a8eee30475fb9adcf"))
+    (package
+      (name "filters")
+      (version "2.55")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://git.joeyh.name/filters")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1gaigpda1w9wxfh8an3sam1hpacc1bhxl696w4yj0vzhc6izqvxs"))
+         (modules '((guix build utils)))
+         (snippet '(begin
+                     ;; kenny is under nonfree Artistic License (Perl) 1.0.
+                     (delete-file "kenny")
+                     (substitute* "Makefile"
+                       (("kenny")
+                        ""))))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags
+         (list "CC=gcc" (string-append "DESTDIR=" %output))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'fix-install-directories
+             (lambda _
+               (substitute* "Makefile"
+                 (("/usr/games")
+                  "/bin/")
+                 (("/usr/share/")
+                  "/share/"))
+               #t)))
+         #:tests? #f))                  ; no test suite
+      (native-inputs
+       `(("bison" ,bison)
+         ("flex" ,flex)))
+      (inputs
+       `(("perl" ,perl)))
+      (home-page "https://joeyh.name/code/filters/")
+      (synopsis "Various amusing text filters")
+      (description
+       "The filters collection harks back to the late 1980s, when various text
+filters were written to munge written language in amusing ways.  The earliest
+and best known were legends such as the Swedish Chef filter and B1FF.
+
+This package contains the following filter commands:
+@enumerate
+@item b1ff: a satire of a stereotypical Usenet newbie
+@item censor: comply with the @acronym{CDA, Communications Decency Act}
+@item chef: convert English to Mock Swedish
+@item cockney: Cockney English
+@item elee: k3wl hacker slang
+@item fanboy: a stereotypical fan (supports custom fandoms)
+@item fudd: Elmer Fudd
+@item jethro: hillbilly text filter
+@item jibberish: a random selection of these filters
+@item jive: Jive English
+@item ken: turn English into Cockney
+@item kraut: a bad German accent
+@item ky00te: a very cute accent
+@item LOLCAT: as seen in Internet GIFs everywhere
+@item nethackify: wiped-out text as found in nethack
+@item newspeak: à la 1984
+@item nyc: Brooklyn English
+@item pirate: talk like a pirate
+@item rasterman: straight from the keyboard of Carsten Haitzler
+@item scottish: fake Scottish (Dwarven) accent
+@item scramble: scramble the \"inner\" letters of each word
+@item spammer: turn honest text into something liable to be flagged as spam
+@item studly: studly caps.
+@item uniencode: use glorious Unicode to the fullest possible extent
+@item upside-down: flip the text upside down
+@end enumerate
+
+The GNU project hosts a similar collection of filters, the GNU talkfilters.")
+      (license                    ; see debian/copyright
+       (list license:gpl2+        ; most of the filters
+             license:gpl2         ; rasterman, ky00te.dir/* nethackify, pirate
+             license:gpl3+        ; scramble, scottish
+             license:public-domain      ; jethro, kraut, ken, studly
+             license:gpl1+         ; cockney, jive, nyc only say "gpl"
+             license:expat)))))    ; newspeak
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 50945c038e..b55b011ef6 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -508,7 +508,7 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public x265
   (package
     (name "x265")
-    (version "3.1.2")
+    (version "3.2")
     (outputs '("out" "static"))
     (source
       (origin
@@ -518,8 +518,7 @@ H.264 (MPEG-4 AVC) video streams.")
                    (string-append "https://download.videolan.org/videolan/x265/"
                                   "x265_" version ".tar.gz")))
         (sha256
-         (base32
-          "1ajr59gjj47gnczfb2qhmzclj746pdiq9a1d81b0mq22k8f5yy3g"))
+         (base32 "0fqkhfhr22gzavxn60cpnj3agwdf5afivszxf3haj5k1sny7jk9n"))
         (patches (search-patches "x265-arm-flags.patch"))
         (modules '((guix build utils)))
         (snippet '(begin
@@ -1342,7 +1341,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.29.1")
+    (version "0.30.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1351,7 +1350,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "138921kx8g6qprim558xin09xximjhsj9ss8b71ifg2m6kclym8m"))))
+                "17mxjgcfljlv6h0ik3332xsqbs0ybvk6dkwflyl0cjh15vl1iv6f"))))
     (build-system waf-build-system)
     (native-inputs
      `(("perl" ,perl) ; for zsh completion file
@@ -1417,9 +1416,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
             #t)))
        #:configure-flags (list "--enable-libmpv-shared"
                                "--enable-cdda"
-                               "--enable-dvdread"
                                "--enable-dvdnav"
-                               "--enable-zsh-comp"
                                "--disable-build-date")
        ;; No check function defined.
        #:tests? #f))
@@ -1494,7 +1491,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.10.22")
+    (version "2019.10.29")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1502,7 +1499,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "06wg6wpyq0fawjxjrhd7zasfjr9b6w9wsk2amiqdl712zqlq2rwb"))))
+                "1lq6ycjbx07831s24yx42q6m6svas4mf02vbszw0965dbbzs7vp4"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1928,7 +1925,7 @@ for use with HTML5 video.")
 (define-public avidemux
   (package
     (name "avidemux")
-    (version "2.7.3")
+    (version "2.7.4")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1936,7 +1933,7 @@ for use with HTML5 video.")
                    "avidemux_" version ".tar.gz"))
              (sha256
               (base32
-               "17x2mnnr5h8pp764p55l1xcn2ljnzhbj8cykajlllvk4rc4qwxld"))
+               "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x"))
              (patches (search-patches "avidemux-install-to-lib.patch"))))
     (build-system cmake-build-system)
     (native-inputs
@@ -1969,7 +1966,7 @@ for use with HTML5 video.")
        #:phases
        ;; Make sure files inside the included ffmpeg tarball are
        ;; patch-shebanged.
-       (let ((ffmpeg "ffmpeg-4.1.1"))
+       (let ((ffmpeg "ffmpeg-4.1.4"))
          (modify-phases %standard-phases
            (add-before 'patch-source-shebangs 'unpack-ffmpeg
              (lambda _
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 63bd50390c..fbc0b48898 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 HiPhish <hiphish@posteo.de>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;;
@@ -609,7 +609,7 @@ and powerline symbols, etc.")
 (define-public vim-syntastic
   (package
     (name "vim-syntastic")
-    (version "3.9.0")
+    (version "3.10.0")
     (source
      (origin
        (method git-fetch)
@@ -618,8 +618,7 @@ and powerline symbols, etc.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "121a1mxgfng2y5zmivyyk02mca8pyw72crivf4f1q9nhn0barf57"))))
+        (base32 "0j91f72jaz1s6aw1hpjiz30vk2ds2aqd9gisk91grsldy6nz6hhz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 7d64c4db46..a6aef2ff6e 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -2860,7 +2860,7 @@ jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
 (define-public perl-http-cookies
   (package
     (name "perl-http-cookies")
-    (version "6.04")
+    (version "6.05")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -2868,7 +2868,7 @@ jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "1m0kxcirbvbkrm2c59p1bkbvzlcdymg8fdpa7wlxijlx0xwz1iqc"))))
+               "0pbgns2gwgvgg9rglah7ryw0jj13aykyf38lnhm3rwzw3c2cvqaq"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)))
@@ -3204,7 +3204,7 @@ select or poll.")
 (define-public perl-libwww
   (package
     (name "perl-libwww")
-    (version "6.39")
+    (version "6.41")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -3212,7 +3212,7 @@ select or poll.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "1mblfwz3g7vmyykmb0mcbmmad77rwx55fwaca9ymv9wajd3pg3cs"))))
+               "0jh67946fwd33ap3xy8df0421d2mr6lmhalhkf1p7dx2b7fil9wf"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -6806,7 +6806,7 @@ Anonip can also be uses as a Python module in your own Python application.")
     (build-system go-build-system)
     (propagated-inputs
      `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)
-       ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)))
+       ("go-golang-org-x-time" ,go-golang-org-x-time)))
     (arguments
      `(#:import-path "github.com/tsileo/poussetaches"))
     (home-page "https://github.com/tsileo/poussetaches")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7c573337d4..e793d89bfa 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -691,14 +691,14 @@ Haskell, no knowledge of the language is required to install and use it.")
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32 "0r9yzgy67j4mi3dyxx714f0ssk5qzca5kh4zw0fhiz1pf008cxms"))))
+        (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
     (build-system haskell-build-system)
     (propagated-inputs
      `(("ghc-old-time" ,ghc-old-time)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index d4312f4635..17dc16b44c 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
+;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -190,6 +191,43 @@ that can be activated based on the connected hardware.  Hook scripts can be
 used to further tweak the behaviour of the different profiles.")
       (license license:gpl3+))))
 
+(define-public bemenu
+  (package
+    (name "bemenu")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Cloudef/bemenu.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0piax49az5kp96r1g6dcgj87fi6p4jl286wlkxsdvljzpkn8q6gv"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags '("-DBEMENU_WAYLAND_RENDERER=ON")))
+    (inputs
+     `(("cairo" ,cairo)
+       ("libx11" ,libx11)
+       ("libxkbcomon" ,libxkbcommon)
+       ("libxinerama" ,libxinerama)
+       ("ncurses" ,ncurses)
+       ("pango" ,pango)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)))
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/Cloudef/bemenu")
+    (synopsis "Dynamic menu library and client program inspired by dmenu")
+    (description
+     "bemenu is a dynamic menu which allows the user to flexibly select from a
+list of options (usually programs to launch).  It renders the menu graphically
+with X11 or Wayland, or in a text terminal with ncurses.")
+    (license (list license:gpl3+        ; client program[s] and other sources
+                   license:lgpl3+))))   ; library and bindings
+
 (define-public xclip
   (package
     (name "xclip")
@@ -997,7 +1035,7 @@ Wacom tablet applet.")
 (define-public xf86-input-wacom
   (package
     (name "xf86-input-wacom")
-    (version "0.36.1")
+    (version "0.38.0")
     (source
      (origin
        (method url-fetch)
@@ -1006,8 +1044,7 @@ Wacom tablet applet.")
              "xf86-input-wacom-" version "/"
              "xf86-input-wacom-" version ".tar.bz2"))
        (sha256
-        (base32
-         "029y8varbricba2dzhzhy0ndd7lbfif411ca8c3wxzni9qmbj1ij"))))
+        (base32 "0w53hv3g7d5vv328x04wb57sa1lyv2h631c37csp1drfp7ghikd1"))))
     (arguments
      `(#:configure-flags
        (list (string-append "--with-sdkdir="
diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index ebfe05abd0..471c5fd95f 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,7 +24,9 @@
   #:use-module (gnu packages mpd)
   #:use-module (guix records)
   #:use-module (ice-9 match)
-  #:export (mpd-configuration
+  #:export (mpd-output
+            mpd-output?
+            mpd-configuration
             mpd-configuration?
             mpd-service-type))
 
@@ -33,6 +36,25 @@
 ;;;
 ;;; Code:
 
+(define-record-type* <mpd-output>
+  mpd-output make-mpd-output
+  mpd-output?
+  (type          mpd-output-type
+                 (default "pulse"))
+  (name          mpd-output-name
+                 (default "MPD"))
+  (enabled?      mpd-output-enabled?
+                 (default #t))
+  (tags?         mpd-output-tags?
+                 (default #t))
+  (always-on?    mpd-output-always-on?
+                 (default #f))
+  (mixer-type    mpd-output-mixer-type
+                 ;; valid: hardware, software, null, none
+                 (default #f))
+  (extra-options mpd-output-extra-options
+                 (default '())))
+
 (define-record-type* <mpd-configuration>
   mpd-configuration make-mpd-configuration
   mpd-configuration?
@@ -51,27 +73,56 @@
   (port         mpd-configuration-port
                 (default "6600"))
   (address      mpd-configuration-address
-                (default "any")))
+                (default "any"))
+  (outputs      mpd-configuration-outputs
+                (default (list (mpd-output)))))
+
+(define (mpd-output->string output)
+  "Convert the OUTPUT of type <mpd-output> to a configuration file snippet."
+  (let ((extra (string-join
+                (map (match-lambda
+                       ((key . value)
+                        (format #f "  ~a \"~a\""
+                                (string-map
+                                 (lambda (c) (if (char=? c #\-) #\_ c))
+                                 (symbol->string key))
+                                value)))
+                     (mpd-output-extra-options output))
+                "\n")))
+    (format #f "\
+audio_output {
+  type \"~a\"
+  name \"~a\"
+~:[  enabled \"no\"~%~;~]\
+~:[  tags \"no\"~%~;~]\
+~:[~;  always_on \"yes\"~%~]\
+~@[  mixer_type \"~a\"~%~]\
+~a~%}~%"
+            (mpd-output-type output)
+            (mpd-output-name output)
+            (mpd-output-enabled? output)
+            (mpd-output-tags? output)
+            (mpd-output-always-on? output)
+            (mpd-output-mixer-type output)
+            extra)))
 
 (define (mpd-config->file config)
   (apply
    mixed-text-file "mpd.conf"
-   "audio_output {\n"
-   "  type \"pulse\"\n"
-   "  name \"MPD\"\n"
-   "}\n"
    "pid_file \"" (mpd-file-name config "pid") "\"\n"
-   (map (match-lambda
-          ((config-name config-val)
-           (string-append config-name " \"" (config-val config) "\"\n")))
-        `(("user" ,mpd-configuration-user)
-          ("music_directory" ,mpd-configuration-music-dir)
-          ("playlist_directory" ,mpd-configuration-playlist-dir)
-          ("db_file" ,mpd-configuration-db-file)
-          ("state_file" ,mpd-configuration-state-file)
-          ("sticker_file" ,mpd-configuration-sticker-file)
-          ("port" ,mpd-configuration-port)
-          ("bind_to_address" ,mpd-configuration-address)))))
+   (append (map mpd-output->string
+                (mpd-configuration-outputs config))
+           (map (match-lambda
+                  ((config-name config-val)
+                   (string-append config-name " \"" (config-val config) "\"\n")))
+                `(("user" ,mpd-configuration-user)
+                  ("music_directory" ,mpd-configuration-music-dir)
+                  ("playlist_directory" ,mpd-configuration-playlist-dir)
+                  ("db_file" ,mpd-configuration-db-file)
+                  ("state_file" ,mpd-configuration-state-file)
+                  ("sticker_file" ,mpd-configuration-sticker-file)
+                  ("port" ,mpd-configuration-port)
+                  ("bind_to_address" ,mpd-configuration-address))))))
 
 (define (mpd-file-name config file)
   "Return a path in /var/run/mpd/ that is writable
diff --git a/guix/channels.scm b/guix/channels.scm
index 2c28dccbcb..826ee729ad 100644
--- a/guix/channels.scm
+++ b/guix/channels.scm
@@ -505,7 +505,7 @@ modules in the old ~/.config/guix/latest style."
                    ;; In the "old style", %SELF-BUILD-FILE would simply return a
                    ;; derivation that builds modules.  We have to infer what the
                    ;; dependencies of these modules were.
-                   (list guile-json guile-git guile-bytestructures
+                   (list guile-json-3 guile-git guile-bytestructures
                          (ssh -> guile-ssh) (tls -> gnutls)))))
 
 (define (old-style-guix? drv)
diff --git a/guix/derivations.scm b/guix/derivations.scm
index e1073ea39b..bde937044a 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -622,7 +622,7 @@ that form."
      (display ")" port))))
 
 (define derivation->bytevector
-  (mlambda (drv)
+  (lambda (drv)
     "Return the external representation of DRV as a UTF-8-encoded string."
     (with-fluids ((%default-port-encoding "UTF-8"))
       (call-with-values open-bytevector-output-port
@@ -919,7 +919,6 @@ derivation.  It is kept as-is, uninterpreted, in the derivation."
 long-running processes that know what they're doing.  Use with care!"
   ;; Typically this is meant to be used by Cuirass and Hydra, which can clear
   ;; caches when they start evaluating packages for another architecture.
-  (invalidate-memoization! derivation->bytevector)
   (invalidate-memoization! derivation-base16-hash)
 
   ;; FIXME: Comment out to work around <https://bugs.gnu.org/36487>.
@@ -1207,6 +1206,26 @@ they can refer to each other."
                                   #:guile-for-build guile
                                   #:local-build? #t)))
 
+(define %module-cache
+  ;; Map a list of modules to its 'imported+compiled-modules' result.
+  (make-weak-value-hash-table))
+
+(define* (imported+compiled-modules store modules #:key
+                                    (system (%current-system))
+                                    (guile (%guile-for-build)))
+  "Return a pair containing the derivation to import MODULES and that where
+MODULES are compiled."
+  (define key
+    (list modules (derivation-file-name guile) system))
+
+  (or (hash-ref %module-cache key)
+      (let ((result (cons (%imported-modules store modules
+                                             #:system system #:guile guile)
+                          (%compiled-modules store modules
+                                             #:system system #:guile guile))))
+        (hash-set! %module-cache key result)
+        result)))
+
 (define* (build-expression->derivation store name exp ;deprecated
                                        #:key
                                        (system (%current-system))
@@ -1330,16 +1349,15 @@ and PROPERTIES."
                                       ;; fixed-output.
                                       (filter-map source-path inputs)))
 
-         (mod-drv  (and (pair? modules)
-                        (%imported-modules store modules
-                                           #:guile guile-drv
-                                           #:system system)))
+         (mod+go-drv  (if (pair? modules)
+                          (imported+compiled-modules store modules
+                                                     #:guile guile-drv
+                                                     #:system system)
+                          '(#f . #f)))
+         (mod-drv  (car mod+go-drv))
+         (go-drv   (cdr mod+go-drv))
          (mod-dir  (and mod-drv
                         (derivation->output-path mod-drv)))
-         (go-drv   (and (pair? modules)
-                        (%compiled-modules store modules
-                                           #:guile guile-drv
-                                           #:system system)))
          (go-dir   (and go-drv
                         (derivation->output-path go-drv))))
     (derivation store name guile
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 7323277511..b640c079e4 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -654,6 +654,31 @@ names and file names suitable for the #:allowed-references argument to
   (load-path           lowered-gexp-load-path)    ;list of store items
   (load-compiled-path  lowered-gexp-load-compiled-path)) ;list of store items
 
+(define* (imported+compiled-modules modules system
+                                    #:key (extensions '())
+                                    deprecation-warnings guile
+                                    (module-path %load-path))
+  "Return a pair where the first element is the imported MODULES and the
+second element is the derivation to compile them."
+  (mcached equal?
+           (mlet %store-monad ((modules  (if (pair? modules)
+                                             (imported-modules modules
+                                                               #:system system
+                                                               #:module-path module-path)
+                                             (return #f)))
+                               (compiled (if (pair? modules)
+                                             (compiled-modules modules
+                                                               #:system system
+                                                               #:module-path module-path
+                                                               #:extensions extensions
+                                                               #:guile guile
+                                                               #:deprecation-warnings
+                                                               deprecation-warnings)
+                                             (return #f))))
+             (return (cons modules compiled)))
+           modules
+           system extensions guile deprecation-warnings module-path))
+
 (define* (lower-gexp exp
                      #:key
                      (module-path %load-path)
@@ -719,20 +744,15 @@ derivations--e.g., code evaluated for its side effects."
                                        (lambda (obj)
                                          (lower-object obj system))
                                        extensions))
-                       (modules  (if (pair? %modules)
-                                     (imported-modules %modules
-                                                       #:system system
-                                                       #:module-path module-path)
-                                     (return #f)))
-                       (compiled (if (pair? %modules)
-                                     (compiled-modules %modules
-                                                       #:system system
-                                                       #:module-path module-path
-                                                       #:extensions extensions
-                                                       #:guile guile
-                                                       #:deprecation-warnings
-                                                       deprecation-warnings)
-                                     (return #f))))
+                       (modules+compiled (imported+compiled-modules
+                                          %modules system
+                                          #:extensions extensions
+                                          #:deprecation-warnings
+                                          deprecation-warnings
+                                          #:guile guile
+                                          #:module-path module-path))
+                       (modules ->  (car modules+compiled))
+                       (compiled -> (cdr modules+compiled)))
     (define load-path
       (search-path modules exts
                    (string-append "/share/guile/site/" effective-version)))
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 7876019eac..80d070652b 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -714,6 +714,9 @@ transformations specified in OPTS (resulting from '--url', '--commit', or
   (define default-file
     (string-append (config-directory) "/channels.scm"))
 
+  (define global-file
+    (string-append %sysconfdir "/guix/channels.scm"))
+
   (define (load-channels file)
     (let ((result (load* file (make-user-module '((guix channels))))))
       (if (and (list? result) (every channel? result))
@@ -725,6 +728,8 @@ transformations specified in OPTS (resulting from '--url', '--commit', or
            (load-channels file))
           ((file-exists? default-file)
            (load-channels default-file))
+          ((file-exists? global-file)
+           (load-channels global-file))
           (else
            %default-channels)))
 
diff --git a/guix/store.scm b/guix/store.scm
index 382aad29d9..a276554a52 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1612,10 +1612,11 @@ This makes sense only when the daemon was started with '--cache-failures'."
 ;; from %STATE-MONAD.
 (template-directory instantiations %store-monad)
 
-(define* (cache-object-mapping object keys result)
+(define* (cache-object-mapping object keys result
+                               #:key (vhash-cons vhash-consq))
   "Augment the store's object cache with a mapping from OBJECT/KEYS to RESULT.
 KEYS is a list of additional keys to match against, for instance a (SYSTEM
-TARGET) tuple.
+TARGET) tuple.  Use VHASH-CONS to insert OBJECT into the cache.
 
 OBJECT is typically a high-level object such as a <package> or an <origin>,
 and RESULT is typically its derivation."
@@ -1623,8 +1624,8 @@ and RESULT is typically its derivation."
     (values result
             (store-connection
              (inherit store)
-             (object-cache (vhash-consq object (cons result keys)
-                                        (store-connection-object-cache store)))))))
+             (object-cache (vhash-cons object (cons result keys)
+                                       (store-connection-object-cache store)))))))
 
 (define record-cache-lookup!
   (if (profiled? "object-cache")
@@ -1653,11 +1654,12 @@ and RESULT is typically its derivation."
       (lambda (x y)
         #t)))
 
-(define* (lookup-cached-object object #:optional (keys '()))
+(define* (lookup-cached-object object #:optional (keys '())
+                               #:key (vhash-fold* vhash-foldq*))
   "Return the cached object in the store connection corresponding to OBJECT
-and KEYS.  KEYS is a list of additional keys to match against, and which are
-compared with 'equal?'.  Return #f on failure and the cached result
-otherwise."
+and KEYS; use VHASH-FOLD* to look for OBJECT in the cache.  KEYS is a list of
+additional keys to match against, and which are compared with 'equal?'.
+Return #f on failure and the cached result otherwise."
   (lambda (store)
     (let* ((cache (store-connection-object-cache store))
 
@@ -1665,33 +1667,50 @@ otherwise."
            ;; the whole vlist chain and significantly reduces the number of
            ;; 'hashq' calls.
            (value (let/ec return
-                    (vhash-foldq* (lambda (item result)
-                                    (match item
-                                      ((value . keys*)
-                                       (if (equal? keys keys*)
-                                           (return value)
-                                           result))))
-                                  #f object
-                                  cache))))
+                    (vhash-fold* (lambda (item result)
+                                   (match item
+                                     ((value . keys*)
+                                      (if (equal? keys keys*)
+                                          (return value)
+                                          result))))
+                                 #f object
+                                 cache))))
       (record-cache-lookup! value cache)
       (values value store))))
 
-(define* (%mcached mthunk object #:optional (keys '()))
+(define* (%mcached mthunk object #:optional (keys '())
+                   #:key
+                   (vhash-cons vhash-consq)
+                   (vhash-fold* vhash-foldq*))
   "Bind the monadic value returned by MTHUNK, which supposedly corresponds to
-OBJECT/KEYS, or return its cached value."
-  (mlet %store-monad ((cached (lookup-cached-object object keys)))
+OBJECT/KEYS, or return its cached value.  Use VHASH-CONS to insert OBJECT into
+the cache, and VHASH-FOLD* to look it up."
+  (mlet %store-monad ((cached (lookup-cached-object object keys
+                                                    #:vhash-fold* vhash-fold*)))
     (if cached
         (return cached)
         (>>= (mthunk)
              (lambda (result)
-               (cache-object-mapping object keys result))))))
+               (cache-object-mapping object keys result
+                                     #:vhash-cons vhash-cons))))))
 
-(define-syntax-rule (mcached mvalue object keys ...)
-  "Run MVALUE, which corresponds to OBJECT/KEYS, and cache it; or return the
+(define-syntax mcached
+  (syntax-rules (eq? equal?)
+    "Run MVALUE, which corresponds to OBJECT/KEYS, and cache it; or return the
 value associated with OBJECT/KEYS in the store's object cache if there is
 one."
-  (%mcached (lambda () mvalue)
-            object (list keys ...)))
+    ((_ eq? mvalue object keys ...)
+     (%mcached (lambda () mvalue)
+               object (list keys ...)
+               #:vhash-cons vhash-consq
+               #:vhash-fold* vhash-foldq*))
+    ((_ equal? mvalue object keys ...)
+     (%mcached (lambda () mvalue)
+               object (list keys ...)
+               #:vhash-cons vhash-cons
+               #:vhash-fold* vhash-fold*))
+    ((_ mvalue object keys ...)
+     (mcached eq? mvalue object keys ...))))
 
 (define (preserve-documentation original proc)
   "Return PROC with documentation taken from ORIGINAL."