summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/file-systems.scm144
-rw-r--r--gnu/local.mk872
-rw-r--r--gnu/packages/bioinformatics.scm81
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/bootstrap.scm1
-rw-r--r--gnu/packages/compression.scm24
-rw-r--r--gnu/packages/dillo.scm63
-rw-r--r--gnu/packages/fltk.scm2
-rw-r--r--gnu/packages/java.scm113
-rw-r--r--gnu/packages/libusb.scm47
-rw-r--r--gnu/packages/linux.scm79
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/marst.scm43
-rw-r--r--gnu/packages/maths.scm6
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/openstack.scm29
-rw-r--r--gnu/packages/patches/openssh-CVE-2015-8325.patch31
-rw-r--r--gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch141
-rw-r--r--gnu/packages/python.scm10
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/ssh.scm3
-rw-r--r--gnu/packages/statistics.scm4
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm91
-rw-r--r--gnu/packages/webkit.scm8
-rw-r--r--gnu/services/base.scm32
-rw-r--r--gnu/system.scm34
-rw-r--r--gnu/system/file-systems.scm31
-rw-r--r--gnu/system/install.scm2
-rw-r--r--gnu/system/linux-initrd.scm10
-rw-r--r--gnu/system/mapped-devices.scm130
31 files changed, 1840 insertions, 215 deletions
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 58ccf599d6..f277cbfa34 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -32,8 +32,10 @@
   #:export (disk-partitions
             partition-label-predicate
             partition-uuid-predicate
+            partition-luks-uuid-predicate
             find-partition-by-label
             find-partition-by-uuid
+            find-partition-by-luks-uuid
             canonicalize-device-spec
 
             uuid->string
@@ -79,6 +81,11 @@
   "Bind-mount SOURCE at TARGET."
   (mount source target "" MS_BIND))
 
+
+;;;
+;;; Ext2 file systems.
+;;;
+
 (define-syntax %ext2-endianness
   ;; Endianness of ext2 file systems.
   (identifier-syntax (endianness little)))
@@ -136,6 +143,63 @@ if DEVICE does not contain an ext2 file system."
           #f
           (list->string (map integer->char bytes))))))
 
+
+;;;
+;;; LUKS encrypted devices.
+;;;
+
+;; The LUKS header format is described in "LUKS On-Disk Format Specification":
+;; <http://wiki.cryptsetup.googlecode.com/git/LUKS-standard/>.  We follow
+;; version 1.2.1 of this document.
+
+(define-syntax %luks-endianness
+  ;; Endianness of LUKS headers.
+  (identifier-syntax (endianness big)))
+
+(define-syntax %luks-header-size
+  ;; Size in bytes of the LUKS header, including key slots.
+  (identifier-syntax 592))
+
+(define %luks-magic
+  ;; The 'LUKS_MAGIC' constant.
+  (u8-list->bytevector (append (map char->integer (string->list "LUKS"))
+                               (list #xba #xbe))))
+
+(define (sub-bytevector bv start size)
+  "Return a copy of the SIZE bytes of BV starting from offset START."
+  (let ((result (make-bytevector size)))
+    (bytevector-copy! bv start result 0 size)
+    result))
+
+(define (read-luks-header file)
+  "Read a LUKS header from FILE.  Return the raw header on success, and #f if
+not valid header was found."
+  (call-with-input-file file
+    (lambda (port)
+      (let ((header (make-bytevector %luks-header-size)))
+        (match (get-bytevector-n! port header 0 (bytevector-length header))
+          ((? eof-object?)
+           #f)
+          ((? number? len)
+           (and (= len (bytevector-length header))
+                (let ((magic   (sub-bytevector header 0 6)) ;XXX: inefficient
+                      (version (bytevector-u16-ref header 6 %luks-endianness)))
+                  (and (bytevector=? magic %luks-magic)
+                       (= version 1)
+                       header)))))))))
+
+(define (luks-header-uuid header)
+  "Return the LUKS UUID from HEADER, as a 16-byte bytevector."
+  ;; 40 bytes are reserved for the UUID, but in practice, it contains the 36
+  ;; bytes of its ASCII representation.
+  (let ((uuid (sub-bytevector header 168 36)))
+    (string->uuid (utf8->string uuid))))
+
+
+;;;
+;;; Partition lookup.
+;;;
+
 (define (disk-partitions)
   "Return the list of device names corresponding to valid disk partitions."
   (define (partition? major minor)
@@ -167,42 +231,53 @@ if DEVICE does not contain an ext2 file system."
                      (loop (cons name parts))
                      (loop parts))))))))))
 
-(define (read-ext2-superblock* device)
-  "Like 'read-ext2-superblock', but return #f when DEVICE does not exist
-instead of throwing an exception."
-  (catch 'system-error
-    (lambda ()
-      (read-ext2-superblock device))
-    (lambda args
-      ;; When running on the hand-made /dev,
-      ;; 'disk-partitions' could return partitions for which
-      ;; we have no /dev node.  Handle that gracefully.
-      (if (= ENOENT (system-error-errno args))
-          (begin
-            (format (current-error-port)
-                    "warning: device '~a' not found~%" device)
-            #f)
-          (apply throw args)))))
-
-(define (partition-predicate field =)
-  "Return a predicate that returns true if the FIELD of an ext2 superblock is
-= to the given value."
-  (lambda (expected)
-    "Return a procedure that, when applied to a partition name such as \"sda1\",
+(define (ENOENT-safe proc)
+  "Wrap the one-argument PROC such that ENOENT errors are caught and lead to a
+warning and #f as the result."
+  (lambda (device)
+    (catch 'system-error
+      (lambda ()
+        (proc device))
+      (lambda args
+        ;; When running on the hand-made /dev,
+        ;; 'disk-partitions' could return partitions for which
+        ;; we have no /dev node.  Handle that gracefully.
+        (if (= ENOENT (system-error-errno args))
+            (begin
+              (format (current-error-port)
+                      "warning: device '~a' not found~%" device)
+              #f)
+            (apply throw args))))))
+
+(define (partition-predicate read field =)
+  "Return a predicate that returns true if the FIELD of partition header that
+was READ is = to the given value."
+  (let ((read (ENOENT-safe read)))
+    (lambda (expected)
+      "Return a procedure that, when applied to a partition name such as \"sda1\",
 returns #t if that partition's volume name is LABEL."
-    (lambda (part)
-      (let* ((device (string-append "/dev/" part))
-             (sblock (read-ext2-superblock* device)))
-        (and sblock
-             (let ((actual (field sblock)))
-               (and actual
-                    (= actual expected))))))))
+      (lambda (part)
+        (let* ((device (string-append "/dev/" part))
+               (sblock (read device)))
+          (and sblock
+               (let ((actual (field sblock)))
+                 (and actual
+                      (= actual expected)))))))))
 
 (define partition-label-predicate
-  (partition-predicate ext2-superblock-volume-name string=?))
+  (partition-predicate read-ext2-superblock
+                       ext2-superblock-volume-name
+                       string=?))
 
 (define partition-uuid-predicate
-  (partition-predicate ext2-superblock-uuid bytevector=?))
+  (partition-predicate read-ext2-superblock
+                       ext2-superblock-uuid
+                       bytevector=?))
+
+(define partition-luks-uuid-predicate
+  (partition-predicate read-luks-header
+                       luks-header-uuid
+                       bytevector=?))
 
 (define (find-partition-by-label label)
   "Return the first partition found whose volume name is LABEL, or #f if none
@@ -218,6 +293,13 @@ or #f if none was found."
                (disk-partitions))
          (cut string-append "/dev/" <>)))
 
+(define (find-partition-by-luks-uuid uuid)
+  "Return the first LUKS partition whose unique identifier is UUID (a bytevector),
+or #f if none was found."
+  (and=> (find (partition-luks-uuid-predicate uuid)
+               (disk-partitions))
+         (cut string-append "/dev/" <>)))
+
 
 ;;;
 ;;; UUIDs.
