summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-07-30 18:08:28 +0200
committerMarius Bakke <mbakke@fastmail.com>2018-07-30 18:08:28 +0200
commit869250809bddcf8eab26ecdedabad6fc060751dd (patch)
tree2108049faa07fd2b79d679799fa51ce8a2e5612a /gnu
parentf419abea22fe5dd3aa96c19990316e502157350b (diff)
parentf475b90c353deff5b848753bf88c855f481f1ec0 (diff)
downloadguix-869250809bddcf8eab26ecdedabad6fc060751dd.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/linux-modules.scm36
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/agda.scm30
-rw-r--r--gnu/packages/android.scm106
-rw-r--r--gnu/packages/bioinformatics.scm59
-rw-r--r--gnu/packages/bootloaders.scm5
-rw-r--r--gnu/packages/check.scm26
-rw-r--r--gnu/packages/ci.scm4
-rw-r--r--gnu/packages/cran.scm35
-rw-r--r--gnu/packages/databases.scm9
-rw-r--r--gnu/packages/docker.scm43
-rw-r--r--gnu/packages/emacs.scm46
-rw-r--r--gnu/packages/finance.scm41
-rw-r--r--gnu/packages/games.scm60
-rw-r--r--gnu/packages/haskell.scm45
-rw-r--r--gnu/packages/java.scm5
-rw-r--r--gnu/packages/libreoffice.scm7
-rw-r--r--gnu/packages/linux.scm16
-rw-r--r--gnu/packages/maths.scm2
-rw-r--r--gnu/packages/messaging.scm29
-rw-r--r--gnu/packages/parallel.scm6
-rw-r--r--gnu/packages/patches/libreoffice-glm.patch58
-rw-r--r--gnu/packages/patches/python-dendropy-fix-tests.patch41
-rw-r--r--gnu/packages/perl.scm24
-rw-r--r--gnu/packages/python.scm24
-rw-r--r--gnu/packages/ssh.scm4
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm5
-rw-r--r--gnu/packages/virtualization.scm53
-rw-r--r--gnu/packages/xdisorg.scm26
-rw-r--r--gnu/services/ssh.scm22
-rw-r--r--gnu/system/linux-initrd.scm26
-rw-r--r--gnu/system/mapped-devices.scm29
33 files changed, 579 insertions, 351 deletions
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index 2ee2f1771f..9c8761527a 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -21,6 +21,7 @@
   #:use-module (guix elf)
   #:use-module (guix glob)
   #:use-module (guix build syscalls)
+  #:use-module ((guix build utils) #:select (find-files))
   #:use-module (rnrs io ports)
   #:use-module (rnrs bytevectors)
   #:use-module (srfi srfi-1)
@@ -33,6 +34,8 @@
             module-aliases
             module-dependencies
             normalize-module-name
+            file-name->module-name
+            find-module-file
             recursive-module-dependencies
             modules-loaded
             module-loaded?
@@ -130,6 +133,39 @@ underscores."
 and normalizing it."
   (normalize-module-name (basename file ".ko")))
 
