summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/admin.scm13
-rw-r--r--gnu/packages/bioinformatics.scm28
-rw-r--r--gnu/packages/cdrom.scm5
-rw-r--r--gnu/packages/commencement.scm3
-rw-r--r--gnu/packages/connman.scm7
-rw-r--r--gnu/packages/cups.scm10
-rw-r--r--gnu/packages/databases.scm16
-rw-r--r--gnu/packages/display-managers.scm21
-rw-r--r--gnu/packages/engineering.scm10
-rw-r--r--gnu/packages/fontutils.scm9
-rw-r--r--gnu/packages/ghostscript.scm7
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnustep.scm33
-rw-r--r--gnu/packages/guile-wm.scm206
-rw-r--r--gnu/packages/haskell-check.scm30
-rw-r--r--gnu/packages/haskell-web.scm25
-rw-r--r--gnu/packages/haskell.scm8
-rw-r--r--gnu/packages/java.scm18
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/lua.scm14
-rw-r--r--gnu/packages/messaging.scm2
-rw-r--r--gnu/packages/music.scm8
-rw-r--r--gnu/packages/openstack.scm6
-rw-r--r--gnu/packages/package-management.scm8
-rw-r--r--gnu/packages/photo.scm4
-rw-r--r--gnu/packages/regex.scm4
-rw-r--r--gnu/packages/syncthing.scm16
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/xdisorg.scm19
-rw-r--r--gnu/services/base.scm56
-rw-r--r--gnu/services/ssh.scm12
-rw-r--r--gnu/system/examples/vm-image.tmpl6
-rw-r--r--gnu/system/install.scm10
-rw-r--r--gnu/tests.scm6
-rw-r--r--gnu/tests/install.scm29
-rw-r--r--gnu/tests/nfs.scm6
36 files changed, 379 insertions, 298 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3250be5349..e97fa79ac9 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1081,7 +1081,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
 (define-public acpica
   (package
     (name "acpica")
-    (version "20150410")
+    (version "20171110")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1089,23 +1089,24 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0q1fjwkyw9x6gsva6fd0zbn7ly4fx0ha4853f416np9kf2irillw"))))
+                "08g83qvhfx04vzb3f3pfpkp0w601v6csjzdv7z1vjzz1k71h7yml"))))
     (build-system gnu-build-system)
     (native-inputs `(("flex" ,flex)
                      ("bison" ,bison)))
     (arguments
      '(#:make-flags (list (string-append "PREFIX=" %output)
+                          "CC=gcc"
                           "HOST=_LINUX"
                           "OPT_CFLAGS=-Wall -fno-strict-aliasing")
        #:tests? #f  ; no 'check' target.
        #:phases (modify-phases %standard-phases (delete 'configure))))
-    (home-page "http://acpica.org/")
+    (home-page "https://acpica.org/")
     (synopsis "Tools for the development and debug of ACPI tables")
     (description
-     "The ACPI Component Architecture (ACPICA) project provides an
+     "The ACPI Component Architecture (@dfn{ACPICA}) project provides an
 OS-independent reference implementation of the Advanced Configuration and
-Power Interface Specification (ACPI).  ACPICA code contains those portions of
-ACPI meant to be directly integrated into the host OS as a kernel-resident
+Power Interface Specification (@dfn{ACPI}).  ACPICA code contains those portions
+of ACPI meant to be directly integrated into the host OS as a kernel-resident
 subsystem, and a small set of tools to assist in developing and debugging ACPI
 tables.  This package contains only the user-space tools needed for ACPI table
 development, not the kernel implementation of ACPI.")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index f0b589b6c0..fedc8aec4c 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -421,31 +421,27 @@ computational cluster.")
 (define-public bedtools
   (package
     (name "bedtools")
-    (version "2.26.0")
+    (version "2.27.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://github.com/arq5x/bedtools2/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (uri (string-append "https://github.com/arq5x/bedtools2/releases/"
+                                  "download/v" version "/"
+                                  "bedtools-" version ".tar.gz"))
               (sha256
                (base32
-                "0xvri5hnp2iim1cx6mcd5d9f102p5ql41x69rd6106x1c17pinqm"))))
+                "0q6fsiz4s52yzxs6h2vxwq95fsi3n64wkpinkk05mfh4dmhybw74"))))
     (build-system gnu-build-system)
-    (native-inputs `(("python" ,python-2)))
-    (inputs `(("samtools" ,samtools)
-              ("zlib" ,zlib)))
     (arguments
      '(#:test-target "test"
+       #:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-               (for-each (lambda (file)
-                           (install-file file bin))
-                         (find-files "bin" ".*")))
-             #t)))))
+         (delete 'configure))))
+    (native-inputs `(("python" ,python-2)))
+    (inputs
+     `(("samtools" ,samtools)
+       ("zlib" ,zlib)))
     (home-page "https://github.com/arq5x/bedtools2")
     (synopsis "Tools for genome analysis and arithmetic")
     (description
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index ddc035c1b0..523158d553 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -413,7 +414,7 @@ graphical interface.")
 (define-public libcue
   (package
     (name "libcue")
-    (version "2.1.0")
+    (version "2.2.0")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -422,7 +423,7 @@ graphical interface.")
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
-               "1fradl3dx0pyy9rn1a0gak9gzgg40wax61f2s00zks7rwl0xv398"))))
+               "0y9808vbly1w6i3diaad9csjmmw6iaw572wjjr68ssqamsw193rj"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index f3afb28e18..676eec00c5 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -113,7 +113,8 @@
 
 (define file-boot0
   (package-with-bootstrap-guile
-   (package-with-explicit-inputs (package (inherit file)
+   (package-with-explicit-inputs (package
+                                   (inherit file)
                                    (name "file-boot0"))
                                  `(("make" ,gnu-make-boot0)
                                    ,@%bootstrap-inputs)
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index a2a5556fb8..25756019fd 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -139,15 +140,15 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.")
 (define-public cmst
   (package
     (name "cmst")
-    (version "2017.03.18")
+    (version "2017.09.19")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://github.com/andrew-bibb/cmst/releases/download/cmst-"
-             version "/cmst-" version ".tar.gz"))
+             version "/cmst-" version ".tar.xz"))
        (sha256
-        (base32 "16g9byxr1rkmrnzi6sjplpmkr8h6pqj7418jz30czqviw5qlkqwl"))))
+        (base32 "0dh4639n3l8a19svaagib41hdq5q7x70bnc28dmnwy4jflf38yrm"))))
     (inputs
      `(("qtbase" ,qtbase)))
     (native-inputs
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 4cb76b9181..bb2b88d9ff 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -47,14 +47,6 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages tls))
 
-;; Delay to avoid module circularity problems.
-(define ghostscript/cups
-  (delay
-    (package/inherit ghostscript
-      (name "ghostscript-with-cups")
-      (inputs `(("cups" ,cups-minimal)
-                ,@(package-inputs ghostscript))))))
-
 (define-public cups-filters
   (package
     (name "cups-filters")
@@ -147,7 +139,7 @@
        ("fontconfig"   ,fontconfig)
        ("freetype"     ,freetype)
        ("font-dejavu"  ,font-dejavu) ; also needed by test suite
-       ("ghostscript"  ,(force ghostscript/cups))
+       ("ghostscript"  ,ghostscript/cups)
        ("ijs"          ,ijs)
        ("dbus"         ,dbus)
        ("lcms"         ,lcms)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index bf071fb1c2..8f7e428729 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -1022,7 +1022,7 @@ extremely small.")
 (define-public perl-dbi
   (package
     (name "perl-dbi")
-    (version "1.636")
+    (version "1.637")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1030,7 +1030,7 @@ extremely small.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0v37vnr5p0bx396cj0lb5kb69jbryq2mspp602hbgd04gklxqzcg"))))
+                "1ikbsb6sb0bd2m1dqknl4vx7ikmnd41y0xq8np1l40g8jcjp2mr5"))))
     (build-system perl-build-system)
     (synopsis "Database independent interface for Perl")
     (description "This package provides an database interface for Perl.")