diff --git a/gnu/local.mk b/gnu/local.mk
new file mode 100644
index 0000000000..1b54b3a855
--- /dev/null
+++ b/gnu/local.mk
@@ -0,0 +1,872 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
+# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
+# Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
+# Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
+# Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+# Definitions for the GNU System: package modules, patches, bootstrap
+# binaries.
+
+GNU_SYSTEM_MODULES =				\
+  gnu.scm					\
+  gnu/artwork.scm				\
+  gnu/packages.scm				\
+  gnu/packages/abduco.scm			\
+  gnu/packages/abiword.scm			\
+  gnu/packages/acct.scm				\
+  gnu/packages/acl.scm				\
+  gnu/packages/admin.scm			\
+  gnu/packages/adns.scm				\
+  gnu/packages/algebra.scm			\
+  gnu/packages/aidc.scm				\
+  gnu/packages/animation.scm			\
+  gnu/packages/anthy.scm			\
+  gnu/packages/apl.scm				\
+  gnu/packages/apr.scm				\
+  gnu/packages/asciidoc.scm			\
+  gnu/packages/aspell.scm			\
+  gnu/packages/attr.scm				\
+  gnu/packages/audacity.scm			\
+  gnu/packages/audio.scm			\
+  gnu/packages/augeas.scm			\
+  gnu/packages/autogen.scm			\
+  gnu/packages/autotools.scm			\
+  gnu/packages/avahi.scm			\
+  gnu/packages/avr.scm				\
+  gnu/packages/backup.scm			\
+  gnu/packages/base.scm				\
+  gnu/packages/bash.scm				\
+  gnu/packages/bdw-gc.scm			\
+  gnu/packages/bioinformatics.scm		\
+  gnu/packages/bittorrent.scm			\
+  gnu/packages/bison.scm			\
+  gnu/packages/boost.scm			\
+  gnu/packages/bootstrap.scm			\
+  gnu/packages/busybox.scm			\
+  gnu/packages/c.scm				\
+  gnu/packages/calcurse.scm			\
+  gnu/packages/ccache.scm			\
+  gnu/packages/cdrom.scm			\
+  gnu/packages/certs.scm			\
+  gnu/packages/check.scm			\
+  gnu/packages/ci.scm				\
+  gnu/packages/cmake.scm			\
+  gnu/packages/code.scm				\
+  gnu/packages/commencement.scm			\
+  gnu/packages/compression.scm			\
+  gnu/packages/conkeror.scm			\
+  gnu/packages/conky.scm			\
+  gnu/packages/cook.scm				\
+  gnu/packages/cpio.scm				\
+  gnu/packages/cppi.scm				\
+  gnu/packages/cross-base.scm			\
+  gnu/packages/crypto.scm			\
+  gnu/packages/cryptsetup.scm			\
+  gnu/packages/cups.scm				\
+  gnu/packages/curl.scm				\
+  gnu/packages/cyrus-sasl.scm			\
+  gnu/packages/databases.scm			\
+  gnu/packages/datamash.scm			\
+  gnu/packages/datastructures.scm		\
+  gnu/packages/dav.scm				\
+  gnu/packages/dc.scm				\
+  gnu/packages/debug.scm			\
+  gnu/packages/dejagnu.scm			\
+  gnu/packages/dico.scm				\
+  gnu/packages/dictionaries.scm			\
+  gnu/packages/dillo.scm			\
+  gnu/packages/disk.scm				\
+  gnu/packages/djvu.scm				\
+  gnu/packages/dns.scm				\
+  gnu/packages/docbook.scm			\
+  gnu/packages/docker.scm			\
+  gnu/packages/doxygen.scm			\
+  gnu/packages/dunst.scm			\
+  gnu/packages/dvtm.scm				\
+  gnu/packages/ebook.scm			\
+  gnu/packages/ed.scm				\
+  gnu/packages/elf.scm				\
+  gnu/packages/emacs.scm			\
+  gnu/packages/enchant.scm			\
+  gnu/packages/engineering.scm			\
+  gnu/packages/enlightenment.scm		\
+  gnu/packages/fcitx.scm			\
+  gnu/packages/feh.scm                          \
+  gnu/packages/figlet.scm			\
+  gnu/packages/file.scm				\
+  gnu/packages/finance.scm			\
+  gnu/packages/firmware.scm			\
+  gnu/packages/fish.scm				\
+  gnu/packages/flashing-tools.scm		\
+  gnu/packages/flex.scm				\
+  gnu/packages/fltk.scm				\
+  gnu/packages/fonts.scm			\
+  gnu/packages/fontutils.scm			\
+  gnu/packages/freedesktop.scm			\
+  gnu/packages/freeipmi.scm			\
+  gnu/packages/ftp.scm				\
+  gnu/packages/fribidi.scm			\
+  gnu/packages/fvwm.scm				\
+  gnu/packages/game-development.scm		\
+  gnu/packages/games.scm			\
+  gnu/packages/gawk.scm				\
+  gnu/packages/gcal.scm				\
+  gnu/packages/gcc.scm				\
+  gnu/packages/gd.scm				\
+  gnu/packages/gdb.scm				\
+  gnu/packages/geeqie.scm			\
+  gnu/packages/gettext.scm			\
+  gnu/packages/ghostscript.scm			\
+  gnu/packages/gimp.scm				\
+  gnu/packages/gkrellm.scm			\
+  gnu/packages/gl.scm				\
+  gnu/packages/glib.scm				\
+  gnu/packages/gnome.scm			\
+  gnu/packages/gnu-doc.scm			\
+  gnu/packages/gnucash.scm			\
+  gnu/packages/gnunet.scm			\
+  gnu/packages/gnupg.scm			\
+  gnu/packages/gnustep.scm			\
+  gnu/packages/gnuzilla.scm			\
+  gnu/packages/gnu-pw-mgr.scm			\
+  gnu/packages/gperf.scm			\
+  gnu/packages/gprolog.scm			\
+  gnu/packages/gps.scm				\
+  gnu/packages/graphics.scm			\
+  gnu/packages/graphviz.scm			\
+  gnu/packages/groff.scm			\
+  gnu/packages/grub.scm				\
+  gnu/packages/grue-hunter.scm			\
+  gnu/packages/gsasl.scm			\
+  gnu/packages/gstreamer.scm			\
+  gnu/packages/gtk.scm				\
+  gnu/packages/guile.scm			\
+  gnu/packages/guile-wm.scm			\
+  gnu/packages/gv.scm				\
+  gnu/packages/gxmessage.scm			\
+  gnu/packages/haskell.scm			\
+  gnu/packages/hugs.scm				\
+  gnu/packages/hurd.scm				\
+  gnu/packages/ibus.scm				\
+  gnu/packages/icu4c.scm			\
+  gnu/packages/idutils.scm			\
+  gnu/packages/image.scm			\
+  gnu/packages/imagemagick.scm			\
+  gnu/packages/indent.scm			\
+  gnu/packages/inklingreader.scm		\
+  gnu/packages/inkscape.scm			\
+  gnu/packages/irc.scm  			\
+  gnu/packages/iso-codes.scm			\
+  gnu/packages/java.scm				\
+  gnu/packages/jemalloc.scm			\
+  gnu/packages/jrnl.scm				\
+  gnu/packages/julia.scm			\
+  gnu/packages/kde.scm              \
+  gnu/packages/kde-frameworks.scm		\
+  gnu/packages/key-mon.scm			\
+  gnu/packages/kodi.scm				\
+  gnu/packages/language.scm			\
+  gnu/packages/ldc.scm				\
+  gnu/packages/lego.scm				\
+  gnu/packages/less.scm				\
+  gnu/packages/lesstif.scm			\
+  gnu/packages/libcanberra.scm			\
+  gnu/packages/libdaemon.scm			\
+  gnu/packages/libedit.scm			\
+  gnu/packages/libevent.scm			\
+  gnu/packages/libffcall.scm			\
+  gnu/packages/libffi.scm			\
+  gnu/packages/libftdi.scm			\
+  gnu/packages/calendar.scm			\
+  gnu/packages/libidn.scm			\
+  gnu/packages/libphidget.scm			\
+  gnu/packages/libreoffice.scm			\
+  gnu/packages/libsigsegv.scm			\
+  gnu/packages/libunistring.scm			\
+  gnu/packages/libusb.scm			\
+  gnu/packages/libunwind.scm			\
+  gnu/packages/libupnp.scm			\
+  gnu/packages/lightning.scm			\
+  gnu/packages/links.scm			\
+  gnu/packages/linux.scm			\
+  gnu/packages/lirc.scm				\
+  gnu/packages/lisp.scm				\
+  gnu/packages/llvm.scm				\
+  gnu/packages/lout.scm				\
+  gnu/packages/lsh.scm				\
+  gnu/packages/lsof.scm				\
+  gnu/packages/lua.scm				\
+  gnu/packages/lxde.scm				\
+  gnu/packages/lxqt.scm				\
+  gnu/packages/lynx.scm				\
+  gnu/packages/m4.scm				\
+  gnu/packages/machine-learning.scm		\
+  gnu/packages/man.scm				\
+  gnu/packages/mail.scm				\
+  gnu/packages/make-bootstrap.scm		\
+  gnu/packages/markdown.scm			\
+  gnu/packages/marst.scm			\
+  gnu/packages/mate.scm             \
+  gnu/packages/maths.scm			\
+  gnu/packages/mc.scm				\
+  gnu/packages/mcrypt.scm			\
+  gnu/packages/messaging.scm			\
+  gnu/packages/mg.scm				\
+  gnu/packages/mit-krb5.scm			\
+  gnu/packages/moe.scm				\
+  gnu/packages/moreutils.scm			\
+  gnu/packages/mpd.scm				\
+  gnu/packages/mp3.scm				\
+  gnu/packages/mpi.scm				\
+  gnu/packages/multiprecision.scm		\
+  gnu/packages/music.scm			\
+  gnu/packages/mtools.scm			\
+  gnu/packages/nano.scm				\
+  gnu/packages/ncdu.scm				\
+  gnu/packages/ncurses.scm			\
+  gnu/packages/netpbm.scm			\
+  gnu/packages/nettle.scm			\
+  gnu/packages/networking.scm			\
+  gnu/packages/ninja.scm			\
+  gnu/packages/node.scm				\
+  gnu/packages/noweb.scm			\
+  gnu/packages/ntp.scm				\
+  gnu/packages/nutrition.scm			\
+  gnu/packages/nvi.scm				\
+  gnu/packages/ocaml.scm			\
+  gnu/packages/ocr.scm				\
+  gnu/packages/onc-rpc.scm			\
+  gnu/packages/openbox.scm			\
+  gnu/packages/openldap.scm			\
+  gnu/packages/openstack.scm			\
+  gnu/packages/orpheus.scm			\
+  gnu/packages/ots.scm				\
+  gnu/packages/owncloud.scm			\
+  gnu/packages/package-management.scm		\
+  gnu/packages/parallel.scm			\
+  gnu/packages/password-utils.scm		\
+  gnu/packages/patchutils.scm			\
+  gnu/packages/pciutils.scm			\
+  gnu/packages/pcre.scm				\
+  gnu/packages/pdf.scm				\
+  gnu/packages/pem.scm				\
+  gnu/packages/perl.scm				\
+  gnu/packages/photo.scm			\
+  gnu/packages/pkg-config.scm			\
+  gnu/packages/plotutils.scm			\
+  gnu/packages/polkit.scm			\
+  gnu/packages/popt.scm				\
+  gnu/packages/pth.scm				\
+  gnu/packages/pulseaudio.scm			\
+  gnu/packages/pumpio.scm			\
+  gnu/packages/pretty-print.scm			\
+  gnu/packages/protobuf.scm			\
+  gnu/packages/pv.scm				\
+  gnu/packages/python.scm			\
+  gnu/packages/qemu.scm				\
+  gnu/packages/qt.scm				\
+  gnu/packages/ragel.scm			\
+  gnu/packages/ratpoison.scm			\
+  gnu/packages/rc.scm				\
+  gnu/packages/rdesktop.scm			\
+  gnu/packages/rdf.scm				\
+  gnu/packages/readline.scm			\
+  gnu/packages/rrdtool.scm			\
+  gnu/packages/rsync.scm			\
+  gnu/packages/ruby.scm				\
+  gnu/packages/rush.scm				\
+  gnu/packages/samba.scm			\
+  gnu/packages/sawfish.scm			\
+  gnu/packages/scanner.scm			\
+  gnu/packages/scheme.scm			\
+  gnu/packages/screen.scm			\
+  gnu/packages/scribus.scm			\
+  gnu/packages/sdl.scm				\
+  gnu/packages/search.scm			\
+  gnu/packages/serialization.scm		\
+  gnu/packages/serveez.scm			\
+  gnu/packages/shishi.scm			\
+  gnu/packages/skarnet.scm			\
+  gnu/packages/skribilo.scm			\
+  gnu/packages/slang.scm			\
+  gnu/packages/slim.scm				\
+  gnu/packages/smalltalk.scm			\
+  gnu/packages/ssh.scm				\
+  gnu/packages/stalonetray.scm			\
+  gnu/packages/statistics.scm			\
+  gnu/packages/suckless.scm			\
+  gnu/packages/swig.scm				\
+  gnu/packages/sxiv.scm				\
+  gnu/packages/synergy.scm			\
+  gnu/packages/task-management.scm		\
+  gnu/packages/tbb.scm				\
+  gnu/packages/tcl.scm				\
+  gnu/packages/tcsh.scm				\
+  gnu/packages/telephony.scm			\
+  gnu/packages/terminals.scm			\
+  gnu/packages/texinfo.scm			\
+  gnu/packages/texlive.scm			\
+  gnu/packages/textutils.scm			\
+  gnu/packages/time.scm				\
+  gnu/packages/tls.scm				\
+  gnu/packages/tmux.scm				\
+  gnu/packages/tor.scm				\
+  gnu/packages/tre.scm				\
+  gnu/packages/tv.scm				\
+  gnu/packages/unrtf.scm			\
+  gnu/packages/upnp.scm				\
+  gnu/packages/uucp.scm				\
+  gnu/packages/valgrind.scm			\
+  gnu/packages/version-control.scm		\
+  gnu/packages/video.scm			\
+  gnu/packages/vim.scm				\
+  gnu/packages/vpn.scm				\
+  gnu/packages/vtk.scm				\
+  gnu/packages/w3m.scm				\
+  gnu/packages/wdiff.scm			\
+  gnu/packages/web.scm				\
+  gnu/packages/webkit.scm			\
+  gnu/packages/wget.scm				\
+  gnu/packages/wicd.scm				\
+  gnu/packages/wine.scm				\
+  gnu/packages/wm.scm				\
+  gnu/packages/wordnet.scm			\
+  gnu/packages/wv.scm				\
+  gnu/packages/wxwidgets.scm			\
+  gnu/packages/xfig.scm				\
+  gnu/packages/xiph.scm				\
+  gnu/packages/xml.scm				\
+  gnu/packages/xnee.scm				\
+  gnu/packages/xdisorg.scm			\
+  gnu/packages/xorg.scm				\
+  gnu/packages/xfce.scm				\
+  gnu/packages/yasm.scm				\
+  gnu/packages/yubico.scm			\
+  gnu/packages/zile.scm				\
+  gnu/packages/zip.scm				\
+  gnu/packages/zsh.scm				\
+						\
+  gnu/services.scm				\
+  gnu/services/avahi.scm			\
+  gnu/services/base.scm				\
+  gnu/services/databases.scm			\
+  gnu/services/dbus.scm				\
+  gnu/services/desktop.scm			\
+  gnu/services/lirc.scm				\
+  gnu/services/mail.scm				\
+  gnu/services/networking.scm			\
+  gnu/services/shepherd.scm			\
+  gnu/services/herd.scm				\
+  gnu/services/ssh.scm				\
+  gnu/services/web.scm				\
+  gnu/services/xorg.scm				\
+						\
+  gnu/system.scm				\
+  gnu/system/file-systems.scm			\
+  gnu/system/grub.scm				\
+  gnu/system/install.scm			\
+  gnu/system/linux-container.scm		\
+  gnu/system/linux-initrd.scm			\
+  gnu/system/locale.scm				\
+  gnu/system/mapped-devices.scm			\
+  gnu/system/nss.scm				\
+  gnu/system/pam.scm				\
+  gnu/system/shadow.scm				\
+  gnu/system/vm.scm				\
+						\
+  gnu/build/activation.scm			\
+  gnu/build/file-systems.scm			\
+  gnu/build/install.scm				\
+  gnu/build/linux-boot.scm			\
+  gnu/build/linux-container.scm			\
+  gnu/build/linux-initrd.scm			\
+  gnu/build/linux-modules.scm			\
+  gnu/build/vm.scm
+
+
+patchdir = $(guilemoduledir)/gnu/packages/patches
+dist_patch_DATA =						\
+  gnu/packages/patches/abiword-explictly-cast-bools.patch	\
+  gnu/packages/patches/abiword-wmf-version-lookup-fix.patch	\
+  gnu/packages/patches/acl-hurd-path-max.patch			\
+  gnu/packages/patches/aegis-constness-error.patch         	\
+  gnu/packages/patches/aegis-perl-tempdir1.patch           	\
+  gnu/packages/patches/aegis-perl-tempdir2.patch           	\
+  gnu/packages/patches/aegis-test-fixup-1.patch            	\
+  gnu/packages/patches/aegis-test-fixup-2.patch            	\
+  gnu/packages/patches/agg-am_c_prototype.patch			\
+  gnu/packages/patches/alsa-lib-mips-atomic-fix.patch		\
+  gnu/packages/patches/apr-skip-getservbyname-test.patch	\
+  gnu/packages/patches/arb-ldconfig.patch			\
+  gnu/packages/patches/asymptote-gsl2.patch			\
+  gnu/packages/patches/ath9k-htc-firmware-binutils.patch	\
+  gnu/packages/patches/ath9k-htc-firmware-gcc.patch		\
+  gnu/packages/patches/ath9k-htc-firmware-objcopy.patch		\
+  gnu/packages/patches/audacity-fix-ffmpeg-binding.patch	\
+  gnu/packages/patches/automake-skip-amhello-tests.patch	\
+  gnu/packages/patches/automake-regexp-syntax.patch		\
+  gnu/packages/patches/avahi-localstatedir.patch		\
+  gnu/packages/patches/avidemux-install-to-lib.patch		\
+  gnu/packages/patches/avrdude-fix-libusb.patch			\
+  gnu/packages/patches/bash-completion-directories.patch	\
+  gnu/packages/patches/bigloo-gc-shebangs.patch			\
+  gnu/packages/patches/binutils-ld-new-dtags.patch		\
+  gnu/packages/patches/binutils-loongson-workaround.patch	\
+  gnu/packages/patches/byobu-writable-status.patch		\
+  gnu/packages/patches/calibre-drop-unrar.patch			\
+  gnu/packages/patches/calibre-no-updates-dialog.patch		\
+  gnu/packages/patches/cdparanoia-fpic.patch			\
+  gnu/packages/patches/chmlib-inttypes.patch			\
+  gnu/packages/patches/clang-libc-search-path.patch		\
+  gnu/packages/patches/clucene-pkgconfig.patch			\
+  gnu/packages/patches/cmake-fix-tests.patch			\
+  gnu/packages/patches/cpio-gets-undeclared.patch		\
+  gnu/packages/patches/cpio-CVE-2016-2037.patch			\
+  gnu/packages/patches/cpufrequtils-fix-aclocal.patch		\
+  gnu/packages/patches/crda-optional-gcrypt.patch		\
+  gnu/packages/patches/crossmap-allow-system-pysam.patch	\
+  gnu/packages/patches/csound-header-ordering.patch		\
+  gnu/packages/patches/cssc-gets-undeclared.patch               \
+  gnu/packages/patches/cssc-missing-include.patch               \
+  gnu/packages/patches/clucene-contribs-lib.patch               \
+  gnu/packages/patches/cursynth-wave-rand.patch			\
+  gnu/packages/patches/dbus-helper-search-path.patch		\
+  gnu/packages/patches/dealii-p4est-interface.patch		\
+  gnu/packages/patches/devil-fix-libpng.patch			\
+  gnu/packages/patches/dico-libtool-deterministic.patch		\
+  gnu/packages/patches/diffutils-gets-undeclared.patch		\
+  gnu/packages/patches/dfu-programmer-fix-libusb.patch		\
+  gnu/packages/patches/doxygen-test.patch			\
+  gnu/packages/patches/duplicity-piped-password.patch		\
+  gnu/packages/patches/duplicity-test_selection-tmp.patch	\
+  gnu/packages/patches/elfutils-tests-ptrace.patch		\
+  gnu/packages/patches/einstein-build.patch			\
+  gnu/packages/patches/emacs-constants-lisp-like.patch		\
+  gnu/packages/patches/emacs-exec-path.patch			\
+  gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
+  gnu/packages/patches/emacs-source-date-epoch.patch		\
+  gnu/packages/patches/eudev-rules-directory.patch		\
+  gnu/packages/patches/evilwm-lost-focus-bug.patch		\
+  gnu/packages/patches/expat-CVE-2015-1283.patch		\
+  gnu/packages/patches/fastcap-mulGlobal.patch			\
+  gnu/packages/patches/fastcap-mulSetup.patch			\
+  gnu/packages/patches/fasthenry-spAllocate.patch		\
+  gnu/packages/patches/fasthenry-spBuild.patch			\
+  gnu/packages/patches/fasthenry-spUtils.patch			\
+  gnu/packages/patches/fasthenry-spSolve.patch			\
+  gnu/packages/patches/fasthenry-spFactor.patch			\
+  gnu/packages/patches/findutils-localstatedir.patch		\
+  gnu/packages/patches/findutils-test-xargs.patch		\
+  gnu/packages/patches/flashrom-use-libftdi1.patch		\
+  gnu/packages/patches/flint-ldconfig.patch			\
+  gnu/packages/patches/fltk-shared-lib-defines.patch		\
+  gnu/packages/patches/fontforge-svg-modtime.patch		\
+  gnu/packages/patches/freeimage-CVE-2015-0852.patch		\
+  gnu/packages/patches/gawk-fts-test.patch			\
+  gnu/packages/patches/gawk-shell.patch				\
+  gnu/packages/patches/gcc-arm-link-spec-fix.patch		\
+  gnu/packages/patches/gcc-cross-environment-variables.patch	\
+  gnu/packages/patches/gcc-libvtv-runpath.patch			\
+  gnu/packages/patches/gcc-5.0-libvtv-runpath.patch		\
+  gnu/packages/patches/geoclue-config.patch			\
+  gnu/packages/patches/ghostscript-CVE-2015-3228.patch		\
+  gnu/packages/patches/ghostscript-runpath.patch		\
+  gnu/packages/patches/glib-networking-ssl-cert-file.patch	\
+  gnu/packages/patches/glib-tests-timer.patch			\
+  gnu/packages/patches/glibc-CVE-2015-7547.patch		\
+  gnu/packages/patches/glibc-bootstrap-system.patch		\
+  gnu/packages/patches/glibc-hurd-extern-inline.patch		\
+  gnu/packages/patches/glibc-ldd-x86_64.patch			\
+  gnu/packages/patches/glibc-locales.patch			\
+  gnu/packages/patches/glibc-locale-incompatibility.patch	\
+  gnu/packages/patches/glibc-o-largefile.patch			\
+  gnu/packages/patches/glibc-versioned-locpath.patch		\
+  gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
+  gnu/packages/patches/gmp-faulty-test.patch			\
+  gnu/packages/patches/gnucash-price-quotes-perl.patch		\
+  gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \
+  gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
+  gnu/packages/patches/gobject-introspection-cc.patch		\
+  gnu/packages/patches/gobject-introspection-girepository.patch	\
+  gnu/packages/patches/grep-timing-sensitive-test.patch		\
+  gnu/packages/patches/grub-CVE-2015-8370.patch			\
+  gnu/packages/patches/grub-gets-undeclared.patch		\
+  gnu/packages/patches/grub-freetype.patch			\
+  gnu/packages/patches/guile-1.8-cpp-4.5.patch			\
+  gnu/packages/patches/guile-arm-fixes.patch			\
+  gnu/packages/patches/guile-default-utf8.patch			\
+  gnu/packages/patches/guile-linux-syscalls.patch		\
+  gnu/packages/patches/guile-present-coding.patch		\
+  gnu/packages/patches/guile-relocatable.patch			\
+  gnu/packages/patches/guile-rsvg-pkgconfig.patch		\
+  gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
+  gnu/packages/patches/gtk2-theme-paths.patch			\
+  gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
+  gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
+  gnu/packages/patches/hop-bigloo-4.0b.patch			\
+  gnu/packages/patches/hop-linker-flags.patch			\
+  gnu/packages/patches/hydra-automake-1.15.patch		\
+  gnu/packages/patches/hydra-disable-darcs-test.patch		\
+  gnu/packages/patches/icecat-avoid-bundled-includes.patch	\
+  gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch	\
+  gnu/packages/patches/icu4c-CVE-2014-6585.patch		\
+  gnu/packages/patches/icu4c-CVE-2015-1270.patch		\
+  gnu/packages/patches/icu4c-CVE-2015-4760.patch		\
+  gnu/packages/patches/ilmbase-fix-tests.patch			\
+  gnu/packages/patches/imagemagick-test-segv.patch		\
+  gnu/packages/patches/irrlicht-mesa-10.patch			\
+  gnu/packages/patches/jasper-CVE-2007-2721.patch		\
+  gnu/packages/patches/jasper-CVE-2008-3520.patch		\
+  gnu/packages/patches/jasper-CVE-2008-3522.patch		\
+  gnu/packages/patches/jasper-CVE-2011-4516-and-CVE-2011-4517.patch \
+  gnu/packages/patches/jasper-CVE-2014-8137.patch		\
+  gnu/packages/patches/jasper-CVE-2014-8138.patch		\
+  gnu/packages/patches/jasper-CVE-2014-8157.patch		\
+  gnu/packages/patches/jasper-CVE-2014-8158.patch		\
+  gnu/packages/patches/jasper-CVE-2014-9029.patch		\
+  gnu/packages/patches/jasper-CVE-2016-1577.patch		\
+  gnu/packages/patches/jasper-CVE-2016-1867.patch		\
+  gnu/packages/patches/jasper-CVE-2016-2089.patch		\
+  gnu/packages/patches/jasper-CVE-2016-2116.patch		\
+  gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
+  gnu/packages/patches/kmod-module-directory.patch		\
+  gnu/packages/patches/ldc-disable-tests.patch			\
+  gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
+  gnu/packages/patches/liba52-enable-pic.patch			\
+  gnu/packages/patches/liba52-link-with-libm.patch		\
+  gnu/packages/patches/liba52-set-soname.patch			\
+  gnu/packages/patches/liba52-use-mtune-not-mcpu.patch		\
+  gnu/packages/patches/libarchive-bsdtar-test.patch		\
+  gnu/packages/patches/libarchive-CVE-2013-0211.patch		\
+  gnu/packages/patches/libarchive-fix-lzo-test-case.patch	\
+  gnu/packages/patches/libarchive-mtree-filename-length-fix.patch \
+  gnu/packages/patches/libbonobo-activation-test-race.patch	\
+  gnu/packages/patches/libcanberra-sound-theme-freedesktop.patch \
+  gnu/packages/patches/libcmis-fix-test-onedrive.patch		\
+  gnu/packages/patches/libdrm-symbol-check.patch		\
+  gnu/packages/patches/libevent-dns-tests.patch			\
+  gnu/packages/patches/libextractor-ffmpeg-3.patch		\
+  gnu/packages/patches/libmtp-devices.patch			\
+  gnu/packages/patches/liboop-mips64-deplibs-fix.patch		\
+  gnu/packages/patches/libotr-test-auth-fix.patch		\
+  gnu/packages/patches/liblxqt-include.patch			\
+  gnu/packages/patches/libmad-armv7-thumb-pt1.patch		\
+  gnu/packages/patches/libmad-armv7-thumb-pt2.patch		\
+  gnu/packages/patches/libmad-frame-length.patch		\
+  gnu/packages/patches/libmad-mips-newgcc.patch			\
+  gnu/packages/patches/libssh-0.6.5-CVE-2016-0739.patch		\
+  gnu/packages/patches/libtheora-config-guess.patch		\
+  gnu/packages/patches/libtiff-CVE-2015-8665+CVE-2015-8683.patch \
+  gnu/packages/patches/libtiff-oob-accesses-in-decode.patch	\
+  gnu/packages/patches/libtiff-oob-write-in-nextdecode.patch	\
+  gnu/packages/patches/libtool-skip-tests2.patch		\
+  gnu/packages/patches/libunwind-CVE-2015-3239.patch		\
+  gnu/packages/patches/libwmf-CAN-2004-0941.patch		\
+  gnu/packages/patches/libwmf-CVE-2006-3376.patch		\
+  gnu/packages/patches/libwmf-CVE-2007-0455.patch		\
+  gnu/packages/patches/libwmf-CVE-2007-2756.patch		\
+  gnu/packages/patches/libwmf-CVE-2007-3472.patch		\
+  gnu/packages/patches/libwmf-CVE-2007-3473.patch		\
+  gnu/packages/patches/libwmf-CVE-2007-3477.patch		\
+  gnu/packages/patches/libwmf-CVE-2009-1364.patch		\
+  gnu/packages/patches/libwmf-CVE-2009-3546.patch		\
+  gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch	\
+  gnu/packages/patches/libwmf-CVE-2015-4695.patch		\
+  gnu/packages/patches/libwmf-CVE-2015-4696.patch		\
+  gnu/packages/patches/libxslt-CVE-2015-7995.patch		\
+  gnu/packages/patches/lirc-localstatedir.patch			\
+  gnu/packages/patches/libpthread-glibc-preparation.patch	\
+  gnu/packages/patches/lm-sensors-hwmon-attrs.patch		\
+  gnu/packages/patches/lua-pkgconfig.patch                      \
+  gnu/packages/patches/lua51-liblua-so.patch                    \
+  gnu/packages/patches/lua52-liblua-so.patch                    \
+  gnu/packages/patches/luajit-no_ldconfig.patch			\
+  gnu/packages/patches/luajit-symlinks.patch			\
+  gnu/packages/patches/luit-posix.patch				\
+  gnu/packages/patches/m4-gets-undeclared.patch			\
+  gnu/packages/patches/make-impure-dirs.patch			\
+  gnu/packages/patches/mars-install.patch			\
+  gnu/packages/patches/mars-sfml-2.3.patch			\
+  gnu/packages/patches/matplotlib-setupext-tk.patch		\
+  gnu/packages/patches/maxima-defsystem-mkdir.patch		\
+  gnu/packages/patches/mcron-install.patch			\
+  gnu/packages/patches/mdadm-gcc-4.9-fix.patch			\
+  gnu/packages/patches/mhash-keygen-test-segfault.patch		\
+  gnu/packages/patches/mit-krb5-CVE-2015-8629.patch		\
+  gnu/packages/patches/mit-krb5-CVE-2015-8630.patch		\
+  gnu/packages/patches/mit-krb5-CVE-2015-8631.patch		\
+  gnu/packages/patches/mit-krb5-init-context-null-spnego.patch	\
+  gnu/packages/patches/mpc123-initialize-ao.patch		\
+  gnu/packages/patches/mplayer2-theora-fix.patch		\
+  gnu/packages/patches/module-init-tools-moduledir.patch	\
+  gnu/packages/patches/mumps-build-parallelism.patch		\
+  gnu/packages/patches/mupen64plus-ui-console-notice.patch	\
+  gnu/packages/patches/mutt-store-references.patch		\
+  gnu/packages/patches/net-tools-bitrot.patch			\
+  gnu/packages/patches/ngircd-handle-zombies.patch		\
+  gnu/packages/patches/ngircd-no-dns-in-tests.patch		\
+  gnu/packages/patches/ninja-tests.patch			\
+  gnu/packages/patches/ninja-zero-mtime.patch			\
+  gnu/packages/patches/nss-pkgconfig.patch			\
+  gnu/packages/patches/nvi-assume-preserve-path.patch		\
+  gnu/packages/patches/nvi-dbpagesize-binpower.patch		\
+  gnu/packages/patches/nvi-db4.patch				\
+  gnu/packages/patches/ocaml-findlib-make-install.patch	\
+  gnu/packages/patches/openexr-missing-samples.patch		\
+  gnu/packages/patches/openimageio-boost-1.60.patch		\
+  gnu/packages/patches/openjpeg-CVE-2015-6581.patch		\
+  gnu/packages/patches/openjpeg-use-after-free-fix.patch	\
+  gnu/packages/patches/openssh-CVE-2015-8325.patch		\
+  gnu/packages/patches/openssl-runpath.patch			\
+  gnu/packages/patches/openssl-c-rehash-in.patch		\
+  gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
+  gnu/packages/patches/ots-no-include-missing-file.patch	\
+  gnu/packages/patches/patchelf-page-size.patch			\
+  gnu/packages/patches/patchelf-rework-for-arm.patch		\
+  gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
+  gnu/packages/patches/patch-hurd-path-max.patch		\
+  gnu/packages/patches/pcre-CVE-2016-3191.patch			\
+  gnu/packages/patches/perl-CVE-2015-8607.patch			\
+  gnu/packages/patches/perl-CVE-2016-2381.patch			\
+  gnu/packages/patches/perl-autosplit-default-time.patch	\
+  gnu/packages/patches/perl-deterministic-ordering.patch	\
+  gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
+  gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
+  gnu/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
+  gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch	\
+  gnu/packages/patches/perl-net-ssleay-disable-ede-test.patch	\
+  gnu/packages/patches/perl-no-build-time.patch			\
+  gnu/packages/patches/perl-no-sys-dirs.patch			\
+  gnu/packages/patches/perl-module-pluggable-search.patch	\
+  gnu/packages/patches/perl-source-date-epoch.patch		\
+  gnu/packages/patches/pidgin-add-search-path.patch		\
+  gnu/packages/patches/pinball-const-fix.patch			\
+  gnu/packages/patches/pinball-cstddef.patch			\
+  gnu/packages/patches/pinball-missing-separators.patch		\
+  gnu/packages/patches/pinball-src-deps.patch			\
+  gnu/packages/patches/pinball-system-ltdl.patch		\
+  gnu/packages/patches/pingus-sdl-libs-config.patch		\
+  gnu/packages/patches/plink-1.07-unclobber-i.patch		\
+  gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
+  gnu/packages/patches/polkit-drop-test.patch			\
+  gnu/packages/patches/portaudio-audacity-compat.patch		\
+  gnu/packages/patches/procmail-ambiguous-getline-debian.patch  \
+  gnu/packages/patches/pt-scotch-build-parallelism.patch	\
+  gnu/packages/patches/pulseaudio-fix-mult-test.patch		\
+  gnu/packages/patches/pulseaudio-longer-test-timeout.patch	\
+  gnu/packages/patches/pycairo-wscript.patch			\
+  gnu/packages/patches/pybugz-encode-error.patch		\
+  gnu/packages/patches/pybugz-stty.patch			\
+  gnu/packages/patches/pygpgme-disable-problematic-tests.patch  \
+  gnu/packages/patches/pyqt-configure.patch			\
+  gnu/packages/patches/python-2-deterministic-build-info.patch	\
+  gnu/packages/patches/python-2.7-search-paths.patch		\
+  gnu/packages/patches/python-2.7-source-date-epoch.patch	\
+  gnu/packages/patches/python-3-deterministic-build-info.patch	\
+  gnu/packages/patches/python-3-search-paths.patch		\
+  gnu/packages/patches/python-disable-ssl-test.patch		\
+  gnu/packages/patches/python-fix-tests.patch			\
+  gnu/packages/patches/python-ipython-inputhook-ctype.patch	\
+  gnu/packages/patches/python-rarfile-fix-tests.patch		\
+  gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
+  gnu/packages/patches/python-configobj-setuptools.patch	\
+  gnu/packages/patches/python-paste-remove-website-test.patch	\
+  gnu/packages/patches/python-paste-remove-timing-test.patch	\
+  gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
+  gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch \
+  gnu/packages/patches/qemu-CVE-2015-8558.patch			\
+  gnu/packages/patches/qemu-CVE-2015-8567.patch			\
+  gnu/packages/patches/qemu-CVE-2015-8613.patch			\
+  gnu/packages/patches/qemu-CVE-2015-8619.patch			\
+  gnu/packages/patches/qemu-CVE-2015-8701.patch			\
+  gnu/packages/patches/qemu-CVE-2015-8743.patch			\
+  gnu/packages/patches/qemu-CVE-2016-1568.patch			\
+  gnu/packages/patches/qemu-CVE-2016-1922.patch			\
+  gnu/packages/patches/qemu-CVE-2016-1981.patch			\
+  gnu/packages/patches/qemu-CVE-2016-2197.patch			\
+  gnu/packages/patches/qemu-usb-ehci-oob-read.patch		\
+  gnu/packages/patches/qemu-virtio-9p-use-accessor-to-get-thread-pool.patch \
+  gnu/packages/patches/qt4-ldflags.patch			\
+  gnu/packages/patches/ratpoison-shell.patch			\
+  gnu/packages/patches/readline-link-ncurses.patch		\
+  gnu/packages/patches/ripperx-missing-file.patch		\
+  gnu/packages/patches/rsem-makefile.patch			\
+  gnu/packages/patches/sed-hurd-path-max.patch			\
+  gnu/packages/patches/scheme48-tests.patch			\
+  gnu/packages/patches/scotch-test-threading.patch		\
+  gnu/packages/patches/sdl-libx11-1.6.patch			\
+  gnu/packages/patches/serf-comment-style-fix.patch		\
+  gnu/packages/patches/serf-deflate-buckets-test-fix.patch	\
+  gnu/packages/patches/slim-session.patch			\
+  gnu/packages/patches/slim-config.patch			\
+  gnu/packages/patches/slim-sigusr1.patch			\
+  gnu/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
+  gnu/packages/patches/soprano-find-clucene.patch		\
+  gnu/packages/patches/sudo-CVE-2015-5602.patch			\
+  gnu/packages/patches/superlu-dist-scotchmetis.patch		\
+  gnu/packages/patches/synfig-build-fix.patch			\
+  gnu/packages/patches/tar-d_ino_in_dirent-fix.patch		\
+  gnu/packages/patches/tar-skip-unreliable-tests.patch		\
+  gnu/packages/patches/tcl-mkindex-deterministic.patch		\
+  gnu/packages/patches/tclxml-3.2-install.patch			\
+  gnu/packages/patches/tcsh-fix-autotest.patch			\
+  gnu/packages/patches/texi2html-document-encoding.patch	\
+  gnu/packages/patches/texi2html-i18n.patch			\
+  gnu/packages/patches/tidy-CVE-2015-5522+5523.patch		\
+  gnu/packages/patches/tinyxml-use-stl.patch			\
+  gnu/packages/patches/tk-find-library.patch			\
+  gnu/packages/patches/ttf2eot-cstddef.patch			\
+  gnu/packages/patches/ttfautohint-source-date-epoch.patch	\
+  gnu/packages/patches/tophat-build-with-later-seqan.patch	\
+  gnu/packages/patches/torsocks-dns-test.patch			\
+  gnu/packages/patches/tvtime-gcc41.patch			\
+  gnu/packages/patches/tvtime-pngoutput.patch			\
+  gnu/packages/patches/tvtime-videodev2.patch			\
+  gnu/packages/patches/tvtime-xmltv.patch			\
+  gnu/packages/patches/unzip-CVE-2014-8139.patch		\
+  gnu/packages/patches/unzip-CVE-2014-8140.patch		\
+  gnu/packages/patches/unzip-CVE-2014-8141.patch		\
+  gnu/packages/patches/unzip-CVE-2014-9636.patch		\
+  gnu/packages/patches/unzip-CVE-2015-7696.patch		\
+  gnu/packages/patches/unzip-CVE-2015-7697.patch		\
+  gnu/packages/patches/unzip-allow-greater-hostver-values.patch	\
+  gnu/packages/patches/unzip-attribs-overflow.patch		\
+  gnu/packages/patches/unzip-overflow-on-invalid-input.patch	\
+  gnu/packages/patches/unzip-format-secure.patch		\
+  gnu/packages/patches/unzip-initialize-symlink-flag.patch	\
+  gnu/packages/patches/unzip-overflow-long-fsize.patch		\
+  gnu/packages/patches/unzip-remove-build-date.patch		\
+  gnu/packages/patches/util-linux-tests.patch			\
+  gnu/packages/patches/upower-builddir.patch			\
+  gnu/packages/patches/valgrind-enable-arm.patch		\
+  gnu/packages/patches/vorbis-tools-CVE-2015-6749.patch		\
+  gnu/packages/patches/vpnc-script.patch			\
+  gnu/packages/patches/vtk-mesa-10.patch			\
+  gnu/packages/patches/w3m-libgc.patch				\
+  gnu/packages/patches/w3m-force-ssl_verify_server-on.patch	\
+  gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch	\
+  gnu/packages/patches/w3m-disable-weak-ciphers.patch		\
+  gnu/packages/patches/weechat-python.patch			\
+  gnu/packages/patches/weex-vacopy.patch			\
+  gnu/packages/patches/wicd-bitrate-none-fix.patch		\
+  gnu/packages/patches/wicd-get-selected-profile-fix.patch	\
+  gnu/packages/patches/wicd-urwid-1.3.patch			\
+  gnu/packages/patches/wicd-wpa2-ttls.patch			\
+  gnu/packages/patches/wmctrl-64-fix.patch			\
+  gnu/packages/patches/woff2-libbrotli.patch			\
+  gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch	\
+  gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch	\
+  gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch	\
+  gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch	\
+  gnu/packages/patches/xdotool-fix-makefile.patch               \
+  gnu/packages/patches/xf86-video-ark-remove-mibstore.patch	\
+  gnu/packages/patches/xf86-video-ast-remove-mibstore.patch	\
+  gnu/packages/patches/xf86-video-geode-glibc-2.20.patch	\
+  gnu/packages/patches/xf86-video-glint-remove-mibstore.patch	\
+  gnu/packages/patches/xf86-video-i128-remove-mibstore.patch	\
+  gnu/packages/patches/xf86-video-intel-compat-api.patch	\
+  gnu/packages/patches/xf86-video-intel-glibc-2.20.patch	\
+  gnu/packages/patches/xf86-video-mach64-glibc-2.20.patch	\
+  gnu/packages/patches/xf86-video-nv-remove-mibstore.patch	\
+  gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch	\
+  gnu/packages/patches/xf86-video-tga-remove-mibstore.patch	\
+  gnu/packages/patches/xfce4-panel-plugins.patch		\
+  gnu/packages/patches/xfce4-session-fix-xflock4.patch		\
+  gnu/packages/patches/xfce4-settings-defaults.patch		\
+  gnu/packages/patches/xmodmap-asprintf.patch 			\
+  gnu/packages/patches/zathura-plugindir-environment-variable.patch
+
+MISC_DISTRO_FILES =				\
+  gnu/packages/ld-wrapper.in
+
+bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
+bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
+bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
+bootstrap_armhf_linuxdir = $(bootstrapdir)/armhf-linux
+bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux
+
+dist_bootstrap_x86_64_linux_DATA =		\
+  gnu/packages/bootstrap/x86_64-linux/bash	\
+  gnu/packages/bootstrap/x86_64-linux/mkdir	\
+  gnu/packages/bootstrap/x86_64-linux/tar	\
+  gnu/packages/bootstrap/x86_64-linux/xz
+
+dist_bootstrap_i686_linux_DATA =		\
+  gnu/packages/bootstrap/i686-linux/bash	\
+  gnu/packages/bootstrap/i686-linux/mkdir	\
+  gnu/packages/bootstrap/i686-linux/tar		\
+  gnu/packages/bootstrap/i686-linux/xz
+
+dist_bootstrap_armhf_linux_DATA =		\
+  gnu/packages/bootstrap/armhf-linux/bash	\
+  gnu/packages/bootstrap/armhf-linux/mkdir	\
+  gnu/packages/bootstrap/armhf-linux/tar	\
+  gnu/packages/bootstrap/armhf-linux/xz
+
+dist_bootstrap_mips64el_linux_DATA =		\
+  gnu/packages/bootstrap/mips64el-linux/bash	\
+  gnu/packages/bootstrap/mips64el-linux/mkdir	\
+  gnu/packages/bootstrap/mips64el-linux/tar	\
+  gnu/packages/bootstrap/mips64el-linux/xz
+
+# Big bootstrap binaries are not included in the tarball.  Instead, they
+# are downloaded.
+nodist_bootstrap_x86_64_linux_DATA =					\
+  gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
+nodist_bootstrap_i686_linux_DATA =					\
+  gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
+nodist_bootstrap_armhf_linux_DATA =					\
+  gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz
+nodist_bootstrap_mips64el_linux_DATA =					\
+  gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
+
+# Those files must remain executable, so they remain executable once
+# imported into the store.
+set-bootstrap-executable-permissions:
+	chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
+
+DISTCLEANFILES =				\
+  $(nodist_bootstrap_x86_64_linux_DATA)		\
+  $(nodist_bootstrap_i686_linux_DATA)		\
+  $(nodist_bootstrap_armhf_linux_DATA)		\
+  $(nodist_bootstrap_mips64el_linux_DATA)
+
+# Method to download a file from an external source.
+DOWNLOAD_FILE =								\
+  GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH"	\
+  $(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)"	\
+           "$(top_srcdir)/build-aux/download.scm"
+
+gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
+	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
+	$(DOWNLOAD_FILE) "$@"			\
+	  "037b103522a2d0d7d69c7ffd8de683dfe5bb4b59c1fafd70b4ffd397fd2f57f0"
+gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
+	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
+	$(DOWNLOAD_FILE) "$@"			\
+	  "b757cd46bf13ecac83fb8e955fb50096ac2d17bb610ca8eb816f29302a00a846"
+gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz:
+	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
+	$(DOWNLOAD_FILE) "$@"			\
+	  "e551d05d4d385d6706ab8d574856a087758294dc90ab4c06e70a157a685e23d6"
+gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
+	$(AM_V_DL)$(MKDIR_P) `dirname "$@"`;	\
+	$(DOWNLOAD_FILE) "$@" 			\
+	  "994680f0001346864aa2c2cc5110f380ee7518dcd701c614291682b8e948f73b"
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index b76aadc6a2..c49b0a9e17 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -922,6 +922,75 @@ also includes an interface for tabix.")
 (define-public python2-pysam
   (package-with-python2 python-pysam))
 