+(define (find-module-file directory module)
+  "Lookup module NAME under DIRECTORY, and return its absolute file name.
+NAME can be a file name with or without '.ko', or it can be a module name.
+Return #f if it could not be found.
+
+Module names can differ from file names in interesting ways; for instance,
+module names usually (always?) use underscores as the inter-word separator,
+whereas file names often, but not always, use hyphens.  Examples:
+\"usb-storage.ko\", \"serpent_generic.ko\"."
+  (define names
+    ;; List of possible file names.  XXX: It would of course be cleaner to
+    ;; have a database that maps module names to file names and vice versa,
+    ;; but everyone seems to be doing hacks like this one.  Oh well!
+    (map ensure-dot-ko
+         (delete-duplicates
+          (list module
+                (normalize-module-name module)
+                (string-map (lambda (chr) ;converse of 'normalize-module-name'
+                              (case chr
+                                ((#\_) #\-)
+                                (else chr)))
+                            module)))))
+
+  (match (find-files directory
+                     (lambda (file stat)
+                       (member (basename file) names)))
+    ((file)
+     file)
+    (()
+     #f)
+    ((_ ...)
+     (error "several modules by that name" module directory))))
+
 (define* (recursive-module-dependencies files
                                         #:key (lookup-module dot-ko))
   "Return the topologically-sorted list of file names of the modules depended
diff --git a/gnu/local.mk b/gnu/local.mk
index c8b42d1de1..9ae23d1a23 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -880,6 +880,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch		\
   %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
   %D%/packages/patches/libreoffice-icu.patch			\
+  %D%/packages/patches/libreoffice-glm.patch			\
   %D%/packages/patches/libsndfile-armhf-type-checks.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8362.patch		\
@@ -1062,7 +1063,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3-fix-tests.patch			\
   %D%/packages/patches/python-axolotl-AES-fix.patch		\
   %D%/packages/patches/python-cairocffi-dlopen-path.patch	\
-  %D%/packages/patches/python-dendropy-fix-tests.patch		\
   %D%/packages/patches/python-fix-tests.patch			\
   %D%/packages/patches/python-genshi-add-support-for-python-3.4-AST.patch	\
   %D%/packages/patches/python-genshi-buildable-on-python-2.7.patch	\
diff --git a/gnu/packages/agda.scm b/gnu/packages/agda.scm
index 6aa230116c..df4968c445 100644
--- a/gnu/packages/agda.scm
+++ b/gnu/packages/agda.scm
@@ -20,6 +20,7 @@
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-web)
+  #:use-module (guix build-system emacs)
   #:use-module (guix build-system haskell)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
@@ -67,6 +68,19 @@
        ("ghc-text" ,ghc-text)
        ("ghc-unordered-containers" ,ghc-unordered-containers)
        ("ghc-zlib" ,ghc-zlib)))
+    (arguments
+     `(#:modules ((guix build haskell-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'compile 'agda-compile
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (agda-compiler (string-append out "/bin/agda")))
+               (for-each (cut invoke agda-compiler <>)
+                         (find-files (string-append out "/share") "\\.agda$"))
+               #t))))))
     (home-page "http://wiki.portal.chalmers.se/agda/")
     (synopsis
      "Dependently typed functional programming language and proof assistant")
@@ -84,3 +98,19 @@ such as Coq, Epigram and NuPRL.")
     ;; Agda is distributed under the MIT license, and a couple of
     ;; source files are BSD-3.  See LICENSE for details.
     (license (list license:expat license:bsd-3))))
+
+(define-public emacs-agda2-mode
+  (package
+    (inherit agda)
+    (name "emacs-agda2-mode")
+    (build-system emacs-build-system)
+    (inputs '())
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-elisp-dir
+           (lambda _ (chdir "src/data/emacs-mode") #t)))))
+    (home-page "https://agda.readthedocs.io/en/latest/tools/emacs-mode.html")
+    (synopsis "Emacs mode for Agda")
+    (description "This Emacs mode enables interactive development with
+Agda.  It also aids the input of Unicode characters.")))
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 7618c0e1f6..53d7d8d441 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,13 +35,19 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages docker)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages selinux)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages ssh)
-  #:use-module (gnu packages version-control)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages virtualization)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages linux))
 
 (define-public android-make-stub
@@ -807,3 +814,100 @@ script that you can put anywhere in your path.")
 Boot Images.  @code{abootimg} can work directly on block devices, or, the
 safest way, on a file image.")
     (license license:gpl2+)))
+
+(define-public python-androguard
+  (package
+    (name "python-androguard")
+    (version "3.2.1")
+    (source
+      (origin
+        ;; The pypi release doesn't have the tests, but the tests use
+        ;; packaged binaries, so we skip them.
+        (method url-fetch)
+        (uri (pypi-uri "androguard" version))
+        (sha256
+         (base32
+          "0ndsw00pkyda4i2s3wi5ap8gbk6a9d23xhhxpdbk02padv8sxkfv"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           ;; Adapted from .travis.yml
+           (lambda _
+             (invoke "nosetests" "--with-coverage" "--with-timer"
+                     "--timer-top-n" "50"))))))
+    (native-inputs
+     `(("python-codecov" ,python-codecov)
+       ("python-coverage" ,python-coverage)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-nose-timer" ,python-nose-timer)))
+    (propagated-inputs
+     `(("python-asn1crypto" ,python-asn1crypto)
+       ("python-colorama" ,python-colorama)
+       ("python-future" ,python-future)
+       ("python-ipython" ,python-ipython)
+       ("python-lxml" ,python-lxml)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-networkx" ,python-networkx)
+       ("python-pygments" ,python-pygments)
+       ("python-pyperclip" ,python-pyperclip)))
+    (home-page "https://github.com/androguard/androguard")
+    (synopsis "Python tool to play with Android files")
+    (description
+     "Androguard is a full Python tool to manipulate Android files.  It is
+useful for reverse engineering, analysis of Android applications and more.")
+    (license license:asl2.0)))
+
+(define-public fdroidserver
+  (package
+    (name "fdroidserver")
+    (version "1.0.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "fdroidserver" version))
+        (sha256
+         (base32
+          "0cwb1fmindw6v9jkiim9yn3496rk1pvnk94s1r0vz2hxgz16xp7n"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-versioning
+           (lambda _
+             (substitute* "setup.py"
+               (("0.2.1") ,(package-version python-pyasn1-modules)))
+             #t)))))
+    (propagated-inputs
+     `(("python-androguard" ,python-androguard)
+       ("python-apache-libcloud" ,python-apache-libcloud)
+       ("python-clint" ,python-clint)
+       ("python-docker-py" ,python-docker-py)
+       ("python-gitpython" ,python-gitpython)
+       ("python-mwclient" ,python-mwclient)
+       ("python-paramiko" ,python-paramiko)
+       ("python-pillow" ,python-pillow)
+       ("python-pyasn1" ,python-pyasn1)
+       ("python-pyasn1-modules" ,python-pyasn1-modules)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-qrcode" ,python-qrcode)
+       ("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-requests" ,python-requests)
+       ("python-vagrant" ,python-vagrant)))
+    (native-inputs
+     `(("python-babel" ,python-babel)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-docker-pycreds" ,python-docker-pycreds)
+       ("python-pynacl" ,python-pynacl)
+       ("python-websocket-client" ,python-websocket-client)))
+    (home-page "https://f-droid.org")
+    (synopsis "F-Droid server tools")
+    (description
+     "The F-Droid server tools provide various scripts and tools that are used
+to maintain F-Droid, the repository of free Android applications.  You can use
+these same tools to create your own additional or alternative repository for
+publishing, or to assist in creating, testing and submitting metadata to the
+main repository.")
+    (license license:agpl3+)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index e87cef61be..849225bd78 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -767,6 +767,29 @@ into separate processes; and more.")
 (define-public python2-biopython
   (package-with-python2 python-biopython))
 
+(define-public python-fastalite
+  (package
+    (name "python-fastalite")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fastalite" version))
+       (sha256
+        (base32
+         "1qli6pxp77i9xn2wfciq2zaxhl82bdxb33cpzqzj1z25yd036wqj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ; Test data is not distributed.
+    (home-page "https://github.com/nhoffman/fastalite")
+    (synopsis "Simplest possible FASTA parser")
+    (description "This library implements a FASTA and a FASTQ parser without
+relying on a complex dependency tree.")
+    (license license:expat)))
+
+(define-public python2-fastalite
+  (package-with-python2 python-fastalite))
+
 (define-public bpp-core
   ;; The last release was in 2014 and the recommended way to install from source
   ;; is to clone the git repository, so we do this.
@@ -1948,15 +1971,18 @@ accessing bigWig files.")
 (define-public python-dendropy
   (package
     (name "python-dendropy")
-    (version "4.2.0")
+    (version "4.4.0")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "DendroPy" version))
+       ;; Source from GitHub so that tests are included.
+       (uri
+        (string-append "https://github.com/jeetsukumaran/DendroPy/archive/v"
+                       version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "15c7s3d5gf19ljsxvq5advaa752wfi7pwrdjyhzmg85hccyvp47p"))
-       (patches (search-patches "python-dendropy-fix-tests.patch"))))
+         "0v2fccny5xjaah546bsch1mw4kh61qq5frz2ibllxs9mp6ih9bsn"))))
     (build-system python-build-system)
     (home-page "http://packages.python.org/DendroPy/")
     (synopsis "Library for phylogenetics and phylogenetic computing")
@@ -1964,23 +1990,10 @@ accessing bigWig files.")
      "DendroPy is a library for phylogenetics and phylogenetic computing: reading,
 writing, simulation, processing and manipulation of phylogenetic
 trees (phylogenies) and characters.")
-    (license license:bsd-3)
-    (properties `((python2-variant . ,(delay python2-dendropy))))))
+    (license license:bsd-3)))
 
 (define-public python2-dendropy
-  (let ((base (package-with-python2 (strip-python2-variant python-dendropy))))
-    (package
-      (inherit base)
-      (arguments
-       `(#:python ,python-2
-         #:phases
-           (modify-phases %standard-phases
-             (replace 'check
-               ;; There is currently a test failure that only happens on some
-               ;; systems, and only using "setup.py test"
-               (lambda _ (zero? (system* "nosetests")))))))
-      (native-inputs `(("python2-nose" ,python2-nose)
-                       ,@(package-native-inputs base))))))
+  (package-with-python2 python-dendropy))
 
 (define-public python-py2bit
   (package
@@ -6046,7 +6059,13 @@ Cuffdiff or Ballgown programs.")
      `(("python-sqlalchemy" ,python2-sqlalchemy)
        ("python-decorator" ,python2-decorator)
        ("python-biopython" ,python2-biopython)
-       ("python-pandas" ,python2-pandas)))
+       ("python-pandas" ,python2-pandas)
+       ("python-psycopg2" ,python2-psycopg2)
+       ("python-fastalite" ,python2-fastalite)
+       ("python-pyyaml" ,python2-pyyaml)
+       ("python-six" ,python2-six)
+       ("python-jinja2" ,python2-jinja2)
+       ("python-dendropy" ,python2-dendropy)))
     (home-page "https://github.com/fhcrc/taxtastic")
     (synopsis "Tools for taxonomic naming and annotation")
     (description
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index de85ead174..e59d15c087 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -476,7 +476,10 @@ board-independent tools.")))
              `(("gcc-7" ,gcc-7)))
          ,@(package-native-inputs u-boot)))
       (arguments
-       `(#:modules ((ice-9 ftw) (guix build utils) (guix build gnu-build-system))
+       `(#:modules ((ice-9 ftw)
+                    (srfi srfi-1)
+                    (guix build utils)
+                    (guix build gnu-build-system))
          #:test-target "test"
          #:make-flags
          (list "HOSTCC=gcc"
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 42b90bc2b2..17a69bcd1c 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2017 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
@@ -1223,6 +1223,30 @@ testing frameworks.")
 (define-public python2-cov-core
  (package-with-python2 python-cov-core))
 
+(define-public python-codecov
+  (package
+    (name "python-codecov")
+    (version "2.0.15")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "codecov" version))
+        (sha256
+         (base32
+          "1217c0vqf7ii65635gvl27a5pfhv0r7zhrpdp9cx640hg73bgn4f"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-unittest2" ,python-unittest2)))
+    (propagated-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-requests" ,python-requests)))
+    (home-page "http://github.com/codecov/codecov-python")
+    (synopsis "Upload code coverage reports to @code{codecov.io}")
+    (description
+     "Codecov collects code coverage reports from code written in Python, Java,
+C/C++, R, and more, and uploads it to the @code{codecov.io} service.")
+    (license license:asl2.0)))
+
 (define-public python-testpath
   (package
     (name "python-testpath")
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 85dbefae7a..05353a790b 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -185,7 +185,7 @@ their dependencies.")
       (license l:gpl3+))))
 
 (define-public cuirass
-  (let ((commit "7b2f9e0de1ad2d320973b7aea132a8afcad8bece")
+  (let ((commit "99241ef1af24cadf39e3cad39f9ff27c96b22068")
         (revision "17"))
     (package
       (name "cuirass")
@@ -198,7 +198,7 @@ their dependencies.")
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "0knww99adgjh8s6f38z3hpwi9hxhmnvqj5g35pcj80xv8j4xj3y3"))))
+                  "1hj17s07sq6nn9wlssd4pi4hzdfyp74kyz5rqv7wr4468xh80pk7"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fc4baa5b54..106b8c7fe6 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -1686,14 +1686,14 @@ problems as well as resampling based estimators of prediction error.")
 (define-public r-psych
   (package
     (name "r-psych")
-    (version "1.7.8")
+    (version "1.8.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "psych" version))
        (sha256
         (base32
-         "0daismb8pdk392vdy304hqx0m3jx62gx3a0hygjygc125rhfla7k"))))
+         "1kzv9nc7rwn1sj1zxd8xrbs6c7qlka7j2c8lsr4f20znkd3qx8gf"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-foreign" ,r-foreign)
@@ -3467,37 +3467,6 @@ filtering functions, resampling routines, and visualization of filter models.
 It also includes interpolation functions.")
     (license license:gpl2)))
 
-(define-public r-psych
-  (package
-    (name "r-psych")
-    (version "1.8.4")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "psych" version))
-       (sha256
-        (base32
-         "1kzv9nc7rwn1sj1zxd8xrbs6c7qlka7j2c8lsr4f20znkd3qx8gf"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-foreign" ,r-foreign)
-       ("r-lattice" ,r-lattice)
-       ("r-mnormt" ,r-mnormt)
-       ("r-nlme" ,r-nlme)))
-    (home-page "http://cran.r-project.org/web/packages/psych")
-    (synopsis "Procedures for psychological, psychometric, and personality research")
-    (description
-     "This package provides a general purpose toolbox for personality,
-psychometric theory and experimental psychology.  The functions are primarily
-for multivariate analysis and scale construction using factor analysis,
-principal component analysis, cluster analysis and reliability analysis,
-although others provide basic descriptive statistics.  It provides functions
-for analyzing data at multiple levels within and between group statistics,
-including correlations and factor analysis; functions for simulating and
-testing particular item and test structures are included.  Several functions
-serve as a useful front end for structural equation modeling.")
-    (license license:gpl2+)))
-
 (define-public r-gsubfn
   (package
     (name "r-gsubfn")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index bd5102e027..4c9382ce6d 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -25,7 +25,7 @@
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
@@ -2473,14 +2473,14 @@ designed to be easy and intuitive to use.")
 (define-public python-psycopg2
   (package
     (name "python-psycopg2")
-    (version "2.7.3.1")
+    (version "2.7.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "psycopg2" version))
        (sha256
         (base32
-         "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
+         "17klx964gw8z0znl0raz3by8vdc7cq5gxj4pdcrfcina84nrdkzc"))))
     (build-system python-build-system)
     (arguments
      ;; Tests would require a postgresql database "psycopg2_test"
@@ -2491,7 +2491,8 @@ designed to be easy and intuitive to use.")
     (home-page "http://initd.org/psycopg/")
     (synopsis "Python PostgreSQL adapter")
     (description
-     "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
+     "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API
+2.0.")
     (license license:lgpl3+)))
 
 (define-public python2-psycopg2
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index f540417b4f..c58f3f3caa 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,20 +25,21 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system python)
   #:use-module (guix utils)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web))
 
 (define-public python-docker-py
   (package
     (name "python-docker-py")
-    (version "1.6.0")
+    (version "1.10.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "docker-py" version))
        (sha256
         (base32
-         "16ba4xyd46hkj9nkfpz15r8kskl7ljx1afjzchyrhdsrklvzgzim"))))
+         "05f49f6hnl7npmi7kigg0ibqk8s3fhzx1ivvz1kqvlv4ay3paajc"))))
     (build-system python-build-system)
     ;; TODO: Tests require a running Docker daemon.
     (arguments '(#:tests? #f))
@@ -103,3 +105,40 @@ multi-container Docker applications.  A Compose file is used to configure an
 application’s services.  Then, using a single command, the containers are
 created and all the services are started as specified in the configuration.")
     (license license:asl2.0)))
+
+(define-public python-docker-pycreds
+  (package
+    (name "python-docker-pycreds")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "docker-pycreds" version))
+        (sha256
+         (base32
+          "1zxvam1q22qb0jf48553nnncnfrcp88ag4xa0qmq6vr0imn9a3lb"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-versioning
+           (lambda _
+             (substitute* "test-requirements.txt"
+               (("3.0.2") ,(package-version python-pytest))
+               (("2.3.1") ,(package-version python-pytest-cov))
+               (("2.4.1") ,(package-version python-flake8)))
+             #t)))))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://github.com/shin-/dockerpy-creds")
+    (synopsis
+     "Python bindings for the Docker credentials store API")
+    (description
+     "Docker-Pycreds contains the Python bindings for the docker credentials
+store API.  It allows programmers to interact with a Docker registry using
+Python without keeping their credentials in a Docker configuration file.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 114fcee343..e607337fbf 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -8709,32 +8709,6 @@ region instead.")
 schema validation.")
     (license license:gpl3+)))
 
-(define-public emacs-load-relative
-  (let ((commit "738896e3da491b35399178ed2c6bc92cc728d119")
-        (revision "1"))
-    (package
-      (name "emacs-load-relative")
-      (version (string-append "0.0.1" "-" revision "."
-                              (string-take commit 7)))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/rocky/emacs-load-relative")
-               (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
-         (sha256
-          (base32
-           "1rpy5mfncncl6gqgg53d3g25g1700g4b9bivd4c0cfcv5dbxhp73"))))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/rocky/emacs-load-relative")
-      (synopsis "Relative loads for Emacs Lisp files")
-      (description "@code{load-relative} allows to write small Emacs
-functions or modules in a larger multi-file Emacs package and
-facilitate running from the source tree without having to install the
-code or fiddle with evil @code{load-path}.")
-      (license license:gpl3+))))
-
 (define-public emacs-rainbow-blocks
   (let ((commit "dd435d7bb34ff6f162a5f315df308b90b7e9f842"))
     (package
@@ -9653,26 +9627,6 @@ buffer.")
 downloading manager for Emacs.")
       (license license:gpl3+))))
 
-(define-public emacs-csv-mode
-  (package
-    (name "emacs-csv-mode")
-    (version "1.7")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
-                           version ".el"))
-       (sha256
-        (base32
-         "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
-    (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/csv-mode.html")
-    (synopsis "Major mode for editing comma or char separated values")
-    (description
-     "This package provides an Emacs CSV mode, a major mode for editing
-records in a generalized CSV (character-separated values) format.")
-    (license license:gpl3+)))
-
 (define-public emacs-helpful
   (package
     (name "emacs-helpful")
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 3ddaa76a4e..fd2a5af0cb 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
@@ -376,7 +376,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
        (uri (git-reference
              (url "https://github.com/monero-project/monero")
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (git-file-name name version))
        (patches (search-patches "monero-use-system-miniupnpc.patch"))
        (sha256
         (base32
@@ -470,7 +470,7 @@ Monero command line client and daemon.")
        (uri (git-reference
              (url "https://github.com/monero-project/monero-gui")
              (commit (string-append "v" version))))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (file-name (git-file-name name version))
        (sha256
         (base32
          "1cnrkwh7kp64lnzz1xfmkf1mhsgm5gls292gpqai3jr8jydpkahl"))))
@@ -478,12 +478,16 @@ Monero command line client and daemon.")
     (native-inputs
      `(("doxygen" ,doxygen)
        ("graphviz" ,graphviz)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
     (inputs
      `(("boost" ,boost)
        ("libunwind" ,libunwind)
        ("openssl" ,openssl)
-       ("qt" ,qt)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtquickcontrols" ,qtquickcontrols)
        ("readline" ,readline)
        ("unbound" ,unbound)))
     (propagated-inputs
@@ -518,6 +522,15 @@ Monero command line client and daemon.")
                 (string-append "\""(assoc-ref inputs "monero")
                                "/bin/monerod")))
              #t))
+         (add-after 'fix-monerod-path 'fix-qt-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((qttools  (assoc-ref inputs "qttools"))
+                    (lrelease (string-append qttools "/bin/lrelease"))
+                    (lupdate (string-append qttools "/bin/lupdate")))
+               (substitute* "monero-wallet-gui.pro"
+                 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease") lrelease)
+                 (("\\$\\$\\[QT_INSTALL_BINS\\]/lupdate") lupdate))
+               #t)))
          (replace 'build
            (lambda _
              (invoke "./build.sh")))
@@ -529,7 +542,23 @@ Monero command line client and daemon.")
              #t))
          (add-before 'install 'change-dir
            (lambda _
-             (chdir "build"))))))
+             (chdir "build")))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/monero-wallet-gui")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtdeclarative")))
+                 `("QML2_IMPORT_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/qml"))
+                         '("qtdeclarative" "qtgraphicaleffects"
+                           "qtquickcontrols"))))
+               #t))))))
     (home-page "https://getmonero.org/")
     (synopsis "Graphical user interface for the Monero currency")
     (description
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 33429dbc2a..5ed928f5b7 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
-;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
@@ -2957,7 +2957,7 @@ fullscreen, use F5 or Alt+Enter.")
 (define-public warzone2100
   (package
     (name "warzone2100")
-    (version "3.2.1")
+    (version "3.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/" name
@@ -2965,10 +2965,11 @@ fullscreen, use F5 or Alt+Enter.")
                                   ".tar.xz"))
               (sha256
                (base32
-                "1nd609s0g4sya3r4amhkz3f4dpdmm94vsd2ii76ap665a1nbfrhg"))))
+                "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--with-distributor=Guix")
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'link-tests-with-qt
            (lambda _
@@ -2976,24 +2977,22 @@ fullscreen, use F5 or Alt+Enter.")
                (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
                 (string-append prefix "$(QT5_LIBS) ")))
              #t))
-         (add-after 'unpack 'remove-reference-to-missing-file
-           (lambda _
-             (substitute* "icons/Makefile.in"
-               (("\\$\\(INSTALL_DATA\\) \\$\\(srcdir\\)/warzone2100.appdata.xml.*") ""))
-             #t))
-         (add-after 'unpack 'patch-for-qt5.8
+         (add-after 'unpack 'fix-ivis-linktest
            (lambda _
-             (substitute* "lib/widget/editbox.cpp"
-               (("== '\\\\0'")
-                "== QChar('\\0')"))
+             (substitute* "tests/ivis_linktest.cpp"
+               (("iV_DrawTextRotated.*;")
+                (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
+                               "100, 100, 0.0f, font_regular);")))
              #t)))))
-    (native-inputs `(("pkg-config" ,pkg-config)
+    (native-inputs `(("gettext" ,gettext-minimal)
+                     ("pkg-config" ,pkg-config)
                      ("unzip" ,unzip)
                      ("zip" ,zip)))
     (inputs `(("fontconfig" ,fontconfig)
               ("freetype" ,freetype)
               ("fribidi" ,fribidi)
               ("glew" ,glew)
+              ("harfbuzz" ,harfbuzz)
               ("libtheora" ,libtheora)
               ("libvorbis" ,libvorbis)
               ("libxrandr" ,libxrandr)
@@ -3002,7 +3001,6 @@ fullscreen, use F5 or Alt+Enter.")
               ("qtbase" ,qtbase)
               ("qtscript" ,qtscript)
               ("openssl" ,openssl)
-              ("quesoglc" ,quesoglc)
               ("sdl2" ,sdl2)))
     (home-page "http://wz2100.net")
     (synopsis "3D Real-time strategy and real-time tactics game")
@@ -4107,6 +4105,38 @@ laws of physics (Enigma’s special laws of physics, that is), controlling them
 with the mouse isn’t always trivial.")
     (license license:gpl2+)))
 