@@ -1148,7 +1148,7 @@ introspected and examined.")
 (define-public perl-dbix-class-schema-loader
   (package
     (name "perl-dbix-class-schema-loader")
-    (version "0.07046")
+    (version "0.07047")
     (source
      (origin
        (method url-fetch)
@@ -1156,7 +1156,7 @@ introspected and examined.")
                            "DBIx-Class-Schema-Loader-" version ".tar.gz"))
        (sha256
         (base32
-         "08cgn0dx42y9xsxas9np7s55a7qmy4kf6sfmx0jmk4hryvbapml3"))))
+         "06s2q6xj95600sdlfph57spjk2z1gjs4zwq5b7mz7d5izcxgnwb6"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-config-any" ,perl-config-any)
@@ -1204,7 +1204,7 @@ columns, primary keys, unique constraints and relationships.")
 (define-public perl-dbd-pg
   (package
     (name "perl-dbd-pg")
-    (version "3.5.3")
+    (version "3.7.0")
     (source
      (origin
        (method url-fetch)
@@ -1212,7 +1212,7 @@ columns, primary keys, unique constraints and relationships.")
                            "DBD-Pg-" version ".tar.gz"))
        (sha256
         (base32
-         "03m9w1cd0yyrbqwkwcl92j1cpmasmm69f3hwvcrlfsi5fnwsk63y"))))
+         "0nb4wmkhq1q9f4g42sxy1m3d0xjqd3plqkxpmzni43ygr5ch8vp3"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-dbi" ,perl-dbi)))
@@ -1276,7 +1276,7 @@ module, and nothing else.")
 (define-public perl-sql-abstract
   (package
     (name "perl-sql-abstract")
-    (version "1.81")
+    (version "1.84")
     (source
      (origin
        (method url-fetch)
@@ -1284,7 +1284,7 @@ module, and nothing else.")
                            "SQL-Abstract-" version ".tar.gz"))
        (sha256
         (base32
-         "17sgwq3mvqjhv3b77cnvrq60xgp8harjhlnvpwmxc914rqc5ckaz"))))
+         "0xayvgv6nic61jm3nhg41rzwgm8h83wfyazvpaks0z7asjillpv5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index 7c7a70e950..2f4a8c2d73 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -133,7 +134,7 @@ Qt-style API for Wayland clients.")
 (define-public sddm
   (package
     (name "sddm")
-    (version "0.16.0")
+    (version "0.17.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -142,7 +143,7 @@ Qt-style API for Wayland clients.")
                     "sddm-" version ".tar.xz"))
               (sha256
                (base32
-                "0fwf1wsdak5yglykfyq4wbx9g9gi079n8ncjrdynz17hwwiql4z9"))))
+                "0ch6rdppgy2vbzw0c2x9a4c6ry46vx7p6b76d8xbh2nvxh23xv0k"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -161,15 +162,15 @@ Qt-style API for Wayland clients.")
     (arguments
      `(#:configure-flags
        (list
-        ;; Currently doesn't do anything
-        ;; Option added by enable wayland greeters PR
+        ;; This option currently does nothing, but will presumably be enabled
+        ;; if/when <https://github.com/sddm/sddm/pull/616> is merged.
         "-DENABLE_WAYLAND=ON"
         "-DENABLE_PAM=ON"
         ;; Both flags are required for elogind support.
         "-DNO_SYSTEMD=ON" "-DUSE_ELOGIND=ON"
         "-DCONFIG_FILE=/etc/sddm.conf"
-        ;; Set path to /etc/login.defs
-        ;; Alternatively use -DUID_MIN and -DUID_MAX
+        ;; Set path to /etc/login.defs.
+        ;; An alternative would be to use -DUID_MIN and -DUID_MAX.
         (string-append "-DLOGIN_DEFS_PATH="
                        (assoc-ref %build-inputs "shadow")
                        "/etc/login.defs")
@@ -189,14 +190,6 @@ Qt-style API for Wayland clients.")
              (substitute* "CMakeLists.txt"
                (("/usr/bin/loginctl") (which "loginctl")))
              #t))
-         (add-before 'configure 'fix-qml-include
-           (lambda _
-             ;; Make sure QtQml is found when building the helper.
-             ;; See <https://github.com/sddm/sddm/pull/918>.
-             (substitute* "src/helper/CMakeLists.txt"
-               (("target_link_libraries\\(sddm-helper")
-                "target_link_libraries(sddm-helper Qt5::Qml"))
-             #t))
          (add-after 'install 'wrap-programs
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 5c36de1dd2..77b1386b53 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -693,6 +693,8 @@ language.")
                                (string-take commit 7))
                "-DCMAKE_BUILD_TYPE=Release"
                "-DKICAD_SKIP_BOOST=ON"; Use our system's boost library.
+               (string-append "-DCMAKE_INSTALL_LIBDIR="
+                              (assoc-ref %outputs "out") "/lib")
                "-DKICAD_SCRIPTING=ON"
                "-DKICAD_SCRIPTING_MODULES=ON"
                "-DKICAD_SCRIPTING_WXPYTHON=ON"
@@ -721,14 +723,6 @@ language.")
                    `("PYTHONPATH" ":" prefix (,path))
                    `("PATH" ":" prefix
                      (,(string-append python "/bin:")))))
-               #t))
-           (add-after 'wrap-program 'install-lib-3d
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (for-each
-                (lambda (file)
-                  (install-file file (string-append (assoc-ref outputs "out")
-                                                    "/lib")))
-                (find-files "." "^libkicad_3dsg.*"))
                #t)))))
       (native-inputs
        `(("boost" ,boost)
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 273f7f55cc..b6f1055cf7 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -563,13 +564,13 @@ generate bitmaps.")
 (define-public python2-ufolib
   (package
     (name "python2-ufolib")
-    (version "2.1.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ufoLib" version ".zip"))
        (sha256
-        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+        (base32 "07qy6mx7z0wi9a30lc2hj5i9q1gnz1n8l40dmjz2c19mj9s6mz9l"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
@@ -589,14 +590,14 @@ files.  UFO is a file format that stores fonts source files.")
 (define-public python2-defcon
   (package
     (name "python2-defcon")
-    (version "0.3.4")
+    (version "0.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "defcon" version ".zip"))
        (sha256
         (base32
-         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+         "03jlm2gy9lvbwj68kfdm43yaddwd634jwkdg4wf0jxx2s8mwbg22"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 72a737b013..0561387931 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -26,6 +26,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
   #:use-module (gnu packages perl)
@@ -260,6 +261,12 @@ output file formats and printers.")
               ("libxt" ,libxt)
               ,@(package-inputs ghostscript)))))
 
+(define-public ghostscript/cups
+  (package/inherit ghostscript
+    (name "ghostscript-with-cups")
+    (inputs `(("cups" ,cups-minimal)
+              ,@(package-inputs ghostscript)))))
+
 (define-public ijs
   (package
    (name "ijs")
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 91e2e3f245..bf0274aa9c 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -185,14 +185,14 @@ authentication and support for SSL3 and TLS.")
 (define-public gnurl
   (package
    (name "gnurl")
-   (version "7.56.1-2")
+   (version "7.57.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://gnunet.org/sites/default/files/"
                                 name "-" version ".tar.bz2"))
             (sha256
              (base32
-              "092lpwjdg0z5bbf6i331ydm49qy05xrb3vagggmpi8pl7v3zv88j"))))
+              "1dykh12mc241jnxcd8q5pm1yw9ras53ywyba9f9dy5cq39j2mk9c"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                             ; 1.5 MiB of man3 pages
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index 195249c435..a6adc697a0 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -34,7 +34,8 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (ice-9 match))
 
 (define-public gnustep-make
   (package
@@ -65,6 +66,7 @@ to easily create cross-compiled binaries.")
   (package
     (name "windowmaker")
     (version "0.95.8")
+    (synopsis "NeXTSTEP-like window manager")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -75,7 +77,10 @@ to easily create cross-compiled binaries.")
                 "12p8kljqgx5hnic0zvs5mxwp7kg21sb6qjagb2qw8ydvf5amrgwx"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 match))
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'pre-configure
            (lambda* (#:key outputs #:allow-other-keys)
@@ -97,14 +102,33 @@ to easily create cross-compiled binaries.")
                (substitute* "src/defaults.c"
                  (("len = strlen\\(text\\) \\+ 40;")
                   (string-append "len = strlen(text) + 107;"))))))
-         (add-after 'install 'wrap
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file
+                   (string-append xsessions "/windowmaker.desktop")
+                 (lambda (port)
+                  (format port "~
+                    [Desktop Entry]~@
+                    Name=Window Maker~@
+                    Comment=~a~@
+                    Exec=~a/bin/wmaker~@
+                    Type=Application~%"
+                          (string-map (match-lambda
+                                        (#\newline #\space)
+                                        (chr chr))
+                                      ,synopsis) %output))))
+             #t))
+         (add-after 'install-xsession 'wrap
             (lambda* (#:key outputs #:allow-other-keys)
               (let* ((out (assoc-ref outputs "out"))
                      (bin (string-append out "/bin")))
                 ;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
                 ;; etc., so make sure everything is in $PATH.
                 (wrap-program (string-append bin "/wmaker.inst")
-                              `("PATH" ":" prefix (,bin)))))))))
+                  `("PATH" ":" prefix (,bin)))))))))
     (inputs
      `(("libxmu" ,libxmu)
        ("libxft" ,libxft)
@@ -117,7 +141,6 @@ to easily create cross-compiled binaries.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "http://windowmaker.org/")
-    (synopsis "NeXTSTEP-like window manager")
     (description
      "Window Maker is an X11 window manager originally designed to provide
 integration support for the GNUstep Desktop Environment.  In every way
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index c28c4753cc..06c8399102 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Alex ter Weele <alex.ter.weele@gmail.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,118 +25,127 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages texinfo)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu))
 
 (define-public guile-xcb
-  (package
-    (name "guile-xcb")
-    (version "1.3")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "http://web.archive.org/web/20150803094848/"
-                                 "http://www.markwitmer.com/dist/guile-xcb-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "04dvbqdrrs67490gn4gkq9zk8mqy3mkls2818ha4p0ckhh0pm149"))))
-    (build-system gnu-build-system)
-    (arguments '(;; Parallel builds fail.
-                 #:parallel-build? #f
-
-                 #:configure-flags (list (string-append
-                                          "--with-guile-site-dir="
-                                          (assoc-ref %outputs "out")
-                                          "/share/guile/site/2.0")
-                                         (string-append
-                                          "--with-guile-site-ccache-dir="
-                                          (assoc-ref %outputs "out")
-                                          "/share/guile/site/2.0"))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.0)
-              ("xcb" ,xcb-proto)))
-    (home-page "http://www.markwitmer.com/guile-xcb/guile-xcb.html")
-    (synopsis "XCB bindings for Guile")
-    (description
-     "Guile-XCB implements the XCB protocol and provides all the tools
+  (let ((commit "db7d5a393cc37a56f66541b3f33938b40c6f35b3")
+        (revision "1"))
+    (package
+      (name "guile-xcb")
+      (version (git-version "1.3" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mwitmer/guile-xcb")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "16w4vgzbmnwih4bgfn8rw85ryfvzhc6hyly6bic9sd7hhc82rcnd"))))
+      (build-system gnu-build-system)
+      (arguments '(;; Parallel builds fail.
+                   #:parallel-build? #f
+                   #:configure-flags (list (string-append
+                                            "--with-guile-site-dir="
+                                            (assoc-ref %outputs "out")
+                                            "/share/guile/site/2.2")
+                                           (string-append
+                                            "--with-guile-site-ccache-dir="
+                                            (assoc-ref %outputs "out")
+                                            "/share/guile/site/2.2"))))
+      (native-inputs `(("pkg-config" ,pkg-config)
+                       ("texinfo" ,texinfo)))
+      (inputs `(("guile" ,guile-2.2)
+                ("xcb" ,xcb-proto)))
+      (home-page "https://github.com/mwitmer/guile-xcb")
+      (synopsis "XCB bindings for Guile")
+      (description
+       "Guile-XCB implements the XCB protocol and provides all the tools
 necessary to write X client code in Guile Scheme without any external
 dependencies.")
-    (license gpl3+)))
+      (license gpl3+))))
 
 (define-public guile-wm
-  (package
-    (name "guile-wm")
-    (version "1.0")
-    (synopsis "X11 window manager toolkit in Scheme")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://web.archive.org/web/20161005084324/"
-                                  "http://www.markwitmer.com/dist/guile-wm-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1l9qcz236jxvryndimjy62cf8zxf8i3f8vg3zpqqjhw15j9mdk3r"))))
-    (build-system gnu-build-system)
-    (arguments
-     `( ;; The '.scm' files go to $(datadir), so set that to the
-       ;; standard value.
-       #:configure-flags (list (string-append "--datadir="
-                                              (assoc-ref %outputs "out")
-                                              "/share/guile/site/2.0"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'set-go-directory
-          (lambda* (#:key outputs #:allow-other-keys)
-            ;; Install .go files to $out/share/guile/site/2.0.
-            (let ((out (assoc-ref outputs "out")))
-              (substitute* "module/Makefile.in"
-                (("^wmdir = .*$")
-                 (string-append "wmdir = " out
-                                "/share/guile/site/2.0\n"))))
-            #t))
-         (add-after 'install 'set-load-path
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             ;; Put Guile-XCB's and Guile-WM's modules in the
-             ;; search path of PROG.
-             (let* ((out  (assoc-ref outputs "out"))
-                    (prog (string-append out "/bin/guile-wm"))
-                    (mods (string-append
-                           out "/share/guile/site/2.0"))
-                    (xcb  (string-append
-                           (assoc-ref inputs "guile-xcb")
-                           "/share/guile/site/2.0")))
-               (wrap-program
-                   prog
-                 `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
-                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                   (,mods ,xcb))))
-             #t))
-         (add-after 'install 'install-xsession
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; add a .desktop file to xsessions
-             (let ((xsessions (string-append
-                               %output "/share/xsessions")))
-               (mkdir-p xsessions)
-               (call-with-output-file (string-append
-                                       xsessions "/guile-wm.desktop")
-                 (lambda (port)
-                   (format port
-                          "[Desktop Entry]~@
+  (let ((commit "f3c7b3be719f425ffb87265d34855a73366351be")
+        (revision "1"))
+    (package
+      (name "guile-wm")
+      (version (git-version "1.0" revision commit))
+      (synopsis "X11 window manager toolkit in Scheme")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/mwitmer/guile-wm")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "086dijnpl5dpglf70d6f9sizyakr313y7blpdjrmbi687j1x3qcl"))))
+      (build-system gnu-build-system)
+      (arguments
+       `( ;; The '.scm' files go to $(datadir), so set that to the
+         ;; standard value.
+         #:configure-flags (list (string-append "--datadir="
+                                                (assoc-ref %outputs "out")
+                                                "/share/guile/site/2.2"))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'set-go-directory
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Install .go files to $out/share/guile/site/2.2.
+               (let ((out (assoc-ref outputs "out")))
+                 (substitute* "module/Makefile.in"
+                   (("^wmdir = .*$")
+                    (string-append "wmdir = " out
+                                   "/share/guile/site/2.2\n"))))
+               #t))
+           (add-after 'install 'set-load-path
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; Put Guile-XCB's and Guile-WM's modules in the
+               ;; search path of PROG.
+               (let* ((out  (assoc-ref outputs "out"))
+                      (prog (string-append out "/bin/guile-wm"))
+                      (mods (string-append
+                             out "/share/guile/site/2.2"))
+                      (xcb  (string-append
+                             (assoc-ref inputs "guile-xcb")
+                             "/share/guile/site/2.2")))
+                 (wrap-program
+                     prog
+                   `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                     (,mods ,xcb))))
+               #t))
+           (add-after 'install 'install-xsession
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; add a .desktop file to xsessions
+               (let ((xsessions (string-append
+                                 %output "/share/xsessions")))
+                 (mkdir-p xsessions)
+                 (call-with-output-file (string-append
+                                         xsessions "/guile-wm.desktop")
+                   (lambda (port)
+                     (format port
+                             "[Desktop Entry]~@
                                     Name=~a~@
                                     Comment=~a~@
                                     Exec=~a/bin/guile-wm~@
                                     Type=Application~%"
-                          ,name ,synopsis %output))))
-             #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("guile" ,guile-2.0)
-              ("guile-xcb" ,guile-xcb)))
-    (home-page "http://www.markwitmer.com/guile-xcb/guile-wm.html")
-    (description
-     "Guile-WM is a simple window manager that's completely customizable—you
+                             ,name ,synopsis %output))))
+               #t)))))
+      (native-inputs `(("pkg-config" ,pkg-config)
+                       ("texinfo" ,texinfo)))
+      (inputs `(("guile" ,guile-2.2)
+                ("guile-xcb" ,guile-xcb)))
+      (home-page "https://github.com/mwitmer/guile-wm/releases")
+      (description
+       "Guile-WM is a simple window manager that's completely customizable—you
 have total control of what it does by choosing which modules to include.
 Included with it are a few modules that provide basic TinyWM-like window
 management, some window record-keeping, multi-monitor support, and emacs-like
 keymaps and minibuffer.  At this point, it's just enough to get you started.")
-    (license gpl3+)))
+      (license gpl3+))))
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 871e0b9790..6bcf6c9589 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -68,7 +68,7 @@ framework.")
 (define-public ghc-tasty-smallcheck
   (package
     (name "ghc-tasty-smallcheck")
-    (version "0.8.0.1")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
@@ -78,14 +78,14 @@ framework.")
              ".tar.gz"))
        (sha256
         (base32
-         "0yckfbz8na8ccyw2911i3a4hd3fdncclk3ng5343hs5cylw6y4sm"))))
+         "1n66ngzllf3xrlqykwszlkwsi96n5nkm7xbpfq7774vpvfnafjri"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-tasty" ,ghc-tasty)
        ("ghc-smallcheck" ,ghc-smallcheck)
        ("ghc-async" ,ghc-async)
        ("ghc-tagged" ,ghc-tagged)))