+(define-public python-twobitreader
+  (package
+    (name "python-twobitreader")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "twobitreader" version))
+              (sha256
+               (base32
+                "0y408fp6psqzwxpcpqn0wp7fr41dwz8d54wpj6j261fj5q8vs169"))))
+    (properties `((python2-variant . ,(delay python2-twobitreader))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/benjschiller/twobitreader")
+    (synopsis "Python library for reading .2bit files")
+    (description
+     "twobitreader is a Python library for reading .2bit files as used by the
+UCSC genome browser.")
+    (license license:artistic2.0)))
+
+(define-public python2-twobitreader
+  (let ((base (package-with-python2 (strip-python2-variant python-twobitreader))))
+    (package
+      (inherit base)
+      (native-inputs `(("python2-setuptools" ,python2-setuptools)
+                       ,@(package-native-inputs base))))))
+
+(define-public python-plastid
+  (package
+    (name "python-plastid")
+    (version "0.4.5")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "plastid" version))
+              (sha256
+               (base32
+                "1nhxw8a5gn9as58i2ih52c5cjwj48ik418pzsjwph3s66mmy9yvq"))))
+    (properties `((python2-variant . ,(delay python2-plastid))))
+    (build-system python-build-system)
+    (arguments
+     ;; Some test files are not included.
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)
+       ("python-pandas" ,python-pandas)
+       ("python-pysam" ,python-pysam)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-biopython" ,python-biopython)
+       ("python-twobitreader" ,python-twobitreader)))
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-nose" ,python-nose)))
+    (home-page "https://github.com/joshuagryphon/plastid")
+    (synopsis "Python library for genomic analysis")
+    (description
+     "plastid is a Python library for genomic analysis – in particular,
+high-throughput sequencing data – with an emphasis on simplicity.")
+    (license license:bsd-3)))
+
+(define-public python2-plastid
+  (let ((base (package-with-python2 (strip-python2-variant python-plastid))))
+    (package
+      (inherit base)
+      ;; setuptools is required at runtime
+      (propagated-inputs `(("python2-setuptools" ,python2-setuptools)
+                           ,@(package-propagated-inputs base))))))
+
 (define-public cd-hit
   (package
     (name "cd-hit")
@@ -2075,9 +2144,9 @@ HMMs).")
 from high-throughput sequencing assays.")
     (license license:gpl3+)))
 