+(define-public chroma
+  (package
+    (name "chroma")
+    (version "1.15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "0nzm3j5wjazr1d6pkydqlc48sjf72hggq0hmx8mhq03114mmiir5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f)) ; no tests included
+    (inputs
+     `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
+       ("freetype" ,freetype)
+       ("ncurses" ,ncurses)
+       ("fontconfig" ,fontconfig)
+       ("libxft" ,libxft)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://level7.org.uk/chroma/")
+    (synopsis "Abstract puzzle game")
+    (description "Chroma is an abstract puzzle game. A variety of colourful
+shapes are arranged in a series of increasingly complex patterns, forming
+ fiendish traps that must be disarmed and mysterious puzzles that must be
+ manipulated in order to give up their subtle secrets. Initially so
+ straightforward that anyone can pick it up and begin to play, yet gradually
+ becoming difficult enough to tax even the brightest of minds.")
+    (license license:gpl2+)))
+
 (define-public fillets-ng
   (package
     (name "fillets-ng")
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 8d2dcba208..7f14c59450 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -9221,31 +9221,6 @@ connections.")
 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")
@@ -9303,26 +9278,6 @@ each constructor are represented using an n-ary product.")
 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")
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index e6a989d067..d2f4c9d05b 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1862,6 +1862,11 @@ new Date();"))
                   "test-generative-src"
                   "tools-namespace-src"))
                #t))
+           (add-after 'unpack 'fix-manifest-classpath
+             (lambda _
+               (substitute* "build.xml"
+                 (("<attribute name=\"Class-Path\" value=\".\"/>") ""))
+               #t))
            ;; The javadoc target is not built by default.
            (add-after 'build 'build-doc
              (lambda _
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index dc13be19d2..0fa04bdec7 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -665,14 +665,14 @@ from the old StarOffice (.sdc, .sdw, ...).")
 (define-public libwps
   (package
     (name "libwps")
-    (version "0.4.7")
+    (version "0.4.9")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/" name "/" name "/"
                           name "-" version "/" name "-" version ".tar.xz"))
       (sha256 (base32
-               "05xjb35y5ha9grgjqs3viaglq7ydsry1hzdvkm7y5b6f1disnb1g"))))
+               "08j9nxnrzxsnq35d9l824ad8w8az42fivaxn8ajl85dv6g3v1ghk"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -907,7 +907,8 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
       (sha256
        (base32
         "0vnmb231hyhxm7klaqd8vp3rmvix145bq8iqzv19jgl1yaqkxl21"))
-      (patches (search-patches "libreoffice-icu.patch"))))
+      (patches (search-patches "libreoffice-icu.patch"
+                               "libreoffice-glm.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 70615df93c..f1bf65d27a 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -404,8 +404,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.17.10")
-(define %linux-libre-hash "1ab349s18avigd2592i11pab4klqzzxy11a1zp16mb842d8chkj2")
+(define %linux-libre-version "4.17.11")
+(define %linux-libre-hash "0c0ryl8rnzizr0x2gj9kprj9wfjz536574fnn46r0ww3szrzdm78")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -413,8 +413,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.58")
-(define %linux-libre-4.14-hash "1ny2b5zmgvbxglpy88aicdxix2ygr1qmar2rgaa336czfjninwr5")
+(define %linux-libre-4.14-version "4.14.59")
+(define %linux-libre-4.14-hash "1mf22i8a71qs04x4wfqmm21clj4jnqia6rpk7jbh3r3vjfjjbd1d")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -423,14 +423,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.115"
-                    "12n3wwfz22hxqqy7bdchl894x5krylcd4vx65837w7rybnb5w2wj"
+  (make-linux-libre "4.9.116"
+                    "1v5138a5317ddrl0zvlip18586si68ccw6y5wdxgpkh8ixvcamy6"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.144"
-                    "1001nw9d51vbiisrjv5ffqigcwfs0r9gav2f8hkw9hzjw64nhanp"
+  (make-linux-libre "4.4.145"
+                    "1c8lcibc6f8194ix3paip30jb9cqvn4lni6jjskyrmavcfy4rlbp"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 68b07cad38..50de120e07 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3951,7 +3951,7 @@ reduction.")
      `(("boost" ,boost)
        ("glu" ,glu)
        ("mesa" ,mesa)
-       ("qt" ,qt)))
+       ("qtbase" ,qtbase)))
     (build-system cmake-build-system)
     (synopsis "Toolset for the mCRL2 formal specification language")
     (description
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index a34f744659..98a65dcd3d 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2016, 2017, 2018 Clément Lassieur <clement@lassieur.org>
@@ -1650,16 +1650,17 @@ notifications, and Python scripting support.")
     (version "0.3.0.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/QMatrixClient/libqmatrixclient/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/QMatrixClient/libqmatrixclient")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0yl7lw0s2z98xkxbklkb3i8xcd9af9qayl1zxl070d8ykl6ayqy3"))))
+         "03pxmr4wa818fgqddkr2fkwz6pda538x3ic9yq7c40x98zqf55w5"))))
     (build-system cmake-build-system)
     (inputs
-     `(("qt" ,qt)))
+     `(("qtbase" ,qtbase)))
     (arguments
      `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
        #:tests? #f)) ; No tests
@@ -1677,17 +1678,19 @@ QMatrixClient project.")
     (version "0.0.9.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/QMatrixClient/Quaternion/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/QMatrixClient/Quaternion")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0s2mpw11s2n21ds1spf94j1p2lj2px2bv5zxldlcx81ch0rb4ng8"))))
+         "0zrr4khbbdf5ziq65gi0cb1yb1d0y5rv18wld22w1x96f7fkmrib"))))
     (build-system cmake-build-system)
     (inputs
      `(("libqmatrixclient" ,libqmatrixclient)
-       ("qt" ,qt)))
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)))
     (arguments
      `(#:tests? #f ; No tests
        #:phases
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index cb27f49c07..a7fe44243a 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
@@ -48,7 +48,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20180622")
+    (version "20180722")
     (source
      (origin
       (method url-fetch)
@@ -56,7 +56,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1n91dnnl8d8pman20hr03l9qrpc9wm5hw32ph45xjs0bgp1nmk7j"))))
+        "06635p9w4kl0mvqlbgglsndl1zm06f65ckzrjl9p8n4cswf443fg"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/libreoffice-glm.patch b/gnu/packages/patches/libreoffice-glm.patch
new file mode 100644
index 0000000000..9e76cf1389
--- /dev/null
+++ b/gnu/packages/patches/libreoffice-glm.patch
@@ -0,0 +1,58 @@
+Fix build with GLM 0.9.9.
+
+This patch is an amalgamation of these upstream commits:
+
+https://github.com/LibreOffice/core/commit/953c4add8fd76d88f49a81ae4c21a1fdcc007e57
+https://github.com/LibreOffice/core/commit/5f1bf6598b5725ad1e50ae9f7ec7524cc8a834fa
+
+diff --git a/chart2/Library_chartcore.mk b/chart2/Library_chartcore.mk
+index 28bc87b89057..69d4c0552636 100644
+--- a/chart2/Library_chartcore.mk
++++ b/chart2/Library_chartcore.mk
+@@ -23,6 +23,12 @@ $(eval $(call gb_Library_add_defs,chartcore,\
+     -DOOO_DLLIMPLEMENTATION_CHARTVIEW \
+ ))
+ 
++ifeq ($(SYSTEM_GLM),TRUE)
++$(eval $(call gb_Library_add_defs,chartcore,\
++        -DGLM_ENABLE_EXPERIMENTAL \
++))
++endif
++
+ $(eval $(call gb_Library_set_precompiled_header,chartcore,$(SRCDIR)/chart2/inc/pch/precompiled_chartcore))
+ 
+ $(eval $(call gb_Library_use_externals,chartcore,\
+diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
+index c1f3cc5324e7..0b684c6185a9 100644
+--- a/vcl/Library_vcl.mk
++++ b/vcl/Library_vcl.mk
+@@ -49,6 +49,12 @@ $(eval $(call gb_Library_add_defs,vcl,\
+ 	-DENABLE_MERGELIBS=$(if $(MERGELIBS),1,0) \
+ ))
+ 
++ifeq ($(SYSTEM_GLM),TRUE)
++$(eval $(call gb_Library_add_defs,vcl,\
++        -DGLM_ENABLE_EXPERIMENTAL \
++))
++endif
++
+ $(eval $(call gb_Library_use_sdk_api,vcl))
+ 
+ $(eval $(call gb_Library_use_custom_headers,vcl,\
+diff --git a/vcl/Executable_icontest.mk b/vcl/Executable_icontest.mk
+index ce163303f8a4..8c917b71cd0e 100644
+--- a/vcl/Executable_icontest.mk
++++ b/vcl/Executable_icontest.mk
+@@ -19,6 +19,12 @@ $(eval $(call gb_Executable_use_externals,icontest,\
+ ))
+ endif
+ 
++ifeq ($(SYSTEM_GLM),TRUE)
++$(eval $(call gb_Executable_add_defs,icontest,\
++    -DGLM_ENABLE_EXPERIMENTAL \
++))
++endif
++
+ $(eval $(call gb_Executable_use_api,icontest,\
+     offapi \
+     udkapi \
diff --git a/gnu/packages/patches/python-dendropy-fix-tests.patch b/gnu/packages/patches/python-dendropy-fix-tests.patch
deleted file mode 100644
index 30ab618ff1..0000000000
--- a/gnu/packages/patches/python-dendropy-fix-tests.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-This patch fixes two test failures.  It was downloaded from:
-https://github.com/jeetsukumaran/DendroPy/commit/93f984bba7a6c588a28ca87f4e557ce283809453
-
-From 93f984bba7a6c588a28ca87f4e557ce283809453 Mon Sep 17 00:00:00 2001
-From: jeetsukumaran <jeetsukumaran@gmail.com>
-Date: Tue, 21 Feb 2017 16:41:01 -0500
-Subject: [PATCH] Update to Python 3 container and iteration semantics
-
----
- dendropy/dataio/newickreader.py | 3 ++-
- dendropy/datamodel/treemodel.py | 3 +++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/dendropy/dataio/newickreader.py b/dendropy/dataio/newickreader.py
-index 6dcf3c5..f978729 100644
---- a/dendropy/dataio/newickreader.py
-+++ b/dendropy/dataio/newickreader.py
-@@ -303,7 +303,8 @@ def tree_iter(self,
-                     taxon_symbol_map_fn=taxon_symbol_mapper.require_taxon_for_symbol)
-             yield tree
-             if tree is None:
--                raise StopIteration
-+                # raise StopIteration
-+                return
- 
-     def _read(self,
-             stream,
-diff --git a/dendropy/datamodel/treemodel.py b/dendropy/datamodel/treemodel.py
-index 0ecfe31..73146f0 100644
---- a/dendropy/datamodel/treemodel.py
-+++ b/dendropy/datamodel/treemodel.py
-@@ -772,6 +772,9 @@ def __hash__(self):
-     def __eq__(self, other):
-         return self is other
- 
-+    def __lt__(self, other):
-+        return id(self) < id(other)
-+
-     ###########################################################################
-     ### Basic Structure
- 
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index afbe5979db..493b7860bd 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -3166,30 +3166,6 @@ and alternative installers with the `installler` option.  But it's written in
 only about 40% as many lines of code and with zero non-core dependencies.")
     (license (package-license perl))))
 
-(define-public perl-extutils-depends
-  (package
-    (name "perl-extutils-depends")
-    (version "0.405")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "mirror://cpan/authors/id/X/XA/XAOC/ExtUtils-Depends-"
-             version
-             ".tar.gz"))
-       (sha256
-        (base32
-         "0b4ab9qmcihsfs2ajhn5qzg7nhazr68v3r0zvb7076smswd41mla"))))
-    (build-system perl-build-system)
-    (native-inputs
-     `(("perl-test-number-delta"
-        ,perl-test-number-delta)))
-    (home-page "http://search.cpan.org/dist/ExtUtils-Depends/")
-    (synopsis "Easily build XS extensions that depend on XS extensions")
-    (description "ExtUtils::Depends builds XS extensions that depend on XS
-extensions")
-    (license (package-license perl))))
-
 (define-public perl-extutils-installpaths
   (package
     (name "perl-extutils-installpaths")
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 10d8df7b0c..3b10f05e75 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1747,30 +1747,6 @@ matching them against a list of media-ranges.")
      `(#:tests? #f
        ,@(package-arguments python2-funcsigs)))))
 
-(define-public python-pafy
-  (package
-    (name "python-pafy")
-    (version "0.5.3.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "pafy" version))
-       (sha256
-        (base32
-         "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:tests? #f)) ; Currently pafy can not find itself in the tests
-    (propagated-inputs
-     ;; Youtube-dl is a python package which is imported in the file
-     ;; "backend_youtube_dl.py", therefore it needs to be propagated.
-     `(("youtube-dl" ,youtube-dl)))
-    (home-page "https://np1.github.io/pafy/")
-    (synopsis "Retrieve YouTube content and metadata")
-    (description
-     "@code{pafy} is a python library to retrieve YouTube content and metadata.")
-    (license license:lgpl3+)))
-
 (define-public python-py
   (package
     (name "python-py")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index cd92c62f58..faa09e94c3 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
@@ -232,7 +232,7 @@ TCP-forwarding.  It provides a flow control service for these channels.
 Additionally, various channel-specific options can be negotiated.")
    (license (license:non-copyleft "file://LICENSE"
                                "See LICENSE in the distribution."))
-   (home-page "http://www.openssh.org/")))
+   (home-page "https://www.openssh.com/")))
 
 (define-public guile-ssh
   (package
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 6cb3354204..3db5796b4c 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1579,7 +1579,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
 (define-public tig
   (package
     (name "tig")
-    (version "2.3.3")
+    (version "2.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1587,7 +1587,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
                     version "/tig-" version ".tar.gz"))
               (sha256
                (base32
-                "1skbhhj1narsnsff1azdylcy6xghxb18mzqysmipcyyvlv2i17fk"))))
+                "1f2qhpzbl7f35lsjcnx8lxzskha24m4frczsw78284jp7qcamdmn"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
@@ -1608,7 +1608,7 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
     (description
      "Tig is an ncurses text user interface for Git, primarily intended as
 a history browser.  It can also stage hunks for commit, or colorize the
-output of the 'git' command.")
+output of the @code{git} command.")
     (license license:gpl2+)))
 
 (define-public findnewest
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 3c28fb0787..9e6dba4175 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -27,6 +27,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1256,7 +1257,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.07.10")
+    (version "2018.07.29")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1264,7 +1265,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1rigah941k2drzx5qz937lk68gw9jrizj5lgd9f9znp0bgi2d0xd"))))
+                "18rszvvpw9zyqfjysydvl24jf0hlpfcd22fgqsijhsq7bznwr9jj"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index ebc57dc369..e4120de38f 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
@@ -76,8 +76,7 @@
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix git-download)
-  #:use-module ((guix licenses) #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+
-                                               asl2.0))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
@@ -227,7 +226,7 @@ the KVM kernel module in Linux.  When using KVM, QEMU can virtualize x86,
 server and embedded PowerPC, and S390 guests.")
 
     ;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