-    (home-page "http://documentup.com/feuerbach/tasty")
+    (home-page "https://documentup.com/feuerbach/tasty")
     (synopsis "SmallCheck support for the Tasty test framework")
     (description "This package provides SmallCheck support for the Tasty
 Haskell test framework.")
@@ -122,7 +122,7 @@ Haskell test framework.")
 (define-public ghc-tasty-golden
   (package
     (name "ghc-tasty-golden")
-    (version "2.3.0.2")
+    (version "2.3.1.1")
     (source
      (origin
        (method url-fetch)
@@ -132,7 +132,7 @@ Haskell test framework.")
              ".tar.gz"))
        (sha256
         (base32
-         "0n7nll1sx75n3lffwhgnjrxdn0jz1g0921z9mj193fxqw0wz8axh"))))
+         "0pcf5hsyp5mmbqn7krdm49jxpkjm6rb4j83j28f76h7q55dzm1wy"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-temporary" ,ghc-temporary)
@@ -147,10 +147,10 @@ Haskell test framework.")
      "https://github.com/feuerbach/tasty-golden")
     (synopsis "Golden tests support for tasty")
     (description
-     "This package provides support for 'golden testing'.  A golden test is an
-IO action that writes its result to a file.  To pass the test, this output
-file should be identical to the corresponding 'golden' file, which contains
-the correct result for the test.")
+     "This package provides support for 'golden testing'.  A @dfn{golden test}
+is an IO action that writes its result to a file.  To pass the test, this
+output file should be identical to the corresponding 'golden' file, which
+contains the correct result for the test.")
     (license license:expat)))
 
 ;; This package builds `clock` without tests, since the tests rely on tasty