-(define-public htsjdk
+(define-public java-htsjdk
   (package
-    (name "htsjdk")
+    (name "java-htsjdk")
     (version "1.129")
     (source (origin
               (method url-fetch)
@@ -3012,9 +3081,9 @@ any particular back-end implementation, and supports use of multiple back-ends
 simultaneously.")
     (license license:public-domain)))
 
-(define-public ngs-java
+(define-public java-ngs
   (package (inherit ngs-sdk)
-    (name "ngs-java")
+    (name "java-ngs")
     (arguments
      `(,@(substitute-keyword-arguments
              `(#:modules ((guix build gnu-build-system)
@@ -3077,7 +3146,7 @@ simultaneously.")
                     (string-append "--with-ngs-sdk-prefix="
                                    (assoc-ref inputs "ngs-sdk"))
                     (string-append "--with-ngs-java-prefix="
-                                   (assoc-ref inputs "ngs-java"))
+                                   (assoc-ref inputs "java-ngs"))
                     (string-append "--with-hdf5-prefix="
                                    (assoc-ref inputs "hdf5"))))))
         (alist-cons-after
@@ -3103,7 +3172,7 @@ simultaneously.")
     (inputs
      `(("libxml2" ,libxml2)
        ("ngs-sdk" ,ngs-sdk)
-       ("ngs-java" ,ngs-java)
+       ("java-ngs" ,java-ngs)
        ("libmagic" ,file)
        ("hdf5" ,hdf5)))
     (native-inputs `(("perl" ,perl)))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 26b0fc6fdc..d8252c8b37 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -207,7 +207,7 @@ interface, for the Transmission BitTorrent daemon.")
 (define-public aria2
   (package
     (name "aria2")
-    (version "1.21.0")
+    (version "1.22.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/tatsuhiro-t/aria2/"
@@ -215,7 +215,7 @@ interface, for the Transmission BitTorrent daemon.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1035rzx9y7qv4p7cv04f461343dxha7ikprch059x2fci8n5yp12"))))
+                "12agwdvvkr34wqhyyfp418dj0k7nbr297qmcd3wj5kkn7brv6gxc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--enable-libaria2")
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index f5bf069c20..1ada01c904 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -166,6 +166,7 @@ successful, or false to signal an error."
         ((string=? system "mips64el-linux") "/lib/ld.so.1")
         ((string=? system "i586-gnu") "/lib/ld.so.1")
         ((string=? system "i686-gnu") "/lib/ld.so.1")
+        ((string=? system "aarch64-linux") "/lib/ld-linux-aarch64.so.1")
 
         ;; XXX: This one is used bare-bones, without a libc, so add a case
         ;; here just so we can keep going.
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index de5d03af22..8043422f8b 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -731,3 +732,26 @@ similar in speed to deflate but offers denser compression.  This package
 provides encoder and a decoder libraries: libbrotlienc and libbrotlidec,
 respectively, based on the reference implementation from Google.")
       (license license:expat))))
+
+(define-public cabextract
+ (package
+   (name "cabextract")
+   (version "1.6")
+   (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://cabextract.org.uk/cabextract-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1ysmmz25fjghq7mxb2anyyvr1ljxqxzi4piwjhk0sdamcnsn3rnf"))))
+    (build-system gnu-build-system)
+    (arguments '(#:configure-flags '("--with-external-libmspack")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libmspack" ,libmspack)))
+    (home-page "http://www.cabextract.org.uk/")
+    (synopsis "Tool to unpack Cabinet archives")
+    (description "Extracts files out of Microsoft Cabinet (.cab) archives")
+    ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3.
+    (license license:gpl3+)))
diff --git a/gnu/packages/dillo.scm b/gnu/packages/dillo.scm
new file mode 100644
index 0000000000..0fd84d9177
--- /dev/null
+++ b/gnu/packages/dillo.scm
@@ -0,0 +1,63 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages dillo)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages fltk)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages xorg)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu))
+
+(define-public dillo
+  (package
+    (name "dillo")
+    (version "3.0.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.dillo.org/download/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv"))))
+    (build-system gnu-build-system)
+    (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6")))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("fltk" ,fltk)
+              ("fontconfig" ,fontconfig)
+              ("libjpeg" ,libjpeg)
+              ("libpng" ,libpng)
+              ("libxcursor" ,libxcursor)
+              ("libxft" ,libxft)
+              ("libxi" ,libxi)
+              ("libxinerama" ,libxinerama)
+              ("openssl" ,openssl)
+              ("perl" ,perl)
+              ("zlib" ,zlib)))
+    (synopsis "Very small and fast graphical web browser")
+    (description "Dillo is a minimalistic web browser particularly intended for
+older or slower computers and embedded systems.")
+    (home-page "http://www.dillo.org")
+    (license license:gpl3+)))
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 4dec9bc288..a0180c0432 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -52,6 +53,7 @@
     `(("libjpeg" ,libjpeg-8)     ;jpeg_read_header argument error in libjpeg-9
       ("libpng" ,libpng)
       ("libx11" ,libx11)
+      ("libxft" ,libxft)
       ("mesa" ,mesa)
       ("zlib" ,zlib)))
     (arguments
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 9b6a647f25..02131f10d0 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -51,9 +51,9 @@
   #:use-module (gnu packages texinfo)
   #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
 
-(define-public swt
+(define-public java-swt
   (package
-    (name "swt")
+    (name "java-swt")
     (version "4.4.2")
     (source (origin
               (method url-fetch)
@@ -577,7 +577,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
     (license license:gpl2+)))
 
 (define-public icedtea-7
-  (let* ((version "2.6.4")
+  (let* ((version "2.6.5")
          (drop (lambda (name hash)
                  (origin
                    (method url-fetch)
@@ -594,7 +594,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
                       version ".tar.xz"))
                 (sha256
                  (base32
-                  "0r31h8nlsrbfdkgbjbb7phwgcwglc9siznzrr40lqnm9xrgkc2nj"))
+                  "1xskigsa1i8hycbagb0f6idyb16x8dkixcdyaacsw4dvjr230lp7"))
                 (modules '((guix build utils)))
                 (snippet
                  '(substitute* "Makefile.in"
@@ -669,6 +669,8 @@ build process and its dependencies, whereas Make uses Makefile format.")
                       (setenv "CC" "gcc")
                       (setenv "CPATH"
                               (string-append gcjinclude ":"
+                                             (assoc-ref inputs "libxcomposite")
+                                             "/include/X11/extensions" ":"
                                              (assoc-ref inputs "libxrender")
                                              "/include/X11/extensions" ":"
                                              (assoc-ref inputs "libxtst")
@@ -719,26 +721,111 @@ build process and its dependencies, whereas Make uses Makefile format.")
       (native-inputs
        `(("openjdk-src"
           ,(drop "openjdk"
-                 "1qjjf71nq80ac2d08hbaa8589d31vk313z3rkirnwq5df8cyf0mv"))
+                 "1nxb8b0p1v57ix8gp22ifg9vg0p0lhr59g5vi74f7abg3almcvy6"))
          ("corba-drop"
           ,(drop "corba"
-                 "025warxhjal3nr7w1xyd16k0f32fwkchifpaslzyidsga3hgmfr6"))
+                 "0zz7gz8fq7qnifzm2jgir2i6rcp0d2h32lcxvlfs24w5szynjya2"))
          ("jaxp-drop"
           ,(drop "jaxp"
-                 "0qiz6swb78w9c0mf88pf0gflgm5rp9k0l6fv6sdl7dki691b0z09"))
+                 "0ym3bcril6507bpbw5mkkw0zmfg3s1nkbsvs2lg0c1q8kyyf3dbv"))
          ("jaxws-drop"
           ,(drop "jaxws"
-                 "18fz4gl4fdlcmqvh1mlpd9h0gj0qizpfa7njkax97aysmsm08xns"))
+                 "1l16x4dwhgfpnk32xbigb1kzkvgj0b6zzhdg4rpkywa7gvg9lxaf"))
          ("jdk-drop"
           ,(drop "jdk"
-                 "0qsx5d9pgwlz9vbpapw4jwpajqc6rwk1150cjb33i4n3z709jccx"))
+                 "1fi18ji83d0dqzg35kcm4bksg2z3fbg772p05wgw4rhh7dai0f6d"))
          ("langtools-drop"
           ,(drop "langtools"
-                 "1k6plx96smf86z303gb30hncssa8f40qdryzsdv349iwqwacxc7r"))
+                 "1nbqg8sw7z7f3bhxng0xdp8vl2nc5wqz0xii1j566qdgc1n6fv3c"))
          ("hotspot-drop"
           ,(drop "hotspot"
-                 "0r9ffzyf5vxs8wg732szqcil0ksc8lcxzihdv3viz7d67dy42irp"))
+                 "1z0w8h1jjvxlqzlrwasy323fygx90if09rvqjk4ymaqhzcr35623"))
          ,@(fold alist-delete (package-native-inputs icedtea-6)
-                 '("openjdk6-src")))))))
+                 '("openjdk6-src"))))
+      (inputs
+       `(("libxcomposite" ,libxcomposite)
+         ,@(package-inputs icedtea-6))))))
+
+(define-public icedtea-8
+  (let* ((version "3.0.0")
+         (drop (lambda (name hash)
+                 (origin
+                   (method url-fetch)
+                   (uri (string-append
+                         "http://icedtea.classpath.org/download/drops/"
+                         "/icedtea8/" version "/" name ".tar.xz"))
+                   (sha256 (base32 hash))))))
+    (package (inherit icedtea-7)
+      (version "3.0.0")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append
+                      "http://icedtea.wildebeest.org/download/source/icedtea-"
+                      version ".tar.xz"))
+                (sha256
+                 (base32
+                  "1a99hvx5d0dcinlixgy0wzv2f7jnzi8jp7hcrf2pd7dqndlxsyll"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(substitute* "Makefile.am"
+                    ;; do not leak information about the build host
+                    (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
+                     "DISTRIBUTION_ID=\"\\\"guix\\\"\"")))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments icedtea-7)
+         ((#:configure-flags flags)
+          `(let ((jdk (assoc-ref %build-inputs "jdk")))
+             `(;;"--disable-bootstrap"
+               "--enable-bootstrap"
+               "--enable-nss"
+               "--disable-downloading"
+               "--disable-tests"      ;they are run in the check phase instead
+               "--with-openjdk-src-dir=./openjdk.src"
+               ,(string-append "--with-jdk-home=" jdk))))
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'fix-x11-extension-include-path)
+             (delete 'patch-paths)
+             (delete 'set-additional-paths)
+             (delete 'patch-patches)
+             (replace 'install
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (let ((doc (string-append (assoc-ref outputs "doc")
+                                           "/share/doc/icedtea"))
+                       (jre (assoc-ref outputs "out"))
+                       (jdk (assoc-ref outputs "jdk")))
+                   (copy-recursively "openjdk.build/docs" doc)
+                   (copy-recursively "openjdk.build/images/j2re-image" jre)
+                   (copy-recursively "openjdk.build/images/j2sdk-image" jdk)
+                   #t)))))))
+      (native-inputs
+       `(("jdk" ,icedtea-7 "jdk")
+         ("openjdk-src"
+          ,(drop "openjdk"
+                 "0cchcrkj3pbjw3r6w08d8fkcjp98fyqp15bv88ljakjcsxrjc0sv"))
+         ("corba-drop"
+          ,(drop "corba"
+                 "1k5khy8g0bk8yas81infh4l8rradpslzs0bblri0aqn9s3aq0x6p"))
+         ("jaxp-drop"
+          ,(drop "jaxp"
+                 "1s167lwh1bxkjmbcyk1pb9r919hfbjgh2shig3d1qmj24r2fbk2c"))
+         ("jaxws-drop"
+          ,(drop "jaxws"
+                 "0xphl8127in0634401f8v3b42mh14v1zdzd7ar10h9m5m84hcmgg"))
+         ("jdk-drop"
+          ,(drop "jdk"
+                 "1kdi5v0vf7swkh2r4isdibw8zzsp34d1aa1sbxl5ljc9lfmbhx7s"))
+         ("langtools-drop"
+          ,(drop "langtools"
+                 "11pa0sr4yi0nnfwhz25410zimc3jm367cvrhg5jm0xc5rykydq70"))
+         ("hotspot-drop"
+          ,(drop "hotspot"
+                 "1my0g9snpd6619y82b4m96wc7ncvf1hw5yqrbh3n1pjgm2k7ywbn"))
+         ("nashorn-drop"
+          ,(drop "nashorn"
+                 "1h12a61q3bw8zabhpp6aawfg3pwixjcya64595rj07sid619vidl"))
+         ,@(fold alist-delete (package-native-inputs icedtea-7)
+                 '("gcj" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop"
+                   "jdk-drop" "langtools-drop" "hotspot-drop")))))))
 
 (define-public icedtea icedtea-7)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 61136791d3..1e72442c73 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -28,11 +28,13 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages xiph))
 
 (define-public libusb
@@ -87,6 +89,49 @@ devices on various operating systems.")
 version of libusb to run with newer libusb.")
     (license lgpl2.1+)))
 
