summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am16
-rw-r--r--build-aux/build-self.scm460
-rw-r--r--build-aux/compile-as-derivation.scm53
-rw-r--r--build-aux/cuirass/gnu-system.scm28
-rw-r--r--build-aux/cuirass/guix-modular.scm6
-rw-r--r--build-aux/cuirass/hydra-to-cuirass.scm47
-rw-r--r--build-aux/hydra/evaluate.scm11
-rw-r--r--build-aux/hydra/gnu-system.scm11
-rw-r--r--build-aux/hydra/guix-modular.scm54
-rw-r--r--build-aux/hydra/guix.scm4
-rw-r--r--doc/guix.texi22
-rw-r--r--gnu/bootloader.scm3
-rw-r--r--gnu/local.mk5
-rw-r--r--gnu/packages.scm27
-rw-r--r--gnu/packages/backup.scm15
-rw-r--r--gnu/packages/bioconductor.scm32
-rw-r--r--gnu/packages/bioinformatics.scm114
-rw-r--r--gnu/packages/build-tools.scm24
-rw-r--r--gnu/packages/check.scm29
-rw-r--r--gnu/packages/ci.scm6
-rw-r--r--gnu/packages/cobol.scm2
-rw-r--r--gnu/packages/cran.scm70
-rw-r--r--gnu/packages/crypto.scm52
-rw-r--r--gnu/packages/databases.scm23
-rw-r--r--gnu/packages/debian.scm5
-rw-r--r--gnu/packages/dictionaries.scm17
-rw-r--r--gnu/packages/django.scm23
-rw-r--r--gnu/packages/emacs.scm159
-rw-r--r--gnu/packages/emulators.scm6
-rw-r--r--gnu/packages/engineering.scm94
-rw-r--r--gnu/packages/fontutils.scm4
-rw-r--r--gnu/packages/freedesktop.scm4
-rw-r--r--gnu/packages/game-development.scm4
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/gnunet.scm9
-rw-r--r--gnu/packages/gnupg.scm11
-rw-r--r--gnu/packages/gps.scm4
-rw-r--r--gnu/packages/graphviz.scm35
-rw-r--r--gnu/packages/gstreamer.scm5
-rw-r--r--gnu/packages/guile.scm9
-rw-r--r--gnu/packages/haskell-check.scm31
-rw-r--r--gnu/packages/haskell-crypto.scm130
-rw-r--r--gnu/packages/haskell-web.scm278
-rw-r--r--gnu/packages/haskell.scm615
-rw-r--r--gnu/packages/image.scm6
-rw-r--r--gnu/packages/java.scm329
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/ldc.scm8
-rw-r--r--gnu/packages/libcanberra.scm4
-rw-r--r--gnu/packages/license.scm5
-rw-r--r--gnu/packages/linux.scm40
-rw-r--r--gnu/packages/llvm.scm107
-rw-r--r--gnu/packages/mail.scm12
-rw-r--r--gnu/packages/mate.scm4
-rw-r--r--gnu/packages/maths.scm42
-rw-r--r--gnu/packages/messaging.scm15
-rw-r--r--gnu/packages/mp3.scm17
-rw-r--r--gnu/packages/music.scm90
-rw-r--r--gnu/packages/networking.scm4
-rw-r--r--gnu/packages/ocaml.scm6
-rw-r--r--gnu/packages/openstack.scm4
-rw-r--r--gnu/packages/package-management.scm27
-rw-r--r--gnu/packages/password-utils.scm49
-rw-r--r--gnu/packages/patches/4store-unset-preprocessor-directive.patch16
-rw-r--r--gnu/packages/patches/clang-3.5-libc-search-path.patch (renamed from gnu/packages/patches/clang-libc-search-path.patch)0
-rw-r--r--gnu/packages/patches/clang-6.0-libc-search-path.patch67
-rw-r--r--gnu/packages/patches/delly-use-system-libraries.patch56
-rw-r--r--gnu/packages/patches/libgnomeui-utf8.patch6
-rw-r--r--gnu/packages/patches/racket-fix-xform-issue.patch63
-rw-r--r--gnu/packages/perl.scm351
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/plotutils.scm5
-rw-r--r--gnu/packages/python-crypto.scm10
-rw-r--r--gnu/packages/python.scm71
-rw-r--r--gnu/packages/regex.scm11
-rw-r--r--gnu/packages/ruby.scm8
-rw-r--r--gnu/packages/rust.scm1375
-rw-r--r--gnu/packages/samba.scm4
-rw-r--r--gnu/packages/scheme.scm8
-rw-r--r--gnu/packages/search.scm50
-rw-r--r--gnu/packages/ssh.scm7
-rw-r--r--gnu/packages/statistics.scm28
-rw-r--r--gnu/packages/syncthing.scm14
-rw-r--r--gnu/packages/syndication.scm4
-rw-r--r--gnu/packages/textutils.scm10
-rw-r--r--gnu/packages/tls.scm23
-rw-r--r--gnu/packages/upnp.scm4
-rw-r--r--gnu/packages/version-control.scm82
-rw-r--r--gnu/packages/video.scm38
-rw-r--r--gnu/packages/virtualization.scm10
-rw-r--r--gnu/packages/vpn.scm4
-rw-r--r--gnu/packages/web.scm26
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm4
-rw-r--r--gnu/packages/xdisorg.scm34
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services.scm3
-rw-r--r--gnu/services/certbot.scm22
-rw-r--r--gnu/services/desktop.scm22
-rw-r--r--gnu/system/shadow.scm3
-rw-r--r--guix/build-system/cargo.scm21
-rw-r--r--guix/build/union.scm40
-rw-r--r--guix/discovery.scm31
-rw-r--r--guix/gexp.scm15
-rw-r--r--guix/git.scm87
-rw-r--r--guix/modules.scm7
-rw-r--r--guix/scripts/package.scm17
-rw-r--r--guix/self.scm599
-rw-r--r--guix/upstream.scm5
-rw-r--r--nix/libstore/globals.cc44
-rw-r--r--nix/libstore/globals.hh4
-rw-r--r--nix/libstore/local-store.cc159
-rw-r--r--nix/libstore/local-store.hh7
-rw-r--r--nix/libstore/misc.cc114
-rw-r--r--nix/libstore/misc.hh7
-rw-r--r--nix/libstore/store-api.cc31
-rw-r--r--nix/libstore/store-api.hh17
-rw-r--r--po/guix/LINGUAS1
-rw-r--r--po/guix/es.po2994
-rw-r--r--tests/guix-package.sh8
-rw-r--r--tests/syscalls.scm10
-rw-r--r--tests/union.scm42
122 files changed, 7541 insertions, 2506 deletions
diff --git a/Makefile.am b/Makefile.am
index e647f270d3..517322b7ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -81,6 +81,7 @@ MODULES =					\
   guix/derivations.scm				\
   guix/grafts.scm				\
   guix/gnu-maintenance.scm			\
+  guix/self.scm					\
   guix/upstream.scm				\
   guix/licenses.scm				\
   guix/glob.scm					\
@@ -459,7 +460,7 @@ EXTRA_DIST =						\
   TODO							\
   CODE-OF-CONDUCT					\
   .dir-locals.el					\
-  bin/guix.in						\
+  scripts/guix.in					\
   etc/guix-install.sh					\
   build-aux/build-self.scm				\
   build-aux/compile-all.scm				\
@@ -467,8 +468,12 @@ EXTRA_DIST =						\
   build-aux/hydra/gnu-system.scm			\
   build-aux/hydra/guix.scm				\
   build-aux/hydra/guix-modular.scm			\
+  build-aux/cuirass/gnu-system.scm			\
+  build-aux/cuirass/guix-modular.scm			\
+  build-aux/cuirass/hydra-to-cuirass.scm		\
   build-aux/check-available-binaries.scm		\
   build-aux/check-final-inputs-self-contained.scm	\
+  build-aux/compile-as-derivation.scm			\
   build-aux/generate-authors.scm			\
   build-aux/test-driver.scm				\
   build-aux/update-guix-package.scm			\
@@ -534,6 +539,13 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
 install-data-hook: set-bootstrap-executable-permissions
 	touch "$(DESTDIR)$(guileobjectdir)/guix/config.go"
 
+# Assuming Guix is already installed and the daemon is up and running, this
+# rule builds from $(srcdir), creating and building derivations.
+as-derivation:
+	$(AM_V_at)echo "Building Guix in Guix..." ;		\
+	$(GUILE) --no-auto-compile				\
+	  "$(top_srcdir)/build-aux/compile-as-derivation.scm"	\
+	  "$(abs_top_srcdir)"
 
 SUBDIRS = po/guix po/packages
 BUILT_SOURCES =
@@ -762,7 +774,7 @@ cuirass-jobs.scm: $(GOBJECTS)
 .PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version
 .PHONY: assert-no-store-file-names assert-binaries-available
 .PHONY: assert-final-inputs-self-contained
-.PHONY: clean-go make-go
+.PHONY: clean-go make-go as-derivation
 .PHONY: update-guix-package update-NEWS release
 
 ## -------------- ##
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm
index 4c85c09df6..bccb7a959e 100644
--- a/build-aux/build-self.scm
+++ b/build-aux/build-self.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,10 +19,14 @@
 (define-module (build-self)
   #:use-module (gnu)
   #:use-module (guix)
+  #:use-module (guix ui)
   #:use-module (guix config)
+  #:use-module (guix modules)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-19)
+  #:use-module (rnrs io ports)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 popen)
   #:export (build))
 
 ;;; Commentary:
@@ -40,242 +44,256 @@
 ;;; Code:
 
 
-;; The dependencies.  Don't refer explicitly to the variables because they
-;; could be renamed or shuffled around in modules over time.  Conversely,
-;; 'find-best-packages-by-name' is expected to always have the same semantics.
-
-(define guix
-  (first (find-best-packages-by-name "guix" #f)))
-
-(define libgcrypt
-  (first (find-best-packages-by-name "libgcrypt" #f)))
-
-(define zlib
-  (first (find-best-packages-by-name "zlib" #f)))
-
-(define gzip
-  (first (find-best-packages-by-name "gzip" #f)))
-
-(define bzip2
-  (first (find-best-packages-by-name "bzip2" #f)))
-
-(define xz
-  (first (find-best-packages-by-name "xz" #f)))
-
-(define (false-if-wrong-guile package)
-  "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g.,
-2.0 instead of 2.2), otherwise return PACKAGE."
-  (let ((guile (any (match-lambda
-                      ((label (? package? dep) _ ...)
-                       (and (string=? (package-name dep) "guile")
-                            dep)))
-                    (package-direct-inputs package))))
-    (and (or (not guile)
-             (string-prefix? (effective-version)
-                             (package-version guile)))
-         package)))
-
-(define (package-for-current-guile . names)
-  "Return the package with one of the given NAMES that depends on the current
-Guile major version (2.0 or 2.2), or #f if none of the packages matches."
-  (let loop ((names names))
-    (match names
-      (()
-       #f)
-      ((name rest ...)
-       (match (find-best-packages-by-name name #f)
-         (()
-          (loop rest))
-         ((first _ ...)
-          (or (false-if-wrong-guile first)
-              (loop rest))))))))
-
-(define guile-json
-  (package-for-current-guile "guile-json"
-                             "guile2.2-json"
-                             "guile2.0-json"))
-
-(define guile-ssh
-  (package-for-current-guile "guile-ssh"
-                             "guile2.2-ssh"
-                             "guile2.0-ssh"))
-
-(define guile-git
-  (package-for-current-guile "guile-git"
-                             "guile2.0-git"))
-
-(define guile-bytestructures
-  (package-for-current-guile "guile-bytestructures"
-                             "guile2.0-bytestructures"))
-
-;; The actual build procedure.
+;;;
+;;; Generating (guix config).
+;;;
+;;; This is copied from (guix self) because we cannot assume (guix self) is
+;;; available at this point.
+;;;
+
+(define %dependency-variables
+  ;; (guix config) variables corresponding to dependencies.
+  '(%libgcrypt %libz %xz %gzip %bzip2 %nix-instantiate))
+
+(define %persona-variables
+  ;; (guix config) variables that define Guix's persona.
+  '(%guix-package-name
+    %guix-version
+    %guix-bug-report-address
+    %guix-home-page-url))
+
+(define %config-variables
+  ;; (guix config) variables corresponding to Guix configuration (storedir,
+  ;; localstatedir, etc.)
+  (sort (filter pair?
+                (module-map (lambda (name var)
+                              (and (not (memq name %dependency-variables))
+                                   (not (memq name %persona-variables))
+                                   (cons name (variable-ref var))))
+                            (resolve-interface '(guix config))))
+        (lambda (name+value1 name+value2)
+          (string<? (symbol->string (car name+value1))
+                    (symbol->string (car name+value2))))))
+
+(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2
+                          (package-name "GNU Guix")
+                          (package-version "0")
+                          (bug-report-address "bug-guix@gnu.org")
+                          (home-page-url "https://gnu.org/s/guix"))
+
+  ;; Hack so that Geiser is not confused.
+  (define defmod 'define-module)
+
+  (scheme-file "config.scm"
+               #~(begin
+                   (#$defmod (guix config)
+                     #:export (%guix-package-name
+                               %guix-version
+                               %guix-bug-report-address
+                               %guix-home-page-url
+                               %libgcrypt
+                               %libz
+                               %gzip
+                               %bzip2
+                               %xz
+                               %nix-instantiate))
+
+                   ;; XXX: Work around <http://bugs.gnu.org/15602>.
+                   (eval-when (expand load eval)
+                     #$@(map (match-lambda
+                               ((name . value)
+                                #~(define-public #$name #$value)))
+                             %config-variables)
+
+                     (define %guix-package-name #$package-name)
+                     (define %guix-version #$package-version)
+                     (define %guix-bug-report-address #$bug-report-address)
+                     (define %guix-home-page-url #$home-page-url)
+
+                     (define %gzip
+                       #+(and gzip (file-append gzip "/bin/gzip")))
+                     (define %bzip2
+                       #+(and bzip2 (file-append bzip2 "/bin/bzip2")))
+                     (define %xz
+                       #+(and xz (file-append xz "/bin/xz")))
+
+                     (define %libgcrypt
+                       #+(and libgcrypt
+                              (file-append libgcrypt "/lib/libgcrypt")))
+                     (define %libz
+                       #+(and zlib
+                              (file-append zlib "/lib/libz")))
+
+                     (define %nix-instantiate     ;for (guix import snix)
+                       "nix-instantiate")))))
 
-(define (top-source-directory)
-  "Return the name of the top-level directory of this source tree."
-  (and=> (assoc-ref (current-source-location) 'filename)
-         (lambda (file)
-           (string-append (dirname file) "/.."))))
+
+;;;
+;;; 'gexp->script'.
+;;;
+;;; This is our own variant of 'gexp->script' with an extra #:module-path
+;;; parameter, which was unavailable in (guix gexp) until commit
+;;; 1ae16033f34cebe802023922436883867010850f (March 2018.)
+;;;
 
+(define (load-path-expression modules path)
+  "Return as a monadic value a gexp that sets '%load-path' and
+'%load-compiled-path' to point to MODULES, a list of module names.  MODULES
+are searched for in PATH."
+  (mlet %store-monad ((modules  (imported-modules modules
+                                                  #:module-path path))
+                      (compiled (compiled-modules modules
+                                                  #:module-path path)))
+    (return (gexp (eval-when (expand load eval)
+                    (set! %load-path
+                      (cons (ungexp modules) %load-path))
+                    (set! %load-compiled-path
+                      (cons (ungexp compiled)
+                            %load-compiled-path)))))))
+
+(define* (gexp->script name exp
+                       #:key (guile (default-guile))
+                       (module-path %load-path))
+  "Return an executable script NAME that runs EXP using GUILE, with EXP's
+imported modules in its search path."
+  (mlet %store-monad ((set-load-path
+                       (load-path-expression (gexp-modules exp)
+                                             module-path)))
+    (gexp->derivation name
+                      (gexp
+                       (call-with-output-file (ungexp output)
+                         (lambda (port)
+                           ;; Note: that makes a long shebang.  When the store
+                           ;; is /gnu/store, that fits within the 128-byte
+                           ;; limit imposed by Linux, but that may go beyond
+                           ;; when running tests.
+                           (format port
+                                   "#!~a/bin/guile --no-auto-compile~%!#~%"
+                                   (ungexp guile))
+
+                           (write '(ungexp set-load-path) port)
+                           (write '(ungexp exp) port)
+                           (chmod port #o555))))
+                      #:module-path module-path)))
 
+
 (define (date-version-string)
   "Return the current date and hour in UTC timezone, for use as a poor
 person's version identifier."
   ;; XXX: Replace with a Git commit id.
   (date->string (current-date 0) "~Y~m~d.~H"))
 
-(define (matching-guile-2.2)
-  "Return a Guile 2.2 with the same version as the current one or immediately
-older than then current one.  This is so that we do not build ABI-incompatible
-objects.  See <https://bugs.gnu.org/29570>."
-  (let loop ((packages (find-packages-by-name "guile" "2.2"))
-             (best     #f))
-    (match packages
-      (()
-       best)
-      ((head tail ...)
-       (if (string=? (package-version head) (version))
-           head
-           (if best
-               (if (version>? (package-version head) (version))
-                   (loop tail best)
-                   (loop tail head))
-               (loop tail head)))))))
-
-(define (guile-for-build)
-  "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently
-running Guile."
-  (package->derivation (cond-expand
-                         (guile-2.2
-                          (canonical-package (matching-guile-2.2)))
-                         (else
-                          (canonical-package
-                           (specification->package "guile@2.0"))))))
+(define* (build-program source version
+                        #:optional (guile-version (effective-version)))
+  "Return a program that computes the derivation to build Guix from SOURCE."
+  (define select?
+    ;; Select every module but (guix config) and non-Guix modules.
+    (match-lambda
+      (('guix 'config) #f)
+      (('guix _ ...)   #t)
+      (('gnu _ ...)    #t)
+      (_               #f)))
+
+  (with-imported-modules `(((guix config)
+                            => ,(make-config.scm
+                                 #:libgcrypt
+                                 (specification->package "libgcrypt")))
+                           ,@(source-module-closure `((guix store)
+                                                      (guix self)
+                                                      (guix derivations)
+                                                      (gnu packages bootstrap))
+                                                    (list source)
+                                                    #:select? select?))
+    (gexp->script "compute-guix-derivation"
+                  #~(begin
+                      (use-modules (ice-9 match))
+
+                      (eval-when (expand load eval)
+                        ;; Don't augment '%load-path'.
+                        (unsetenv "GUIX_PACKAGE_PATH")
+
+                        ;; (gnu packages …) modules are going to be looked up
+                        ;; under SOURCE.  (guix config) is looked up in FRONT.
+                        (match %load-path
+                          ((#$source _ ...)
+                           #t)                    ;already done
+                          ((front _ ...)
+                           (set! %load-path (list #$source front))))
+
+                        ;; Only load our own modules or those of Guile.
+                        (match %load-compiled-path
+                          ((front _ ... sys1 sys2)
+                           (set! %load-compiled-path
+                             (list front sys1 sys2)))))
+
+                      (use-modules (guix store)
+                                   (guix self)
+                                   (guix derivations)
+                                   (srfi srfi-1))
+
+                      (define (spin system)
+                        (define spin
+                          (circular-list "-" "\\" "|" "/" "-" "\\" "|" "/"))
+
+                        (format (current-error-port)
+                                "Computing Guix derivation for '~a'...  "
+                                system)
+                        (let loop ((spin spin))
+                          (display (string-append "\b" (car spin))
+                                   (current-error-port))
+                          (force-output (current-error-port))
+                          (sleep 1)
+                          (loop (cdr spin))))
+
+                      (match (command-line)
+                        ((_ _ system)
+                         (with-store store
+                           (call-with-new-thread
+                            (lambda ()
+                              (spin system)))
+
+                           (display
+                            (derivation-file-name
+                             (run-with-store store
+                               (guix-derivation #$source #$version
+                                                #$guile-version)
+                               #:system system)))))))
+                  #:module-path (list source))))
 
 ;; The procedure below is our return value.
 (define* (build source
-                #:key verbose? (version (date-version-string))
+                #:key verbose? (version (date-version-string)) system
+                (guile-version (match ((@ (guile) version))
+                                 ("2.2.2" "2.2.2")
+                                 (_       (effective-version))))
                 #:allow-other-keys
                 #:rest rest)
   "Return a derivation that unpacks SOURCE into STORE and compiles Scheme
 files."
-  ;; The '%xxxdir' variables were added to (guix config) in July 2016 so we
-  ;; cannot assume that they are defined.  Try to guess their value when
-  ;; they're undefined (XXX: we get an incorrect guess when environment
-  ;; variables such as 'NIX_STATE_DIR' are defined!).
-  (define storedir
-    (if (defined? '%storedir) %storedir %store-directory))
-  (define localstatedir
-    (if (defined? '%localstatedir) %localstatedir (dirname %state-directory)))
-  (define sysconfdir
-    (if (defined? '%sysconfdir) %sysconfdir (dirname %config-directory)))
-
-  (define builder
-    #~(begin
-        (use-modules (guix build pull))
-
-        (letrec-syntax ((maybe-load-path
-                         (syntax-rules ()
-                           ((_ item rest ...)
-                            (let ((tail (maybe-load-path rest ...)))
-                              (if (string? item)
-                                  (cons (string-append item
-                                                       "/share/guile/site/"
-                                                       #$(effective-version))
-                                        tail)
-                                  tail)))
-                           ((_)
-                            '()))))
-          (set! %load-path
-                (append
-                 (maybe-load-path #$guile-json #$guile-ssh
-                                  #$guile-git #$guile-bytestructures)
-                 %load-path)))
-
-        (letrec-syntax ((maybe-load-compiled-path
-                         (syntax-rules ()
-                           ((_ item rest ...)
-                            (let ((tail (maybe-load-compiled-path rest ...)))
-                              (if (string? item)
-                                  (cons (string-append item
-                                                       "/lib/guile/"
-                                                       #$(effective-version)
-                                                       "/site-ccache")
-                                        tail)
-                                  tail)))
-                           ((_)
-                            '()))))
-          (set! %load-compiled-path
-                (append
-                 (maybe-load-compiled-path #$guile-json #$guile-ssh
-                                           #$guile-git #$guile-bytestructures)
-                 %load-compiled-path)))
-
-        ;; XXX: The 'guile-ssh' package prior to Guix commit 92b7258 was
-        ;; broken: libguile-ssh could not be found.  Work around that.
-        ;; FIXME: We want Guile-SSH 0.10.2 or later anyway.
-        #$(if (string-prefix? "0.9." (package-version guile-ssh))
-              #~(setenv "LTDL_LIBRARY_PATH" (string-append #$guile-ssh "/lib"))
-              #t)
-
-        (build-guix #$output #$source
-
-                    #:system #$%system
-                    #:storedir #$storedir
-                    #:localstatedir #$localstatedir
-                    #:sysconfdir #$sysconfdir
-                    #:sbindir (string-append #$guix "/sbin")
-
-                    #:package-name #$%guix-package-name
-                    #:package-version #$version
-                    #:bug-report-address #$%guix-bug-report-address
-                    #:home-page-url #$%guix-home-page-url
-
-                    #:libgcrypt #$libgcrypt
-                    #:zlib #$zlib
-                    #:gzip #$gzip
-                    #:bzip2 #$bzip2
-                    #:xz #$xz
-
-                    ;; XXX: This is not perfect, enabling VERBOSE? means
-                    ;; building a different derivation.
-                    #:debug-port (if #$verbose?
-                                     (current-error-port)
-                                     (%make-void-port "w")))))
-
-  (unless guile-git
-    ;; XXX: Guix before February 2017 lacks a 'guile-git' package altogether.
-    ;; If we try to upgrade anyway, the logic in (guix scripts pull) will not
-    ;; build (guix git), which will leave us with an unusable 'guix pull'.  To
-    ;; avoid that, fail early.
-    (format (current-error-port)
-            "\
-Your installation is too old and lacks a '~a' package.
-Please upgrade to an intermediate version first, for instance with:
-
-  guix pull --url=https://git.savannah.gnu.org/cgit/guix.git/snapshot/v0.13.0.tar.gz
-\n"
-            (match (effective-version)
-              ("2.0" "guile2.0-git")
-              (_     "guile-git")))
-    (exit 1))
-
-  (mlet %store-monad ((guile (guile-for-build)))
-    (gexp->derivation "guix-latest" builder
-                      #:modules '((guix build pull)
-                                  (guix build utils)
-                                  (guix build compile)
-
-                                  ;; Closure of (guix modules).
-                                  (guix modules)
-                                  (guix memoization)
-                                  (guix profiling)
-                                  (guix sets))
-
-                      ;; Arrange so that our own (guix build …) modules are
-                      ;; used.
-                      #:module-path (list (top-source-directory))
-
-                      #:guile-for-build guile)))
+  ;; Build the build program and then use it as a trampoline to build from
+  ;; SOURCE.
+  (mlet %store-monad ((build  (build-program source version guile-version))
+                      (system (if system (return system) (current-system))))
+    (mbegin %store-monad
+      (show-what-to-build* (list build))
+      (built-derivations (list build))
+      (let* ((pipe   (begin
+                       (setenv "GUILE_WARN_DEPRECATED" "no") ;be quiet and drive
+                       (open-pipe* OPEN_READ
+                                   (derivation->output-path build)
+                                   source system)))
+             (str    (get-string-all pipe))
+             (status (close-pipe pipe)))
+        (match str
+          ((? eof-object?)
+           (error "build program failed" (list build status)))
+          ((? derivation-path? drv)
+           (mbegin %store-monad
+             (return (newline (current-output-port)))
+             ((store-lift add-temp-root) drv)
+             (return (read-derivation-from-file drv))))
+          ((? string? str)
+           (error "invalid build result" (list build str))))))))
 
 ;; This file is loaded by 'guix pull'; return it the build procedure.
 build
diff --git a/build-aux/compile-as-derivation.scm b/build-aux/compile-as-derivation.scm
new file mode 100644
index 0000000000..afb134a92a
--- /dev/null
+++ b/build-aux/compile-as-derivation.scm
@@ -0,0 +1,53 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+;; Build Guix using Guix.
+
+(use-modules (srfi srfi-26))
+
+;; Add ~/.config/guix/latest to the search path.
+(add-to-load-path
+ (and=> (or (getenv "XDG_CONFIG_HOME")
+            (and=> (getenv "HOME")
+                   (cut string-append <> "/.config")))
+        (cut string-append <> "/guix/latest")))
+
+(use-modules (guix) (guix ui)
+             (guix git-download)
+             (ice-9 match))
+
+(match (command-line)
+  ((program source)
+   (with-error-handling
+     (with-store store
+       (let* ((script (string-append source "/build-aux/build-self.scm"))
+              (build  (primitive-load script))
+              (git?   (git-predicate source)))
+         (run-with-store store
+           ;; TODO: Extract #:version and #:commit using Guile-Git.
+           (mlet* %store-monad ((source (interned-file source "guix-source"
+                                                       #:select? git?
+                                                       #:recursive? #t))
+                                (drv    (build source)))
+             (mbegin %store-monad
+               (show-what-to-build* (list drv))
+               (built-derivations (list drv))
+               (with-monad %store-monad
+                 (display (derivation->output-path drv))
+                 (newline)
+                 (return drv))))))))))
diff --git a/build-aux/cuirass/gnu-system.scm b/build-aux/cuirass/gnu-system.scm
index f545ba03bc..0eb834cfba 100644
--- a/build-aux/cuirass/gnu-system.scm
+++ b/build-aux/cuirass/gnu-system.scm
@@ -21,29 +21,5 @@
 ;;; tool.
 ;;;
 
-(include-from-path "build-aux/hydra/gnu-system.scm")
-
-(use-modules ((guix licenses)
-              #:select (license? license-name license-uri license-comment)))
-
-(define (cuirass-jobs store arguments)
-  "Return Cuirass jobs."
-  (map hydra-job->cuirass-job (hydra-jobs store arguments)))
-
-(define (hydra-job->cuirass-job hydra-job)
-  (let ((name (car hydra-job))
-        (job ((cdr hydra-job))))
-    (lambda _ (acons #:job-name (symbol->string name)
-                     (map symbol-alist-entry->keyword-alist-entry job)))))
-
-(define (symbol-alist-entry->keyword-alist-entry entry)
-  (cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))
-
-(define (entry->sexp-entry o)
-  (match o
-    ((? license?) `((name . (license-name o))
-                    (uri . ,(license-uri o))
-                    (comment . ,(license-comment o))))
-    ((lst ...)
-     (map entry->sexp-entry lst))
-    (_ o)))
+(include "../hydra/gnu-system.scm")
+(include "hydra-to-cuirass.scm")
diff --git a/build-aux/cuirass/guix-modular.scm b/build-aux/cuirass/guix-modular.scm
new file mode 100644
index 0000000000..cbbdbf1133
--- /dev/null
+++ b/build-aux/cuirass/guix-modular.scm
@@ -0,0 +1,6 @@
+;;;
+;;; This file defines Cuirass build jobs to build Guix itself.
+;;;
+
+(include "../hydra/guix-modular.scm")
+(include "hydra-to-cuirass.scm")
diff --git a/build-aux/cuirass/hydra-to-cuirass.scm b/build-aux/cuirass/hydra-to-cuirass.scm
new file mode 100644
index 0000000000..75c77ea35a
--- /dev/null
+++ b/build-aux/cuirass/hydra-to-cuirass.scm
@@ -0,0 +1,47 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+;;;
+;;; This file defines the conversion of Hydra build jobs to Cuirass build
+;;; jobs.  It is meant to be included in other files.
+;;;
+
+(use-modules ((guix licenses)
+              #:select (license? license-name license-uri license-comment)))
+
+(define (cuirass-jobs store arguments)
+  "Return Cuirass jobs."
+  (map hydra-job->cuirass-job (hydra-jobs store arguments)))
+
+(define (hydra-job->cuirass-job hydra-job)
+  (let ((name (car hydra-job))
+        (job ((cdr hydra-job))))
+    (lambda _ (acons #:job-name (symbol->string name)
+                     (map symbol-alist-entry->keyword-alist-entry job)))))
+
+(define (symbol-alist-entry->keyword-alist-entry entry)
+  (cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))
+
+(define (entry->sexp-entry o)
+  (match o
+    ((? license?) `((name . (license-name o))
+                    (uri . ,(license-uri o))
+                    (comment . ,(license-comment o))))
+    ((lst ...)
+     (map entry->sexp-entry lst))
+    (_ o)))
diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm
index 8e391f44fd..5793c022ff 100644
--- a/build-aux/hydra/evaluate.scm
+++ b/build-aux/hydra/evaluate.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -79,7 +79,8 @@ Otherwise return THING."
 (match (command-line)
   ((command file cuirass? ...)
    ;; Load FILE, a Scheme file that defines Hydra jobs.
-   (let ((port (current-output-port)))
+   (let ((port (current-output-port))
+         (real-build-things build-things))
      (save-module-excursion
       (lambda ()
         (set-current-module %user-module)
@@ -93,13 +94,15 @@ Otherwise return THING."
 
        ;; Grafts can trigger early builds.  We do not want that to happen
        ;; during evaluation, so use a sledgehammer to catch such problems.
+       ;; An exception, though, is the evaluation of Guix itself, which
+       ;; requires building a "trampoline" program.
        (set! build-things
          (lambda (store . args)
            (format (current-error-port)
-                   "error: trying to build things during evaluation!~%")
+                   "warning: building things during evaluation~%")
            (format (current-error-port)
                    "'build-things' arguments: ~s~%" args)
-           (exit 1)))
+           (apply real-build-things store args)))
 
        ;; Call the entry point of FILE and print the resulting job sexp.
        (pretty-print
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index 8178871747..62eb957f83 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -24,7 +24,7 @@
 
 (use-modules (system base compile))
 
-(eval-when (compile load eval)
+(eval-when (expand load eval)
 
   ;; Pre-load the compiler so we don't end up auto-compiling it.
   (compile #t)
@@ -32,6 +32,15 @@
   ;; Use our very own Guix modules.
   (set! %fresh-auto-compile #t)
 
+  ;; Ignore .go files except for Guile's.  This is because our checkout in the
+  ;; store has mtime set to the epoch, and thus .go files look newer, even
+  ;; though they may not correspond.  Use 'reverse' so that /gnu/store/…-guile
+  ;; comes before /run/current-system/profile.
+  (set! %load-compiled-path
+    (list
+     (dirname (dirname (search-path (reverse %load-compiled-path)
+                                    "ice-9/boot-9.go")))))
+
   (and=> (assoc-ref (current-source-location) 'filename)
          (lambda (file)
            (let ((dir (string-append (dirname file) "/../..")))
diff --git a/build-aux/hydra/guix-modular.scm b/build-aux/hydra/guix-modular.scm
index bdbb2fa8d5..58e09e1831 100644
--- a/build-aux/hydra/guix-modular.scm
+++ b/build-aux/hydra/guix-modular.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,35 +21,14 @@
 ;;; Guix as 'guix pull', which is defined in (guix self).
 ;;;
 
-;; Attempt to use our very own Guix modules.
-(eval-when (compile load eval)
-
-  ;; Ignore any available .go, and force recompilation.  This is because our
-  ;; checkout in the store has mtime set to the epoch, and thus .go files look
-  ;; newer, even though they may not correspond.
-  (set! %fresh-auto-compile #t)
-
-  (and=> (assoc-ref (current-source-location) 'filename)
-         (lambda (file)
-           (let ((dir (canonicalize-path
-                       (string-append (dirname file) "/../.."))))
-             (format (current-error-port) "prepending ~s to the load path~%"
-                     dir)
-             (set! %load-path (cons dir %load-path))))))
-
-
 (use-modules (guix store)
              (guix config)
              (guix utils)
-             (guix grafts)
              ((guix packages) #:select (%hydra-supported-systems))
              (guix derivations)
              (guix monads)
-             (guix gexp)
-             (guix self)
              ((guix licenses) #:prefix license:)
              (srfi srfi-1)
-             (srfi srfi-26)
              (ice-9 match))
 
 ;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
@@ -61,11 +40,13 @@
   "Return a Hydra job a list building the modular Guix derivation from SOURCE
 for SYSTEM.  Use VERSION as the version identifier."
   (lambda ()
+    (define build
+      (primitive-load (string-append source "/build-aux/build-self.scm")))
+
     `((derivation . ,(derivation-file-name
-                      (parameterize ((%graft? #f))
-                        (run-with-store store
-                          (lower-object (compiled-guix source
-                                                       #:version version))))))
+                      (run-with-store store
+                        (build source #:version version #:system system
+                               #:guile-version "2.2")))) ;the latest 2.2.x
       (description . "Modular Guix")
       (long-description
        . "This is the modular Guix package as produced by 'guix pull'.")
@@ -76,29 +57,26 @@ for SYSTEM.  Use VERSION as the version identifier."
 (define (hydra-jobs store arguments)
   "Return Hydra jobs."
   (define systems
-    (match (filter-map (match-lambda
-                         (('system . value) value)
-                         (_ #f))
-                       arguments)
-      ((lst ..1)
-       lst)
-      (_
-       (list (%current-system)))))
+    (match (assoc-ref arguments 'systems)
+      (#f              %hydra-supported-systems)
+      ((lst ...)       lst)
+      ((? string? str) (call-with-input-string str read))))
 
   (define guix-checkout
-    (assq-ref arguments 'guix))
+    (or (assq-ref arguments 'guix)                ;Hydra on hydra
+        (assq-ref arguments 'guix-modular)))      ;Cuirass on berlin
 
   (define version
     (or (assq-ref guix-checkout 'revision)
         "0.unknown"))
 
   (let ((file (assq-ref guix-checkout 'file-name)))
-    (format (current-error-port) "using checkout ~s (~s)~%"
-            guix-checkout file)
+    (format (current-error-port) "using checkout ~s (~s; arguments: ~s)~%"
+            guix-checkout file arguments)
 
     (map (lambda (system)
            (let ((name (string->symbol
                         (string-append "guix." system))))
              `(,name
                . ,(build-job store file version system))))
-         %hydra-supported-systems)))
+         systems)))
diff --git a/build-aux/hydra/guix.scm b/build-aux/hydra/guix.scm
index 659b8bfbc1..08193ec82e 100644
--- a/build-aux/hydra/guix.scm
+++ b/build-aux/hydra/guix.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,7 +22,7 @@
 ;;;
 
 ;; Attempt to use our very own Guix modules.
-(eval-when (compile load eval)
+(eval-when (expand load eval)
 
   ;; Ignore any available .go, and force recompilation.  This is because our
   ;; checkout in the store has mtime set to the epoch, and thus .go files look
diff --git a/doc/guix.texi b/doc/guix.texi
index 25c08b9f06..738fdf65ca 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2039,6 +2039,16 @@ variable, even though, taken individually, neither @file{foo} nor
 @itemx -p @var{profile}
 Use @var{profile} instead of the user's default profile.
 
+@cindex collisions, in a profile
+@cindex colliding packages in profiles
+@cindex profile collisions
+@item --allow-collisions
+Allow colliding packages in the new profile.  Use at your own risk!
+
+By default, @command{guix package} reports as an error @dfn{collisions}
+in the profile.  Collisions happen when two or more different versions
+or variants of a given package end up in the profile.
+
 @item --verbose
 Produce verbose output.  In particular, emit the build log of the
 environment on the standard error port.
@@ -8325,10 +8335,10 @@ ifconfig @var{interface} up
 To configure wireless networking, you can create a configuration file
 for the @command{wpa_supplicant} configuration tool (its location is not
 important) using one of the available text editors such as
-@command{zile}:
+@command{nano}:
 
 @example
-zile wpa_supplicant.conf
+nano wpa_supplicant.conf
 @end example
 
 As an example, the following stanza can go to this file and will work
@@ -8509,8 +8519,10 @@ builds to @file{/gnu/store} which, initially, is an in-memory file system.
 
 Next, you have to edit a file and
 provide the declaration of the operating system to be installed.  To
-that end, the installation system comes with three text editors: GNU nano
-(@pxref{Top,,, nano, GNU nano Manual}), GNU Zile (an Emacs clone), and
+that end, the installation system comes with three text editors.  We
+recommend GNU nano (@pxref{Top,,, nano, GNU nano Manual}), which
+supports syntax highlighting and parentheses matching; other editors
+include GNU Zile (an Emacs clone), and
 nvi (a clone of the original BSD @command{vi} editor).
 We strongly recommend storing that file on the target root file system, say,
 as @file{/mnt/etc/config.scm}.  Failing to do that, you will have lost your
@@ -8526,7 +8538,7 @@ something along these lines:
 @example
 # mkdir /mnt/etc
 # cp /etc/configuration/desktop.scm /mnt/etc/config.scm
-# zile /mnt/etc/config.scm
+# nano /mnt/etc/config.scm
 @end example
 
 You should pay attention to what your configuration file contains, and
diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm
index 736f119527..4f2c71cb5a 100644
--- a/gnu/bootloader.scm
+++ b/gnu/bootloader.scm
@@ -146,7 +146,8 @@
   "Return the list of bootloader modules."
   (all-modules (map (lambda (entry)
                       `(,entry . "gnu/bootloader"))
-                    %load-path)))
+                    %load-path)
+               #:warn warn-about-load-error))
 
 (define %bootloaders
   ;; The list of publically-known bootloaders.
diff --git a/gnu/local.mk b/gnu/local.mk
index 91ccb474bc..f0ee61b642 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -544,6 +544,7 @@ MODULES_NOT_COMPILED +=				\
 patchdir = $(guilemoduledir)/%D%/packages/patches
 dist_patch_DATA =						\
   %D%/packages/patches/4store-fix-buildsystem.patch		\
+  %D%/packages/patches/4store-unset-preprocessor-directive.patch	\
   %D%/packages/patches/a2ps-CVE-2001-1593.patch	\
   %D%/packages/patches/a2ps-CVE-2014-0466.patch	\
   %D%/packages/patches/abiword-explictly-cast-bools.patch	\
@@ -589,8 +590,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/ceph-skip-collect-sys-info-test.patch	\
   %D%/packages/patches/ceph-skip-unittest_blockdev.patch	\
   %D%/packages/patches/chmlib-inttypes.patch			\
-  %D%/packages/patches/clang-libc-search-path.patch		\
+  %D%/packages/patches/clang-3.5-libc-search-path.patch		\
   %D%/packages/patches/clang-3.8-libc-search-path.patch		\
+  %D%/packages/patches/clang-6.0-libc-search-path.patch		\
   %D%/packages/patches/clang-runtime-asan-build-fixes.patch	\
   %D%/packages/patches/clang-runtime-esan-build-fixes.patch	\
   %D%/packages/patches/classpath-aarch64-support.patch		\
@@ -619,6 +621,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cyrus-sasl-CVE-2013-4122.patch		\
   %D%/packages/patches/dbus-helper-search-path.patch		\
   %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch	\
+  %D%/packages/patches/delly-use-system-libraries.patch		\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-gets-undeclared.patch		\
   %D%/packages/patches/diffutils-getopt.patch			\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 97e6cb347f..1a37a17342 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
@@ -110,8 +110,25 @@ for system '~a'")
                         file-name system)))))))
 
 (define %distro-root-directory
-  ;; Absolute file name of the module hierarchy.
-  (dirname (search-path %load-path "guix.scm")))
+  ;; Absolute file name of the module hierarchy.  Since (gnu packages …) might
+  ;; live in a directory different from (guix), try to get the best match.
+  (letrec-syntax ((dirname* (syntax-rules ()
+                              ((_ file)
+                               (dirname file))
+                              ((_ file head tail ...)
+                               (dirname (dirname* file tail ...)))))
+                  (try      (syntax-rules ()
+                              ((_ (file things ...) rest ...)
+                               (match (search-path %load-path file)
+                                 (#f
+                                  (try rest ...))
+                                 (absolute
+                                  (dirname* absolute things ...))))
+                              ((_)
+                               #f))))
+    (try ("gnu/packages/base.scm" gnu/ packages/)
+         ("gnu/packages.scm"      gnu/)
+         ("guix.scm"))))
 
 (define %package-module-path
   ;; Search path for package modules.  Each item must be either a directory
@@ -142,7 +159,9 @@ for system '~a'")
 
 (define* (fold-packages proc init
                         #:optional
-                        (modules (all-modules (%package-module-path)))
+                        (modules (all-modules (%package-module-path)
+                                              #:warn
+                                              warn-about-load-error))
                         #:key (select? (negate hidden-package?)))
   "Call (PROC PACKAGE RESULT) for each available package defined in one of
 MODULES that matches SELECT?, using INIT as the initial value of RESULT.  It
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 408a4a5f41..8d988a08a2 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -471,13 +471,13 @@ detection, and lossless compression.")
 (define-public borg
   (package
     (name "borg")
-    (version "1.1.4")
+    (version "1.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "borgbackup" version))
        (sha256
-        (base32 "1cicqwh85wfp65y00qaq6q4i4jcyy9b66qz5gpl80qc880wab912"))
+        (base32 "0gbdnq7ks46diz6y2pf6wpwkb9hy6hp3immi7jg3h7w72b3ycmj3"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -510,6 +510,17 @@ detection, and lossless compression.")
                ;; HOME=/homeless-shelter.
                (setenv "HOME" "/tmp")
                #t)))
+         ;; Later versions of msgpack were disallowed to some warnings and lack
+         ;; of support for Python versions that we don't support anyways. So,
+         ;; it's okay to to keep using more recents versions of msgpack for
+         ;; Borg. Also see the note about msgpack in the list of inputs.
+         ;; https://github.com/borgbackup/borg/issues/3517#issuecomment-357221978
+         (add-before 'build 'adjust-msgpack-dependency
+           (lambda _
+             (substitute* "setup.py"
+               (("msgpack-python>=0.4.6,<0.5.0")
+                 "msgpack-python>=0.4.6"))
+             #t))
          ;; The tests need to be run after Borg is installed.
          (delete 'check)
          (add-after 'install 'check
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index f557dce8e5..09581d9fde 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,7 +22,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system r)
-  #:use-module (gnu packages))
+  #:use-module (gnu packages)
+  #:use-module (gnu packages statistics)
+  #:use-module (gnu packages bioinformatics))
 
 (define-public r-hpar
   (package
@@ -40,3 +43,30 @@
     (description "This package provides a simple interface to and data from
 the Human Protein Atlas project.")
     (license license:artistic2.0)))
+
+(define-public r-regioner
+  (package
+    (name "r-regioner")
+    (version "1.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "regioneR" version))
+       (sha256
+        (base32
+         "1vprp3l929hwzmvgskbhawfgnrymwc9n2rxd16rgagnv1dxnjxfp"))))
+    (properties `((upstream-name . "regioneR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-memoise" ,r-memoise)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-iranges" ,r-iranges)))
+    (home-page "https://bioconductor.org/packages/regioneR/")
+    (synopsis "Association analysis of genomic regions")
+    (description "This package offers a statistical framework based on
+customizable permutation tests to assess the association between genomic
+region sets and other genomic features.")
+    (license license:artistic2.0)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index d4380f86ac..5af4947b68 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2039,10 +2039,57 @@ normalized and standardized files, multiple visualizations can be created to
 identify enrichments with functional annotations of the genome.")
     (license license:gpl3+)))
 
+(define-public delly
+  (package
+    (name "delly")
+    (version "0.7.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/tobiasrausch/delly/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32 "0dkwy3pyxmi6dhh1lpsr3698ri5sslw9qz67hfys0bz8dgrqwabj"))
+              (patches (search-patches "delly-use-system-libraries.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; There are no tests to run.
+       #:make-flags '("PARALLEL=1") ; Allow parallel execution at run-time.
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; There is no configure phase.
+         (replace 'install
+           (lambda _
+             (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+                   (templates (string-append (assoc-ref %outputs "out")
+                                             "/share/delly/templates")))
+               (mkdir-p bin)
+               (mkdir-p templates)
+               (copy-recursively "excludeTemplates" templates)
+               (install-file "src/cov" bin)
+               (install-file "src/delly" bin)
+               (install-file "src/dpe" bin)))))))
+    (native-inputs
+     `(("python" ,python-2)))
+    (inputs
+     `(("boost" ,boost)
+       ("htslib" ,htslib)
+       ("zlib" ,zlib)
+       ("bzip2" ,bzip2)))
+    (home-page "https://github.com/tobiasrausch/delly")
+    (synopsis "Integrated structural variant prediction method")
+    (description "Delly is an integrated structural variant prediction method
+that can discover and genotype deletions, tandem duplications, inversions and
+translocations at single-nucleotide resolution in short-read massively parallel
+sequencing data.  It uses paired-ends and split-reads to sensitively and
+accurately delineate genomic rearrangements throughout the genome.")
+    (license license:gpl3+)))
+
 (define-public diamond
   (package
     (name "diamond")
-    (version "0.9.18")
+    (version "0.9.19")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2051,7 +2098,7 @@ identify enrichments with functional annotations of the genome.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1vi2nddmy7knrv8gsprwqp6a40k63n3f2dfvx22ipjhrg9xir96f"))))
+                "0c4y8l90vdxmglb0w37y0413v11qzcwg8sdmy9k0c0gr3bsq7dzs"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
@@ -3698,7 +3745,7 @@ sequencing tag position and orientation.")
 (define-public mafft
   (package
     (name "mafft")
-    (version "7.313")
+    (version "7.394")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3707,7 +3754,7 @@ sequencing tag position and orientation.")
               (file-name (string-append name "-" version ".tgz"))
               (sha256
                (base32
-                "0r83qmg2if8mi6jyx3xdf8ar2gcxl7r9nmj98jr7lxym97v61a2k"))))
+                "0bacjkxfg944p5khhyh5rd4y7wkjc9qk4v2jjj442sqlq0f8ar7b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no automated tests, though there are tests in the read me
@@ -3784,7 +3831,7 @@ sequences).")
 (define-public mash
   (package
     (name "mash")
-    (version "1.1.1")
+    (version "2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3793,7 +3840,7 @@ sequences).")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "08znbvqq5xknfhmpp3wcj574zvi4p7i8zifi67c9qw9a6ikp42fj"))
+                "00fx14vpmgsijwxd1xql3if934l82v8ckqgjjyyhnr36qb9qrskv"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -3813,7 +3860,9 @@ sequences).")
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-includes
            (lambda _
-             (substitute* '("src/mash/Sketch.cpp" "src/mash/CommandFind.cpp")
+             (substitute* '("src/mash/Sketch.cpp"
+                            "src/mash/CommandFind.cpp"
+                            "src/mash/CommandScreen.cpp")
                (("^#include \"kseq\\.h\"")
                 "#include \"htslib/kseq.h\""))
              #t))
@@ -10960,34 +11009,41 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
 (define-public sambamba
   (package
     (name "sambamba")
-    (version "0.6.5")
+    (version "0.6.7-10-g223fa20")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/lomereiter/sambamba/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lomereiter/sambamba.git")
+             (commit (string-append "v" version))))
+       (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "17076gijd65a3f07zns2gvbgahiz5lriwsa6dq353ss3jl85d8vy"))))
+         "1zb9hrxglxqh13ava9wwri30cvf85hjnbn8ccnr8l60a3k5avczn"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; there is no test target
-       #:make-flags
-       '("D_COMPILER=ldc2"
-         ;; Override "--compiler" flag only.
-         "D_FLAGS=--compiler=ldc2 -IBioD -g -d"
-         "sambamba-ldmd2-64")
+     `(#:tests? #f                      ; there is no test target
+       #:parallel-build? #f             ; not supported
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
-         (add-after 'unpack 'place-biod
+         (add-after 'unpack 'fix-ldc-version
+           (lambda _
+             (substitute* "gen_ldc_version_info.py"
+               (("/usr/bin/env.*") (which "python")))
+             (substitute* "Makefile"
+               (("\\$\\(shell which ldmd2\\)") (which "ldmd2")))
+             #t))
+         (add-after 'unpack 'place-biod-and-undead
            (lambda* (#:key inputs #:allow-other-keys)
              (copy-recursively (assoc-ref inputs "biod") "BioD")
+             (copy-recursively (assoc-ref inputs "undead") "undeaD")
              #t))
          (add-after 'unpack 'unbundle-prerequisites
            (lambda _
              (substitute* "Makefile"
+               (("htslib/libhts.a lz4/lib/liblz4.a")
+                "-L-lhts -L-llz4")
                ((" htslib-static lz4-static") ""))
              #t))
          (replace 'install
@@ -11000,8 +11056,9 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
     (native-inputs
      `(("ldc" ,ldc)
        ("rdmd" ,rdmd)
+       ("python" ,python2-minimal)
        ("biod"
-        ,(let ((commit "1248586b54af4bd4dfb28ebfebfc6bf012e7a587"))
+        ,(let ((commit "c778e4f2d8bacea7499283ce39f5577b232732c6"))
            (origin
              (method git-fetch)
              (uri (git-reference
@@ -11012,7 +11069,20 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
                                        "-checkout"))
              (sha256
               (base32
-               "1m8hi1n7x0ri4l6s9i0x6jg4z4v94xrfdzp7mbizdipfag0m17g3")))))))
+               "1z90562hg47i63gx042wb3ak2vqjg5z7hwgn9bp2pdxfg3nxrw37")))))
+       ("undead"
+        ,(let ((commit "92803d25c88657e945511f0976a0c79d8da46e89"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/dlang/undeaD.git")
+                   (commit commit)))
+             (file-name (string-append "undead-"
+                                       (string-take commit 9)
+                                       "-checkout"))
+             (sha256
+              (base32
+               "0vq6n81vzqvgphjw54lz2isc1j8lcxwjdbrhqz1h5gwrvw9w5138")))))))
     (inputs
      `(("lz4" ,lz4)
        ("htslib" ,htslib-for-sambamba)))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index b1534e09a4..98d12a12f6 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages python)
@@ -68,6 +70,28 @@ from scons.  While scons focuses on being 100% correct when building, bam
 makes a few sacrifices to acquire fast full and incremental build times.")
     (license license:bsd-3)))
 
+(define-public bear
+  (package
+    (name "bear")
+    (version "2.3.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/rizsotto/Bear/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1m0w0wqnz983l7fpp5p9pdsqr7n3ybrzp8ywjcvn0rihsrzj65j6"))))
+    (build-system cmake-build-system)
+    (home-page "https://github.com/rizsotto/Bear")
+    (synopsis "Tool for generating a compilation database")
+    (description "A JSON compilation database is used in the Clang project to
+provide information on how a given compilation unit is processed.  With this,
+it is easy to re-run the compilation with alternate programs.  Bear is used to
+generate such a compilation database.")
+    (license license:gpl3+)))
+
 (define-public meson
   (package
     (name "meson")
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index c214f8bf8e..4578961acc 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -273,13 +273,13 @@ format.")
 (define-public cppcheck
   (package
     (name "cppcheck")
-    (version "1.82")
+    (version "1.83")
     (source (origin
       (method url-fetch)
       (uri (string-append "https://github.com/danmar/cppcheck/archive/"
                           version ".tar.gz"))
       (sha256
-       (base32 "0zywpd9hbsx23aj33pk5mbr0fz1ijhqzxlnqgwjfwgg6g2k48i2j"))
+       (base32 "15ghxwmyy09cd9mi008k4jn09c441j86qyaa4dz0is7f5dv5cdkx"))
       (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (home-page "http://cppcheck.sourceforge.net")
@@ -2025,3 +2025,28 @@ retried.")
 
 (define-public python2-pyhamcrest
   (package-with-python2 python-pyhamcrest))
+
+(define-public unittest-cpp
+  (package
+    (name "unittest-cpp")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/unittest-cpp/unittest-cpp/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32 "1fgmna2la7z4pwwy2gd10gpgi2q1fk89npjfvkmzvhkxhyc231bl"))))
+    (arguments
+     `(#:tests? #f))                     ; It's run after build automatically.
+    (build-system cmake-build-system)
+    (home-page "https://github.com/unittest-cpp/unittest-cpp")
+    (synopsis "Lightweight unit testing framework for C++")
+    (description "UnitTest++ is a lightweight unit testing framework for C++.
+It was designed to do test-driven development on a wide variety of platforms.
+Simplicity, portability, speed, and small footprint are all very important
+aspects of UnitTest++.  UnitTest++ is mostly standard C++ and makes minimal use
+of advanced library and language features, which means it should be easily
+portable to just about any platform.")
+    (license license:expat)))
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 98632bd412..59561b18bb 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -184,8 +184,8 @@ their dependencies.")
       (license l:gpl3+))))
 
 (define-public cuirass
-  (let ((commit "326264c8e9445cb94d7fb33aab5ef93dc99ffe57")
-        (revision "14"))
+  (let ((commit "f090c0f4786c789070e2eae740914e06ab0ab989")
+        (revision "15"))
     (package
       (name "cuirass")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -197,7 +197,7 @@ their dependencies.")
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "0l6433l63r1zyq9hg89q9l6zgydm7bm35xdvb0g22w1d6wvi48ls"))))
+                  "0aj1z9svsjvjlb6gas6032ygwhv7ld4iw7g3as852x9nfd2zck98"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/cobol.scm b/gnu/packages/cobol.scm
index 752e028374..75c8c53bbe 100644
--- a/gnu/packages/cobol.scm
+++ b/gnu/packages/cobol.scm
@@ -59,7 +59,7 @@
        ("ncurses" ,ncurses)
        ("newcob" ,(origin
                     (method url-fetch)
-                    (uri "http://www.itl.nist.gov/div897/ctg/suites/newcob.val.Z")
+                    (uri "https://www.itl.nist.gov/div897/ctg/suites/newcob.val.Z")
                     (sha256
                      (base32
                       "1yb1plmv4firfnbb119r2vh1hay221w1ya34nyz0qwsxppfr56hy"))))))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index 10b191051d..6ce0ed1424 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
 ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
 ;;; Copyright © 2018 Sahithi Yarlagadda <sahi@swecha.net>
@@ -1027,14 +1027,14 @@ or excesses over a high threshold.")
 (define-public r-lmtest
   (package
     (name "r-lmtest")
-    (version "0.9-35")
+    (version "0.9-36")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lmtest" version))
        (sha256
         (base32
-         "107br1l7p52wxvazs031f4h5ryply97qywg9dzrkw4ydnvqq4j9g"))))
+         "0sym9sm1vl6bbgq01jhz1plxqmgh8hrgrn7rw0mwvsalcn6id7xy"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-zoo" ,r-zoo)))
@@ -1619,14 +1619,14 @@ created using basic graphics.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "0.4.3")
+    (version "0.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "119pc2jnxvm13cvd77c7d14p3bn68f4jm310vj3yfck40101n9if"))))
+         "081x87sy6dmfvkgwfjrl5ax51k77ciyzg9x3xql25vdi92rmwj3m"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -2601,16 +2601,16 @@ published results; and a routine for graphical display.")
 (define-public r-network
   (package
     (name "r-network")
-    (version "1.13.0")
+    (version "1.13.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "network" version))
        (sha256
         (base32
-         "11sg330xb7gcnl3f6lwhhjdabz6mk43828i2np635pqw4s4yl13s"))))
+         "1bbkbqkqf1d7irfwh08c13c2pfypir1ssvlqrln83irqns1ikdv0"))))
     (build-system r-build-system)
-    (home-page "http://statnet.org/")
+    (home-page "https://statnet.org/")
     (synopsis "Classes for relational data")
     (description
      "This package provides tools to create and modify network objects.  The
@@ -2632,7 +2632,7 @@ supports arbitrary vertex/edge/graph attributes.")
     (properties
       `((upstream-name . "statnet.common")))
     (build-system r-build-system)
-    (home-page "http://www.statnet.org")
+    (home-page "https://statnet.org")
     (synopsis "R scripts and utilities used by the Statnet software")
     (description "This package provides non-statistical utilities used by the
 software developed by the Statnet Project.")
@@ -2653,7 +2653,7 @@ software developed by the Statnet Project.")
     (propagated-inputs
      `(("r-network" ,r-network)
        ("r-statnet-common" ,r-statnet-common)))
-    (home-page "http://www.statnet.org")
+    (home-page "https://statnet.org")
     (synopsis "Tools for social network analysis")
     (description
      "This package provides a range of tools for social network analysis,
@@ -3654,3 +3654,53 @@ and Eclat.")
 time formats, @code{parse_date} parses dates in unspecified formats,
 and @code{format_iso_8601} formats a date in ISO 8601 format.")
     (license license:gpl2)))
+
+(define-public r-abc-data
+  (package
+    (name "r-abc-data")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "abc.data" version))
+       (sha256
+        (base32
+         "1bv1n68ah714ws58cf285n2s2v5vn7382lfjca4jxph57lyg8hmj"))))
+    (properties `((upstream-name . "abc.data")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/abc.data/")
+    (synopsis "Data for Approximate Bayesian Computation (ABC) package")
+    (description
+     "This package contains data which are used by functions of the abc
+package which implements several @dfn{Approximate Bayesian Computation} (ABC)
+algorithms for performing parameter estimation, model selection, and
+goodness-of-fit.")
+    (license license:gpl3+)))
+
+(define-public r-abc
+  (package
+    (name "r-abc")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "abc" version))
+       (sha256
+        (base32
+         "0ngzaaz2y2s03fhngvwipmy4kq38xrmyddaz6a6l858rxvadrlhb"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-abc-data" ,r-abc-data)
+       ("r-locfit" ,r-locfit)
+       ("r-mass" ,r-mass)
+       ("r-nnet" ,r-nnet)
+       ("r-quantreg" ,r-quantreg)))
+    (home-page "https://cran.r-project.org/web/packages/abc/")
+    (synopsis "Tools for Approximate Bayesian Computation (ABC)")
+    (description
+     "This package implements several @dfn{Approximate Bayesian
+Computation} (ABC) algorithms for performing parameter estimation, model
+selection, and goodness-of-fit.  Cross-validation tools are also available for
+measuring the accuracy of ABC estimates, and to calculate the
+misclassification probabilities of different models.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 00d19a8d12..a574e652eb 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
@@ -34,10 +34,10 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cryptsetup)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
@@ -45,6 +45,8 @@
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
@@ -711,3 +713,49 @@ of magnet links and a wide range of hash sums like CRC32, MD4, MD5, SHA1,
 SHA256, SHA512, SHA3, AICH, ED2K, Tiger, DC++ TTH, BitTorrent BTIH, GOST R
 34.11-94, RIPEMD-160, HAS-160, EDON-R, Whirlpool and Snefru.")
     (license (license:non-copyleft "file://COPYING"))))
+
+(define-public botan
+  (package
+    (name "botan")
+    (version "2.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://botan.randombit.net/releases/"
+                                  "Botan-" version ".tgz"))
+              (sha256
+               (base32
+                "06zvwknhwfrkdvq2sybqbqhnd2d4nq2cszlnsddql13z7vh1z8xq"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref %outputs "out"))
+                    (lib (string-append out "/lib")))
+               (invoke "python" "./configure.py"
+                       (string-append "--prefix=" out)
+                       ;; Otherwise, the `botan` executable cannot find
+                       ;; libbotan.
+                       (string-append "--ldflags=-Wl,-rpath=" lib)
+                       "--with-rst2man"
+                       ;; Recommended by upstream
+                       "--with-zlib" "--with-bzip2" "--with-sqlite3"))))
+         (replace 'check
+           (lambda _ (invoke "./botan-test"))))))
+    (native-inputs
+     `(("python" ,python-minimal-wrapper)
+       ("python-docutils" ,python-docutils)))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("bzip2" ,bzip2)
+       ("zlib" ,zlib)))
+    (synopsis "Cryptographic library in C++11")
+    (description "Botan is a cryptography library, written in C++11, offering
+the tools necessary to implement a range of practical systems, such as TLS/DTLS,
+PKIX certificate handling, PKCS#11 and TPM hardware support, password hashing,
+and post-quantum crypto schemes.  In addition to the C++, botan has a C89 API
+specifically designed to be easy to call from other languages.  A Python binding
+using ctypes is included, and several other language bindings are available.")
+    (home-page "https://botan.randombit.net")
+    (license license:bsd-2)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 1b3941b623..01b897da22 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -125,7 +125,8 @@
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
-      (patches (list (search-patch "4store-fix-buildsystem.patch")))))
+      (patches (search-patches "4store-unset-preprocessor-directive.patch"
+                               "4store-fix-buildsystem.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)
@@ -1650,7 +1651,7 @@ database.  Various higher level database abstractions.")
 (define-public perl-db-file
  (package
   (name "perl-db-file")
-  (version "1.840")
+  (version "1.841")
   (source
     (origin
       (method url-fetch)
@@ -1660,7 +1661,7 @@ database.  Various higher level database abstractions.")
              ".tar.gz"))
       (sha256
         (base32
-          "1i5jz85z4hpx15lw6ix27pyvrf0ziyh4z33lii4d3wnhz83lg1mp"))))
+          "11fks42kgscpia0mxx4lc9krm7q4gv6w7m5h3m2jr3dl7viv36hn"))))
   (build-system perl-build-system)
   (inputs `(("bdb" ,bdb)))
   (native-inputs `(("perl-test-pod" ,perl-test-pod)))
@@ -1682,14 +1683,14 @@ database.  Various higher level database abstractions.")
 (define-public lmdb
   (package
     (name "lmdb")
-    (version "0.9.21")
+    (version "0.9.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/LMDB/lmdb/archive/"
                                   "LMDB_" version ".tar.gz"))
               (sha256
                (base32
-                "0ndmj07hkm2ic60z1f4rdscxs7pq45hk9fibjyv5nhfclhsvd1qi"))))
+                "0a7a8535csrvw71mrgx680m5d17bnxmmhcccij30idifi1cpi4pk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -2038,10 +2039,16 @@ implementation for Python.")
         (base32 "12dqam1gc1v93l0bj0vlpvjqppki6y1hqrlznywxnw0rrz9pb002"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f)) ; Tests require a network connection.
+     `(#:tests? #f ; Tests require a network connection.
+       ;; TODO: Removing the libsrc/zlib source directory breaks the build.
+       ;; This indicates that the internal zlib code may still be used.
+       #:configure-flags '("--without-internal-zlib"
+                           "--with-readline")))
     (inputs
      `(("openssl" ,openssl)
-       ("net-tools" ,net-tools)))
+       ("net-tools" ,net-tools)
+       ("readline" ,readline)
+       ("zlib" ,zlib)))
     (home-page "http://vos.openlinksw.com/owiki/wiki/VOS/")
     (synopsis "Multi-model database system")
     (description "Virtuoso is a scalable cross-platform server that combines
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index 3c3189e073..01df30c558 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -1,4 +1,5 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; GNU Guix is free software; you can redistribute it and/or modify it
 ;;; under the terms of the GNU General Public License as published by
@@ -111,7 +112,7 @@ contains the archive keys used for that.")
 (define-public debootstrap
   (package
     (name "debootstrap")
-    (version "1.0.93")
+    (version "1.0.95")
     (source
       (origin
         (method url-fetch)
@@ -119,7 +120,7 @@ contains the archive keys used for that.")
                             name "_" version ".tar.gz"))
         (sha256
          (base32
-          "1nyp9fwb7xrk1vin81dmgx2g9rb52yg4gwz4rcx97gamw4mlvbfd"))))
+          "1xpd1yblcgwhri64hzgxhalpf5j8gqbmkrsm1fs0pbwiy0wdz0ry"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 4334203f7b..d09280a3d4 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -211,7 +211,7 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
 (define-public grammalecte
   (package
     (name "grammalecte")
-    (version "0.6.2")
+    (version "0.6.3.1")
     (source
      (origin
        (method url-fetch/zipbomb)
@@ -219,8 +219,21 @@ It comes with a German-English dictionary with approximately 270,000 entries.")
                            "Grammalecte-fr-v" version ".zip"))
        (sha256
         (base32
-         "0pvblclvbxbfgmq0cvmpmzpf6bi6r41arndwprl7ab9kci9hi8j2"))))
+         "0jlzrhpx9qvjdq679w188p86x09yfjf3l0h4scjl9w26yyp53gr8"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-setup
+           ;; Fix typos in "setup.py".  In particular, add the new
+           ;; "graphspell" module introduced in 0.6.2.  Reported upstream:
+           ;; <https://www.dicollecte.org/thread.php?prj=fr&t=709>
+           (lambda _
+             (substitute* "setup.py"
+               (("packages=\\['grammalecte', 'grammalecte.fr'\\],")
+                "packages=['grammalecte', 'grammalecte.fr', 'grammalecte.graphspell'],")
+               (("_dictionaries/French.bdic") "graphspell/_dictionaries/fr.bdic"))
+             #t)))))
     (home-page "https://www.dicollecte.org")
     (synopsis  "French spelling and grammar checker")
     (description "Grammalecte is a grammar checker dedicated to the French
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 4bb2e69049..d42afb2285 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -809,3 +810,25 @@ provides features like a web browseable API and authentication policies.")
      "@code{django-crispy-forms} lets you easily build, customize and reuse
 forms using your favorite CSS framework, without writing template code.")
     (license license:expat)))
+
+(define-public python-django-override-storage
+  (package
+    (name "python-django-override-storage")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "django-override-storage" version))
+       (sha256
+        (base32
+         "0sqz1mh0yn8b1bzz2gr2azfiynljigm5gkzavp5n17zd3j2jg57x"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (home-page
+     "https://github.com/danifus/django-override-storage")
+    (synopsis "Django test helpers to manage file storage side effects")
+    (description
+     "This project provides tools to help reduce the side effects of using
+FileFields during tests.")
+    (license license:expat)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 0011ee057b..7a5bef2a70 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
-;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
@@ -29,9 +29,11 @@
 ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2017, 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -99,6 +101,7 @@
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages gd)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages password-utils)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match))
@@ -383,7 +386,7 @@ when typing parentheses directly or commenting out code line by line.")
 (define-public git-modes
   (package
     (name "emacs-git-modes")
-    (version "1.2.6")
+    (version "1.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -392,7 +395,7 @@ when typing parentheses directly or commenting out code line by line.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "18z04wn5ird9l0h6n6x97v0kyzdj73832bj9qakm3fjjl7vcn0pw"))))
+                "1mzl70s0xyysnjq1j10mc5vn9i022n5vd82kxsgp4xxqq7gc4qnx"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/magit/git-modes")
     (synopsis "Emacs major modes for Git configuration files")
@@ -3911,7 +3914,7 @@ If you want to mark a folder manually as a project just create an empty
 (define-public emacs-elfeed
   (package
     (name "emacs-elfeed")
-    (version "2.2.0")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/skeeto/elfeed/archive/"
@@ -3919,7 +3922,7 @@ If you want to mark a folder manually as a project just create an empty
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0d7i93l3b0ck3iad9ddqp7sqa8w16hnamrby8bwvl316rqk4lzlf"))))
+                "1fd1mx0q1qb9vgdzls5ppxfriyid48blg8smgjspiazp7kxakzxv"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -4164,7 +4167,7 @@ the file buffer.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "2.8.5")
+    (version "2.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4173,7 +4176,7 @@ the file buffer.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "15xlnjm9rsbn0xq7xc09y52h2kn41zwn7ldryammf6i46wl02kq3"))))
+                "1798gn0za11cxdbi436javfczv4abniccxcl0jppl463r8lzb8is"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -4193,7 +4196,7 @@ not tied in the trap of backward compatibility.")
 (define-public emacs-helm-swoop
   (package
     (name "emacs-helm-swoop")
-    (version "1.7.2")
+    (version "1.7.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4203,7 +4206,7 @@ not tied in the trap of backward compatibility.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1z34pfi0gsk054pxr906ilaalaw0xz3s536163gf9ykkwmc2356d"))))
+                "1ssivsjzlnkg049cg993l8fp09l5nhpz6asj7w5c91zp5kpc6fh7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
@@ -4511,14 +4514,14 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update its sha256
     ;; checksum as well.
-    (version "20180327")
+    (version "9.1.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://orgmode.org/elpa/org-"
+              (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "0xmlzlxf15996sd3gj3naiz383d17ngjd9963p4h9kssrkjlwljy"))))
+                "16yr0srfzsrzv2b1f2wjk8gb2pyhsgj2hxbscixirkxqz674c5cl"))))
     (build-system emacs-build-system)
     (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -4532,13 +4535,14 @@ reproducible research.")
   (package
     (inherit emacs-org)
     (name "emacs-org-contrib")
+    (version "20180327")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
-                                  (package-version emacs-org) ".tar"))
+                                  version ".tar"))
               (sha256
                (base32
-                "1nqn7m1x9w5y356ylv5hia6v62pqfz9g3rzjbiffjxyyc34xvpfm"))))
+                "1y1nn0bxnh9y4a3zrqng8n639j5da5387q2314sr3a8ggy1nb93s"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -4559,8 +4563,7 @@ reproducible research.")
                                  string=? contrib-files org+contrib-files)))
                (with-directory-excursion
                    (string-append
-                    out "/share/emacs/site-lisp/guix.d/org-contrib-"
-                    ,(package-version emacs-org))
+                    out "/share/emacs/site-lisp/guix.d/org-contrib-" ,version)
                  (for-each delete-file duplicates))
                #t))))))
     (propagated-inputs
@@ -7425,3 +7428,125 @@ the same values you get in a terminal.")
      "Deft is an Emacs mode for quickly browsing, filtering, and editing
 directories of plain text notes, inspired by Notational Velocity.")
     (license license:bsd-3)))
+
+(define-public emacs-anzu
+  (package
+    (name "emacs-anzu")
+    (version "0.62")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/syohex/emacs-anzu/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "16cg3897x5znbmgk7sdy0qyd0fbic9dmmz0dchq2vz5z29yhg4cz"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/syohex/emacs-anzu")
+    (synopsis "Show number of matches in mode-line while searching")
+    (description
+     "Anzu provides a minor mode which displays \"current match/total
+matches\" in the mode line in various search modes.  This is an Emacs port of
+Anzu.zim.")
+    (license license:gpl3+)))
+
+(define-public emacs-emmet-mode
+  (package
+    (name "emacs-emmet-mode")
+    (version "1.0.8")
+    (source (origin
+	      (method url-fetch)
+	      (uri (string-append "https://github.com/smihica/emmet-mode"
+				  "/archive/" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+	      (sha256
+	       (base32
+		"0g3p22yabfcp98cfv9dgl9il2m2pd53isq2q11vb3s7qyn31f7zj"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/smihica/emmet-mode")
+    (synopsis "Unofficial Emmet's support for Emacs")
+    (description
+     "Unfold CSS-selector-like expressions to markup.  It is intended to be
+used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
+    (license license:gpl3+)))
+
+(define-public emacs-password-store
+  (package
+    (name "emacs-password-store")
+    (version "1.7.1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://git.zx2c4.com/password-store/snapshot/"
+                              "password-store-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'extract-el-file
+           (lambda _
+             (copy-file "contrib/emacs/password-store.el" "password-store.el")
+             (delete-file-recursively "contrib")
+             (delete-file-recursively "man")
+             (delete-file-recursively "src")
+             (delete-file-recursively "tests"))))))
+    (propagated-inputs
+     `(("emacs-f" ,emacs-f)
+       ("emacs-s" ,emacs-s)
+       ("password-store" ,password-store)))
+    (home-page "https://git.zx2c4.com/password-store/tree/contrib/emacs")
+    (synopsis "Password store (pass) support for Emacs")
+    (description
+     "This package provides functions for working with pass (\"the
+standard Unix password manager\").")
+    (license license:gpl2+)))
+
+(define-public emacs-pass
+  (package
+    (name "emacs-pass")
+    (version "1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/NicolasPetton/pass/archive/"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0zlx9v6z0q3w9qhq9bq6vb7sli4c9x7qccm2wq55j0nw7bwy2yvj"))
+              (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-password-store" ,emacs-password-store)
+       ("emacs-f" ,emacs-f)))
+    (home-page "https://github.com/NicolasPetton/pass")
+    (synopsis "Major mode for @file{password-store.el}")
+    (description "This is a major mode for managing password-store (pass)
+keychains.  The keychain entries are displayed in a directory-like structure
+and can be consulted and modified.")
+    (license license:gpl3+)))
+
+(define-public emacs-evil-anzu
+  (package
+    (name "emacs-evil-anzu")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/syohex/emacs-evil-anzu"
+                           "/archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "032hh2946z529cizqsg8pm6cpn5qdj8lfk3qskmx6xv3g2ra56ns"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-evil" ,emacs-evil)
+       ("emacs-anzu" ,emacs-anzu)))
+    (home-page "https://github.com/syohex/emacs-evil-anzu")
+    (synopsis "Anzu for evil-mode")
+    (description "@code{anzu} provides a minor mode that displays the current
+match and total match information in the mode-line in various search modes.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 9e65d5f46b..b0da0bb423 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -398,7 +398,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
 (define-public mgba
   (package
     (name "mgba")
-    (version "0.6.1")
+    (version "0.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
@@ -406,7 +406,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w"))
+                "0x7a9i1jdic3haf5fkd7x16vwqpf4jqdiw56a5fc4gx4jhn9yhi2"))
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.
@@ -1061,7 +1061,7 @@ emulation community.  It provides highly accurate emulation.")
                            version ".tar.gz"))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0fdribjfc5zz9brzhqcxw6m76kvyg13l67aiigszv4wsjd5j3gpz"))))
+        (base32 "1wykv0w0kdlh7lh0k1ig0lpk5vh4c7r19jlfa9103jmjlryrq679"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ; no tests
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c236d8cd67..ee62eb5a8b 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -568,43 +568,24 @@ image, etc.  Besides viewing Gerbers, you may also view Excellon drill files
 as well as pick-place files.")
     (license license:gpl2+)))
 
-(define-public ao
-  (let ((commit "fb288c945aa7e30d9be10a564edad7e1b6a6c1ae")
-        (revision "1"))
+(define-public libfive
+  (let ((commit "9d857d1923abecb0e5935b9287d22661f6efaac5")
+        (revision "2"))
     (package
-      (name "ao-cad")            ;XXX: really "ao", but it collides with libao
+      (name "libfive")
       (version (git-version "0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/mkeeter/ao")
+                      (url "https://github.com/libfive/libfive")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0syplfqiq7ng7md44yriq5cz41jp8q9z3pl2iwkkllds6p9ylyal"))
-                (file-name (git-file-name name version))
-                (patches (search-patches "ao-cad-aarch64-support.patch"))
-                (modules '((guix build utils)))
-                (snippet
-                 ;; Remove bundled libraries: Eigen, glm, and catch.  TODO:
-                 ;; Unbundle efsw <https://github.com/diegostamigni/efsw>.
-                 '(begin
-                    (delete-file-recursively "vendor")
-
-                    ;; Use #include <catch.hpp>.
-                    (substitute* (find-files "." "\\.[ch]pp$")
-                      (("catch/catch\\.hpp")
-                       "catch.hpp"))
-                    #t))))
+                  "1r40kyx30wz31cwwlfvfh7fgqkxq3n8dxhswpi9qpf4r5h3l8wsn"))
+                (file-name (git-file-name name version))))
       (build-system cmake-build-system)
       (arguments
-       `(;; Have the RUNPATH of libao.so point to $libdir, where libefsw.so
-         ;; lives.
-         #:configure-flags (list (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
-                                                "-Wl,-rpath="
-                                                (assoc-ref %outputs "out")
-                                                "/lib"))
-
+       `(#:tests? #f ; no "test" target
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'remove-native-compilation
@@ -618,64 +599,29 @@ as well as pick-place files.")
                  (setenv "CPLUS_INCLUDE_PATH"
                          (string-append eigen "/include/eigen3:"
                                         (getenv "CPLUS_INCLUDE_PATH")))
-                 #t)))
-           (add-after 'install 'install-guile-bindings
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               ;; Install the Guile bindings (the build system only installs
-               ;; libao.so.)
-               (let* ((out    (assoc-ref outputs "out"))
-                      (moddir (string-append out "/share/guile/site/2.0")))
-                 (install-file "bind/libao.so"
-                               (string-append out "/lib"))
-
-                 ;; Go to the source directory.
-                 (with-directory-excursion ,(string-append "../"
-                                                           name "-" version
-                                                           "-checkout")
-                   (substitute* "bind/guile/ao/sys/libao.scm"
-                     (("\\(define libao \\(dynamic-link .*$")
-                      (string-append "(define libao (dynamic-link \""
-                                     out "/lib/libao\")) ;")))
-
-                   (copy-recursively "bind/guile/ao" (string-append moddir "/ao"))
-
-                   (substitute* "bin/ao-guile"
-                     (("\\(add-to-load-path .*")
-                      (string-append "(add-to-load-path \"" moddir "\")")))
-
-                   (install-file "bin/ao-guile"
-                                 (string-append out "/bin"))
-
-                   ;; Allow Ao to dlopen the relevant GL libraries.  Otherwise
-                   ;; it fails with:
-                   ;;   Couldn't find current GLX or EGL context.
-                   (let ((mesa (assoc-ref inputs "mesa")))
-                     (wrap-program (string-append out "/bin/ao-guile")
-                       `("LD_LIBRARY_PATH" ":" prefix
-                         (,(string-append mesa "/lib")))))
-                   #t)))))))
+                 #t))))))
       (native-inputs
        `(("pkg-config" ,pkg-config)))
       (inputs
        `(("boost" ,boost)
          ("catch" ,catch-framework)
          ("libpng" ,libpng)
-         ("glfw" ,glfw)
-         ("libepoxy" ,libepoxy)
-         ("mesa" ,mesa)
+         ("qtbase" ,qtbase)
          ("eigen" ,eigen)
-         ("glm" ,glm)
-         ("guile" ,guile-2.0)))
-      (home-page "http://www.mattkeeter.com/projects/ao/")
+         ("guile" ,guile-2.2)))
+      (home-page "https://libfive.com")
       (synopsis "Tool for programmatic computer-aided design")
       (description
-       "Ao is a tool for programmatic computer-aided design (CAD).  In Ao,
-solid models are defined as Scheme scripts, and there are no opaque function
-calls into the geometry kernel: everything is visible to the user.  Even
-fundamental, primitive shapes are represented as code in the user-level
+       "Libfive is a tool for programmatic computer-aided design (CAD).  In
+libfive, solid models are defined as Scheme scripts, and there are no opaque
+function calls into the geometry kernel: everything is visible to the user.
+Even fundamental, primitive shapes are represented as code in the user-level
 language.")
       (license (list license:lgpl2.1+             ;library
-                     license:gpl2+)))))           ;Guile bindings
+                     license:gpl2+)))))           ;Guile bindings and GUI
+
+(define-public ao
+  (deprecated-package "ao-cad" libfive))
 
 ;; We use kicad from a git commit, because support for boost 1.61.0 has been
 ;; recently added.
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index f296afec5a..e158cab2be 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -431,13 +431,13 @@ resolution.")
 (define-public libotf
   (package
     (name "libotf")
-    (version "0.9.13")
+    (version "0.9.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/m17n/libotf-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0239zvfan56w7vrppriwy77fzb10ag9llaz15nsraps2a2x6di3v"))))
+               (base32 "0sq6g3xaxw388akws6qrllp3kp2sxgk2dv4j79k6mm52rnihrnv8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index a0134c37fe..0f2a3d66e3 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -766,7 +766,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
 (define-public libmbim
   (package
     (name "libmbim")
-    (version "1.12.4")
+    (version "1.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -774,7 +774,7 @@ interfaces, based on the useradd, usermod and userdel commands.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0flpgzsqpjgybjkx4smbb4rjxf2w1xgd1v9gmz61rvl89qasznbv"))))
+                "1hpsjc7bzmakzvj8z9fffvqknc38fa8ridpmklq46jyxxnz51jn8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-mkenums
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index db13ac0eff..d73c536d4c 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -386,7 +386,7 @@ support.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "1.1.3")
+    (version "1.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bjorn/tiled/archive/v"
@@ -394,7 +394,7 @@ support.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "08bxl6vc7ynnji4r6ij9ayr2jixvfhv4daplw5p96s0gkhdqd90k"))))
+                "0xb3zwcdk7khdrza6spl02g5n2xbij6nbszv8vi27vagjnmz1wxh"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index cb7d6c8c5b..fda8c5c661 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2578,7 +2578,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
 (define-public libsecret
   (package
     (name "libsecret")
-    (version "0.18.5")
+    (version "0.18.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2587,7 +2587,7 @@ and the GLib main loop, to integrate well with GNOME applications.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cychxc3ff8fp857iikw0n2s13s2mhw2dn1mr632f7w3sn6vvrww"))))
+                "0vynag97a9bnnb8ipah45av8xg8jzmhd572rw3zj78s1pa8ciysy"))))
     (build-system gnu-build-system)
     (outputs '("out" "doc"))
     (arguments
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 288e14ebcd..939bdf9148 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -186,13 +186,16 @@ authentication and support for SSL3 and TLS.")
 (define-public gnurl
   (package
    (name "gnurl")
-   (version "7.58.0")
+   (version "7.59.0")
    (source (origin
             (method url-fetch)
-            (uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.xz"))
+            (uri (list (string-append "mirror://gnu/gnunet/" name "-" version ".tar.xz")
+                       ;; TODO: Remove once gnurl-7.59.0 release has synced to ftp.gnu.org
+                       (string-append "https://ftp.n0.is/pub/releases/gnurl/"
+                                       name "-" version ".tar.xz")))
             (sha256
              (base32
-              "1yyswsz0csplqi8hlhqaxlafqn5kh5016j8k2gaxziv4cb343znx"))))
+              "0fdwqxs4crzj1nbq3lz0xbqjiiqpq16vpll09gryyq4c1y6lbyib"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                             ; 1.5 MiB of man3 pages
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 08c78ec790..6405c985f5 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages crypto)
+  #:use-module (gnu packages emacs)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
@@ -740,6 +741,16 @@ including tools for signing keys, keyring analysis, and party preparation.
                   (ftp-directory . "/gcrypt/pinentry")
                   (upstream-name . "pinentry")))))
 
+(define-public pinentry-emacs
+  (package
+    (inherit pinentry-tty)
+    (name "pinentry-emacs")
+    (arguments
+     `(#:configure-flags '("--enable-pinentry-emacs")))
+    (description
+     "Pinentry provides a console and an Emacs interface that allows users to
+enter a passphrase when required by @code{gpg} or other software.")))
+
 (define-public pinentry-gtk2
   (package
     (inherit pinentry-tty)
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index e07c9f4acb..e913c25904 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -147,7 +147,7 @@ between two other data points.")
 (define-public gama
   (package
     (name "gama")
-    (version "1.21")
+    (version "1.22")
     (source
       (origin
         (method url-fetch)
@@ -155,7 +155,7 @@ between two other data points.")
                             version ".tar.gz"))
         (sha256
          (base32
-          "0yy8czw5dldbw1qj5v2h2wfh397bfx5wd3lrrgs8m1qdf1njnhcq"))))
+          "01q3g2zi5d5r2l10hc8jwwz6w61dwkv7nyj9xd67vvq0gajw0a7r"))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-tests? #f)) ; race condition
     (native-inputs
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 35ea129326..2b7438c902 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
   #:use-module (gnu packages gd)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages tex)
   #:use-module ((guix licenses) #:prefix license:))
 
 (define-public graphviz
@@ -240,3 +242,36 @@ graphs in Graphviz's DOT language, written in pure Python.")
 
 (define-public python2-pydot
   (package-with-python2 python-pydot))
+
+(define-public dot2tex
+  (package
+    (name "dot2tex")
+    (version "2.9.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "dot2tex" version))
+              (sha256
+               (base32
+                "0jhdwp0wv2h0xb7j2s5xiv7i8yaqgfpwwqcyrjvaxkfwsynm8gkx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (inputs
+     `(("texlive-latex-preview" ,texlive-latex-preview)
+       ("graphviz" ,graphviz)))
+    (propagated-inputs
+     `(("python-pyparsing" ,python2-pyparsing)))
+    (home-page "https://github.com/kjellmf/dot2tex")
+    (synopsis "Graphviz to LaTeX converter")
+    (description
+     "The purpose of @code{dot2tex} is to give graphs generated by Graphviz a
+more LaTeX friendly look and feel.  This is accomplished by converting
+@code{xdot} output from Graphviz to a series of PSTricks or PGF/TikZ commands.
+This approach allows:
+
+@itemize @bullet
+@item Typesetting labels with LaTeX, allowing mathematical notation
+@item Using native PSTricks and PGF/TikZ commands for drawing arrows
+@item Using backend specific styles to customize the output
+@end itemize")
+    (license license:expat)))
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index ef4f5e15ee..58b0abcecf 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -416,7 +417,7 @@ compression formats through the use of the libav library.")
 (define-public python-gst
   (package
     (name "python-gst")
-    (version "1.12.4")
+    (version "1.12.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -424,7 +425,7 @@ compression formats through the use of the libav library.")
                     "gst-python-" version ".tar.xz"))
               (sha256
                (base32
-                "1sm3dy10klf6i3w6a6mz0rnm29l2lxci5hr8346496jwc7v6mki0"))))
+                "1x8g9mdkf6hzhlkx6nhrrp607p8g4zkhl3crs8vh504zpbbf71ip"))))
     (build-system gnu-build-system)
     (arguments
      ;; XXX: Factorize python-sitedir with python-build-system.
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a9c0a21fce..e008e3b167 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1951,8 +1951,8 @@ is not available for Guile 2.0.")
     (license license:lgpl3+)))
 
 (define-public guile-git
-  (let ((revision "5")
-        (commit "2bb9fbbf93cf93496718efc85ad9394aefa21029"))
+  (let ((revision "6")
+        (commit "36f93c174adc396c90ec3a6923487f0444fe5d69"))
     (package
       (name "guile-git")
       (version (string-append "0.0-" revision "." (string-take commit 7)))
@@ -1962,14 +1962,15 @@ is not available for Guile 2.0.")
                 (uri (git-reference (url home-page) (commit commit)))
                 (sha256
                  (base32
-                  "0z3v0v89dyp35zx2h2gsq6v29lba3wbzabc5n2g4hx2fcb6q5qqy"))
+                  "0z1dvn0scx59pbgjkpacam7p5n7630z4qm8fazim7ixq9xv3s8wx"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
                     ;; FIXME: On i686, bytestructures miscalculates the offset
                     ;; of the 'old-file' and 'new-file' fields within the
-                    ;; '%diff-delta' structure.
+                    ;; '%diff-delta' structure.  See
+                    ;; <https://github.com/TaylanUB/scheme-bytestructures/issues/30>.
                     ,@(if (string=? (%current-system) "x86_64-linux")
                           '()
                           '((add-before 'check 'skip-tests
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 9593e4c109..6b1d769313 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -27,6 +27,7 @@
 (define-module (gnu packages haskell-check)
   #:use-module (gnu packages)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-crypto)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -793,3 +794,33 @@ Haskell, inspired by the Ruby library RSpec.")
      "Nanospec is a lightweight implementation of a subset of Hspec's API with
 minimal dependencies.")
     (license license:expat)))
+
+(define-public ghc-crypto-cipher-tests
+  (package
+    (name "ghc-crypto-cipher-tests")
+    (version "0.0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "crypto-cipher-tests-" version "/"
+                           "crypto-cipher-tests-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19wqignlq90qwpam01hnmmrxaxh5lkax9l1l6rlbi4a07nvp1dnz"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-quickcheck" ,ghc-quickcheck)
+              ("ghc-mtl" ,ghc-mtl)
+              ("ghc-hunit" ,ghc-hunit)
+              ("ghc-test-framework" ,ghc-test-framework)
+              ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+              ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+              ("ghc-byteable" ,ghc-byteable)
+              ("ghc-securemem" ,ghc-securemem)
+              ("ghc-crypto-cipher-types" ,ghc-crypto-cipher-types)))
+    (home-page "https://github.com/vincenthz/hs-crypto-cipher")
+    (synopsis "Generic cryptography cipher tests for Haskell")
+    (description " This Haskell package contains generic tests for
+cryptographic ciphers, and is used by the test runners of various Haskell
+implementations of cryptographic ciphers.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index e4d4e56388..b0be30cb6b 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -530,3 +530,133 @@ list validation.")
      "This package provides a library to handle system accessors and storage
 for X.509 certificates.")
     (license license:bsd-3)))
+
+(define-public ghc-crypto-cipher-types
+  (package
+    (name "ghc-crypto-cipher-types")
+    (version "0.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "crypto-cipher-types-" version "/"
+                           "crypto-cipher-types-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03qa1i1kj07pfrxsi7fiaqnnd0vi94jd4jfswbmnm4gp1nvzcwr0"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-byteable" ,ghc-byteable)
+              ("ghc-securemem" ,ghc-securemem)))
+    (home-page "https://github.com/vincenthz/hs-crypto-cipher")
+    (synopsis "Generic cryptography cipher types for Haskell")
+    (description "This Haskell package provides basic typeclasses and types
+for symmetric ciphers.")
+    (license license:bsd-3)))
+
+(define-public ghc-cipher-aes
+  (package
+    (name "ghc-cipher-aes")
+    (version "0.2.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "cipher-aes-" version "/"
+                           "cipher-aes-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05ahz6kjq0fl1w66gpiqy0vndli5yx1pbsbw9ni3viwqas4p3cfk"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-byteable" ,ghc-byteable)
+              ("ghc-securemem" ,ghc-securemem)
+              ("ghc-crypto-cipher-types" ,ghc-crypto-cipher-types)))
+    (native-inputs `(("ghc-quickcheck" ,ghc-quickcheck)
+                     ("ghc-test-framework" ,ghc-test-framework)
+                     ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+                     ("ghc-crypto-cipher-tests" ,ghc-crypto-cipher-tests)))
+    (home-page "https://github.com/vincenthz/hs-cipher-aes")
+    (synopsis "AES cipher implementation with advanced mode of operations for
+Haskell")
+    (description "This Haskell package provides AES cipher implementation.
+
+The modes of operations available are ECB (Electronic code book), CBC (Cipher
+block chaining), CTR (Counter), XTS (XEX with ciphertext stealing),
+GCM (Galois Counter Mode).
+
+The AES implementation uses AES-NI when available (on x86 and x86-64
+architecture), but fallback gracefully to a software C implementation.
+
+The software implementation uses S-Boxes, which might suffer for cache timing
+issues.  However do notes that most other known software implementations,
+including very popular one (openssl, gnutls) also uses similar
+implementation.  If it matters for your case, you should make sure you have
+AES-NI available, or you'll need to use a different implementation.")
+    (license license:bsd-3)))
+
+(define-public ghc-crypto-random
+  (package
+    (name "ghc-crypto-random")
+    (version "0.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "crypto-random-" version "/"
+                           "crypto-random-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0139kbbb2h7vshf68y3fvjda29lhj7jjwl4vq78w4y8k8hc7l2hp"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-securemem" ,ghc-securemem)
+              ("ghc-vector" ,ghc-vector)))
+    (home-page "https://github.com/vincenthz/hs-crypto-random")
+    (synopsis "Simple cryptographic random related types for Haskell")
+    (description "Simple cryptographic random related types: a safe
+abstraction for CPRNGs.")
+    (license license:bsd-3)))
+
+(define-public ghc-cprng-aes
+  (package
+    (name "ghc-cprng-aes")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "cprng-aes-" version "/"
+                           "cprng-aes-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wr15kbmk1g3l8a75n0iwbzqg24ixv78slwzwb2q6rlcvq0jlnb4"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-byteable" ,ghc-byteable)
+              ("ghc-crypto-random" ,ghc-crypto-random)
+              ("ghc-cipher-aes" ,ghc-cipher-aes)))
+    (home-page "https://github.com/vincenthz/hs-cprng-aes")
+    (synopsis "Crypto Pseudo Random Number Generator using AES in counter mode
+in Haskell")
+    (description "Simple crypto pseudo-random-number-generator with really
+good randomness property.
+
+Using ent, a randomness property maker on one 1Mb sample:
+
+@itemize
+@item Entropy = 7.999837 bits per byte.
+@item Optimum compression would reduce the size of this 1048576 byte file by 0
+percent.
+@item Chi square distribution for 1048576 samples is 237.02.
+@item Arithmbetic mean value of data bytes is 127.3422 (127.5 = random).
+@item Monte Carlo value for Pi is 3.143589568 (error 0.06 percent).
+@end itemize
+
+Compared to urandom with the same sampling:
+
+@itemize
+@item Entropy = 7.999831 bits per byte.
+@item Optimum compression would reduce the size of this 1048576 byte file by 0
+percent.
+@item Chi square distribution for 1048576 samples is 246.63.
+@item Arithmetic mean value of data bytes is 127.6347 (127.5 = random).
+@item Monte Carlo value for Pi is 3.132465868 (error 0.29 percent).
+@end itemize")
+    (license license:bsd-3)))
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 1190bc63a5..1f19f82f3f 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -901,3 +901,281 @@ of a JSON value into a @code{Data.Aeson.Value}.")
     (synopsis "Unicode aware uri-encoding")
     (description "Unicode aware uri-encoding for Haskell.")
     (license license:bsd-3)))
+
+(define-public ghc-path-pieces
+  (package
+    (name "ghc-path-pieces")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "path-pieces-" version "/"
+                           "path-pieces-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vx3sivcsld76058925hym2j6hm3g71f0qjr7v59f1g2afgx82q8"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-text" ,ghc-text)))
+    (native-inputs `(("ghc-hunit" ,ghc-hunit)
+                     ("ghc-hspec" ,ghc-hspec)
+                     ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://github.com/yesodweb/path-pieces")
+    (synopsis "Used in Yesod to automatically marshall data in the request path")
+    (description  "This Haskell package provides two typeclasses for converting
+Haskell data types to and from route pieces.")
+    (license license:bsd-3)))
+
+(define-public ghc-skein
+  (package
+    (name "ghc-skein")
+    (version "1.0.9.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "skein-" version "/"
+                           "skein-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jdqdk0rz2wnvw735clnj8jh0a9rkrbqjg7vk3w6wczdql6cm0pq"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-cereal" ,ghc-cereal)
+              ("ghc-tagged" ,ghc-tagged)
+              ("ghc-crpto-api" ,ghc-crypto-api)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+    (home-page "https://github.com/yesodweb/path-pieces")
+    (synopsis "Skein family of cryptographic hash functions for Haskell")
+    (description "@uref{(http://www.skein-hash.info, Skein} is a family of
+fast secure cryptographic hash functions designed by Niels Ferguson, Stefan
+Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon
+Callas and Jesse Walker.
+
+This Haskell package uses bindings to the optimized C implementation of Skein.")
+    (license license:bsd-3)))
+
+(define-public ghc-clientsession
+  (package
+    (name "ghc-clientsession")
+    (version "0.9.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "clientsession-" version "/"
+                           "clientsession-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0s6h4ykj16mpf7nlw2iqn2ji0p8g1fn5ni0s7yqaili6vv2as5ar"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-cereal" ,ghc-cereal)
+              ("ghc-tagged" ,ghc-tagged)
+              ("ghc-crypto-api" ,ghc-crypto-api)
+              ("ghc-skein" ,ghc-skein)
+              ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+              ("ghc-entropy" ,ghc-entropy)
+              ("ghc-cprng-aes" ,ghc-cprng-aes)
+              ("ghc-cipher-aes" ,ghc-cipher-aes)
+              ("ghc-crypto-random" ,ghc-crypto-random)
+              ("ghc-setenv" ,ghc-setenv)))
+    (native-inputs `(("ghc-hunit" ,ghc-hunit)
+                     ("ghc-hspec" ,ghc-hspec)
+                     ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://github.com/yesodweb/clientsession/tree/master")
+    (synopsis "Haskell library for securely store session data in a
+client-side cookie")
+    (description "This Haskell package achieves security through AES-CTR
+encryption and Skein-MAC-512-256 authentication.  Uses Base64 encoding to
+avoid any issues with characters.")
+    (license license:expat)))
+
+(define-public ghc-yesod-core
+  (package
+    (name "ghc-yesod-core")
+    (version "1.4.37")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "yesod-core-" version "/"
+                           "yesod-core-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ww8hl0cx2g58zrdx3j6d5m2xwhssbajdqws1xk6rzl7rpfm1b9j"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-wai" ,ghc-wai)
+              ("ghc-extra" ,ghc-extra)
+              ("ghc-text" ,ghc-text)
+              ("ghc-shakespeare" ,ghc-shakespeare)
+              ("ghc-blaze-builder" ,ghc-blaze-builder)
+              ("ghc-mtl" ,ghc-mtl)
+              ("ghc-clientsession" ,ghc-clientsession)
+              ("ghc-random" ,ghc-random)
+              ("ghc-cereal" ,ghc-cereal)
+              ("ghc-old-locale" ,ghc-old-locale)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-monad-control" ,ghc-monad-control)
+              ("ghc-transformers-base" ,ghc-transformers-base)
+              ("ghc-cookie" ,ghc-cookie)
+              ("ghc-http-types" ,ghc-http-types)
+              ("ghc-case-insensitive" ,ghc-case-insensitive)
+              ("ghc-parsec" ,ghc-parsec)
+              ("ghc-vector" ,ghc-vector)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-fast-logger" ,ghc-fast-logger)
+              ("ghc-wai-logger" ,ghc-wai-logger)
+              ("ghc-monad-logger" ,ghc-monad-logger)
+              ("ghc-conduit" ,ghc-conduit)
+              ("ghc-resourcet" ,ghc-resourcet)
+              ("ghc-lifted-base" ,ghc-lifted-base)
+              ("ghc-blaze-html" ,ghc-blaze-html)
+              ("ghc-blaze-markup" ,ghc-blaze-markup)
+              ("ghc-data-default" ,ghc-data-default)
+              ("ghc-safe" ,ghc-safe)
+              ("ghc-warp" ,ghc-warp)
+              ("ghc-unix-compat" ,ghc-unix-compat)
+              ("ghc-conduit-extra" ,ghc-conduit-extra)
+              ("ghc-exceptions" ,ghc-exceptions)
+              ("ghc-deepseq-generics" ,ghc-deepseq-generics)
+              ("ghc-mwc-random" ,ghc-mwc-random)
+              ("ghc-primitive" ,ghc-primitive)
+              ("ghc-word8" ,ghc-word8)
+              ("ghc-auto-update" ,ghc-auto-update)
+              ("ghc-semigroups" ,ghc-semigroups)
+              ("ghc-byteable" ,ghc-byteable)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)
+                     ("ghc-path-pieces" ,ghc-path-pieces)
+                     ("ghc-hunit" ,ghc-hunit)
+                     ("ghc-hspec-expectations" ,ghc-hspec-expectations)
+                     ("ghc-quickcheck" ,ghc-quickcheck)
+                     ("ghc-network" ,ghc-network)
+                     ("ghc-async" ,ghc-async)
+                     ("ghc-streaming-commons" ,ghc-streaming-commons)
+                     ("ghc-wai-extra" ,ghc-wai-extra)))
+    (home-page "https://www.yesodweb.com")
+    (synopsis "Core package for the Yesod web framework")
+    (description "This Haskell package provides all core functionality, for
+Yesod, on which other packages can be built.  It provides dispatch, handler
+functions, widgets, etc.")
+    (license license:expat)))
+
+(define-public ghc-yesod-persistent
+  (package
+    (name "ghc-yesod-persistent")
+    (version "1.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "yesod-persistent-" version "/"
+                           "yesod-persistent-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0kiksw46c8ww9yiwl28pkrppx8d6fhsasr0hvmsliqbrp16likj8"))))
+    (build-system haskell-build-system)
+    (arguments `(#:tests? #f)) ; FIXME: hspec-discover not available in PATH.
+    (inputs `(("ghc-yesod-core" ,ghc-yesod-core)
+              ("ghc-persistent" ,ghc-persistent)
+              ("ghc-persistent-template" ,ghc-persistent-template)
+              ("ghc-blaze-builder" ,ghc-blaze-builder)
+              ("ghc-conduit" ,ghc-conduit)
+              ("ghc-resourcet" ,ghc-resourcet)
+              ("ghc-resource-pool" ,ghc-resource-pool)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)
+                     ("ghc-wai-extra" ,ghc-wai-extra)
+                     ("ghc-yesod-core" ,ghc-yesod-core)
+                     ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)
+                     ("ghc-text" ,ghc-text)))
+    (home-page "http://www.yesodweb.com/")
+    (synopsis "Helpers for using Persistent from Yesod")
+    (description "This Haskell package provides helpers for using Persistent
+from Yesod.")
+    (license license:expat)))
+
+(define-public ghc-yesod-form
+    (package
+    (name "ghc-yesod-form")
+    (version "1.4.16")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/yesod-form/yesod-form-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+            "0lij3m5vn8nvh6y88r1dhk03xmmjwmjzazm307nc2wvc5fmx9p2j"))))
+    (build-system haskell-build-system)
+    (inputs
+      `(("ghc-yesod-core" ,ghc-yesod-core)
+        ("ghc-yesod-persistent" ,ghc-yesod-persistent)
+        ("ghc-shakespeare" ,ghc-shakespeare)
+        ("ghc-persistent" ,ghc-persistent)
+        ("ghc-data-default" ,ghc-data-default)
+        ("ghc-xss-sanitize" ,ghc-xss-sanitize)
+        ("ghc-blaze-builder" ,ghc-blaze-builder)
+        ("ghc-email-validate" ,ghc-email-validate)
+        ("ghc-text" ,ghc-text)
+        ("ghc-wai" ,ghc-wai)
+        ("ghc-blaze-html" ,ghc-blaze-html)
+        ("ghc-blaze-markup" ,ghc-blaze-markup)
+        ("ghc-attoparsec" ,ghc-attoparsec)
+        ("ghc-byteable" ,ghc-byteable)
+        ("ghc-aeson" ,ghc-aeson)
+        ("ghc-resourcet" ,ghc-resourcet)
+        ("ghc-semigroups" ,ghc-semigroups)
+        ("ghc-network-uri" ,ghc-network-uri)
+        ("ghc-hspec" ,ghc-hspec)))
+    (home-page "https://www.yesodweb.com")
+    (synopsis "Form handling support for Yesod Web Framework")
+    (description "This Haskell package provies a set of basic form inputs such
+as text, number, time, checkbox, select, textarea, etc through the
+@code{Yesod.Form.Fields} module.  Also, there is @code{Yesod.Form.Nic} module
+providing richtext field using Nic editor. ")
+    (license license:expat)))
+
+(define-public ghc-yesod
+  (package
+    (name "ghc-yesod")
+    (version "1.4.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/yesod/yesod-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1sg66nq8yaas2m5nqsdrxricvcizd1ik02zqk60sxh3wna08fz16"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-yesod-core" ,ghc-yesod-core)
+       ("ghc-yesod-persistent" ,ghc-yesod-persistent)
+       ("ghc-yesod-form" ,ghc-yesod-form)
+       ("ghc-monad-control" ,ghc-monad-control)
+       ("ghc-wai" ,ghc-wai)
+       ("ghc-wai-extra" ,ghc-wai-extra)
+       ("ghc-warp" ,ghc-warp)
+       ("ghc-blaze-html" ,ghc-blaze-html)
+       ("ghc-blaze-markup" ,ghc-blaze-markup)
+       ("ghc-aeson" ,ghc-aeson)
+       ("ghc-data-default-class" ,ghc-data-default-class)
+       ("ghc-unordered-containers" ,ghc-unordered-containers)
+       ("ghc-yaml" ,ghc-yaml)
+       ("ghc-text" ,ghc-text)
+       ("ghc-monad-logger" ,ghc-monad-logger)
+       ("ghc-fast-logger" ,ghc-fast-logger)
+       ("ghc-conduit" ,ghc-conduit)
+       ("ghc-conduit-extra" ,ghc-conduit-extra)
+       ("ghc-resourcet" ,ghc-resourcet)
+       ("ghc-shakespeare" ,ghc-shakespeare)
+       ("ghc-streaming-commons" ,ghc-streaming-commons)
+       ("ghc-wai-logger" ,ghc-wai-logger)
+       ("ghc-semigroups" ,ghc-semigroups)))
+    (home-page "https://www.yesodweb.com")
+    (synopsis "Framework for creating type-safe, RESTful web applications")
+    (description "The Haskell package package groups together the various
+Yesod related packages into one cohesive whole.  This is the version of Yesod,
+whereas most of the core code lives in @code{ghc-yesod-core}.")
+    (license license:expat)))
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index b6f8addf8e..f2c546d08b 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -6253,7 +6253,7 @@ better for some purposes.")
 (define-public ghc-conduit-extra
   (package
     (name "ghc-conduit-extra")
-    (version "1.1.13.3")
+    (version "1.1.14")
     (source
      (origin
        (method url-fetch)
@@ -6262,7 +6262,7 @@ better for some purposes.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0j3cqpkrn7lbpviv6w0gjh93fjjbh1an2sq0yz7svaawja8civy2"))))
+         "1ij3qcfk7q90fl6gklpy2k5ka9jgzrvs8frq0gy7gdcgyaabqfkg"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-conduit" ,ghc-conduit)
@@ -7824,7 +7824,7 @@ bytestrings and their hexademical representation.")
 (define-public ghc-psqueues
   (package
     (name "ghc-psqueues")
-    (version "0.2.2.3")
+    (version "0.2.6.0")
     (source
      (origin
        (method url-fetch)
@@ -7833,7 +7833,7 @@ bytestrings and their hexademical representation.")
                            "psqueues-" version ".tar.gz"))
        (sha256
         (base32
-         "1dd6xv1wjxj1xinx155b14hijw8fafrg4096srzdzj7xyqq7qxbd"))))
+         "0n39s1i88j6s7vvsdhpbhcr3gpbwlzabwcc3nbd7nqb4kb4i0sls"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-hashable" ,ghc-hashable)))
@@ -7844,7 +7844,7 @@ bytestrings and their hexademical representation.")
        ("ghc-test-framework" ,ghc-test-framework)
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
        ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
-    (home-page "https://github.com/bttr/psqueues")
+    (home-page "https://github.com/jaspervdj/psqueues")
     (synopsis "Pure priority search queues")
     (description "The psqueues package provides
 @uref{https://en.wikipedia.org/wiki/Priority_queue, Priority Search Queues} in
@@ -8001,6 +8001,7 @@ Double.")
         (base32
          "1sv5vabsx332v1lpb6v3jv4zrzvpx1n7yprzd8wlcda5vsc5a6zp"))))
     (build-system haskell-build-system)
+    (arguments `(#:tests? #f))  ; FIXME: 1 test fails.
     (inputs
      `(("ghc-vector" ,ghc-vector)
        ("ghc-vector-th-unbox" ,ghc-vector-th-unbox)))
@@ -8304,7 +8305,8 @@ and regression and autocorrelation analysis.
          "0bszq6fijnr4pmadzz89smj7kfmzx0ca3wd9ga8gv0in9jk9vgp1"))))
     (build-system haskell-build-system)
     (inputs `(("ghc-vector" ,ghc-vector)
-              ("ghc-semigroups" ,ghc-semigroups)))
+              ("ghc-semigroups" ,ghc-semigroups)
+              ("ghc-text" ,ghc-text)))
     (home-page "https://github.com/snoyberg/mono-traversable")
     (synopsis "Typeclasses for dealing with various chunked data
 representations for Haskell")
@@ -8865,4 +8867,605 @@ Foundation has the following goals:
 @end enumerate\n")
     (license license:bsd-3)))
 
+(define-public ghc-stm-chans
+  (package
+    (name "ghc-stm-chans")
+    (version "3.0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "stm-chans-" version "/"
+                           "stm-chans-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0f27sp09yha43xk9q55sc185jyjs5h7gq2dhsyx6bm9kz9dzqi13"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-stm" ,ghc-stm)))
+    (home-page "https://hackage.haskell.org/package/stm-chans")
+    (synopsis "Additional types of channels for ghc-stm")
+    (description "This Haskell package offers a collection of channel types,
+similar to @code{Control.Concurrent.STM.@{TChan,TQueue@}} but with additional
+features.")
+    (license license:bsd-3)))
+
+(define-public ghc-monad-loops
+  (package
+    (name "ghc-monad-loops")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "monad-loops-" version "/"
+                           "monad-loops-" version ".tar.gz"))
+       (sha256
+        (base32
+         "062c2sn3hc8h50p1mhqkpyv6x8dydz2zh3ridvlfjq9nqimszaky"))))
+    (build-system haskell-build-system)
+    (native-inputs `(("ghc-tasty" ,ghc-tasty)
+                     ("ghc-tasty-hunit" ,ghc-tasty-hunit)))
+    (home-page "https://github.com/mokus0/monad-loops")
+    (synopsis "Monadic loops for Haskell")
+    (description "This Haskell package provides some useful control
+operators for looping.")
+    (license license:public-domain)))
+
+(define-public ghc-monad-logger
+  (package
+    (name "ghc-monad-logger")
+    (version "0.3.25.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "monad-logger-" version "/"
+                           "monad-logger-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0yv4fsi566zrn30j2g5l901lyqgmflhvzy4hji7ikcbh5d45m920"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-transformers-compat" ,ghc-transformers-compat)
+              ("ghc-text" ,ghc-text)
+              ("ghc-stm" ,ghc-stm)
+              ("ghc-stm-chans" ,ghc-stm-chans)
+              ("ghc-lifted-base" ,ghc-lifted-base)
+              ("ghc-resourcet" ,ghc-resourcet)
+              ("ghc-conduit" ,ghc-conduit)
+              ("ghc-conduit-extra" ,ghc-conduit-extra)
+              ("ghc-fast-logger" ,ghc-fast-logger)
+              ("ghc-transformers-base" ,ghc-transformers-base)
+              ("ghc-monad-control" ,ghc-monad-control)
+              ("ghc-monad-loops" ,ghc-monad-loops)
+              ("ghc-mtl" ,ghc-mtl)
+              ("ghc-blaze-builder" ,ghc-blaze-builder)
+              ("ghc-exceptions" ,ghc-exceptions)))
+    (home-page "https://github.com/kazu-yamamoto/logger")
+    (synopsis "Provides a class of monads which can log messages for Haskell")
+    (description "This Haskell package uses a monad transformer approach
+for logging.
+
+This package provides Template Haskell functions for determining source
+code locations of messages.")
+    (license license:expat)))
+
+(define-public ghc-shakespeare
+  (package
+    (name "ghc-shakespeare")
+    (version "2.0.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "shakespeare-" version "/"
+                           "shakespeare-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0j5zx8ka7d7scvb9shm7k3376qzl3k4kpim9aqqfs6n86901zpl4"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-parsec" ,ghc-parsec)
+              ("ghc-text" ,ghc-text)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-blaze-markup" ,ghc-blaze-markup)
+              ("ghc-blaze-html" ,ghc-blaze-html)
+              ("ghc-exceptions" ,ghc-exceptions)
+              ("ghc-vector" ,ghc-vector)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-scientific" ,ghc-scientific)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)
+                     ("ghc-hunit" ,ghc-hunit)
+                     ("hspec-discover" ,hspec-discover)))
+    (home-page "https://www.yesodweb.com/book/shakespearean-templates")
+    (synopsis "Family of type-safe template languages for Haskell")
+    (description "This Haskell package provides a family of type-safe
+templates with simple variable interpolation.  Shakespeare templates can
+be used inline with a quasi-quoter or in an external file and it
+interpolates variables according to the type being inserted.")
+    (license license:expat)))
+
+(define-public ghc-securemem
+  (package
+    (name "ghc-securemem")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "securemem-" version "/"
+                           "securemem-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0dkhhjxa7njc3qbgvd5a23rkvr39vj2kn2a9nk6yjg7a8b2hvdpy"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-byteable" ,ghc-byteable)
+              ("ghc-memory" ,ghc-memory)))
+    (home-page "https://github.com/vincenthz/hs-securemem")
+    (synopsis "Auto-scrubbing and const-time-eq memory chunk abstraction for
+Haskell")
+    (description "SecureMem is similar to ByteString, except that it provides
+a memory chunk that will be auto-scrubbed after it run out of scope.")
+    (license license:bsd-3)))
+
+(define-public ghc-resource-pool
+  (package
+    (name "ghc-resource-pool")
+    (version "0.2.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "resource-pool-" version "/"
+                           "resource-pool-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04mw8b9djb14zp4rdi6h7mc3zizh597ffiinfbr4m0m8psifw9w6"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-hashable" ,ghc-hashable)
+              ("ghc-monad-control" ,ghc-monad-control)
+              ("ghc-transformers-base" ,ghc-transformers-base)
+              ("ghc-stm" ,ghc-stm)
+              ("ghc-vector" ,ghc-vector)))
+    (home-page "https://github.com/bos/pool")
+    (synopsis "Striped resource pooling implementation in Haskell")
+    (description "This Haskell package provides striped pooling abstraction
+for managing flexibly-sized collections of resources such as database
+connections.")
+    (license license:bsd-3)))
+
+(define-public ghc-attoparsec-iso8601
+  (package
+    (name "ghc-attoparsec-iso8601")
+    (version "1.0.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "attoparsec-iso8601-" version "/"
+                           "attoparsec-iso8601-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12l55b76bhya9q89mfmqmy6sl5v39b6gzrw5rf3f70vkb23nsv5a"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+              ("ghc-base-compat" ,ghc-base-compat)
+              ("ghc-text" ,ghc-text)))
+    (home-page "https://github.com/bos/aeson")
+    (synopsis "Parse ISO 8601 dates")
+    (description "Haskell library for parsing of ISO 8601 dates, originally
+from aeson.")
+    (license license:bsd-3)))
+
+(define-public ghc-th-lift-instances
+  (package
+    (name "ghc-th-lift-instances")
+    (version "0.1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "th-lift-instances-" version "/"
+                           "th-lift-instances-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1f56cp6ckcalld5jchv0kxpjkwcsixd7smd0g7r8cg67ppx6m90x"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-th-lift" ,ghc-th-lift)
+              ("ghc-vector" ,ghc-vector)
+              ("ghc-text" ,ghc-text)))
+    (native-inputs `(("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://github.com/bennofs/th-lift-instances")
+    (synopsis "Lift instances for template-haskell for common data types")
+    (description "Most data types in the Haskell platform do not have Lift
+instances.  This package provides orphan instances for containers, text,
+bytestring and vector.")
+    (license license:bsd-3)))
+
+(define-public ghc-generics-sop
+  (package
+    (name "ghc-generics-sop")
+    (version "0.3.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "generics-sop-" version "/"
+                           "generics-sop-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bazlhgmxcwv7vd44jhdx74cnhmaz6yy47jxfycapjj4mjrnp0x7"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-transformers-compat" ,ghc-transformers-compat)))
+    (home-page "https://github.com/well-typed/generics-sop")
+    (synopsis "Generic Programming using True Sums of Products for Haskell")
+    (description "This Haskell package supports the definition of generic
+functions.  Datatypes are viewed in a uniform, structured way: the choice
+between constructors is represented using an n-ary sum, and the arguments of
+each constructor are represented using an n-ary product.")
+    (license license:bsd-3)))
+
+(define-public ghc-uri-bytestring
+  (package
+    (name "ghc-uri-bytestring")
+    (version "0.3.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "uri-bytestring-" version "/"
+                           "uri-bytestring-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04qjv1sgyrdg538290p9hqnvyxnahvr5cjwl8vm1rn9j0fv3ymq9"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+              ("ghc-fail" ,ghc-fail)
+              ("ghc-blaze-builder" ,ghc-blaze-builder)
+              ("ghc-th-lift-instances" ,ghc-th-lift-instances)))
+    (native-inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+                     ("ghc-hunit" ,ghc-hunit)
+                     ("ghc-quickcheck" ,ghc-quickcheck)
+                     ("ghc-tasty" ,ghc-tasty)
+                     ("ghc-tasty-hunit" ,ghc-tasty-hunit)
+                     ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
+                     ("ghc-base-compat" ,ghc-base-compat)
+                     ("ghc-quickcheck-instances" ,ghc-quickcheck-instances)
+                     ("ghc-semigroups" ,ghc-semigroups)
+                     ("ghc-generics-sop" ,ghc-generics-sop)))
+    (home-page "https://github.com/Soostone/uri-bytestring")
+    (synopsis "Haskell URI parsing as ByteStrings")
+    (description "This Haskell package aims to be an RFC3986 compliant URI
+parser that uses ByteStrings for parsing and representing the URI data.")
+    (license license:bsd-3)))
+
+(define-public ghc-time-locale-compat
+  (package
+    (name "ghc-time-locale-compat")
+    (version "0.1.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "time-locale-compat-" version "/"
+                           "time-locale-compat-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vdcfr2hp9qh3ag90x6ikbdf42wiqpdylnplffna54bpnilbyi4i"))))
+    (build-system haskell-build-system)
+    (home-page "https://github.com/khibino/haskell-time-locale-compat")
+    (synopsis "Compatibility of TimeLocale between old-locale and time-1.5")
+    (description "This Haskell package contains wrapped name module for
+TimeLocale.")
+    (license license:bsd-3)))
+
+(define-public ghc-http-api-data
+  (package
+    (name "ghc-http-api-data")
+    (version "0.3.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "http-api-data-" version "/"
+                           "http-api-data-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zbmf0kkfsw7pfznisi205gh7jd284gfarxsyiavd2iw26akwqwc"))))
+    (build-system haskell-build-system)
+    (arguments `(#:tests? #f))  ;  FIXME: Tests require QuickCheck >= 2.9
+    (inputs `(("ghc-attoparsec" ,ghc-attoparsec)
+              ("ghc-attoparsec-iso8601" ,ghc-attoparsec-iso8601)
+              ("ghc-hashable" ,ghc-hashable)
+              ("ghc-http-types" ,ghc-http-types)
+              ("ghc-text" ,ghc-text)
+              ("ghc-time-locale-compat" ,ghc-time-locale-compat)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-uri-bytestring" ,ghc-uri-bytestring)
+              ("ghc-uuid-types" ,ghc-uuid-types)))
+    (home-page "https://github.com/fizruk/http-api-data")
+    (synopsis "Convert to/from HTTP API data like URL pieces, headers and
+query parameters")
+    (description "This Haskell package defines typeclasses used for converting
+Haskell data types to and from HTTP API data.")
+    (license license:bsd-3)))
+
+(define-public ghc-persistent
+  (package
+    (name "ghc-persistent")
+    (version "2.7.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "persistent-" version "/"
+                           "persistent-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jbvavdvr9qz5ld7vf6l1jgiadhmxx6zc4vqsdk9ivfq6d5wlg1p"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-old-locale" ,ghc-old-locale)
+              ("ghc-text" ,ghc-text)
+              ("ghc-conduit" ,ghc-conduit)
+              ("ghc-resourcet" ,ghc-resourcet)
+              ("ghc-exceptions" ,ghc-exceptions)
+              ("ghc-monad-control" ,ghc-monad-control)
+              ("ghc-lifted-base" ,ghc-lifted-base)
+              ("ghc-resource-pool" ,ghc-resource-pool)
+              ("ghc-path-pieces" ,ghc-path-pieces)
+              ("ghc-http-api-data" ,ghc-http-api-data)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-monad-logger" ,ghc-monad-logger)
+              ("ghc-transformers-base" ,ghc-transformers-base)
+              ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-vector" ,ghc-vector)
+              ("ghc-attoparsec" ,ghc-attoparsec)
+              ("ghc-haskell-src-meta" ,ghc-haskell-src-meta)
+              ("ghc-blaze-html" ,ghc-blaze-html)
+              ("ghc-blaze-markup" ,ghc-blaze-markup)
+              ("ghc-silently" ,ghc-silently)
+              ("ghc-mtl" ,ghc-mtl)
+              ("ghc-fast-logger" ,ghc-fast-logger)
+              ("ghc-scientific" ,ghc-scientific)
+              ("ghc-tagged" ,ghc-tagged)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+    (home-page "https://www.yesodweb.com/book/persistent")
+    (synopsis "Type-safe, multi-backend data serialization for Haskell")
+    (description "This Haskell package allows Haskell programs to access data
+storage sytems like PostgreSQL, SQLite, MySQL and MongoDB in a type-safe
+way.")
+    (license license:expat)))
+
+(define-public ghc-aeson-compat
+  (package
+    (name "ghc-aeson-compat")
+    (version "0.3.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "aeson-compat-" version "/"
+                           "aeson-compat-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jya3lm9imclhb8qqihv39hhb62vvs3qpws7pc5fc23vwg0hsx2r"))))
+    (build-system haskell-build-system)
+    (arguments `(#:tests? #f))  ;  FIXME: Tests require QuickCheck >= 2.10
+    (inputs `(("ghc-base-compat" ,ghc-base-compat)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-attoparsec" ,ghc-attoparsec)
+              ("ghc-attoparsec" ,ghc-attoparsec-iso8601)
+              ("ghc-exceptions" ,ghc-exceptions)
+              ("ghc-hashable" ,ghc-hashable)
+              ("ghc-scientific" ,ghc-scientific)
+              ("ghc-text" ,ghc-text)
+              ("ghc-time-locale-compat" ,ghc-time-locale-compat)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-vector" ,ghc-vector)
+              ("ghc-tagged" ,ghc-tagged)
+              ("ghc-semigroups" ,ghc-semigroups)
+              ("ghc-nats" ,ghc-nats)))
+    (home-page "https://github.com/phadej/aeson-compat")
+    (synopsis "Compatibility layer for ghc-aeson")
+    (description "This Haskell package provides compatibility layer for
+ghc-aeson.")
+    (license license:bsd-3)))
+
+(define-public ghc-persistent-template
+  (package
+    (name "ghc-persistent-template")
+    (version "2.5.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "persistent-template-" version "/"
+                           "persistent-template-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0449piw3n02q7dag7k1pakfmzmf3ms4wk1qmnagczpm1ckajinwd"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-persistent" ,ghc-persistent)
+              ("ghc-monad-control" ,ghc-monad-control)
+              ("ghc-text" ,ghc-text)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-aeson-compat" ,ghc-aeson-compat)
+              ("ghc-monad-logger" ,ghc-monad-logger)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)
+              ("ghc-tagged" ,ghc-tagged)
+              ("ghc-path-pieces" ,ghc-path-pieces)
+              ("ghc-http-api-data" ,ghc-http-api-data)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)
+                     ("ghc-quickcheck" ,ghc-quickcheck)))
+    (home-page "https://www.yesodweb.com/book/persistent")
+    (synopsis "Type-safe, non-relational, multi-backend persistence")
+    (description "This Haskell package provides interfaces and helper
+functions for the ghc-persistent package.")
+    (license license:expat)))
+
+(define-public ghc-unliftio-core
+  (package
+    (name "ghc-unliftio-core")
+    (version "0.1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "unliftio-core-" version "/"
+                           "unliftio-core-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1193fplsjm1lcr05xwvkj1rsyzx74i755f6kw3ikmxbsv0bv0l3m"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://github.com/fpco/unliftio/tree/master/unliftio-core#readme")
+    (synopsis "The MonadUnliftIO typeclass for unlifting monads to IO")
+    (description "This Haskell package provides the core @code{MonadUnliftIO}
+typeclass, instances for base and transformers, and basic utility
+functions.")
+    (license license:expat)))
+
+(define-public ghc-microlens
+  (package
+    (name "ghc-microlens")
+    (version "0.4.8.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "microlens-" version "/"
+                           "microlens-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17qx2mbqdrlnkc3gxq8njbp7qw8nh51drmz6fc8khgj9bls5ni2k"))))
+    (build-system haskell-build-system)
+    (home-page
+     "https://github.com/aelve/microlens")
+    (synopsis "Provides a tiny lens Haskell library with no dependencies")
+    (description "This Haskell package provides a lens library, just like
+@code{ghc-lens}, but smaller.  It provides essential lenses and
+traversals (like @code{_1} and @code{_Just}), as well as ones which are simply
+nice to have (like @code{each}, @code{at}, and @code{ix}), and some
+combinators (like @code{failing} and @code{singular}), but everything else is
+stripped.  As the result, this package has no dependencies.")
+    (license license:bsd-3)))
+
+(define-public ghc-microlens-th
+  (package
+    (name "ghc-microlens-th")
+    (version "0.4.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "microlens-th-" version "/"
+                           "microlens-th-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15a12cqxlgbcn1n73zwrxnp2vfm8b0ma0a0sdd8zmjbs8zy3np4f"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-microlens" ,ghc-microlens)))
+    (home-page
+     "https://github.com/aelve/microlens")
+    (synopsis "Automatic generation of record lenses for
+@code{ghc-microlens}")
+    (description "This Haskell package lets you automatically generate lenses
+for data types; code was extracted from the lens package, and therefore
+generated lenses are fully compatible with ones generated by lens (and can be
+used both from lens and microlens).")
+    (license license:bsd-3)))
+
+(define-public ghc-unliftio
+  (package
+    (name "ghc-unliftio")
+    (version "0.2.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/unliftio/unliftio-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0vpncmwaq5zb6bziqfns4qdgxmq8ky0rlxna2yngxp170s5zxx9z"))))
+    (build-system haskell-build-system)
+    (arguments `(#:tests? #f)) ; FIXME: hspec-discover not in PATH
+    (inputs
+     `(("ghc-async" ,ghc-async)
+       ("ghc-stm" ,ghc-stm)
+       ("ghc-unliftio-core" ,ghc-unliftio-core)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)))
+    (home-page "https://github.com/fpco/unliftio")
+    (synopsis "Provides MonadUnliftIO typecplass for unlifting monads to
+IO (batteries included)")
+    (description "This Haskell package provides the core @code{MonadUnliftIO}
+typeclass, a number of common instances, and a collection of common functions
+working with it.")
+    (license license:expat)))
+
+(define-public ghc-persistent-sqlite
+  (package
+    (name "ghc-persistent-sqlite")
+    (version "2.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hackage.haskell.org/package/"
+                           "persistent-sqlite-" version "/"
+                           "persistent-sqlite-" version ".tar.gz"))
+       (sha256
+        (base32
+         "16mc2ra0hbyyc8ckjlxxc11bpskdymbr8c3g6ih6wzik639xprbm"))))
+    (build-system haskell-build-system)
+    (inputs `(("ghc-persistent" ,ghc-persistent)
+              ("ghc-unliftio-core" ,ghc-unliftio-core)
+              ("ghc-aeson" ,ghc-aeson)
+              ("ghc-conduit" ,ghc-conduit)
+              ("ghc-monad-logger" ,ghc-monad-logger)
+              ("ghc-microlens-th" ,ghc-microlens-th)
+              ("ghc-resourcet" ,ghc-resourcet)
+              ("ghc-old-locale" ,ghc-old-locale)
+              ("ghc-resource-pool" ,ghc-resource-pool)
+              ("ghc-unordered-containers" ,ghc-unordered-containers)))
+    (native-inputs `(("ghc-hspec" ,ghc-hspec)
+                     ("ghc-persistent-template" ,ghc-persistent-template)
+                     ("ghc-temporary" ,ghc-temporary)
+                     ("ghc-text" ,ghc-text)))
+    (home-page
+     "https://www.yesodweb.com/book/persistent")
+    (synopsis "Backend for the persistent library using sqlite3")
+    (description "This Haskell package includes a thin sqlite3 wrapper based
+on the direct-sqlite package, as well as the entire C library, so there are no
+system dependencies.")
+    (license license:expat)))
+
+(define-public ghc-email-validate
+  (package
+    (name "ghc-email-validate")
+    (version "2.3.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://hackage.haskell.org/package/"
+             "email-validate/email-validate-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0qvxysiap3r4mi3xff5nsk9qv6diqxfgwj186bypbamzvzlz0lav"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-doctest" ,ghc-doctest)))
+    (home-page
+     "https://github.com/Porges/email-validate-hs")
+    (synopsis "Email address validator for Haskell")
+    (description
+     "This Haskell package provides a validator that can validate an email
+address string against RFC 5322.")
+    (license license:bsd-3)))
+
 ;;; haskell.scm ends here
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index c3b86bb58d..3802256ca1 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -337,13 +337,13 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t
 (define-public jpegoptim
   (package
    (name "jpegoptim")
-   (version "1.4.4")
+   (version "1.4.5")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://www.kokkonen.net/tjko/src/jpegoptim-"
                                 version ".tar.gz"))
             (sha256 (base32
-                     "1cn1i0g1xjdwa12w0ifbnzgb1vqbpr8ji6h05vxksj79vyi3x849"))))
+                     "1mngi8c4mhzwa7i4wqrqq6i80cqj4adbacblfvk6dy573wywyxmi"))))
    (build-system gnu-build-system)
    (inputs `(("libjpeg" ,libjpeg)))
    (arguments
@@ -355,7 +355,7 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t
 the Huffman tables) and \"lossy\" optimization based on setting
 maximum quality factor.")
    (license license:gpl2+)
-   (home-page "http://www.kokkonen.net/tjko/projects.html#jpegoptim")))
+   (home-page "https://www.kokkonen.net/tjko/projects.html#jpegoptim")))
 
 (define-public libicns
   (package
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 5249d3bb89..2b8ba7035d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -4193,6 +4193,66 @@ in the @code{java.lang} package.  The following classes are included:
 @end itemize\n")
     (license license:asl2.0)))
 
+(define-public java-commons-bsf
+  (package
+    (name "java-commons-bsf")
+    (version "2.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/commons/bsf/source/bsf-src-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1sbamr8jl32p1jgf59nw0b2w9qivyg145954hm6ly54cfgsqrdas"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file
+                            (find-files "." "\\.jar$"))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "jar"
+       #:tests? #f; No test file
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'create-properties
+           (lambda _
+             ;; This file is missing from the distribution
+             (call-with-output-file "build-properties.xml"
+               (lambda (port)
+                 (sxml->xml
+                  `(project (@ (basedir ".") (name "build-properties") (default ""))
+                     (property (@ (name "project.name") (value "bsf")))
+                     (property (@ (name "source.level") (value "1.5")))
+                     (property (@ (name "build.lib") (value "build/jar")))
+                     (property (@ (name "src.dir") (value "src")))
+                     (property (@ (name "tests.dir") (value "src/org/apache/bsf/test")))
+                     (property (@ (name "build.tests") (value "build/test-classes")))
+                     (property (@ (name "build.dest") (value "build/classes"))))
+                  port)))))
+         (replace 'install (install-jars "build")))))
+    (native-inputs
+     `(("java-junit" ,java-junit)))
+    (inputs
+     `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
+    (home-page "https://commons.apache.org/proper/commons-bsf")
+    (synopsis "Bean Scripting Framework")
+    (description "The Bean Scripting Framework (BSF) is a set of Java classes
+which provides scripting language support within Java applications, and access
+to Java objects and methods from scripting languages.  BSF allows one to write
+JSPs in languages other than Java while providing access to the Java class
+library.  In addition, BSF permits any Java application to be implemented in
+part (or dynamically extended) by a language that is embedded within it.  This
+is achieved by providing an API that permits calling scripting language engines
+from within Java, as well as an object registry that exposes Java objects to
+these scripting language engines.")
+    (license license:asl2.0)))
+
 (define-public java-jsr305
   (package
     (name "java-jsr305")
@@ -5395,14 +5455,14 @@ logging framework for Java.")))
 (define-public java-commons-cli
   (package
     (name "java-commons-cli")
-    (version "1.3.1")
+    (version "1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/commons/cli/source/"
                                   "commons-cli-" version "-src.tar.gz"))
               (sha256
                (base32
-                "1fkjn552i12vp3xxk21ws4p70fi0lyjm004vzxsdaz7gdpgyxxyl"))))
+                "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
     (build-system ant-build-system)
     ;; TODO: javadoc
     (arguments
@@ -9139,6 +9199,39 @@ similar in functionality to BSD editline and GNU readline but with additional
 features that bring it on par with the Z shell line editor.")
     (license license:bsd-3)))
 
+(define-public java-jline-2
+  (package
+    (inherit java-jline)
+    (version "2.14.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/jline/jline2/archive/jline-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1c6qa26mf0viw8hg4jnv72s7i1qb1gh1l8rrzcdvqhqhx82rkdlf"))))
+    (arguments
+     `(#:jdk ,icedtea-8
+       ,@(package-arguments java-jline)))
+    (inputs
+     `(("java-jansi" ,java-jansi)
+       ("java-jansi-native" ,java-jansi-native)))
+    (native-inputs
+     `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)
+       ("java-powermock-modules-junit4-common" ,java-powermock-modules-junit4-common)
+       ("java-powermock-api-easymock" ,java-powermock-api-easymock)
+       ("java-powermock-api-support" ,java-powermock-api-support)
+       ("java-powermock-core" ,java-powermock-core)
+       ("java-powermock-reflect" ,java-powermock-reflect)
+       ("java-easymock" ,java-easymock)
+       ("java-jboss-javassist" ,java-jboss-javassist)
+       ("java-objenesis" ,java-objenesis)
+       ("java-asm" ,java-asm)
+       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-cglib" ,java-cglib)
+       ("java-junit" ,java-junit)
+       ("java-hawtjni" ,java-hawtjni)))))
+
 (define-public java-xmlunit
   (package
     (name "java-xmlunit")
@@ -9241,3 +9334,235 @@ Java programmers to create two-dimensional charts and plots.  The library
 features an assortment of graph styles, including advanced scatter plots, bar
 graphs, and pie charts.")
     (license license:lgpl2.1+)))
+
+(define-public java-commons-httpclient
+  (package
+    (name "java-commons-httpclient")
+    (version "3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/httpcomponents/"
+                                  "commons-httpclient/source/commons-httpclient-"
+                                  version "-src.tar.gz"))
+              (sha256
+               (base32
+                "1wlpn3cfy3d4inxy6g7wxcsa8p7sshn6aldk9y4ia3lb879rd97r"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "compile"
+       #:test-target "test"
+       #:tests? #f; requires junit-textui (junit 3)
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-accent
+           (lambda _
+             (for-each (lambda (file)
+                         (with-fluids ((%default-port-encoding "ISO-8859-1"))
+                          (substitute* file
+                            (("\\* @author Ortwin .*") "* @author Ortwin Glueck\n"))))
+               '("src/java/org/apache/commons/httpclient/HttpContentTooLargeException.java"
+                 "src/examples/TrivialApp.java" "src/examples/ClientApp.java"
+                 "src/test/org/apache/commons/httpclient/TestHttps.java"
+                 "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "ant" "dist"
+                     (string-append "-Ddist.home=" (assoc-ref outputs "out")
+                                    "/share/java"))
+             #t)))))
+    (propagated-inputs
+     `(("java-commons-logging" ,java-commons-logging-minimal)
+       ("java-commons-codec" ,java-commons-codec)))
+    (home-page "https://hc.apache.org")
+    (synopsis "HTTP/1.1 compliant HTTP agent implementation")
+    (description "This package contains an HTTP/1.1 compliant HTTP agent
+implementation.  It also provides reusable components for client-side
+authentication, HTTP state management, and HTTP connection management.")
+    (license license:asl2.0)))
+
+(define-public java-commons-vfs
+  (package
+    (name "java-commons-vfs")
+    (version "2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/commons/vfs/source/"
+                                  "commons-vfs2-distribution-" version "-src.tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1cnq1iaghbp4cslpnvwbp83i5v234x87irssqynhwpfgw7caf1s3"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file
+                            (find-files "." "\\.jar$"))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "commons-vfs.jar"
+       #:source-dir "commons-vfs2/src/main/java"
+       #:test-dir "commons-vfs2/src/test"
+       ; FIXME: tests depend on many things: apache sshd, hadoop, ftpserver, ...
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-hadoop-and-webdav
+           ; Remove these files as they are not required and depend on difficult
+           ; packages.
+           (lambda _
+             (for-each delete-file-recursively
+               '("commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav"
+                 "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs")))))))
+    (inputs
+     `(("java-commons-collections4" ,java-commons-collections4)
+       ("java-commons-compress" ,java-commons-compress)
+       ("java-commons-httpclient" ,java-commons-httpclient)
+       ("java-commons-logging-minimal" ,java-commons-logging-minimal)
+       ("java-commons-net" ,java-commons-net)
+       ("java-jsch" ,java-jsch)))
+    (home-page "http://commons.apache.org/proper/commons-vfs/")
+    (synopsis "Java filesystem library")
+    (description "Commons VFS provides a single API for accessing various
+different file systems.  It presents a uniform view of the files from various
+different sources, such as the files on local disk, on an HTTP server, or
+inside a Zip archive.")
+    (license license:asl2.0)))
+
+(define-public java-jakarta-oro
+  (package
+    (name "java-jakarta-oro")
+    (version "2.0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/jakarta/oro/"
+                                  "jakarta-oro-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (delete-file (string-append "jakarta-oro-" ,version ".jar"))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "package"
+       #:tests? #f; tests are run as part of the build process
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-jars ,(string-append "jakarta-oro-" version))))))
+    (home-page "https://jakarta.apache.org/oro/")
+    (synopsis "Text-processing for Java")
+    (description "The Jakarta-ORO Java classes are a set of text-processing
+Java classes that provide Perl5 compatible regular expressions, AWK-like
+regular expressions, glob expressions, and utility classes for performing
+substitutions, splits, filtering filenames, etc.  This library is the successor
+of the OROMatcher, AwkTools, PerlTools, and TextTools libraries originally
+from ORO, Inc.")
+    (license license:asl1.1)))
+
+(define-public java-native-access
+  (package
+    (name "java-native-access")
+    (version "4.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/java-native-access/jna/"
+                                  "archive/" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0zrpzkib6b905i018a9pqlzkqinphywr6y4jwv6mwp63jjqvqkd9"))
+              (modules '((guix build utils)))
+              (snippet
+                `(begin
+                   (for-each delete-file (find-files "." ".*.jar"))
+                   (delete-file-recursively "native/libffi")
+                   (delete-file-recursively "dist")
+                   #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f; FIXME: tests require reflections.jar
+       #:test-target "test"
+       #:make-flags (list "-Ddynlink.native=true")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-build.xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build.xml"
+               ;; Since we removed the bundled ant.jar, give the correct path
+               (("lib/ant.jar") (string-append (assoc-ref inputs "ant") "/lib/ant.jar"))
+               ;; We removed generated native libraries. We can only rebuild one
+               ;; so don't fail if we can't find a native library for another architecture.
+               (("zipfileset") "zipfileset erroronmissingarchive=\"false\""))
+             ;; Copy test dependencies
+             (copy-file (string-append (assoc-ref inputs "java-junit")
+                                       "/share/java/junit.jar")
+                        "lib/junit.jar")
+             (copy-file (string-append (assoc-ref inputs "java-hamcrest-core")
+                                       "/share/java/hamcrest-core.jar")
+                        "lib/hamcrest-core.jar")
+             ;; FIXME: once reflections.jar is built, copy it to lib/test.
+             #t))
+         (add-before 'build 'build-native
+           (lambda _
+             (invoke "ant" "-Ddynlink.native=true" "native")
+             #t))
+         (replace 'install
+           (install-jars "build")))))
+    (inputs
+     `(("libffi" ,libffi)
+       ("libx11" ,libx11)
+       ("libxt" ,libxt)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-hamcrest-core" ,java-hamcrest-core)))
+    (home-page "https://github.com/java-native-access/jna")
+    (synopsis "Access to native shared libraries from Java")
+    (description "JNA provides Java programs easy access to native shared
+libraries without writing anything but Java code - no JNI or native code is
+required.  JNA allows you to call directly into native functions using natural
+Java method invocation.")
+    ;; Java Native Access project (JNA) is dual-licensed under 2
+    ;; alternative Free licenses: LGPL 2.1 or later and Apache License 2.0.
+    (license (list
+               license:asl2.0
+               license:lgpl2.1+))))
+
+(define-public java-native-access-platform
+  (package
+    (inherit java-native-access)
+    (name "java-native-access-platform")
+    (arguments
+     `(#:test-target "test"
+       #:tests? #f; require jna-test.jar
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'chdir
+           (lambda _
+             (chdir "contrib/platform")
+             #t))
+         (add-after 'chdir 'fix-ant
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "nbproject/project.properties"
+               (("../../build/jna.jar")
+                (string-append (assoc-ref inputs "java-native-access")
+                               "/share/java/jna.jar"))
+               (("../../lib/hamcrest-core-.*.jar")
+                (string-append (assoc-ref inputs "java-hamcrest-core")
+                               "/share/java/hamcrest-core.jar"))
+               (("../../lib/junit.jar")
+                (string-append (assoc-ref inputs "java-junit")
+                               "/share/java/junit.jar")))
+             #t))
+         (replace 'install
+           (install-jars "dist")))))
+    (inputs
+     `(("java-native-access" ,java-native-access)))
+    (synopsis "Cross-platform mappings for jna")
+    (description "java-native-access-platfrom has cross-platform mappings
+and mappings for a number of commonly used platform functions, including a
+large number of Win32 mappings as well as a set of utility classes that
+simplify native access.")))
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 6288c443ad..eeeec406a8 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -373,7 +373,7 @@ means that these shams cause many ES5 methods to silently fail.")
 (define-public mujs
   (package
     (name "mujs")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -382,7 +382,7 @@ means that these shams cause many ES5 methods to silently fail.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1angy1higk8bvh69frjhq1m6znhd75fzalaydz5rfzkdfyw52jgy"))))
+                "15ml3rzjl44lqdb1yxipdh8bhh0rvk2g6w6sjv667q8xywijwqv8"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
index aca2cab0a2..2613db0abd 100644
--- a/gnu/packages/ldc.scm
+++ b/gnu/packages/ldc.scm
@@ -138,8 +138,8 @@ and freshness without requiring additional information from the user.")
          ("tzdata" ,tzdata)
          ("zlib" ,zlib)))
       (native-inputs
-       `(("llvm" ,llvm)
-         ("clang" ,clang)
+       `(("llvm" ,llvm-3.8)
+         ("clang" ,clang-3.8)
          ("python-lit" ,python-lit)
          ("python-wrapper" ,python-wrapper)
          ("unzip" ,unzip)
@@ -246,8 +246,8 @@ bootstrapping more recent compilers written in D.")
                       (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
                       (invoke "make" "test" "-j" (number->string (parallel-job-count))))))))
       (native-inputs
-       `(("llvm" ,llvm)
-         ("clang" ,clang)
+       `(("llvm" ,llvm-3.8)
+         ("clang" ,clang-3.8)
          ("ldc" ,ldc-bootstrap)
          ("python-lit" ,python-lit)
          ("python-wrapper" ,python-wrapper)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index e1812c578c..e7f4195ed4 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -139,7 +139,7 @@ sounds for various system events.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://files.crash.cx/releases/"
+       (uri (string-append "http://ftp.n0.is/pub/releases/"
                            "pycanberra-" version ".tar.xz"))
        (sha256
         (base32
@@ -152,5 +152,5 @@ sounds for various system events.")
     (synopsis "Ctypes wrapper for the libcanberra API")
     (description
      "Pycanberra is a basic Python wrapper for libcanberra.")
-    (home-page "https://code.crash.cx/pycanberra/log.html")
+    (home-page "http://c.n0.is/ng0/pycanberra/")
     (license lgpl2.1+)))
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index 2ef2108df2..053f79811e 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -107,7 +108,7 @@ statements and serializes in normalized format.")
 (define-public licensecheck
   (package
     (name "licensecheck")
-    (version "3.0.33")
+    (version "3.0.34")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -115,7 +116,7 @@ statements and serializes in normalized format.")
                     "v" version ".tar.gz"))
               (sha256
                (base32
-                "0wydxb2jks1k3bxkcp7p0pazh5v3awbbcf6haplvwzkkayszhgs4"))))
+                "0k0acybgibdqg1h6xqnba1jb0spmw7hpq0jbrs7n7gfj22wkz0vd"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-regexp-pattern" ,perl-regexp-pattern)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index a702e85f79..584d72a1c0 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -284,6 +284,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
        ("bc" ,bc)
        ("openssl" ,openssl)
        ("kmod" ,kmod)
+       ("elfutils" ,elfutils)  ; Needed to enable CONFIG_STACK_VALIDATION
+       ("flex" ,flex)
+       ("bison" ,bison)
        ;; On x86, build with GCC-7 for full retpoline support.
        ;; FIXME: Remove this when our default compiler has retpoline support.
        ,@(match (system->linux-architecture
@@ -383,8 +386,8 @@ It has been modified to remove all non-free binary blobs.")
 ;; supports qemu "virt" machine and possibly a large number of ARM boards.
 ;; See : https://wiki.debian.org/DebianKernel/ARMMP.
 
-(define %linux-libre-version "4.15.13")
-(define %linux-libre-hash "1z9f3m44n5w9ayad08h6nvx4nihc28h2jplk4jvyaj0460v8d11f")
+(define %linux-libre-version "4.15.16")
+(define %linux-libre-hash "1nzdaypvw8abas6xr6ijk2wc9f0b6q72xw6ypalwx33p7sdqwrzq")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -392,8 +395,8 @@ It has been modified to remove all non-free binary blobs.")
                     %linux-compatible-systems
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.30")
-(define %linux-libre-4.14-hash "1j1vnr4397y4js7i24jdpfq85mc50b7kjz7gz1bbbrmda6cflwig")
+(define %linux-libre-4.14-version "4.14.33")
+(define %linux-libre-4.14-hash "0ps9whsxc20gw5ags18rgkwgy6fzg66by70g8xjds7nijpzgl69m")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -402,20 +405,20 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.90"
-                    "0mzy6wcxp9m9icb8mvsbywp1lrbvbv6n8rs3xszqm43dxy9zj1jd"
+  (make-linux-libre "4.9.93"
+                    "0flmsh4xy7ymyzwm8y4x4id798mx6vy3d6ala7x1bq41hf00075p"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.124"
-                    "1368x0wki8zhk0hwz36hrkp2lr2kbm9i0fwzws201h3y85mldgh4"
+  (make-linux-libre "4.4.127"
+                    "1av536sp6ancx0fy71wpmqv4r66pksrcjbnrcjggard6im4c8pjy"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.1
-  (make-linux-libre "4.1.50"
-                    "1hl1pk724v2waa55bhxfmxyz9nl6pkcj4dc3l80jfvqdfgr55mm2"
+  (make-linux-libre "4.1.51"
+                    "0l8lpwjpckp44hjyx5qrxqdwwi97gyyc1n6pmk66cr3fpdhnk540"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
@@ -910,14 +913,15 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 (define-public strace
   (package
     (name "strace")
-    (version "4.21")
+    (version "4.22")
+    (home-page "https://strace.io")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://github.com/strace/strace/releases/"
-                                 "download/v" version "/strace-" version ".tar.xz"))
+             (uri (string-append home-page "/files/" version
+                                 "/strace-" version ".tar.xz"))
              (sha256
               (base32
-               "0dsw6xcfrmygidp1dj2ch8cl8icrar7789snkb2r8gh78kdqhxjw"))))
+               "17dkpnsjxmys1ydidm9wcvc3wscsz44fmlxw3dclspn9cj9d1306"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -928,7 +932,6 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
                (("/bin/sh") (which "sh")))
              #t)))))
     (native-inputs `(("perl" ,perl)))
-    (home-page "https://strace.io/")
     (synopsis "System call tracer for Linux")
     (description
      "strace is a system call tracer, i.e. a debugging tool which prints out a
@@ -1122,8 +1125,7 @@ configure the Linux 2.4.x and later IPv4 packet filtering ruleset
 This package also includes @command{ip6tables}, which is used to configure the
 IPv6 packet filter.
 
-Both commands are targeted at system administrators.
-")
+Both commands are targeted at system administrators.")
     (license license:gpl2+)))
 
 (define-public ebtables
@@ -1184,7 +1186,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
 (define-public iproute
   (package
     (name "iproute2")
-    (version "4.15.0")
+    (version "4.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1192,7 +1194,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0mc3g4kj7h3jhwz2b2gdf41gp6bhqn7axh4mnyvhkdnpk5m63m28"))))
+                "02pfalg319jpbjz273ph725br8dnkzpfvi98azi9yd6p1w128p0c"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                                ; no test suite
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index cf60d2aa0d..98592ad090 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,7 +41,7 @@
 (define-public llvm
   (package
     (name "llvm")
-    (version "3.8.1")
+    (version "6.0.0")
     (source
      (origin
       (method url-fetch)
@@ -48,7 +49,7 @@
                           version "/llvm-" version ".src.tar.xz"))
       (sha256
        (base32
-        "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))
+        "0224xvfg6h40y5lrbnb9qaq3grmdc5rg00xq03s1wxjfbf8krx8z"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
@@ -131,7 +132,7 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
     (supported-systems (delete "mips64el-linux" %supported-systems))))
 
 (define* (clang-from-llvm llvm clang-runtime hash
-                          #:key (patches '("clang-libc-search-path.patch")))
+                          #:key (patches '()))
   (package
     (name "clang")
     (version (package-version llvm))
@@ -176,23 +177,49 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
                    (lambda* (#:key inputs #:allow-other-keys)
                      (let ((libc (assoc-ref inputs "libc"))
                            (compiler-rt (assoc-ref inputs "clang-runtime")))
-                       (substitute* "lib/Driver/Tools.cpp"
-                         ;; Patch the 'getLinuxDynamicLinker' function to that
-                         ;; it uses the right dynamic linker file name.
-                         (("/lib64/ld-linux-x86-64.so.2")
-                          (string-append libc
-                                         ,(glibc-dynamic-linker)))
-
-                         ;; Link to libclang_rt files from clang-runtime.
-                         (("TC\\.getDriver\\(\\)\\.ResourceDir")
-                          (string-append "\"" compiler-rt "\"")))
-
-                       ;; Same for libc's libdir, to allow crt1.o & co. to be
-                       ;; found.
-                       (substitute* "lib/Driver/ToolChains.cpp"
-                         (("@GLIBC_LIBDIR@")
-                          (string-append libc "/lib")))
+                       (case (string->number ,(version-major
+                                               (package-version clang-runtime)))
+                         ((6)
+                          ;; Link to libclang_rt files from clang-runtime.
+                          (substitute* "lib/Driver/ToolChain.cpp"
+                            (("getDriver\\(\\)\\.ResourceDir")
+                             (string-append "\"" compiler-rt "\"")))
+
+                          ;; Make "LibDir" refer to <glibc>/lib so that it
+                          ;; uses the right dynamic linker file name.
+                          (substitute* "lib/Driver/ToolChains/Linux.cpp"
+                            (("(^[[:blank:]]+LibDir = ).*" _ declaration)
+                             (string-append declaration "\"" libc "/lib\";\n"))
+
+                            ;; Make sure libc's libdir is on the search path, to
+                            ;; allow crt1.o & co. to be found.
+                            (("@GLIBC_LIBDIR@")
+                             (string-append libc "/lib"))))
+                         ((3)
+                          (substitute* "lib/Driver/Tools.cpp"
+                            ;; Patch the 'getLinuxDynamicLinker' function so that
+                            ;; it uses the right dynamic linker file name.
+                            (("/lib64/ld-linux-x86-64.so.2")
+                             (string-append libc
+                                            ,(glibc-dynamic-linker))))
+
+                          ;; Link to libclang_rt files from clang-runtime.
+                          ;; This substitution needed slight adjustment in 3.8.
+                          (if (< 3.8 (string->number ,(version-major+minor
+                                                       (package-version
+                                                        clang-runtime))))
+                              (substitute* "lib/Driver/Tools.cpp"
+                                (("TC\\.getDriver\\(\\)\\.ResourceDir")
+                                 (string-append "\"" compiler-rt "\"")))
+                              (substitute* "lib/Driver/ToolChain.cpp"
+                                (("getDriver\\(\\)\\.ResourceDir")
+                                 (string-append "\"" compiler-rt "\""))))
 
+                          ;; Make sure libc's libdir is on the search path, to
+                          ;; allow crt1.o & co. to be found.
+                          (substitute* "lib/Driver/ToolChains.cpp"
+                            (("@GLIBC_LIBDIR@")
+                             (string-append libc "/lib")))))
                        #t))))))
 
     ;; Clang supports the same environment variables as GCC.
@@ -216,13 +243,12 @@ code analysis tools.")
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
-   "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"
-   '("clang-runtime-asan-build-fixes.patch")))
+   "16m7rvh3w6vq10iwkjrr1nn293djld3xm62l5zasisaprx117k6h"))
 
 (define-public clang
   (clang-from-llvm llvm clang-runtime
-                   "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc"
-                   #:patches '("clang-3.8-libc-search-path.patch")))
+                   "0cnznvfyl3hgbg8gj58pmwf0pvd2sv5k3ccbivy6q6ggv7c6szg0"
+                   #:patches '("clang-6.0-libc-search-path.patch")))
 
 (define-public llvm-3.9.1
   (package (inherit llvm)
@@ -247,7 +273,31 @@ code analysis tools.")
 (define-public clang-3.9.1
   (clang-from-llvm llvm-3.9.1 clang-runtime-3.9.1
                    "0qsyyb40iwifhhlx9a3drf8z6ni6zwyk3bvh0kx2gs6yjsxwxi76"
-                   #:patches '()))
+                   #:patches '("clang-3.8-libc-search-path.patch")))
+
+(define-public llvm-3.8
+  (package (inherit llvm)
+    (name "llvm")
+    (version "3.8.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://llvm.org/releases/"
+                          version "/llvm-" version ".src.tar.xz"))
+      (sha256
+       (base32
+        "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
+
+(define-public clang-runtime-3.8
+  (clang-runtime-from-llvm
+   llvm-3.8
+   "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d"
+   '("clang-runtime-asan-build-fixes.patch")))
+
+(define-public clang-3.8
+  (clang-from-llvm llvm-3.8 clang-runtime-3.8
+                   "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc"
+                   #:patches '("clang-3.8-libc-search-path.patch")))
 
 (define-public llvm-3.7
   (package (inherit llvm)
@@ -269,7 +319,8 @@ code analysis tools.")
 
 (define-public clang-3.7
   (clang-from-llvm llvm-3.7 clang-runtime-3.7
-                   "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn"))
+                   "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn"
+                   #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.6
   (package (inherit llvm)
@@ -291,7 +342,8 @@ code analysis tools.")
 
 (define-public clang-3.6
   (clang-from-llvm llvm-3.6 clang-runtime-3.6
-                   "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df"))
+                   "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df"
+                   #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.5
   (package (inherit llvm)
@@ -315,7 +367,8 @@ code analysis tools.")
 
 (define-public clang-3.5
   (clang-from-llvm llvm-3.5 clang-runtime-3.5
-                   "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"))
+                   "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg"
+                   #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-for-extempore
   (package (inherit llvm-3.7)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a2f7b183d5..bb6a1300e8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -259,14 +259,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.9.3")
+    (version "1.9.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "1qbngck1pq1jkpnbpcwcb2q2zqrkgp0nd68wwp57bprxjgb8a6j3"))
+               "1pxmw5yyizb9bqbai6lihv6zxmw0znjfb60zaldwh6hc6lkbzlgl"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -747,14 +747,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.26")
+    (version "0.26.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1pvn1n7giv8n3xlazi3wpscdqhd2yak0fgv68aj23myr5bnr9s6k"))))
+                "0dx8nhdmkaqabxcgxfa757m99fi395y76h9ynx8539yh9m7y9xyk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -906,7 +906,7 @@ and search library.")
 (define-public getmail
   (package
     (name "getmail")
-    (version "5.5")
+    (version "5.6")
     (source
      (origin
        (method url-fetch)
@@ -914,7 +914,7 @@ and search library.")
                            name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0l43lbnrnyyrq8mlnw37saq6v0mh3nkirdq1dwnsrihykzjjwf70"))))
+         "16nmvj80szr6yvcxxgmxn2lxqpjqqj4xg5a0b66zhvck6j42q3a6"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; no tests
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 52df4c6967..88f64fdb66 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -154,7 +154,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
 (define-public mate-themes
   (package
     (name "mate-themes")
-    (version "3.22.15")
+    (version "3.22.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://pub.mate-desktop.org/releases/themes/"
@@ -162,7 +162,7 @@ from Mint-X-F and Faenza-Fresh icon packs.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0cmlbj6vlkavdirc5xnsgwmy0m11bj9yrbv1dkq46n1s23rvv6wg"))))
+                "1k8qp2arjv4vj8kyjhjgyj5h46jy0darlfh48l5h25623z1firdj"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index ab3cd17d52..2f6c6d6277 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -56,6 +56,7 @@
   #:use-module (guix build-system r)
   #:use-module (guix build-system ruby)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
@@ -79,6 +80,7 @@
   #:use-module (gnu packages java)
   #:use-module (gnu packages less)
   #:use-module (gnu packages lisp)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages gnome)
@@ -95,6 +97,7 @@
   #:use-module (gnu packages popt)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages qt)
@@ -1345,7 +1348,11 @@ can solve two kinds of problems:
        ("zlib" ,zlib)
        ("curl" ,curl)
        ("texinfo" ,texinfo)
-       ("graphicsmagick" ,graphicsmagick)))
+       ("graphicsmagick" ,graphicsmagick)
+       ("suitesparse" ,suitesparse)
+       ("libsndfile" ,libsndfile)
+       ("portaudio" ,portaudio)
+       ("alsa-lib" ,alsa-lib)))
     (native-inputs
      `(("lzip" ,lzip)
        ("gfortran" ,gfortran)
@@ -1385,6 +1392,31 @@ Work may be performed both at the interactive command-line as well as via
 script files.")
     (license license:gpl3+)))
 
+(define-public qtoctave
+  (package (inherit octave)
+    (name "qtoctave")
+    (inputs
+     `(("qscintilla" ,qscintilla)
+       ("qt" ,qtbase)
+       ,@(package-inputs octave)))
+    (native-inputs
+     `(("qttools" , qttools) ;for lrelease
+       ,@(package-native-inputs octave)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments octave)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-before 'configure 'patch-qscintilla-library-name
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; The QScintilla library that the Octave configure script tries
+               ;; to link with should be named libqscintilla-qt5.so, but the
+               ;; QScintilla input provides the shared library as
+               ;; libqscintilla2_qt5.so.
+               (substitute* "configure"
+                 (("qscintilla2-qt5")
+                  "qscintilla2_qt5"))
+               #t))))))))
+
 (define-public opencascade-oce
   (package
     (name "opencascade-oce")
@@ -3522,7 +3554,11 @@ supports compressed MAT files, as well as newer (version 7.3) MAT files.")
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
-       '("-DBUILD_TESTING=ON")))
+       '("-DBUILD_TESTING=ON"
+         ;; By default, Vc will optimize for the CPU of the build machine.
+         ;; Setting this to "none" makes it create portable binaries.  See
+         ;; "cmake/OptimizeForArchitecture.cmake".
+         "-DTARGET_ARCHITECTURE=none")))
     (synopsis "SIMD vector classes for C++")
     (description "Vc provides portable, zero-overhead C++ types for explicitly
 data-parallel programming.  It is a library designed to ease explicit
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index db5407e01f..e93c0a4c88 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -914,16 +914,17 @@ connect with friends and family without anyone else listening in.")
 (define-public pybitmessage
   (package
     (name "pybitmessage")
-    (version "0.6.2")
+    (version "0.6.3.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Bitmessage/"
-                           "PyBitmessage/archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Bitmessage/PyBitmessage.git")
+             (commit version)))
+       (file-name (string-append name "-" version "-checkout"))
        (sha256
         (base32
-         "1in2mhaxkp2sx8pgvifq9dk1z8b2x3imf1anr0z926vwxwjrf85w"))))
+         "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
     (propagated-inputs
      ;; TODO:
      ;; Package "pyopencl", required in addition to numpy for OpenCL support.
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 5904fef8d3..9a3db21bae 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -470,21 +470,21 @@ compression format (.mpc files).")
 (define-public eyed3
   (package
     (name "eyed3")
-    (version "0.8")
+    (version "0.8.5")
     (source (origin
              (method url-fetch)
-             (uri (string-append
-                  "http://eyed3.nicfit.net/releases/eyeD3-"
-                  version ".tar.gz"))
+             (uri (pypi-uri "eyeD3" version))
              (sha256
               (base32
-               "1dcswb0f6w3b05s1v43pq8fmavkd5g88ysndn9160wlaa1v9n40h"))))
+               "0rkx859z82wqnfb0dzpa1647cq43aqb39ri9rd5r3jz597qr9zdd"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f)) ; the required test data contains copyrighted material.
     (propagated-inputs
-     `(("python-six" ,python-six)
-       ("python-grako" ,python-grako)))
+     `(("python-grako" ,python-grako)
+       ("python-magic" ,python-magic)
+       ("python-pathlib" ,python-pathlib)
+       ("python-six" ,python-six)))
     (synopsis "MP3 tag ID3 metadata editor")
     (description "eyeD3 is a Python tool for working with audio files,
 specifically mp3 files containing ID3 metadata (i.e. song info).  It provides a
@@ -510,12 +510,13 @@ command-line tool.")
     (arguments
      `(#:tests? #f ; tests require googletest *sources*
        ;;#:configure-flags '("-DBUILD_TESTS=ON") ; for building the tests
+       #:configure-flags '("-DBUILD_TOOLS=ON") ; for fpcalc
        #:test-target "check"))
     (inputs
      ;; requires one of FFmpeg (prefered), FFTW3 or vDSP
      ;; use the same ffmpeg version as for acoustid-fingerprinter
      `(("ffmpeg" ,ffmpeg)
-       ("boots" ,boost)))
+       ("boost" ,boost)))
     (home-page "https://acoustid.org/chromaprint")
     (synopsis "Audio fingerprinting library")
     (description "Chromaprint is a library for calculating audio
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 0fe1145512..be7aadf9ce 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -437,19 +437,28 @@ background while you work.")
 (define-public hydrogen
   (package
     (name "hydrogen")
-    (version "0.9.7")
+    (version "1.0.0-beta1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/hydrogen-music/hydrogen/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/hydrogen-music/hydrogen.git")
+                    (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy"))))
+                "0nv83l70j5bjz2wd6n3a8cq3bmgrvdvg6g2hjhc1g5h6xnbqsh9x"))))
     (build-system cmake-build-system)
     (arguments
-    `(#:test-target "tests"))
+     `(#:test-target "tests"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-data-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("/usr/share/pixmaps")
+                (string-append (assoc-ref outputs "out")
+                               "/share/pixmaps")))
+             #t)))))
     (native-inputs
      `(("cppunit" ,cppunit)
        ("pkg-config" ,pkg-config)))
@@ -462,7 +471,8 @@ background while you work.")
        ("libsndfile" ,libsndfile)
        ("libtar" ,libtar)
        ("lrdf" ,lrdf)
-       ("qt" ,qt-4)
+       ("qtbase" ,qtbase)
+       ("qtxmlpatterns" ,qtxmlpatterns)
        ("zlib" ,zlib)))
     (home-page "http://www.hydrogen-music.org")
     (synopsis "Drum machine")
@@ -1256,7 +1266,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.8.6")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -1264,7 +1274,7 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "141ah1gnv5r2k846v5ay15q9q90h01p74240a56vlxqh20z43g92"))))
+                "1skynjg6ip0qfbqqkybfjh6xcwxagq89ghl08f7sp7j0sz5qdcwp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests.
@@ -1290,7 +1300,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.8.6")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -1298,7 +1308,7 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0fwxrfyp15a4m77mzz4mwj36mhdrj646whlrkvcys33p2w75f8cq"))))
+                "1vm8lrk3lykdic6fyfpl12jx1xg6rcaid242s8sij30p1ix4zdab"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests.
@@ -1325,7 +1335,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.8.6")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -1333,7 +1343,7 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "035bq7yfg1yirsqk63zwkzjw9dxl52lrzq9y0w7nga0vb11xdfij"))))
+                "0g67vm9ilmq5nlvk0f3abia9pbinr4ck5v4mll6igni1rxz2n7wk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests.
@@ -1360,7 +1370,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.8.6")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -1368,7 +1378,7 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1mikab2f9n5q1sfgnp3sbm1rf3v57k4085lsgh0a5gzga2h4hwxq"))))
+                "0c519qk2g0dk8gqf9ywqfp7dnr4b25lsnxxbf2l1spnnvf8nysvh"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; There are no tests.
@@ -1760,7 +1770,19 @@ projects.")
        #:build-type "Release"           ; needed to have PMALSA set
        #:configure-flags
        (list "-DPORTMIDI_ENABLE_JAVA=Off"
-             "-DPORTMIDI_ENABLE_TEST=Off"))) ; tests fail linking
+             "-DPORTMIDI_ENABLE_TEST=Off") ; tests fail linking
+       #:phases
+       (modify-phases %standard-phases
+         ;; Some packages, e.g., MuseScore, expect "libporttime.so" instead of
+         ;; "libportmidi.so".  Distributions get away with it by creating an
+         ;; appropriate symlink.
+         (add-after 'install 'add-porttime
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (lib (string-append out "/lib")))
+               (with-directory-excursion lib
+                 (symlink "libportmidi.so" "libporttime.so")))
+             #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)))
     (native-inputs
@@ -2156,14 +2178,14 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.8.6")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "0qf75bccsyplx6fcaz48k6027yp06zhl8ixhhjdbr30xgpslnjm3"))))
+                "03892177k3jn2bsi366dhq28rcdsc1p9v5qqc0k6hg3cnrkh23na"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f)) ; no "check" target
     (inputs
@@ -2272,10 +2294,10 @@ analogue-like user interface.")
     (license license:gpl2+)))
 
 (define-public mod-host
-  ;; The last release was in 2014 but since then more than 140 commits have
+  ;; The last release was in 2014 but since then hundreds of commits have
   ;; been made.
-  (let ((commit "299a3977476e8eb0285837fbd7522cec506a11de")
-        (revision "2"))
+  (let ((commit "1726ad06b11323da7e1aaed690ff8aef91f702b5")
+        (revision "3"))
     (package
       (name "mod-host")
       (version (string-append "0.10.6-" revision "." (string-take commit 9)))
@@ -2286,7 +2308,7 @@ analogue-like user interface.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "128q7p5mph086v954rqnafalfbkyvhgwclaq6ks6swrhj45wnag6"))
+                  "1nrd37c35w6z6ldczgrwmmd9hx1n3zyvcjcgb3mi4cygqdanvspv"))
                 (file-name (string-append name "-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -3467,7 +3489,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
 (define-public musescore
   (package
     (name "musescore")
-    (version "2.1.0")
+    (version "2.2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3476,7 +3498,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0irwsq6ihfz3y3b943cwqy29g3si7gqbgxdscgw53vwv9vfvi085"))
+                "1ml99ayzpdyd18cypcp0lbsbasfg3abw57i5fl7ph5739vikj6i6"))
               (modules '((guix build utils)))
               (snippet
                ;; Un-bundle OpenSSL and remove unused libraries.
@@ -3494,7 +3516,9 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
-       `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+       `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
+         "USE_SYSTEM_FREETYPE=ON"
+         "DOWNLOAD_SOUNDFONT=OFF")
        ;; There are tests, but no simple target to run.  The command
        ;; used to run them is:
        ;;
@@ -3506,16 +3530,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'use-system-freetype
-           (lambda _
-             ;; XXX: For the time being, we grossly insert the CMake
-             ;; option needed to ignore bundled freetype.  However,
-             ;; there's a pending PR to have it as a regular make
-             ;; option, in a future release.
-             (substitute* "Makefile"
-               (("cmake -DCMAKE") "cmake -DUSE_SYSTEM_FREETYPE=ON -DCMAKE"))
-             #t)))))
+         (delete 'configure))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("freetype" ,freetype)
@@ -3526,6 +3541,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
        ("libsndfile" ,libsndfile)
        ("libvorbis" ,libvorbis)
        ("portaudio" ,portaudio)
+       ("portmidi" ,portmidi)
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 364ae2f64c..7be19bc0a7 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -275,7 +275,7 @@ more.")
 (define-public czmq
   (package
     (name "czmq")
-    (version "4.1.0")
+    (version "4.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -284,7 +284,7 @@ more.")
                     "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "04gwf61rijwm6b2wblwv8gky1gdrbfmg1d19hf72kdc691ds7vrv"))))
+                "1h5hrcsc30fcwb032vy5gxkq4j4vv1y4dj460rfs1hhxi0cz83zh"))))
     (build-system gnu-build-system)
     (arguments
      '(;; TODO Tests fail for some reason:
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 0fdad6a34f..4809aa0971 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3498,13 +3498,13 @@ XML and Protocol Buffers formats.")
    (build-system ocaml-build-system)
    (native-inputs
     `(("oasis" ,ocaml-oasis)
-      ("clang" ,clang)
+      ("clang" ,clang-3.8)
       ("ounit" ,ocaml-ounit)))
    (propagated-inputs
     `(("core-kernel" ,ocaml-core-kernel)
       ("ppx-driver" ,ocaml-ppx-driver)
       ("uri" ,ocaml-uri)
-      ("llvm" ,llvm)
+      ("llvm" ,llvm-3.8)
       ("gmp" ,gmp)
       ("clang-runtime" ,clang-runtime)
       ("fileutils" ,ocaml-fileutils)
@@ -3520,7 +3520,7 @@ XML and Protocol Buffers formats.")
       ("bitstring" ,ocaml-bitstring)
       ("ppx-jane" ,ocaml-ppx-jane)
       ("re" ,ocaml-re)))
-   (inputs `(("llvm" ,llvm)))
+   (inputs `(("llvm" ,llvm-3.8)))
    (arguments
     `(#:use-make? #t
       #:phases
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 5875562aa1..3e9fd375c9 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -646,14 +646,14 @@ from the OpenStack project.")
 (define-public python-oslotest
   (package
     (name "python-oslotest")
-    (version "3.3.0")
+    (version "3.4.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "oslotest" version))
         (sha256
           (base32
-            "006i73w8kbc9s0av2v5mbni6mnkb91c2nq17wa0lz7bwk5zss992"))))
+            "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-fixtures" ,python-fixtures)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4a70e2cf8b..b522e0f92a 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -283,6 +283,33 @@ the Nix package manager.")
 ;; Alias for backward compatibility.
 (define-public guix-devel guix)
 
+(define-public guix-register
+  ;; This package is for internal consumption: it allows us to quickly build
+  ;; the 'guix-register' program, which is referred to by (guix config).
+  ;; TODO: Remove this hack when 'guix-register' has been superseded by Scheme
+  ;; code.
+  (package
+    (inherit guix)
+    (properties `((hidden? . #t)))
+    (name "guix-register")
+    (arguments
+     (substitute-keyword-arguments (package-arguments guix)
+       ((#:tests? #f #f)
+        #f)
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (replace 'build
+             (lambda _
+               (invoke "make" "nix/libstore/schema.sql.hh")
+               (invoke "make" "-j" (number->string
+                                    (parallel-job-count))
+                       "guix-register")))
+           (delete 'copy-bootstrap-guile)
+           (replace 'install
+             (lambda _
+               (invoke "make" "install-sbinPROGRAMS")))
+           (delete 'wrap-program)))))))
+
 (define-public guile2.0-guix
   (package
     (inherit guix)
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 8810392530..f4518cfeb0 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
+;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -67,6 +68,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xml)
   #:use-module (guix build-system python))
 
 (define-public pwgen
@@ -641,3 +643,50 @@ is the community-enhanced, \"jumbo\" version of John the Ripper.")
 to encrypted files on a directory hierarchy.  The information is protected
 by GnuPG's symmetrical encryption.")
     (license license:expat)))
+
+(define-public fpm2
+  (package
+    (name "fpm2")
+    (version "0.79")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
+    (build-system gnu-build-system)
+    (inputs `(("gtk2" ,gtk+-2)
+              ("gnupg" ,gnupg)
+              ("libxml2" ,libxml2)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("intltool" ,intltool)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           ;; The file po/POTFILES.in ends up missing for some reason in
+           ;; both nix and guix builds. Adding the file with contents
+           ;; found during troubleshooting.
+           (lambda _
+             (call-with-output-file "po/POTFILES.in"
+               (lambda (port)
+                 (format port "data/fpm2.desktop.in
+data/fpm2.desktop.in.in
+fpm2.glade
+src/callbacks.c
+src/fpm.c
+src/fpm_file.c
+src/interface.c
+src/support.c
+fpm2.glade
+")))
+             #t)))))
+    (synopsis "Manage, generate and store passwords encrypted")
+    (description "FPM2 is GTK2 port from Figaro's Password Manager
+originally developed by John Conneely, with some new enhancements.
+
+Upstream development seems to have stopped.  It is therefore recommended
+to use a different password manager.")
+    (home-page "https://als.regnet.cz/fpm2/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/4store-unset-preprocessor-directive.patch b/gnu/packages/patches/4store-unset-preprocessor-directive.patch
new file mode 100644
index 0000000000..c4b1d6eda4
--- /dev/null
+++ b/gnu/packages/patches/4store-unset-preprocessor-directive.patch
@@ -0,0 +1,16 @@
+This patch removes the _XOPEN_SOURCE preprocessor directive as it does not seem to be needed.
+Setting it removes the definition of strdup, which is used in filter-datatypes.c.
+
+Patch by Roel Janssen <roel@gnu.org>
+*** a/src/frontend/filter-datatypes.c	1970-01-01 01:00:00.000000000 +0100
+--- b/src/frontend/filter-datatypes.c	2018-04-03 17:39:23.177905592 +0200
+***************
+*** 18,24 ****
+   *  Copyright (C) 2006 Steve Harris for Garlik
+   */
+  
+- #define _XOPEN_SOURCE
+  #include <stdlib.h>
+  #include <string.h>
+  #include <math.h>
+--- 18,23 ----
diff --git a/gnu/packages/patches/clang-libc-search-path.patch b/gnu/packages/patches/clang-3.5-libc-search-path.patch
index 50e4480239..50e4480239 100644
--- a/gnu/packages/patches/clang-libc-search-path.patch
+++ b/gnu/packages/patches/clang-3.5-libc-search-path.patch
diff --git a/gnu/packages/patches/clang-6.0-libc-search-path.patch b/gnu/packages/patches/clang-6.0-libc-search-path.patch
new file mode 100644
index 0000000000..a62e8063c2
--- /dev/null
+++ b/gnu/packages/patches/clang-6.0-libc-search-path.patch
@@ -0,0 +1,67 @@
+Clang attempts to guess file names based on the OS and distro (yes!),
+but unfortunately, that doesn't work for us.
+
+This patch makes it easy to insert libc's $libdir so that Clang passes the
+correct absolute file name of crt1.o etc. to 'ld'.  It also disables all
+the distro-specific stuff and removes the hard-coded FHS directory names
+to make sure Clang also works on non-GuixSD systems.
+
+--- cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
++++ cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp
+@@ -207,7 +207,9 @@
+   PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" +
+                          GCCInstallation.getTriple().str() + "/bin")
+                        .str());
+-
++  // Comment out the distro-specific tweaks so that they don't bite when
++  // using Guix on a foreign distro.
++#if 0
+   Distro Distro(D.getVFS());
+ 
+   if (Distro.IsAlpineLinux()) {
+@@ -255,6 +257,7 @@
+ 
+   if (IsAndroid || Distro.IsOpenSUSE())
+     ExtraOpts.push_back("--enable-new-dtags");
++#endif
+ 
+   // The selection of paths to try here is designed to match the patterns which
+   // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+@@ -329,14 +332,12 @@
+     addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths);
+   }
+ 
+-  addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
+-  addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
+-  addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
+-  addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
+-
+   // Try walking via the GCC triple path in case of biarch or multiarch GCC
+   // installations with strange symlinks.
+   if (GCCInstallation.isValid()) {
++    // The following code would end up adding things like
++    // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
++#if 0
+     addPathIfExists(D,
+                     SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+                         "/../../" + OSLibDir,
+@@ -349,6 +350,7 @@
+                              BiarchSibling.gccSuffix(),
+                       Paths);
+     }
++#endif
+ 
+     // See comments above on the multilib variant for details of why this is
+     // included even from outside the sysroot.
+@@ -373,8 +375,9 @@
+   if (StringRef(D.Dir).startswith(SysRoot))
+     addPathIfExists(D, D.Dir + "/../lib", Paths);
+ 
+-  addPathIfExists(D, SysRoot + "/lib", Paths);
+-  addPathIfExists(D, SysRoot + "/usr/lib", Paths);
++  // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
++  // and friends can be found.
++  addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
+ }
+ 
+ bool Linux::HasNativeLLVMSupport() const { return true; }
diff --git a/gnu/packages/patches/delly-use-system-libraries.patch b/gnu/packages/patches/delly-use-system-libraries.patch
new file mode 100644
index 0000000000..3315c2a176
--- /dev/null
+++ b/gnu/packages/patches/delly-use-system-libraries.patch
@@ -0,0 +1,56 @@
+--- a/Makefile	2017-04-09 12:48:15.000000000 +0200
++++ b/Makefile	2017-06-21 14:26:02.749282787 +0200
+@@ -9,8 +9,8 @@
+ 
+ # Flags
+ CXX=g++
+-CXXFLAGS += -isystem ${SEQTK_ROOT} -isystem ${BOOST_ROOT} -pedantic -W -Wall -Wno-unknown-pragmas -D__STDC_LIMIT_MACROS -fno-strict-aliasing
+-LDFLAGS += -L${SEQTK_ROOT} -L${BOOST_ROOT}/stage/lib -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time 
++CXXFLAGS += -pedantic -W -Wall -Wno-unknown-pragmas -D__STDC_LIMIT_MACROS -fno-strict-aliasing
++LDFLAGS += -lboost_iostreams -lboost_filesystem -lboost_system -lboost_program_options -lboost_date_time 
+ 
+ # Additional flags for release/debug
+ ifeq (${PARALLEL}, 1)
+@@ -23,7 +23,7 @@
+ ifeq (${STATIC}, 1)
+ 	LDFLAGS += -static -static-libgcc -pthread -lhts -lz
+ else
+-	LDFLAGS += -lhts -lz -Wl,-rpath,${SEQTK_ROOT},-rpath,${BOOST_ROOT}/stage/lib
++	LDFLAGS += -lhts -lz
+ endif
+ ifeq (${DEBUG}, 1)
+ 	CXXFLAGS += -g -O0 -fno-inline -DDEBUG
+@@ -41,29 +41,17 @@
+ DELLYSOURCES = $(wildcard src/*.h) $(wildcard src/*.cpp)
+ 
+ # Targets
+-TARGETS = .htslib .bcftools .boost src/delly src/cov src/dpe
++TARGETS = src/delly src/cov src/dpe
+ 
+ all:   	$(TARGETS)
+ 
+-.htslib: $(HTSLIBSOURCES)
+-	cd src/htslib && make && make lib-static && cd ../../ && touch .htslib
+-
+-.bcftools: $(HTSLIBSOURCES)
+-	cd src/bcftools && make && cd ../../ && touch .bcftools
+-
+-.boost: $(BOOSTSOURCES)
+-	cd src/modular-boost && ./bootstrap.sh --prefix=${PWD}/src/modular-boost --without-icu --with-libraries=iostreams,filesystem,system,program_options,date_time && ./b2 && ./b2 headers && cd ../../ && touch .boost
+-
+-src/delly: .htslib .bcftools .boost $(DELLYSOURCES)
+-	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+-
+-src/cov: .htslib .bcftools .boost $(DELLYSOURCES)
++src/cov: $(DELLYSOURCES)
+ 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+ 
+-src/dpe: .htslib .bcftools .boost $(DELLYSOURCES)
++src/dpe: $(DELLYSOURCES)
+ 	$(CXX) $(CXXFLAGS) $@.cpp -o $@ $(LDFLAGS)
+ 
+ clean:
+ 	cd src/htslib && make clean
+ 	cd src/modular-boost && ./b2 --clean-all
+-	rm -f $(TARGETS) $(TARGETS:=.o) .htslib .boost .bcftools
++	rm -f $(TARGETS) $(TARGETS:=.o)
diff --git a/gnu/packages/patches/libgnomeui-utf8.patch b/gnu/packages/patches/libgnomeui-utf8.patch
index 304d74e1e2..11622b21ee 100644
--- a/gnu/packages/patches/libgnomeui-utf8.patch
+++ b/gnu/packages/patches/libgnomeui-utf8.patch
@@ -8,11 +8,11 @@ make[2]: Entering directory '/tmp/guix-build-libgnomeui-2.24.5.drv-0/libgnomeui-
 INFO: Reading ./gnome-marshal.list...
   GEN    gnome-marshal.h
 Traceback (most recent call last):
-  File "/gnu/store/azh1is0xknn4xphwj33iqcb5ic9qhk8l-glib-2.54.2-bin/bin/glib-mkenums", line 688, in <module>
+  File "/gnu/store/...-glib-2.54.2-bin/bin/glib-mkenums", line 688, in <module>
     process_file(fname)
-  File "/gnu/store/azh1is0xknn4xphwj33iqcb5ic9qhk8l-glib-2.54.2-bin/bin/glib-mkenums", line 420, in process_file
+  File "/gnu/store/...-glib-2.54.2-bin/bin/glib-mkenums", line 420, in process_file
     line = curfile.readline()
-  File "/gnu/store/3lkypf5wnsnvkaidhw0pv7k3yjfh1r9g-python-3.6.3/lib/python3.6/codecs.py", line 321, in decode
+  File "/gnu/store/...-python-3.6.3/lib/python3.6/codecs.py", line 321, in decode
     (result, consumed) = self._buffer_decode(data, self.errors, final)
 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 1009: invalid continuation byte
 make[2]: *** [Makefile:1109: stamp-gnometypebuiltins.h] Error 1
diff --git a/gnu/packages/patches/racket-fix-xform-issue.patch b/gnu/packages/patches/racket-fix-xform-issue.patch
new file mode 100644
index 0000000000..0a1640ee51
--- /dev/null
+++ b/gnu/packages/patches/racket-fix-xform-issue.patch
@@ -0,0 +1,63 @@
+050cdb59839896b41431791f8ee0ef2564231b8f
+Author:     Matthew Flatt <mflatt@racket-lang.org>
+AuthorDate: Tue Mar 6 09:05:08 2018 -0700
+Commit:     Matthew Flatt <mflatt@racket-lang.org>
+CommitDate: Tue Mar 6 09:05:08 2018 -0700
+
+Parent:     efb9a919fc ffi docs: clarification on `unsafe-socket->port`
+Containing: master
+Follows:    v5.0.1 (21612)
+
+xform: avoid problems with `__signbitf128`
+
+Closes #1962 and uses the suggested patch there, among other changes.
+
+2 files changed, 6 insertions(+), 3 deletions(-)
+racket/collects/compiler/private/xform.rkt | 2 +-
+racket/src/racket/src/number.c             | 7 +++++--
+
+diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt
+index 28a425c057..89ae848f9c 100644
+--- a/collects/compiler/private/xform.rkt
++++ b/collects/compiler/private/xform.rkt
+@@ -904,7 +904,7 @@
+ 
+                strlen cos cosl sin sinl exp expl pow powl log logl sqrt sqrtl atan2 atan2l frexp
+                isnan isinf fpclass signbit _signbit _fpclass __fpclassify __fpclassifyf __fpclassifyl
+-	       _isnan __isfinited __isnanl __isnan __signbit __signbitf __signbitd __signbitl
++	       _isnan __isfinited __isnanl __isnan __signbit __signbitf __signbitd __signbitl __signbitf128
+                __isinff __isinfl isnanf isinff __isinfd __isnanf __isnand __isinf __isinff128
+                __inline_isnanl __inline_isnan __inline_signbit __inline_signbitf __inline_signbitd __inline_signbitl
+                __builtin_popcount __builtin_clz __builtin_isnan __builtin_isinf __builtin_signbit
+diff --git a/racket/src/racket/src/number.c b/racket/src/racket/src/number.c
+index 71f42aaf3c..3bbad3ba83 100644
+--- a/src/racket/src/number.c
++++ b/src/racket/src/number.c
+@@ -1796,6 +1796,7 @@ double scheme_real_to_double(Scheme_Object *r)
+ }
+ 
+ XFORM_NONGCING static MZ_INLINE int minus_zero_p(double d)
++  XFORM_SKIP_PROC
+ {
+ #ifdef MZ_IS_NEG_ZERO
+   return MZ_IS_NEG_ZERO(d);
+@@ -1809,7 +1810,9 @@ int scheme_minus_zero_p(double d)
+   return minus_zero_p(d);
+ }
+ 
+-static int rational_dbl_p(double f) {
++XFORM_NONGCING static int rational_dbl_p(double f)
++  XFORM_SKIP_PROC
++{
+   return !(MZ_IS_NAN(f)
+            || MZ_IS_INFINITY(f));
+ }
+@@ -1955,7 +1958,7 @@ real_p(int argc, Scheme_Object *argv[])
+   return (SCHEME_REALP(o) ? scheme_true : scheme_false);
+ }
+ 
+-static int is_rational(const Scheme_Object *o)
++XFORM_NONGCING static int is_rational(const Scheme_Object *o)
+ {
+   if (SCHEME_FLOATP(o))
+     return rational_dbl_p(SCHEME_FLOAT_VAL(o));
\ No newline at end of file
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 46badf9d3e..7ef6714540 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
-;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2016, 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com>
@@ -723,6 +723,31 @@ is captured while being passed through to the original file handles.")
 to test the installed perl for compatibility with his modules.")
     (license (package-license perl))))
 
+(define-public perl-carp
+  (package
+    (name "perl-carp")
+    (version "1.38")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/R/RJ/RJBS/Carp-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "00bijwwc0ix27h2ma3lvsf3b56biar96bl9dikxgx7cmpcycxad5"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Carp/")
+    (synopsis "Alternative warn and die for modules")
+    (description "The @code{Carp} routines are useful in your own modules
+because they act like @code{die()} or @code{warn()}, but with a message
+which is more likely to be useful to a user of your module.  In the case
+of @code{cluck}, @code{confess}, and @code{longmess} that context is a
+summary of every call in the call-stack.  For a shorter message you can use
+@code{carp} or @code{croak} which report the error as being from where your
+module was called.  There is no guarantee that that is where the error was,
+but it is a good educated guess.")
+    (license (package-license perl))))
+
 (define-public perl-carp-always
   (package
     (name "perl-carp-always")
@@ -3976,6 +4001,62 @@ inc directory within a distribution and are used by Makefile.PL or Build.PL.")
      "Indirect warns about using the indirect method call syntax.")
     (license (package-license perl))))
 
+(define-public perl-inline
+  (package
+   (name "perl-inline")
+   (version "0.80")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "mirror://cpan/authors/id/I/IN/INGY/Inline-"
+           version ".tar.gz"))
+     (sha256
+      (base32
+       "1xnf5hykcr54271x5jsnr61bcv1c7x39cy4kdcrkxm7bn62djavy"))))
+   (build-system perl-build-system)
+   (native-inputs
+    `(("perl-test-warn" ,perl-test-warn)))
+   (home-page "http://search.cpan.org/dist/Inline/")
+   (synopsis "Write Perl subroutines in other programming languages")
+   (description "The @code{Inline} module allows you to put source code
+from other programming languages directly (inline) in a Perl script or
+module.  The code is automatically compiled as needed, and then loaded
+for immediate access from Perl.")
+   (license (package-license perl))))
+
+(define-public perl-inline-c
+  (package
+    (name "perl-inline-c")
+    (version "0.78")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/T/TI/TINITA/Inline-C-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1izv7vswd17glffh8h83bi63gdk208mmhxi17l3qd8q1bkc08y4s"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-file-copy-recursive" ,perl-file-copy-recursive)
+       ("perl-file-sharedir-install" ,perl-file-sharedir-install)
+       ("perl-test-warn" ,perl-test-warn)
+       ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
+    (propagated-inputs
+     `(("perl-inline" ,perl-inline)
+       ("perl-parse-recdescent" ,perl-parse-recdescent)
+       ("perl-pegex" ,perl-pegex)))
+    (home-page "http://search.cpan.org/dist/Inline-C/")
+    (synopsis "C Language Support for Inline")
+    (description "The @code{Inline::C} module allows you to write Perl
+subroutines in C.  Since version 0.30 the @code{Inline} module supports
+multiple programming languages and each language has its own support module.
+This document describes how to use Inline with the C programming language.
+It also goes a bit into Perl C internals.")
+    (license (package-license perl))))
+
 (define-public perl-io-captureoutput
   (package
     (name "perl-io-captureoutput")
@@ -4638,7 +4719,7 @@ portions of this module couldn't be compiled on this machine.")
 (define-public perl-mailtools
   (package
     (name "perl-mailtools")
-    (version "2.19")
+    (version "2.20")
     (source
      (origin
        (method url-fetch)
@@ -4648,7 +4729,7 @@ portions of this module couldn't be compiled on this machine.")
              ".tar.gz"))
        (sha256
         (base32
-         "06jykkv8mp484vzkmwd6dkicx029rl3ir5ljzrbap3paxw1dfzn1"))))
+         "15iizg2x1w7ca0r8rn3wwhp7w160ljvf55prspljwd6cm7vhcmpm"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-timedate" ,perl-timedate)))
@@ -4680,6 +4761,64 @@ Build a Mail::Internet object, and then send it out using Mail::Mailer.
 @end table")
     (license perl-license)))
 
+(define-public perl-math-bezier
+  (package
+    (name "perl-math-bezier")
+    (version "0.01")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/A/AB/ABW/Math-Bezier-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1f5qwrb7vvf8804myb2pcahyxffqm9zvfal2n6myzw7x8py1ba0i"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Math-Bezier/")
+    (synopsis "Solution of bezier curves")
+    (description "This module implements the algorithm for the solution of Bezier
+curves as presented by Robert D Miller in Graphics Gems V, \"Quick and Simple
+Bezier Curve Drawing\".")
+    (license perl-license)))
+
+(define-public perl-math-round
+  (package
+    (name "perl-math-round")
+    (version "0.07")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/G/GR/GROMMEL/Math-Round-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "09wkvqj4hfq9y0fimri967rmhnq90dc2wf20lhlmqjp5hsd359vk"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Math-Round/")
+    (synopsis "Perl extension for rounding numbers")
+    (description "@code{Math::Round} provides functions to round numbers,
+both positive and negative, in various ways.")
+    (license perl-license)))
+
+(define-public perl-memoize
+  (package
+    (name "perl-memoize")
+    (version "1.03")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/M/MJ/MJD/Memoize-"
+                    version".tgz"))
+              (sha256
+               (base32
+                "1wysq3wrmf1s7s3phimzn7n0dswik7x53apykzgb0l2acigwqfaj"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Memoize/")
+    (synopsis "Make functions faster by trading space for time")
+    (description "This package transparently speeds up functions by caching
+return values, trading space for time.")
+    (license perl-license)))
+
 (define-public perl-memoize-expirelru
   (package
     (name "perl-memoize-expirelru")
@@ -6224,6 +6363,30 @@ collector daemon in use at Etsy.com.")
 subroutine, which you can call with a value to be tested against.")
     (license (package-license perl))))
 
+(define-public perl-number-format
+  (package
+    (name "perl-number-format")
+    (version "1.75")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/W/WR/WRW/Number-Format-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1wspw9fybik76jq9w1n1gmvfixd4wvlrq6ni8kyn85s62v5mkml2"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Number-Format/")
+    (synopsis "Convert numbers to strings with pretty formatting")
+    (description "@code{Number::Format} is a library for formatting numbers.
+Functions are provided for converting numbers to strings in a variety of ways,
+and to convert strings that contain numbers back into numeric form.  The
+output formats may include thousands separators - characters inserted between
+each group of three characters counting right to left from the decimal point.
+The characters used for the decimal point and the thousands separator come from
+the locale information or can be specified by the user.")
+    (license perl-license)))
+
 (define-public perl-number-range
   (package
     (name "perl-number-range")
@@ -6575,6 +6738,36 @@ up inheritance from those modules at the same time.")
 directory specifications in a cross-platform manner.")
     (license (package-license perl))))
 
+(define-public perl-pathtools
+  (package
+    (name "perl-pathtools")
+    (version "3.74")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/X/XS/XSAWYERX/PathTools-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "04bfjdvn5p78hirljcinpxv8djcjn8nyg5gcmnmvz8sr9k2lqwi5"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-pwd-path
+           (lambda* (#:key inputs  #:allow-other-keys)
+             (substitute* "Cwd.pm"
+               (("'/bin/pwd'")
+                (string-append "'" (assoc-ref inputs "coreutils")
+                               "/bin/pwd'"))))))))
+    (inputs
+     `(("coreutils" ,coreutils)))
+    (home-page "http://search.cpan.org/dist/PathTools/")
+    (synopsis "Tools for working with directory and file names")
+    (description "This package provides functions to work with directory and
+file names.")
+    (license perl-license)))
+
 (define-public perl-path-tiny
   (package
     (name "perl-path-tiny")
@@ -6623,6 +6816,33 @@ PerlIO layer.  Unlike Perl's default @code{:utf8} layer it checks the input
 for correctness.")
     (license (package-license perl))))
 
+(define-public perl-pegex
+  (package
+   (name "perl-pegex")
+   (version "0.64")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "mirror://cpan/authors/id/I/IN/INGY/Pegex-"
+           version ".tar.gz"))
+     (sha256
+      (base32
+       "1kb7y2cc3nibbn8i8y3vrzz1f9h3892nbf8jj88c5fdgpmj05q17"))))
+   (build-system perl-build-system)
+   (native-inputs
+    `(("perl-file-sharedir-install" ,perl-file-sharedir-install)
+      ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
+   (home-page "http://search.cpan.org/dist/Pegex/")
+   (synopsis "Acmeist PEG Parser Framework")
+   (description "Pegex is an Acmeist parser framework.  It allows you to easily
+create parsers that will work equivalently in lots of programming languages.
+The inspiration for Pegex comes from the parsing engine upon which the
+postmodern programming language Perl 6 is based on.  Pegex brings this beauty
+to the other justmodern languages that have a normal regular expression engine
+available.")
+   (license (package-license perl))))
+
 (define-public perl-pod-coverage
   (package
     (name "perl-pod-coverage")
@@ -6920,6 +7140,25 @@ collector.")
     (description "Set::Infinite is a set theory module for infinite sets.")
     (license (package-license perl))))
 
+(define-public perl-set-intspan
+  (package
+    (name "perl-set-intspan")
+    (version "1.19")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/S/SW/SWMCD/Set-IntSpan-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1l6znd40ylzvfwl02rlqzvakv602rmvwgm2xd768fpgc2fdm9dqi"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Set-IntSpan/")
+    (synopsis "Manage sets of integers")
+    (description "@code{Set::IntSpan} manages sets of integers.  It is
+optimized for sets that have long runs of consecutive integers.")
+    (license perl-license)))
+
 (define-public perl-set-object
   (package
     (name "perl-set-object")
@@ -7058,6 +7297,27 @@ straightforward and (perhaps someday) standard way.  Spiffy borrows ideas from
 other OO languages like Python, Ruby, Java and Perl 6.")
     (license (package-license perl))))
 
+(define-public perl-statistics-basic
+  (package
+    (name "perl-statistics-basic")
+    (version "1.6611")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/J/JE/JETTERO/Statistics-Basic-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1ywl398z42hz9w1k0waf1caa6agz8jzsjlf4rzs1lgpx2mbcwmb8"))))
+    (build-system perl-build-system)
+    (inputs
+     `(("perl-number-format" ,perl-number-format)))
+    (home-page "http://search.cpan.org/dist/Statistics-Basic/")
+    (synopsis "Collection of very basic statistics modules")
+    (description "This package provides basic statistics functions like
+@code{median()}, @code{mean()}, @code{variance()} and @code{stddev()}.")
+    (license lgpl2.0)))
+
 (define-public perl-stream-buffered
   (package
     (name "perl-stream-buffered")
@@ -7884,6 +8144,30 @@ faster than shelling out to a system's diff executable for small files, and
 generally slower on larger files.")
     (license (package-license perl))))
 
+(define-public perl-text-format
+  (package
+    (name "perl-text-format")
+    (version "0.60")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/S/SH/SHLOMIF/Text-Format-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1f52jak0a2gwi4qcisp4nfbniq04dmmv5j8zkvzj8ik0f0sk2kv6"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+    (home-page "http://search.cpan.org/dist/Text-Format/")
+    (synopsis "Various subroutines to format text")
+    (description "This package provides functions to format text in various
+ways like centering, paragraphing, and converting tabs to spaces and spaces
+to tabs.")
+    (license perl-license)))
+
 (define-public perl-text-glob
   (package
     (name "perl-text-glob")
@@ -8040,6 +8324,23 @@ letters, the pronunciation expressed by the text in some other writing
 system.")
     (license (package-license perl))))
 
+(define-public perl-threads
+  (package
+    (name "perl-threads")
+    (version "2.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JD/JDHEDDEN/threads-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "047i22mdnf7fa0h9w5jhqrjbg561l5jxk8xqzwh6zbmwlac4qf98"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/threads/")
+    (synopsis "Perl interpreter-based threads")
+    (description "This module exposes interpreter threads to the Perl level.")
+    (license perl-license)))
+
 (define-public perl-throwable
   (package
     (name "perl-throwable")
@@ -8195,6 +8496,26 @@ rounded or exact terms.")
 duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
     (license (package-license perl))))
 
+(define-public perl-time-hires
+  (package
+    (name "perl-time-hires")
+    (version "1.9758")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/J/JH/JHI/Time-HiRes-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "07jbydcdzpjm6i4nidci0rlklx4kla210fsl6zishw0yq5di9yjv"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Time-HiRes/")
+    (synopsis "High resolution alarm, sleep, gettimeofday, interval timers")
+    (description "This package implements @code{usleep}, @code{ualarm}, and
+@code{gettimeofday} for Perl, as well as wrappers to implement @code{time},
+@code{sleep}, and @code{alarm} that know about non-integral seconds.")
+    (license perl-license)))
+
 (define-public perl-time-local
   (package
     (name "perl-time-local")
@@ -9063,6 +9384,30 @@ File::Find replacement in Perl.")
 interface to File::Find::Object.")
   (license (package-license perl))))
 
+(define-public perl-font-ttf
+  (package
+    (name "perl-font-ttf")
+    (version "1.06")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://cpan/authors/id/B/BH/BHALLISSY/Font-TTF-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "14y29ja3lsa3yw0ll20lj96f3zz5zydjqi1c5nh9wxar8927ssab"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-io-string" ,perl-io-string)))
+    (home-page "http://search.cpan.org/dist/Font-TTF/")
+    (synopsis "TTF font support for Perl")
+    (description "This package provides a Perl module for TrueType/OpenType
+font hacking.  It supports reading, processing and writing of the following
+tables: GDEF, GPOS, GSUB, LTSH, OS/2, PCLT, bsln, cmap, cvt, fdsc, feat,
+fpgm, glyf, hdmx, head, hhea, hmtx, kern, loca, maxp, mort, name, post, prep,
+prop, vhea, vmtx and the reading and writing of all other table types.")
+    (license artistic2.0)))
+
 (define-public perl-libtime-parsedate
   (package
     (name "perl-libtime-parsedate")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 58ace823ee..90e6ab1c1c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -62,7 +62,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.2.3")
+    (version "7.2.4")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -70,7 +70,7 @@
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "07v5bq5b97zdqwmig6sxqsdb50vdf04w6jzmjq5kqh9gaqdlzadk"))
+                "123s0lbyz4fxr3kk91r4v658mk899dym36lggxnx9pwd2jyv25kr"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 82b55fbf2f..38f279206d 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -178,14 +179,14 @@ colors, styles, options and details.")
 (define-public asymptote
   (package
     (name "asymptote")
-    (version "2.41")
+    (version "2.42")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/asymptote/"
                                   version "/asymptote-" version ".src.tgz"))
               (sha256
                (base32
-                "1w7fbq6gy65g0mxg6wdxi7v178c5yxvh9yrnv3bzm4sjzf4pwvhx"))))
+                "0dprc4shzdpvp87kc97ggh5ay2zmskjjaciay7mnblx63rhk1d95"))))
     (build-system gnu-build-system)
     ;; Note: The 'asy' binary retains a reference to docdir for use with its
     ;; "help" command in interactive mode, so adding a "doc" output is not
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index aabeaa7604..fb8575cb78 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
@@ -281,14 +281,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography-vectors
   (package
     (name "python-cryptography-vectors")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography_vectors" version))
        (sha256
         (base32
-         "1zk2shzpa9kw8fgwpsbdm5cgvbjd05vh2q6r0x9jlzq5vvjg4z5y"))))
+         "122na0c6r24ch2ifyr4ccjyih0inpqy7bc5za77699g3pa22rd98"))))
     (build-system python-build-system)
     (home-page "https://github.com/pyca/cryptography")
     (synopsis "Test vectors for the cryptography package")
@@ -303,14 +303,14 @@ is used by the Requests library to verify HTTPS requests.")
 (define-public python-cryptography
   (package
     (name "python-cryptography")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "cryptography" version))
        (sha256
         (base32
-         "1lxj3kqp552c715p0hzixpdhnz4ggd3jb7zz15q8dw534b9xknnx"))))
+         "0qrgip8vgcpk7v1jwf67mg50np5iprxrv8qrg8p382hkd6zrbhlz"))))
     (build-system python-build-system)
     (inputs
      `(("openssl" ,openssl)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 013758c6db..be93d430ff 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -48,7 +48,9 @@
 ;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
-
+;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
+;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
+;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; GNU Guix is free software; you can redistribute it and/or modify it
@@ -1382,9 +1384,9 @@ applications. dogtail scripts are written in Python and executed like any
 other Python program.")
     (license license:gpl2+)))
 
-(define-public python2-empy
+(define-public python-empy
   (package
-    (name "python2-empy")
+    (name "python-empy")
     (version "3.3")
     (source (origin
              (method url-fetch)
@@ -1395,12 +1397,7 @@ other Python program.")
                "01g8mmkfnvjdmlhsihwyx56lrg7r5m5d2fg6mnxsvy6g0dnl69f6"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (zero? (system* "./test.sh")))))))
+     `(#:tests? #f))                    ;python2 only
     (home-page "http://www.alcyone.com/software/empy/")
     (synopsis "Templating system for Python")
     (description
@@ -1417,6 +1414,9 @@ system is highly configurable via command line options and embedded
 commands.")
     (license license:lgpl2.1+)))
 
+(define-public python2-empy
+  (package-with-python2 python-empy))
+
 (define-public python2-element-tree
   (package
     (name "python2-element-tree")
@@ -8705,14 +8705,14 @@ to occurrences in strings and comments.")
 (define-public python-py3status
   (package
     (name "python-py3status")
-    (version "3.1")
+    (version "3.7")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "py3status" version))
        (sha256
         (base32
-         "0i283z1pivmir61z8kbiycigc94l61v33ygzkhczf1ifq7cppyds"))))
+         "0shxcfz4wcczj0mhwp4w0dvwd2fdd9bgprq8slim1519iiqzgwhq"))))
     (build-system python-build-system)
     (inputs
      `(("file" ,file)))
@@ -8725,8 +8725,8 @@ to occurrences in strings and comments.")
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((file-path (assoc-ref inputs "file")))
                (substitute* "py3status/parse_config.py"
-                 (("check_output\\(\\['file'")
-                  (string-append "check_output(['" file-path "/bin/file'")))
+                 (("\\['file', '-b'")
+                  (string-append "['" file-path "/bin/file', '-b'")))
                #t))))
        #:tests? #f)) ; TODO: Requires many libraries not in Guix.
     (home-page "https://github.com/ultrabug/py3status")
@@ -13205,3 +13205,48 @@ working with iterables.")
 
 (define-public python2-more-itertools
   (package-with-python2 python-more-itertools))
+
+(define-public python-latexcodec
+  (package
+    (name "python-latexcodec")
+    (version "1.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "latexcodec" version))
+       (sha256
+        (base32
+         "0zdd1gf24i83ykadx0y30n3001j43scqr2saql3vckk5c39dj1wn"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://readthedocs.org/projects/latexcodec/")
+    (synopsis "Work with LaTeX code in Python")
+    (description "Lexer and codec to work with LaTeX code in Python.")
+    (license license:expat)))
+
+(define-public python-pybtex
+  (package
+    (name "python-pybtex")
+    (version "0.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pybtex" version))
+       (sha256
+        (base32
+         "00300j8dn5pxq4ndxmfmbmycg2znawkqs49val2x6jlmfiy6r2mg"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (inputs
+     `(("python-latexcodec" ,python-latexcodec)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-six" ,python-six)))
+    (arguments
+     `(#:test-target "nosetests"))
+    (home-page "https://pybtex.org/")
+    (synopsis "BibTeX-compatible bibliography processor")
+    (description "Pybtex is a BibTeX-compatible bibliography processor written
+in Python.  You can simply type pybtex instead of bibtex.")
+    (license license:expat)))
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index 1294149609..38a371d233 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -29,17 +29,15 @@
 (define-public re2
    (package
      (name "re2")
-     (version "2018-03-01")
+     (version "2018-04-01")
+     (home-page "https://github.com/google/re2")
      (source (origin
                (method url-fetch)
-               (uri
-                (string-append
-                 "https://github.com/google/re2/archive/"
-                 version ".tar.gz"))
+               (uri (string-append home-page "/archive/" version ".tar.gz"))
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
-                 "0y21g321a802xmxdbkfz0rkcark7ypglpb3jjqhf13m6s7lpxp2i"))))
+                 "04n9ngikvpikpshwcrl26sxgn8qbrymy3b5wlbsyfdhknx35951g"))))
      (build-system gnu-build-system)
      (arguments
       `(#:modules ((guix build gnu-build-system)
@@ -66,7 +64,6 @@
               (delete-file (string-append (assoc-ref outputs "out")
                                           "/lib/libre2.a"))
               #t)))))
-     (home-page "https://github.com/google/re2")
      (synopsis "Fast, safe, thread-friendly regular expression engine")
      (description "RE2 is a fast, safe, thread-friendly alternative to
 backtracking regular expression engines like those used in PCRE, Perl and
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 17fe7ae52c..67dc6badfe 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -109,7 +109,7 @@ a focus on simplicity and productivity.")
 (define-public ruby-2.3
   (package
     (inherit ruby)
-    (version "2.3.6")
+    (version "2.3.7")
     (source
      (origin
        (method url-fetch)
@@ -118,7 +118,7 @@ a focus on simplicity and productivity.")
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "0mlz0mk7yyxia37k8fdv8m8a72h61nfbns28430h796l4an6kng0"))
+         "1nwfaifq5624p1ml56qq5dy5w38z37x22r0qgrbgbzrzklmqy7y6"))
        (modules '((guix build utils)))
        (snippet `(begin
                    ;; Remove bundled libffi
@@ -127,7 +127,7 @@ a focus on simplicity and productivity.")
 
 (define-public ruby-2.2
   (package (inherit ruby)
-    (version "2.2.9")
+    (version "2.2.10")
     (source
      (origin
        (method url-fetch)
@@ -136,7 +136,7 @@ a focus on simplicity and productivity.")
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "0p18xykx8dm5mmlx5n5243z67lj4vbvwr70bnc5x12am22ql8fri"))))))
+         "0l5nk9mc0q4769d2i9d9y1izk0pk0lms2bl8s3lclv36wsvvqxxz"))))))
 
 (define-public ruby-2.1
   (package (inherit ruby)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 69d329bf9a..70140579b6 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
 ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
+;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -46,71 +46,48 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
-  #:use-module (guix base16)      ;for generated "cargo" native-inputs
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module ((guix build utils) #:select (alist-replace))
+  #:use-module (guix utils)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26))
 
-;; Should be one less than the current released version.
-(define %rust-bootstrap-binaries-version "1.21.0")
-
-(define %rust-bootstrap-binaries
-  (origin
-    (method url-fetch)
-    (uri (string-append
-          "https://static.rust-lang.org/dist/"
-          "rust-" %rust-bootstrap-binaries-version
-          "-" %host-type ".tar.gz"))
-    (sha256
-     (base32
-      (match %host-type
-        ("i686-unknown-linux-gnu"
-         "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
-        ("x86_64-unknown-linux-gnu"
-         "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml")
-        ("armv7-unknown-linux-gnueabihf"
-         "1ml8fjq2b6j2vn1j314w93pf4wjl97n1mbz609h3i7md0zqscvs1")
-        ("aarch64-unknown-linux-gnu"
-         "1hv4m2m7xjcph39r6baryfg23hjcr4sbsrfnd1lh0wn67k2fc7j9")
-        ("mips64el-unknown-linux-gnuabi64"
-         "0p7fzkfcqg5yvj86v434z351dp7s7pgns8nzxj0fz3hmbfbvlvn9")
-        (_ "")))))) ; Catch-all for other systems.
-
 (define %cargo-reference-project-file "/dev/null")
 (define %cargo-reference-hash
   "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
 
-(define (increment-rust-version rust-version major patch)
-  (match (string-split rust-version #\.)
-    (("1" minor _)
-     (string-append (number->string major) "."
-                    (number->string (+ (string->number minor) 1)) "."
-                    (number->string patch)))))
-
-(define* (cargo-version rustc-version #:optional (patch 0))
-  ;; Computes the cargo version that matches the rustc version.
-  ;; This has so far continued to follow a predictable pattern:
-  ;; https://github.com/rust-lang/cargo/blob/50a46f47/README.md#releases
-  (increment-rust-version rustc-version 0 patch))
-
-(define* (rustc-version bootstrap-version #:optional (patch 0))
-  ;; Computes the rustc version that can be compiled from a given
-  ;; other rustc version. The patch argument is for selecting
-  ;; a stability or security fix. 1.11.0 -> 1.12.1 -> 1.13.0
-  (increment-rust-version bootstrap-version 1 patch))
-
-(define rustc-bootstrap
+(define rust-bootstrap
   (package
-    (name "rustc-bootstrap")
-    (version %rust-bootstrap-binaries-version)
-    (source %rust-bootstrap-binaries)
+    (name "rust-bootstrap")
+    (version "1.22.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://static.rust-lang.org/dist/"
+                    "rust-" version "-" %host-type ".tar.gz"))
+              (sha256
+               (base32
+                (match %host-type
+                  ("i686-unknown-linux-gnu"
+                   "15zqbx86nm13d5vq2gm69b7av4vg479f74b5by64hs3bcwwm08pr")
+                  ("x86_64-unknown-linux-gnu"
+                   "1yll78x6b3abnvgjf2b66gvp6mmcb9y9jdiqcwhmgc0z0i0fix4c")
+                  ("armv7-unknown-linux-gnueabihf"
+                   "138a8l528kzp5wyk1mgjaxs304ac5ms8vlpq0ggjaznm6bn2j7a5")
+                  ("aarch64-unknown-linux-gnu"
+                   "0z6m9m1rx4d96nvybbfmpscq4dv616m615ijy16d5wh2vx0p4na8")
+                  ("mips64el-unknown-linux-gnuabi64"
+                   "07k4pcv7jvfa48cscdj8752lby7m7xdl88v3a6na1vs675lhgja2")
+                  (_ ""))))))
     (build-system gnu-build-system)
     (native-inputs
      `(("patchelf" ,patchelf)))
     (inputs
-     `(("gcc:lib" ,(canonical-package gcc) "lib")
+     `(("gcc" ,(canonical-package gcc))
+       ("gcc:lib" ,(canonical-package gcc) "lib")
        ("zlib" ,zlib)))
+    (outputs '("out" "cargo"))
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
@@ -121,116 +98,63 @@
          (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
+                    (cargo-out (assoc-ref outputs "cargo"))
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
                     (zlib (assoc-ref inputs "zlib"))
                     (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" zlib "/lib:"
                                           libc "/lib:" gcc:lib "/lib"))
+                    (cargo-rpath (string-append cargo-out "/lib:" libc "/lib:"
+                                                gcc:lib "/lib"))
                     (rustc (string-append out "/bin/rustc"))
-                    (rustdoc (string-append out "/bin/rustdoc")))
-               (system* "bash" "install.sh"
+                    (rustdoc (string-append out "/bin/rustdoc"))
+                    (cargo (string-append cargo-out "/bin/cargo"))
+                    (gcc (assoc-ref inputs "gcc")))
+               ;; Install rustc/rustdoc
+               (invoke "bash" "install.sh"
                         (string-append "--prefix=" out)
                         (string-append "--components=rustc,"
                                        "rust-std-" %host-type))
+               ;; Instal cargo
+               (invoke "bash" "install.sh"
+                        (string-append "--prefix=" cargo-out)
+                        (string-append "--components=cargo"))
                (for-each (lambda (file)
-                           (system* "patchelf" "--set-rpath" rpath file))
+                           (invoke "patchelf" "--set-rpath" rpath file))
                          (cons* rustc rustdoc (find-files out "\\.so$")))
+               (invoke "patchelf" "--set-rpath" cargo-rpath cargo)
                (for-each (lambda (file)
-                           (system* "patchelf" "--set-interpreter" ld-so file))
-                         (list rustc rustdoc))))))))
-    (home-page "https://www.rust-lang.org")
-    (synopsis "Prebuilt rust compiler")
-    (description "This package provides a pre-built @command{rustc} compiler,
-which can in turn be used to build the final Rust compiler.")
-    (license license:asl2.0)))
-
-(define cargo-bootstrap
-  (package
-    (name "cargo-bootstrap")
-    (version (cargo-version %rust-bootstrap-binaries-version 1))
-    (source %rust-bootstrap-binaries)
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("patchelf" ,patchelf)))
-    (inputs
-     `(("gcc:lib" ,(canonical-package gcc) "lib")))
-    (arguments
-     `(#:tests? #f
-       #:strip-binaries? #f
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'build)
-         (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (gcc:lib (assoc-ref inputs "gcc:lib"))
-                    (libc (assoc-ref inputs "libc"))
-                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
-                    (rpath (string-append out "/lib:" libc "/lib:"
-                                          gcc:lib "/lib"))
-                    (cargo (string-append out "/bin/cargo")))
-               (system* "bash" "install.sh"
-                        (string-append "--prefix=" out)
-                        "--components=cargo")
-               (system* "patchelf"
-                        "--set-interpreter" ld-so
-                        "--set-rpath" rpath
-                        cargo)))))))
+                           (invoke "patchelf" "--set-interpreter" ld-so file))
+                         (list rustc rustdoc cargo))
+               ;; Rust requires a C toolchain for linking. The prebuilt
+               ;; binaries expect a compiler called cc. Thus symlink gcc
+               ;; to cc.
+               (symlink (string-append gcc "/bin/gcc")
+                        (string-append out "/bin/cc"))
+               #t))))))
     (home-page "https://www.rust-lang.org")
-    (synopsis "Prebuilt cargo package manager")
-    (description "This package provides a pre-built @command{cargo} package
-manager, which is required to build itself.")
+    (synopsis "Prebuilt rust compiler and cargo package manager")
+    (description "This package provides a pre-built @command{rustc} compiler
+and a pre-built @command{cargo} package manaer, which can
+in turn be used to build the final Rust.")
     (license license:asl2.0)))
 
-(define rust-bootstrap
-  (package
-    (name "rust-bootstrap")
-    (version %rust-bootstrap-binaries-version)
-    (source #f)
-    (build-system trivial-build-system)
-    (propagated-inputs
-     `(("rustc-bootstrap" ,rustc-bootstrap)
-       ("cargo-bootstrap" ,cargo-bootstrap)
-       ("gcc" ,(canonical-package gcc))))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder
-       (begin
-         (use-modules (guix build utils))
-         (let ((out (assoc-ref %outputs "out"))
-               (gcc (assoc-ref %build-inputs "gcc")))
-           (mkdir-p (string-append out "/bin"))
-           ;; Rust requires a C toolchain for linking. The prebuilt
-           ;; binaries expect a compiler called cc. Thus symlink gcc
-           ;; to cc.
-           (symlink (string-append gcc "/bin/gcc")
-                    (string-append out "/bin/cc"))
-           #t))))
-    (home-page "https://www.rust-lang.org")
-    (synopsis "Rust bootstrapping meta package")
-    (description "Meta package for a rust environment. Provides pre-compiled
-rustc-bootstrap and cargo-bootstrap packages.")
-    (license license:asl2.0)))
 
-(define-public rustc
+(define (rust-source version hash)
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://static.rust-lang.org/dist/"
+                        "rustc-" version "-src.tar.gz"))
+    (sha256 (base32 hash))
+    (modules '((guix build utils)))
+    (snippet '(begin (delete-file-recursively "src/llvm") #t))))
+
+(define-public rust-1.23
   (package
-    (name "rustc")
-    (version (rustc-version %rust-bootstrap-binaries-version 1))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://static.rust-lang.org/dist/"
-                    "rustc-" version "-src.tar.gz"))
-              (sha256
-               (base32
-                "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
-              (modules '((guix build utils)))
-              (snippet
-               `(begin
-                  (delete-file-recursively "src/llvm")
-                  #t))))
+    (name "rust")
+    (version "1.23.0")
+    (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison) ; For the tests
@@ -240,11 +164,16 @@ rustc-bootstrap and cargo-bootstrap packages.")
        ("git" ,git)
        ("procps" ,procps) ; For the tests
        ("python-2" ,python-2)
-       ("rust-bootstrap" ,rust-bootstrap)
+       ("rustc-bootstrap" ,rust-bootstrap)
+       ("cargo-bootstrap" ,rust-bootstrap "cargo")
+       ("pkg-config" ,pkg-config) ; For "cargo"
        ("which" ,which)))
     (inputs
      `(("jemalloc" ,jemalloc-4.5.0)
-       ("llvm" ,llvm-3.9.1)))
+       ("llvm" ,llvm-3.9.1)
+       ("openssl" ,openssl)
+       ("libcurl" ,curl))) ; For "cargo"
+    (outputs '("out" "doc" "cargo"))
     (arguments
      `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
        #:phases
@@ -259,9 +188,6 @@ rustc-bootstrap and cargo-bootstrap packages.")
          (add-after 'unpack 'patch-tests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((bash (assoc-ref inputs "bash")))
-               (substitute* "src/build_helper/lib.rs"
-                 ;; In same folder as gcc there is only "gcc-ar" utility
-                 (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
                (substitute* "src/libstd/process.rs"
                  ;; The newline is intentional.
                  ;; There's a line length "tidy" check in Rust which would
@@ -277,15 +203,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
                ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
                ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
                (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
-               (substitute* "src/build_helper/lib.rs"
-                 ;; Bug in Rust code.
-                 ;; Current implementation assume that if dst not exist then it's mtime
-                 ;; is 0, but in same time "src" have 0 mtime in guix build!
-                 (("let threshold = mtime\\(dst\\);")
-                  "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
                #t)))
+         (add-after 'patch-tests 'fix-mtime-bug
+           (lambda* _
+             (substitute* "src/build_helper/lib.rs"
+               ;; Bug in Rust code.
+               ;; Current implementation assume that if dst not exist then it's mtime
+               ;; is 0, but in same time "src" have 0 mtime in guix build!
+               (("let threshold = mtime\\(dst\\);")
+                "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
+             #t))
          (add-after 'patch-source-shebangs 'patch-cargo-checksums
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda* _
              (substitute* "src/Cargo.lock"
                (("(\"checksum .* = )\".*\"" all name)
                 (string-append name "\"" ,%cargo-reference-hash "\"")))
@@ -303,6 +232,7 @@ rustc-bootstrap and cargo-bootstrap packages.")
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
+                    (doc (assoc-ref outputs "doc"))
                     (gcc (assoc-ref inputs "gcc"))
                     (gdb (assoc-ref inputs "gdb"))
                     (binutils (assoc-ref inputs "binutils"))
@@ -318,15 +248,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
 [build]
 cargo = \"" cargo "/bin/cargo" "\"
 rustc = \"" rustc "/bin/rustc" "\"
+docs = true
 python = \"" python "/bin/python2" "\"
 gdb = \"" gdb "/bin/gdb" "\"
 vendor = true
 submodules = false
 [install]
 prefix = \"" out "\"
+docdir = \"" doc "/share/doc/rust" "\"
+sysconfdir = \"etc\"
+localstatedir = \"var/lib\"
 [rust]
 default-linker = \"" gcc "/bin/gcc" "\"
-default-ar = \"" binutils "/bin/ar" "\"
 channel = \"stable\"
 rpath = true
 # There is 2 failed codegen tests:
@@ -337,12 +270,13 @@ codegen-tests = false
 llvm-config = \"" llvm "/bin/llvm-config" "\"
 cc = \"" gcc "/bin/gcc" "\"
 cxx = \"" gcc "/bin/g++" "\"
+ar = \"" binutils "/bin/ar" "\"
 jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 [dist]
 ") port)))
                #t)))
          (add-before 'build 'reset-timestamps-after-changes
-           (lambda* (#:key inputs outputs #:allow-other-keys)
+           (lambda* _
              (define ref (stat "README.md"))
              (for-each
               (lambda (filename)
@@ -350,14 +284,21 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
               (find-files "." #:directories? #t))
              #t))
          (replace 'build
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (zero? (system* "./x.py" "build"))))
+           (lambda* _
+             (invoke "./x.py" "build")
+             (invoke "./x.py" "build" "src/tools/cargo")))
          (replace 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (zero? (system* "./x.py" "test"))))
+           (lambda* _
+             (invoke "./x.py" "test")))
          (replace 'install
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (zero? (system* "./x.py" "install"))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./x.py" "install")
+             (substitute* "config.toml"
+               ;; replace prefix to specific output
+               (("prefix = \"[^\"]*\"")
+                (string-append "prefix = \"" (assoc-ref outputs "cargo") "\"")))
+             (invoke "./x.py" "install" "cargo")
+             #t))
          (add-after 'install 'wrap-rustc
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
@@ -377,1095 +318,19 @@ safety and thread safety guarantees.")
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))
 
-;; This tries very hard not to get into a cyclic dependency like this:
-;;   cargo <- cargo-build-system <- cargo.
-(define-public cargo
-  (package
-    (name "cargo")
-    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/rust-lang/cargo/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
-    (build-system cargo-build-system)
-    (propagated-inputs
-     `(("cmake" ,cmake)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("curl" ,curl)
-       ("libgit2" ,libgit2)
-       ("libssh2" ,libssh2)
-       ("openssl" ,openssl)
-       ("python-2" ,python-2)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("git" ,git) ; required for tests
-       ;; Next dependencies generated with next command:
-       ;; cat Cargo.lock | awk '
-       ;;   /^"checksum/
-       ;;   { oname=name=$2; vers=$3; hash=$6;
-       ;;     if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
-       ;;     print "       (\"rust-" name "\"";
-       ;;     print "        ,(origin";
-       ;;     print "           (method url-fetch)";
-       ;;     print "           (uri (crate-uri \"" oname "\" \"" vers "\"))";
-       ;;     print "           (file-name \"rust-" oname "\-\" vers "\")
-       ;;     print "           (sha256";
-       ;;     print "            (base16-string->bytevector";
-       ;;     print "             " hash "))))"
-       ;;   }'
-       ("rust-advapi32-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "advapi32-sys" "0.2.0"))
-           (file-name "rust-advapi32-sys-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
-       ("rust-aho-corasick"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "aho-corasick" "0.5.3"))
-           (file-name "rust-aho-corasick-0.5.3")
-           (sha256
-            (base16-string->bytevector
-             "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
-       ("rust-aho-corasick-0.6.3"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "aho-corasick" "0.6.3"))
-           (file-name "rust-aho-corasick-0.6.3")
-           (sha256
-            (base16-string->bytevector
-             "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
-       ("rust-atty"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "atty" "0.2.3"))
-           (file-name "rust-atty-0.2.3")
-           (sha256
-            (base16-string->bytevector
-             "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
-       ("rust-backtrace"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "backtrace" "0.3.3"))
-           (file-name "rust-backtrace-0.3.3")
-           (sha256
-            (base16-string->bytevector
-             "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
-       ("rust-backtrace-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "backtrace-sys" "0.1.14"))
-           (file-name "rust-backtrace-sys-0.1.14")
-           (sha256
-            (base16-string->bytevector
-             "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
-       ("rust-bitflags"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "bitflags" "0.7.0"))
-           (file-name "rust-bitflags-0.7.0")
-           (sha256
-            (base16-string->bytevector
-             "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
-       ("rust-bitflags-0.9.1"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "bitflags" "0.9.1"))
-           (file-name "rust-bitflags-0.9.1")
-           (sha256
-            (base16-string->bytevector
-             "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
-       ("rust-bufstream"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "bufstream" "0.1.3"))
-           (file-name "rust-bufstream-0.1.3")
-           (sha256
-            (base16-string->bytevector
-             "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
-       ("rust-cc"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "cc" "1.0.0"))
-           (file-name "rust-cc-1.0.0")
-           (sha256
-            (base16-string->bytevector
-             "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
-       ("rust-cfg-if"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "cfg-if" "0.1.2"))
-           (file-name "rust-cfg-if-0.1.2")
-           (sha256
-            (base16-string->bytevector
-             "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
-       ("rust-cmake"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "cmake" "0.1.26"))
-           (file-name "rust-cmake-0.1.26")
-           (sha256
-            (base16-string->bytevector
-             "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
-       ("rust-commoncrypto"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "commoncrypto" "0.2.0"))
-           (file-name "rust-commoncrypto-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
-       ("rust-commoncrypto-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "commoncrypto-sys" "0.2.0"))
-           (file-name "rust-commoncrypto-sys-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
-       ("rust-conv"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "conv" "0.3.3"))
-           (file-name "rust-conv-0.3.3")
-           (sha256
-            (base16-string->bytevector
-             "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
-       ("rust-core-foundation"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "core-foundation" "0.4.4"))
-           (file-name "rust-core-foundation-0.4.4")
-           (sha256
-            (base16-string->bytevector
-             "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
-       ("rust-core-foundation-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "core-foundation-sys" "0.4.4"))
-           (file-name "rust-core-foundation-sys-0.4.4")
-           (sha256
-            (base16-string->bytevector
-             "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
-       ("rust-crossbeam"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "crossbeam" "0.2.10"))
-           (file-name "rust-crossbeam-0.2.10")
-           (sha256
-            (base16-string->bytevector
-             "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
-       ("rust-crossbeam-0.3.0"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "crossbeam" "0.3.0"))
-           (file-name "rust-crossbeam-0.3.0")
-           (sha256
-            (base16-string->bytevector
-             "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
-       ("rust-crypto-hash"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "crypto-hash" "0.3.0"))
-           (file-name "rust-crypto-hash-0.3.0")
-           (sha256
-            (base16-string->bytevector
-             "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
-       ("rust-curl"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "curl" "0.4.8"))
-           (file-name "rust-curl-0.4.8")
-           (sha256
-            (base16-string->bytevector
-             "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
-       ("rust-curl-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "curl-sys" "0.3.15"))
-           (file-name "rust-curl-sys-0.3.15")
-           (sha256
-            (base16-string->bytevector
-             "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
-       ("rust-custom_derive"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "custom_derive" "0.1.7"))
-           (file-name "rust-custom_derive-0.1.7")
-           (sha256
-            (base16-string->bytevector
-             "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
-       ("rust-dbghelp-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "dbghelp-sys" "0.2.0"))
-           (file-name "rust-dbghelp-sys-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
-       ("rust-docopt"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "docopt" "0.8.1"))
-           (file-name "rust-docopt-0.8.1")
-           (sha256
-            (base16-string->bytevector
-             "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
-       ("rust-dtoa"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "dtoa" "0.4.2"))
-           (file-name "rust-dtoa-0.4.2")
-           (sha256
-            (base16-string->bytevector
-             "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
-       ("rust-env_logger"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "env_logger" "0.4.3"))
-           (file-name "rust-env_logger-0.4.3")
-           (sha256
-            (base16-string->bytevector
-             "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
-       ("rust-error-chain"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "error-chain" "0.11.0"))
-           (file-name "rust-error-chain-0.11.0")
-           (sha256
-            (base16-string->bytevector
-             "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
-       ("rust-filetime"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "filetime" "0.1.12"))
-           (file-name "rust-filetime-0.1.12")
-           (sha256
-            (base16-string->bytevector
-             "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
-       ("rust-flate2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "flate2" "0.2.20"))
-           (file-name "rust-flate2-0.2.20")
-           (sha256
-            (base16-string->bytevector
-             "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
-       ("rust-fnv"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "fnv" "1.0.5"))
-           (file-name "rust-fnv-1.0.5")
-           (sha256
-            (base16-string->bytevector
-             "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
-       ("rust-foreign-types"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "foreign-types" "0.2.0"))
-           (file-name "rust-foreign-types-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
-       ("rust-fs2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "fs2" "0.4.2"))
-           (file-name "rust-fs2-0.4.2")
-           (sha256
-            (base16-string->bytevector
-             "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
-       ("rust-git2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "git2" "0.6.8"))
-           (file-name "rust-git2-0.6.8")
-           (sha256
-            (base16-string->bytevector
-             "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
-       ("rust-git2-curl"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "git2-curl" "0.7.0"))
-           (file-name "rust-git2-curl-0.7.0")
-           (sha256
-            (base16-string->bytevector
-             "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
-       ("rust-glob"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "glob" "0.2.11"))
-           (file-name "rust-glob-0.2.11")
-           (sha256
-            (base16-string->bytevector
-             "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
-       ("rust-globset"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "globset" "0.2.0"))
-           (file-name "rust-globset-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
-       ("rust-hamcrest"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "hamcrest" "0.1.1"))
-           (file-name "rust-hamcrest-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
-       ("rust-hex"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "hex" "0.2.0"))
-           (file-name "rust-hex-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
-       ("rust-home"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "home" "0.3.0"))
-           (file-name "rust-home-0.3.0")
-           (sha256
-            (base16-string->bytevector
-             "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
-       ("rust-idna"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "idna" "0.1.4"))
-           (file-name "rust-idna-0.1.4")
-           (sha256
-            (base16-string->bytevector
-             "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
-       ("rust-ignore"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "ignore" "0.2.2"))
-           (file-name "rust-ignore-0.2.2")
-           (sha256
-            (base16-string->bytevector
-             "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
-       ("rust-itoa"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "itoa" "0.3.4"))
-           (file-name "rust-itoa-0.3.4")
-           (sha256
-            (base16-string->bytevector
-             "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
-       ("rust-jobserver"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "jobserver" "0.1.6"))
-           (file-name "rust-jobserver-0.1.6")
-           (sha256
-            (base16-string->bytevector
-             "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
-       ("rust-kernel32-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "kernel32-sys" "0.2.2"))
-           (file-name "rust-kernel32-sys-0.2.2")
-           (sha256
-            (base16-string->bytevector
-             "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
-       ("rust-lazy_static"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "lazy_static" "0.2.9"))
-           (file-name "rust-lazy_static-0.2.9")
-           (sha256
-            (base16-string->bytevector
-             "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
-       ("rust-libc"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "libc" "0.2.31"))
-           (file-name "rust-libc-0.2.31")
-           (sha256
-            (base16-string->bytevector
-             "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
-       ("rust-libgit2-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "libgit2-sys" "0.6.16"))
-           (file-name "rust-libgit2-sys-0.6.16")
-           (sha256
-            (base16-string->bytevector
-             "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
-       ("rust-libssh2-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "libssh2-sys" "0.2.6"))
-           (file-name "rust-libssh2-sys-0.2.6")
-           (sha256
-            (base16-string->bytevector
-             "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
-       ("rust-libz-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "libz-sys" "1.0.17"))
-           (file-name "rust-libz-sys-1.0.17")
-           (sha256
-            (base16-string->bytevector
-             "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
-       ("rust-log"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "log" "0.3.8"))
-           (file-name "rust-log-0.3.8")
-           (sha256
-            (base16-string->bytevector
-             "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
-       ("rust-magenta"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "magenta" "0.1.1"))
-           (file-name "rust-magenta-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
-       ("rust-magenta-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "magenta-sys" "0.1.1"))
-           (file-name "rust-magenta-sys-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
-       ("rust-matches"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "matches" "0.1.6"))
-           (file-name "rust-matches-0.1.6")
-           (sha256
-            (base16-string->bytevector
-             "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
-       ("rust-memchr"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "memchr" "0.1.11"))
-           (file-name "rust-memchr-0.1.11")
-           (sha256
-            (base16-string->bytevector
-             "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
-       ("rust-memchr-1.0.1"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "memchr" "1.0.1"))
-           (file-name "rust-memchr-1.0.1")
-           (sha256
-            (base16-string->bytevector
-             "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
-       ("rust-miniz-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "miniz-sys" "0.1.10"))
-           (file-name "rust-miniz-sys-0.1.10")
-           (sha256
-            (base16-string->bytevector
-             "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
-       ("rust-miow"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "miow" "0.2.1"))
-           (file-name "rust-miow-0.2.1")
-           (sha256
-            (base16-string->bytevector
-             "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
-       ("rust-net2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "net2" "0.2.31"))
-           (file-name "rust-net2-0.2.31")
-           (sha256
-            (base16-string->bytevector
-             "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
-       ("rust-num"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num" "0.1.40"))
-           (file-name "rust-num-0.1.40")
-           (sha256
-            (base16-string->bytevector
-             "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
-       ("rust-num-bigint"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-bigint" "0.1.40"))
-           (file-name "rust-num-bigint-0.1.40")
-           (sha256
-            (base16-string->bytevector
-             "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
-       ("rust-num-complex"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-complex" "0.1.40"))
-           (file-name "rust-num-complex-0.1.40")
-           (sha256
-            (base16-string->bytevector
-             "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
-       ("rust-num-integer"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-integer" "0.1.35"))
-           (file-name "rust-num-integer-0.1.35")
-           (sha256
-            (base16-string->bytevector
-             "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
-       ("rust-num-iter"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-iter" "0.1.34"))
-           (file-name "rust-num-iter-0.1.34")
-           (sha256
-            (base16-string->bytevector
-             "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
-       ("rust-num-rational"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-rational" "0.1.39"))
-           (file-name "rust-num-rational-0.1.39")
-           (sha256
-            (base16-string->bytevector
-             "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
-       ("rust-num-traits"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num-traits" "0.1.40"))
-           (file-name "rust-num-traits-0.1.40")
-           (sha256
-            (base16-string->bytevector
-             "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
-       ("rust-num_cpus"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "num_cpus" "1.7.0"))
-           (file-name "rust-num_cpus-1.7.0")
-           (sha256
-            (base16-string->bytevector
-             "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
-       ("rust-openssl"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "openssl" "0.9.19"))
-           (file-name "rust-openssl-0.9.19")
-           (sha256
-            (base16-string->bytevector
-             "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
-       ("rust-openssl-probe"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "openssl-probe" "0.1.1"))
-           (file-name "rust-openssl-probe-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
-       ("rust-openssl-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "openssl-sys" "0.9.19"))
-           (file-name "rust-openssl-sys-0.9.19")
-           (sha256
-            (base16-string->bytevector
-             "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
-       ("rust-percent-encoding"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "percent-encoding" "1.0.0"))
-           (file-name "rust-precent-encoding-1.0.0")
-           (sha256
-            (base16-string->bytevector
-             "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
-       ("rust-pkg-config"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "pkg-config" "0.3.9"))
-           (file-name "rust-pkg-config-0.3.9")
-           (sha256
-            (base16-string->bytevector
-             "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
-       ("rust-psapi-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "psapi-sys" "0.1.0"))
-           (file-name "rust-psapi-sys-0.1.0")
-           (sha256
-            (base16-string->bytevector
-             "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
-       ("rust-quote"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "quote" "0.3.15"))
-           (file-name "rust-quote-0.3.15")
-           (sha256
-            (base16-string->bytevector
-             "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
-       ("rust-rand"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "rand" "0.3.16"))
-           (file-name "rust-rand-0.3.16")
-           (sha256
-            (base16-string->bytevector
-             "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
-       ("rust-redox_syscall"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "redox_syscall" "0.1.31"))
-           (file-name "rust-redox_syscall-0.1.31")
-           (sha256
-            (base16-string->bytevector
-             "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
-       ("rust-redox_termios"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "redox_termios" "0.1.1"))
-           (file-name "rust-redox_termios-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
-       ("rust-regex"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "regex" "0.1.80"))
-           (file-name "rust-regex-0.1.80")
-           (sha256
-            (base16-string->bytevector
-             "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
-       ("rust-regex-0.2.2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "regex" "0.2.2"))
-           (file-name "rust-regex-0.2.2")
-           (sha256
-            (base16-string->bytevector
-             "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
-       ("rust-regex-syntax"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "regex-syntax" "0.3.9"))
-           (file-name "rust-regex-syntax-0.3.9")
-           (sha256
-            (base16-string->bytevector
-             "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
-       ("rust-regex-syntax-0.4.1"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "regex-syntax" "0.4.1"))
-           (file-name "rust-regex-syntax-0.4.1")
-           (sha256
-            (base16-string->bytevector
-             "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
-       ("rust-rustc-demangle"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "rustc-demangle" "0.1.5"))
-           (file-name "rust-rustc-demangle-0.1.5")
-           (sha256
-            (base16-string->bytevector
-             "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
-       ("rust-rustc-serialize"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "rustc-serialize" "0.3.24"))
-           (file-name "rust-rustc-serialize-0.3.24")
-           (sha256
-            (base16-string->bytevector
-             "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
-       ("rust-same-file"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "same-file" "0.1.3"))
-           (file-name "rust-same-file-0.1.3")
-           (sha256
-            (base16-string->bytevector
-             "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
-       ("rust-scoped-tls"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "scoped-tls" "0.1.0"))
-           (file-name "rust-scoped-tls-0.1.0")
-           (sha256
-            (base16-string->bytevector
-             "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
-       ("rust-scopeguard"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "scopeguard" "0.1.2"))
-           (file-name "rust-scopeguard-0.1.2")
-           (sha256
-            (base16-string->bytevector
-             "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
-       ("rust-semver"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "semver" "0.8.0"))
-           (file-name "rust-semver-0.8.0")
-           (sha256
-            (base16-string->bytevector
-             "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
-       ("rust-semver-parser"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "semver-parser" "0.7.0"))
-           (file-name "rust-semver-parser-0.7.0")
-           (sha256
-            (base16-string->bytevector
-             "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
-       ("rust-serde"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "serde" "1.0.15"))
-           (file-name "rust-serde-1.0.15")
-           (sha256
-            (base16-string->bytevector
-             "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
-       ("rust-serde_derive"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "serde_derive" "1.0.15"))
-           (file-name "rust-serde_derive-1.0.15")
-           (sha256
-            (base16-string->bytevector
-             "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
-       ("rust-serde_derive_internals"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "serde_derive_internals" "0.16.0"))
-           (file-name "rust-serde_derive_internals-0.16.0")
-           (sha256
-            (base16-string->bytevector
-             "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
-       ("rust-serde_ignored"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "serde_ignored" "0.0.4"))
-           (file-name "rust-serde_ignored-0.0.4")
-           (sha256
-            (base16-string->bytevector
-             "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
-       ("rust-serde_json"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "serde_json" "1.0.3"))
-           (file-name "rust-serde_json-1.0.3")
-           (sha256
-            (base16-string->bytevector
-             "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
-       ("rust-shell-escape"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "shell-escape" "0.1.3"))
-           (file-name "rust-shell-escape-0.1.3")
-           (sha256
-            (base16-string->bytevector
-             "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
-       ("rust-socket2"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "socket2" "0.2.3"))
-           (file-name "rust-socket2-0.2.3")
-           (sha256
-            (base16-string->bytevector
-             "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
-       ("rust-strsim"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "strsim" "0.6.0"))
-           (file-name "rust-strsim-0.6.0")
-           (sha256
-            (base16-string->bytevector
-             "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
-       ("rust-syn"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "syn" "0.11.11"))
-           (file-name "rust-syn-0.11.11")
-           (sha256
-            (base16-string->bytevector
-             "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
-       ("rust-synom"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "synom" "0.11.3"))
-           (file-name "rust-synom-0.11.3")
-           (sha256
-            (base16-string->bytevector
-             "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
-       ("rust-tar"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "tar" "0.4.13"))
-           (file-name "rust-tar-0.4.13")
-           (sha256
-            (base16-string->bytevector
-             "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
-       ("rust-tempdir"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "tempdir" "0.3.5"))
-           (file-name "rust-tempdir-0.3.5")
-           (sha256
-            (base16-string->bytevector
-             "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
-       ("rust-termcolor"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "termcolor" "0.3.3"))
-           (file-name "rust-termcolor-0.3.3")
-           (sha256
-            (base16-string->bytevector
-             "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
-       ("rust-termion"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "termion" "1.5.1"))
-           (file-name "rust-termion-1.5.1")
-           (sha256
-            (base16-string->bytevector
-             "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
-       ("rust-thread-id"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "thread-id" "2.0.0"))
-           (file-name "rust-thread-id-2.0.0")
-           (sha256
-            (base16-string->bytevector
-             "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
-       ("rust-thread_local"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "thread_local" "0.2.7"))
-           (file-name "rust-thread_local-0.2.7")
-           (sha256
-            (base16-string->bytevector
-             "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
-       ("rust-thread_local-0.3.4"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "thread_local" "0.3.4"))
-           (file-name "rust-thread_local-0.3.4")
-           (sha256
-            (base16-string->bytevector
-             "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
-       ("rust-toml"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "toml" "0.4.5"))
-           (file-name "rust-toml-0.4.5")
-           (sha256
-            (base16-string->bytevector
-             "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
-       ("rust-unicode-bidi"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "unicode-bidi" "0.3.4"))
-           (file-name "rust-unicode-bidi-0.3.4")
-           (sha256
-            (base16-string->bytevector
-             "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
-       ("rust-unicode-normalization"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "unicode-normalization" "0.1.5"))
-           (file-name "rust-unicode-normalization-0.1.5")
-           (sha256
-            (base16-string->bytevector
-             "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
-       ("rust-unicode-xid"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "unicode-xid" "0.0.4"))
-           (file-name "rust-unicode-xid-0.0.4")
-           (sha256
-            (base16-string->bytevector
-             "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
-       ("rust-unreachable"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "unreachable" "1.0.0"))
-           (file-name "rust-unreachable-1.0.0")
-           (sha256
-            (base16-string->bytevector
-             "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
-       ("rust-url"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "url" "1.5.1"))
-           (file-name "rust-url-1.5.1")
-           (sha256
-            (base16-string->bytevector
-             "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
-       ("rust-userenv-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "userenv-sys" "0.2.0"))
-           (file-name "rust-userenv-sys-0.2.0")
-           (sha256
-            (base16-string->bytevector
-             "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
-       ("rust-utf8-ranges"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "utf8-ranges" "0.1.3"))
-           (file-name "rust-utf8-ranges-0.1.3")
-           (sha256
-            (base16-string->bytevector
-             "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
-       ("rust-utf8-ranges-1.0.0"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "utf8-ranges" "1.0.0"))
-           (file-name "rust-utf8-ranges-1.0.0")
-           (sha256
-            (base16-string->bytevector
-             "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
-       ("rust-vcpkg"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "vcpkg" "0.2.2"))
-           (file-name "rust-vcpkg-0.2.2")
-           (sha256
-            (base16-string->bytevector
-             "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
-       ("rust-void"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "void" "1.0.2"))
-           (file-name "rust-void-1.0.2")
-           (sha256
-            (base16-string->bytevector
-             "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
-       ("rust-walkdir"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "walkdir" "1.0.7"))
-           (file-name "rust-walkdir-1.0.7")
-           (sha256
-            (base16-string->bytevector
-             "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
-       ("rust-winapi"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "winapi" "0.2.8"))
-           (file-name "rust-winapi-0.2.8")
-           (sha256
-            (base16-string->bytevector
-             "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
-       ("rust-winapi-build"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "winapi-build" "0.1.1"))
-           (file-name "rust-winapi-build-0.1.1")
-           (sha256
-            (base16-string->bytevector
-             "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
-       ("rust-wincolor"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "wincolor" "0.1.4"))
-           (file-name "rust-wincolor-0.1.4")
-           (sha256
-            (base16-string->bytevector
-             "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
-       ("rust-ws2_32-sys"
-        ,(origin
-           (method url-fetch)
-           (uri (crate-uri "ws2_32-sys" "0.2.1"))
-           (file-name "rust-ws2_32-sys-0.2.1")
-           (sha256
-            (base16-string->bytevector
-             "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
-    (arguments
-     `(#:cargo ,cargo-bootstrap
-       #:rustc ,rustc ; Force to use rustc from current file
-       #:modules
-       ((ice-9 match)
-        (srfi srfi-1) ; 'every
-        (guix build utils)
-        (guix build cargo-build-system))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-dependencies
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (define (unpack source target)
-               (mkdir-p target)
-               (with-directory-excursion target
-                 (zero? (system* "tar" "xf"
-                                 source
-                                 "--strip-components=1"))))
-             (define (touch file-name)
-               (call-with-output-file file-name (const #t)))
-             (define (install-rust-library entry)
-               (match entry
-                 ((name . src)
-                  (if (string-prefix? "rust-" name)
-                      (let* ((rust-length (string-length "rust-"))
-                             (rust-name (string-drop name rust-length))
-                             (rsrc (string-append "vendor/" rust-name))
-                             (unpack-status (unpack src rsrc)))
-                        (touch (string-append rsrc "/.cargo-ok"))
-                        (generate-checksums rsrc src)
-                        unpack-status)))
-                 (_ #t)))
-             (mkdir "vendor")
-             (every install-rust-library inputs)))
-         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "Cargo.lock"
-               (("(\"checksum .* = )\".*\"" all name)
-                (string-append name "\"" ,%cargo-reference-hash "\"")))
-             (for-each
-              (lambda (filename)
-                (use-modules (guix build cargo-build-system))
-                (delete-file filename)
-                (let* ((dir (dirname filename)))
-                  (display (string-append
-                            "patch-cargo-checksums: generate-checksums for "
-                            dir "\n"))
-                  (generate-checksums dir ,%cargo-reference-project-file)))
-              (find-files "vendor" ".cargo-checksum.json"))
-             #t))
-         (replace 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (substitute* "tests/build.rs"
-               (("/usr/bin/env") (which "env"))
-               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
-               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
-             (substitute* "tests/death.rs"
-               ;; Stuck when built in container
-               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
-             (mkdir ".cargo")
-             (call-with-output-file ".cargo/config"
-               (lambda (port)
-                 (display "
-[source.crates-io]
-registry = 'https://github.com/rust-lang/crates.io-index'
-replace-with = 'vendored-sources'
-
-[source.vendored-sources]
-directory = 'vendor'
-" port)))
-             ;; Disable test for cross compilation support
-             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
-             (setenv "SHELL" (which "sh"))
-             (setenv "CONFIG_SHELL" (which "sh"))
-             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
-             #t)))))
-    (home-page "https://github.com/rust-lang/cargo")
-    (synopsis "Build tool and package manager for Rust")
-    (description "Cargo is a tool that allows Rust projects to declare their
-dependencies and ensures a reproducible build.")
-    ;; Cargo is dual licensed Apache and MIT. Also contains
-    ;; code from openssl which is GPL2 with linking exception.
-    (license (list license:asl2.0 license:expat license:gpl2))))
+(define-public rust
+  (let ((base-rust rust-1.23))
+    (package
+      (inherit base-rust)
+      (version "1.24.1")
+      (source
+       (rust-source version
+                    "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))
+      (native-inputs
+       (alist-replace "cargo-bootstrap" (list base-rust "cargo")
+                      (alist-replace "rustc-bootstrap" (list base-rust)
+                                     (package-native-inputs base-rust))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases) `(modify-phases ,phases
+                               (delete 'fix-mtime-bug))))))))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index e2e8c5e093..d84f52ffc5 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -233,14 +233,14 @@ Desktops into Active Directory environments using the winbind daemon.")
 (define-public talloc
   (package
     (name "talloc")
-    (version "2.1.12")
+    (version "2.1.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0jv0ri9vj93fczzgl7rn7xvnfgl2kfx4x85cr8h8v52yh7v0qz4q"))))
+                "0iv09iv385x69gfzvassq6m3y0rd8ncylls95dm015xdy3drkww4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 4340237b29..50b5368a3b 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -407,7 +407,7 @@ implementation techniques and as an expository tool.")
 (define-public racket
   (package
     (name "racket")
-    (version "6.11")
+    (version "6.12")
     (source (origin
              (method url-fetch)
              (uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -417,7 +417,11 @@ implementation techniques and as an expository tool.")
                          version "/racket-" version "-src.tgz")))
              (sha256
               (base32
-               "1nk7705x24jjlbqqhj8yvbgqkfscxx3m81bry1g56kjxysjmf3sw"))))
+               "0cwcypzjfl9py1s695mhqkiapff7c1w29llsmdj7qgn58wl0apk5"))
+             (patches (search-patches
+                       ;; See: https://github.com/racket/racket/issues/1962
+                       ;; This can be removed in whatever Racket release comes after 6.12
+                       "racket-fix-xform-issue.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index a719819927..02deb5c4ae 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,13 +27,16 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages check)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml))
 
@@ -307,4 +311,50 @@ can quickly and easily index directories of files or remote web sites and
 search the generated indexes.")
     (license gpl2+)))                   ;with exception
 
+(define-public xapers
+  (package
+    (name "xapers")
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://finestructure.net/xapers/releases/xapers-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0ykz6hn3qj46w3c99d6q0pi5ncq2894simcl7vapv047zm3cylmd"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-urwid" ,python-urwid)))
+    (inputs
+     `(("poppler" ,poppler)
+       ("python" ,python)
+       ("python-latexcodec" ,python-latexcodec)
+       ("python-pybtex" ,python-pybtex)
+       ("python-pycurl" ,python-pycurl)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-six" ,python-six)
+       ("python-xapian-bindings" ,python-xapian-bindings)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man1 (string-append out "/share/man/man1")))
+               (install-file "man/man1/xapers.1"  man1)
+               (install-file "man/man1/xapers-adder.1" man1)
+               (install-file "bin/xapers-adder" bin)))))))
+    (home-page "https://finestructure.net/xapers/")
+    (synopsis "Personal document indexing system")
+    (description
+     "Xapers is a personal document indexing system,
+geared towards academic journal articles build on the Xapian search engine.
+Think of it as your own personal document search engine, or a local cache of
+online libraries.  It provides fast search of document text and
+bibliographic data and simple document and bibtex retrieval.")
+    (license gpl3+)))
+
 ;;; search.scm ends here
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 480b2d11c2..d712e06431 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -135,14 +135,14 @@ a server that supports the SSH-2 protocol.")
 (define-public openssh
   (package
    (name "openssh")
-   (version "7.6p1")
+   (version "7.7p1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
                                  name "-" version ".tar.gz"))
              (sha256
               (base32
-               "08qpsb8mrzcx8wgvz9insiyvq7sbg26yj5nvl2m5n57yvppcl8x3"))))
+               "13vbbrvj3mmfhj83qyrg5c0ipr6bzw5s65dy4k8gr7p9hkkfffyp"))))
    (build-system gnu-build-system)
    (native-inputs `(("groff" ,groff)))
    (inputs `(("openssl" ,openssl)
@@ -152,6 +152,9 @@ a server that supports the SSH-2 protocol.")
              ("xauth" ,xauth)))                   ;for 'ssh -X' and 'ssh -Y'
    (arguments
     `(#:test-target "tests"
+      ;; Otherwise, the test scripts try to use a nonexistent directory and
+      ;; fail.
+      #:make-flags '("REGRESSTMP=\"$${BUILDDIR}/regress\"")
       #:configure-flags  `("--sysconfdir=/etc/ssh"
 
                            ;; Default value of 'PATH' used by sshd.
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 4c6404279a..81c38b441e 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -361,14 +361,14 @@ k-nearest neighbour, Learning Vector Quantization and Self-Organizing Maps.")
 (define-public r-cluster
   (package
     (name "r-cluster")
-    (version "2.0.6")
+    (version "2.0.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cluster" version))
        (sha256
         (base32
-         "1z4gbz7chxxi4ly6c0yjlikwgf8aa8dlg05cn5cd6pjr21zvh97l"))))
+         "0nf2hnsv5rhw6399b4gk1rj5c8hfc6ajfnkh3qbwfx3cz4asrg45"))))
     (build-system r-build-system)
     (inputs
      `(("gfortran" ,gfortran)))
@@ -466,14 +466,14 @@ also flexible enough to handle most nonstandard requirements.")
 (define-public r-matrix
   (package
     (name "r-matrix")
-    (version "1.2-12")
+    (version "1.2-13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Matrix" version))
        (sha256
         (base32
-         "1wm45hg4x5ay15y03k6rmgkd1n9r01da72mszk24vafwd7pimr8n"))))
+         "1j4fyn2r3ds51hrxch738gn7d9qvpi4b01n0rxzw5jpv28rnpyvx"))))
     (properties `((upstream-name . "Matrix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3121,14 +3121,14 @@ analysis of large sparse or dense matrices.")
 (define-public r-glmnet
   (package
    (name "r-glmnet")
-   (version "2.0-13")
+   (version "2.0-16")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "glmnet" version))
      (sha256
       (base32
-       "1zdqp6wnqxzp5qn2ky47phbkrxv3cpgbwmdp896h3xxjvp58sa7k"))))
+       "1brr51z1fzbpyj6myyir4g6dhbp6xwl7nx4xnvrjarnf5y0csk55"))))
    (build-system r-build-system)
    (inputs
     `(("gfortran" ,gfortran)))
@@ -3544,13 +3544,13 @@ memory usage.")
 (define-public r-viridis
   (package
     (name "r-viridis")
-    (version "0.5.0")
+    (version "0.5.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "viridis" version))
               (sha256
                (base32
-                "1ka6amybgzqkg3cbwfxwwqzzzpfn6q5jcia5am0bw48y5hbpg97y"))))
+                "060rf1jn29dq53y3nhb0hykvcap6rqsk04rq544ypiiqb18ngwnx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -4312,13 +4312,13 @@ data at that region, and avoids over-plotting.")
 (define-public r-ggthemes
   (package
     (name "r-ggthemes")
-    (version "3.4.0")
+    (version "3.4.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "ggthemes" version))
               (sha256
                (base32
-                "1jj8lp7jbk3489kpgbw4b5phpn01gkfmksc21c6sn3x6wmzyn6hs"))))
+                "0i7ygpizs00acizixc29bhbrci523ys7vzxbii9b3bcmfa3pj7i3"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -5059,14 +5059,14 @@ algorithms.")
 (define-public r-lme4
   (package
     (name "r-lme4")
-    (version "1.1-15")
+    (version "1.1-16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lme4" version))
        (sha256
         (base32
-         "0sc6rvhiizxxpkdc3wps200wg3pqc0d89crn29lzm75fk8qdd7vx"))))
+         "0p5x9ki4dq8058mc7k9wdnlh60z1xa3wk2nmf71wl7w59m4szh92"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -5139,14 +5139,14 @@ to Applied regression, Second Edition, Sage, 2011.")
 (define-public r-caret
   (package
     (name "r-caret")
-    (version "6.0-78")
+    (version "6.0-79")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "caret" version))
        (sha256
         (base32
-         "0h1nxzii2h80aslp1zsjczrlfmaks44sskabk4yq9c5rafc7ka6y"))))
+         "1i6sjw279g6mj83vz5gv99x0nljcbpy7v0nbl72lmd80sf7rjshl"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-foreach" ,r-foreach)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 7560238378..5868bdbad9 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -28,7 +28,7 @@
 (define-public syncthing
   (package
     (name "syncthing")
-    (version "0.14.45")
+    (version "0.14.46")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/syncthing/syncthing"
@@ -36,7 +36,7 @@
                                   "/syncthing-source-v" version ".tar.gz"))
               (sha256
                (base32
-                "0nv5g9ymykl4316l2g3mnac77y2rx9ps4j2kg3pymxlq6qms2dij"))
+                "0h5b2mp0li0qzrz3wggzavdfqfaz9b79hx6wds84ya2i9maw80cl"))
               (modules '((guix build utils)))
               ;; Delete bundled ("vendored") free software source code.
               (snippet '(begin
@@ -1679,23 +1679,23 @@ using sh's word-splitting rules.")
       (license expat))))
 
 (define-public go-github-com-zillode-notify
-  (let ((commit "a8abcfb1ce88ee8d79a300ed65d94b8fb616ddb3")
-        (revision "2"))
+  (let ((commit "53dd6873a851fc377c87d82f994b1fecdf25aadb")
+        (revision "3"))
     (package
       (name "go-github-com-zillode-notify")
       (version (git-version "0.0.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/zillode/notify")
+                       (url "https://github.com/calmh/notify")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "031pmbvm0xj4f4fak7im0ywmyn3hns538zlbdj4f23jj69zqdy7k"))))
+                  "0ar6mj6s91y7hc5gdp88lz3i7xi29cqkx9f090xj899ir21a8djn"))))
       (build-system go-build-system)
       (arguments
-       '(#:import-path "github.com/zillode/notify"))
+       '(#:import-path "github.com/Zillode/notify"))
       (propagated-inputs
        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
       (synopsis "File system event notification library")
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 1669f2c45c..27b49895e2 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -32,7 +32,7 @@
 (define-public newsboat
   (package
     (name "newsboat")
-    (version "2.11")
+    (version "2.11.1")
     (source
      (origin
        (method url-fetch)
@@ -40,7 +40,7 @@
                            "/newsboat-" version ".tar.xz"))
        (sha256
         (base32
-         "0yh1qdk15s9k4pffiw1155whfckpffq72dpyp9rck7yxgy5ya1hx"))))
+         "1krpxl854h5dwmpr81m1s84cwk8zivdzvw0s5s0i4dba736pvdma"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index e6c2436d06..78532ec268 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -293,16 +293,16 @@ input bits thoroughly but are not suitable for cryptography.")
 (define-public libconfig
   (package
     (name "libconfig")
-    (version "1.5")
+    (version "1.7.2")
+    (home-page "https://hyperrealm.github.io/libconfig/")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.hyperrealm.com/libconfig/"
-                                  "libconfig-" version ".tar.gz"))
+              (uri (string-append home-page "/dist/libconfig-"
+                                  version ".tar.gz"))
               (sha256
                (base32
-                "1xh3hzk63v4y8815lc5209m3s6ms2cpgw4h5hg462i4f1lwsl7g3"))))
+                "1ngs2qx3cx5cbwinc5mvadly0b5n7s86zsc68c404czzfff7lg3w"))))
     (build-system gnu-build-system)
-    (home-page "http://www.hyperrealm.com/libconfig/")
     (synopsis "C/C++ configuration file library")
     (description
      "Libconfig is a simple library for manipulating structured configuration
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9143af31e0..73e84b7f8c 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -449,14 +449,14 @@ required structures.")
 (define-public libressl
   (package
     (name "libressl")
-    (version "2.7.1")
+    (version "2.7.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://openbsd/LibreSSL/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0w3hdgcr4cq84cv7wkkg2clz9s6l2m2l92d6mfn70wxs6vi0fxck"))))
+                "1589f0kg7kj51j9hid542s4isb96s1azjaqsfprpy5s2qdwqfyli"))))
     (build-system gnu-build-system)
     (arguments
      ;; Do as if 'getentropy' was missing since older Linux kernels lack it
@@ -493,13 +493,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.22.2")
+    (version "0.23.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1d5d4w88aj1i8fyrs44dapmiqbmgz4bjgryn8k3mnggmd6ihxk8f"))))
+                "0l257dq1i2gka6ynldidpwaz1aa726643crqqckga1w5awsndh88"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -548,7 +548,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1vsb8qqghxrwxr3d2l0d5cgdk0pz7b3f76bx3zrrg0z7jf967qz6"))))
+                "0gh5fr61c3mj5vdkn68k17wcvri9rdj506cmmz6631i2l5flrzvc"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
@@ -768,7 +768,7 @@ then ported to the GNU / Linux environment.")
 (define-public mbedtls-apache
   (package
     (name "mbedtls-apache")
-    (version "2.7.0")
+    (version "2.7.2")
     (source
      (origin
        (method url-fetch)
@@ -778,16 +778,7 @@ then ported to the GNU / Linux environment.")
                            version "-apache.tgz"))
        (sha256
         (base32
-         "1vsmgxnw7dpvma51896n63yaf9sncmf885ax2jfcg89ssin6vdmf"))
-       ;; An RFC 5114 constant was accidentally renamed in version 2.7.0.
-       ;; See https://github.com/ARMmbed/mbedtls/pull/1362.
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           (substitute* "include/mbedtls/dhm.h"
-             (("#define MBEDTLS_DHM_RFC5114_MODP_P")
-              "#define MBEDTLS_DHM_RFC5114_MODP_2048_P"))
-           #t))))
+         "1mvkqlxxvl6yp1g5g9dk4l7h3wl6149p3pfwgwzgs7xybyxw4f7x"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm
index 8764cea9a6..7db6b5eec5 100644
--- a/gnu/packages/upnp.scm
+++ b/gnu/packages/upnp.scm
@@ -29,14 +29,14 @@
 (define-public miniupnpc
   (package
     (name "miniupnpc")
-    (version "2.0.20180222")
+    (version "2.0.20180406")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://miniupnp.tuxfamily.org/files/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "0xavcrifk8v8gwig3mj0kjkm7rvw1kbsxcs4jxrrzl39cil48yaq"))))
+        (base32 "15i9lyj72wr15b3kpcqsf97mr2hajkpwvf0lz9ps9r568yyjcwlc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 22c124049e..79ac7221fa 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -139,14 +139,14 @@ as well as the classic centralized workflow.")
    (name "git")
    ;; XXX When updating Git, check if the special 'git:src' input to cgit needs
    ;; to be updated as well.
-   (version "2.16.3")
+   (version "2.17.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0j1dwvg5llnj3g0fp8hdgpms4hp90qw9f6509vqw30dhwplrjpfn"))))
+              "1ismz7nsz8dgjmk782xr9s0mr2qh06f72pdcgbxfmnw1bvlya5p9"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -159,7 +159,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "15ckcia3bdbn1dpwlh3fifd8fzk38l1pdgxsf2yl8l8xd1z8jqaz"))))))
+            "09rpjj0m97h5lpzpwk47m6xsz9gb8wqf1s3dfqma3mwav2pb3njb"))))))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)
@@ -215,9 +215,6 @@ as well as the classic centralized workflow.")
               (("/bin/sh") (which "sh"))
               (("/usr/bin/perl") (which "perl"))
               (("/usr/bin/python") (which "python")))
-            (substitute* "perl/Makefile"
-              ;; Don't create timestamped 'perllocal.pod'.
-              (("\\$< PREFIX=") "$< NO_PERLLOCAL=1 PREFIX="))
             #t))
         (add-after 'configure 'add-PM.stamp
           (lambda _
@@ -226,42 +223,43 @@ as well as the classic centralized workflow.")
             #t))
         (add-before 'check 'patch-tests
           (lambda _
-            ;; These files contain some funny bytes that Guile is unable
-            ;; to decode for shebang patching. Just delete them.
-            (for-each delete-file '("t/t4201-shortlog.sh"
-                                    "t/t7813-grep-icase-iso.sh"))
-            ;; Many tests contain inline shell scripts (hooks etc).
-            (substitute* (find-files "t" "\\.sh$")
-              (("#!/bin/sh") (string-append "#!" (which "sh"))))
-            ;; Un-do shebang patching here to prevent checksum mismatch.
-            (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
-              (("^#!.*/bin/perl") "#!/usr/bin/perl"))
-            (substitute* "t/t5003-archive-zip.sh"
-              (("cp /bin/sh") (string-append "cp " (which "sh"))))
-            (substitute* "t/t6030-bisect-porcelain.sh"
-              (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
-            ;; FIXME: This test runs `git commit` with a bogus EDITOR
-            ;; and empty commit message, but does not fail the way it's
-            ;; expected to. The test passes when invoked interactively.
-            (substitute* "t/t7508-status.sh"
-              (("\tcommit_template_commented") "\ttrue"))
-            ;; More checksum mismatches due to odd shebangs.
-            (substitute* "t/t9100-git-svn-basic.sh"
-              (("\"#!/gnu.*/bin/sh") "\"#!/bin/sh"))
-            (substitute* "t/t9300-fast-import.sh"
-              (("\t#!/gnu.*/bin/sh") "\t#!/bin/sh")
-              (("'#!/gnu.*/bin/sh") "'#!/bin/sh"))
-            ;; FIXME: Some hooks fail with "basename: command not found".
-            ;; See 't/trash directory.t9164.../svn-hook.log'.
-            (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
-
-            ;; XXX: These tests fail intermittently for unknown reasons:
-            ;; <https://bugs.gnu.org/29546>.
-            (for-each delete-file
-                      '("t/t9128-git-svn-cmd-branch.sh"
-                        "t/t9167-git-svn-cmd-branch-subproject.sh"
-                        "t/t9141-git-svn-multiple-branches.sh"))
-            #t))
+            (let ((store-directory (%store-directory)))
+              ;; These files contain some funny bytes that Guile is unable
+              ;; to decode for shebang patching. Just delete them.
+              (for-each delete-file '("t/t4201-shortlog.sh"
+                                      "t/t7813-grep-icase-iso.sh"))
+              ;; Many tests contain inline shell scripts (hooks etc).
+              (substitute* (find-files "t" "\\.sh$")
+                (("#!/bin/sh") (string-append "#!" (which "sh"))))
+              ;; Un-do shebang patching here to prevent checksum mismatch.
+              (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
+                (("^#!.*/bin/perl") "#!/usr/bin/perl"))
+              (substitute* "t/t5003-archive-zip.sh"
+                (("cp /bin/sh") (string-append "cp " (which "sh"))))
+              (substitute* "t/t6030-bisect-porcelain.sh"
+                (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
+              ;; FIXME: This test runs `git commit` with a bogus EDITOR
+              ;; and empty commit message, but does not fail the way it's
+              ;; expected to. The test passes when invoked interactively.
+              (substitute* "t/t7508-status.sh"
+                (("\tcommit_template_commented") "\ttrue"))
+              ;; More checksum mismatches due to odd shebangs.
+              (substitute* "t/t9100-git-svn-basic.sh"
+                (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
+              (substitute* "t/t9300-fast-import.sh"
+                (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
+                (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
+              ;; FIXME: Some hooks fail with "basename: command not found".
+              ;; See 't/trash directory.t9164.../svn-hook.log'.
+              (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
+
+              ;; XXX: These tests fail intermittently for unknown reasons:
+              ;; <https://bugs.gnu.org/29546>.
+              (for-each delete-file
+                        '("t/t9128-git-svn-cmd-branch.sh"
+                          "t/t9167-git-svn-cmd-branch-subproject.sh"
+                          "t/t9141-git-svn-multiple-branches.sh"))
+              #t)))
         (add-after 'install 'install-shell-completion
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out         (assoc-ref outputs "out"))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 6da712cc71..cd88ebe0ce 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -24,6 +24,7 @@
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -56,6 +57,7 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system waf)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages audio)
@@ -2825,3 +2827,39 @@ changed.  Or in other words, it can detect motion.")
 
     ;; Some files say "version 2" and others "version 2 or later".
     (license license:gpl2)))
+
+(define-public subdl
+  (let ((commit "4cf5789b11f0ff3f863b704b336190bf968cd471")
+        (revision "1"))
+    (package
+      (name "subdl")
+      (version (git-version "1.0.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alexanderwink/subdl.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8"))))
+      (build-system trivial-build-system)
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder (begin
+                     (use-modules (guix build utils))
+                     (let* ((out (assoc-ref %outputs "out"))
+                            (bin (string-append out "/bin"))
+                            (source (assoc-ref %build-inputs "source"))
+                            (python (assoc-ref %build-inputs "python")))
+                       (install-file (string-append source "/subdl") bin)
+                       (patch-shebang (string-append bin "/subdl")
+                                      (list (string-append python "/bin")))))))
+      (inputs `(("python" ,python)))
+      (synopsis "Command-line tool for downloading subtitles from opensubtitles.org")
+      (description "Subdl is a command-line tool for downloading subtitles from
+opensubtitles.org.  By default, it will search for English subtitles, display
+the results, download the highest-rated result in the requested language and
+save it to the appropriate filename.")
+      (license license:gpl3+)
+      (home-page "https://github.com/alexanderwink/subdl"))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index de01e01638..44a4ed2920 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -347,14 +347,14 @@ manage system or application containers.")
 (define-public libvirt
   (package
     (name "libvirt")
-    (version "4.0.0")
+    (version "4.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://libvirt.org/sources/libvirt-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1j6zzajh4j3zzsaqn5f5mrchm0590xcf6rzkfajvqw3bd4dcms79"))))
+                "0nq1iz5iic466qahp0i8dlvyd6li0b0pdrvvrz9286l12x2fm61s"))))
     (build-system gnu-build-system)
     (arguments
      `(;; FAIL: virshtest
@@ -420,7 +420,7 @@ manage system or application containers.")
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("polkit" ,polkit)
-       ("python" ,python-2)))
+       ("python" ,python)))
     (home-page "https://libvirt.org")
     (synopsis "Simple API for virtualization")
     (description "Libvirt is a C toolkit to interact with the virtualization
@@ -480,13 +480,13 @@ three libraries:
 (define-public python-libvirt
   (package
     (name "python-libvirt")
-    (version "3.7.0")
+    (version "4.1.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "libvirt-python" version))
               (sha256
                (base32
-                "0vy0ai8z88yhzqfk1n08z1gda5flrqxcw9lg1012b3zg125qljhy"))))
+                "1ixqhxjkczl8vk9wjx4cknw4374cw5nnsacbd2s755kpd0ys7hny"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 442335cb94..2fc930aa9e 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -301,14 +301,14 @@ private network between hosts on the internet.")
 (define-public sshuttle
   (package
     (name "sshuttle")
-    (version "0.78.3")
+    (version "0.78.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri name version))
        (sha256
         (base32
-         "12xyq5h77b57cnkljdk8qyjxzys512b73019s20x6ck5brj1m8wa"))))
+         "0pqk43kd7crqhg6qgnl8kapncwgw1xgaf02zarzypcw64kvdih9h"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-setuptools-scm" ,python-setuptools-scm)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 4413258e70..9c2426c8ee 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -186,14 +186,14 @@ Interface} specification.")
     (name "nginx")
     ;; Consider updating the nginx-documentation package if the nginx package is
     ;; updated.
-    (version "1.13.10")
+    (version "1.13.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "11a8m4lhy6h8mmrsakn73pd5gcyvhxpz1xvlr103rglh9l884q9k"))))
+                "01bgld6pv9sms9bsmx863yqw2hnivxhn91xs6imqklj48sbrqy9m"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -317,13 +317,13 @@ documentation.")
       (license l:bsd-2))))
 
 (define-public nginx-documentation
-  ;; This documentation should be relevant for nginx@1.13.8.
-  (let ((revision 2100)
-        (changeset "cfb7bd672d77"))
+  ;; This documentation should be relevant for nginx@1.13.11.
+  (let ((revision 2131)
+        (changeset "dbaf3950f8e9"))
     (package
       (name "nginx-documentation")
       (version
-       (simple-format #f "2018-01-22-~A-~A" revision changeset))
+       (simple-format #f "2018-04-04-~A-~A" revision changeset))
       (source
        (origin (method hg-fetch)
                (uri (hg-reference
@@ -332,7 +332,7 @@ documentation.")
                (file-name (string-append name "-" version))
                (sha256
                 (base32
-                 "096fcsc0wnfr847m7dwp17rivd3alxq7v9hq9s5lkfbhylmh18vm"))))
+                 "0acdjsdaqixzh9g9s6db552v4pan4nqrllyqapay9ns9yzh1hrp7"))))
       (build-system gnu-build-system)
       (arguments
        '(#:tests? #f                    ; no test suite
@@ -3948,13 +3948,13 @@ LaTeX.")
 (define-public r-curl
   (package
     (name "r-curl")
-    (version "3.1")
+    (version "3.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "curl" version))
               (sha256
                (base32
-                "15fbjya2xrf2k9hhvg3frisrram4yk5wlfz67zj1z8ahpsb2a3r7"))))
+                "15hmy71310hnf9yqvz0icx4cq939gv6iqaifzlfdh2ia8akawdhn"))))
     (build-system r-build-system)
     (arguments
      `(#:phases
@@ -5121,7 +5121,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
 (define-public http-parser
   (package
     (name "http-parser")
-    (version "2.8.0")
+    (version "2.8.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/nodejs/http-parser/"
@@ -5129,7 +5129,7 @@ into your tests.  It automatically starts up a HTTP server in a separate thread
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "17a7k3nxv2p1sp2x5d89wr51vk770753vz6qnlp2gz7nkgwwcxvj"))))
+                "15ids8k2f0xhnnxh4m85w2f78pg5ndiwrpl24kyssznnp1l5yqai"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -5524,7 +5524,7 @@ named elements: the @code{status}, the @code{headers}, and the @code{body}.")
 (define-public rss-bridge
   (package
     (name "rss-bridge")
-    (version "2017-08-03")
+    (version "2018-03-11")
     (source
      (origin
        (method url-fetch)
@@ -5533,7 +5533,7 @@ named elements: the @code{status}, the @code{headers}, and the @code{body}.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "05s16y552hbyj91s7bnlkx1bi64s6aw0fjy29az8via3i3b21yhl"))))
+         "1ix15ck45yb659k63mhwxwia6qnm9nn8jw0bga85abrvk1rchjdn"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("gzip" ,gzip)
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index a4bcde3e46..81bc45ca75 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -221,7 +221,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
    (name "wine-staging-patchset-data")
-   (version "3.4")
+   (version "3.5")
    (source
     (origin
      (method url-fetch)
@@ -230,7 +230,7 @@ integrate Windows applications into your desktop.")
      (file-name (string-append name "-" version ".zip"))
      (sha256
       (base32
-       "00yzh9bqs2rjgvk78xv3gfkbv4f2bkch9vb1ii4xh883f7wvkz93"))))
+       "1d95gzzfx87vvj85mrzv2lgg6w0m917dccja02g6vids28kf9g30"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -277,7 +277,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "14wf7536rkmhav9ibbvhqqkfqmbk1dckhd2679i5scizr5x290x4"))))
+                "0hr1syfhnpvcm84gmms1i26k68hakcgw4m6dvckmbbvw7ca0c8pl"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("gtk+" ,gtk+)
               ("libva" ,libva)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 179e46fac4..f8899a4bdd 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -102,7 +102,7 @@ nested include statements).")
 (define-public bspwm
   (package
     (name "bspwm")
-    (version "0.9.3")
+    (version "0.9.4")
     (source
      (origin
        (file-name (string-append name "-" version ".tar.gz"))
@@ -112,7 +112,7 @@ nested include statements).")
              version ".tar.gz"))
        (sha256
         (base32
-         "17dwj7w16cdj7g4s2y2f96lgj5msq1s4543dnfa3rijlazzy6mmk"))))
+         "0yjr0vzbj3ar8qfr6gvpvjd82ay8iy1sg2fkw2swghlqiy6ix4kw"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxcb" ,libxcb)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index eb7f48228d..7a9b64baf6 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
+;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1241,7 +1242,7 @@ program for X11.  It was designed to be fast, tiny and scriptable in any languag
 (define-public xcb-util-xrm
   (package
     (name "xcb-util-xrm")
-    (version "1.2")
+    (version "1.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1249,7 +1250,7 @@ program for X11.  It was designed to be fast, tiny and scriptable in any languag
                     "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
               (sha256
                (base32
-                "0vbqhag51i0njc8d5fc8c6aa12496cwrc3s6s7sa5kfc17cwhppp"))
+                "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
               (modules '((guix build utils)))
               (snippet
                ;; Drop bundled m4.
@@ -1405,3 +1406,32 @@ or playing a PCM encoded WAVE file.")
 System, and launches a program of your choice if there is no activity after
 a user-configurable period of time.")
     (license license:gpl2)))
+
+(define-public screen-message
+  (package
+    (name "screen-message")
+    (version "0.25")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.joachim-breitner.de/archive/screen-message"
+                    "/screen-message-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
+    (build-system gnu-build-system)
+    (inputs `(("gtk3" ,gtk+)
+              ("gdk" ,gdk-pixbuf)
+              ("pango" ,pango)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (arguments
+     ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
+     ;; this fixes it:
+     `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
+    (synopsis "Print messages on your screen")
+    (description "@code{screen-message} is a tool for displaying text on
+your screen.  It will make the text as large as possible and display it
+with black color on a white background (colors are configurable on the
+commandline).")
+    (home-page "https://www.joachim-breitner.de/projects#screen-message")
+    (license license:gpl2+)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index d6648508cc..b15a200d88 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5900,7 +5900,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.2.5")
+    (version "2.2.6")
     (source
      (origin
        (method url-fetch)
@@ -5908,7 +5908,7 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1q2l00nc3bgwlhjzkbk4a8x2l8z9w1799yn31icsx5hrgh98a1js"))))
+         "1zyynghhzjbgnmzcibm17wpj9f7jy31d7dr373li8cwg2yl2swyz"))))
     (build-system python-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("flac" ,flac)
diff --git a/gnu/services.scm b/gnu/services.scm
index 2fcacb9eb4..81af4df849 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -181,7 +181,8 @@
 (define (all-service-modules)
   "Return the default set of service modules."
   (cons (resolve-interface '(gnu services))
-        (all-modules (%service-type-path))))
+        (all-modules (%service-type-path)
+                     #:warn warn-about-load-error)))
 
 (define* (fold-service-types proc seed
                              #:optional
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index a2a200f032..7548145c98 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -26,6 +26,7 @@
   #:use-module (gnu services web)
   #:use-module (gnu system shadow)
   #:use-module (gnu packages tls)
+  #:use-module (guix i18n)
   #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (srfi srfi-1)
@@ -113,14 +114,19 @@
           #$(certbot-command config))))
 
 (define (certbot-activation config)
-  (match config
-    (($ <certbot-configuration> package webroot certificates email
-                                rsa-key-size default-location)
-     (with-imported-modules '((guix build utils))
-       #~(begin
-           (use-modules (guix build utils))
-           (mkdir-p #$webroot)
-           (zero? (system* #$(certbot-command config))))))))
+  (let* ((certbot-directory "/var/lib/certbot")
+         (script (in-vicinity certbot-directory "renew-certificates"))
+         (message (format #f (G_ "~a may need to be run~%") script)))
+    (match config
+      (($ <certbot-configuration> package webroot certificates email
+                                  rsa-key-size default-location)
+       (with-imported-modules '((guix build utils))
+         #~(begin
+             (use-modules (guix build utils))
+             (mkdir-p #$webroot)
+             (mkdir-p #$certbot-directory)
+             (copy-file #$(certbot-command config) #$script)
+             (display #$message)))))))
 
 (define certbot-nginx-server-configurations
   (match-lambda
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 8972529179..517d5d3efe 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -94,6 +94,8 @@
             xfce-desktop-service
             xfce-desktop-service-type
 
+            x11-socket-directory-service
+
             %desktop-services))
 
 ;;; Commentary:
@@ -882,6 +884,24 @@ with the administrator's password."
 
 
 ;;;
+;;; X11 socket directory service
+;;;
+
+(define x11-socket-directory-service
+  ;; Return a service that creates /tmp/.X11-unix.  When using X11, libxcb
+  ;; takes care of creating that directory.  However, when using XWayland, we
+  ;; need to create beforehand.  Thus, create it unconditionally here.
+  (simple-service 'x11-socket-directory
+                  activation-service-type
+                  (with-imported-modules '((guix build utils))
+                    #~(begin
+                        (use-modules (guix build utils))
+                        (let ((directory "/tmp/.X11-unix"))
+                          (mkdir-p directory)
+                          (chmod directory #o777))))))
+
+
+;;;
 ;;; The default set of desktop services.
 ;;;
 
@@ -912,6 +932,8 @@ with the administrator's password."
 
          (ntp-service)
 
+         x11-socket-directory-service
+
          %base-services))
 
 ;;; desktop.scm ends here
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 119f7e4d0b..ef5b8dab92 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -195,6 +195,9 @@ set auto-load safe-path /gnu/store/*/lib\n")))
     `((".bash_profile" ,profile)
       (".bashrc" ,bashrc)
       (".zlogin" ,zlogin)
+      (".nanorc" ,(plain-file "nanorc" "\
+# Include all the syntax highlighting modules.
+include /run/current-system/profile/share/nano/*.nanorc\n"))
       (".Xdefaults" ,xdefaults)
       (".guile" ,(plain-file "dot-guile"
                              "(cond ((false-if-exception (resolve-interface '(ice-9 readline)))
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index c637fbb162..4a1eb0cfa0 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -43,17 +43,11 @@
 to NAME and VERSION."
   (string-append crate-url name "/" version "/download"))
 
-(define (default-cargo)
-  "Return the default Cargo package."
+(define (default-rust)
+  "Return the default Rust package."
   ;; Lazily resolve the binding to avoid a circular dependency.
   (let ((rust (resolve-interface '(gnu packages rust))))
-    (module-ref rust 'cargo)))
-
-(define (default-rustc)
-  "Return the default Rustc package."
-  ;; Lazily resolve the binding to avoid a circular dependency.
-  (let ((rust (resolve-interface '(gnu packages rust))))
-    (module-ref rust 'rustc)))
+    (module-ref rust 'rust)))
 
 (define %cargo-build-system-modules
   ;; Build-side modules imported by default.
@@ -115,14 +109,13 @@ to NAME and VERSION."
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
-                (cargo (default-cargo))
-                (rustc (default-rustc))
+                (rust (default-rust))
                 #:allow-other-keys
                 #:rest arguments)
   "Return a bag for NAME."
 
   (define private-keywords
-    '(#:source #:target #:cargo #:rustc #:inputs #:native-inputs #:outputs))
+    '(#:source #:target #:rust #:inputs #:native-inputs #:outputs))
 
   (and (not target) ;; TODO: support cross-compilation
        (bag
@@ -136,8 +129,8 @@ to NAME and VERSION."
 
                         ;; Keep the standard inputs of 'gnu-build-system'
                         ,@(standard-packages)))
-         (build-inputs `(("cargo" ,cargo)
-                         ("rustc" ,rustc)
+         (build-inputs `(("cargo" ,rust "cargo")
+                         ("rustc" ,rust)
                          ,@native-inputs))
          (outputs outputs)
          (build cargo-build)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index d46b750035..1179f1234b 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
 ;;;
@@ -25,7 +25,9 @@
   #:use-module (srfi srfi-26)
   #:use-module (rnrs bytevectors)
   #:use-module (rnrs io ports)
-  #:export (union-build))
+  #:export (union-build
+
+            warn-about-collision))
 
 ;;; Commentary:
 ;;;
@@ -76,14 +78,29 @@ identical, #f otherwise."
                                    (or (eof-object? n1)
                                        (loop))))))))))))))
 
+(define (warn-about-collision files)
+  "Handle the collision among FILES by emitting a warning and choosing the
+first one of THEM."
+  (format (current-error-port)
+          "~%warning: collision encountered:~%~{  ~a~%~}"
+          files)
+  (let ((file (first files)))
+    (format (current-error-port) "warning: choosing ~a~%" file)
+    file))
+
 (define* (union-build output inputs
                       #:key (log-port (current-error-port))
                       (create-all-directories? #f)
-                      (symlink symlink))
+                      (symlink symlink)
+                      (resolve-collision warn-about-collision))
   "Build in the OUTPUT directory a symlink tree that is the union of all the
 INPUTS, using SYMLINK to create symlinks.  As a special case, if
 CREATE-ALL-DIRECTORIES?, creates the subdirectories in the output directory to
-make sure the caller can modify them later."
+make sure the caller can modify them later.
+
+When two or more regular files collide, call RESOLVE-COLLISION with the list
+of colliding files and use the one that it returns; or, if RESOLVE-COLLISION
+returns #f, skip the faulty file altogether."
 
   (define (symlink* input output)
     (format log-port "`~a' ~~> `~a'~%" input output)
@@ -92,17 +109,10 @@ make sure the caller can modify them later."
   (define (resolve-collisions output dirs files)
     (cond ((null? dirs)
            ;; The inputs are all files.
-           (format (current-error-port)
-                   "~%warning: collision encountered:~%~{~a~%~}"
-                   files)
-
-           (let ((file (first files)))
-             ;; TODO: Implement smarter strategies.
-             (format (current-error-port)
-                     "warning: arbitrarily choosing ~a~%"
-                     file)
-
-             (symlink* file output)))
+           (match (resolve-collision files)
+             (#f #f)
+             ((? string? file)
+              (symlink* file output))))
 
           (else
            ;; The inputs are a mixture of files and directories
diff --git a/guix/discovery.scm b/guix/discovery.scm
index 7b57579023..2b627d108e 100644
--- a/guix/discovery.scm
+++ b/guix/discovery.scm
@@ -17,7 +17,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (guix discovery)
-  #:use-module (guix ui)
+  #:use-module (guix i18n)
   #:use-module (guix modules)
   #:use-module (guix combinators)
   #:use-module (guix build syscalls)
@@ -25,7 +25,8 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 ftw)
-  #:export (scheme-modules
+  #:export (scheme-files
+            scheme-modules
             fold-modules
             all-modules
             fold-module-public-variables))
@@ -85,13 +86,18 @@ DIRECTORY is not accessible."
                 (lambda args
                   (let ((errno (system-error-errno args)))
                     (unless (= errno ENOENT)
-                      (warning (G_ "cannot access `~a': ~a~%")
-                               directory (strerror errno)))
+                      (format (current-error-port) ;XXX
+                              (G_ "cannot access `~a': ~a~%")
+                              directory (strerror errno)))
                     '())))))
 
-(define* (scheme-modules directory #:optional sub-directory)
+(define* (scheme-modules directory #:optional sub-directory
+                         #:key (warn (const #f)))
   "Return the list of Scheme modules available under DIRECTORY.
-Optionally, narrow the search to SUB-DIRECTORY."
+Optionally, narrow the search to SUB-DIRECTORY.
+
+WARN is called when a module could not be loaded.  It is passed the module
+name and the exception key and arguments."
   (define prefix-len
     (string-length directory))
 
@@ -103,31 +109,32 @@ Optionally, narrow the search to SUB-DIRECTORY."
                       (resolve-interface module))
                     (lambda args
                       ;; Report the error, but keep going.
-                      (warn-about-load-error module args)
+                      (warn module args)
                       #f))))
               (scheme-files (if sub-directory
                                 (string-append directory "/" sub-directory)
                                 directory))))
 
-(define (fold-modules proc init path)
+(define* (fold-modules proc init path #:key (warn (const #f)))
   "Fold over all the Scheme modules present in PATH, a list of directories.
 Call (PROC MODULE RESULT) for each module that is found."
   (fold (lambda (spec result)
           (match spec
             ((? string? directory)
-             (fold proc result (scheme-modules directory)))
+             (fold proc result (scheme-modules directory #:warn warn)))
             ((directory . sub-directory)
              (fold proc result
-                   (scheme-modules directory sub-directory)))))
+                   (scheme-modules directory sub-directory
+                                   #:warn warn)))))
         '()
         path))
 
-(define (all-modules path)
+(define* (all-modules path #:key (warn (const #f)))
   "Return the list of package modules found in PATH, a list of directories to
 search.  Entries in PATH can be directory names (strings) or (DIRECTORY
 . SUB-DIRECTORY) pairs, in which case modules are searched for beneath
 SUB-DIRECTORY."
-  (fold-modules cons '() path))
+  (fold-modules cons '() path #:warn warn))
 
 (define (fold-module-public-variables proc init modules)
   "Call (PROC OBJECT RESULT) for each variable exported by one of MODULES,
diff --git a/guix/gexp.scm b/guix/gexp.scm
index 2deec253ff..bedb387edb 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -1258,7 +1258,8 @@ This yields an 'etc' directory containing these two files."
                           files))))))
 
 (define* (directory-union name things
-                          #:key (copy? #f) (quiet? #f))
+                          #:key (copy? #f) (quiet? #f)
+                          (resolve-collision 'warn-about-collision))
   "Return a directory that is the union of THINGS, where THINGS is a list of
 file-like objects denoting directories.  For example:
 
@@ -1266,6 +1267,10 @@ file-like objects denoting directories.  For example:
 
 yields a directory that is the union of the 'guile' and 'emacs' packages.
 
+Call RESOLVE-COLLISION when several files collide, passing it the list of
+colliding files.  RESOLVE-COLLISION must return the chosen file or #f, in
+which case the colliding entry is skipped altogether.
+
 When HARD-LINKS? is true, create hard links instead of symlinks.  When QUIET?
 is true, the derivation will not print anything."
   (define symlink
@@ -1289,12 +1294,16 @@ is true, the derivation will not print anything."
      (computed-file name
                     (with-imported-modules '((guix build union))
                       (gexp (begin
-                              (use-modules (guix build union))
+                              (use-modules (guix build union)
+                                           (srfi srfi-1)) ;for 'first' and 'last'
+
                               (union-build (ungexp output)
                                            '(ungexp things)
 
                                            #:log-port (ungexp log-port)
-                                           #:symlink (ungexp symlink)))))))))
+                                           #:symlink (ungexp symlink)
+                                           #:resolve-collision
+                                           (ungexp resolve-collision)))))))))
 
 
 ;;;
diff --git a/guix/git.scm b/guix/git.scm
index 103749d0e2..9e89cc0062 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -28,9 +28,11 @@
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:export (%repository-cache-directory
+            update-cached-checkout
             latest-repository-commit))
 
 (define %repository-cache-directory
@@ -68,11 +70,6 @@ make sure no empty directory is left behind."
     (lambda _
       (false-if-exception (rmdir directory)))))
 
-(define (repository->head-sha1 repo)
-  "Return the sha1 of the HEAD commit in REPOSITORY as a string."
-  (let ((oid (reference-target (repository-head repo))))
-    (oid->string (commit-id (commit-lookup repo oid)))))
-
 (define (url+commit->name url sha1)
   "Return the string \"<REPO-NAME>-<SHA1:7>\" where REPO-NAME is the name of
 the git repository, extracted from URL and SHA1:7 the seven first digits
@@ -82,21 +79,9 @@ of SHA1 string."
     (last (string-split url #\/)) ".git" "")
    "-" (string-take sha1 7)))
 
-(define* (copy-to-store store cache-directory #:key url repository)
-  "Copy CACHE-DIRECTORY recursively to STORE.  URL and REPOSITORY are used to
-create the store directory name."
-  (define (dot-git? file stat)
-    (and (string=? (basename file) ".git")
-         (eq? 'directory (stat:type stat))))
-
-  (let* ((commit (repository->head-sha1 repository))
-         (name   (url+commit->name url commit)))
-    (values (add-to-store store name #t "sha256" cache-directory
-                          #:select? (negate dot-git?))
-            commit)))
-
 (define (switch-to-ref repository ref)
-  "Switch to REPOSITORY's branch, commit or tag specified by REF."
+  "Switch to REPOSITORY's branch, commit or tag specified by REF.  Return the
+OID (roughly the commit hash) corresponding to REF."
   (define obj
     (match ref
       (('branch . branch)
@@ -122,7 +107,38 @@ create the store directory name."
                                        (string-append "refs/tags/" tag))))
          (object-lookup repository oid)))))
 
-  (reset repository obj RESET_HARD))
+  (reset repository obj RESET_HARD)
+  (object-id obj))
+
+(define* (update-cached-checkout url
+                                 #:key
+                                 (ref '(branch . "origin/master"))
+                                 (cache-directory
+                                  (%repository-cache-directory)))
+  "Update the cached checkout of URL to REF in CACHE-DIRECTORY.  Return two
+values: the cache directory name, and the SHA1 commit (a string) corresponding
+to REF.
+
+REF is pair whose key is [branch | commit | tag] and value the associated
+data, respectively [<branch name> | <sha1> | <tag name>]."
+  (with-libgit2
+   (let* ((cache-dir     (url-cache-directory url cache-directory))
+          (cache-exists? (openable-repository? cache-dir))
+          (repository    (if cache-exists?
+                             (repository-open cache-dir)
+                             (clone* url cache-dir))))
+     ;; Only fetch remote if it has not been cloned just before.
+     (when cache-exists?
+       (remote-fetch (remote-lookup repository "origin")))
+     (let ((oid (switch-to-ref repository ref)))
+
+       ;; Reclaim file descriptors and memory mappings associated with
+       ;; REPOSITORY as soon as possible.
+       (when (module-defined? (resolve-interface '(git repository))
+                              'repository-close!)
+         (repository-close! repository))
+
+       (values cache-dir (oid->string oid))))))
 
 (define* (latest-repository-commit store url
                                    #:key
@@ -137,23 +153,16 @@ data, respectively [<branch name> | <sha1> | <tag name>].
 
 Git repositories are kept in the cache directory specified by
 %repository-cache-directory parameter."
-  (with-libgit2
-   (let* ((cache-dir     (url-cache-directory url cache-directory))
-          (cache-exists? (openable-repository? cache-dir))
-          (repository    (if cache-exists?
-                             (repository-open cache-dir)
-                             (clone* url cache-dir))))
-     ;; Only fetch remote if it has not been cloned just before.
-     (when cache-exists?
-       (remote-fetch (remote-lookup repository "origin")))
-     (switch-to-ref repository ref)
-
-     ;; Reclaim file descriptors and memory mappings associated with
-     ;; REPOSITORY as soon as possible.
-     (when (module-defined? (resolve-interface '(git repository))
-                            'repository-close!)
-       (repository-close! repository))
+  (define (dot-git? file stat)
+    (and (string=? (basename file) ".git")
+         (eq? 'directory (stat:type stat))))
 
-     (copy-to-store store cache-dir
-                    #:url url
-                    #:repository repository))))
+  (let*-values (((checkout commit)
+                 (update-cached-checkout url
+                                         #:ref ref
+                                         #:cache-directory cache-directory))
+                ((name)
+                 (url+commit->name url commit)))
+    (values (add-to-store store name #t "sha256" checkout
+                          #:select? (negate dot-git?))
+            commit)))
diff --git a/guix/modules.scm b/guix/modules.scm
index bf656bb241..65928f67f2 100644
--- a/guix/modules.scm
+++ b/guix/modules.scm
@@ -25,6 +25,7 @@
   #:use-module (ice-9 match)
   #:export (missing-dependency-error?
             missing-dependency-module
+            missing-dependency-search-path
 
             file-name->module-name
             module-name->file-name
@@ -47,7 +48,8 @@
 ;; The error corresponding to a missing module.
 (define-condition-type &missing-dependency-error &error
   missing-dependency-error?
-  (module  missing-dependency-module))
+  (module      missing-dependency-module)
+  (search-path missing-dependency-search-path))
 
 (define (colon-symbol? obj)
   "Return true if OBJ is a symbol that starts with a colon."
@@ -132,7 +134,8 @@ depends on."
          (module-file-dependencies file))
         (#f
          (raise (condition (&missing-dependency-error
-                            (module module))))))))
+                            (module module)
+                            (search-path load-path))))))))
 
 (define* (module-closure modules
                          #:key
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d8b80efe8e..4f519e6f33 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -194,15 +194,18 @@ denote ranges as interpreted by 'matching-generations'."
 
 (define* (build-and-use-profile store profile manifest
                                 #:key
+                                allow-collisions?
                                 bootstrap? use-substitutes?
                                 dry-run?)
   "Build a new generation of PROFILE, a file name, using the packages
-specified in MANIFEST, a manifest object."
+specified in MANIFEST, a manifest object.  When ALLOW-COLLISIONS? is true,
+do not treat collisions in MANIFEST as an error."
   (when (equal? profile %current-profile)
     (ensure-default-profile))
 
   (let* ((prof-drv (run-with-store store
                      (profile-derivation manifest
+                                         #:allow-collisions? allow-collisions?
                                          #:hooks (if bootstrap?
                                                      '()
                                                      %default-profile-hooks)
@@ -408,6 +411,8 @@ Install, remove, or upgrade packages in a single transaction.\n"))
   -p, --profile=PROFILE  use PROFILE instead of the user's default profile"))
   (newline)
   (display (G_ "
+      --allow-collisions do not treat collisions in the profile as an error"))
+  (display (G_ "
       --bootstrap        use the bootstrap Guile to build the profile"))
   (display (G_ "
       --verbose          produce verbose output"))
@@ -544,6 +549,10 @@ kind of search path~%")
                  (lambda (opt name arg result arg-handler)
                    (values (alist-cons 'verbose? #t result)
                            #f)))
+         (option '("allow-collisions") #f #f
+                 (lambda (opt name arg result arg-handler)
+                   (values (alist-cons 'allow-collisions? #t result)
+                           #f)))
          (option '(#\s "search") #t #f
                  (lambda (opt name arg result arg-handler)
                    (values (cons `(query search ,(or arg ""))
@@ -831,13 +840,15 @@ processed, #f otherwise."
   (let* ((user-module  (make-user-module '((guix profiles) (gnu))))
          (manifest     (load* file user-module))
          (bootstrap?   (assoc-ref opts 'bootstrap?))
-         (substitutes? (assoc-ref opts 'substitutes?)))
+         (substitutes? (assoc-ref opts 'substitutes?))
+         (allow-collisions? (assoc-ref opts 'allow-collisions?)))
     (if dry-run?
         (format #t (G_ "would install new manifest from '~a' with ~d entries~%")
                 file (length (manifest-entries manifest)))
         (format #t (G_ "installing new manifest from '~a' with ~d entries~%")
                 file (length (manifest-entries manifest))))
     (build-and-use-profile store profile manifest
+                           #:allow-collisions? allow-collisions?
                            #:bootstrap? bootstrap?
                            #:use-substitutes? substitutes?
                            #:dry-run? dry-run?)))
@@ -856,6 +867,7 @@ processed, #f otherwise."
   (define dry-run? (assoc-ref opts 'dry-run?))
   (define bootstrap? (assoc-ref opts 'bootstrap?))
   (define substitutes? (assoc-ref opts 'substitutes?))
+  (define allow-collisions? (assoc-ref opts 'allow-collisions?))
   (define profile  (or (assoc-ref opts 'profile) %current-profile))
   (define transform (options->transformation opts))
 
@@ -894,6 +906,7 @@ processed, #f otherwise."
       (show-manifest-transaction store manifest step3
                                  #:dry-run? dry-run?)
       (build-and-use-profile store profile new
+                             #:allow-collisions? allow-collisions?
                              #:bootstrap? bootstrap?
                              #:use-substitutes? substitutes?
                              #:dry-run? dry-run?))))
diff --git a/guix/self.scm b/guix/self.scm
new file mode 100644
index 0000000000..c9e4a4250e
--- /dev/null
+++ b/guix/self.scm
@@ -0,0 +1,599 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix self)
+  #:use-module (guix config)
+  #:use-module (guix i18n)
+  #:use-module (guix modules)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix discovery)
+  #:use-module (guix packages)
+  #:use-module (guix sets)
+  #:use-module (guix utils)
+  #:use-module (guix modules)
+  #:use-module (guix build utils)
+  #:use-module ((guix build compile) #:select (%lightweight-optimizations))
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-9)
+  #:use-module (ice-9 match)
+  #:export (make-config.scm
+            compiled-guix
+            guix-derivation
+            reload-guix))
+
+
+;;;
+;;; Dependency handling.
+;;;
+
+(define* (false-if-wrong-guile package
+                               #:optional (guile-version (effective-version)))
+  "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g.,
+2.0 instead of 2.2), otherwise return PACKAGE."
+  (let ((guile (any (match-lambda
+                      ((label (? package? dep) _ ...)
+                       (and (string=? (package-name dep) "guile")
+                            dep)))
+                    (package-direct-inputs package))))
+    (and (or (not guile)
+             (string-prefix? guile-version
+                             (package-version guile)))
+         package)))
+
+(define (package-for-guile guile-version . names)
+  "Return the package with one of the given NAMES that depends on
+GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
+  (let loop ((names names))
+    (match names
+      (()
+       #f)
+      ((name rest ...)
+       (match (specification->package name)
+         (#f
+          (loop rest))
+         ((? package? package)
+          (or (false-if-wrong-guile package)
+              (loop rest))))))))
+
+(define specification->package
+  ;; Use our own variant of that procedure because that of (gnu packages)
+  ;; would traverse all the .scm files, which is wasteful.
+  (let ((ref (lambda (module variable)
+               (module-ref (resolve-interface module) variable))))
+    (match-lambda
+      ("guile"      (ref '(gnu packages commencement) 'guile-final))
+      ("guile-json" (ref '(gnu packages guile) 'guile-json))
+      ("guile-ssh"  (ref '(gnu packages ssh)   'guile-ssh))
+      ("guile-git"  (ref '(gnu packages guile) 'guile-git))
+      ("libgcrypt"  (ref '(gnu packages gnupg) 'libgcrypt))
+      ("zlib"       (ref '(gnu packages compression) 'zlib))
+      ("gzip"       (ref '(gnu packages compression) 'gzip))
+      ("bzip2"      (ref '(gnu packages compression) 'bzip2))
+      ("xz"         (ref '(gnu packages compression) 'xz))
+      ("guix"       (ref '(gnu packages package-management)
+                         'guix-register)))))
+
+
+;;;
+;;; Derivations.
+;;;
+
+;; Node in a DAG of build tasks.  Each node maps to a derivation, but it's
+;; easier to express things this way.
+(define-record-type <node>
+  (node name modules source dependencies compiled)
+  node?
+  (name          node-name)                       ;string
+  (modules       node-modules)                    ;list of module names
+  (source        node-source)                     ;list of source files
+  (dependencies  node-dependencies)               ;list of nodes
+  (compiled      node-compiled))                  ;node -> lowerable object
+
+(define (node-fold proc init nodes)
+  (let loop ((nodes nodes)
+             (visited (setq))
+             (result init))
+    (match nodes
+      (() result)
+      ((head tail ...)
+       (if (set-contains? visited head)
+           (loop tail visited result)
+           (loop tail (set-insert head visited)
+                 (proc head result)))))))
+
+(define (node-modules/recursive nodes)
+  (node-fold (lambda (node modules)
+               (append (node-modules node) modules))
+             '()
+             nodes))
+
+(define* (closure modules #:optional (except '()))
+  (source-module-closure modules
+                         #:select?
+                         (match-lambda
+                           (('guix 'config)
+                            #f)
+                           ((and module
+                                 (or ('guix _ ...) ('gnu _ ...)))
+                            (not (member module except)))
+                           (rest #f))))
+
+(define module->import
+  ;; Return a file-name/file-like object pair for the specified module and
+  ;; suitable for 'imported-files'.
+  (match-lambda
+    ((module '=> thing)
+     (let ((file (module-name->file-name module)))
+       (list file thing)))
+    (module
+        (let ((file (module-name->file-name module)))
+          (list file
+                (local-file (search-path %load-path file)))))))
+
+(define* (scheme-node name modules #:optional (dependencies '())
+                      #:key (extra-modules '()) (extra-files '())
+                      (extensions '())
+                      parallel? guile-for-build)
+  "Return a node that builds the given Scheme MODULES, and depends on
+DEPENDENCIES (a list of nodes).  EXTRA-MODULES is a list of additional modules
+added to the source, and EXTRA-FILES is a list of additional files.
+EXTENSIONS is a set of full-blown Guile packages (e.g., 'guile-json') that
+must be present in the search path."
+  (let* ((modules (append extra-modules
+                          (closure modules
+                                   (node-modules/recursive dependencies))))
+         (module-files (map module->import modules))
+         (source (imported-files (string-append name "-source")
+                                 (append module-files extra-files))))
+    (node name modules source dependencies
+          (compiled-modules name source modules
+                            (map node-source dependencies)
+                            (map node-compiled dependencies)
+                            #:extensions extensions
+                            #:parallel? parallel?
+                            #:guile-for-build guile-for-build))))
+
+(define (file-imports directory sub-directory pred)
+  "List all the files matching PRED under DIRECTORY/SUB-DIRECTORY.  Return a
+list of file-name/file-like objects suitable as inputs to 'imported-files'."
+  (map (lambda (file)
+         (list (string-drop file (+ 1 (string-length directory)))
+               (local-file file #:recursive? #t)))
+       (find-files (string-append directory "/" sub-directory) pred)))
+
+(define (scheme-modules* directory sub-directory)
+  "Return the list of module names found under SUB-DIRECTORY in DIRECTORY."
+  (let ((prefix (string-length directory)))
+    (map (lambda (file)
+           (file-name->module-name (string-drop file prefix)))
+         (scheme-files (string-append directory "/" sub-directory)))))
+
+(define* (compiled-guix source #:key (version %guix-version)
+                        (name (string-append "guix-" version))
+                        (guile-version (effective-version))
+                        (guile-for-build (guile-for-build guile-version))
+                        (libgcrypt (specification->package "libgcrypt"))
+                        (zlib (specification->package "zlib"))
+                        (gzip (specification->package "gzip"))
+                        (bzip2 (specification->package "bzip2"))
+                        (xz (specification->package "xz"))
+                        (guix (specification->package "guix")))
+  "Return a file-like object that contains a compiled Guix."
+  (define guile-json
+    (package-for-guile guile-version
+                       "guile-json"
+                       "guile2.2-json"
+                       "guile2.0-json"))
+
+  (define guile-ssh
+    (package-for-guile guile-version
+                       "guile-ssh"
+                       "guile2.2-ssh"
+                       "guile2.0-ssh"))
+
+  (define guile-git
+    (package-for-guile guile-version
+                       "guile-git"
+                       "guile2.0-git"))
+
+
+  (define dependencies
+    (match (append-map (lambda (package)
+                         (cons (list "x" package)
+                               (package-transitive-inputs package)))
+                       (list guile-git guile-json guile-ssh))
+      (((labels packages _ ...) ...)
+       packages)))
+
+  (define *core-modules*
+    (scheme-node "guix-core"
+                 '((guix)
+                   (guix monad-repl)
+                   (guix packages)
+                   (guix download)
+                   (guix discovery)
+                   (guix profiles)
+                   (guix build-system gnu)
+                   (guix build-system trivial)
+                   (guix build profiles)
+                   (guix build gnu-build-system))
+
+                 ;; Provide a dummy (guix config) with the default version
+                 ;; number, storedir, etc.  This is so that "guix-core" is the
+                 ;; same across all installations and doesn't need to be
+                 ;; rebuilt when the version changes, which in turn means we
+                 ;; can have substitutes for it.
+                 #:extra-modules
+                 `(((guix config)
+                    => ,(make-config.scm #:libgcrypt
+                                         (specification->package
+                                          "libgcrypt"))))
+
+                 #:guile-for-build guile-for-build))
+
+  (define *extra-modules*
+    (scheme-node "guix-extra"
+                 (filter-map (match-lambda
+                               (('guix 'scripts _ ..1) #f)
+                               (name name))
+                             (scheme-modules* source "guix"))
+                 (list *core-modules*)
+                 #:extensions dependencies
+                 #:guile-for-build guile-for-build))
+
+  (define *package-modules*
+    (scheme-node "guix-packages"
+                 `((gnu packages)
+                   ,@(scheme-modules* source "gnu/packages"))
+                 (list *core-modules* *extra-modules*)
+                 #:extensions dependencies
+                 #:extra-files                    ;all the non-Scheme files
+                 (file-imports source "gnu/packages"
+                               (lambda (file stat)
+                                 (and (eq? 'regular (stat:type stat))
+                                      (not (string-suffix? ".scm" file))
+                                      (not (string-suffix? ".go" file))
+                                      (not (string-prefix? ".#" file))
+                                      (not (string-suffix? "~" file)))))
+                 #:guile-for-build guile-for-build))
+
+  (define *system-modules*
+    (scheme-node "guix-system"
+                 `((gnu system)
+                   (gnu services)
+                   ,@(scheme-modules* source "gnu/system")
+                   ,@(scheme-modules* source "gnu/services"))
+                 (list *package-modules* *extra-modules* *core-modules*)
+                 #:extensions dependencies
+                 #:extra-files
+                 (file-imports source "gnu/system/examples" (const #t))
+                 #:guile-for-build
+                 guile-for-build))
+
+  (define *cli-modules*
+    (scheme-node "guix-cli"
+                 (scheme-modules* source "/guix/scripts")
+                 (list *core-modules* *extra-modules* *package-modules*
+                       *system-modules*)
+                 #:extensions dependencies
+                 #:guile-for-build guile-for-build))
+
+  (define *config*
+    (scheme-node "guix-config"
+                 '()
+                 #:extra-modules
+                 `(((guix config)
+                    => ,(make-config.scm #:libgcrypt libgcrypt
+                                         #:zlib zlib
+                                         #:gzip gzip
+                                         #:bzip2 bzip2
+                                         #:xz xz
+                                         #:guix guix
+                                         #:package-name
+                                         %guix-package-name
+                                         #:package-version
+                                         version
+                                         #:bug-report-address
+                                         %guix-bug-report-address
+                                         #:home-page-url
+                                         %guix-home-page-url)))
+                 #:guile-for-build guile-for-build))
+
+  (directory-union name
+                   (append-map (lambda (node)
+                                 (list (node-source node)
+                                       (node-compiled node)))
+
+                               ;; Note: *CONFIG* comes first so that it
+                               ;; overrides the (guix config) module that
+                               ;; comes with *CORE-MODULES*.
+                               (list *config*
+                                     *cli-modules*
+                                     *system-modules*
+                                     *package-modules*
+                                     *extra-modules*
+                                     *core-modules*))
+
+                   ;; Silently choose the first entry upon collision so that
+                   ;; we choose *CONFIG*.
+                   #:resolve-collision 'first
+
+                   ;; When we do (add-to-store "utils.scm"), "utils.scm" must
+                   ;; be a regular file, not a symlink.  Thus, arrange so that
+                   ;; regular files appear as regular files in the final
+                   ;; output.
+                   #:copy? #t
+                   #:quiet? #t))
+
+
+;;;
+;;; Generating (guix config).
+;;;
+
+(define %dependency-variables
+  ;; (guix config) variables corresponding to dependencies.
+  '(%libgcrypt %libz %xz %gzip %bzip2 %nix-instantiate
+    %sbindir %guix-register-program))
+
+(define %persona-variables
+  ;; (guix config) variables that define Guix's persona.
+  '(%guix-package-name
+    %guix-version
+    %guix-bug-report-address
+    %guix-home-page-url))
+
+(define %config-variables
+  ;; (guix config) variables corresponding to Guix configuration (storedir,
+  ;; localstatedir, etc.)
+  (sort (filter pair?
+                (module-map (lambda (name var)
+                              (and (not (memq name %dependency-variables))
+                                   (not (memq name %persona-variables))
+                                   (cons name (variable-ref var))))
+                            (resolve-interface '(guix config))))
+        (lambda (name+value1 name+value2)
+          (string<? (symbol->string (car name+value1))
+                    (symbol->string (car name+value2))))))
+
+(define* (make-config.scm #:key libgcrypt zlib gzip xz bzip2 guix
+                          (package-name "GNU Guix")
+                          (package-version "0")
+                          (bug-report-address "bug-guix@gnu.org")
+                          (home-page-url "https://gnu.org/s/guix"))
+
+  ;; Hack so that Geiser is not confused.
+  (define defmod 'define-module)
+
+  (scheme-file "config.scm"
+               #~(begin
+                   (#$defmod (guix config)
+                     #:export (%guix-package-name
+                               %guix-version
+                               %guix-bug-report-address
+                               %guix-home-page-url
+                               %sbindir
+                               %libgcrypt
+                               %libz
+                               %gzip
+                               %bzip2
+                               %xz
+                               %nix-instantiate))
+
+                   ;; XXX: Work around <http://bugs.gnu.org/15602>.
+                   (eval-when (expand load eval)
+                     #$@(map (match-lambda
+                               ((name . value)
+                                #~(define-public #$name #$value)))
+                             %config-variables)
+
+                     (define %guix-package-name #$package-name)
+                     (define %guix-version #$package-version)
+                     (define %guix-bug-report-address #$bug-report-address)
+                     (define %guix-home-page-url #$home-page-url)
+
+                     (define %sbindir
+                       ;; This is used to define '%guix-register-program'.
+                       ;; TODO: Use a derivation that builds nothing but the
+                       ;; C++ part.
+                       #+(and guix (file-append guix "/sbin")))
+
+                     (define %guix-register-program
+                       (or (getenv "GUIX_REGISTER")
+                           (and %sbindir
+                                (string-append %sbindir "/guix-register"))))
+
+                     (define %gzip
+                       #+(and gzip (file-append gzip "/bin/gzip")))
+                     (define %bzip2
+                       #+(and bzip2 (file-append bzip2 "/bin/bzip2")))
+                     (define %xz
+                       #+(and xz (file-append xz "/bin/xz")))
+
+                     (define %libgcrypt
+                       #+(and libgcrypt
+                              (file-append libgcrypt "/lib/libgcrypt")))
+                     (define %libz
+                       #+(and zlib
+                              (file-append zlib "/lib/libz")))
+
+                     (define %nix-instantiate     ;for (guix import snix)
+                       "nix-instantiate")))))
+
+
+
+;;;
+;;; Building.
+;;;
+
+(define (imported-files name files)
+  ;; This is a non-monadic, simplified version of 'imported-files' from (guix
+  ;; gexp).
+  (define build
+    (with-imported-modules (source-module-closure
+                            '((guix build utils)))
+      #~(begin
+          (use-modules (ice-9 match)
+                       (guix build utils))
+
+          (mkdir (ungexp output)) (chdir (ungexp output))
+          (for-each (match-lambda
+                      ((final-path store-path)
+                       (mkdir-p (dirname final-path))
+
+                       ;; Note: We need regular files to be regular files, not
+                       ;; symlinks, as this makes a difference for
+                       ;; 'add-to-store'.
+                       (copy-file store-path final-path)))
+                    '#$files))))
+
+  (computed-file name build))
+
+(define* (compiled-modules name module-tree modules
+                           #:optional
+                           (dependencies '())
+                           (dependencies-compiled '())
+                           #:key
+                           (extensions '())       ;full-blown Guile packages
+                           parallel?
+                           guile-for-build)
+  ;; This is a non-monadic, enhanced version of 'compiled-file' from (guix
+  ;; gexp).
+  (define build
+    (with-imported-modules (source-module-closure
+                            '((guix build compile)
+                              (guix build utils)))
+      #~(begin
+          (use-modules (srfi srfi-26)
+                       (ice-9 match)
+                       (ice-9 format)
+                       (ice-9 threads)
+                       (guix build compile)
+                       (guix build utils))
+
+          (define (regular? file)
+            (not (member file '("." ".."))))
+
+          (define (report-load file total completed)
+            (display #\cr)
+            (format #t
+                    "loading...\t~5,1f% of ~d files" ;FIXME: i18n
+                    (* 100. (/ completed total)) total)
+            (force-output))
+
+          (define (report-compilation file total completed)
+            (display #\cr)
+            (format #t "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
+                    (* 100. (/ completed total)) total)
+            (force-output))
+
+          (define (process-directory directory output)
+            (let ((files  (find-files directory "\\.scm$"))
+                  (prefix (+ 1 (string-length directory))))
+              ;; Hide compilation warnings.
+              (parameterize ((current-warning-port (%make-void-port "w")))
+                (compile-files directory #$output
+                               (map (cut string-drop <> prefix) files)
+                               #:workers (parallel-job-count)
+                               #:report-load report-load
+                               #:report-compilation report-compilation))))
+
+          (setvbuf (current-output-port) _IONBF)
+          (setvbuf (current-error-port) _IONBF)
+
+          (set! %load-path (cons #+module-tree %load-path))
+          (set! %load-path
+            (append '#+dependencies
+                    (map (lambda (extension)
+                           (string-append extension "/share/guile/site/"
+                                          (effective-version)))
+                         '#+extensions)
+                    %load-path))
+
+          (set! %load-compiled-path
+            (append '#+dependencies-compiled
+                    (map (lambda (extension)
+                           (string-append extension "/lib/guile/"
+                                          (effective-version)
+                                          "/site-ccache"))
+                         '#+extensions)
+                    %load-compiled-path))
+
+          ;; Load the compiler modules upfront.
+          (compile #f)
+
+          (mkdir #$output)
+          (chdir #+module-tree)
+          (process-directory "." #$output))))
+
+  (computed-file name build
+                 #:guile guile-for-build
+                 #:options
+                 `(#:local-build? #f              ;allow substitutes
+
+                   ;; Don't annoy people about _IONBF deprecation.
+                   #:env-vars (("GUILE_WARN_DEPRECATED" . "no")))))
+
+
+;;;
+;;; Building.
+;;;
+
+(define (guile-for-build version)
+  "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently
+running Guile."
+  (define canonical-package                       ;soft reference
+    (module-ref (resolve-interface '(gnu packages base))
+                'canonical-package))
+
+  (match version
+    ("2.2.2"
+     ;; Gross hack to avoid ABI incompatibilities (see
+     ;; <https://bugs.gnu.org/29570>.)
+     (module-ref (resolve-interface '(gnu packages guile))
+                 'guile-2.2.2))
+    ("2.2"
+     (canonical-package (module-ref (resolve-interface '(gnu packages guile))
+                                    'guile-2.2/fixed)))
+    ("2.0"
+     (canonical-package (specification->package "guile@2.0")))))
+
+(define* (guix-derivation source version
+                          #:optional (guile-version (effective-version)))
+  "Return, as a monadic value, the derivation to build the Guix from SOURCE
+for GUILE-VERSION.  Use VERSION as the version string."
+  (define (shorten version)
+    (if (and (string-every char-set:hex-digit version)
+             (> (string-length version) 9))
+        (string-take version 9)                   ;Git commit
+        version))
+
+  (define guile
+    (guile-for-build guile-version))
+
+  (mbegin %store-monad
+    (set-guile-for-build guile)
+    (lower-object (compiled-guix source
+                                 #:version version
+                                 #:name (string-append "guix-"
+                                                       (shorten version))
+                                 #:guile-version (match guile-version
+                                                   ("2.2.2" "2.2")
+                                                   (version version))
+                                 #:guile-for-build guile))))
diff --git a/guix/upstream.scm b/guix/upstream.scm
index caaa0e44e4..9e1056f7a7 100644
--- a/guix/upstream.scm
+++ b/guix/upstream.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -153,7 +153,8 @@ correspond to the same version."
   (cons (resolve-interface '(guix gnu-maintenance))
         (all-modules (map (lambda (entry)
                             `(,entry . "guix/import"))
-                          %load-path))))
+                          %load-path)
+                     #:warn warn-about-load-error)))
 
 (define %updaters
   ;; The list of publically-known updaters.
diff --git a/nix/libstore/globals.cc b/nix/libstore/globals.cc
index 4ab6c3a0f9..fcafac2df6 100644
--- a/nix/libstore/globals.cc
+++ b/nix/libstore/globals.cc
@@ -78,39 +78,6 @@ void Settings::processEnvironment()
 }
 
 
-void Settings::loadConfFile()
-{
-    Path settingsFile = (format("%1%/%2%") % nixConfDir % "nix.conf").str();
-    if (!pathExists(settingsFile)) return;
-    string contents = readFile(settingsFile);
-
-    unsigned int pos = 0;
-
-    while (pos < contents.size()) {
-        string line;
-        while (pos < contents.size() && contents[pos] != '\n')
-            line += contents[pos++];
-        pos++;
-
-        string::size_type hash = line.find('#');
-        if (hash != string::npos)
-            line = string(line, 0, hash);
-
-        vector<string> tokens = tokenizeString<vector<string> >(line);
-        if (tokens.empty()) continue;
-
-        if (tokens.size() < 2 || tokens[1] != "=")
-            throw Error(format("illegal configuration line `%1%' in `%2%'") % line % settingsFile);
-
-        string name = tokens[0];
-
-        vector<string>::iterator i = tokens.begin();
-        advance(i, 2);
-        settings[name] = concatStringsSep(" ", Strings(i, tokens.end())); // FIXME: slow
-    };
-}
-
-
 void Settings::set(const string & name, const string & value)
 {
     settings[name] = value;
@@ -256,17 +223,6 @@ string Settings::pack()
 }
 
 
-void Settings::unpack(const string & pack) {
-    Strings lines = tokenizeString<Strings>(pack, "\n");
-    foreach (Strings::iterator, i, lines) {
-        string::size_type eq = i->find('=');
-        if (eq == string::npos)
-            throw Error("illegal option name/value");
-        set(i->substr(0, eq), i->substr(eq + 1));
-    }
-}
-
-
 Settings::SettingsMap Settings::getOverrides()
 {
     return overrides;
diff --git a/nix/libstore/globals.hh b/nix/libstore/globals.hh
index 2439936959..1293625e1f 100644
--- a/nix/libstore/globals.hh
+++ b/nix/libstore/globals.hh
@@ -26,8 +26,6 @@ struct Settings {
 
     void processEnvironment();
 
-    void loadConfFile();
-
     void set(const string & name, const string & value);
 
     string get(const string & name, const string & def);
@@ -42,8 +40,6 @@ struct Settings {
 
     string pack();
 
-    void unpack(const string & pack);
-
     SettingsMap getOverrides();
 
     /* The directory where we store sources and derived files. */
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 882bce1f40..4c55c6ea0d 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -171,27 +171,10 @@ LocalStore::LocalStore(bool reserveSpace)
     }
 
     else if (curSchema < nixSchemaVersion) {
-        if (curSchema < 5)
-            throw Error(
-                "Your Nix store has a database in Berkeley DB format,\n"
-                "which is no longer supported. To convert to the new format,\n"
-                "please upgrade Nix to version 0.12 first.");
-
-        if (!lockFile(globalLock, ltWrite, false)) {
-            printMsg(lvlError, "waiting for exclusive access to the Nix store...");
-            lockFile(globalLock, ltWrite, true);
-        }
-
-        /* Get the schema version again, because another process may
-           have performed the upgrade already. */
-        curSchema = getSchema();
-
-        if (curSchema < 6) upgradeStore6();
-        else if (curSchema < 7) { upgradeStore7(); openDB(true); }
-
-        writeFile(schemaPath, (format("%1%") % nixSchemaVersion).str());
-
-        lockFile(globalLock, ltRead, true);
+	/* Guix always used version 7 of the schema.  */
+	throw Error(
+	    format("Your store database uses an implausibly old schema, version %1%.")
+	    % curSchema);
     }
 
     else openDB(false);
@@ -1633,140 +1616,6 @@ void LocalStore::markContentsGood(const Path & path)
 }
 
 
-/* Functions for upgrading from the pre-SQLite database. */
-
-PathSet LocalStore::queryValidPathsOld()
-{
-    PathSet paths;
-    for (auto & i : readDirectory(settings.nixDBPath + "/info"))
-        if (i.name.at(0) != '.') paths.insert(settings.nixStore + "/" + i.name);
-    return paths;
-}
-
-
-ValidPathInfo LocalStore::queryPathInfoOld(const Path & path)
-{
-    ValidPathInfo res;
-    res.path = path;
-
-    /* Read the info file. */
-    string baseName = baseNameOf(path);
-    Path infoFile = (format("%1%/info/%2%") % settings.nixDBPath % baseName).str();
-    if (!pathExists(infoFile))
-        throw Error(format("path `%1%' is not valid") % path);
-    string info = readFile(infoFile);
-
-    /* Parse it. */
-    Strings lines = tokenizeString<Strings>(info, "\n");
-
-    foreach (Strings::iterator, i, lines) {
-        string::size_type p = i->find(':');
-        if (p == string::npos)
-            throw Error(format("corrupt line in `%1%': %2%") % infoFile % *i);
-        string name(*i, 0, p);
-        string value(*i, p + 2);
-        if (name == "References") {
-            Strings refs = tokenizeString<Strings>(value, " ");
-            res.references = PathSet(refs.begin(), refs.end());
-        } else if (name == "Deriver") {
-            res.deriver = value;
-        } else if (name == "Hash") {
-            res.hash = parseHashField(path, value);
-        } else if (name == "Registered-At") {
-            int n = 0;
-            string2Int(value, n);
-            res.registrationTime = n;
-        }
-    }
-
-    return res;
-}
-
-
-/* Upgrade from schema 5 (Nix 0.12) to schema 6 (Nix >= 0.15). */
-void LocalStore::upgradeStore6()
-{
-    printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
-
-    openDB(true);
-
-    PathSet validPaths = queryValidPathsOld();
-
-    SQLiteTxn txn(db);
-
-    foreach (PathSet::iterator, i, validPaths) {
-        addValidPath(queryPathInfoOld(*i), false);
-        std::cerr << ".";
-    }
-
-    std::cerr << "|";
-
-    foreach (PathSet::iterator, i, validPaths) {
-        ValidPathInfo info = queryPathInfoOld(*i);
-        unsigned long long referrer = queryValidPathId(*i);
-        foreach (PathSet::iterator, j, info.references)
-            addReference(referrer, queryValidPathId(*j));
-        std::cerr << ".";
-    }
-
-    std::cerr << "\n";
-
-    txn.commit();
-}
-
-
-#if defined(FS_IOC_SETFLAGS) && defined(FS_IOC_GETFLAGS) && defined(FS_IMMUTABLE_FL)
-
-static void makeMutable(const Path & path)
-{
-    checkInterrupt();
-
-    struct stat st = lstat(path);
-
-    if (!S_ISDIR(st.st_mode) && !S_ISREG(st.st_mode)) return;
-
-    if (S_ISDIR(st.st_mode)) {
-        for (auto & i : readDirectory(path))
-            makeMutable(path + "/" + i.name);
-    }
-
-    /* The O_NOFOLLOW is important to prevent us from changing the
-       mutable bit on the target of a symlink (which would be a
-       security hole). */
-    AutoCloseFD fd = open(path.c_str(), O_RDONLY | O_NOFOLLOW);
-    if (fd == -1) {
-        if (errno == ELOOP) return; // it's a symlink
-        throw SysError(format("opening file `%1%'") % path);
-    }
-
-    unsigned int flags = 0, old;
-
-    /* Silently ignore errors getting/setting the immutable flag so
-       that we work correctly on filesystems that don't support it. */
-    if (ioctl(fd, FS_IOC_GETFLAGS, &flags)) return;
-    old = flags;
-    flags &= ~FS_IMMUTABLE_FL;
-    if (old == flags) return;
-    if (ioctl(fd, FS_IOC_SETFLAGS, &flags)) return;
-}
-
-/* Upgrade from schema 6 (Nix 0.15) to schema 7 (Nix >= 1.3). */
-void LocalStore::upgradeStore7()
-{
-    if (getuid() != 0) return;
-    printMsg(lvlError, "removing immutable bits from the Nix store (this may take a while)...");
-    makeMutable(settings.nixStore);
-}
-
-#else
-
-void LocalStore::upgradeStore7()
-{
-}
-
-#endif
-
-
 void LocalStore::vacuumDB()
 {
     if (sqlite3_exec(db, "vacuum;", 0, 0, 0) != SQLITE_OK)
diff --git a/nix/libstore/local-store.hh b/nix/libstore/local-store.hh
index 6110468498..4e6b4cfc1d 100644
--- a/nix/libstore/local-store.hh
+++ b/nix/libstore/local-store.hh
@@ -15,7 +15,7 @@ namespace nix {
 /* Nix store and database schema version.  Version 1 (or 0) was Nix <=
    0.7.  Version 2 was Nix 0.8 and 0.9.  Version 3 is Nix 0.10.
    Version 4 is Nix 0.11.  Version 5 is Nix 0.12-0.16.  Version 6 is
-   Nix 1.0.  Version 7 is Nix 1.3. */
+   Nix 1.0.  Version 7 is Nix 1.3.  Guix has always used version 7.  */
 const int nixSchemaVersion = 7;
 
 
@@ -244,11 +244,6 @@ private:
 
     void updatePathInfo(const ValidPathInfo & info);
 
-    void upgradeStore6();
-    void upgradeStore7();
-    PathSet queryValidPathsOld();
-    ValidPathInfo queryPathInfoOld(const Path & path);
-
     struct GCState;
 
     void deleteGarbage(GCState & state, const Path & path);
diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc
index 22363af126..97618089bd 100644
--- a/nix/libstore/misc.cc
+++ b/nix/libstore/misc.cc
@@ -67,120 +67,6 @@ Path findOutput(const Derivation & drv, string id)
 }
 
 
-void queryMissing(StoreAPI & store, const PathSet & targets,
-    PathSet & willBuild, PathSet & willSubstitute, PathSet & unknown,
-    unsigned long long & downloadSize, unsigned long long & narSize)
-{
-    downloadSize = narSize = 0;
-
-    PathSet todo(targets.begin(), targets.end()), done;
-
-    /* Getting substitute info has high latency when using the binary
-       cache substituter.  Thus it's essential to do substitute
-       queries in parallel as much as possible.  To accomplish this
-       we do the following:
-
-       - For all paths still to be processed (‘todo’), we add all
-         paths for which we need info to the set ‘query’.  For an
-         unbuilt derivation this is the output paths; otherwise, it's
-         the path itself.
-
-       - We get info about all paths in ‘query’ in parallel.
-
-       - We process the results and add new items to ‘todo’ if
-         necessary.  E.g. if a path is substitutable, then we need to
-         get info on its references.
-
-       - Repeat until ‘todo’ is empty.
-    */
-
-    while (!todo.empty()) {
-
-        PathSet query, todoDrv, todoNonDrv;
-
-        foreach (PathSet::iterator, i, todo) {
-            if (done.find(*i) != done.end()) continue;
-            done.insert(*i);
-
-            DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i);
-
-            if (isDerivation(i2.first)) {
-                if (!store.isValidPath(i2.first)) {
-                    // FIXME: we could try to substitute p.
-                    unknown.insert(*i);
-                    continue;
-                }
-                Derivation drv = derivationFromPath(store, i2.first);
-
-                PathSet invalid;
-                foreach (DerivationOutputs::iterator, j, drv.outputs)
-                    if (wantOutput(j->first, i2.second)
-                        && !store.isValidPath(j->second.path))
-                        invalid.insert(j->second.path);
-                if (invalid.empty()) continue;
-
-                todoDrv.insert(*i);
-                if (settings.useSubstitutes && substitutesAllowed(drv))
-                    query.insert(invalid.begin(), invalid.end());
-            }
-
-            else {
-                if (store.isValidPath(*i)) continue;
-                query.insert(*i);
-                todoNonDrv.insert(*i);
-            }
-        }
-
-        todo.clear();
-
-        SubstitutablePathInfos infos;
-        store.querySubstitutablePathInfos(query, infos);
-
-        foreach (PathSet::iterator, i, todoDrv) {
-            DrvPathWithOutputs i2 = parseDrvPathWithOutputs(*i);
-
-            // FIXME: cache this
-            Derivation drv = derivationFromPath(store, i2.first);
-
-            PathSet outputs;
-            bool mustBuild = false;
-            if (settings.useSubstitutes && substitutesAllowed(drv)) {
-                foreach (DerivationOutputs::iterator, j, drv.outputs) {
-                    if (!wantOutput(j->first, i2.second)) continue;
-                    if (!store.isValidPath(j->second.path)) {
-                        if (infos.find(j->second.path) == infos.end())
-                            mustBuild = true;
-                        else
-                            outputs.insert(j->second.path);
-                    }
-                }
-            } else
-                mustBuild = true;
-
-            if (mustBuild) {
-                willBuild.insert(i2.first);
-                todo.insert(drv.inputSrcs.begin(), drv.inputSrcs.end());
-                foreach (DerivationInputs::iterator, j, drv.inputDrvs)
-                    todo.insert(makeDrvPathWithOutputs(j->first, j->second));
-            } else
-                todoNonDrv.insert(outputs.begin(), outputs.end());
-        }
-
-        foreach (PathSet::iterator, i, todoNonDrv) {
-            done.insert(*i);
-            SubstitutablePathInfos::iterator info = infos.find(*i);
-            if (info != infos.end()) {
-                willSubstitute.insert(*i);
-                downloadSize += info->second.downloadSize;
-                narSize += info->second.narSize;
-                todo.insert(info->second.references.begin(), info->second.references.end());
-            } else
-                unknown.insert(*i);
-        }
-    }
-}
-
-
 static void dfsVisit(StoreAPI & store, const PathSet & paths,
     const Path & path, PathSet & visited, Paths & sorted,
     PathSet & parents)
diff --git a/nix/libstore/misc.hh b/nix/libstore/misc.hh
index d3e31d51f7..edbf24047e 100644
--- a/nix/libstore/misc.hh
+++ b/nix/libstore/misc.hh
@@ -25,13 +25,6 @@ void computeFSClosure(StoreAPI & store, const Path & path,
    given derivation. */
 Path findOutput(const Derivation & drv, string id);
 
-/* Given a set of paths that are to be built, return the set of
-   derivations that will be built, and the set of output paths that
-   will be substituted. */
-void queryMissing(StoreAPI & store, const PathSet & targets,
-    PathSet & willBuild, PathSet & willSubstitute, PathSet & unknown,
-    unsigned long long & downloadSize, unsigned long long & narSize);
-
 bool willBuildLocally(const Derivation & drv);
 
 bool substitutesAllowed(const Derivation & drv);
diff --git a/nix/libstore/store-api.cc b/nix/libstore/store-api.cc
index 30af5f5fed..6742d2ed49 100644
--- a/nix/libstore/store-api.cc
+++ b/nix/libstore/store-api.cc
@@ -48,26 +48,6 @@ Path toStorePath(const Path & path)
 }
 
 
-Path followLinksToStore(const Path & _path)
-{
-    Path path = absPath(_path);
-    while (!isInStore(path)) {
-        if (!isLink(path)) break;
-        string target = readLink(path);
-        path = absPath(target, dirOf(path));
-    }
-    if (!isInStore(path))
-        throw Error(format("path `%1%' is not in the Nix store") % path);
-    return path;
-}
-
-
-Path followLinksToStorePath(const Path & path)
-{
-    return toStorePath(followLinksToStore(path));
-}
-
-
 string storePathToName(const Path & path)
 {
     assertStorePath(path);
@@ -200,17 +180,6 @@ Path makeFixedOutputPath(bool recursive,
 }
 
 
-std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
-    bool recursive, HashType hashAlgo, PathFilter & filter)
-{
-    HashType ht(hashAlgo);
-    Hash h = recursive ? hashPath(ht, srcPath, filter).first : hashFile(ht, srcPath);
-    string name = baseNameOf(srcPath);
-    Path dstPath = makeFixedOutputPath(recursive, hashAlgo, h, name);
-    return std::pair<Path, Hash>(dstPath, h);
-}
-
-
 Path computeStorePathForText(const string & name, const string & s,
     const PathSet & references)
 {
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh
index fa78d595f2..e957cedebc 100644
--- a/nix/libstore/store-api.hh
+++ b/nix/libstore/store-api.hh
@@ -311,15 +311,6 @@ void checkStoreName(const string & name);
 Path toStorePath(const Path & path);
 
 
-/* Follow symlinks until we end up with a path in the Nix store. */
-Path followLinksToStore(const Path & path);
-
-
-/* Same as followLinksToStore(), but apply toStorePath() to the
-   result. */
-Path followLinksToStorePath(const Path & path);
-
-
 /* Constructs a unique store path name. */
 Path makeStorePath(const string & type,
     const Hash & hash, const string & name);
@@ -331,14 +322,6 @@ Path makeFixedOutputPath(bool recursive,
     HashType hashAlgo, Hash hash, string name);
 
 
-/* This is the preparatory part of addToStore() and addToStoreFixed();
-   it computes the store path to which srcPath is to be copied.
-   Returns the store path and the cryptographic hash of the
-   contents of srcPath. */
-std::pair<Path, Hash> computeStorePathForPath(const Path & srcPath,
-    bool recursive = true, HashType hashAlgo = htSHA256,
-    PathFilter & filter = defaultPathFilter);
-
 /* Preparatory part of addTextToStore().
 
    !!! Computation of the path should take the references given to
diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS
index 5158332739..d26dd60980 100644
--- a/po/guix/LINGUAS
+++ b/po/guix/LINGUAS
@@ -6,6 +6,7 @@ de
 en@boldquot
 en@quot
 eo
+es
 fr
 hu
 pl
diff --git a/po/guix/es.po b/po/guix/es.po
new file mode 100644
index 0000000000..e3362c0545
--- /dev/null
+++ b/po/guix/es.po
@@ -0,0 +1,2994 @@
+# Spanish messages for GNU Guix.
+# Copyright (C) 2017 the authors of Guix (msgids)
+# This file is distributed under the same license as the guix package.
+# Jorge Maldonado Ventura <jorgesumle@freakspot.net>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: guix 0.14.0\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2017-11-28 08:56+0100\n"
+"PO-Revision-Date: 2018-03-30 02:16+0200\n"
+"Last-Translator: Jorge Maldonado Ventura <jorgesumle@freakspot.net>\n"
+"Language-Team: Spanish <es@tp.org.es>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.0.4\n"
+
+#: gnu.scm:82
+#, scheme-format
+msgid "module ~a not found"
+msgstr "módulo ~a no encontrado"
+
+#: gnu.scm:100
+msgid ""
+"You may use @command{guix package --show=foo | grep location} to search\n"
+"for the location of package @code{foo}.\n"
+"If you get the line @code{location: gnu/packages/bar.scm:174:2},\n"
+"add @code{bar} to the @code{use-package-modules} form."
+msgstr ""
+"Puede usar @command{guix package --show=foo | grep location} para buscar\n"
+"la ubicación del paquete @code{foo}.\n"
+"Si obtiene la línea @code{location: gnu/packages/bar.scm:174:2},\n"
+"añada @code{bar} a la forma @code{use-package-modules}."
+
+#: gnu.scm:108
+#, scheme-format
+msgid "Try adding @code{(use-package-modules ~a)}."
+msgstr "Pruebe añadiendo @code{(use-package-modules ~a)}"
+
+#: gnu.scm:123
+#, scheme-format
+msgid ""
+"You may use @command{guix system search ~a} to search for a service\n"
+"matching @code{~a}.\n"
+"If you get the line @code{location: gnu/services/foo.scm:188:2},\n"
+"add @code{foo} to the @code{use-service-modules} form."
+msgstr ""
+
+#: gnu.scm:132
+#, scheme-format
+msgid "Try adding @code{(use-service-modules ~a)}."
+msgstr ""
+
+#: gnu/packages.scm:92
+#, scheme-format
+msgid "~a: patch not found"
+msgstr "~a: parche no encontrado"
+
+#: gnu/packages.scm:108
+#, scheme-format
+msgid "could not find bootstrap binary '~a' for system '~a'"
+msgstr ""
+
+#: gnu/packages.scm:240
+#, scheme-format
+msgid "ambiguous package specification `~a'~%"
+msgstr "especificación de paquete ambigua `~a'~%"
+
+#: gnu/packages.scm:241
+#, scheme-format
+msgid "choosing ~a@~a from ~a~%"
+msgstr ""
+
+#: gnu/packages.scm:246 guix/scripts/package.scm:271
+#, scheme-format
+msgid "package '~a' has been superseded by '~a'~%"
+msgstr ""
+
+#: gnu/packages.scm:253
+#, scheme-format
+msgid "~A: package not found for version ~a~%"
+msgstr "~A: paquete no encontrado para versión ~a~%"
+
+#: gnu/packages.scm:254
+#, scheme-format
+msgid "~A: unknown package~%"
+msgstr "~A: paquete desconocido~%"
+
+#: gnu/packages.scm:282
+#, scheme-format
+msgid "package `~a' lacks output `~a'~%"
+msgstr ""
+
+#: gnu/services.scm:235
+#, scheme-format
+msgid "~a: no value specified for service of type '~a'"
+msgstr ""
+
+#: gnu/services.scm:650
+#, scheme-format
+msgid "no target of type '~a' for service '~a'"
+msgstr ""
+
+#: gnu/services.scm:662 gnu/services.scm:723
+#, scheme-format
+msgid "more than one target service of type '~a'"
+msgstr ""
+
+#: gnu/services.scm:713
+#, scheme-format
+msgid "service of type '~a' not found"
+msgstr ""
+
+#: gnu/system.scm:305
+#, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr ""
+
+#: gnu/system.scm:695
+#, scheme-format
+msgid "using a string for file '~a' is deprecated; use 'plain-file' instead~%"
+msgstr ""
+
+#: gnu/system.scm:711
+#, scheme-format
+msgid "using a monadic value for '~a' is deprecated; use 'plain-file' instead~%"
+msgstr ""
+
+#: gnu/system.scm:856
+#, scheme-format
+msgid "~a: invalid locale name"
+msgstr "~a: nombre de configuración regional inválido"
+
+#: gnu/services/shepherd.scm:166
+#, scheme-format
+msgid "service '~a' provided more than once"
+msgstr ""
+
+#: gnu/services/shepherd.scm:181
+#, scheme-format
+msgid "service '~a' requires '~a', which is not provided by any service"
+msgstr ""
+
+#: gnu/system/shadow.scm:231
+#, scheme-format
+msgid "supplementary group '~a' of user '~a' is undeclared"
+msgstr ""
+
+#: gnu/system/shadow.scm:241
+#, scheme-format
+msgid "primary group '~a' of user '~a' is undeclared"
+msgstr ""
+
+#: guix/scripts.scm:56
+#, scheme-format
+msgid "invalid argument: ~a~%"
+msgstr ""
+
+#: guix/scripts.scm:84 guix/scripts/download.scm:135
+#: guix/scripts/import/cran.scm:82 guix/scripts/import/elpa.scm:77
+#: guix/scripts/publish.scm:844 guix/scripts/edit.scm:81
+#, scheme-format
+msgid "~A: unrecognized option~%"
+msgstr ""
+
+#: guix/scripts.scm:179
+#, scheme-format
+msgid "Your Guix installation is ~a day old.\n"
+msgid_plural "Your Guix installation is ~a days old.\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/scripts.scm:184
+#, scheme-format
+msgid ""
+"Consider running 'guix pull' followed by\n"
+"'~a' to get up-to-date packages and security updates.\n"
+msgstr ""
+"Considere ejecutar 'guix pull' seguido de\n"
+"'~a' para obtener paquetes actualizados y actualizaciones de seguridad.\n"
+
+#: guix/scripts/build.scm:124
+#, scheme-format
+msgid "failed to create GC root `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:206
+#, scheme-format
+msgid "invalid replacement specification: ~s~%"
+msgstr ""
+
+#: guix/scripts/build.scm:263
+msgid ""
+"\n"
+"      --with-source=SOURCE\n"
+"                         use SOURCE when building the corresponding package"
+msgstr ""
+
+#: guix/scripts/build.scm:266
+msgid ""
+"\n"
+"      --with-input=PACKAGE=REPLACEMENT\n"
+"                         replace dependency PACKAGE by REPLACEMENT"
+msgstr ""
+
+#: guix/scripts/build.scm:269
+msgid ""
+"\n"
+"      --with-graft=PACKAGE=REPLACEMENT\n"
+"                         graft REPLACEMENT on packages that refer to PACKAGE"
+msgstr ""
+
+#: guix/scripts/build.scm:294
+#, scheme-format
+msgid "transformation '~a' had no effect on ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:312
+msgid ""
+"\n"
+"  -L, --load-path=DIR    prepend DIR to the package module search path"
+msgstr ""
+
+#: guix/scripts/build.scm:314
+msgid ""
+"\n"
+"  -K, --keep-failed      keep build tree of failed builds"
+msgstr ""
+
+#: guix/scripts/build.scm:316
+msgid ""
+"\n"
+"  -k, --keep-going       keep going when some of the derivations fail"
+msgstr ""
+
+#: guix/scripts/build.scm:318
+msgid ""
+"\n"
+"  -n, --dry-run          do not build the derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:320
+msgid ""
+"\n"
+"      --fallback         fall back to building when the substituter fails"
+msgstr ""
+
+#: guix/scripts/build.scm:322
+msgid ""
+"\n"
+"      --no-substitutes   build instead of resorting to pre-built substitutes"
+msgstr ""
+
+#: guix/scripts/build.scm:324 guix/scripts/size.scm:232
+msgid ""
+"\n"
+"      --substitute-urls=URLS\n"
+"                         fetch substitute from URLS if they are authorized"
+msgstr ""
+
+#: guix/scripts/build.scm:327
+msgid ""
+"\n"
+"      --no-grafts        do not graft packages"
+msgstr ""
+
+#: guix/scripts/build.scm:329
+msgid ""
+"\n"
+"      --no-build-hook    do not attempt to offload builds via the build hook"
+msgstr ""
+
+#: guix/scripts/build.scm:331
+msgid ""
+"\n"
+"      --max-silent-time=SECONDS\n"
+"                         mark the build as failed after SECONDS of silence"
+msgstr ""
+
+#: guix/scripts/build.scm:334
+msgid ""
+"\n"
+"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
+msgstr ""
+
+#: guix/scripts/build.scm:336
+msgid ""
+"\n"
+"      --verbosity=LEVEL  use the given verbosity LEVEL"
+msgstr ""
+
+#: guix/scripts/build.scm:338
+msgid ""
+"\n"
+"      --rounds=N         build N times in a row to detect non-determinism"
+msgstr ""
+
+#: guix/scripts/build.scm:340
+msgid ""
+"\n"
+"  -c, --cores=N          allow the use of up to N CPU cores for the build"
+msgstr ""
+
+#: guix/scripts/build.scm:342
+msgid ""
+"\n"
+"  -M, --max-jobs=N       allow at most N build jobs"
+msgstr ""
+
+#: guix/scripts/build.scm:448 guix/scripts/build.scm:455
+#, scheme-format
+msgid "not a number: '~a' option argument: ~a~%"
+msgstr ""
+
+#: guix/scripts/build.scm:474
+msgid ""
+"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
+"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
+msgstr ""
+
+#: guix/scripts/build.scm:476
+msgid ""
+"\n"
+"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
+msgstr ""
+
+#: guix/scripts/build.scm:478
+msgid ""
+"\n"
+"  -f, --file=FILE        build the package or derivation that the code within\n"
+"                         FILE evaluates to"
+msgstr ""
+
+#: guix/scripts/build.scm:481
+msgid ""
+"\n"
+"  -S, --source           build the packages' source derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:483
+msgid ""
+"\n"
+"      --sources[=TYPE]   build source derivations; TYPE may optionally be one\n"
+"                         of \"package\", \"all\" (default), or \"transitive\""
+msgstr ""
+
+#: guix/scripts/build.scm:486 guix/scripts/pack.scm:338
+msgid ""
+"\n"
+"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#: guix/scripts/build.scm:488 guix/scripts/pack.scm:340
+msgid ""
+"\n"
+"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
+msgstr ""
+
+#: guix/scripts/build.scm:490
+msgid ""
+"\n"
+"  -d, --derivations      return the derivation paths of the given packages"
+msgstr ""
+
+#: guix/scripts/build.scm:492
+msgid ""
+"\n"
+"      --check            rebuild items to check for non-determinism issues"
+msgstr ""
+
+#: guix/scripts/build.scm:494
+msgid ""
+"\n"
+"      --repair           repair the specified items"
+msgstr ""
+
+#: guix/scripts/build.scm:496
+msgid ""
+"\n"
+"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
+"                         as a garbage collector root"
+msgstr ""
+
+#: guix/scripts/build.scm:499
+msgid ""
+"\n"
+"  -q, --quiet            do not show the build log"
+msgstr ""
+
+#: guix/scripts/build.scm:501
+msgid ""
+"\n"
+"      --log-file         return the log file names for the given derivations"
+msgstr ""
+
+#: guix/scripts/build.scm:508 guix/scripts/download.scm:83
+#: guix/scripts/package.scm:425 guix/scripts/gc.scm:74
+#: guix/scripts/hash.scm:59 guix/scripts/import.scm:92
+#: guix/scripts/import/cran.scm:47 guix/scripts/pull.scm:110
+#: guix/scripts/substitute.scm:889 guix/scripts/system.scm:870
+#: guix/scripts/lint.scm:1090 guix/scripts/publish.scm:94
+#: guix/scripts/edit.scm:44 guix/scripts/size.scm:243
+#: guix/scripts/graph.scm:432 guix/scripts/challenge.scm:241
+#: guix/scripts/copy.scm:122 guix/scripts/pack.scm:349
+#: guix/scripts/weather.scm:156 guix/scripts/container.scm:33
+#: guix/scripts/container/exec.scm:43
+msgid ""
+"\n"
+"  -h, --help             display this help and exit"
+msgstr ""
+
+#: guix/scripts/build.scm:510 guix/scripts/download.scm:85
+#: guix/scripts/package.scm:427 guix/scripts/gc.scm:76
+#: guix/scripts/hash.scm:61 guix/scripts/import.scm:94
+#: guix/scripts/import/cran.scm:49 guix/scripts/pull.scm:112
+#: guix/scripts/substitute.scm:891 guix/scripts/system.scm:872
+#: guix/scripts/lint.scm:1094 guix/scripts/publish.scm:96
+#: guix/scripts/edit.scm:46 guix/scripts/size.scm:245
+#: guix/scripts/graph.scm:434 guix/scripts/challenge.scm:243
+#: guix/scripts/copy.scm:124 guix/scripts/pack.scm:351
+#: guix/scripts/weather.scm:158 guix/scripts/container.scm:35
+#: guix/scripts/container/exec.scm:45
+msgid ""
+"\n"
+"  -V, --version          display version information and exit"
+msgstr ""
+
+#: guix/scripts/build.scm:537
+#, scheme-format
+msgid ""
+"invalid argument: '~a' option argument: ~a, ~\n"
+"must be one of 'package', 'all', or 'transitive'~%"
+msgstr ""
+
+#: guix/scripts/build.scm:590
+#, scheme-format
+msgid "~s: not something we can build~%"
+msgstr ""
+
+#: guix/scripts/build.scm:644
+#, scheme-format
+msgid "~a: warning: package '~a' has no source~%"
+msgstr ""
+
+#: guix/scripts/build.scm:678
+#, scheme-format
+msgid "no build log for '~a'~%"
+msgstr ""
+
+#: guix/discovery.scm:88
+#, scheme-format
+msgid "cannot access `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/download.scm:69
+msgid ""
+"Usage: guix download [OPTION] URL\n"
+"Download the file at URL to the store or to the given file, and print its\n"
+"file name and the hash of its contents.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n"
+"('hex' and 'hexadecimal' can be used as well).\n"
+msgstr ""
+
+#: guix/scripts/download.scm:75 guix/scripts/hash.scm:54
+msgid ""
+"\n"
+"  -f, --format=FMT       write the hash in the given format"
+msgstr ""
+
+#: guix/scripts/download.scm:77
+msgid ""
+"\n"
+"      --no-check-certificate\n"
+"                         do not validate the certificate of HTTPS servers "
+msgstr ""
+
+#: guix/scripts/download.scm:80
+msgid ""
+"\n"
+"  -o, --output=FILE      download to FILE"
+msgstr ""
+
+#: guix/scripts/download.scm:103 guix/scripts/hash.scm:82
+#, scheme-format
+msgid "unsupported hash format: ~a~%"
+msgstr ""
+
+#: guix/scripts/download.scm:138 guix/scripts/package.scm:906
+#: guix/scripts/publish.scm:846
+#, scheme-format
+msgid "~A: extraneous argument~%"
+msgstr ""
+
+#: guix/scripts/download.scm:146
+#, scheme-format
+msgid "no download URI was specified~%"
+msgstr ""
+
+#: guix/scripts/download.scm:151
+#, scheme-format
+msgid "~a: failed to parse URI~%"
+msgstr ""
+
+#: guix/scripts/download.scm:161
+#, scheme-format
+msgid "~a: download failed~%"
+msgstr ""
+
+#: guix/scripts/package.scm:112
+#, scheme-format
+msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:134
+#, scheme-format
+msgid "error: while creating directory `~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/package.scm:138
+#, scheme-format
+msgid "Please create the `~a' directory, with you as the owner.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:145
+#, scheme-format
+msgid "error: directory `~a' is not owned by you~%"
+msgstr ""
+
+#: guix/scripts/package.scm:148
+#, scheme-format
+msgid "Please change the owner of `~a' to user ~s.~%"
+msgstr ""
+
+#: guix/scripts/package.scm:183
+#, scheme-format
+msgid "not removing generation ~a, which is current~%"
+msgstr ""
+
+#: guix/scripts/package.scm:190
+#, scheme-format
+msgid "no matching generation~%"
+msgstr ""
+
+#: guix/scripts/package.scm:193 guix/scripts/package.scm:716
+#: guix/scripts/system.scm:558
+#, scheme-format
+msgid "invalid syntax: ~a~%"
+msgstr ""
+
+#: guix/scripts/package.scm:219
+#, scheme-format
+msgid "nothing to be done~%"
+msgstr ""
+
+#: guix/scripts/package.scm:233
+#, scheme-format
+msgid "~a package in profile~%"
+msgid_plural "~a packages in profile~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/scripts/package.scm:313
+#, scheme-format
+msgid "package '~a' no longer exists~%"
+msgstr "paquete '~a' ya no existe~%"
+
+#: guix/scripts/package.scm:351
+#, scheme-format
+msgid "The following environment variable definitions may be needed:~%"
+msgstr "Puede que se necesiten las siguientes definiciones de variables de entorno:~%"
+
+#: guix/scripts/package.scm:366
+msgid ""
+"Usage: guix package [OPTION]...\n"
+"Install, remove, or upgrade packages in a single transaction.\n"
+msgstr ""
+"Uso: guix package [OPCIÓN]...\n"
+"Instala, elimina o actualiza paquetes en una única transacción.\n"
+
+#: guix/scripts/package.scm:368
+msgid ""
+"\n"
+"  -i, --install PACKAGE ...\n"
+"                         install PACKAGEs"
+msgstr ""
+"\n"
+"  -i, --install PAQUETE ...\n"
+"                         install PAQUETEs"
+
+#: guix/scripts/package.scm:371
+msgid ""
+"\n"
+"  -e, --install-from-expression=EXP\n"
+"                         install the package EXP evaluates to"
+msgstr ""
+
+#: guix/scripts/package.scm:374
+msgid ""
+"\n"
+"  -f, --install-from-file=FILE\n"
+"                         install the package that the code within FILE\n"
+"                         evaluates to"
+msgstr ""
+
+#: guix/scripts/package.scm:378
+msgid ""
+"\n"
+"  -r, --remove PACKAGE ...\n"
+"                         remove PACKAGEs"
+msgstr ""
+"\n"
+"  -r, --remove PAQUETES ...\n"
+"                         elimina PAQUETESs"
+
+#: guix/scripts/package.scm:381
+msgid ""
+"\n"
+"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:383
+msgid ""
+"\n"
+"  -m, --manifest=FILE    create a new profile generation with the manifest\n"
+"                         from FILE"
+msgstr ""
+
+#: guix/scripts/package.scm:386
+msgid ""
+"\n"
+"      --do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:388
+msgid ""
+"\n"
+"      --roll-back        roll back to the previous generation"
+msgstr ""
+
+#: guix/scripts/package.scm:390
+msgid ""
+"\n"
+"      --search-paths[=KIND]\n"
+"                         display needed environment variable definitions"
+msgstr ""
+
+#: guix/scripts/package.scm:393
+msgid ""
+"\n"
+"  -l, --list-generations[=PATTERN]\n"
+"                         list generations matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:396
+msgid ""
+"\n"
+"  -d, --delete-generations[=PATTERN]\n"
+"                         delete generations matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:399
+msgid ""
+"\n"
+"  -S, --switch-generation=PATTERN\n"
+"                         switch to a generation matching PATTERN"
+msgstr ""
+
+#: guix/scripts/package.scm:402
+msgid ""
+"\n"
+"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
+msgstr ""
+
+#: guix/scripts/package.scm:405
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the profile"
+msgstr ""
+
+#: guix/scripts/package.scm:407 guix/scripts/pull.scm:98
+msgid ""
+"\n"
+"      --verbose          produce verbose output"
+msgstr ""
+
+#: guix/scripts/package.scm:410
+msgid ""
+"\n"
+"  -s, --search=REGEXP    search in synopsis and description using REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:412
+msgid ""
+"\n"
+"  -I, --list-installed[=REGEXP]\n"
+"                         list installed packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:415
+msgid ""
+"\n"
+"  -A, --list-available[=REGEXP]\n"
+"                         list available packages matching REGEXP"
+msgstr ""
+
+#: guix/scripts/package.scm:418
+msgid ""
+"\n"
+"      --show=PACKAGE     show details about PACKAGE"
+msgstr ""
+
+#: guix/scripts/package.scm:470
+#, scheme-format
+msgid "upgrade regexp '~a' looks like a command-line option~%"
+msgstr ""
+
+#: guix/scripts/package.scm:473
+#, scheme-format
+msgid "is this intended?~%"
+msgstr ""
+
+#: guix/scripts/package.scm:518
+#, scheme-format
+msgid "~a: unsupported kind of search path~%"
+msgstr ""
+
+#: guix/scripts/package.scm:815
+#, scheme-format
+msgid "cannot switch to generation '~a'~%"
+msgstr ""
+
+#: guix/scripts/package.scm:831
+#, scheme-format
+msgid "would install new manifest from '~a' with ~d entries~%"
+msgstr ""
+
+#: guix/scripts/package.scm:833
+#, scheme-format
+msgid "installing new manifest from '~a' with ~d entries~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:42
+msgid ""
+"Usage: guix gc [OPTION]... PATHS...\n"
+"Invoke the garbage collector.\n"
+msgstr ""
+
+#: guix/scripts/gc.scm:44
+msgid ""
+"\n"
+"  -C, --collect-garbage[=MIN]\n"
+"                         collect at least MIN bytes of garbage"
+msgstr ""
+
+#: guix/scripts/gc.scm:47
+msgid ""
+"\n"
+"  -F, --free-space=FREE  attempt to reach FREE available space in the store"
+msgstr ""
+
+#: guix/scripts/gc.scm:49
+msgid ""
+"\n"
+"  -d, --delete           attempt to delete PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:51
+msgid ""
+"\n"
+"      --optimize         optimize the store by deduplicating identical files"
+msgstr ""
+
+#: guix/scripts/gc.scm:53
+msgid ""
+"\n"
+"      --list-dead        list dead paths"
+msgstr ""
+
+#: guix/scripts/gc.scm:55
+msgid ""
+"\n"
+"      --list-live        list live paths"
+msgstr ""
+
+#: guix/scripts/gc.scm:58
+msgid ""
+"\n"
+"      --references       list the references of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:60
+msgid ""
+"\n"
+"  -R, --requisites       list the requisites of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:62
+msgid ""
+"\n"
+"      --referrers        list the referrers of PATHS"
+msgstr ""
+
+#: guix/scripts/gc.scm:65
+msgid ""
+"\n"
+"      --verify[=OPTS]    verify the integrity of the store; OPTS is a\n"
+"                         comma-separated combination of 'repair' and\n"
+"                         'contents'"
+msgstr ""
+
+#: guix/scripts/gc.scm:69
+msgid ""
+"\n"
+"      --list-failures    list cached build failures"
+msgstr ""
+
+#: guix/scripts/gc.scm:71
+msgid ""
+"\n"
+"      --clear-failures   remove PATHS from the set of cached failures"
+msgstr ""
+
+#: guix/scripts/gc.scm:100
+#, scheme-format
+msgid "invalid amount of storage: ~a~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:185
+msgid "already ~h bytes available on ~a, nothing to do~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:188
+msgid "freeing ~h bytes~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:200
+#, scheme-format
+msgid "extraneous arguments: ~{~a ~}~%"
+msgstr ""
+
+#: guix/scripts/gc.scm:220 guix/scripts/gc.scm:223
+msgid "freed ~h bytes~%"
+msgstr ""
+
+#: guix/scripts/hash.scm:47
+msgid ""
+"Usage: guix hash [OPTION] FILE\n"
+"Return the cryptographic hash of FILE.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n"
+"and 'hexadecimal' can be used as well).\n"
+msgstr ""
+
+#: guix/scripts/hash.scm:52
+msgid ""
+"\n"
+"  -x, --exclude-vcs      exclude version control directories"
+msgstr ""
+
+#: guix/scripts/hash.scm:56
+msgid ""
+"\n"
+"  -r, --recursive        compute the hash on FILE recursively"
+msgstr ""
+
+#: guix/scripts/hash.scm:150 guix/ui.scm:326 guix/ui.scm:601 guix/ui.scm:654
+#, scheme-format
+msgid "~a~%"
+msgstr ""
+
+#: guix/scripts/hash.scm:153 guix/scripts/system.scm:1022
+#: guix/scripts/system.scm:1031 guix/scripts/system.scm:1038
+#, scheme-format
+msgid "wrong number of arguments~%"
+msgstr ""
+
+#: guix/scripts/import.scm:86
+msgid ""
+"Usage: guix import IMPORTER ARGS ...\n"
+"Run IMPORTER with ARGS.\n"
+msgstr ""
+
+#: guix/scripts/import.scm:89
+msgid "IMPORTER must be one of the importers listed below:\n"
+msgstr ""
+
+#: guix/scripts/import.scm:103
+#, scheme-format
+msgid "guix import: missing importer name~%"
+msgstr ""
+
+#: guix/scripts/import.scm:123
+#, scheme-format
+msgid "'~a' import failed~%"
+msgstr ""
+
+#: guix/scripts/import.scm:124
+#, scheme-format
+msgid "~a: invalid importer~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:43
+msgid ""
+"Usage: guix import cran PACKAGE-NAME\n"
+"Import and convert the CRAN package for PACKAGE-NAME.\n"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:45
+msgid ""
+"\n"
+"  -a, --archive=ARCHIVE  specify the archive repository"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:108
+#, scheme-format
+msgid "failed to download description for package '~a'~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:112 guix/scripts/import/elpa.scm:95
+#, scheme-format
+msgid "too few arguments~%"
+msgstr ""
+
+#: guix/scripts/import/cran.scm:114 guix/scripts/import/elpa.scm:97
+#, scheme-format
+msgid "too many arguments~%"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:41
+msgid ""
+"Usage: guix import elpa PACKAGE-NAME\n"
+"Import the latest package named PACKAGE-NAME from an ELPA repository.\n"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:43
+msgid ""
+"\n"
+"  -a, --archive=ARCHIVE          specify the archive repository"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:45
+msgid ""
+"\n"
+"  -h, --help                     display this help and exit"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:47
+msgid ""
+"\n"
+"  -V, --version                  display version information and exit"
+msgstr ""
+
+#: guix/scripts/import/elpa.scm:92
+#, scheme-format
+msgid "failed to download package '~a'~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:60
+#, scheme-format
+msgid ""
+"Guile-Git is missing but it is now required by 'guix pull'.\n"
+"Install it by running:\n"
+"\n"
+"  guix package -i ~a\n"
+"  export GUILE_LOAD_PATH=$HOME/.guix-profile/share/guile/site/~a:$GUILE_LOAD_PATH\n"
+"  export GUILE_LOAD_COMPILED_PATH=$HOME/.guix-profile/lib/guile/~a/site-ccache:$GUILE_LOAD_COMPILED_PATH\n"
+"\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:96
+msgid ""
+"Usage: guix pull [OPTION]...\n"
+"Download and deploy the latest version of Guix.\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:100
+msgid ""
+"\n"
+"      --url=URL          download from the Git repository at URL"
+msgstr ""
+
+#: guix/scripts/pull.scm:102
+msgid ""
+"\n"
+"      --commit=COMMIT    download the specified COMMIT"
+msgstr ""
+
+#: guix/scripts/pull.scm:104
+msgid ""
+"\n"
+"      --branch=BRANCH    download the tip of the specified BRANCH"
+msgstr ""
+
+#: guix/scripts/pull.scm:106
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the new Guix"
+msgstr ""
+
+#: guix/scripts/pull.scm:192
+msgid "Guix already up to date\n"
+msgstr ""
+
+#: guix/scripts/pull.scm:197
+#, scheme-format
+msgid "updated ~a successfully deployed under `~a'~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:200
+#, scheme-format
+msgid "failed to update Guix, check the build log~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:216
+#, scheme-format
+msgid "cannot enforce use of the Let's Encrypt certificates~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:218
+#, scheme-format
+msgid "please upgrade Guile-Git~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:226
+#, scheme-format
+msgid "Git error ~a~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:228
+#, scheme-format
+msgid "Git error: ~a~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:262
+#, scheme-format
+msgid "Updating from Git repository at '~a'...~%"
+msgstr ""
+
+#: guix/scripts/pull.scm:271
+#, scheme-format
+msgid "Building from Git commit ~a...~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:125
+#, scheme-format
+msgid "authentication and authorization of substitutes disabled!~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:200
+#, scheme-format
+msgid "download from '~a' failed: ~a, ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:213
+#, scheme-format
+msgid "while fetching ~a: server is somewhat slow~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:215
+#, scheme-format
+msgid "try `--no-substitutes' if the problem persists~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:233
+#, scheme-format
+msgid "unsupported substitute URI scheme: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:268
+#, scheme-format
+msgid "while fetching '~a': ~a (~s)~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:273
+#, scheme-format
+msgid "ignoring substitute server at '~s'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:323
+#, scheme-format
+msgid "signature version must be a number: ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:327
+#, scheme-format
+msgid "unsupported signature version: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:335
+#, scheme-format
+msgid "signature is not a valid s-expression: ~s~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:339
+#, scheme-format
+msgid "invalid format of the signature field: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:374
+#, scheme-format
+msgid "invalid signature for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:376
+#, scheme-format
+msgid "hash mismatch for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:378
+#, scheme-format
+msgid "'~a' is signed with an unauthorized key~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:380
+#, scheme-format
+msgid "signature on '~a' is corrupt~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:465
+#, scheme-format
+msgid "'~a' does not name a store item~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:629
+#, scheme-format
+msgid "updating list of substitutes from '~a'... ~5,1f%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:693
+#, scheme-format
+msgid "~s: unsupported server URI scheme~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:703
+#, scheme-format
+msgid "'~a' uses different store '~a'; ignoring it~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:863
+#, scheme-format
+msgid "host name lookup error: ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:868
+#, scheme-format
+msgid "TLS error in procedure '~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:879
+msgid ""
+"Usage: guix substitute [OPTION]...\n"
+"Internal tool to substitute a pre-built binary to a local build.\n"
+msgstr ""
+
+#: guix/scripts/substitute.scm:881
+msgid ""
+"\n"
+"      --query            report on the availability of substitutes for the\n"
+"                         store file names passed on the standard input"
+msgstr ""
+
+#: guix/scripts/substitute.scm:884
+msgid ""
+"\n"
+"      --substitute STORE-FILE DESTINATION\n"
+"                         download STORE-FILE and store it as a Nar in file\n"
+"                         DESTINATION"
+msgstr ""
+
+#: guix/scripts/substitute.scm:949
+#, scheme-format
+msgid "no valid substitute for '~a'~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:956
+#, scheme-format
+msgid "Downloading ~a...~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1012
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1066
+#, scheme-format
+msgid "~a: invalid URI~%"
+msgstr ""
+
+#: guix/scripts/substitute.scm:1126
+#, scheme-format
+msgid "~a: unrecognized options~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:59
+#, scheme-format
+msgid "cannot find public key for secret key '~a'~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:79
+#, scheme-format
+msgid "error: invalid signature: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:81
+#, scheme-format
+msgid "error: unauthorized public key: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:83
+#, scheme-format
+msgid "error: corrupt signature data: ~a~%"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:121
+msgid ""
+"Usage: guix authenticate OPTION...\n"
+"Sign or verify the signature on the given file.  This tool is meant to\n"
+"be used internally by 'guix-daemon'.\n"
+msgstr ""
+
+#: guix/scripts/authenticate.scm:127
+msgid "wrong arguments"
+msgstr "argumentos incorrectos"
+
+#: guix/scripts/system.scm:135
+#, scheme-format
+msgid "failed to register '~a' under '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:174
+#, scheme-format
+msgid "failed to install bootloader ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:194
+#, scheme-format
+msgid "initializing the current root file system~%"
+msgstr ""
+
+#: guix/scripts/system.scm:208
+#, scheme-format
+msgid "not running as 'root', so the ownership of '~a' may be incorrect!~%"
+msgstr ""
+
+#: guix/scripts/system.scm:253
+#, scheme-format
+msgid "while talking to shepherd: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:260
+#, scheme-format
+msgid "service '~a' could not be found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:263
+#, scheme-format
+msgid "service '~a' does not have an action '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:267
+#, scheme-format
+msgid "exception caught while executing '~a' on service '~a':~%"
+msgstr ""
+
+#: guix/scripts/system.scm:275
+#, scheme-format
+msgid "something went wrong: ~s~%"
+msgstr ""
+
+#: guix/scripts/system.scm:278
+#, scheme-format
+msgid "shepherd error~%"
+msgstr ""
+
+#: guix/scripts/system.scm:295
+#, scheme-format
+msgid "failed to obtain list of shepherd services~%"
+msgstr ""
+
+#: guix/scripts/system.scm:315
+#, scheme-format
+msgid "unloading service '~a'...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:323
+#, scheme-format
+msgid "loading new services:~{ ~a~}...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:347
+#, scheme-format
+msgid "activating system...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:423
+#, scheme-format
+msgid "cannot switch to system generation '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:494
+msgid "the DAG of services"
+msgstr ""
+
+#: guix/scripts/system.scm:507
+msgid "the dependency graph of shepherd services"
+msgstr ""
+
+#: guix/scripts/system.scm:531
+#, scheme-format
+msgid "  file name: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:532
+#, scheme-format
+msgid "  canonical file name: ~a~%"
+msgstr ""
+
+#. TRANSLATORS: Please preserve the two-space indentation.
+#: guix/scripts/system.scm:534
+#, scheme-format
+msgid "  label: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:535
+#, scheme-format
+msgid "  bootloader: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:536
+#, scheme-format
+msgid "  root device: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:540
+#, scheme-format
+msgid "  kernel: ~a~%"
+msgstr ""
+
+#: guix/scripts/system.scm:600
+#, scheme-format
+msgid "~a: error: file system with label '~a' not found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:606
+#, scheme-format
+msgid "~a: error: file system with UUID '~a' not found~%"
+msgstr ""
+
+#: guix/scripts/system.scm:658
+#, scheme-format
+msgid "~a not found: 'guix pull' was never run~%"
+msgstr ""
+
+#: guix/scripts/system.scm:659
+#, scheme-format
+msgid "Consider running 'guix pull' before 'reconfigure'.~%"
+msgstr ""
+
+#: guix/scripts/system.scm:660
+#, scheme-format
+msgid "Failing to do that may downgrade your system!~%"
+msgstr ""
+
+#: guix/scripts/system.scm:767
+#, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:812
+msgid ""
+"Usage: guix system [OPTION ...] ACTION [ARG ...] [FILE]\n"
+"Build the operating system declared in FILE according to ACTION.\n"
+"Some ACTIONS support additional ARGS.\n"
+msgstr ""
+
+#: guix/scripts/system.scm:816 guix/scripts/container.scm:28
+msgid "The valid values for ACTION are:\n"
+msgstr ""
+
+#: guix/scripts/system.scm:818
+msgid "   search           search for existing service types\n"
+msgstr ""
+
+#: guix/scripts/system.scm:820
+msgid "   reconfigure      switch to a new operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:822
+msgid "   roll-back        switch to the previous operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:824
+msgid "   switch-generation switch to an existing operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:826
+msgid "   list-generations list the system generations\n"
+msgstr ""
+
+#: guix/scripts/system.scm:828
+msgid "   build            build the operating system without installing anything\n"
+msgstr ""
+
+#: guix/scripts/system.scm:830
+msgid "   container        build a container that shares the host's store\n"
+msgstr ""
+
+#: guix/scripts/system.scm:832
+msgid "   vm               build a virtual machine image that shares the host's store\n"
+msgstr ""
+
+#: guix/scripts/system.scm:834
+msgid "   vm-image         build a freestanding virtual machine image\n"
+msgstr ""
+
+#: guix/scripts/system.scm:836
+msgid "   disk-image       build a disk image, suitable for a USB stick\n"
+msgstr ""
+
+#: guix/scripts/system.scm:838
+msgid "   init             initialize a root file system to run GNU\n"
+msgstr ""
+
+#: guix/scripts/system.scm:840
+msgid "   extension-graph  emit the service extension graph in Dot format\n"
+msgstr ""
+
+#: guix/scripts/system.scm:842
+msgid "   shepherd-graph   emit the graph of shepherd services in Dot format\n"
+msgstr ""
+
+#: guix/scripts/system.scm:846
+msgid ""
+"\n"
+"  -d, --derivation       return the derivation of the given system"
+msgstr ""
+
+#: guix/scripts/system.scm:848
+msgid ""
+"\n"
+"      --on-error=STRATEGY\n"
+"                         apply STRATEGY when an error occurs while reading FILE"
+msgstr ""
+
+#: guix/scripts/system.scm:851
+msgid ""
+"\n"
+"      --file-system-type=TYPE\n"
+"                         for 'disk-image', produce a root file system of TYPE\n"
+"                         (one of 'ext4', 'iso9660')"
+msgstr ""
+
+#: guix/scripts/system.scm:855
+msgid ""
+"\n"
+"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
+msgstr ""
+
+#: guix/scripts/system.scm:857
+msgid ""
+"\n"
+"      --no-bootloader    for 'init', do not install a bootloader"
+msgstr ""
+
+#: guix/scripts/system.scm:859
+msgid ""
+"\n"
+"      --share=SPEC       for 'vm', share host file system according to SPEC"
+msgstr ""
+
+#: guix/scripts/system.scm:861
+msgid ""
+"\n"
+"  -r, --root=FILE        for 'vm', 'vm-image', 'disk-image', 'container',\n"
+"                         and 'build', make FILE a symlink to the result, and\n"
+"                         register it as a garbage collector root"
+msgstr ""
+
+#: guix/scripts/system.scm:865
+msgid ""
+"\n"
+"      --expose=SPEC      for 'vm', expose host file system according to SPEC"
+msgstr ""
+
+#: guix/scripts/system.scm:867
+msgid ""
+"\n"
+"      --full-boot        for 'vm', make a full boot sequence"
+msgstr ""
+
+#: guix/scripts/system.scm:959
+#, scheme-format
+msgid "no configuration file specified~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1057
+#, scheme-format
+msgid "~a: unknown action~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1072
+#, scheme-format
+msgid "wrong number of arguments for action '~a'~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1077
+#, scheme-format
+msgid "guix system: missing command name~%"
+msgstr ""
+
+#: guix/scripts/system.scm:1079
+#, scheme-format
+msgid "Try 'guix system --help' for more information.~%"
+msgstr ""
+
+#: guix/scripts/system/search.scm:64 guix/ui.scm:1057 guix/ui.scm:1071
+msgid "unknown"
+msgstr ""
+
+#: guix/scripts/lint.scm:138
+#, scheme-format
+msgid "Available checkers:~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:162
+msgid "description should not be empty"
+msgstr ""
+
+#: guix/scripts/lint.scm:172
+msgid "Texinfo markup in description is invalid"
+msgstr ""
+
+#: guix/scripts/lint.scm:182
+#, scheme-format
+msgid ""
+"description should not contain ~\n"
+"trademark sign '~a' at ~d"
+msgstr ""
+
+#. TRANSLATORS: '@code' is Texinfo markup and must be kept
+#. as is.
+#: guix/scripts/lint.scm:195
+msgid "use @code or similar ornament instead of quotes"
+msgstr ""
+
+#: guix/scripts/lint.scm:202
+msgid "description should start with an upper-case letter or digit"
+msgstr ""
+
+#: guix/scripts/lint.scm:218
+#, scheme-format
+msgid ""
+"sentences in description should be followed ~\n"
+"by two spaces; possible infraction~p at ~{~a~^, ~}"
+msgstr ""
+
+#: guix/scripts/lint.scm:236
+#, scheme-format
+msgid "invalid description: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:281
+#, scheme-format
+msgid "'~a' should probably be a native input"
+msgstr ""
+
+#: guix/scripts/lint.scm:297
+#, scheme-format
+msgid "'~a' should probably not be an input at all"
+msgstr ""
+
+#: guix/scripts/lint.scm:314
+msgid "synopsis should not be empty"
+msgstr ""
+
+#: guix/scripts/lint.scm:322
+msgid "no period allowed at the end of the synopsis"
+msgstr ""
+
+#: guix/scripts/lint.scm:334
+msgid "no article allowed at the beginning of the synopsis"
+msgstr ""
+
+#: guix/scripts/lint.scm:341
+msgid "synopsis should be less than 80 characters long"
+msgstr ""
+
+#: guix/scripts/lint.scm:347
+msgid "synopsis should start with an upper-case letter or digit"
+msgstr ""
+
+#: guix/scripts/lint.scm:354
+msgid "synopsis should not start with the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:364
+msgid "Texinfo markup in synopsis is invalid"
+msgstr ""
+
+#: guix/scripts/lint.scm:383
+#, scheme-format
+msgid "invalid synopsis: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:502
+#, scheme-format
+msgid "URI ~a returned suspiciously small file (~a bytes)"
+msgstr ""
+
+#: guix/scripts/lint.scm:512
+#, scheme-format
+msgid "permanent redirect from ~a to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:519
+#, scheme-format
+msgid "invalid permanent redirect from ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:526 guix/scripts/lint.scm:538
+#, scheme-format
+msgid "URI ~a not reachable: ~a (~s)"
+msgstr ""
+
+#: guix/scripts/lint.scm:545
+#, scheme-format
+msgid "URI ~a domain not found: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:553
+#, scheme-format
+msgid "URI ~a unreachable: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:562
+#, scheme-format
+msgid "TLS certificate error: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:583
+msgid "invalid value for home page"
+msgstr ""
+
+#: guix/scripts/lint.scm:586
+#, scheme-format
+msgid "invalid home page URL: ~s"
+msgstr ""
+
+#: guix/scripts/lint.scm:606
+msgid "file names of patches should start with the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:644
+#, scheme-format
+msgid "~a: ~a: proposed synopsis: ~s~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:657
+#, scheme-format
+msgid "~a: ~a: proposed description:~%     \"~a\"~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:699
+msgid "all the source URIs are unreachable:"
+msgstr ""
+
+#: guix/scripts/lint.scm:721
+msgid "the source file name should contain the package name"
+msgstr ""
+
+#: guix/scripts/lint.scm:737
+#, scheme-format
+msgid "URL should be 'mirror://~a/~a'"
+msgstr ""
+
+#: guix/scripts/lint.scm:755 guix/scripts/lint.scm:759
+#, scheme-format
+msgid "failed to create derivation: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:773
+#, scheme-format
+msgid "failed to create derivation: ~s~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:783
+msgid "invalid license field"
+msgstr ""
+
+#: guix/scripts/lint.scm:799
+#, scheme-format
+msgid "~a: HTTP GET error for ~a: ~a (~s)~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:809
+#, scheme-format
+msgid "~a: host lookup failure: ~a~%"
+msgstr ""
+
+#: guix/scripts/lint.scm:814
+#, scheme-format
+msgid "~a: TLS certificate error: ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:829
+msgid "while retrieving CVE vulnerabilities"
+msgstr ""
+
+#: guix/scripts/lint.scm:866
+#, scheme-format
+msgid "probably vulnerable to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:873
+#, scheme-format
+msgid "while retrieving upstream info for '~a'"
+msgstr ""
+
+#: guix/scripts/lint.scm:881
+#, scheme-format
+msgid "can be upgraded to ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:896
+#, scheme-format
+msgid "tabulation on line ~a, column ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:905
+#, scheme-format
+msgid "trailing white space on line ~a"
+msgstr ""
+
+#: guix/scripts/lint.scm:915
+#, scheme-format
+msgid "line ~a is way too long (~a characters)"
+msgstr ""
+
+#: guix/scripts/lint.scm:926
+#, scheme-format
+msgid "line ~a: parentheses feel lonely, move to the previous or next line"
+msgstr ""
+
+#: guix/scripts/lint.scm:996
+msgid "Validate package descriptions"
+msgstr ""
+
+#: guix/scripts/lint.scm:1000
+msgid "Validate synopsis & description of GNU packages"
+msgstr ""
+
+#: guix/scripts/lint.scm:1004
+msgid "Identify inputs that should be native inputs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1008
+msgid "Identify inputs that should be inputs at all"
+msgstr ""
+
+#: guix/scripts/lint.scm:1012
+msgid "Validate file names and availability of patches"
+msgstr ""
+
+#: guix/scripts/lint.scm:1016
+msgid "Validate home-page URLs"
+msgstr ""
+
+#. TRANSLATORS: <license> is the name of a data type and must not be
+#. translated.
+#: guix/scripts/lint.scm:1022
+msgid "Make sure the 'license' field is a <license> or a list thereof"
+msgstr ""
+
+#: guix/scripts/lint.scm:1027
+msgid "Validate source URLs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1031
+msgid "Suggest 'mirror://' URLs"
+msgstr ""
+
+#: guix/scripts/lint.scm:1035
+msgid "Validate file names of sources"
+msgstr ""
+
+#: guix/scripts/lint.scm:1039
+msgid "Report failure to compile a package to a derivation"
+msgstr ""
+
+#: guix/scripts/lint.scm:1043
+msgid "Validate package synopses"
+msgstr ""
+
+#: guix/scripts/lint.scm:1047
+msgid "Check the Common Vulnerabilities and Exposures (CVE) database"
+msgstr ""
+
+#: guix/scripts/lint.scm:1052
+msgid "Check the package for new upstream releases"
+msgstr ""
+
+#: guix/scripts/lint.scm:1056
+msgid "Look for formatting issues in the source"
+msgstr ""
+
+#: guix/scripts/lint.scm:1084
+msgid ""
+"Usage: guix lint [OPTION]... [PACKAGE]...\n"
+"Run a set of checkers on the specified package; if none is specified,\n"
+"run the checkers on all packages.\n"
+msgstr ""
+
+#: guix/scripts/lint.scm:1087
+msgid ""
+"\n"
+"  -c, --checkers=CHECKER1,CHECKER2...\n"
+"                         only run the specified checkers"
+msgstr ""
+
+#: guix/scripts/lint.scm:1092
+msgid ""
+"\n"
+"  -l, --list-checkers    display the list of available lint checkers"
+msgstr ""
+
+#: guix/scripts/lint.scm:1112
+#, scheme-format
+msgid "~a: invalid checker~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:68
+#, scheme-format
+msgid ""
+"Usage: guix publish [OPTION]...\n"
+"Publish ~a over HTTP.\n"
+msgstr ""
+
+#: guix/scripts/publish.scm:70
+msgid ""
+"\n"
+"  -p, --port=PORT        listen on PORT"
+msgstr ""
+
+#: guix/scripts/publish.scm:72
+msgid ""
+"\n"
+"      --listen=HOST      listen on the network interface for HOST"
+msgstr ""
+
+#: guix/scripts/publish.scm:74
+msgid ""
+"\n"
+"  -u, --user=USER        change privileges to USER as soon as possible"
+msgstr ""
+
+#: guix/scripts/publish.scm:76
+msgid ""
+"\n"
+"  -C, --compression[=LEVEL]\n"
+"                         compress archives at LEVEL"
+msgstr ""
+
+#: guix/scripts/publish.scm:79
+msgid ""
+"\n"
+"  -c, --cache=DIRECTORY  cache published items to DIRECTORY"
+msgstr ""
+
+#: guix/scripts/publish.scm:81
+msgid ""
+"\n"
+"      --workers=N        use N workers to bake items"
+msgstr ""
+
+#: guix/scripts/publish.scm:83
+msgid ""
+"\n"
+"      --ttl=TTL          announce narinfos can be cached for TTL seconds"
+msgstr ""
+
+#: guix/scripts/publish.scm:85
+msgid ""
+"\n"
+"      --nar-path=PATH    use PATH as the prefix for nar URLs"
+msgstr ""
+
+#: guix/scripts/publish.scm:87
+msgid ""
+"\n"
+"      --public-key=FILE  use FILE as the public key for signatures"
+msgstr ""
+
+#: guix/scripts/publish.scm:89
+msgid ""
+"\n"
+"      --private-key=FILE use FILE as the private key for signatures"
+msgstr ""
+
+#: guix/scripts/publish.scm:91
+msgid ""
+"\n"
+"  -r, --repl[=PORT]      spawn REPL server on PORT"
+msgstr ""
+
+#: guix/scripts/publish.scm:107
+#, scheme-format
+msgid "lookup of host '~a' failed: ~a~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:152
+#, scheme-format
+msgid "lookup of host '~a' returned nothing"
+msgstr ""
+
+#: guix/scripts/publish.scm:165
+#, scheme-format
+msgid "zlib support is missing; compression disabled~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:179
+#, scheme-format
+msgid "~a: invalid duration~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:832
+#, scheme-format
+msgid "user '~a' not found: ~a~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:873
+#, scheme-format
+msgid "server running as root; consider using the '--user' option!~%"
+msgstr ""
+
+#: guix/scripts/publish.scm:878
+#, scheme-format
+msgid "publishing ~a on ~a, port ~d~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:41
+msgid ""
+"Usage: guix edit PACKAGE...\n"
+"Start $VISUAL or $EDITOR to edit the definitions of PACKAGE...\n"
+msgstr ""
+
+#: guix/scripts/edit.scm:62
+#, scheme-format
+msgid "file '~a' not found in search path ~s~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:90
+#, scheme-format
+msgid "source location of package '~a' is unknown~%"
+msgstr ""
+
+#: guix/scripts/edit.scm:103
+#, scheme-format
+msgid "failed to launch '~a': ~a~%"
+msgstr ""
+
+#: guix/scripts/size.scm:77
+#, scheme-format
+msgid "no available substitute information for '~a'~%"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "store item"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "total"
+msgstr ""
+
+#: guix/scripts/size.scm:99
+msgid "self"
+msgstr ""
+
+#: guix/scripts/size.scm:107
+#, scheme-format
+msgid "total: ~,1f MiB~%"
+msgstr ""
+
+#. TRANSLATORS: This is the title of a graph, meaning that the graph
+#. represents a profile of the store (the "store" being the place where
+#. packages are stored.)
+#: guix/scripts/size.scm:221
+msgid "store profile"
+msgstr ""
+
+#: guix/scripts/size.scm:230
+msgid ""
+"Usage: guix size [OPTION]... PACKAGE\n"
+"Report the size of PACKAGE and its dependencies.\n"
+msgstr ""
+
+#: guix/scripts/size.scm:235
+msgid ""
+"\n"
+"  -s, --system=SYSTEM    consider packages for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#. TRANSLATORS: "closure" and "self" must not be translated.
+#: guix/scripts/size.scm:238
+msgid ""
+"\n"
+"      --sort=KEY         sort according to KEY--\"closure\" or \"self\""
+msgstr ""
+
+#: guix/scripts/size.scm:240
+msgid ""
+"\n"
+"  -m, --map-file=FILE    write to FILE a graphical map of disk usage"
+msgstr ""
+
+#: guix/scripts/size.scm:271
+#, scheme-format
+msgid "~a: invalid sorting key~%"
+msgstr ""
+
+#: guix/scripts/size.scm:306
+msgid "missing store item argument\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:84
+#, scheme-format
+msgid "~a: invalid argument (package name expected)"
+msgstr ""
+
+#: guix/scripts/graph.scm:95
+msgid "the DAG of packages, excluding implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:121
+msgid "the reverse DAG of packages"
+msgstr ""
+
+#: guix/scripts/graph.scm:171
+msgid "the DAG of packages, including implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:181
+msgid "the DAG of packages and origins, including implicit inputs"
+msgstr ""
+
+#: guix/scripts/graph.scm:211
+msgid "same as 'bag', but without the bootstrap nodes"
+msgstr ""
+
+#: guix/scripts/graph.scm:253
+msgid "the DAG of derivations"
+msgstr ""
+
+#: guix/scripts/graph.scm:265
+msgid "unsupported argument for derivation graph"
+msgstr ""
+
+#: guix/scripts/graph.scm:291
+msgid "unsupported argument for this type of graph"
+msgstr ""
+
+#: guix/scripts/graph.scm:304
+#, scheme-format
+msgid "references for '~a' are not known~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:311
+msgid "the DAG of run-time dependencies (store references)"
+msgstr ""
+
+#: guix/scripts/graph.scm:327
+msgid "the DAG of referrers in the store"
+msgstr ""
+
+#: guix/scripts/graph.scm:354
+#, scheme-format
+msgid "~a: unknown node type~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:361
+#, scheme-format
+msgid "~a: unknown backend~%"
+msgstr ""
+
+#: guix/scripts/graph.scm:365
+msgid "The available node types are:\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:375
+msgid "The available backend types are:\n"
+msgstr ""
+
+#. TRANSLATORS: Here 'dot' is the name of a program; it must not be
+#. translated.
+#: guix/scripts/graph.scm:419
+msgid ""
+"Usage: guix graph PACKAGE...\n"
+"Emit a representation of the dependency graph of PACKAGE...\n"
+msgstr ""
+
+#: guix/scripts/graph.scm:421
+msgid ""
+"\n"
+"  -b, --backend=TYPE     produce a graph with the given backend TYPE"
+msgstr ""
+
+#: guix/scripts/graph.scm:423
+msgid ""
+"\n"
+"      --list-backends    list the available graph backends"
+msgstr ""
+
+#: guix/scripts/graph.scm:425
+msgid ""
+"\n"
+"  -t, --type=TYPE        represent nodes of the given TYPE"
+msgstr ""
+
+#: guix/scripts/graph.scm:427
+msgid ""
+"\n"
+"      --list-types       list the available graph types"
+msgstr ""
+
+#: guix/scripts/graph.scm:429 guix/scripts/pack.scm:336
+msgid ""
+"\n"
+"  -e, --expression=EXPR  consider the package EXPR evaluates to"
+msgstr ""
+
+#: guix/scripts/challenge.scm:191
+#, scheme-format
+msgid "  local hash: ~a~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:192
+#, scheme-format
+msgid "  no local build for '~a'~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:194
+#, scheme-format
+msgid "  ~50a: ~a~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:202
+#, scheme-format
+msgid "~a contents differ:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:205
+#, scheme-format
+msgid "could not challenge '~a': no local build~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:207
+#, scheme-format
+msgid "could not challenge '~a': no substitutes~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:210
+#, scheme-format
+msgid "~a contents match:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:219
+msgid "~h store items were analyzed:~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:220
+msgid "  - ~h (~,1f%) were identical~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:222
+msgid "  - ~h (~,1f%) differed~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:224
+msgid "  - ~h (~,1f%) were inconclusive~%"
+msgstr ""
+
+#: guix/scripts/challenge.scm:233
+msgid ""
+"Usage: guix challenge [PACKAGE...]\n"
+"Challenge the substitutes for PACKAGE... provided by one or more servers.\n"
+msgstr ""
+
+#: guix/scripts/challenge.scm:235
+msgid ""
+"\n"
+"      --substitute-urls=URLS\n"
+"                         compare build results with those at URLS"
+msgstr ""
+
+#: guix/scripts/challenge.scm:238
+msgid ""
+"\n"
+"      -v, --verbose      show details about successful comparisons"
+msgstr ""
+
+#: guix/scripts/copy.scm:59
+#, scheme-format
+msgid "~a: invalid TCP port number~%"
+msgstr ""
+
+#: guix/scripts/copy.scm:61
+#, scheme-format
+msgid "~a: invalid SSH specification~%"
+msgstr ""
+
+#: guix/scripts/copy.scm:113
+msgid ""
+"Usage: guix copy [OPTION]... ITEMS...\n"
+"Copy ITEMS to or from the specified host over SSH.\n"
+msgstr ""
+
+#: guix/scripts/copy.scm:115
+msgid ""
+"\n"
+"      --to=HOST          send ITEMS to HOST"
+msgstr ""
+
+#: guix/scripts/copy.scm:117
+msgid ""
+"\n"
+"      --from=HOST        receive ITEMS from HOST"
+msgstr ""
+
+#: guix/scripts/copy.scm:168
+#, scheme-format
+msgid "use '--to' or '--from'~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:76
+#, scheme-format
+msgid "~a: compressor not found~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:318
+#, scheme-format
+msgid "~a: invalid symlink specification~%"
+msgstr ""
+
+#: guix/scripts/pack.scm:328
+msgid ""
+"Usage: guix pack [OPTION]... PACKAGE...\n"
+"Create a bundle of PACKAGE.\n"
+msgstr ""
+
+#: guix/scripts/pack.scm:334
+msgid ""
+"\n"
+"  -f, --format=FORMAT    build a pack in the given FORMAT"
+msgstr ""
+
+#: guix/scripts/pack.scm:342
+msgid ""
+"\n"
+"  -C, --compression=TOOL compress using TOOL--e.g., \"lzip\""
+msgstr ""
+
+#: guix/scripts/pack.scm:344
+msgid ""
+"\n"
+"  -S, --symlink=SPEC     create symlinks to the profile according to SPEC"
+msgstr ""
+
+#: guix/scripts/pack.scm:346
+msgid ""
+"\n"
+"      --localstatedir    include /var/guix in the resulting pack"
+msgstr ""
+
+#: guix/scripts/pack.scm:390
+#, scheme-format
+msgid "~a: unknown pack format"
+msgstr ""
+
+#: guix/scripts/weather.scm:74
+msgid "computing ~h package derivations for ~a...~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:110
+msgid "looking for ~h store items on ~a...~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:120
+msgid "  ~2,1f% substitutes available (~h out of ~h)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:126
+#, scheme-format
+msgid "  unknown substitute sizes~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:129
+msgid "  ~,1h MiB of nars (compressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:130
+msgid "  at least ~,1h MiB of nars (compressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:132
+msgid "  ~,1h MiB on disk (uncompressed)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:134
+msgid "  ~,3h seconds per request (~,1h seconds in total)~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:136
+msgid "  ~,1h requests per second~%"
+msgstr ""
+
+#: guix/scripts/weather.scm:145
+msgid ""
+"Usage: guix weather [OPTIONS]\n"
+"Report the availability of substitutes.\n"
+msgstr ""
+
+#: guix/scripts/weather.scm:147
+msgid ""
+"\n"
+"      --substitute-urls=URLS\n"
+"                         check for available substitutes at URLS"
+msgstr ""
+
+#: guix/scripts/weather.scm:150
+msgid ""
+"\n"
+"  -m, --manifest=MANIFEST\n"
+"                         look up substitutes for packages specified in MANIFEST"
+msgstr ""
+
+#: guix/scripts/weather.scm:153
+msgid ""
+"\n"
+"  -s, --system=SYSTEM    consider substitutes for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+
+#: guix/scripts/weather.scm:177
+#, scheme-format
+msgid "~a: invalid URL~%"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:567
+msgid "Updater for GNU packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:576
+msgid "Updater for GNU packages only available via FTP"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:585
+msgid "Updater for KDE packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:592
+msgid "Updater for X.org packages"
+msgstr ""
+
+#: guix/gnu-maintenance.scm:599
+msgid "Updater for packages hosted on kernel.org"
+msgstr ""
+
+#: guix/scripts/container.scm:25
+msgid ""
+"Usage: guix container ACTION ARGS...\n"
+"Build and manipulate Linux containers.\n"
+msgstr ""
+
+#: guix/scripts/container.scm:30
+msgid "   exec            execute a command inside of an existing container\n"
+msgstr ""
+
+#: guix/scripts/container.scm:53
+#, scheme-format
+msgid "guix container: missing action~%"
+msgstr ""
+
+#: guix/scripts/container.scm:63
+#, scheme-format
+msgid "guix container: invalid action~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:40
+msgid ""
+"Usage: guix container exec PID COMMAND [ARGS...]\n"
+"Execute COMMMAND within the container process PID.\n"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:69
+#, scheme-format
+msgid "~a: extraneous argument~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:87
+#, scheme-format
+msgid "no pid specified~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:90
+#, scheme-format
+msgid "no command specified~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:93
+#, scheme-format
+msgid "no such process ~d~%"
+msgstr ""
+
+#: guix/scripts/container/exec.scm:105
+#, scheme-format
+msgid "exec failed with status ~d~%"
+msgstr ""
+
+#: guix/upstream.scm:249
+#, scheme-format
+msgid "signature verification failed for `~a'~%"
+msgstr ""
+
+#: guix/upstream.scm:251
+#, scheme-format
+msgid "(could be because the public key is not in your keyring)~%"
+msgstr ""
+
+#: guix/upstream.scm:330
+#, scheme-format
+msgid "~a: could not locate source file"
+msgstr ""
+
+#: guix/upstream.scm:335
+#, scheme-format
+msgid "~a: ~a: no `version' field in source; skipping~%"
+msgstr ""
+
+#: guix/ui.scm:159
+#, scheme-format
+msgid "~a: unbound variable"
+msgstr ""
+
+#: guix/ui.scm:235
+msgid "entering debugger; type ',bt' for a backtrace\n"
+msgstr ""
+
+#: guix/ui.scm:284
+#, scheme-format
+msgid "hint: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:294 guix/ui.scm:342 guix/ui.scm:349
+#, scheme-format
+msgid "failed to load '~a': ~a~%"
+msgstr ""
+
+#: guix/ui.scm:301
+#, scheme-format
+msgid "~amissing closing parenthesis~%"
+msgstr ""
+
+#: guix/ui.scm:306 guix/ui.scm:322 guix/ui.scm:596
+#, scheme-format
+msgid "~a: error: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:314
+msgid "Did you forget a @code{use-modules} form?"
+msgstr ""
+
+#: guix/ui.scm:316
+#, scheme-format
+msgid "Try adding @code{(use-modules ~a)}."
+msgstr ""
+
+#: guix/ui.scm:329 guix/ui.scm:657
+#, scheme-format
+msgid "exception thrown: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:333 guix/ui.scm:355
+#, scheme-format
+msgid "failed to load '~a':~%"
+msgstr ""
+
+#: guix/ui.scm:345
+#, scheme-format
+msgid "~a: warning: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:352
+#, scheme-format
+msgid "failed to load '~a': exception thrown: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:364
+#, scheme-format
+msgid "failed to install locale: ~a~%"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale.  Otherwise, do not translate "(C)"; leave it as-is.  */
+#: guix/ui.scm:394
+msgid "(C)"
+msgstr ""
+
+#: guix/ui.scm:395
+msgid "the Guix authors\n"
+msgstr ""
+
+#: guix/ui.scm:396
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+
+#. TRANSLATORS: The placeholder indicates the bug-reporting address for this
+#. package.  Please add another line saying "Report translation bugs to
+#. ...\n" with the address for translation bugs (typically your translation
+#. team's web or email address).
+#: guix/ui.scm:408
+#, scheme-format
+msgid ""
+"\n"
+"Report bugs to: ~a."
+msgstr ""
+
+#: guix/ui.scm:410
+#, scheme-format
+msgid ""
+"\n"
+"~a home page: <~a>"
+msgstr ""
+
+#: guix/ui.scm:412
+msgid ""
+"\n"
+"General help using GNU software: <http://www.gnu.org/gethelp/>"
+msgstr ""
+
+#: guix/ui.scm:457
+#, scheme-format
+msgid "'~a' is not a valid regular expression: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:463
+#, scheme-format
+msgid "~a: invalid number~%"
+msgstr ""
+
+#: guix/ui.scm:480
+#, scheme-format
+msgid "invalid number: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:503
+#, scheme-format
+msgid "unknown unit: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:520
+#, scheme-format
+msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:527
+#, scheme-format
+msgid "~a: ~a: build system `~a' does not support cross builds~%"
+msgstr ""
+
+#: guix/ui.scm:533
+#, scheme-format
+msgid "~s: invalid G-expression input~%"
+msgstr ""
+
+#: guix/ui.scm:536
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr ""
+
+#: guix/ui.scm:539
+#, scheme-format
+msgid "generation ~a of profile '~a' does not exist~%"
+msgstr ""
+
+#: guix/ui.scm:548
+#, scheme-format
+msgid "   ... propagated from ~a@~a~%"
+msgstr ""
+
+#: guix/ui.scm:553
+#, scheme-format
+msgid "profile contains conflicting entries for ~a:~a~%"
+msgstr ""
+
+#: guix/ui.scm:556
+#, scheme-format
+msgid "  first entry: ~a@~a:~a ~a~%"
+msgstr ""
+
+#: guix/ui.scm:562
+#, scheme-format
+msgid "  second entry: ~a@~a:~a ~a~%"
+msgstr ""
+
+#: guix/ui.scm:573
+#, scheme-format
+msgid "corrupt input while restoring '~a' from ~s~%"
+msgstr ""
+
+#: guix/ui.scm:575
+#, scheme-format
+msgid "corrupt input while restoring archive from ~s~%"
+msgstr ""
+
+#: guix/ui.scm:578
+#, scheme-format
+msgid "failed to connect to `~a': ~a~%"
+msgstr ""
+
+#: guix/ui.scm:583
+#, scheme-format
+msgid "build failed: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:586
+#, scheme-format
+msgid "reference to invalid output '~a' of derivation '~a'~%"
+msgstr ""
+
+#: guix/ui.scm:590
+#, scheme-format
+msgid "file '~a' could not be found in these directories:~{ ~a~}~%"
+msgstr ""
+
+#: guix/ui.scm:607
+#, scheme-format
+msgid "~a: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:642
+#, scheme-format
+msgid "failed to read expression ~s: ~s~%"
+msgstr ""
+
+#: guix/ui.scm:648
+#, scheme-format
+msgid "failed to evaluate expression '~a':~%"
+msgstr ""
+
+#: guix/ui.scm:651
+#, scheme-format
+msgid "syntax error: ~a~%"
+msgstr ""
+
+#: guix/ui.scm:669
+#, scheme-format
+msgid "expression ~s does not evaluate to a package~%"
+msgstr ""
+
+#: guix/ui.scm:688
+msgid "at least ~,1h MB needed but only ~,1h MB available in ~a~%"
+msgstr ""
+
+#: guix/ui.scm:756
+#, scheme-format
+msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: "MB" is for "megabyte"; it should be
+#. translated to the corresponding abbreviation.
+#: guix/ui.scm:764
+msgid "~:[~,1h MB would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr ""
+
+#: guix/ui.scm:769
+#, scheme-format
+msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:776
+#, scheme-format
+msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: "MB" is for "megabyte"; it should be
+#. translated to the corresponding abbreviation.
+#: guix/ui.scm:784
+msgid "~:[~,1h MB will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr ""
+
+#: guix/ui.scm:789
+#, scheme-format
+msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:849
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:854
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:867
+#, scheme-format
+msgid "The following package would be downgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be downgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:872
+#, scheme-format
+msgid "The following package will be downgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be downgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:885
+#, scheme-format
+msgid "The following package would be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:890
+#, scheme-format
+msgid "The following package will be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:901
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:906
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
+msgstr[0] ""
+msgstr[1] ""
+
+#: guix/ui.scm:923
+msgid "<unknown location>"
+msgstr "<ubicación desconocida>"
+
+#: guix/ui.scm:1285
+#, scheme-format
+msgid "Generation ~a\t~a"
+msgstr ""
+
+#. TRANSLATORS: The word "current" here is an adjective for
+#. "Generation", as in "current generation".  Use the appropriate
+#. gender where applicable.
+#: guix/ui.scm:1295
+#, scheme-format
+msgid "~a\t(current)~%"
+msgstr ""
+
+#: guix/ui.scm:1338
+#, scheme-format
+msgid "switched from generation ~a to ~a~%"
+msgstr ""
+
+#: guix/ui.scm:1354
+#, scheme-format
+msgid "deleting ~a~%"
+msgstr ""
+
+#: guix/ui.scm:1385
+#, scheme-format
+msgid "Try `guix --help' for more information.~%"
+msgstr ""
+
+#: guix/ui.scm:1413
+msgid ""
+"Usage: guix COMMAND ARGS...\n"
+"Run COMMAND with ARGS.\n"
+msgstr ""
+
+#: guix/ui.scm:1416
+msgid "COMMAND must be one of the sub-commands listed below:\n"
+msgstr ""
+
+#: guix/ui.scm:1436
+#, scheme-format
+msgid "guix: ~a: command not found~%"
+msgstr ""
+
+#: guix/ui.scm:1466
+#, scheme-format
+msgid "guix: missing command name~%"
+msgstr ""
+
+#: guix/ui.scm:1474
+#, scheme-format
+msgid "guix: unrecognized option '~a'~%"
+msgstr ""
+
+#: guix/http-client.scm:269
+#, scheme-format
+msgid "following redirection to `~a'...~%"
+msgstr ""
+
+#: guix/http-client.scm:281
+#, scheme-format
+msgid "~a: HTTP download failed: ~a (~s)"
+msgstr ""
+
+#: guix/nar.scm:155
+msgid "signature is not a valid s-expression"
+msgstr ""
+
+#: guix/nar.scm:164
+msgid "invalid signature"
+msgstr "firma inválida"
+
+#: guix/nar.scm:168
+msgid "invalid hash"
+msgstr "hash inválido"
+
+#: guix/nar.scm:176
+msgid "unauthorized public key"
+msgstr ""
+
+#: guix/nar.scm:181
+msgid "corrupt signature data"
+msgstr ""
+
+#: guix/nar.scm:201
+msgid "corrupt file set archive"
+msgstr ""
+
+#: guix/nar.scm:211
+#, scheme-format
+msgid "importing file or directory '~a'...~%"
+msgstr ""
+
+#: guix/nar.scm:222
+#, scheme-format
+msgid "found valid signature for '~a'~%"
+msgstr ""
+
+#: guix/nar.scm:229
+msgid "imported file lacks a signature"
+msgstr ""
+
+#: guix/nar.scm:268
+msgid "invalid inter-file archive mark"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:66
+msgid "guix-daemon -- perform derivation builds and store accesses"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:68
+msgid "This program is a daemon meant to run in the background.  It serves requests sent over a Unix-domain socket.  It accesses the store, and builds derivations on behalf of its clients."
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:94
+msgid "SYSTEM"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:95
+msgid "assume SYSTEM as the current system type"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:96 nix/nix-daemon/guix-daemon.cc:99
+msgid "N"
+msgstr "N"
+
+#: nix/nix-daemon/guix-daemon.cc:97
+msgid "use N CPU cores to build each derivation; 0 means as many as available"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:100
+msgid "allow at most N build jobs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:101 nix/nix-daemon/guix-daemon.cc:103
+msgid "SECONDS"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:102
+msgid "mark builds as failed after SECONDS of activity"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:104
+msgid "mark builds as failed after SECONDS of silence"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:106
+msgid "disable chroot builds"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:107
+msgid "DIR"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:108
+msgid "add DIR to the build chroot"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:109
+msgid "GROUP"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:110
+msgid "perform builds as a user of GROUP"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:112
+msgid "do not use substitutes"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:113
+msgid "URLS"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:114
+msgid "use URLS as the default list of substitute providers"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:116
+msgid "do not use the 'build hook'"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:118
+msgid "cache build failures"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:120
+msgid "build each derivation N times in a row"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:122
+msgid "do not keep build logs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:124
+msgid "disable compression of the build logs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:129
+msgid "disable automatic file \"deduplication\" in the store"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:139
+msgid "impersonate Linux 2.6"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:143
+msgid "tell whether the GC must keep outputs of live derivations"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:146
+msgid "tell whether the GC must keep derivations corresponding to live outputs"
+msgstr ""
+
+#: nix/nix-daemon/guix-daemon.cc:149
+msgid "SOCKET"
+msgstr "SOCKET"
+
+#: nix/nix-daemon/guix-daemon.cc:150
+msgid "listen for connections on SOCKET"
+msgstr "escucha conexiones en SOCKET"
+
+#: nix/nix-daemon/guix-daemon.cc:152
+msgid "produce debugging output"
+msgstr "produce salida de depuración"
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 760a2e4c9b..aa5eaa66e7 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -60,6 +60,14 @@ test -L "$profile" && test -L "$profile-1-link"
 ! test -f "$profile-2-link"
 test -f "$profile/bin/guile"
 
+# Collisions are properly flagged (in this case, 'python-wrapper' propagates
+# python@3, which conflicts with python@2.)
+if guix package --bootstrap -n -p "$profile" -i python@2 python-wrapper
+then false; else true; fi
+
+guix package --bootstrap -n -p "$profile" -i python@2 python-wrapper \
+     --allow-collisions
+
 # No search path env. var. here.
 guix package -p "$profile" --search-paths
 guix package -p "$profile" --search-paths | grep '^export PATH='
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index 22ca2a05d4..0d07280b99 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -151,7 +151,13 @@
 ;; XXX: Skip this test when running Linux > 4.7.5 to work around
 ;; <https://bugzilla.kernel.org/show_bug.cgi?id=183461>.
 (when (or (not perform-container-tests?)
-          (version>? (utsname:release (uname)) "4.7.5"))
+          (version>? (utsname:release (uname)) "4.7.5")
+
+          ;; Skip on Ubuntu's 4.4 kernels, which contain a backport of the
+          ;; faulty code: <https://bugs.gnu.org/25476>.
+          (member (utsname:release (uname))
+                  '("4.4.0-21-generic" "4.4.0-59-generic"
+                    "4.4.0-116-generic")))
   (test-skip 1))
 (test-equal "pivot-root"
   #t
diff --git a/tests/union.scm b/tests/union.scm
index b63edc757b..aa95cae001 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -124,6 +124,46 @@
                 ;; new 'bin' sub-directory in the profile.
                 (eq? 'directory (stat:type (lstat "bin"))))))))
 
+(test-assert "union-build collision first & last"
+  (let* ((guile   (package-derivation %store %bootstrap-guile))
+         (fake    (build-expression->derivation
+                   %store "fake-guile"
+                   '(begin
+                      (use-modules (guix build utils))
+                      (let ((out (assoc-ref %outputs "out")))
+                        (mkdir-p (string-append out "/bin"))
+                        (call-with-output-file (string-append out "/bin/guile")
+                          (const #t))))
+                   #:modules '((guix build utils))))
+         (builder (lambda (policy)
+                    `(begin
+                       (use-modules (guix build union)
+                                    (srfi srfi-1))
+                       (union-build (assoc-ref %outputs "out")
+                                    (map cdr %build-inputs)
+                                    #:resolve-collision ,policy))))
+         (drv1
+          (build-expression->derivation %store "union-first"
+                                        (builder 'first)
+                                        #:inputs `(("guile" ,guile)
+                                                   ("fake" ,fake))
+                                        #:modules '((guix build union))))
+         (drv2
+          (build-expression->derivation %store "union-last"
+                                        (builder 'last)
+                                        #:inputs `(("guile" ,guile)
+                                                   ("fake" ,fake))
+                                        #:modules '((guix build union)))))
+    (and (build-derivations %store (list drv1 drv2))
+         (with-directory-excursion (derivation->output-path drv1)
+           (string=? (readlink "bin/guile")
+                     (string-append (derivation->output-path guile)
+                                    "/bin/guile")))
+         (with-directory-excursion (derivation->output-path drv2)
+           (string=? (readlink "bin/guile")
+                     (string-append (derivation->output-path fake)
+                                    "/bin/guile"))))))
+
 (test-assert "union-build #:create-all-directories? #t"
   (let* ((build  `(begin
                     (use-modules (guix build union))