@@ -284,7 +284,7 @@ test-framework.")
 (define-public ghc-tasty-rerun
   (package
     (name "ghc-tasty-rerun")
-    (version "1.1.7")
+    (version "1.1.8")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -292,7 +292,7 @@ test-framework.")
                     "tasty-rerun-" version ".tar.gz"))
               (sha256
                (base32
-                "18hz1xqinf59mzvd68ygj9333v0a32qxfcas7crn4iniq5zv71kj"))))
+                "0yg8cicfn3qaazvp4rbanzy3dyk95k3y1kkd4bykvkl9v4076788"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-mtl" ,ghc-mtl)
@@ -366,7 +366,7 @@ testing Unicode-related software.")
 (define-public ghc-quickcheck-io
   (package
     (name "ghc-quickcheck-io")
-    (version "0.1.2")
+    (version "0.2.0")
     (source
      (origin
        (method url-fetch)
@@ -376,7 +376,7 @@ testing Unicode-related software.")
              ".tar.gz"))
        (sha256
         (base32
-         "1kf1kfw9fsmly0rvzvdf6jvdw10qhkmikyj0wcwciw6wad95w9sh"))))
+         "08k4v7pkgjf30pv5j2dfv1gqv6hclxlniyq2sps8zq4zswcr2xzv"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-quickcheck" ,ghc-quickcheck)
@@ -455,7 +455,7 @@ reporting and test statistics output.")
 (define-public ghc-test-framework-hunit
   (package
     (name "ghc-test-framework-hunit")
-    (version "0.3.0.1")
+    (version "0.3.0.2")
     (source
      (origin
        (method url-fetch)
@@ -464,7 +464,7 @@ reporting and test statistics output.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "1h0h55kf6ff25nbfx1mhliwyknc0glwv3zi78wpzllbjbs7gvyfk"))))
+         "1y0b6vg8nfm43v90lxxcydhi6qlxhfy4vpxbzm5ic2w55bh8xjwm"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 0d4129f8fc..e43f20b843 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -95,7 +95,7 @@ for screen-scraping.")
 (define-public ghc-http-types
   (package
     (name "ghc-http-types")
-    (version "0.9")
+    (version "0.11")
     (source
      (origin
        (method url-fetch)
@@ -105,11 +105,14 @@ for screen-scraping.")
              ".tar.gz"))
        (sha256
         (base32
-         "0ny15jgm5skhs2yx6snr13lrnw19hwjgfygrpsmhib8wqa8cz8cc"))))
+         "08w30rf1i7kbh2j1iajqmj6yhhmglnb8kjggc8kdni3xahhrgcss"))))
     (build-system haskell-build-system)