+(define-public python-pyusb
+  (package
+    (name "python-pyusb")
+    (version "1.0.0rc1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyusb" version))
+       (sha256
+        (base32
+         "07cjq11qhngzjd746k7688s6y2x7lpj669fxqfsiy985rg0jsn7j"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f  ;no tests
+       #:modules ((srfi srfi-26)
+                  (guix build utils)
+                  (guix build python-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-libusb-reference
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "usb/libloader.py"
+               (("lib = locate_library\\(candidates, find_library\\)")
+                (string-append
+                 "lib = \""
+                 (car (find-files (assoc-ref inputs "libusb")
+                                  (lambda (file stat)
+                                    (and ((file-name-predicate
+                                           "^libusb-.*\\.so\\..*") file stat)
+                                         (not (symbolic-link? file))))))
+                 "\"")))
+             #t)))))
+    (inputs
+     `(("libusb" ,libusb)))
+    (home-page "http://walac.github.io/pyusb/")
+    (synopsis "Python bindings to the libusb library")
+    (description
+     "PyUSB aims to be an easy to use Python module to access USB devices.")
+    (license bsd-3)))
+
+(define-public python2-pyusb
+  (package-with-python2 python-pyusb))
+
 (define-public libmtp
   (package
     (name "libmtp")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index e1a12045df..a26e641342 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
+;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -81,6 +82,7 @@
     (cond ((string=? arch "i686") "i386")
           ((string-prefix? "mips" arch) "mips")
           ((string-prefix? "arm" arch) "arm")
+          ((string-prefix? "aarch64" arch) "arm64")
           (else arch))))
 
 (define (linux-libre-urls version)
@@ -220,7 +222,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
     (search-path %load-path file)))
 
 (define-public linux-libre
-  (let* ((version "4.5.1")
+  (let* ((version "4.5.2")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Avoid introducing timestamps
@@ -298,7 +300,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "1x621kvaf842bzpgglfl31zi74ny9w9jgvmkz3z6m3708n8clrdh"))))
+               "0mw8n5pms33k3m3aamlryahrcbhfnqbzvkglgw3j4dhaja3hwr7n"))))
     (build-system gnu-build-system)
     (supported-systems '("x86_64-linux" "i686-linux"))
     (native-inputs `(("perl" ,perl)
@@ -335,13 +337,13 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-4.4
   (package
     (inherit linux-libre)
-    (version "4.4.7")
+    (version "4.4.8")
     (source (origin
               (method url-fetch)
               (uri (linux-libre-urls version))
               (sha256
                (base32
-                "031wh2k204zvshira28bf33sk1bbk19ilgqmkvkwjp6spk5wmvpq"))))
+                "0zyhdy01gjglgmlrmpqa1sdnm0z91mzwspbksj6zvcamczb8ml53"))))
     (native-inputs
      (let ((conf (kernel-config (or (%current-target-system)
                                     (%current-system))
@@ -352,13 +354,13 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-4.1
   (package
     (inherit linux-libre)
-    (version "4.1.21")
+    (version "4.1.22")
     (source (origin
               (method url-fetch)
               (uri (linux-libre-urls version))
               (sha256
                (base32
-                "1gfzwiinpxzhqb5xi7b1iv7ay96nrjlhia6bvcyq8ffkx7a2r715"))))
+                "0bn6qba7q4i3yn3zx2p56gawnb2gczrf4vyrjggirj4d60gvng7y"))))
     (native-inputs
      (let ((conf (kernel-config (or (%current-target-system)
                                     (%current-system))
@@ -1463,14 +1465,14 @@ system.")
 (define-public kbd
   (package
     (name "kbd")
-    (version "2.0.2")
+    (version "2.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx"))
+                "0ppv953gn2zylcagr4z6zg5y2x93dxrml29plypg6xgbq3hrv2bs"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1484,27 +1486,26 @@ system.")
                      "tty"))))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'build 'pre-build
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (let ((gzip  (assoc-ref %build-inputs "gzip"))
-                         (bzip2 (assoc-ref %build-inputs "bzip2")))
-                     (substitute* "src/libkeymap/findfile.c"
-                       (("gzip")
-                        (string-append gzip "/bin/gzip"))
-                       (("bzip2")
-                        (string-append bzip2 "/bin/bzip2")))))
-                 (alist-cons-after
-                  'install 'post-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; Make sure these programs find their comrades.
-                    (let* ((out (assoc-ref outputs "out"))
-                           (bin (string-append out "/bin")))
-                      (for-each (lambda (prog)
-                                  (wrap-program (string-append bin "/" prog)
-                                                `("PATH" ":" prefix (,bin))))
-                                '("unicode_start" "unicode_stop"))))
-                  %standard-phases))))
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gzip  (assoc-ref %build-inputs "gzip"))
+                   (bzip2 (assoc-ref %build-inputs "bzip2")))
+               (substitute* "src/libkeymap/findfile.c"
+                 (("gzip")
+                  (string-append gzip "/bin/gzip"))
+                 (("bzip2")
+                  (string-append bzip2 "/bin/bzip2"))))))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Make sure these programs find their comrades.
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (for-each (lambda (prog)
+                           (wrap-program (string-append bin "/" prog)
+                             `("PATH" ":" prefix (,bin))))
+                         '("unicode_start" "unicode_stop"))))))))
     (inputs `(("check" ,check)
               ("gzip" ,gzip)
               ("bzip2" ,bzip2)
@@ -2104,6 +2105,26 @@ WLAN, Bluetooth and mobile broadband.")
     (license (license:non-copyleft "file://COPYING"
                                    "See COPYING in the distribution."))))
 
+(define-public acpi
+  (package
+    (name "acpi")
+    (version "1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/acpiclient/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01ahldvf0gc29dmbd5zi4rrnrw2i1ajnf30sx2vyaski3jv099fp"))))
+    (build-system gnu-build-system)
+    (home-page "http://acpiclient.sourceforge.net")
+    (synopsis "Display information on ACPI devices")
+    (description "@code{acpi} attempts to replicate the functionality of the
+\"old\" @code{apm} command on ACPI systems, including battery and thermal
+information.  It does not support ACPI suspending, only displays information
+about ACPI devices.")
+    (license license:gpl2+)))
+
 (define-public acpid
   (package
     (name "acpid")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index fd379b7968..56e85712db 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1164,13 +1164,13 @@ maintained.")
 (define-public khard
   (package
     (name "khard")
-    (version "0.8.1")
+    (version "0.9.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "098gs94qmnspdfn6ar8lycx7dbsz9bcff90aps0cmn47mw7llch0"))))
+                "0y83rji4f270hbb41m4jpr0z3yzvpvbsl32mpg9d38hlydw8fk1s"))))
     (build-system python-build-system)
     (arguments
       `(#:python ,python-2 ; only python-2 is supported.
diff --git a/gnu/packages/marst.scm b/gnu/packages/marst.scm
new file mode 100644
index 0000000000..7d4a4f364d
--- /dev/null
+++ b/gnu/packages/marst.scm
@@ -0,0 +1,43 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright 2016 John Darrington <jmd@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages marst)
+  #:use-module (guix packages)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (gnu packages compression)
+  #:use-module (guix build-system gnu))
+
+(define-public marst
+  (package
+    (name "marst")
+    (version "2.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://gnu/" name "/" name "-" version
+             ".tar.gz"))
+       (sha256
+        (base32 "0l6swjy8fjrqw89ghc1vvakg21jmpfkpsw92yssrzkg3rg8vkrry"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.gnu.org/software/marst")
+    (synopsis "Algol to C translator")
+    (description "MARST is an Algol-to-C translator.  It automatically translates programs
+written on the algorithmic language Algol 60 to the C programming language.")
+    (license gpl3+)))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index d009905346..7ea4ca3066 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
@@ -1484,14 +1484,14 @@ full text searching.")
 (define-public armadillo
   (package
     (name "armadillo")
-    (version "6.400.3")
+    (version "6.700.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/arma/armadillo-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0bsgrmldlx77w5x26n3axj1hg6iw6csyw0dwl1flrbdwl51f9701"))))
+                "0dsdjcps5l2nhg0455rrc708inffarzj7n435vj4sm9lxwf21wg9"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ;no test target
     (inputs
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 280f3840bb..8f971f3614 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -775,7 +775,7 @@ is subjective.")
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out"))
                           (string-append "SWT_PATH="
-                                         (assoc-ref %build-inputs "swt")
+                                         (assoc-ref %build-inputs "java-swt")
                                          "/share/java/swt.jar"))
        #:tests? #f ;no "check" target
        #:parallel-build? #f ;not supported
@@ -790,11 +790,11 @@ is subjective.")
                (string-append "GCJFLAGS=-fsource=1.4 -fPIC " rest))
               (("PROPERTIES\\?=")
                (string-append "PROPERTIES?= -Dswt.library.path="
-                              (assoc-ref inputs "swt") "/lib"))
+                              (assoc-ref inputs "java-swt") "/lib"))
               (("\\$\\(GCJ\\) -o") "$(GCJ) $(LDFLAGS) -o"))
             #t)))))
     (inputs
-     `(("swt" ,swt)))
+     `(("java-swt" ,java-swt)))
     (native-inputs
      `(("gcj" ,gcj)
        ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 947abf31a4..780fb7f252 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -137,16 +137,16 @@ guidelines}.")
 (define-public python-mox3
   (package
     (name "python-mox3")
-    (version "0.13.0")
+    (version "0.14.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "mox3" version))
         (sha256
           (base32
-           "0hj57374r239cj1zbzpxw7mj0yfblz55jdfrc2p1h8j7xng0319j"))))
+           "0njmh40i1lg5mzn9hc2ax83adj6dli455j6xifilrw27c4wlkjzx"))))
     (build-system python-build-system)
-    (inputs
+    (native-inputs
       `(("python-fixtures" ,python-fixtures)
         ("python-pbr" ,python-pbr)
         ("python-setuptools" ,python-setuptools)
@@ -156,11 +156,14 @@ guidelines}.")
     (synopsis "Mock object framework for Python")
     (description
       "Mox3 is an unofficial port of the Google mox framework
-(http://code.google.com/p/pymox/) to Python 3. It was meant to be as compatible
-with mox as possible, but small enhancements have been made. The library was
+(http://code.google.com/p/pymox/) to Python 3.  It was meant to be as compatible
+with mox as possible, but small enhancements have been made.  The library was
 tested on Python version 3.2, 2.7 and 2.6.")
     (license asl2.0)))
 
+(define-public python2-mox3
+  (package-with-python2 python-mox3))
+
 (define-public python-os-client-config
   (package
     (name "python-os-client-config")
@@ -197,9 +200,6 @@ tested on Python version 3.2, 2.7 and 2.6.")
 (define-public python2-os-client-config
   (package-with-python2 python-os-client-config))
 
-(define-public python2-mox3
-  (package-with-python2 python-mox3))
-
 (define-public python-os-testr
   (package
     (name "python-os-testr")
@@ -266,20 +266,21 @@ portions of your testing code.")
 (define-public python-stevedore
   (package
     (name "python-stevedore")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "stevedore" version))
        (sha256
          (base32
-          "17vpffcnk56sj86d2n3vz5bprcc9bswilgd0awnm7jp073pqkmpm"))))
+          "0999zvawaapzg6givjhn7vjscdwblcs73wf28wq1wb4g5mbb5phv"))))
     (build-system python-build-system)
     (propagated-inputs
       `(("python-six" ,python-six)))
     (inputs
-      `(("python-pbr" ,python-pbr)
-        ("python-setuptools" ,python-setuptools)
+      `(("python-pbr" ,python-pbr)))
+    (native-inputs
+      `(("python-setuptools" ,python-setuptools)
         ;; Tests
         ("python-docutils" ,python-docutils)
         ("python-mock" ,python-mock)
@@ -289,9 +290,9 @@ portions of your testing code.")
     (synopsis "Manage dynamic plugins for Python applications")
     (description
       "Python makes loading code dynamically easy, allowing you to configure
-and extend your application by discovering and loading extensions (“plugins”)
+and extend your application by discovering and loading extensions (\"plugins\")
 at runtime.  Many applications implement their own library for doing this,
-using __import__ or importlib.  stevedore avoids creating yet another extension
+using __import__ or importlib.  Stevedore avoids creating yet another extension
 mechanism by building on top of setuptools entry points.  The code for managing
 entry points tends to be repetitive, though, so stevedore provides manager
 classes for implementing common patterns for using dynamically loaded
diff --git a/gnu/packages/patches/openssh-CVE-2015-8325.patch b/gnu/packages/patches/openssh-CVE-2015-8325.patch
new file mode 100644
index 0000000000..8063e64ea7
--- /dev/null
+++ b/gnu/packages/patches/openssh-CVE-2015-8325.patch
@@ -0,0 +1,31 @@
+From 85bdcd7c92fe7ff133bbc4e10a65c91810f88755 Mon Sep 17 00:00:00 2001
+From: Damien Miller <djm@mindrot.org>
+Date: Wed, 13 Apr 2016 10:39:57 +1000
+Subject: ignore PAM environment vars when UseLogin=yes
+
+If PAM is configured to read user-specified environment variables
+and UseLogin=yes in sshd_config, then a hostile local user may
+attack /bin/login via LD_PRELOAD or similar environment variables
+set via PAM.
+
+CVE-2015-8325, found by Shayan Sadigh, via Colin Watson
+---
+ session.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/session.c b/session.c
+index 4859245..4653b09 100644
+--- a/session.c
++++ b/session.c
+@@ -1322,7 +1322,7 @@ do_setup_env(Session *s, const char *shell)
+ 	 * Pull in any environment variables that may have
+ 	 * been set by PAM.
+ 	 */
+-	if (options.use_pam) {
++	if (options.use_pam && !options.use_login) {
+ 		char **p;
+ 
+ 		p = fetch_pam_child_environment();
+-- 
+cgit v0.11.2
+
diff --git a/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch b/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch
new file mode 100644
index 0000000000..62d6a38086
--- /dev/null
+++ b/gnu/packages/patches/python-pandas-fix-tslib-test-failure.patch
@@ -0,0 +1,141 @@
+This patch is required to fix a test failure when python-dateutil version
+2.5.2 or later is used.  It is derived from the following commits:
+
+80ef4e06526b9b60cf24268454c9456585a790a3
+845ff974af6f7c3b3067cce8a7149b771c2be87
+
+diff --git a/pandas/tseries/tests/test_tslib.py b/pandas/tseries/tests/test_tslib.py
+index f0d5bf7..863bc6f 100644
+--- a/pandas/tseries/tests/test_tslib.py
++++ b/pandas/tseries/tests/test_tslib.py
+@@ -474,6 +474,11 @@ def test_does_not_convert_mixed_integer(self):
+                 good_date_string))
+ 
+     def test_parsers(self):
++
++        # https://github.com/dateutil/dateutil/issues/217
++        import dateutil
++        yearfirst = dateutil.__version__ >= LooseVersion('2.5.0')
++
+         cases = {'2011-01-01': datetime.datetime(2011, 1, 1),
+                  '2Q2005': datetime.datetime(2005, 4, 1),
+                  '2Q05': datetime.datetime(2005, 4, 1),
+@@ -527,20 +532,26 @@ def test_parsers(self):
+                  }
+ 
+         for date_str, expected in compat.iteritems(cases):
+-            result1, _, _ = tools.parse_time_string(date_str)
+-            result2 = to_datetime(date_str)
+-            result3 = to_datetime([date_str])
+-            result4 = to_datetime(np.array([date_str], dtype=object))
+-            result5 = Timestamp(date_str)
+-            result6 = DatetimeIndex([date_str])[0]
+-            result7 = date_range(date_str, freq='S', periods=1)
++            result1, _, _ = tools.parse_time_string(date_str,
++                                                    yearfirst=yearfirst)
++            result2 = to_datetime(date_str, yearfirst=yearfirst)
++            result3 = to_datetime([date_str], yearfirst=yearfirst)
++            result4 = to_datetime(np.array([date_str], dtype=object),
++                                  yearfirst=yearfirst)
++            result6 = DatetimeIndex([date_str], yearfirst=yearfirst)[0]
+             self.assertEqual(result1, expected)
+             self.assertEqual(result2, expected)
+             self.assertEqual(result3, expected)
+             self.assertEqual(result4, expected)
+-            self.assertEqual(result5, expected)
+             self.assertEqual(result6, expected)
+-            self.assertEqual(result7, expected)
++
++            # these really need to have yearfist, but we don't support
++            if not yearfirst:
++                result5 = Timestamp(date_str)
++                self.assertEqual(result5, expected)
++                result7 = date_range(date_str, freq='S', periods=1,
++                                     yearfirst=yearfirst)
++                self.assertEqual(result7, expected)
+ 
+         # NaT
+         result1, _, _ = tools.parse_time_string('NaT')
+@@ -589,23 +589,62 @@ def test_parsers_quarter_invalid(self):
+             self.assertRaises(ValueError, tools.parse_time_string, case)
+ 
+     def test_parsers_dayfirst_yearfirst(self):
++
++        # https://github.com/dateutil/dateutil/issues/217
++        # this issue was closed
++        import dateutil
++        is_compat_version = dateutil.__version__ >= LooseVersion('2.5.2')
++        if is_compat_version:
++            dayfirst_yearfirst1 = datetime.datetime(2010, 12, 11)
++            dayfirst_yearfirst2 = datetime.datetime(2020, 12, 21)
++        else:
++            dayfirst_yearfirst1 = datetime.datetime(2010, 11, 12)
++            dayfirst_yearfirst2 = datetime.datetime(2020, 12, 21)
++
+         # str : dayfirst, yearfirst, expected
+-        cases = {'10-11-12': [(False, False, datetime.datetime(2012, 10, 11)),
+-                              (True, False, datetime.datetime(2012, 11, 10)),
+-                              (False, True, datetime.datetime(2010, 11, 12)),
+-                              (True, True, datetime.datetime(2010, 11, 12))],
+-                 '20/12/21': [(False, False, datetime.datetime(2021, 12, 20)),
+-                              (True, False, datetime.datetime(2021, 12, 20)),
+-                              (False, True, datetime.datetime(2020, 12, 21)),
+-                              (True, True, datetime.datetime(2020, 12, 21))]}
++        cases = {'10-11-12': [(False, False, False,
++                               datetime.datetime(2012, 10, 11)),
++                              (True, False, False,
++                               datetime.datetime(2012, 11, 10)),
++                              (False, True, False,
++                               datetime.datetime(2010, 11, 12)),
++                              (True, True, False, dayfirst_yearfirst1)],
++                 '20/12/21': [(False, False, False,
++                               datetime.datetime(2021, 12, 20)),
++                              (True, False, False,
++                               datetime.datetime(2021, 12, 20)),
++                              (False, True, False,
++                               datetime.datetime(2020, 12, 21)),
++                              (True, True, True, dayfirst_yearfirst2)]}
+ 
+         tm._skip_if_no_dateutil()
+         from dateutil.parser import parse
+         for date_str, values in compat.iteritems(cases):
+-            for dayfirst, yearfirst, expected in values:
+-                result1, _, _ = tools.parse_time_string(date_str,
+-                                                        dayfirst=dayfirst,
+-                                                        yearfirst=yearfirst)
++            for dayfirst, yearfirst, is_compat, expected in values:
++
++                f = lambda x: tools.parse_time_string(x,
++                                                      dayfirst=dayfirst,
++                                                      yearfirst=yearfirst)
++
++                # we now have an invalid parse
++                if is_compat and is_compat_version:
++                    self.assertRaises(tslib.DateParseError, f, date_str)
++
++                    def f(date_str):
++                        return to_datetime(date_str, dayfirst=dayfirst,
++                                           yearfirst=yearfirst)
++
++                    self.assertRaises(ValueError, f, date_str)
++
++                    def f(date_str):
++                        return DatetimeIndex([date_str], dayfirst=dayfirst,
++                                             yearfirst=yearfirst)[0]
++
++                    self.assertRaises(ValueError, f, date_str)
++
++                    continue
++
++                result1, _, _ = f(date_str)
+ 
+                 result2 = to_datetime(date_str, dayfirst=dayfirst,
+                                       yearfirst=yearfirst)
+@@ -614,7 +653,6 @@ def test_parsers_dayfirst_yearfirst(self):
+                                         yearfirst=yearfirst)[0]
+ 
+                 # Timestamp doesn't support dayfirst and yearfirst
+-
+                 self.assertEqual(result1, expected)
+                 self.assertEqual(result2, expected)
+                 self.assertEqual(result3, expected)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4238965fd0..0379352f76 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
 ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
@@ -987,7 +987,9 @@ datetime module, available in Python 2.3+.")
        (method url-fetch)
        (uri (pypi-uri "pandas" version))
        (sha256
-        (base32 "050qw0ap5bhyv5flp78x3lcq1dlminl3xaj6kbrm0jqmx0672xf9"))))
+        (base32 "050qw0ap5bhyv5flp78x3lcq1dlminl3xaj6kbrm0jqmx0672xf9"))
+       (patches (search-patches
+                 "python-pandas-fix-tslib-test-failure.patch"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-numpy" ,python-numpy)
@@ -8256,13 +8258,13 @@ introspection of @code{zope.interface} instances in code.")
 (define-public python-vobject
   (package
     (name "python-vobject")
-    (version "0.9.1")
+    (version "0.9.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "vobject" version))
               (sha256
                (base32
-                "1cwzjnrdr9yg2x21wbf3kf59ibnchvj33mygd69yzi178a9gs9gz"))))
+                "1qfnwlx8qwkgr6nf5wvl6ff1r3kll53dh3z6nyp173nmlhhhqccb"))))
     (build-system python-build-system)
     (inputs
      `(("python-dateutil-2" ,python-dateutil-2)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0ca3415a9f..8531b9cf00 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -3528,14 +3528,14 @@ subprocess.")
 (define-public ruby-bio-commandeer
   (package
     (name "ruby-bio-commandeer")
-    (version "0.1.2")
+    (version "0.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "bio-commandeer" version))
        (sha256
         (base32
-         "061jxa6km92qfwzl058r2gp8gfcsbyr7m643nw1pxvmjdswaf6ly"))))
+         "0lin6l99ldqqjc90l9ihcrv882c4xgbgqm16jqkdy6jf955jd9a8"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index eaf57acb3d..b8f107b111 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -126,7 +126,8 @@ a server that supports the SSH-2 protocol.")
                          (string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/"
                                         tail))))
             (sha256 (base32
-                     "132lh9aanb0wkisji1d6cmsxi520m8nh7c7i9wi6m1s3l38q29x7"))))
+                     "132lh9aanb0wkisji1d6cmsxi520m8nh7c7i9wi6m1s3l38q29x7"))
+            (patches (search-patches "openssh-CVE-2015-8325.patch"))))
    (build-system gnu-build-system)
    (inputs `(("groff" ,groff)
              ("openssl" ,openssl)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index d820b08eb4..b02ab560c3 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -98,7 +98,7 @@ be output in text, PostScript, PDF or HTML.")
 (define-public r
   (package
     (name "r")
-    (version "3.2.3")
+    (version "3.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -106,7 +106,7 @@ be output in text, PostScript, PDF or HTML.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1hdnv77ralzcx5k5b88jq1r8l6zqnywpq00g2qs949rqh63psfxr"))))
+                "1dc0iybjk9kr1nghz3fpir6mb9hb9rnrz9bgh00w5pg5vir5cx30"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 3be89ce06e..117d01d5d0 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -113,14 +113,14 @@ as well as the classic centralized workflow.")
   ;; Keep in sync with 'git-manpages'!
   (package
    (name "git")
-   (version "2.7.3")
+   (version "2.7.4")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1di96q86fq3pdn5d5v4fw9vf58gha5i9b3r880mxlh275n8ngi49"))))
+              "0ys55v2xrhzj74jrrqx75xpr458klnyxshh8d8swfpp0zgg79rfy"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -292,7 +292,7 @@ everything from small to very large projects with speed and efficiency.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0va9j0q9h44jqih38h4cmhvbmjppqq7zbiq70220m7hsqqkq824z"))))
+                "09ffk5c0dl1xg7xcvr0kadhspx4fr2spmlmcajzfycmap0ddhkyh"))))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 7673636b15..6060702022 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -62,6 +62,7 @@
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
@@ -535,6 +536,26 @@ convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
     (license license:gpl2+)))
 
+(define-public ffmpeg-2.8
+  (package
+    (inherit ffmpeg)
+    (version "2.8.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "1yh7dvm7zwdlsspdaq524s5qaggma5md9h95qc4kvb5dmyyyvg15"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ffmpeg)
+       ((#:configure-flags flags)
+        `(map (lambda (flag)
+                (if (string=? flag "--disable-mipsdsp")
+                    "--disable-mipsdspr1"
+                    flag))
+              ,flags))))))
+
 (define-public vlc
   (package
     (name "vlc")
@@ -546,7 +567,14 @@ audio/video codec library.")
                    version "/vlc-" version ".tar.xz"))
              (sha256
               (base32
-               "1jqzrzrpw6932lbkf863xk8cfmn4z2ngbxz7w8ggmh4f6xz9sgal"))))
+               "1jqzrzrpw6932lbkf863xk8cfmn4z2ngbxz7w8ggmh4f6xz9sgal"))
+             (modules '((guix build utils)))
+             (snippet
+              ;; There are two occurrences where __DATE__ and __TIME__ are
+              ;; used to capture the build time and show it to the user.
+              '(substitute* (find-files "." "help\\.c(pp)?$")
+                 (("__DATE__") "\"2016\"")
+                 (("__TIME__") "\"00:00\"")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("git" ,git) ; needed for a test
@@ -557,7 +585,7 @@ audio/video codec library.")
        ("avahi" ,avahi)
        ("dbus" ,dbus)
        ("flac" ,flac)
-       ("ffmpeg" ,ffmpeg)
+       ("ffmpeg" ,ffmpeg-2.8)               ;fails to build against ffmpeg 3.0
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
        ("gnutls" ,gnutls)
@@ -591,7 +619,30 @@ audio/video codec library.")
        `("--disable-a52" ; FIXME: reenable once available
          ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
                          (assoc-ref %build-inputs "ffmpeg")
-                         "/lib")))) ; needed for the tests
+                         "/lib"))                 ;needed for the tests
+
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'regenerate-plugin-cache
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The 'install-exec-hook' rule in the top-level Makefile.am
+             ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
+             ;; 'vlc-cache-gen'.  This file includes the mtime of the plugins
+             ;; it references.  Thus, we first reset the timestamps of all
+             ;; these files, and then regenerate the cache such that the
+             ;; mtimes it includes are always zero instead of being dependent
+             ;; on the build time.
+             (let* ((out       (assoc-ref outputs "out"))
+                    (pkglibdir (string-append out "/lib/vlc"))
+                    (plugindir (string-append pkglibdir "/plugins"))
+                    (cachegen  (string-append pkglibdir "/vlc-cache-gen")))
+               ;; TODO: Factorize 'reset-timestamps'.
+               (for-each (lambda (file)
+                           (let ((s (lstat file)))
+                             (unless (eq? (stat:type s) 'symlink)
+                               (utime file 0 0 0 0))))
+                         (find-files plugindir))
+               (zero? (system* cachegen plugindir))))))))
     (home-page "https://www.videolan.org/")
     (synopsis "Audio and video framework")
     (description "VLC is a cross-platform multimedia player and framework
@@ -696,7 +747,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.16.0")
+    (version "0.17.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -704,7 +755,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                     ".tar.gz"))
               (sha256
                (base32
-                "1fiqxx85s418qynq2fp0v7cpzrz8j285hwmc4fqgn5ny1vg1jdpw"))
+                "0vms3viwqcwl1mrgmf2yy4c69fvv7xpbkyrl693l6zpwynqd4b30"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system waf-build-system)
     (native-inputs
@@ -1382,3 +1433,33 @@ present in modern GPUs.")
     (description "Vdpauinfo is a tool to query the capabilities of a VDPAU
 implementation.")
     (license (license:x11-style "file://COPYING"))))
+
+(define-public recordmydesktop
+  (package
+    (name "recordmydesktop")
+    (version "0.3.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/" name "/" name "/"
+                                  version "/recordmydesktop-" version ".tar.gz"))
+              (sha256
+               (base32
+                "133kkl5j0r877d41bzj7kj0vf3xm8x80yyx2n8nqxrva304f58ik"))))
+    (build-system gnu-build-system)
+    (inputs `(("popt" ,popt)
+              ("zlib" ,zlib)
+              ("libx11" ,libx11)
+              ("libice" ,libice)
+              ("libsm" ,libsm)
+              ("libxfixes" ,libxfixes)
+              ("libxdamage" ,libxdamage)
+              ("libxext" ,libxext)
+              ("libvorbis" ,libvorbis)
+              ("libtheora" ,libtheora)))
+    (home-page "http://recordmydesktop.sourceforge.net/")
+    (synopsis "Desktop session video recorder")
+    (description
+     "recordMyDesktop is a command-line tool that captures the activity in
+your graphical desktop and encodes it as a video.  This is a useful tool for
+making @dfn{screencasts}.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 473d2e7cdc..67384b8fed 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -53,14 +53,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.12.0")
+    (version "2.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "19jyvyw8ss4bacq3f7ybdb0r16r84q12j2bpciyj9jqvzpw091m6"))))
+                "15p8dbxf8psmzddc21rcgds3b4jg725wcn5jppn3qgsm4x92s6jv"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -136,14 +136,14 @@ HTML/CSS applications to full-fledged web browsers.")
 (define-public webkitgtk-2.4
   (package (inherit webkitgtk)
     (name "webkitgtk")
-    (version "2.4.10")
+    (version "2.4.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0566yx5lxi40g0wpvmwbc8y76akd7zph7flrjdp2vv3z1nra9z9k"))))
+                "1xsvnvyvlywwyf6m9ainpsg87jkxjmd37q6zgz9cxb7v3c2ym2jq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b168543a65..96bf8da02a 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)                ; 'user-account', etc.
   #:use-module (gnu system file-systems)          ; 'file-system', etc.
+  #:use-module (gnu system mapped-devices)
   #:use-module (gnu packages admin)
   #:use-module ((gnu packages linux)
                 #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm))
@@ -47,7 +48,6 @@
             root-file-system-service
             file-system-service
             user-unmount-service
-            device-mapping-service
             swap-service
             user-processes-service
             session-environment-service
@@ -494,18 +494,18 @@ strings or string-valued gexps."
 (define console-keymap-service-type
   (shepherd-service-type
    'console-keymap
-   (lambda (file)
+   (lambda (files)
      (shepherd-service
       (documentation (string-append "Load console keymap (loadkeys)."))
       (provision '(console-keymap))
       (start #~(lambda _
                  (zero? (system* (string-append #$kbd "/bin/loadkeys")
-                                 #$file))))
+                                 #$@files))))
       (respawn? #f)))))
 
-(define (console-keymap-service file)
-  "Return a service to load console keymap from @var{file}."
-  (service console-keymap-service-type file))
+(define (console-keymap-service . files)
+  "Return a service to load console keymaps from @var{files}."
+  (service console-keymap-service-type files))
 
 (define console-font-service-type
   (shepherd-service-type
@@ -1174,26 +1174,6 @@ extra rules from the packages listed in @var{rules}."
   (service udev-service-type
            (udev-configuration (udev udev) (rules rules))))
 
-(define device-mapping-service-type
-  (shepherd-service-type
-   'device-mapping
-   (match-lambda
-     ((target open close)
-      (shepherd-service
-       (provision (list (symbol-append 'device-mapping- (string->symbol target))))
-       (requirement '(udev))
-       (documentation "Map a device node using Linux's device mapper.")
-       (start #~(lambda () #$open))
-       (stop #~(lambda _ (not #$close)))
-       (respawn? #f))))))
-
-(define (device-mapping-service target open close)
-  "Return a service that maps device @var{target}, a string such as
-@code{\"home\"} (meaning @code{/dev/mapper/home}).  Evaluate @var{open}, a
-gexp, to open it, and evaluate @var{close} to close it."
-  (service device-mapping-service-type
-           (list target open close)))
-
 (define swap-service-type
   (shepherd-service-type
    'swap
diff --git a/gnu/system.scm b/gnu/system.scm
index a4259fb61b..768ca9cab2 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -43,7 +43,6 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages firmware)
-  #:autoload   (gnu packages cryptsetup) (cryptsetup)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
   #:use-module (gnu services base)
@@ -54,6 +53,7 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system linux-initrd)
   #:use-module (gnu system file-systems)
+  #:use-module (gnu system mapped-devices)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
@@ -101,9 +101,7 @@
             local-host-aliases
             %setuid-programs
             %base-packages
-            %base-firmware
-
-            luks-device-mapping))
+            %base-firmware))
 
 ;;; Commentary:
 ;;;
@@ -176,24 +174,6 @@
 ;;; Services.
 ;;;
 
-(define (open-luks-device source target)
-  "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
-'cryptsetup'."
-  #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
-                    "open" "--type" "luks"
-                    #$source #$target)))
-
-(define (close-luks-device source target)
-  "Return a gexp that closes TARGET, a LUKS device."
-  #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
-                    "close" #$target)))
-
-(define luks-device-mapping
-  ;; The type of LUKS mapped devices.
-  (mapped-device-kind
-   (open open-luks-device)
-   (close close-luks-device)))
-
 (define (other-file-system-services os)
   "Return file system services for the file systems of OS that are not marked
 as 'needed-for-boot'."
@@ -253,15 +233,7 @@ from the initrd."
 
 (define (device-mapping-services os)
   "Return the list of device-mapping services for OS as a list."
-  (map (lambda (md)
-         (let* ((source (mapped-device-source md))
-                (target (mapped-device-target md))
-                (type   (mapped-device-type md))
-                (open   (mapped-device-kind-open type))
-                (close  (mapped-device-kind-close type)))
-           (device-mapping-service target
-                                   (open source target)
-                                   (close source target))))
+  (map device-mapping-service
        (operating-system-user-mapped-devices os)))
 
 (define (swap-services os)
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index d0726d2b61..7e8c4489dd 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -54,17 +54,6 @@
             %base-file-systems
             %container-file-systems
 
-            mapped-device
-            mapped-device?
-            mapped-device-source
-            mapped-device-target
-            mapped-device-type
-
-            mapped-device-kind
-            mapped-device-kind?
-            mapped-device-kind-open
-            mapped-device-kind-close
-
             <file-system-mapping>
             file-system-mapping
             file-system-mapping?
@@ -293,26 +282,6 @@ initrd code."
      (create-mount-point? #t)
      (check? #f))))
 
-
-
-;;;
-;;; Mapped devices, for Linux's device-mapper.
-;;;
-
-(define-record-type* <mapped-device> mapped-device
-  make-mapped-device
-  mapped-device?
-  (source    mapped-device-source)                ;string
-  (target    mapped-device-target)                ;string
-  (type      mapped-device-type))                 ;<mapped-device-kind>
-
-(define-record-type* <mapped-device-type> mapped-device-kind
-  make-mapped-device-kind
-  mapped-device-kind?
-  (open      mapped-device-kind-open)             ;source target -> gexp
-  (close     mapped-device-kind-close             ;source target -> gexp
-             (default (const #~(const #f)))))
-
 
 ;;;
 ;;; Shared file systems, for VMs/containers.
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index a94e3ab2d5..07ad3cbcb2 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -255,7 +255,7 @@ Welcome to the installation of the Guix System Distribution!
 
 There is NO WARRANTY, to the extent permitted by law.  In particular, you may
 LOSE ALL YOUR DATA as a side effect of the installation process.  Furthermore,
-it is alpha software, so it may BREAK IN UNEXPECTED WAYS.
+it is 'beta' software, so it may contain bugs.
 
 You have been warned.  Thanks for being so brave.
 ")))
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 8ca74104fb..484bce71c4 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -32,6 +32,7 @@
   #:use-module ((gnu packages make-bootstrap)
                 #:select (%guile-static-stripped))
   #:use-module (gnu system file-systems)
+  #:use-module (gnu system mapped-devices)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
@@ -228,7 +229,14 @@ loaded at boot time in the order in which they appear."
          (use-modules (gnu build linux-boot)
                       (guix build utils)
                       (guix build bournish)   ;add the 'bournish' meta-command
-                      (srfi srfi-26))
+                      (srfi srfi-26)
+
+                      ;; FIXME: The following modules are for
+                      ;; LUKS-DEVICE-MAPPING.  We should instead propagate
+                      ;; this info via gexps.
+                      ((gnu build file-systems)
+                       #:select (find-partition-by-luks-uuid))
+                      (rnrs bytevectors))
 
          (with-output-to-port (%make-void-port "w")
            (lambda ()
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
new file mode 100644
index 0000000000..450b4737ac
--- /dev/null
+++ b/gnu/system/mapped-devices.scm
@@ -0,0 +1,130 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system mapped-devices)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
+  #:autoload   (gnu packages cryptsetup) (cryptsetup)
+  #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match)
+  #:export (mapped-device
+            mapped-device?
+            mapped-device-source
+            mapped-device-target
+            mapped-device-type
+
+            mapped-device-kind
+            mapped-device-kind?
+            mapped-device-kind-open
+            mapped-device-kind-close
+
+            device-mapping-service-type
+            device-mapping-service
+
+            luks-device-mapping))
+
+;;; Commentary:
+;;;
+;;; This module supports "device mapping", a concept implemented by Linux's
+;;; device-mapper.
+;;;
+;;; Code:
+
+(define-record-type* <mapped-device> mapped-device
+  make-mapped-device
+  mapped-device?
+  (source    mapped-device-source)                ;string
+  (target    mapped-device-target)                ;string
+  (type      mapped-device-type))                 ;<mapped-device-kind>
+
+(define-record-type* <mapped-device-type> mapped-device-kind
+  make-mapped-device-kind
+  mapped-device-kind?
+  (open      mapped-device-kind-open)             ;source target -> gexp
+  (close     mapped-device-kind-close             ;source target -> gexp
+             (default (const #~(const #f)))))
+
+
+;;;
+;;; Device mapping as a Shepherd service.
+;;;
+
+(define device-mapping-service-type
+  (shepherd-service-type
+   'device-mapping
+   (match-lambda
+     (($ <mapped-device> source target
+                         ($ <mapped-device-type> open close))
+      (shepherd-service
+       (provision (list (symbol-append 'device-mapping- (string->symbol target))))
+       (requirement '(udev))
+       (documentation "Map a device node using Linux's device mapper.")
+       (start #~(lambda () #$(open source target)))
+       (stop #~(lambda _ (not #$(close source target))))
+       (respawn? #f)
+
+       ;; Add the modules needed by LUKS-DEVICE-MAPPING.
+       ;; FIXME: This info should be propagated via gexps.
+       (modules `((rnrs bytevectors)              ;bytevector?
+                  ((gnu build file-systems)
+                   #:select (find-partition-by-luks-uuid))
+                  ,@%default-modules))
+       (imported-modules `((gnu build file-systems)
+                           ,@%default-imported-modules)))))))
+
+(define (device-mapping-service mapped-device)
+  "Return a service that sets up @var{mapped-device}."
+  (service device-mapping-service-type mapped-device))
+
+
+;;;
+;;; Common device mappings.
+;;;
+
+(define (open-luks-device source target)
+  "Return a gexp that maps SOURCE to TARGET as a LUKS device, using
+'cryptsetup'."
+  #~(let ((source #$source))
+      (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
+                      "open" "--type" "luks"
+
+                      ;; Note: We cannot use the "UUID=source" syntax here
+                      ;; because 'cryptsetup' implements it by searching the
+                      ;; udev-populated /dev/disk/by-id directory but udev may
+                      ;; be unavailable at the time we run this.
+                      (if (bytevector? source)
+                          (or (find-partition-by-luks-uuid source)
+                              (error "LUKS partition not found" source))
+                          source)
+
+                      #$target))))
+
+(define (close-luks-device source target)
+  "Return a gexp that closes TARGET, a LUKS device."
+  #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup")
+                    "close" #$target)))
+
+(define luks-device-mapping
+  ;; The type of LUKS mapped devices.
+  (mapped-device-kind
+   (open open-luks-device)
+   (close close-luks-device)))
+
+;;; mapped-devices.scm ends here