-    (license gpl2)
+    (license license:gpl2)
 
     ;; Several tests fail on MIPS; see <http://hydra.gnu.org/build/117914>.
     (supported-systems (delete "mips64el-linux" %supported-systems))))
@@ -337,7 +336,7 @@ system on a hypervisor.  Via GObject Introspection, the API is available in
 all common programming languages.  Vala bindings are also provided.")
     ;; The library files are released under LGPLv2.1 or later; the source
     ;; files in the "tools" directory are released under GPLv2+.
-    (license (list lgpl2.1+ gpl2+))))
+    (license (list license:lgpl2.1+ license:gpl2+))))
 
 (define-public lxc
   (package
@@ -382,7 +381,7 @@ all common programming languages.  Vala bindings are also provided.")
      "LXC is a userspace interface for the Linux kernel containment features.
 Through a powerful API and simple tools, it lets Linux users easily create and
 manage system or application containers.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libvirt
   (package
@@ -467,7 +466,7 @@ manage system or application containers.")
 capabilities of recent versions of Linux.  The library aims at providing long
 term stable C API initially for the Xen paravirtualization but should be able
 to integrate other virtualization mechanisms if needed.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libvirt-glib
   (package
@@ -515,7 +514,7 @@ three libraries:
 @item libvirt-gobject - GObjects for managing libvirt objects
 @end enumerate
 ")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public python-libvirt
   (package
@@ -550,7 +549,7 @@ three libraries:
     (synopsis "Python bindings to libvirt")
     (description "This package provides Python bindings to the libvirt
 virtualization library.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public python2-libvirt
   (package-with-python2 python-libvirt))
@@ -649,7 +648,7 @@ virtualization library.")
 virtual machines through libvirt.  It primarily targets KVM VMs, but also
 manages Xen and LXC (Linux containers).  It presents a summary view of running
 domains, their live performance and resource utilization statistics.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public criu
   (package
@@ -743,7 +742,7 @@ was frozen at.  The distinctive feature of the CRIU project is that it is
 mainly implemented in user space.")
     ;; The project is licensed under GPLv2; files in the lib/ directory are
     ;; LGPLv2.1.
-    (license (list gpl2 lgpl2.1))))
+    (license (list license:gpl2 license:lgpl2.1))))
 
 (define-public qmpbackup
   (package
@@ -765,7 +764,7 @@ mainly implemented in user space.")
     (description "qmpbackup is designed to create and restore full and
 incremental backups of running QEMU virtual machines via QMP, the QEMU
 Machine Protocol.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public lookingglass
   (package
@@ -813,7 +812,7 @@ monitor, keyboard or mouse.  It displays the VM's rendered contents on your main
 monitor/GPU.")
    ;; This package requires SSE instructions.
    (supported-systems '("i686-linux" "x86_64-linux"))
-   (license gpl2+)))
+   (license license:gpl2+)))
 
 (define-public runc
   (package
@@ -870,7 +869,7 @@ packaged according to the
 @uref{https://github.com/opencontainers/runtime-spec/blob/master/spec.md, Open
 Container Initiative (OCI) format} and is a compliant implementation of the
 Open Container Initiative specification.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public umoci
   (package
@@ -915,7 +914,7 @@ Open Container Initiative specification.")
     (description
      "@command{umoci} is a tool that allows for high-level modification of an
 Open Container Initiative (OCI) image layout and its tagged images.")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public skopeo
   (package
@@ -977,4 +976,26 @@ the image.
 @item Delete container images from a remote container registry.
 
 @end enumerate")
-    (license asl2.0)))
+    (license license:asl2.0)))
+
+(define-public python-vagrant
+  (package
+    (name "python-vagrant")
+    (version "0.5.15")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "python-vagrant" version))
+        (sha256
+         (base32
+          "1ikrh6canhcxg5y7pzmkcnnydikppv7s6sm9prfx90nk0ac8m6mg"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; tests involve running vagrant.
+    (home-page "https://github.com/todddeluca/python-vagrant")
+    (synopsis "Python bindings for Vagrant")
+    (description
+     "Python-vagrant is a Python module that provides a thin wrapper around the
+@code{vagrant} command line executable, allowing programmatic control of Vagrant
+virtual machines.")
+    (license license:expat)))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 2a8958d37f..59ac02f79f 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@@ -1476,3 +1476,27 @@ first.  Additionally, xss-lock uses the inhibition logic to lock the screen
 before the system goes to sleep.")
       (home-page "https://bitbucket.org/raymonad/xss-lock")
       (license license:expat))))
+
+(define-public python-pyperclip
+  (package
+    (name "python-pyperclip")
+    (version "1.6.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pyperclip" version))
+        (sha256
+         (base32
+          "1p505c23ji06r28k1y67siihsbdzdf1brhlqpyv9ams4gk9863pp"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; Not clear how to make tests pass.
+    (inputs
+     `(("xclip" ,xclip)
+       ("xsel" ,xsel)))
+    (home-page "https://github.com/asweigart/pyperclip")
+    (synopsis "Python clipboard module")
+    (description
+     "Pyperclip is a clipboard module for Python, handling copy/pasting from
+the X11 clipboard")
+    (license license:bsd-3)))
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index f158fdf01f..dd96ad6aec 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -289,6 +289,19 @@ The other options should be self-descriptive."
   ;; Boolean
   (x11-forwarding?       openssh-configuration-x11-forwarding?
                          (default #f))
+
+  ;; Boolean
+  (allow-agent-forwarding? openssh-configuration-allow-agent-forwarding?
+                           (default #t))
+
+  ;; Boolean
+  (allow-tcp-forwarding? openssh-configuration-allow-tcp-forwarding?
+                         (default #t))
+
+  ;; Boolean
+  (gateway-ports? openssh-configuration-gateway-ports?
+                         (default #f))
+
   ;; Boolean
   (challenge-response-authentication? openssh-challenge-response-authentication?
                                       (default #f))
@@ -418,6 +431,15 @@ of user-name/file-like tuples."
            (format port "X11Forwarding ~a\n"
                    #$(if (openssh-configuration-x11-forwarding? config)
                          "yes" "no"))
+           (format port "AllowAgentForwarding ~a\n"
+                   #$(if (openssh-configuration-allow-agent-forwarding? config)
+                         "yes" "no"))
+           (format port "AllowTcpForwarding ~a\n"
+                   #$(if (openssh-configuration-allow-tcp-forwarding? config)
+                         "yes" "no"))
+           (format port "GatewayPorts ~a\n"
+                   #$(if (openssh-configuration-gateway-ports? config)
+                         "yes" "no"))
            (format port "PidFile ~a\n"
                    #$(openssh-configuration-pid-file config))
            (format port "ChallengeResponseAuthentication ~a\n"
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index d73ebfd8d3..a5a111908f 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -108,34 +108,18 @@ the derivations referenced by EXP are automatically copied to the initrd."
 MODULES and taken from LINUX."
   (define build-exp
     (with-imported-modules (source-module-closure
-                            '((guix build utils)
-                              (gnu build linux-modules)))
+                            '((gnu build linux-modules)))
       #~(begin
-          (use-modules (ice-9 match) (ice-9 regex)
+          (use-modules (gnu build linux-modules)
                        (srfi srfi-1)
-                       (guix build utils)
-                       (gnu build linux-modules))
-
-          (define (string->regexp str)
-            ;; Return a regexp that matches STR exactly.
-            (string-append "^" (regexp-quote str) "$"))
+                       (srfi srfi-26))
 
           (define module-dir
             (string-append #$linux "/lib/modules"))
 
-          (define (lookup module)
-            (let ((name (ensure-dot-ko module)))
-              (match (find-files module-dir (string->regexp name))
-                ((file)
-                 file)
-                (()
-                 (error "module not found" name module-dir))
-                ((_ ...)
-                 (error "several modules by that name"
-                        name module-dir)))))
-
           (define modules
-            (let ((modules (map lookup '#$modules)))
+            (let* ((lookup  (cut find-module-file module-dir <>))
+                   (modules (map lookup '#$modules)))
               (append modules
                       (recursive-module-dependencies modules
                                                      #:lookup-module lookup))))
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index c452bdd894..af73dc608c 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -21,7 +21,7 @@
 (define-module (gnu system mapped-devices)
   #:use-module (guix gexp)
   #:use-module (guix records)
-  #:use-module (guix modules)
+  #:use-module ((guix modules) #:hide (file-name->module-name))
   #:use-module (guix i18n)
   #:use-module ((guix utils)
                 #:select (source-properties->location
@@ -33,7 +33,7 @@
   #:autoload   (gnu build file-systems) (find-partition-by-luks-uuid)
   #:autoload   (gnu build linux-modules)
                  (device-module-aliases matching-modules known-module-aliases
-                  normalize-module-name)
+                  normalize-module-name file-name->module-name)
   #:autoload   (gnu packages cryptsetup) (cryptsetup-static)
   #:autoload   (gnu packages linux) (mdadm-static)
   #:use-module (srfi srfi-1)
@@ -128,20 +128,25 @@ DEVICE must be a \"/dev\" file name."
       (const #f)))
 
   (when aliases
-    (let ((modules  (delete-duplicates
-                     (append-map (cut matching-modules <> aliases)
-                                 (device-module-aliases device))))
+    (let* ((modules  (delete-duplicates
+                      (append-map (cut matching-modules <> aliases)
+                                  (device-module-aliases device))))
 
-          ;; Module names (not file names) are supposed to use underscores
-          ;; instead of hyphens.  MODULES is a list of module names, whereas
-          ;; LINUX-MODULES is file names without '.ko', so normalize them.
-          (provided (map normalize-module-name linux-modules)))
-      (unless (every (cut member <> provided) modules)
+           ;; Module names (not file names) are supposed to use underscores
+           ;; instead of hyphens.  MODULES is a list of module names, whereas
+           ;; LINUX-MODULES is file names without '.ko', so normalize them.
+           (provided (map file-name->module-name linux-modules))
+           (missing  (remove (cut member <> provided) modules)))
+      (unless (null? missing)
+        ;; Note: What we suggest here is a list of module names (e.g.,
+        ;; "usb_storage"), not file names (e.g., "usb-storage.ko").  This is
+        ;; OK because we have machinery that accepts both the hyphen and the
+        ;; underscore version.
         (raise (condition
                 (&message
                  (message (format #f (G_ "you may need these modules \
 in the initrd for ~a:~{ ~a~}")
-                                  device modules)))
+                                  device missing)))
                 (&fix-hint
                  (hint (format #f (G_ "Try adding them to the
 @code{initrd-modules} field of your @code{operating-system} declaration, along
@@ -153,7 +158,7 @@ these lines:
    (initrd-modules (append (list~{ ~s~})
                            %base-initrd-modules)))
 @end example\n")
-                               modules)))
+                               missing)))
                 (&error-location
                  (location (source-properties->location location)))))))))