-    (arguments `(#:tests? #f)) ; FIXME: Tests cannot find
-                               ; Blaze.Bytestring.Builder, which should be
-                               ; provided by ghc-blaze-builder.
+    (native-inputs
+     `(("ghc-doctest" ,ghc-doctest)
+       ("ghc-hspec" ,ghc-hspec)
+       ("ghc-quickcheck" ,ghc-quickcheck)
+       ("ghc-quickcheck-instances" ,ghc-quickcheck-instances)
+       ("hspec-discover" ,hspec-discover)))
     (inputs
      `(("ghc-case-insensitive" ,ghc-case-insensitive)
        ("ghc-blaze-builder" ,ghc-blaze-builder)
@@ -157,7 +160,7 @@ responses coming back.")
 (define-public ghc-http-client
   (package
     (name "ghc-http-client")
-    (version "0.5.6.1")
+    (version "0.5.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
@@ -165,7 +168,7 @@ responses coming back.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1v9bdb8dkhb5g6jl9azk86ig7ia8xh9arr64n7s8r94fp0vl6c1c"))))
+                "19cvnnfcjj2m3pgs6ivyjs21rw9wx5ynarh6hvb27a76cscai2fy"))))
     (build-system haskell-build-system)
     ;; Tests require access to the web.
     (arguments `(#:tests? #f))
@@ -198,7 +201,7 @@ for more user-friendly packages.")
 (define-public ghc-http-client-tls
   (package
     (name "ghc-http-client-tls")
-    (version "0.3.4.1")
+    (version "0.3.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
@@ -206,7 +209,7 @@ for more user-friendly packages.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1mbwdfn4hs8lcwml2l6xv4n068l9zlasyv6vwb2ylgm030pyv3xh"))))
+                "0n4mi8z77qaggfyq17z79cl304nf1f4h6gag60v4wjwghvmj7yn1"))))
     (build-system haskell-build-system)
     ;; Tests require Internet access
     (arguments `(#:tests? #f))
@@ -293,7 +296,7 @@ and HPACK.  Currently HTTP/2 16 framing and HPACK 10 is supported.")
 (define-public ghc-http-conduit
   (package
     (name  "ghc-http-conduit")
-    (version "2.2.3.1")
+    (version "2.2.4")
     (source
      (origin
        (method url-fetch)
@@ -301,7 +304,7 @@ and HPACK.  Currently HTTP/2 16 framing and HPACK 10 is supported.")
                            "http-conduit-" version "/" "http-conduit-"
                            version ".tar.gz"))
        (sha256 (base32
-                "03na2nbm9la0shlijvjyb5mpp1prfskk4jmjy8iz707r0731dbjk"))))
+                "1wcl3lpg4v1ylq9j77j9fmf6l9qbmp8dmj3a9829q19q6bbgza7l"))))
     (build-system haskell-build-system)
     ;; FIXME: `httpLbs TLS` in test-suite `test` fails with
     ;; ConnectionFailure getProtocolByName: does not exist (no such protocol
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 66ccbae7f4..95bb3811ca 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -7145,7 +7145,7 @@ Typical applications of Priority Search Queues include:
        ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)))
     (home-page "http://iki.fi/matti.niemenmaa/glob/")
     (synopsis "Haskell library matching glob patterns against file paths")
-    (description "This package providesa Haskell library for @dfn{globbing}:
+    (description "This package provides a Haskell library for @dfn{globbing}:
 matching patterns against file paths.")
     (license license:bsd-3)))
 
@@ -7985,14 +7985,14 @@ as well as a convenient Conduit module.")
 (define-public ghc-aws
   (package
     (name "ghc-aws")
-    (version "0.17.1")
+    (version "0.18")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "aws-" version "/aws-" version ".tar.gz"))
        (sha256 (base32
-                "1q4qh58vj8447a4fl88n3nkpdc4yv293qsh02w6zvszd6ch61yh7"))))
+                "0h7473wkvc5xjzx5fd5k5fp70rjq5gqmn1cpy95mswvvfsq3irxj"))))
     (build-system haskell-build-system)
     (arguments `(#:tests? #f)) ; Tests require AWS credentials.
     (inputs
@@ -8006,7 +8006,7 @@ as well as a convenient Conduit module.")
        ("ghc-cereal" ,ghc-cereal)
        ("ghc-conduit" ,ghc-conduit)
        ("ghc-conduit-extra" ,ghc-conduit-extra)
-       ("ghc-cryptohash" ,ghc-cryptohash)
+       ("ghc-cryptonite" ,ghc-cryptonite)
        ("ghc-data-default" ,ghc-data-default)
        ("ghc-http-conduit" ,ghc-http-conduit)
        ("ghc-http-types" ,ghc-http-types)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index c9fbbb0a45..0be488dec3 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1070,7 +1070,7 @@ bootstrapping purposes.")
     (license license:gpl2+)))
 
 (define-public icedtea-7
-  (let* ((version "2.6.11")
+  (let* ((version "2.6.12")
          (drop (lambda (name hash)
                  (origin
                    (method url-fetch)
@@ -1088,7 +1088,7 @@ bootstrapping purposes.")
                       version ".tar.xz"))
                 (sha256
                  (base32
-                  "1ibp6ybqnf8g7mbs45bkbv44dwz4h2w9gr4rh15yvr1m8lqkq1i0"))
+                  "0s0zh0mj1sab99kb516lsgq3859vsc951phc565gwix4l5g9zppk"))
                 (modules '((guix build utils)))
                 (snippet
                  '(substitute* "Makefile.in"
@@ -1498,25 +1498,25 @@ bootstrapping purposes.")
       (native-inputs
        `(("openjdk-src"
           ,(drop "openjdk"
-                 "1zhr4l9kxnbzghcsgjk3vmih9qpg1wrr9qry7fx04l97svp1ylhd"))
+                 "15qf3nfidgnigh2zny6djfp8bhfwjnwk9i06mxs2jbq6na953ql2"))
          ("corba-drop"
           ,(drop "corba"
-                 "108v15ncb2rnsyzgzncjlm1f57d1sv60zd9qbpas8kqmvpp8r0gz"))
+                 "1phvn8fyl5mw2n2sn97f17nm442k75xsz2023bfw4h66ywzkqhqy"))
          ("jaxp-drop"
           ,(drop "jaxp"
-                 "0zcpcmm3g1s7m31glrbw3ys7azi97ixcvbyxd40y9xzdja3jyr52"))
+                 "0j4ms6lmnfa2cwfh9yfqdfg1bnn3fc40ay4x6k8zqa8yvspik5w5"))
          ("jaxws-drop"
           ,(drop "jaxws"
-                 "1gkqm0p3sr8d0xpki3fhf7cvmgqxx8ambgl5f3jx2plfnhsg96d2"))
+                 "09sddj73k7n29s39hvdk14r130mvlknbxkpd2w58f34sq5sgpdrg"))
          ("jdk-drop"
           ,(drop "jdk"
-                 "1d9fjnzdx4m6gwkvmj2n097ag0mvkhm3lldaxjki8x8c6a5clknf"))
+                 "0q896zz8wyswmksy225q1k27nz3v3l27052dcvvpv20ryykz8yp7"))
          ("langtools-drop"
           ,(drop "langtools"
-                 "0zscdp9arcq7gr8j7jq4m75gq0w1i3ryxpdnrc8fl0msh4w2s2k5"))
+                 "0niicyfccim4a9is4akh87jd7wbl8jrazdaab957mcv9l1x3bnqc"))
          ("hotspot-drop"
           ,(drop "hotspot"
-                 "1y6vnssn5y50x27g4ypdb5wwpmi7zf7jdi8gqbymkwf6n8p5y1d6"))
+                 "1jw42qhbm3wfavk39304m53lmqipcllrvjqiab2f42mjs10i8gfx"))
          ("ant" ,ant-bootstrap)
          ("attr" ,attr)
          ("coreutils" ,coreutils)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index af4b63f278..381fff707d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -369,8 +369,8 @@ It has been modified to remove all non-free binary blobs.")
 (define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
 (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
 
-(define %linux-libre-version "4.14.3")
-(define %linux-libre-hash "1hs94lj2bryci4m75bfrhhj9aqrjpq6a57nhxic63zj6xjhi53l7")
+(define %linux-libre-version "4.14.4")
+(define %linux-libre-hash "1hl4n1jpqd05b7qnxbwjmbl2l5cgrh2spqsjq1fnihphmawjd3li")
 
 ;; linux-libre configuration for armhf-linux is derived from Debian armmp.  It
 ;; supports qemu "virt" machine and possibly a large number of ARM boards.
@@ -383,14 +383,14 @@ 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.66"
-                    "0k29i5wnljck4nwkzcjxjfzrddwifj2pb6zxqh7f522j9cw2g4zd"
+  (make-linux-libre "4.9.67"
+                    "1fr8h4g3j4ns0x33i36kgsgb175cdz9v530gx8sxcrbkd10i9i07"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.103"
-                    "1x2pyrjz8myja77nz0zg2k74yrcbiq7g1caqjnafbgc8qwh31fp8"
+  (make-linux-libre "4.4.104"
+                    "1971hphyqbzh80frkbidbqwhgk21r5p2a42bihjcd5kh3pssn4zl"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index d5f55b9631..3fd1c43d4a 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -173,21 +173,21 @@ language.")
 (define-public lua5.1-socket
   (package
     (name "lua5.1-socket")
-    (version "2.0.2")
+    (version "3.0-rc1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://files.luaforge.net/releases/"
-                                  "luasocket/luasocket/luasocket-"
-                                  version "/luasocket-" version ".tar.gz"))
+              (uri (string-append
+                    "https://github.com/diegonehab/luasocket/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "19ichkbc4rxv00ggz8gyf29jibvc2wq9pqjik0ll326rrxswgnag"))))
+                "0j8jx8bjicvp9khs26xjya8c495wrpb7parxfnabdqa5nnsxjrwb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
        (let ((out (assoc-ref %outputs "out")))
-         (list (string-append "INSTALL_TOP_SHARE=" out "/share/lua/5.1")
-               (string-append "INSTALL_TOP_LIB=" out "/lib/lua/5.1")))
+         (list (string-append "INSTALL_TOP=" out)))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index b6452c54c3..9525c9f5d1 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -875,7 +875,7 @@ instant messenger with audio and video chat capabilities.")
                (("TIMESTAMP") "\"\""))
              #t)))))
     (inputs
-     `(("ffmpeg" ,ffmpeg-3.3)
+     `(("ffmpeg" ,ffmpeg)
        ("filteraudio", filteraudio)
        ("glib" ,glib)
        ("gtk+" ,gtk+-2)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 479b4f9b2d..1aabe814be 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1811,7 +1811,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
 (define-public zynaddsubfx
   (package
     (name "zynaddsubfx")
-    (version "3.0.2")
+    (version "3.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1819,7 +1819,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
                     version "/zynaddsubfx-" version ".tar.bz2"))
               (sha256
                (base32
-                "09mr23lqc51r7gskry5b7hk84pghdpgn1s4vnrzvx7xpa21gvplm"))))
+                "1hfpiqdm337gl4ynkmmp2qss2m5z8mzqzjrbiyg6w1v4js7l9phi"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -2004,14 +2004,14 @@ computer's keyboard.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.8.4")
+    (version "0.8.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "17bbjfn94843g5q1h7xh23fwyazpfgg4fw6drrn5wgk2vx7qpkis"))))
+                "0anhsd3gg8cxbf31mn2mimf19ycbbxqvd7ldizk93yq2zfbzzqqa"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f)) ; no "check" target
     (inputs
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 31922833b7..90168ef70b 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2016, 2017 Clément Lassieur <clement@lassieur.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -849,14 +849,14 @@ permanence.")
 (define-public python-git-review
   (package
     (name "python-git-review")
-    (version "1.25.0")
+    (version "1.26.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "git-review" version))
        (sha256
         (base32
-         "07d1jn9ryff5j5ic6qj5pbk10m1ccmpllj0wyalrcms1q9yhlzh8"))))
+         "150b1zvm6favd1ad8yl2bilq7xkr4m1mw9510frh47f8ghfkqz28"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f ; tests require a running Gerrit server
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index ed6b5c29ac..e9f48ea89d 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -86,9 +86,9 @@
   ;; Latest version of Guix, which may or may not correspond to a release.
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
-  (let ((version "0.13.0")
-        (commit "3fb6464ba43141b671481ce5ba158b6e6d1badfe")
-        (revision 13))
+  (let ((version "0.14.0")
+        (commit "ad4953bc0ec1684c49c0934304c7ec200a0cd280")
+        (revision 1))
     (package
       (name "guix")
 
@@ -104,7 +104,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "0nx3nvr3myjhg7zyyrvxfs63ddmb7yv0ndzn1dq4gp2is65n3krr"))
+                  "0ngra4cb1kf3kwccslmhnvlr116drsnbqrsjniq1hrg5mqf6vf1b"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 8862bdfcb9..666058c9dc 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -65,14 +65,14 @@
 (define-public libraw
   (package
     (name "libraw")
-    (version "0.18.5")
+    (version "0.18.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.libraw.org/data/LibRaw-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0y519nlvl4bfnnxbwry35f6gbcv6jbbpd2lmiwv6pbyzv4a7saps"))))
+                "0fx5mwkg0rx37qgxnajc8g8i0mhc6822100ljay5g94aap5arf75"))))
     (build-system gnu-build-system)
     (home-page "https://www.libraw.org")
     (synopsis "Raw image decoder")
diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm
index 010111c037..4648a4d004 100644
--- a/gnu/packages/regex.scm
+++ b/gnu/packages/regex.scm
@@ -28,7 +28,7 @@
 (define-public re2
    (package
      (name "re2")
-     (version "2017-11-01")
+     (version "2017-12-01")
      (source (origin
                (method url-fetch)
                (uri
@@ -38,7 +38,7 @@
                (file-name (string-append name "-" version ".tar.gz"))
                (sha256
                 (base32
-                 "0r8p23wrqi5sdbh7990x8n1l0fqq3rkjcl6ikk55mpjxqlsm0v8a"))))
+                 "03gv50hv7yaspx3ls8g8l1yj8nszbc3mplhcf4cr95fcsxy7wyb2"))))
      (build-system gnu-build-system)
      (arguments
       `(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 615247f48d..170272222d 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -28,7 +28,7 @@
 (define-public syncthing
   (package
     (name "syncthing")
-    (version "0.14.40")
+    (version "0.14.41")
     (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
-                "044pjz3x3fgpbsbkzgf72ljpwvvsqfj8fm9cnz7l8293cw2ssq4f"))))
+                "1liarl09grcb0mlw20nlrmir2glxqlykv4l0z0f0gj2w1wk3qz8a"))))
     (build-system go-build-system)
     ;; The primary Syncthing executable goes to "out", while the auxiliary
     ;; server programs and utility tools go to "utils".  This reduces the size
@@ -711,8 +711,8 @@ run-time in Go.")
       (license asl2.0))))
 
 (define-public go-github-com-syndtr-goleveldb
-  (let ((commit "3c5717caf1475fd25964109a0fc640bd150fce43")
-        (revision "0"))
+  (let ((commit "549b6d6b1c0419617182954dd77770f2e2685ed5")
+        (revision "1"))
     (package
       (name "go-github-com-syndtr-goleveldb")
       (version (git-version "0.0.0" revision commit))
@@ -724,7 +724,7 @@ run-time in Go.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0wng25bw885ppiny9rz42kq0a7ddkym5zl0glb8rfk0m8dpvi1dd"))))
+                  "1hs8bsxyjfq9d7000i1jk8bq7p2ab8snz23air13aw5ra2ri36bq"))))
       (build-system go-build-system)
       (propagated-inputs
        `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
@@ -1506,8 +1506,8 @@ functions for normalizing Unicode strings.")
       (license bsd-3))))
 
 (define-public go-github-com-audriusbutkevicius-pfilter
-  (let ((commit "09b3cfdd04de89f0196caecb0b335d7149a6593a")
-        (revision "0"))
+  (let ((commit "56143fe9cebe95636de1275acf30fcca36a1383d")
+        (revision "1"))
     (package
       (name "go-github-com-audriusbutkevicius-pfilter")
       (version (git-version "0.0.0" revision commit))
@@ -1520,7 +1520,7 @@ functions for normalizing Unicode strings.")
           (file-name (git-file-name name version))
           (sha256
            (base32
-            "176g8dmi2i94bxpnpgvj3dv5y9hripi45kbrfvy2bk884hwbp1zq"))))
+            "0slzly2f2fczixavzh6wa69873va29ikxww4lbkvhyi85c4sc5ib"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/AudriusButkevicius/pfilter"))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 2aa082cfb5..d0948ab555 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -503,13 +503,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "0.19.0")
+    (version "0.20.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "08p8w50zciqlhgn3ab0wbbvi1zyg3x37r1gywq0z1allsij3v8hz"))))
+                "1md3llp6640dviv9bzyy7qzn3szxil38645cjqcg7hlcdknil4j5"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -557,7 +557,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "0lwxqz3r0fg3dy06fgba1dfs7n6ribc25z0rh5rqbl7mvy8hf8x7"))))
+                "126y6jg1nyd8js2jchl4dbmpg507hawaxnyw7510qh7vcidm1gya"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index acc2618e21..77b3f1fbe8 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -618,19 +618,18 @@ to find buttons, etc, on the screen to click on.")
 (define-public xlockmore
   (package
     (name "xlockmore")
-    (version "5.47")
+    (version "5.55")
     (source (origin
              (method url-fetch)
-             (uri (list (string-append
-                          "http://www.tux.org/~bagleyd/xlock/xlockmore-"
-                          version ".tar.xz")
-                        (string-append
-                          "http://www.tux.org/~bagleyd/xlock/xlockmore-old"
-                          "/xlockmore-" version
-                          "/xlockmore-" version ".tar.xz")))
+             (uri (list (string-append "http://sillycycle.com/xlock/"
+                                       name "-" version ".tar.xz")
+                        ;; Previous releases are moved to a subdirectory.
+                        (string-append "http://sillycycle.com/xlock/"
+                                       "recent-releases/"
+                                       name "-" version ".tar.xz")))
              (sha256
               (base32
-               "138d79b8zc2hambbr9fnxp3fhihlcljgqns04zf0kv2f53pavqwl"))))
+               "1y3f76rq2nd10fgi2rx81aj6pijglmm661vjsxi05hpg35dzmwfl"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--enable-appdefaultdir="
@@ -642,7 +641,7 @@ to find buttons, etc, on the screen to click on.")
        ("libXext" ,libxext)
        ("libXt" ,libxt)
        ("linux-pam" ,linux-pam)))
-    (home-page "http://www.tux.org/~bagleyd/xlockmore.html")
+    (home-page "http://sillycycle.com/xlockmore.html")
     (synopsis "Screen locker for the X Window System")
     (description
      "XLockMore is a classic screen locker and screen saver for the
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 11f55c588c..291dd63256 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -621,21 +621,23 @@ to add @var{device} to the kernel's entropy pool.  The service will fail if
 
 (define (unicode-start tty)
   "Return a gexp to start Unicode support on @var{tty}."
-
-  ;; We have to run 'unicode_start' in a pipe so that when it invokes the
-  ;; 'tty' command, that command returns TTY.
-  #~(begin
-      (let ((pid (primitive-fork)))
-        (case pid
-          ((0)
-           (close-fdes 0)
-           (dup2 (open-fdes #$tty O_RDONLY) 0)
-           (close-fdes 1)
-           (dup2 (open-fdes #$tty O_WRONLY) 1)
-           (execl #$(file-append kbd "/bin/unicode_start")
-                  "unicode_start"))
-          (else
-           (zero? (cdr (waitpid pid))))))))
+  (with-imported-modules '((guix build syscalls))
+    #~(let* ((fd (open-fdes #$tty O_RDWR))
+             (termios (tcgetattr fd)))
+        (define (set-utf8-input termios)
+          (set-field termios (termios-input-flags)
+                     (logior (input-flags IUTF8)
+                             (termios-input-flags termios))))
+
+        ;; See console_codes(4).
+        (display "\x1b%G" (fdes->outport fd))
+
+        (tcsetattr fd (tcsetattr-action TCSAFLUSH)
+                   (set-utf8-input termios))
+
+        ;; TODO: ioctl(fd, KDSKBMODE, K_UNICODE);
+        (close-fdes fd)
+        #t)))
 
 (define console-keymap-service-type
   (shepherd-service-type
@@ -674,11 +676,29 @@ to add @var{device} to the kernel's entropy pool.  The service will fail if
              (requirement (list (symbol-append 'term-
                                                (string->symbol tty))))
 
+             (modules '((guix build syscalls)     ;for 'tcsetattr'
+                        (srfi srfi-9 gnu)))       ;for 'set-field'
              (start #~(lambda _
+                        ;; It could be that mingetty is not fully ready yet,
+                        ;; which we check by calling 'ttyname'.
+                        (let loop ((i 10))
+                          (unless (or (zero? i)
+                                      (call-with-input-file #$device
+                                        (lambda (port)
+                                          (false-if-exception (ttyname port)))))
+                            (usleep 500)
+                            (loop (- i 1))))
+
                         (and #$(unicode-start device)
-                             (zero?
-                              (system* #$(file-append kbd "/bin/setfont")
-                                       "-C" #$device #$font)))))
+                             ;; 'setfont' returns EX_OSERR (71) when an
+                             ;; KDFONTOP ioctl fails, for example.  Like
+                             ;; systemd's vconsole support, let's not treat
+                             ;; this as an error.
+                             (case (status:exit-val
+                                    (system* #$(file-append kbd "/bin/setfont")
+                                             "-C" #$device #$font))
+                               ((0 71) #t)
+                               (else #f)))))
              (stop #~(const #t))
              (respawn? #f)))))
        tty+font))
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index b33ec946c6..301ba74041 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -304,7 +304,14 @@ The other options should be self-descriptive."
 
   ;; list of user-name/file-like tuples
   (authorized-keys       openssh-authorized-keys
-                         (default '())))
+                         (default '()))
+
+  ;; Boolean
+  ;; XXX: This should really be handled in an orthogonal way, for instance as
+  ;; proposed in <https://bugs.gnu.org/27155>.  Keep it internal/undocumented
+  ;; for now.
+  (%auto-start?          openssh-auto-start?
+                         (default #t)))
 
 (define %openssh-accounts
   (list (user-group (name "sshd") (system? #t))
@@ -445,7 +452,8 @@ of user-name/file-like tuples."
          (provision '(ssh-daemon))
          (start #~(make-forkexec-constructor #$openssh-command
                                              #:pid-file #$pid-file))
-         (stop #~(make-kill-destructor)))))
+         (stop #~(make-kill-destructor))
+         (auto-start? (openssh-auto-start? config)))))
 
 (define (openssh-pam-services config)
   "Return a list of <pam-services> for sshd with CONFIG."
diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl
index 056b439c5f..ce3653c8b4 100644
--- a/gnu/system/examples/vm-image.tmpl
+++ b/gnu/system/examples/vm-image.tmpl
@@ -26,8 +26,10 @@ partprobe, and then 2) resizing the filesystem with resize2fs.\n"))
 
   ;; Assuming /dev/sdX is the target hard disk, and "my-root" is
   ;; the label of the target root file system.
-  (bootloader (grub-configuration (target "/dev/sda")
-                                  (terminal-outputs '(console))))
+  (bootloader (bootloader-configuration
+               (bootloader grub-bootloader)
+               (target "/dev/sda")
+               (terminal-outputs '(console))))
   (file-systems (cons (file-system
                         (device "my-root")
                         (title 'label)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 78f2bf3a13..c2f73f7e8f 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -264,7 +265,10 @@ You have been warned.  Thanks for being so brave.\x1b[0m
                     ;; The root account is passwordless, so make sure
                     ;; a password is set before allowing logins.
                     (allow-empty-passwords? #f)
-                    (password-authentication? #t)))
+                    (password-authentication? #t)
+
+                    ;; Don't start it upfront.
+                    (%auto-start? #f)))
 
           ;; Since this is running on a USB stick with a overlayfs as the root
           ;; file system, use an appropriate cache configuration.
@@ -301,7 +305,9 @@ You have been warned.  Thanks for being so brave.\x1b[0m
     (host-name "gnu")
     (timezone "Europe/Paris")
     (locale "en_US.utf8")
-    (bootloader (grub-configuration (target "/dev/sda")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/sda")))
     (file-systems
      ;; Note: the disk image build code overrides this root file system with
      ;; the appropriate one.
diff --git a/gnu/tests.scm b/gnu/tests.scm
index 97b9cc5107..0caa922fdf 100644
--- a/gnu/tests.scm
+++ b/gnu/tests.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix gexp)
   #:use-module (guix utils)
   #:use-module (guix records)
+  #:use-module (gnu bootloader)
   #:use-module (gnu bootloader grub)
   #:use-module (gnu system)
   #:use-module (gnu system file-systems)
@@ -206,7 +208,9 @@ the system under test."
     (timezone "Europe/Berlin")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/sdX")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/sdX")))
     (file-systems (cons (file-system
                           (device "my-root")
                           (title 'label)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index 0e97de0a87..3ac4a579da 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,7 +61,9 @@
     (timezone "Europe/Paris")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
     (kernel-arguments '("console=ttyS0"))
     (file-systems (cons (file-system
                           (device "my-root")
@@ -343,7 +346,9 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.")
     (timezone "Europe/Paris")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/vda")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vda")))
     (kernel-arguments '("console=ttyS0"))
     (file-systems (cons (file-system
                           (device "my-root")
@@ -418,7 +423,9 @@ reboot\n")
     (timezone "Europe/Paris")
     (locale "en_US.utf8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
     (kernel-arguments '("console=ttyS0"))
     (file-systems (cons* (file-system
                            (device "my-root")
@@ -476,7 +483,9 @@ partition.  In particular, home directories must be correctly created (see
     (timezone "Europe/Paris")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
     (kernel-arguments '("console=ttyS0"))
     (file-systems (cons* (file-system
                            (device "root-fs")
@@ -552,7 +561,9 @@ where /gnu lives on a separate partition.")
     (timezone "Europe/Paris")
     (locale "en_US.utf8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
     (kernel-arguments '("console=ttyS0"))
     (initrd (lambda (file-systems . rest)
               ;; Add a kernel module for RAID-0 (aka. "stripe").
@@ -635,7 +646,9 @@ by 'mdadm'.")
     (timezone "Europe/Paris")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
 
     ;; Note: Do not pass "console=ttyS0" so we can use our passphrase prompt
     ;; detection logic in 'enter-luks-passphrase'.
@@ -762,7 +775,9 @@ build (current-guix) and then store a couple of full system images.")
     (timezone "Europe/Paris")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/vdb")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
     (kernel-arguments '("console=ttyS0"))
     (file-systems (cons (file-system
                           (device "my-root")
diff --git a/gnu/tests/nfs.scm b/gnu/tests/nfs.scm
index 889f578d01..d58cf7aefd 100644
--- a/gnu/tests/nfs.scm
+++ b/gnu/tests/nfs.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
 
 (define-module (gnu tests nfs)
   #:use-module (gnu tests)
+  #:use-module (gnu bootloader)
   #:use-module (gnu bootloader grub)
   #:use-module (gnu system)
   #:use-module (gnu system file-systems)
@@ -41,7 +43,9 @@
     (timezone "Europe/Berlin")
     (locale "en_US.UTF-8")
 
-    (bootloader (grub-configuration (target "/dev/sdX")))
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/sdX")))
     (file-systems %base-file-systems)
     (users %base-user-accounts)
     (packages (cons*