diff --git a/AUTHORS b/AUTHORS
index c4506d2c9b3d44a939d89060173c7f483eebb877..fa1835b70765065a1e60a633add5bef177ca0861 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -35,4 +35,5 @@ alphabetical order):
           David Thompson <dthompson2@worcester.edu>
            Paul van der Walt <paul@denknerd.org>
         Mark H. Weaver <mhw@netris.org>
+           Andy Wingo <wingo@pobox.com>
         Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
diff --git a/Makefile.am b/Makefile.am
index cf709986ed16c47e75f4f0c294474b00ffcb00a0..d54e281163a8249a6865728013f2d117a47ff036 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -105,6 +105,7 @@ MODULES =					\
   guix/scripts/import/gnu.scm			\
   guix/scripts/import/nix.scm			\
   guix/scripts/environment.scm			\
+  guix/scripts/publish.scm			\
   guix.scm					\
   $(GNU_SYSTEM_MODULES)
 
@@ -180,7 +181,8 @@ SCM_TESTS =					\
   tests/profiles.scm				\
   tests/syscalls.scm				\
   tests/gremlin.scm				\
-  tests/lint.scm
+  tests/lint.scm				\
+  tests/publish.scm
 
 if HAVE_GUILE_JSON
 
@@ -203,6 +205,7 @@ SH_TESTS =					\
   tests/guix-gc.sh				\
   tests/guix-hash.sh				\
   tests/guix-package.sh				\
+  tests/guix-package-net.sh			\
   tests/guix-system.sh				\
   tests/guix-archive.sh				\
   tests/guix-authenticate.sh			\
diff --git a/doc/guix.texi b/doc/guix.texi
index 4e549ac2ef48a8fb840946836df0f3f9f752e5dd..42f616548dc74456003c8d052236f121bd452e31 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -121,6 +121,7 @@ Utilities
 * Invoking guix refresh::       Updating package definitions.
 * Invoking guix lint::          Finding errors in package definitions.
 * Invoking guix environment::   Setting up development environments.
+* Invoking guix publish::       Sharing substitutes.
 
 GNU Distribution
 
@@ -337,7 +338,8 @@ goes through the daemon.  For instance, command-line tools such as
 daemon (@i{via} remote procedure calls) to instruct it what to do.
 
 The following sections explain how to prepare the build daemon's
-environment.
+environment.  Also @ref{Substitutes}, for information on how to allow
+the daemon to download pre-built binaries.
 
 @menu
 * Build Environment Setup::     Preparing the isolated build environment.
@@ -383,15 +385,6 @@ Bash syntax and the @code{shadow} commands):
   done
 @end example
 
-The @file{/gnu/store} directory (or whichever was specified with the
-@code{--with-store-dir} option) must have ownership and permissions as
-follows:
-
-@example
-# chgrp guix-builder /gnu/store
-# chmod 1775 /gnu/store
-@end example
-
 @noindent
 The @code{guix-daemon} program may then be run as @code{root} with:
 
@@ -1150,9 +1143,8 @@ When @var{pattern} is specified, delete the matching generations.  When
 specified duration match.  For instance, @code{--delete-generations=1m}
 deletes generations that are more than one month old.
 
-If the current generation matches, it is deleted atomically---i.e., by
-switching to the previous available generation.  Note that the zeroth
-generation is never deleted.
+If the current generation matches, it is @emph{not} deleted.  Also, the
+zeroth generation is never deleted.
 
 Note that deleting generations prevents roll-back to them.
 Consequently, this command must be used with care.
@@ -1323,7 +1315,9 @@ guix package}).
 @cindex garbage collector
 Packages that are installed but not used may be @dfn{garbage-collected}.
 The @command{guix gc} command allows users to explicitly run the garbage
-collector to reclaim space from the @file{/gnu/store} directory.
+collector to reclaim space from the @file{/gnu/store} directory.  It is
+the @emph{only} way to remove files from @file{/gnu/store}---removing
+files or directories manually may break it beyond repair!
 
 The garbage collector has a set of known @dfn{roots}: any file under
 @file{/gnu/store} reachable from a root is considered @dfn{live} and
@@ -1962,6 +1956,25 @@ Python package is used to run the script can be specified with the
 @code{#:python} parameter.
 @end defvr
 
+@defvr {Scheme Variable} haskell-build-system
+This variable is exported by @code{(guix build-system haskell)}.  It
+implements the Cabal build procedure used by Haskell packages, which
+involves running @code{runhaskell Setup.hs configure
+--prefix=/gnu/store/@dots{}} and @code{runhaskell Setup.hs build}.
+Instead of installing the package by running @code{runhaskell Setup.hs
+install}, to avoid trying to register libraries in the read-only
+compiler store directory, the build system uses @code{runhaskell
+Setup.hs copy}, followed by @code{runhaskell Setup.hs register}.  In
+addition, the build system generates the package documentation by
+running @code{runhaskell Setup.hs haddock}, unless @code{#:haddock? #f}
+is passed.  Optional Haddock parameters can be passed with the help of
+the @code{#:haddock-flags} parameter.  If the file @code{Setup.hs} is
+not found, the build system looks for @code{Setup.lhs} instead.
+
+Which Haskell compiler is used can be specified with the @code{#:haskell}
+parameter which defaults to @code{ghc}. 
+@end defvr
+
 Lastly, for packages that do not need anything as sophisticated, a
 ``trivial'' build system is provided.  It is trivial in the sense that
 it provides basically no support: it does not pull any implicit inputs,
@@ -2515,7 +2528,7 @@ To illustrate the idea, here is an example of a gexp:
   #~(begin
       (mkdir #$output)
       (chdir #$output)
-      (symlink (string-append #$coreutils "/bin/ls") 
+      (symlink (string-append #$coreutils "/bin/ls")
                "list-files")))
 @end example
 
@@ -2765,6 +2778,7 @@ programming interface of Guix in a convenient way.
 * Invoking guix refresh::       Updating package definitions.
 * Invoking guix lint::          Finding errors in package definitions.
 * Invoking guix environment::   Setting up development environments.
+* Invoking guix publish::       Sharing substitutes.
 @end menu
 
 @node Invoking guix build
@@ -3427,6 +3441,54 @@ environment.
 It also supports all of the common build options that @command{guix
 build} supports (@pxref{Invoking guix build, common build options}).
 
+@node Invoking guix publish
+@section Invoking @command{guix publish}
+
+The purpose of @command{guix publish} is to enable users to easily share
+their store with others.  When @command{guix publish} runs, it spawns an
+HTTP server which allows anyone with network access to obtain
+substitutes from it.  This means that any machine running Guix can also
+act as if it were a build farm, since the HTTP interface is
+Hydra-compatible.
+
+For security, each substitute is signed, allowing recipients to check
+their authenticity and integrity (@pxref{Substitutes}).  Because
+@command{guix publish} uses the system's signing key, which is only
+readable by the system administrator, it must run as root.
+
+The general syntax is:
+
+@example
+guix publish @var{options}@dots{}
+@end example
+
+Running @command{guix publish} without any additional arguments will
+spawn an HTTP server on port 8080:
+
+@example
+guix publish
+@end example
+
+Once a publishing server has been authorized (@pxref{Invoking guix
+archive}), the daemon may download substitutes from it:
+
+@example
+guix-daemon --substitute-urls=http://example.org:8080
+@end example
+
+The following options are available:
+
+@table @code
+@item --port=@var{port}
+@itemx -p @var{port}
+Listen for HTTP requests on @var{port}.
+
+@item --repl[=@var{port}]
+@itemx -r [@var{port}]
+Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile
+Reference Manual}) on @var{port} (37146 by default).
+@end table
+
 @c *********************************************************************
 @node GNU Distribution
 @chapter GNU Distribution
@@ -3783,8 +3845,7 @@ kernel, initial RAM disk, and boot loader looks like this:
                 (comment "Bob's sister")
                 (home-directory "/home/alice"))))
   (packages (cons emacs %base-packages))
-  (services (cons (lsh-service #:port 2222 #:root-login? #t
-                               #:initialize? #t)
+  (services (cons (lsh-service #:port 2222 #:root-login? #t)
                   %base-services)))
 @end lisp
 
@@ -4508,8 +4569,9 @@ external name servers do not even need to be queried.
 @end defvr
 
 
-@deffn {Monadic Procedure} syslog-service
-Return a service that runs @code{syslogd} with reasonable default
+@deffn {Monadic Procedure} syslog-service [#:config-file #f]
+Return a service that runs @code{syslogd}.  If configuration file name
+@var{config-file} is not specified, use some reasonable default
 settings.
 @end deffn
 
@@ -4602,7 +4664,7 @@ Furthermore, @code{(gnu services ssh)} provides the following service.
        [#:allow-empty-passwords? #f] [#:root-login? #f] @
        [#:syslog-output? #t] [#:x11-forwarding? #t] @
        [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @
-       [#:public-key-authentication? #t] [#:initialize? #f]
+       [#:public-key-authentication? #t] [#:initialize? #t]
 Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}.
 @var{host-key} must designate a file containing the host key, and readable
 only by root.
@@ -5378,7 +5440,9 @@ facility is implemented in the @code{(gnu packages)} module.
 @cindex customization, of packages
 @cindex package module search path
 Users can store package definitions in modules with different
-names---e.g., @code{(my-packages emacs)}.  These package definitions
+names---e.g., @code{(my-packages emacs)}@footnote{Note that the file
+name and module name must match.  @xref{Modules and the File System,,,
+guile, GNU Guile Reference Manual}, for details.}  These package definitions
 will not be visible by default.  Thus, users can invoke commands such as
 @command{guix package} and @command{guix build} have to be used with the
 @code{-e} option so that they know where to find the package, or use the
diff --git a/gnu-system.am b/gnu-system.am
index 5938eeaec71febda579e8db128aa8835b15be63b..199a944b5d3ad47a44bd37bd07cf8bf164d35ce7 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -93,6 +93,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/enchant.scm			\
   gnu/packages/engineering.scm			\
   gnu/packages/enlightenment.scm		\
+  gnu/packages/fcitx.scm			\
   gnu/packages/feh.scm                          \
   gnu/packages/file.scm				\
   gnu/packages/firmware.scm			\
@@ -437,13 +438,6 @@ dist_patch_DATA =						\
   gnu/packages/patches/guix-test-networking.patch		\
   gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
   gnu/packages/patches/hop-bigloo-4.0b.patch			\
-  gnu/packages/patches/icecat-bug-1127780.patch			\
-  gnu/packages/patches/icecat-bug-1144991.patch			\
-  gnu/packages/patches/icecat-bug-1145870.patch			\
-  gnu/packages/patches/icecat-bug-1146339.patch			\
-  gnu/packages/patches/icecat-CVE-2015-0817.patch		\
-  gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch		\
-  gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch		\
   gnu/packages/patches/irrlicht-mesa-10.patch			\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
   gnu/packages/patches/kmod-module-directory.patch		\
@@ -456,13 +450,14 @@ dist_patch_DATA =						\
   gnu/packages/patches/libevent-dns-tests.patch			\
   gnu/packages/patches/liboop-mips64-deplibs-fix.patch		\
   gnu/packages/patches/libmad-mips-newgcc.patch			\
-  gnu/packages/patches/librep-rules.mk.patch			\
   gnu/packages/patches/libtheora-config-guess.patch		\
   gnu/packages/patches/libtool-skip-tests.patch			\
   gnu/packages/patches/libssh-CVE-2014-0017.patch		\
   gnu/packages/patches/libvpx-fix-armhf-link.patch		\
   gnu/packages/patches/libvpx-fix-ssse3-quantize.patch		\
   gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch	\
+  gnu/packages/patches/linux-libre-libreboot-fix.patch		\
+  gnu/packages/patches/linux-libre-vblank-fix.patch		\
   gnu/packages/patches/lirc-localstatedir.patch			\
   gnu/packages/patches/lm-sensors-hwmon-attrs.patch		\
   gnu/packages/patches/lua51-liblua-so.patch                    \
@@ -496,6 +491,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/patchelf-rework-for-arm.patch		\
   gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
   gnu/packages/patches/pavucontrol-sigsegv.patch		\
+  gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
   gnu/packages/patches/perl-no-sys-dirs.patch			\
   gnu/packages/patches/perl-tk-x11-discover.patch		\
   gnu/packages/patches/petsc-fix-threadcomm.patch		\
@@ -505,6 +501,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/portaudio-audacity-compat.patch		\
   gnu/packages/patches/procps-make-3.82.patch			\
   gnu/packages/patches/pulseaudio-fix-mult-test.patch		\
+  gnu/packages/patches/pulseaudio-longer-test-timeout.patch	\
   gnu/packages/patches/pybugz-encode-error.patch		\
   gnu/packages/patches/pybugz-stty.patch			\
   gnu/packages/patches/pyqt-configure.patch			\
@@ -525,7 +522,6 @@ dist_patch_DATA =						\
   gnu/packages/patches/slim-config.patch			\
   gnu/packages/patches/slim-sigusr1.patch			\
   gnu/packages/patches/soprano-find-clucene.patch		\
-  gnu/packages/patches/source-highlight-regexrange-test.patch	\
   gnu/packages/patches/superlu-dist-scotchmetis.patch		\
   gnu/packages/patches/tcsh-fix-autotest.patch			\
   gnu/packages/patches/teckit-cstdio.patch			\
@@ -556,6 +552,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch	\
   gnu/packages/patches/xf86-video-r128-glibc-2.20.patch		\
   gnu/packages/patches/xf86-video-siliconmotion-remove-mibstore.patch \
+  gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch	\
   gnu/packages/patches/xf86-video-sis-update-api.patch		\
   gnu/packages/patches/xf86-video-tdfx-remove-mibstore.patch	\
   gnu/packages/patches/xf86-video-tga-remove-mibstore.patch	\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 2216c0df8c1aad8523c58983a89d1707ceceac2a..6ef0fb6de7227d710595a04f614ba46f8437df47 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -35,7 +35,7 @@ (define-module (gnu packages)
   #:use-module (srfi srfi-39)
   #:export (search-patch
             search-bootstrap-binary
-            %patch-directory
+            %patch-path
             %bootstrap-binaries-path
             %package-module-path
 
diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm
index 7da3b5eb4ae76aabf83446baaf888774560ef406..7573870a4c85c96bf3f0b625071f0a56353b731b 100644
--- a/gnu/packages/apl.scm
+++ b/gnu/packages/apl.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,14 +30,14 @@ (define-module (gnu packages apl)
 (define-public apl
   (package
     (name "apl")
-    (version "1.4")
+    (version "1.5")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz"))
       (sha256
        (base32
-        "0fl9l4jb5wpnb54kqkphavi657z1cv15h9qj2rqy2shf33dk3nk9"))))
+        "0h4diq3wfbdwxp5nm0z4b0p1zq13lwip0y7v28r9v0mbbk8xsfh1"))))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org/software/apl/")
     (inputs
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index aa94dda7c77ed3d63dbeeb1887b37e2026133f86..8fb3da7fa135ad7a2ac442107d9d66942f8bb6bc 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -31,10 +31,13 @@ (define-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages file)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
@@ -233,6 +236,39 @@ (define-public azr3
 plugins are provided.")
     (license license:gpl2)))
 
+(define-public csound
+  (package
+    (name "csound")
+    (version "6.04")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/csound/csound6/Csound"
+                    version "/Csound" version ".tar.gz"))
+              (sha256
+               (base32
+                "1030w38lxdwjz1irr32m9cl0paqmgr02lab2m7f7j1yihwxj1w0g"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("boost" ,boost)
+       ("pulseaudio" ,pulseaudio)
+       ("libsndfile" ,libsndfile)
+       ("liblo" ,liblo)
+       ("ladspa" ,ladspa)
+       ("jack" ,jack-1)
+       ("gettext" ,gnu-gettext)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("zlib" ,zlib)))
+    (home-page "http://csound.github.io/")
+    (synopsis "Sound and music computing system")
+    (description
+     "Csound is a user-programmable and user-extensible sound processing
+language and software synthesizer.")
+    (license license:lgpl2.1+)))
+
 (define-public clalsadrv
   (package
     (name "clalsadrv")
@@ -995,6 +1031,30 @@ (define-public libsbsms
     ;; containing gpl2.
     (license license:gpl2)))
 
+(define-public wavpack
+  (package
+    (name "wavpack")
+    (version "4.70.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.wavpack.com/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "191h8hv8qk72hfh1crg429i9yq3cminwqb249sy9zadbn1wy7b9c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; wavpack.pc.in lacks path substitution for 'exec_prefix'.
+       (list (string-append "--libdir=" %output "/lib"))))
+    (home-page "http://www.wavpack.com/")
+    (synopsis "Hybrid lossless audio codec")
+    (description
+     "WavPack is an audio compression format with lossless, lossy and hybrid
+compression modes.  This package contains command-line programs and library to
+encode and decode wavpack files.")
+    (license license:bsd-3)))
+
 (define-public soundtouch
   (package
     (name "soundtouch")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 3725f3ffe528d8270cc2d0d643b3f328297ee5bd..9813d07e9cf308c2435a6654ec7b3d342062fff9 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -33,6 +33,7 @@ (define-module (gnu packages bioinformatics)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages vim)
@@ -360,6 +361,30 @@ (define-public clipper
      "CLIPper is a tool to define peaks in CLIP-seq datasets.")
     (license license:gpl2)))
 
+(define-public clustal-omega
+  (package
+    (name "clustal-omega")
+    (version "1.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.clustal.org/omega/clustal-omega-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "02ibkx0m0iwz8nscg998bh41gg251y56cgh86bvyrii5m8kjgwqf"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("argtable" ,argtable)))
+    (home-page "http://www.clustal.org/omega/")
+    (synopsis "Multiple sequence aligner for protein and DNA/RNA")
+    (description
+     "Clustal-Omega is a general purpose multiple sequence alignment (MSA)
+program for protein and DNA/RNA.  It produces high quality MSAs and is capable
+of handling data-sets of hundreds of thousands of sequences in reasonable
+time.")
+    (license license:gpl2+)))
+
 (define-public crossmap
   (package
     (name "crossmap")
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 14af246e997bd37fb16824ce5cdf69d529591943..4342dc56d1e0487942e2051e6d0e4a874801370f 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -26,7 +26,6 @@ (define-module (gnu packages commencement)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages ed)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index dd4eb23cb4135266e7ddeb2f44da0dd7cd0407cc..3b9b7cf3f82efcb09856f06b922d923078ff97ab 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -28,6 +28,7 @@ (define-module (gnu packages emacs)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages gnutls)
@@ -92,6 +93,7 @@ (define-public emacs
        ("libpng" ,libpng)
        ("zlib" ,zlib)
 
+       ("librsvg" ,librsvg)
        ("libxpm" ,libxpm)
        ("libxml2" ,libxml2)
        ("libice" ,libice)
@@ -126,7 +128,7 @@ (define-public emacs-no-x
     (inputs (fold alist-delete
                   (package-inputs emacs)
                   '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
-                    "libpng" "libxpm" "libice" "libsm"
+                    "libpng" "librsvg" "libxpm" "libice" "libsm"
 
                     ;; D-Bus depends on libx11, so remove it as well.
                     "dbus")))))
diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm
new file mode 100644
index 0000000000000000000000000000000000000000..925d5ac89bb50857586e0a875df8f8486f51cd5c
--- /dev/null
+++ b/gnu/packages/fcitx.scm
@@ -0,0 +1,87 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;;
+;;; 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 fcitx)
+  #:use-module ((guix licenses) #:select (gpl2+))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages doxygen)
+  #:use-module (gnu packages enchant)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
+
+(define-public fcitx
+  (package
+    (name "fcitx")
+    (version "4.2.8.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.fcitx-im.org/fcitx/"
+                                  name "-" version "_dict.tar.xz"))
+              (sha256
+               (base32
+                "15ymd42kg920ri0f8fymq3i68g8k1kgpmdlnk9jf5fvnz6g4w0wi"))))
+    (build-system cmake-build-system)
+    (outputs '("out" "gtk2" "gtk3"))
+    (arguments
+     `(#:configure-flags
+       (list "-DENABLE_TEST=ON"
+             (string-append "-DXKB_RULES_XML_FILE="
+                            (assoc-ref %build-inputs "xkeyboard-config")
+                            "/share/X11/xkb/rules/evdev.xml")
+             "-DENABLE_GTK2_IM_MODULE=ON"
+             "-DENABLE_GTK3_IM_MODULE=ON"
+             (string-append "-DGTK2_IM_MODULEDIR="
+                            (assoc-ref %outputs "gtk2")
+                            "/lib/gtk-2.0/2.10.0/immodules")
+             (string-append "-DGTK3_IM_MODULEDIR="
+                            (assoc-ref %outputs "gtk3")
+                            "/lib/gtk-3.0/3.0.0/immodules")
+             ;; XXX: Enable GObject Introspection and Qt4 support.
+             "-DENABLE_GIR=OFF"
+             "-DENABLE_QT=OFF"
+             "-DENABLE_QT_IM_MODULE=OFF")))
+    (native-inputs
+     `(("doxygen"    ,doxygen)
+       ("glib:bin"   ,glib "bin")    ; for glib-genmarshal
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("dbus"             ,dbus)
+       ("enchant"          ,enchant)
+       ("gettext"          ,gnu-gettext)
+       ("gtk2"             ,gtk+-2)
+       ("gtk3"             ,gtk+)
+       ("icu4c"            ,icu4c)
+       ("iso-codes"        ,iso-codes)
+       ("libxkbfile"       ,libxkbfile)
+       ("libxml2"          ,libxml2)
+       ("xkeyboard-config" ,xkeyboard-config)))
+    (home-page "http://fcitx-im.org")
+    (synopsis "Input method framework")
+    (description
+     "Fcitx is an input method framework with extension support.  It has
+Pinyin, Quwei and some table-based (Wubi, Cangjie, Erbi, etc.) input methods
+built-in.")
+    (license gpl2+)))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 0ee639d20a1c592ab15d399f4c15d95ffd006973..f65a5bbf9d587730ced6a908b40072ae409a2142 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,10 +18,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages freedesktop)
-  #:use-module ((guix licenses) #:select (expat))
+  #:use-module ((guix licenses) #:select (expat x11))
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg))
 
 (define-public xdg-utils
   (package
@@ -43,4 +48,30 @@ (define-public xdg-utils
     (description "The xdg-utils package is a set of simple scripts that
 provide basic desktop integration functions in the framework of the
 freedesktop.org project.")
-    (license expat)))
\ No newline at end of file
+    (license expat)))
+
+(define-public libinput
+  (package
+    (name "libinput")
+    (version "0.13.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://freedesktop.org/software/libinput/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "06n6ih2bfr957rprsgjxhi6f7m96wmf4kgac8y0ispsjvrzszv3c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("libudev" ,eudev))) ; required by libinput.pc
+    (inputs
+     `(("libevdev" ,libevdev)
+       ("mtdev" ,mtdev)))
+    (home-page "http://www.freedesktop.org/wiki/Software/libinput/")
+    (synopsis "Input devices handling library")
+    (description
+     "Libinput is a library to handle input devices for display servers and
+other applications that need to directly deal with input devices.")
+    (license x11)))
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index e27103778cbd2f6f05266560e4493199d3579db4..725a8e7e9ef52499a55918d7a81c930543308c0b 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,9 +21,12 @@
 (define-module (gnu packages gd)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages pkg-config)
@@ -66,3 +70,78 @@ (define-public gd
 most common applications of GD involve website development.")
     (license (non-copyleft "file://COPYING"
                         "See COPYING file in the distribution."))))
+
+(define-public perl-gd
+  (package
+    (name "perl-gd")
+    (version "2.56")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LD/LDS/"
+                           "GD-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ya8f9hpiax8j29vwaiwlvvgah0vkyvpzva28r8231nyk0f3s40z"))
+       (patches
+        (list
+         (search-patch "perl-gd-options-passthrough-and-fontconfig.patch")))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build))) ;needs Module::Build >= 0.42
+    (inputs
+     `(("gd" ,gd)
+       ("zlib" ,zlib)
+       ("png" ,libpng)
+       ("ft" ,freetype)
+       ("jpeg" ,libjpeg)
+       ("fontconfig" ,fontconfig)))
+    (arguments
+     ;; We must use Build.PL for building because Makefile.PL fails to build
+     ;; the XS source.
+     `(#:module-build-flags (map (lambda (i)
+                                   (string-append "--lib_" i "_path="
+                                                  (assoc-ref %build-inputs i)))
+                                 '("zlib" "png" "ft" "jpeg" "fontconfig"))
+       #:phases (alist-cons-after
+                 'configure 'clear-autogenerated-files
+                 (lambda _
+                   ;; This file is autogenerated by its .PLS script at build
+                   ;; time, but file creation fails because that file already
+                   ;; exists in the distribution with non-writable
+                   ;; permissions, so delete it first.
+                   (delete-file "bdf_scripts/bdf2gdfont.pl"))
+                 %standard-phases)))
+    (home-page "http://search.cpan.org/dist/GD")
+    (synopsis "Perl interface to the GD graphics library")
+    (description "GD.pm is an autoloadable interface module for libgd, a
+popular library for creating and manipulating PNG files.  With this library
+you can create PNG images on the fly or modify existing files.")
+    (license (package-license perl))))
+
+(define-public perl-gd-securityimage
+  (package
+    (name "perl-gd-securityimage")
+    (version "1.73")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BU/BURAK/"
+                           "GD-SecurityImage-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1kaxs67rfd4w46lxgcg3pa05a596l0h1k8n4zk2gwrrar4022wpx"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-gd" ,perl-gd)
+       ("perl-image-magick" ,perl-image-magick)))
+    (home-page "http://search.cpan.org/dist/GD-SecurityImage")
+    (synopsis "Security image generator.")
+    (description "This module provides a basic interface to create
+security (captcha) images.  The final output is the actual graphic data, the
+mime type of the graphic, and the created random string.  The module also has
+some \"styles\" that are used to create the background (or foreground) of the
+image.")
+    (license (package-license perl))))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index bf19b9ec823c3e85b3f8ebf81114195c9d19f14d..78fd0f0107865b77e56970a99db4946680218248 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,8 @@ (define-module (gnu packages gnome)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (gnu packages)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages glib)
@@ -39,8 +42,10 @@ (define-module (gnu packages gnome)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gnutls)
   #:use-module (gnu packages iso-codes)
   #:use-module (gnu packages libcanberra)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages image)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -48,6 +53,7 @@ (define-module (gnu packages gnome)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages ncurses))
@@ -252,7 +258,7 @@ (define-public evince
 (define-public gsettings-desktop-schemas
   (package
     (name "gsettings-desktop-schemas")
-    (version "3.10.0")
+    (version "3.16.0")
     (source
      (origin
       (method url-fetch)
@@ -261,13 +267,14 @@ (define-public gsettings-desktop-schemas
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "1km8qxwrzvravmg8j680qv64bwnwbdgrmy8bqmhs0dgxn2b1as6a"))))
+        "02dp1hl38k16m9abydfca1n236mdazqdz0p3n92s7haf9mdqsf16"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)))
     (native-inputs
      `(("intltool" ,intltool)
        ("glib" ,glib "bin")                       ; glib-compile-schemas, etc.
+       ("gobject-introspection" ,gobject-introspection)
        ("pkg-config" ,pkg-config)))
     (home-page "https://launchpad.net/gsettings-desktop-schemas")
     (synopsis
@@ -1398,7 +1405,7 @@ (define-public vala
 (define-public vte
   (package
     (name "vte")
-    (version "0.38.2")
+    (version "0.40.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1406,7 +1413,7 @@ (define-public vte
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1rbxrigff9yszbgdw0gw4c2saz4d1hbbpz21phzxx14w49wvmnmj"))))
+                "0lnq0bgkmsixjwmfacb2ch9qfjqjxa8zkk1hiv3l29kgca0n3nal"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1416,7 +1423,8 @@ (define-public vte
        ("glib" ,glib "bin") ; for glib-genmarshal, etc.
        ("xmllint" ,libxml2)))
     (propagated-inputs
-     `(("gtk+" ,gtk+))) ; required by libvte-2.91.pc
+     `(("gtk+" ,gtk+)                             ;required by vte-2.91.pc
+       ("gnutls" ,gnutls)))                       ;ditto
     (arguments
      `(#:phases
        (alist-cons-before
@@ -1622,10 +1630,114 @@ (define-public python2-rsvg
     ;; of gnome-python-desktop is given in 'COPYING'.
     (license license:lgpl2.1+)))
 
+(define-public glib-networking
+  (package
+    (name "glib-networking")
+    (version "2.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/glib-networking/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0ij33bhvn7y5gagx4sbrw906dsjjjs9dllxn73pzv6x97c6k92lg"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       ;; FIXME: ca-certificates.crt is not available in the build environment.
+       '("--with-ca-certificates=no")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before configure patch-giomoduledir
+                     ;; Install GIO modules into $out/lib/gio/modules.
+                     (lambda _
+                       (substitute* "configure"
+                         (("GIO_MODULE_DIR=.*")
+                          (string-append "GIO_MODULE_DIR=" %output
+                                         "/lib/gio/modules\n"))))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("glib" ,glib)
+       ("gnutls" ,gnutls)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("p11-kit" ,p11-kit)))
+    (home-page "http://www.gnome.org")
+    (synopsis "Network-related GIO modules")
+    (description
+     "This package contains various network related extensions for the GIO
+library.")
+    (license license:lgpl2.0+)))
+
+(define-public libsoup
+  (package
+    (name "libsoup")
+    (version "2.50.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/libsoup/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0yv61y5vfar1rfksa6f53zhfw9wcb39zjix8gqc1ff5gqid3c08y"))))
+    (build-system gnu-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:make-flags '("CC=gcc") ; for g-ir-scanner
+       #:configure-flags
+       (list (string-append "--with-html-dir="
+                            (assoc-ref %outputs "doc")
+                            "/share/gtk-doc/html")
+             ;; To find GIO modules from glib-networking.
+             (string-append "GIO_EXTRA_MODULES="
+                            (assoc-ref %build-inputs "glib-networking")
+                            "/lib/gio/modules"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before configure disable-unconnected-socket-test
+                     ;; This test fails due to missing /etc/nsswitch.conf
+                     ;; in the build environment.
+                     (lambda _
+                       (substitute* "tests/socket-test.c"
+                         ((".*/sockets/unconnected.*") ""))
+                       #t))
+         (add-before check unset-LC_ALL
+                     ;; The 'check-local' target runs 'env LANG=C sort -u',
+                     ;; unset 'LC_ALL' to make 'LANG' working.
+                     (lambda _
+                       (unsetenv "LC_ALL")
+                       #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin") ; for glib-mkenums
+       ("gobject-introspection" ,gobject-introspection)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ;; These are needed for the tests.
+       ;; FIXME: Add PHP once available.
+       ("curl" ,curl)
+       ("httpd" ,httpd)))
+    (propagated-inputs
+     ;; libsoup-2.4.pc refers to all these.
+     `(("glib" ,glib)
+       ("libxml2" ,libxml2)))
+    (inputs
+     `(("glib-networking" ,glib-networking)
+       ("sqlite" ,sqlite)))
+    (home-page "https://live.gnome.org/LibSoup/")
+    (synopsis "GLib-based HTTP Library")
+    (description
+     "LibSoup is an HTTP client/server library for GNOME.  It uses GObjects
+and the GLib main loop, to integrate well with GNOME applications.")
+    (license license:lgpl2.0+)))
+
 (define-public gnome-mines
   (package
     (name "gnome-mines")
-    (version "3.14.1")
+    (version "3.16.0")
     (source
      (origin
        (method url-fetch)
@@ -1634,7 +1746,7 @@ (define-public gnome-mines
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "0nbgvzlsznn3v83pdcx2d52r4ig1mvaijh633rjddx9rgq2ja7kv"))))
+         "0wfvqyryc1093l4dr75zv9h0jyn28z6wirdq03lm5w24qf9lvjjx"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases
@@ -1666,3 +1778,51 @@ (define-public gnome-mines
      "Mines (previously gnomine) is a puzzle game where you locate mines
 floating in an ocean using only your brain and a little bit of luck.")
     (license license:gpl2+)))
+
+(define-public gnome-terminal
+  (package
+    (name "gnome-terminal")
+    (version "3.16.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/" name "/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1s3zwqxs4crlqmh6l7s7n87pbmh2nnjdvhxlkalh58pbl0bk0qrd"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "--disable-migration" "--disable-search-provider"
+             "--without-nautilus-extension")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before configure patch-/bin/true
+                     (lambda _
+                       (substitute* "configure"
+                         (("/bin/true") (which "true"))))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("desktop-file-utils" ,desktop-file-utils)
+       ("intltool" ,intltool)
+       ("itstool" ,itstool)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("vte" ,vte)
+       ("gnutls" ,gnutls)
+       ("dconf" ,dconf)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("util-linux" ,util-linux)
+       ("vala" ,vala)))
+    (home-page "https://wiki.gnome.org/Apps/Terminal")
+    (synopsis "Terminal emulator")
+    (description
+     "GNOME Terminal is a terminal emulator application for accessing a
+UNIX shell environment which can be used to run programs available on
+your system.
+
+It supports several profiles, multiple tabs and implements several
+keyboard shortcuts.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 70b03b400abd8e4b3b52a0d6c18c638ba2bfb8fb..887bace42309cdfc4c949daac655558352abdaeb 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -20,6 +20,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages gnuzilla)
+  #:use-module ((srfi srfi-1) #:hide (zip))
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -122,15 +123,18 @@ (define-public nspr
 (define-public nss
   (package
     (name "nss")
-    (version "3.17.4")
+    (version "3.18")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                    "releases/NSS_3_17_4_RTM/src/nss-3.17.4.tar.gz"))
+              (uri (let ((version-with-underscores
+                          (string-join (string-split version #\.) "_")))
+                     (string-append
+                      "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+                      "releases/NSS_" version-with-underscores "_RTM/src/"
+                      "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "0ycxzybgn4bq0i6j5zjdjl70n3s8a742yixyik4pw8x4h4cav60x"))
+                "0h0xy9kvd2s8r438q4dfn25cgvv5dc1hkm9lb4bgrxpr5bxv13b1"))
               ;; Create nss.pc and nss-config.
               (patches (list (search-patch "nss-pkgconfig.patch")))))
     (build-system gnu-build-system)
@@ -214,22 +218,16 @@ (define-public nss
 (define-public icecat
   (package
     (name "icecat")
-    (version "31.5.0")
+    (version "31.6.0-gnu1")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnuzilla/"
-                          version "/" name "-" version ".tar.bz2"))
+                          (first (string-split version #\-)) "/"
+                          name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd"))
-      (patches (map search-patch '("icecat-bug-1127780.patch"
-                                   "icecat-CVE-2015-0817.patch"
-                                   "icecat-bug-1144991.patch"
-                                   "icecat-CVE-2015-0818-pt1.patch"
-                                   "icecat-bug-1145870.patch"
-                                   "icecat-CVE-2015-0818-pt2.patch"
-                                   "icecat-bug-1146339.patch")))))
+        "1a4l23msg4cpc4yp59q2z6xv63r6advlbnjy65v4djv6yhgnqf1i"))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 7afb9c4218b7c35c5ff2c1e0347afe078a8b84ef..ad0cfccca9bfb81c41e40223922cfa4bcb923333 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -88,11 +88,19 @@ (define-public gstreamer
        (base32
         "1bmhbhak6i5wmmb6w86jyyv8lax4gdq983la4lk4a0krz6kim020"))))
     (build-system gnu-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:make-flags '("CC=gcc") ; for g-ir-scanner.
+       #:configure-flags
+       (list (string-append "--with-html-dir="
+                            (assoc-ref %outputs "doc")
+                            "/share/gtk-doc/html"))))
     (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
     (native-inputs
      `(("bison" ,bison)
        ("flex" ,flex)
        ("glib" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python-wrapper" ,python-wrapper)))
@@ -150,6 +158,9 @@ (define-public gst-plugins-base
        (base32
         "07ampnfa6p41s0lhia62l9h8bdx3c7vxvdz93pbx64m3wycq3gbp"))))
     (build-system gnu-build-system)
+    (outputs '("out" "doc"))
+    (propagated-inputs
+     `(("gstreamer" ,gstreamer))) ; required by gstreamer-plugins-base-1.0.pc
     (inputs
      `(("cdparanoia" ,cdparanoia)
        ("orc" ,orc)
@@ -161,19 +172,25 @@ (define-public gst-plugins-base
        ("zlib" ,zlib)
        ("libXext" ,libxext)
        ("libxv" ,libxv)
-       ("alsa-lib" ,alsa-lib)
-       ("gstreamer" ,gstreamer)))
+       ("alsa-lib" ,alsa-lib)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
         ("glib" ,glib "bin")
+        ("gobject-introspection" ,gobject-introspection)
         ("python-wrapper" ,python-wrapper)))
     (arguments
-     '(#:phases
+     `(#:configure-flags
+       (list (string-append "--with-html-dir="
+                            (assoc-ref %outputs "doc")
+                            "/share/gtk-doc/html"))
+       #:phases
        (alist-cons-before
-        'configure 'patch-test-pb-utils
+        'configure 'patch
         (lambda _
           (substitute* "tests/check/libs/pbutils.c"
-            (("/bin/sh") (which "sh"))))
+            (("/bin/sh") (which "sh")))
+          ;; for g-ir-scanner.
+          (setenv "CC" "gcc"))
         %standard-phases)))
     (home-page "http://gstreamer.freedesktop.org/")
     (synopsis
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 83c839a612ee3c2dfa0ed524783254011d0a0d24..bb30f6f8fa18d97e686708ab265b78c9b683d55b 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -52,7 +53,7 @@ (define-module (gnu packages gtk)
 (define-public atk
   (package
    (name "atk")
-   (version "2.15.3")
+   (version "2.16.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -60,9 +61,15 @@ (define-public atk
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "177a9x6lz2im0mfgxv2crv0l740wy7rg5vlnb8wyyf4fmnh0q19f")))) ; 2.15.3
+              "0qp5i91kfk6rhrlam3s8ha0cz88lkyp89vsyn4pb5856c1h9hpq9"))))
    (build-system gnu-build-system)
-   (inputs `(("glib" ,glib)))
+   (outputs '("out" "doc"))
+   (arguments
+    `(#:configure-flags
+      (list (string-append "--with-html-dir="
+                           (assoc-ref %outputs "doc")
+                           "/share/gtk-doc/html"))))
+   (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
@@ -333,7 +340,7 @@ (define-public gdk-pixbuf
 (define-public at-spi2-core
   (package
    (name "at-spi2-core")
-   (version "2.10.0")
+   (version "2.16.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -341,18 +348,32 @@ (define-public at-spi2-core
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1ns44yibdgcwzwri7sr075hfs5rh5lgxkh71247a0822az3mahcn"))))
+              "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw"))))
    (build-system gnu-build-system)
-   (inputs `(("dbus" ,dbus)
-             ("glib" ,glib)
-             ("libxi" ,libxi)
-             ("libxtst" ,libxtst)))
-   (native-inputs
-     `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+   (outputs '("out" "doc"))
    (arguments
-    `(#:tests? #f)) ; FIXME: dbind/dbtest fails; one should disable tests in
-                    ; a more fine-grained way.
+    '(#:make-flags '("CC=gcc") ; for g-ir-scanner
+      #:configure-flags
+      (list (string-append "--with-html-dir="
+                           (assoc-ref %outputs "doc")
+                           "/share/gtk-doc/html"))
+      #:phases
+      (modify-phases %standard-phases
+        (replace check
+                 ;; Run test-suite under a dbus session.
+                 (lambda _
+                   (zero? (system* "dbus-launch" "make" "check")))))))
+   (propagated-inputs
+    ;; atspi-2.pc refers to all these.
+    `(("dbus" ,dbus)
+      ("glib" ,glib)))
+   (inputs
+    `(("libxi" ,libxi)
+      ("libxtst" ,libxtst)))
+   (native-inputs
+    `(("gobject-introspection" ,gobject-introspection)
+      ("intltool" ,intltool)
+      ("pkg-config" ,pkg-config)))
    (synopsis "Assistive Technology Service Provider Interface, core components")
    (description
     "The Assistive Technology Service Provider Interface, core components,
@@ -363,7 +384,7 @@ (define-public at-spi2-core
 (define-public at-spi2-atk
   (package
    (name "at-spi2-atk")
-   (version "2.10.0")
+   (version "2.16.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -371,17 +392,22 @@ (define-public at-spi2-atk
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "150sqc21difazqd53llwfdaqnwfy73bic9hia41xpfy9kcpzz9yy"))))
+              "1y9gfz1iz3wpja7s000f0bmyyvc6im5fcdl6bxwbz0v3qdgc9vvq"))))
    (build-system gnu-build-system)
-   (inputs `(("atk" ,atk)
-             ("at-spi2-core" ,at-spi2-core)
-             ("dbus" ,dbus)
-             ("glib" ,glib)))
-   (native-inputs
-     `(("pkg-config" ,pkg-config)))
    (arguments
-    `(#:tests? #f)) ; FIXME: droute/droute-test fails; one should disable
-                    ; tests in a more fine-grained way.
+    '(#:phases
+      (modify-phases %standard-phases
+        (replace check
+                 ;; Run test-suite under a dbus session.
+                 (lambda _
+                   (zero? (system* "dbus-launch" "make" "check")))))))
+   (propagated-inputs
+    `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
+   (inputs
+    `(("atk" ,atk)))
+   (native-inputs
+    `(("dbus" ,dbus) ; for testing
+      ("pkg-config" ,pkg-config)))
    (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
    (description
     "The Assistive Technology Service Provider Interface
@@ -392,7 +418,7 @@ (define-public at-spi2-atk
 (define-public gtk+-2
   (package
    (name "gtk+")
-   (version "2.24.21")
+   (version "2.24.27")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -400,20 +426,35 @@ (define-public gtk+-2
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1qyw73pr9ryqhir2h1kbx3vm70km4dg2fxrgkrdlpv0rvlb94bih"))))
+              "1x14rnjvqslpa1q19fp1qalz5sxds72amsgjk8m7769rwk511jr0"))))
    (build-system gnu-build-system)
+   (outputs '("out" "doc"))
    (propagated-inputs
     `(("atk" ,atk)
       ("gdk-pixbuf" ,gdk-pixbuf)
       ("pango" ,pango)))
+   (inputs
+    `(("cups" ,cups)
+      ("libxcomposite" ,libxcomposite)
+      ("libxcursor" ,libxcursor)
+      ("libxdamage" ,libxdamage)
+      ("libxi" ,libxi)
+      ("libxinerama" ,libxinerama)
+      ("libxrandr" ,libxrandr)))
    (native-inputs
     `(("perl" ,perl)
+      ("gettext" ,gnu-gettext)
       ("glib" ,glib "bin")
       ("gobject-introspection" ,gobject-introspection)
       ("pkg-config" ,pkg-config)
       ("python-wrapper" ,python-wrapper)))
    (arguments
     `(#:make-flags '("CC=gcc")
+      #:configure-flags
+      (list "--with-xinput=yes"
+            (string-append "--with-html-dir="
+                           (assoc-ref %outputs "doc")
+                           "/share/gtk-doc/html"))
       #:phases
       (alist-cons-before
        'configure 'disable-tests
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index a5656d0b91177500674213eae312aa752015b388..05622ca068a502413a56f19ae7d6e8fc70c4c131 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -33,22 +33,23 @@ (define-module (gnu packages haskell)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages python))
 
-;; We use bootstrap binaries with a fix version which can be used to build
-;; more versions of the GHC compiler.
-(define ghc-bootstrap-7.8.4
+(define ghc-bootstrap-x86_64-7.8.4
   (origin
     (method url-fetch)
-    (uri (string-append "https://www.haskell.org/ghc/dist/"
-                        "7.8.4/ghc-7.8.4-"
-                        (if (string-match "x86_64" (%current-system))
-                            "x86_64"
-                            "i386")
-                        "-unknown-linux-deb7.tar.xz"))
+    (uri
+     "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-x86_64-unknown-linux-deb7.tar.xz")
     (sha256
      (base32
-      (if (string-match "x86_64" (%current-system))
-          "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn"
-          "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg")))))
+      "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn"))))
+
+(define ghc-bootstrap-i686-7.8.4
+  (origin
+    (method url-fetch)
+    (uri
+     "https://www.haskell.org/ghc/dist/7.8.4/ghc-7.8.4-i386-unknown-linux-deb7.tar.xz")
+    (sha256
+     (base32
+      "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg"))))
 
 ;; 43 tests out of 3965 fail.
 ;;
@@ -99,7 +100,10 @@ (define-public ghc
        ("ghostscript" ,ghostscript)        ; for tests
        ("patchelf" ,patchelf)
        ;; GHC is built with GHC. Therefore we need bootstrap binaries.
-       ("ghc-binary" ,ghc-bootstrap-7.8.4)))
+       ("ghc-binary"
+        ,(if (string-match "x86_64" (or (%current-target-system) (%current-system)))
+             ghc-bootstrap-x86_64-7.8.4
+             ghc-bootstrap-i686-7.8.4))))
     (arguments
      `(#:test-target "test"
        ;; We get a smaller number of test failures by disabling parallel test
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 0144212b3e0e5fe92287125d78b21c6a2998d500..2a68627dc60abe5d990937d42ead72e5baf9a1c5 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +20,7 @@
 (define-module (gnu packages imagemagick)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix download)
   #:use-module ((guix licenses) #:select (fsf-free))
   #:use-module (gnu packages algebra)
@@ -90,3 +92,47 @@ (define-public imagemagick
 transform images, adjust image colors, apply various special effects, or draw
 text, lines, polygons, ellipses and Bézier curves.")
     (license (fsf-free "http://www.imagemagick.org/script/license.php"))))
+
+(define-public perl-image-magick
+  (package
+    (name "perl-image-magick")
+    (version "6.89")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JC/JCRISTY/"
+                           "PerlMagick-" version "-1.tar.gz"))
+       (sha256
+        (base32
+         "0n9afy1z5bhf9phrbahnkwhgcmijn8jggpbzwrivw1zhliliiy68"))))
+    (build-system perl-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("imagemagick" ,imagemagick)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before
+          configure image-magick-flags
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((im (assoc-ref inputs "imagemagick")))
+              (substitute* "Makefile.PL"
+                (("my \\$INC_magick = .*")
+                 "my $INC_magick = `pkg-config --cflags ImageMagick`;\n")
+                (("my \\$LIBS_magick = .*")
+                 "my $LIBS_magick = `pkg-config --libs ImageMagick`;\n")))))
+         (add-before
+          check skip-mpeg-tests
+          (lambda _
+            ;; TODO: MPEG tests fail even though our imagemagick supports
+            ;; MPEG.  Has been reported elsewhere,
+            ;; http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=25036,
+            ;; so skip for now.
+            (delete-file "t/mpeg/read.t"))))))
+    (home-page "http://search.cpan.org/dist/PerlMagick")
+    (synopsis "Perl interface to ImageMagick")
+    (description "This Perl extension allows the reading, manipulation and
+writing of a large number of image file formats using the ImageMagick library.
+Use it to create, edit, compose, or convert bitmap images from within a Perl
+script.")
+    ;; See Magick.pm
+    (license (package-license imagemagick))))
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 844f1b2a194108b0561f1b9ca607912dfec47d98..036e485be314c2df3f27c5d5b83329bcb233f906 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -35,7 +35,8 @@ (define-module (gnu packages julia)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages textutils)
-  #:use-module (gnu packages version-control))
+  #:use-module (gnu packages version-control)
+  #:use-module (ice-9 match))
 
 (define-public julia
   (package
@@ -51,7 +52,7 @@ (define-public julia
                 "1hnbc2blzr9bc27m3vsr127fhg0h5imgqlrx00jakf0my0ccw8gr"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:test-target "test"
+     `(#:test-target "test"
        #:modules ((ice-9 match)
                   (guix build gnu-build-system)
                   (guix build utils))
@@ -105,6 +106,14 @@ (define-public julia
        #:make-flags
        (list
         (string-append "prefix=" (assoc-ref %outputs "out"))
+
+        ;; Passing the MARCH flag is necessary to build binary substitutes for
+        ;; the supported architectures.
+        ,(match (or (%current-target-system)
+                    (%current-system))
+           ("x86_64-linux" "MARCH=x86-64")
+           ("i686-linux" "MARCH=pentium4"))
+
         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
         "USE_SYSTEM_LIBUV=0"    ;Julia expects a modified libuv
         "USE_SYSTEM_DSFMT=0"    ;not packaged for Guix and upstream has no
@@ -161,6 +170,9 @@ (define-public julia
        ("pkg-config" ,pkg-config)
        ("python" ,python-2)
        ("which" ,which)))
+    ;; Julia is not officially released for ARM and MIPS.
+    ;; See https://github.com/JuliaLang/julia/issues/10639
+    (supported-systems '("i686-linux" "x86_64-linux"))
     (home-page "http://julialang.org/")
     (synopsis "High-performance dynamic language for technical computing")
     (description
diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf
index 3c82b91614acbf47a59bb4fbcee43cbab92f6fc6..2274ea28796db1622818db6c0cbb87fde0b9f80e 100644
--- a/gnu/packages/linux-libre-i686.conf
+++ b/gnu/packages/linux-libre-i686.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.18.4-gnu Kernel Configuration
+# Linux/x86 3.19.0-gnu Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -88,6 +88,7 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
+CONFIG_GENERIC_MSI_IRQ=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
@@ -127,7 +128,6 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
 # CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_FANOUT=32
@@ -148,7 +148,7 @@ CONFIG_CGROUP_DEVICE=y
 CONFIG_CPUSETS=y
 CONFIG_PROC_PID_CPUSET=y
 CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
+CONFIG_PAGE_COUNTER=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG_SWAP=y
 # CONFIG_MEMCG_SWAP_ENABLED is not set
@@ -179,6 +179,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_INIT_FALLBACK=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -282,6 +283,7 @@ CONFIG_OLD_SIGACTION=y
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -293,6 +295,11 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+# CONFIG_MODULE_SIG_SHA256 is not set
+# CONFIG_MODULE_SIG_SHA384 is not set
+# CONFIG_MODULE_SIG_SHA512 is not set
 # CONFIG_MODULE_COMPRESS is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
@@ -450,6 +457,7 @@ CONFIG_SCHED_MC=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_PREEMPT is not set
+CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -545,6 +553,7 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
@@ -585,7 +594,6 @@ CONFIG_PM_SLEEP_SMP=y
 CONFIG_PM_WAKELOCKS=y
 CONFIG_PM_WAKELOCKS_LIMIT=100
 CONFIG_PM_WAKELOCKS_GC=y
-CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_ADVANCED_DEBUG=y
@@ -634,6 +642,7 @@ CONFIG_ACPI_APEI_PCIEAER=y
 CONFIG_ACPI_APEI_EINJ=m
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
 CONFIG_ACPI_EXTLOG=m
+# CONFIG_PMIC_OPREGION is not set
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=m
@@ -662,7 +671,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 
 #
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=y
@@ -734,7 +743,6 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
-CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
 
 #
@@ -856,6 +864,7 @@ CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
 CONFIG_NET_FOU=m
+CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
@@ -967,6 +976,7 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_INET=m
@@ -979,6 +989,7 @@ CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1147,6 +1158,7 @@ CONFIG_NF_NAT_IPV4=m
 CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=m
 CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1187,6 +1199,7 @@ CONFIG_NF_NAT_IPV6=m
 CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NF_NAT_MASQUERADE_IPV6=m
 CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1286,6 +1299,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
+CONFIG_NET_DSA_HWMON=y
 CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
@@ -1381,6 +1395,7 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
@@ -1392,15 +1407,16 @@ CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_MCAST=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
-CONFIG_OPENVSWITCH_GENEVE=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_NET_MPLS_GSO=m
 CONFIG_HSR=m
+# CONFIG_NET_SWITCHDEV is not set
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1549,7 +1565,7 @@ CONFIG_VLSI_FIR=m
 CONFIG_VIA_FIR=m
 CONFIG_MCS_FIR=m
 CONFIG_BT=m
-CONFIG_BT_6LOWPAN=m
+CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1557,6 +1573,8 @@ CONFIG_BT_BNEP_MC_FILTER=y
 CONFIG_BT_BNEP_PROTO_FILTER=y
 CONFIG_BT_CMTP=m
 CONFIG_BT_HIDP=m
+CONFIG_BT_LE=y
+CONFIG_BT_6LOWPAN=m
 
 #
 # Bluetooth device drivers
@@ -1609,6 +1627,7 @@ CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1660,7 +1679,8 @@ CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
-# CONFIG_NFC_ST21NFCB is not set
+CONFIG_NFC_ST21NFCB=m
+CONFIG_NFC_ST21NFCB_I2C=m
 
 #
 # Device Drivers
@@ -1680,7 +1700,9 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_WANT_DEV_COREDUMP=y
 CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1689,6 +1711,7 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_SPMI=m
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
@@ -2150,7 +2173,7 @@ CONFIG_SCSI_LPFC=m
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_AM53C974=m
 CONFIG_SCSI_T128=m
 CONFIG_SCSI_U14_34F=m
 CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
@@ -2158,6 +2181,7 @@ CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
 CONFIG_SCSI_U14_34F_MAX_TAGS=8
 CONFIG_SCSI_ULTRASTOR=m
 CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_WD719X=m
 CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
@@ -2374,6 +2398,7 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
 CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
@@ -2453,6 +2478,7 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
 CONFIG_NET_DSA_MV88E6131=m
 CONFIG_NET_DSA_MV88E6123_61_65=m
 CONFIG_NET_DSA_MV88E6171=m
+CONFIG_NET_DSA_MV88E6352=m
 CONFIG_NET_DSA_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
@@ -2490,6 +2516,7 @@ CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
 CONFIG_B44_PCICORE_AUTOSELECT=y
 CONFIG_B44_PCI=y
+CONFIG_BCMGENET=m
 CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
@@ -2556,7 +2583,7 @@ CONFIG_IXGBEVF=m
 CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
-# CONFIG_I40E_FCOE is not set
+CONFIG_I40E_FCOE=y
 CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
@@ -2628,6 +2655,7 @@ CONFIG_8139TOO_8129=y
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
+CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 CONFIG_SXGBE_ETH=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2649,10 +2677,8 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PLATFORM=m
 # CONFIG_STMMAC_PCI is not set
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -2807,6 +2833,7 @@ CONFIG_ATH9K_STATION_STATISTICS=y
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_CHANNEL_CONTEXT=y
+CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2893,7 +2920,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
-CONFIG_IWLWIFI_UAPSD=y
+# CONFIG_IWLWIFI_UAPSD is not set
 
 #
 # Debugging Options
@@ -3037,7 +3064,6 @@ CONFIG_X25_ASY=m
 CONFIG_SBNI=m
 # CONFIG_SBNI_MULTILINE is not set
 CONFIG_IEEE802154_DRIVERS=m
-# CONFIG_IEEE802154_FAKEHARD is not set
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
 CONFIG_IEEE802154_MRF24J40=m
@@ -3259,6 +3285,9 @@ CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_ELAN_I2C=m
+CONFIG_MOUSE_ELAN_I2C_I2C=y
+CONFIG_MOUSE_ELAN_I2C_SMBUS=y
 # CONFIG_MOUSE_INPORT is not set
 CONFIG_MOUSE_LOGIBM=m
 CONFIG_MOUSE_PC110PAD=m
@@ -3327,8 +3356,10 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
 CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_WACOM_I2C=m
@@ -3557,6 +3588,7 @@ CONFIG_IPMI_HANDLER=m
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_SI_PROBE_DEFAULTS=y
+CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
@@ -3677,6 +3709,7 @@ CONFIG_I2C_XILINX=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_DLN2=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -3691,6 +3724,7 @@ CONFIG_I2C_PCA_ISA=m
 CONFIG_I2C_CROS_EC_TUNNEL=m
 CONFIG_SCx200_ACB=m
 CONFIG_I2C_STUB=m
+# CONFIG_I2C_SLAVE is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -3769,8 +3803,12 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
 CONFIG_PINCTRL_BAYTRAIL=y
+CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_DEVRES=y
@@ -3787,7 +3825,6 @@ CONFIG_GPIO_MAX730X=m
 # Memory mapped GPIO drivers:
 #
 CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_SCH311X=m
@@ -3859,6 +3896,7 @@ CONFIG_GPIO_MSIC=y
 # USB GPIO expanders:
 #
 CONFIG_GPIO_VIPERBOARD=m
+CONFIG_GPIO_DLN2=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
@@ -3984,6 +4022,7 @@ CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IIO_HWMON=m
+CONFIG_SENSORS_I5500=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
@@ -4030,12 +4069,14 @@ CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LTC2978=m
+CONFIG_SENSORS_LTC2978_REGULATOR=y
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
@@ -4241,6 +4282,7 @@ CONFIG_MFD_DA9052_SPI=y
 CONFIG_MFD_DA9052_I2C=y
 CONFIG_MFD_DA9055=y
 CONFIG_MFD_DA9063=y
+CONFIG_MFD_DLN2=m
 CONFIG_MFD_MC13XXX=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_I2C=m
@@ -4321,7 +4363,7 @@ CONFIG_MFD_WM831X_I2C=y
 CONFIG_MFD_WM831X_SPI=y
 CONFIG_MFD_WM8350=y
 CONFIG_MFD_WM8350_I2C=y
-CONFIG_MFD_WM8994=y
+CONFIG_MFD_WM8994=m
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=m
@@ -4462,16 +4504,9 @@ CONFIG_IR_NUVOTON=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
 CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
 CONFIG_IR_IGUANA=m
 CONFIG_IR_TTUSBIR=m
-CONFIG_IR_IMG=m
-# CONFIG_IR_IMG_RAW is not set
-CONFIG_IR_IMG_HW=y
-CONFIG_IR_IMG_NEC=y
-CONFIG_IR_IMG_JVC=y
-CONFIG_IR_IMG_SONY=y
-CONFIG_IR_IMG_SHARP=y
-CONFIG_IR_IMG_SANYO=y
 CONFIG_RC_LOOPBACK=m
 CONFIG_IR_GPIO_CIR=m
 CONFIG_MEDIA_USB_SUPPORT=y
@@ -4547,7 +4582,6 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
@@ -4710,6 +4744,7 @@ CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
 CONFIG_DVB_NGENE=m
 CONFIG_DVB_DDBRIDGE=m
+CONFIG_DVB_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_VIA_CAMERA=m
@@ -4721,17 +4756,12 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
-CONFIG_VIDEO_MEM2MEM_TESTDEV=m
+CONFIG_VIDEO_VIM2M=m
 
 #
 # Supported MMC/SDIO adapters
 #
 CONFIG_SMS_SDIO_DRV=m
-CONFIG_MEDIA_PARPORT_SUPPORT=y
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_PMS=m
-CONFIG_VIDEO_W9966=m
 CONFIG_RADIO_ADAPTERS=y
 CONFIG_RADIO_TEA575X=m
 CONFIG_RADIO_SI470X=y
@@ -4933,6 +4963,7 @@ CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
 CONFIG_MEDIA_TUNER_M88TS2022=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
@@ -5044,6 +5075,10 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
+
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
 CONFIG_DVB_TC90522=m
 
 #
@@ -5063,6 +5098,7 @@ CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
 CONFIG_DVB_A8293=m
+CONFIG_DVB_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
@@ -5106,6 +5142,7 @@ CONFIG_DRM_TTM=m
 #
 # I2C encoder or helper chips
 #
+CONFIG_DRM_I2C_ADV7511=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
@@ -5523,7 +5560,7 @@ CONFIG_SND_BCD2000=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_DICE=m
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
 CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
@@ -5551,6 +5588,9 @@ CONFIG_SND_SOC_FSL_ESAI=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
 CONFIG_SND_MFLD_MACHINE=m
 CONFIG_SND_SST_MFLD_PLATFORM=m
+CONFIG_SND_SST_IPC=m
+CONFIG_SND_SST_IPC_PCI=m
+CONFIG_SND_SST_IPC_ACPI=m
 CONFIG_SND_SOC_INTEL_SST=m
 CONFIG_SND_SOC_INTEL_SST_ACPI=m
 CONFIG_SND_SOC_INTEL_HASWELL=m
@@ -5559,6 +5599,8 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
 CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
+CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
+CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
 #
@@ -5571,12 +5613,16 @@ CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS35L32=m
+CONFIG_SND_SOC_CS42L51=m
+CONFIG_SND_SOC_CS42L51_I2C=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
 CONFIG_SND_SOC_CS4265=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
+CONFIG_SND_SOC_CS4271_I2C=m
+CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
@@ -5589,7 +5635,10 @@ CONFIG_SND_SOC_PCM512x_I2C=m
 CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_RT5670=m
+# CONFIG_SND_SOC_RT5677_SPI is not set
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SI476X=m
 CONFIG_SND_SOC_SIGMADSP=m
@@ -5604,8 +5653,13 @@ CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
+CONFIG_SND_SOC_TFA9879=m
+CONFIG_SND_SOC_TLV320AIC23=m
+CONFIG_SND_SOC_TLV320AIC23_I2C=m
+CONFIG_SND_SOC_TLV320AIC23_SPI=m
 CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC3X=m
+CONFIG_SND_SOC_TS3A227E=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
 CONFIG_SND_SOC_WM8580=m
@@ -5631,6 +5685,7 @@ CONFIG_AC97_BUS=m
 # HID support
 #
 CONFIG_HID=m
+CONFIG_HID_BATTERY_STRENGTH=y
 CONFIG_HIDRAW=y
 CONFIG_UHID=m
 CONFIG_HID_GENERIC=m
@@ -5672,6 +5727,7 @@ CONFIG_HID_LCPOWER=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=m
 CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
@@ -5692,6 +5748,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PRIMAX=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -5838,9 +5895,10 @@ CONFIG_USB_MUSB_HDRC=m
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_GADGET is not set
 CONFIG_USB_MUSB_DUAL_ROLE=y
-CONFIG_USB_MUSB_TUSB6010=m
-CONFIG_USB_MUSB_UX500=m
-# CONFIG_USB_UX500_DMA is not set
+
+#
+# Platform Glue Layer
+#
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=m
 # CONFIG_USB_DWC3_HOST is not set
@@ -5858,14 +5916,13 @@ CONFIG_USB_DWC3_PCI=m
 # CONFIG_USB_DWC3_DEBUG is not set
 CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
 CONFIG_USB_DWC2=y
-CONFIG_USB_DWC2_HOST=m
-CONFIG_USB_DWC2_PLATFORM=y
-CONFIG_USB_DWC2_PCI=y
+CONFIG_USB_DWC2_HOST=y
 
 #
-# Gadget mode requires USB Gadget support to be enabled
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
 #
-CONFIG_USB_DWC2_PERIPHERAL=m
+CONFIG_USB_DWC2_PLATFORM=y
+CONFIG_USB_DWC2_PCI=y
 # CONFIG_USB_DWC2_DEBUG is not set
 # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
@@ -6004,6 +6061,12 @@ CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
 # CONFIG_USB_M66592 is not set
+CONFIG_USB_BDC_UDC=m
+
+#
+# Platform Support
+#
+CONFIG_USB_BDC_PCI=m
 CONFIG_USB_AMD5536UDC=m
 CONFIG_USB_NET2272=m
 CONFIG_USB_NET2272_DMA=y
@@ -6027,7 +6090,10 @@ CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
 CONFIG_USB_F_UAC1=m
+CONFIG_USB_F_UAC2=m
 CONFIG_USB_F_UVC=m
+CONFIG_USB_F_MIDI=m
+CONFIG_USB_F_HID=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -6041,6 +6107,10 @@ CONFIG_USB_CONFIGFS_PHONET=y
 CONFIG_USB_CONFIGFS_MASS_STORAGE=y
 CONFIG_USB_CONFIGFS_F_LB_SS=y
 CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
 CONFIG_USB_ZERO=m
 CONFIG_USB_AUDIO=m
 CONFIG_GADGET_UAC1=y
@@ -6105,6 +6175,7 @@ CONFIG_MMC_USHC=m
 CONFIG_MMC_USDHI6ROL0=m
 CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MMC_REALTEK_USB=m
+CONFIG_MMC_TOSHIBA_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -6145,6 +6216,7 @@ CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
+CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
@@ -6194,6 +6266,7 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
@@ -6221,6 +6294,8 @@ CONFIG_EDAC=y
 CONFIG_EDAC_DECODE_MCE=m
 CONFIG_EDAC_MCE_INJ=m
 CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD64=m
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 CONFIG_EDAC_AMD76X=m
 CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
@@ -6260,6 +6335,7 @@ CONFIG_RTC_DRV_88PM860X=m
 CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
@@ -6393,6 +6469,8 @@ CONFIG_VFIO_IOMMU_TYPE1=m
 CONFIG_VFIO=m
 CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
+CONFIG_VFIO_PCI_MMAP=y
+CONFIG_VFIO_PCI_INTX=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6493,10 +6571,9 @@ CONFIG_COMEDI_PCMMIO=m
 CONFIG_COMEDI_PCMUIO=m
 CONFIG_COMEDI_MULTIQ3=m
 CONFIG_COMEDI_S526=m
-CONFIG_COMEDI_PCI_DRIVERS=y
+CONFIG_COMEDI_PCI_DRIVERS=m
 CONFIG_COMEDI_8255_PCI=m
 CONFIG_COMEDI_ADDI_WATCHDOG=m
-CONFIG_COMEDI_ADDI_APCI_035=m
 CONFIG_COMEDI_ADDI_APCI_1032=m
 CONFIG_COMEDI_ADDI_APCI_1500=m
 CONFIG_COMEDI_ADDI_APCI_1516=m
@@ -6549,7 +6626,7 @@ CONFIG_COMEDI_RTD520=m
 CONFIG_COMEDI_S626=m
 CONFIG_COMEDI_MITE=m
 CONFIG_COMEDI_NI_TIOCMD=m
-CONFIG_COMEDI_PCMCIA_DRIVERS=y
+CONFIG_COMEDI_PCMCIA_DRIVERS=m
 CONFIG_COMEDI_CB_DAS16_CS=m
 CONFIG_COMEDI_DAS08_CS=m
 CONFIG_COMEDI_NI_DAQ_700_CS=m
@@ -6557,7 +6634,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m
 CONFIG_COMEDI_NI_LABPC_CS=m
 CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
-CONFIG_COMEDI_USB_DRIVERS=y
+CONFIG_COMEDI_USB_DRIVERS=m
 CONFIG_COMEDI_DT9812=m
 CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
@@ -6692,7 +6769,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_XGI=m
-CONFIG_BCM_WIMAX=m
 CONFIG_FT1000=m
 CONFIG_FT1000_USB=m
 CONFIG_FT1000_PCMCIA=m
@@ -6724,10 +6800,17 @@ CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
 # CONFIG_DT3155_CCIR is not set
 CONFIG_DT3155_STREAMING=y
-# CONFIG_VIDEO_TCM825X is not set
+CONFIG_VIDEO_TLG2300=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
+CONFIG_MEDIA_PARPORT_SUPPORT=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_PMS=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_SAA7191=m
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
-CONFIG_LIRC_IGORPLUGUSB=m
 CONFIG_LIRC_IMON=m
 CONFIG_LIRC_PARALLEL=m
 CONFIG_LIRC_SASEM=m
@@ -6739,7 +6822,6 @@ CONFIG_LIRC_ZILOG=m
 #
 # Android
 #
-# CONFIG_ANDROID is not set
 CONFIG_USB_WPAN_HCD=m
 CONFIG_WIMAX_GDM72XX=m
 CONFIG_WIMAX_GDM72XX_QOS=y
@@ -6826,11 +6908,6 @@ CONFIG_PVPANIC=m
 CONFIG_CHROME_PLATFORMS=y
 CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_CHROMEOS_PSTORE=m
-
-#
-# SOC (System On Chip) specific Drivers
-#
-CONFIG_SOC_TI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -6866,6 +6943,7 @@ CONFIG_DW_APB_TIMER=y
 # CONFIG_SH_TIMER_TMU is not set
 # CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
+CONFIG_PCC=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_DMAR_TABLE=y
@@ -6886,6 +6964,7 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # SOC (System On Chip) specific Drivers
 #
+CONFIG_SOC_TI=y
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -6948,6 +7027,7 @@ CONFIG_AD7793=m
 CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
+CONFIG_AXP288_ADC=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -6955,6 +7035,7 @@ CONFIG_MCP320X=m
 CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
+CONFIG_QCOM_SPMI_IADC=m
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
@@ -7030,6 +7111,7 @@ CONFIG_ITG3200=m
 #
 CONFIG_DHT11=m
 CONFIG_SI7005=m
+CONFIG_SI7020=m
 
 #
 # Inertial measurement units
@@ -7086,6 +7168,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 #
 # Pressure sensors
 #
+CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
 CONFIG_MPL3115=m
@@ -7157,6 +7240,11 @@ CONFIG_MCB_PCI=m
 CONFIG_RAS=y
 CONFIG_THUNDERBOLT=m
 
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+
 #
 # Firmware Drivers
 #
@@ -7342,6 +7430,7 @@ CONFIG_SQUASHFS_FILE_DIRECT=y
 CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SQUASHFS_XATTR=y
 CONFIG_SQUASHFS_ZLIB=y
+# CONFIG_SQUASHFS_LZ4 is not set
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7526,6 +7615,7 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_READABLE_ASM is not set
 CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
@@ -7539,6 +7629,7 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
+# CONFIG_PAGE_EXTENSION is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
@@ -7575,7 +7666,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
-# CONFIG_SCHED_STACK_END_CHECK is not set
+CONFIG_SCHED_STACK_END_CHECK=y
 CONFIG_TIMER_STATS=y
 
 #
@@ -7692,6 +7783,7 @@ CONFIG_KGDB_SERIAL_CONSOLE=y
 # CONFIG_KGDB_TESTS is not set
 CONFIG_KGDB_LOW_LEVEL_TRAP=y
 CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
 CONFIG_KDB_KEYBOARD=y
 CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 CONFIG_STRICT_DEVMEM=y
@@ -7781,6 +7873,7 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y
 CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
+# CONFIG_IMA_LOAD_X509 is not set
 CONFIG_EVM=y
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf
index 0b865808aba7d36afaaf88d926dfd1ed9c4ff374..cf4cd766c0a34ea936be9081a4d27a77c3ef8d5b 100644
--- a/gnu/packages/linux-libre-x86_64.conf
+++ b/gnu/packages/linux-libre-x86_64.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.18.4-gnu Kernel Configuration
+# Linux/x86 3.19.0-gnu Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -89,6 +89,7 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
+CONFIG_GENERIC_MSI_IRQ=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
@@ -108,19 +109,17 @@ CONFIG_GENERIC_CMOS_UPDATE=y
 CONFIG_TICK_ONESHOT=y
 CONFIG_NO_HZ_COMMON=y
 # CONFIG_HZ_PERIODIC is not set
-# CONFIG_NO_HZ_IDLE is not set
-CONFIG_NO_HZ_FULL=y
-# CONFIG_NO_HZ_FULL_ALL is not set
-CONFIG_NO_HZ_FULL_SYSIDLE=y
-CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=8
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 
 #
 # CPU/Task time and stats accounting
 #
-CONFIG_VIRT_CPU_ACCOUNTING=y
-CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 CONFIG_TASKSTATS=y
@@ -132,7 +131,6 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-# CONFIG_PREEMPT_RCU is not set
 # CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
 CONFIG_CONTEXT_TRACKING=y
@@ -154,8 +152,8 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
 CONFIG_ARCH_SUPPORTS_INT128=y
-CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
 CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -163,7 +161,7 @@ CONFIG_CGROUP_DEVICE=y
 CONFIG_CPUSETS=y
 CONFIG_PROC_PID_CPUSET=y
 CONFIG_CGROUP_CPUACCT=y
-CONFIG_RESOURCE_COUNTERS=y
+CONFIG_PAGE_COUNTER=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG_SWAP=y
 # CONFIG_MEMCG_SWAP_ENABLED is not set
@@ -194,6 +192,7 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
+CONFIG_INIT_FALLBACK=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -301,6 +300,7 @@ CONFIG_COMPAT_OLD_SIGACTION=y
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -451,6 +451,7 @@ CONFIG_SCHED_MC=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_PREEMPT is not set
+CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -462,6 +463,7 @@ CONFIG_X86_MCE_INJECT=m
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_X86_16BIT=y
 CONFIG_X86_ESPFIX64=y
+CONFIG_X86_VSYSCALL_EMULATION=y
 CONFIG_I8K=m
 CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
@@ -549,6 +551,7 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
+# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_EFI_MIXED=y
@@ -594,7 +597,6 @@ CONFIG_PM_SLEEP_SMP=y
 CONFIG_PM_WAKELOCKS=y
 CONFIG_PM_WAKELOCKS_LIMIT=100
 CONFIG_PM_WAKELOCKS_GC=y
-CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_ADVANCED_DEBUG=y
@@ -645,6 +647,7 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y
 CONFIG_ACPI_APEI_EINJ=m
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
 CONFIG_ACPI_EXTLOG=m
+# CONFIG_PMIC_OPREGION is not set
 CONFIG_SFI=y
 
 #
@@ -666,7 +669,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 
 #
-# x86 CPU frequency scaling drivers
+# CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=y
@@ -727,7 +730,6 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
-CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
 
 #
@@ -840,6 +842,7 @@ CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
 CONFIG_NET_FOU=m
+CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
@@ -951,6 +954,7 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_INET=m
@@ -963,6 +967,7 @@ CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1131,6 +1136,7 @@ CONFIG_NF_NAT_IPV4=m
 CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=m
 CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1171,6 +1177,7 @@ CONFIG_NF_NAT_IPV6=m
 CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NF_NAT_MASQUERADE_IPV6=m
 CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1270,6 +1277,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
+CONFIG_NET_DSA_HWMON=y
 CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
@@ -1361,6 +1369,7 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_VLAN=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
@@ -1372,15 +1381,16 @@ CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_MCAST=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=y
-CONFIG_OPENVSWITCH_VXLAN=y
-CONFIG_OPENVSWITCH_GENEVE=y
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_NET_MPLS_GSO=m
 CONFIG_HSR=m
+# CONFIG_NET_SWITCHDEV is not set
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1523,7 +1533,7 @@ CONFIG_VLSI_FIR=m
 CONFIG_VIA_FIR=m
 CONFIG_MCS_FIR=m
 CONFIG_BT=m
-CONFIG_BT_6LOWPAN=m
+CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1531,6 +1541,8 @@ CONFIG_BT_BNEP_MC_FILTER=y
 CONFIG_BT_BNEP_PROTO_FILTER=y
 CONFIG_BT_CMTP=m
 CONFIG_BT_HIDP=m
+CONFIG_BT_LE=y
+CONFIG_BT_6LOWPAN=m
 
 #
 # Bluetooth device drivers
@@ -1583,6 +1595,7 @@ CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1634,7 +1647,8 @@ CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
-# CONFIG_NFC_ST21NFCB is not set
+CONFIG_NFC_ST21NFCB=m
+CONFIG_NFC_ST21NFCB_I2C=m
 CONFIG_HAVE_BPF_JIT=y
 
 #
@@ -1655,7 +1669,9 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+CONFIG_WANT_DEV_COREDUMP=y
 CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1664,6 +1680,7 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_SPMI=m
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
@@ -2108,7 +2125,8 @@ CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
 # CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_WD719X=m
 CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
@@ -2316,6 +2334,7 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
 CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
+CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
@@ -2394,6 +2413,7 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
 CONFIG_NET_DSA_MV88E6131=m
 CONFIG_NET_DSA_MV88E6123_61_65=m
 CONFIG_NET_DSA_MV88E6171=m
+CONFIG_NET_DSA_MV88E6352=m
 CONFIG_NET_DSA_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
@@ -2427,6 +2447,7 @@ CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
 CONFIG_B44_PCICORE_AUTOSELECT=y
 CONFIG_B44_PCI=y
+CONFIG_BCMGENET=m
 CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
@@ -2490,7 +2511,7 @@ CONFIG_IXGBEVF=m
 CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
-# CONFIG_I40E_FCOE is not set
+CONFIG_I40E_FCOE=y
 CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
@@ -2558,6 +2579,7 @@ CONFIG_8139TOO_8129=y
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
+CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 CONFIG_SXGBE_ETH=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2578,10 +2600,8 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMMAC_PLATFORM=m
 # CONFIG_STMMAC_PCI is not set
-# CONFIG_STMMAC_DEBUG_FS is not set
-# CONFIG_STMMAC_DA is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -2736,6 +2756,7 @@ CONFIG_ATH9K_STATION_STATISTICS=y
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_CHANNEL_CONTEXT=y
+CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2822,7 +2843,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
-CONFIG_IWLWIFI_UAPSD=y
+# CONFIG_IWLWIFI_UAPSD is not set
 
 #
 # Debugging Options
@@ -2960,7 +2981,6 @@ CONFIG_X25_ASY=m
 CONFIG_SBNI=m
 # CONFIG_SBNI_MULTILINE is not set
 CONFIG_IEEE802154_DRIVERS=m
-# CONFIG_IEEE802154_FAKEHARD is not set
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
 CONFIG_IEEE802154_MRF24J40=m
@@ -3166,6 +3186,9 @@ CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_ELAN_I2C=m
+CONFIG_MOUSE_ELAN_I2C_I2C=y
+CONFIG_MOUSE_ELAN_I2C_SMBUS=y
 CONFIG_MOUSE_VSXXXAA=m
 CONFIG_MOUSE_GPIO=m
 CONFIG_MOUSE_SYNAPTICS_I2C=m
@@ -3231,8 +3254,10 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
+CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
 CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_WACOM_I2C=m
@@ -3450,6 +3475,7 @@ CONFIG_IPMI_HANDLER=m
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_SI_PROBE_DEFAULTS=y
+CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
@@ -3563,6 +3589,7 @@ CONFIG_I2C_XILINX=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_DLN2=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -3575,6 +3602,7 @@ CONFIG_I2C_VIPERBOARD=m
 #
 CONFIG_I2C_CROS_EC_TUNNEL=m
 CONFIG_I2C_STUB=m
+# CONFIG_I2C_SLAVE is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -3651,8 +3679,12 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
 CONFIG_PINCTRL_BAYTRAIL=y
+CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_DEVRES=y
@@ -3669,7 +3701,6 @@ CONFIG_GPIO_MAX730X=m
 # Memory mapped GPIO drivers:
 #
 CONFIG_GPIO_GENERIC_PLATFORM=m
-CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_SCH311X=m
@@ -3737,6 +3768,7 @@ CONFIG_GPIO_TPS65910=y
 # USB GPIO expanders:
 #
 CONFIG_GPIO_VIPERBOARD=m
+CONFIG_GPIO_DLN2=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
@@ -3861,6 +3893,7 @@ CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IIO_HWMON=m
+CONFIG_SENSORS_I5500=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
@@ -3907,12 +3940,14 @@ CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LTC2978=m
+CONFIG_SENSORS_LTC2978_REGULATOR=y
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
@@ -4105,6 +4140,7 @@ CONFIG_MFD_DA9052_SPI=y
 CONFIG_MFD_DA9052_I2C=y
 CONFIG_MFD_DA9055=y
 CONFIG_MFD_DA9063=y
+CONFIG_MFD_DLN2=m
 CONFIG_MFD_MC13XXX=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_I2C=m
@@ -4183,7 +4219,7 @@ CONFIG_MFD_WM831X_I2C=y
 CONFIG_MFD_WM831X_SPI=y
 CONFIG_MFD_WM8350=y
 CONFIG_MFD_WM8350_I2C=y
-CONFIG_MFD_WM8994=y
+CONFIG_MFD_WM8994=m
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=m
@@ -4323,16 +4359,9 @@ CONFIG_IR_NUVOTON=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
 CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGORPLUGUSB=m
 CONFIG_IR_IGUANA=m
 CONFIG_IR_TTUSBIR=m
-CONFIG_IR_IMG=m
-# CONFIG_IR_IMG_RAW is not set
-CONFIG_IR_IMG_HW=y
-CONFIG_IR_IMG_NEC=y
-CONFIG_IR_IMG_JVC=y
-CONFIG_IR_IMG_SONY=y
-CONFIG_IR_IMG_SHARP=y
-CONFIG_IR_IMG_SANYO=y
 CONFIG_RC_LOOPBACK=m
 CONFIG_IR_GPIO_CIR=m
 CONFIG_MEDIA_USB_SUPPORT=y
@@ -4408,7 +4437,6 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
@@ -4571,6 +4599,7 @@ CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
 CONFIG_DVB_NGENE=m
 CONFIG_DVB_DDBRIDGE=m
+CONFIG_DVB_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_VIA_CAMERA=m
@@ -4581,16 +4610,12 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
-CONFIG_VIDEO_MEM2MEM_TESTDEV=m
+CONFIG_VIDEO_VIM2M=m
 
 #
 # Supported MMC/SDIO adapters
 #
 CONFIG_SMS_SDIO_DRV=m
-CONFIG_MEDIA_PARPORT_SUPPORT=y
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
 CONFIG_RADIO_ADAPTERS=y
 CONFIG_RADIO_TEA575X=m
 CONFIG_RADIO_SI470X=y
@@ -4776,6 +4801,7 @@ CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
 CONFIG_MEDIA_TUNER_M88TS2022=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
@@ -4887,6 +4913,10 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
+
+#
+# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
+#
 CONFIG_DVB_TC90522=m
 
 #
@@ -4906,6 +4936,7 @@ CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
 CONFIG_DVB_A8293=m
+CONFIG_DVB_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
@@ -4943,6 +4974,7 @@ CONFIG_DRM_TTM=m
 #
 # I2C encoder or helper chips
 #
+CONFIG_DRM_I2C_ADV7511=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
@@ -4975,6 +5007,7 @@ CONFIG_DRM_AST=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 # CONFIG_DRM_BOCHS is not set
+CONFIG_HSA_AMD=m
 
 #
 # Frame buffer Devices
@@ -5311,7 +5344,7 @@ CONFIG_SND_BCD2000=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_DICE=m
-CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_OXFW=m
 CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
@@ -5337,6 +5370,9 @@ CONFIG_SND_SOC_FSL_SSI=m
 CONFIG_SND_SOC_FSL_SPDIF=m
 CONFIG_SND_SOC_FSL_ESAI=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
+CONFIG_SND_SST_MFLD_PLATFORM=m
+CONFIG_SND_SST_IPC=m
+CONFIG_SND_SST_IPC_ACPI=m
 CONFIG_SND_SOC_INTEL_SST=m
 CONFIG_SND_SOC_INTEL_SST_ACPI=m
 CONFIG_SND_SOC_INTEL_HASWELL=m
@@ -5345,6 +5381,8 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
 CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
+CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
+CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
 #
@@ -5357,12 +5395,16 @@ CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS35L32=m
+CONFIG_SND_SOC_CS42L51=m
+CONFIG_SND_SOC_CS42L51_I2C=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
 CONFIG_SND_SOC_CS4265=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
+CONFIG_SND_SOC_CS4271_I2C=m
+CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
@@ -5375,7 +5417,10 @@ CONFIG_SND_SOC_PCM512x_I2C=m
 CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_RT5670=m
+# CONFIG_SND_SOC_RT5677_SPI is not set
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SI476X=m
 CONFIG_SND_SOC_SIGMADSP=m
@@ -5389,8 +5434,13 @@ CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
+CONFIG_SND_SOC_TFA9879=m
+CONFIG_SND_SOC_TLV320AIC23=m
+CONFIG_SND_SOC_TLV320AIC23_I2C=m
+CONFIG_SND_SOC_TLV320AIC23_SPI=m
 CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC3X=m
+CONFIG_SND_SOC_TS3A227E=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
 CONFIG_SND_SOC_WM8580=m
@@ -5416,6 +5466,7 @@ CONFIG_AC97_BUS=m
 # HID support
 #
 CONFIG_HID=m
+CONFIG_HID_BATTERY_STRENGTH=y
 CONFIG_HIDRAW=y
 CONFIG_UHID=m
 CONFIG_HID_GENERIC=m
@@ -5457,6 +5508,7 @@ CONFIG_HID_LCPOWER=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=m
 CONFIG_HID_LOGITECH_DJ=m
+CONFIG_HID_LOGITECH_HIDPP=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
@@ -5477,6 +5529,7 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PRIMAX=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -5623,9 +5676,10 @@ CONFIG_USB_MUSB_HDRC=m
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_GADGET is not set
 CONFIG_USB_MUSB_DUAL_ROLE=y
-CONFIG_USB_MUSB_TUSB6010=m
-CONFIG_USB_MUSB_UX500=m
-# CONFIG_USB_UX500_DMA is not set
+
+#
+# Platform Glue Layer
+#
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=m
 # CONFIG_USB_DWC3_HOST is not set
@@ -5643,14 +5697,13 @@ CONFIG_USB_DWC3_PCI=m
 # CONFIG_USB_DWC3_DEBUG is not set
 CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
 CONFIG_USB_DWC2=y
-CONFIG_USB_DWC2_HOST=m
-CONFIG_USB_DWC2_PLATFORM=y
-CONFIG_USB_DWC2_PCI=y
+CONFIG_USB_DWC2_HOST=y
 
 #
-# Gadget mode requires USB Gadget support to be enabled
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
 #
-CONFIG_USB_DWC2_PERIPHERAL=m
+CONFIG_USB_DWC2_PLATFORM=y
+CONFIG_USB_DWC2_PCI=y
 # CONFIG_USB_DWC2_DEBUG is not set
 # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
@@ -5789,6 +5842,12 @@ CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
 # CONFIG_USB_M66592 is not set
+CONFIG_USB_BDC_UDC=m
+
+#
+# Platform Support
+#
+CONFIG_USB_BDC_PCI=m
 CONFIG_USB_AMD5536UDC=m
 CONFIG_USB_NET2272=m
 CONFIG_USB_NET2272_DMA=y
@@ -5812,7 +5871,10 @@ CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
 CONFIG_USB_F_UAC1=m
+CONFIG_USB_F_UAC2=m
 CONFIG_USB_F_UVC=m
+CONFIG_USB_F_MIDI=m
+CONFIG_USB_F_HID=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -5826,6 +5888,10 @@ CONFIG_USB_CONFIGFS_PHONET=y
 CONFIG_USB_CONFIGFS_MASS_STORAGE=y
 CONFIG_USB_CONFIGFS_F_LB_SS=y
 CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
 CONFIG_USB_ZERO=m
 CONFIG_USB_AUDIO=m
 CONFIG_GADGET_UAC1=y
@@ -5891,6 +5957,7 @@ CONFIG_MMC_USHC=m
 CONFIG_MMC_USDHI6ROL0=m
 CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MMC_REALTEK_USB=m
+CONFIG_MMC_TOSHIBA_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -5929,6 +5996,7 @@ CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
+CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
@@ -5977,6 +6045,7 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
@@ -6044,6 +6113,7 @@ CONFIG_RTC_DRV_88PM860X=m
 CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
@@ -6175,6 +6245,8 @@ CONFIG_VFIO_IOMMU_TYPE1=m
 CONFIG_VFIO=m
 CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
+CONFIG_VFIO_PCI_MMAP=y
+CONFIG_VFIO_PCI_INTX=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6276,10 +6348,9 @@ CONFIG_COMEDI_PCMMIO=m
 CONFIG_COMEDI_PCMUIO=m
 CONFIG_COMEDI_MULTIQ3=m
 CONFIG_COMEDI_S526=m
-CONFIG_COMEDI_PCI_DRIVERS=y
+CONFIG_COMEDI_PCI_DRIVERS=m
 CONFIG_COMEDI_8255_PCI=m
 CONFIG_COMEDI_ADDI_WATCHDOG=m
-CONFIG_COMEDI_ADDI_APCI_035=m
 CONFIG_COMEDI_ADDI_APCI_1032=m
 CONFIG_COMEDI_ADDI_APCI_1500=m
 CONFIG_COMEDI_ADDI_APCI_1516=m
@@ -6332,7 +6403,7 @@ CONFIG_COMEDI_RTD520=m
 CONFIG_COMEDI_S626=m
 CONFIG_COMEDI_MITE=m
 CONFIG_COMEDI_NI_TIOCMD=m
-CONFIG_COMEDI_PCMCIA_DRIVERS=y
+CONFIG_COMEDI_PCMCIA_DRIVERS=m
 CONFIG_COMEDI_CB_DAS16_CS=m
 CONFIG_COMEDI_DAS08_CS=m
 CONFIG_COMEDI_NI_DAQ_700_CS=m
@@ -6340,7 +6411,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m
 CONFIG_COMEDI_NI_LABPC_CS=m
 CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
-CONFIG_COMEDI_USB_DRIVERS=y
+CONFIG_COMEDI_USB_DRIVERS=m
 CONFIG_COMEDI_DT9812=m
 CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
@@ -6475,7 +6546,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_XGI=m
-CONFIG_BCM_WIMAX=m
 CONFIG_FT1000=m
 CONFIG_FT1000_USB=m
 CONFIG_FT1000_PCMCIA=m
@@ -6503,10 +6573,16 @@ CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
 # CONFIG_DT3155_CCIR is not set
 CONFIG_DT3155_STREAMING=y
-# CONFIG_VIDEO_TCM825X is not set
+CONFIG_VIDEO_TLG2300=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
+CONFIG_MEDIA_PARPORT_SUPPORT=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_SAA7191=m
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
-CONFIG_LIRC_IGORPLUGUSB=m
 CONFIG_LIRC_IMON=m
 CONFIG_LIRC_PARALLEL=m
 CONFIG_LIRC_SASEM=m
@@ -6518,7 +6594,6 @@ CONFIG_LIRC_ZILOG=m
 #
 # Android
 #
-# CONFIG_ANDROID is not set
 CONFIG_USB_WPAN_HCD=m
 CONFIG_WIMAX_GDM72XX=m
 CONFIG_WIMAX_GDM72XX_QOS=y
@@ -6545,7 +6620,6 @@ CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
 CONFIG_CRYPTO_SKEIN=y
-CONFIG_CRYPTO_THREEFISH=y
 CONFIG_UNISYSSPAR=y
 CONFIG_UNISYS_VISORUTIL=m
 CONFIG_UNISYS_VISORCHANNEL=m
@@ -6609,11 +6683,6 @@ CONFIG_PVPANIC=m
 CONFIG_CHROME_PLATFORMS=y
 CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_CHROMEOS_PSTORE=m
-
-#
-# SOC (System On Chip) specific Drivers
-#
-CONFIG_SOC_TI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -6647,6 +6716,7 @@ CONFIG_CLKBLD_I8253=y
 # CONFIG_SH_TIMER_TMU is not set
 # CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
+CONFIG_PCC=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_AMD_IOMMU=y
@@ -6671,6 +6741,7 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # SOC (System On Chip) specific Drivers
 #
+CONFIG_SOC_TI=y
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -6733,6 +6804,7 @@ CONFIG_AD7793=m
 CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
+CONFIG_AXP288_ADC=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -6740,6 +6812,7 @@ CONFIG_MCP320X=m
 CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
+CONFIG_QCOM_SPMI_IADC=m
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
@@ -6815,6 +6888,7 @@ CONFIG_ITG3200=m
 #
 CONFIG_DHT11=m
 CONFIG_SI7005=m
+CONFIG_SI7020=m
 
 #
 # Inertial measurement units
@@ -6871,6 +6945,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 #
 # Pressure sensors
 #
+CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
 CONFIG_MPL3115=m
@@ -6942,6 +7017,11 @@ CONFIG_MCB_PCI=m
 CONFIG_RAS=y
 CONFIG_THUNDERBOLT=m
 
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+
 #
 # Firmware Drivers
 #
@@ -7128,6 +7208,7 @@ CONFIG_SQUASHFS_FILE_DIRECT=y
 CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SQUASHFS_XATTR=y
 CONFIG_SQUASHFS_ZLIB=y
+# CONFIG_SQUASHFS_LZ4 is not set
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7312,6 +7393,7 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_READABLE_ASM is not set
 CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
@@ -7325,6 +7407,7 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
+# CONFIG_PAGE_EXTENSION is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
@@ -7360,7 +7443,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
-# CONFIG_SCHED_STACK_END_CHECK is not set
+CONFIG_SCHED_STACK_END_CHECK=y
 CONFIG_TIMER_STATS=y
 
 #
@@ -7478,6 +7561,7 @@ CONFIG_KGDB_SERIAL_CONSOLE=y
 # CONFIG_KGDB_TESTS is not set
 CONFIG_KGDB_LOW_LEVEL_TRAP=y
 CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
 CONFIG_KDB_KEYBOARD=y
 CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 CONFIG_STRICT_DEVMEM=y
@@ -7567,6 +7651,7 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y
 CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
+# CONFIG_IMA_LOAD_X509 is not set
 CONFIG_EVM=y
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index c4e34c197a8f26a8e13abdf647e8e70aefb1b9a6..e2b8301fefd860108ef3702811e061f121a71199 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -198,7 +198,7 @@ (define (lookup file)
      #f)))
 
 (define-public linux-libre
-  (let* ((version "3.18.10")
+  (let* ((version "3.19.3")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -271,7 +271,10 @@ (define-public linux-libre
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "0ckbi94b56klp59wsfcmlkbyrj7hj7kb7ys2jjsrqsk39dd77zg5"))))
+               "13nq0wzkjy7hrhnnvxlwzs1awlqd81vzriqddjn6s9ma3fzj44bn"))
+             (patches
+              (list (search-patch "linux-libre-libreboot-fix.patch")
+                    (search-patch "linux-libre-vblank-fix.patch")))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
@@ -1373,14 +1376,14 @@ (define-public numactl
 (define-public kbd
   (package
     (name "kbd")
-    (version "2.0.1")
+    (version "2.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/utils/kbd/kbd-"
-                                  version ".tar.gz"))
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "0c34b0za2v0934acvgnva0vaqpghmmhz4zh7k0m9jd4mbc91byqm"))
+                "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -2005,3 +2008,73 @@ (define-public cpufrequtils
 information, and set the CPU frequency if supported, using the cpufreq
 capabilities of the Linux kernel.")
     (license gpl2)))
+
+(define-public libraw1394
+  (package
+    (name "libraw1394")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://kernel.org/linux/libs/ieee1394/"
+                    name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0kwnf4ha45c04mhc4yla672aqmvqqihxix1gvblns5cd2pc2cc8b"))))
+    (build-system gnu-build-system)
+    (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
+    (synopsis "Interface library for the Linux IEEE1394 drivers")
+    (description
+     "Libraw1394 is the only supported interface to the kernel side raw1394 of
+the Linux IEEE-1394 subsystem, which provides direct access to the connected
+1394 buses to user space.  Through libraw1394/raw1394, applications can directly
+send to and receive from other nodes without requiring a kernel driver for the
+protocol in question.")
+    (license lgpl2.1+)))
+
+(define-public libavc1394
+  (package
+    (name "libavc1394")
+    (version "0.5.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/libavc1394/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0lsv46jdqvdx5hx92v0z2cz3yh6212pz9gk0k3513sbaa04zzcbw"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("libraw1394" ,libraw1394))) ; required by libavc1394.pc
+    (home-page "http://sourceforge.net/projects/libavc1394/")
+    (synopsis "AV/C protocol library for IEEE 1394")
+    (description
+     "Libavc1394 is a programming interface to the AV/C specification from
+the 1394 Trade Assocation.  AV/C stands for Audio/Video Control.")
+    (license lgpl2.1+)))
+
+(define-public libiec61883
+  (package
+    (name "libiec61883")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://kernel.org/linux/libs/ieee1394/"
+                    name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "17ph458zya2l8dr2xwqnzy195qd9swrir31g78qkgb3g4xz2rq6i"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("libraw1394" ,libraw1394))) ; required by libiec61883.pc
+    (home-page "https://ieee1394.wiki.kernel.org/index.php/Main_Page")
+    (synopsis "Isochronous streaming media library for IEEE 1394")
+    (description
+     "The libiec61883 library provides a higher level API for streaming DV,
+MPEG-2 and audio over Linux IEEE 1394.")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm
index 8062b99d654644ac156c1469dd6e85c73c90976d..da42957fee5f941bd24652e33d3dee3e2039f809 100644
--- a/gnu/packages/lsof.scm
+++ b/gnu/packages/lsof.scm
@@ -35,7 +35,17 @@ (define-public lsof
             (uri (list (string-append %ftp-base "lsof_"
                                       version ".tar.bz2")
                        (string-append %ftp-base "OLD/lsof_"
-                                      version ".tar.bz2")))
+                                      version ".tar.bz2")
+
+                       ;; Add mirrors because the FTP server at purdue.edu
+                       ;; bails out when it cannot do a reverse DNS lookup, as
+                       ;; noted at <http://people.freebsd.org/~abe/>.
+                       (string-append
+                        "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/lsof_"
+                        version ".tar.bz2")
+                       (string-append
+                        "ftp://sunsite.ualberta.ca/pub/Mirror/lsof/lsof_"
+                        version ".tar.bz2")))
             (sha256
              (base32
               "16y9wm26rg81mihnzcbdg8h8vhxmq8kn62ssxb8cqydp4q79nvzy"))))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index c92354248f00dc38796b683cb8bc98b604924b24..0c83b0bd82fb9e561a31bbaae3bb83115a57cdf7 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -23,6 +23,7 @@ (define-module (gnu packages music)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages flex)
@@ -30,9 +31,14 @@ (define-module (gnu packages music)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages linux) ; for alsa-utils
+  #:use-module (gnu packages man)
+  #:use-module (gnu packages mp3)
   #:use-module (gnu packages netpbm)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -40,6 +46,8 @@ (define-module (gnu packages music)
   #:use-module (gnu packages rsync)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xiph)
   #:use-module (gnu packages zip))
 
 (define-public lilypond
@@ -102,3 +110,114 @@ (define-public lilypond
 interpreted by LilyPond to produce the final document.  It is extendable with
 Guile.")
     (license license:gpl3+)))
+
+(define-public solfege
+  (package
+    (name "solfege")
+    (version "3.22.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://gnu/solfege/solfege-"
+                    version ".tar.xz"))
+              (sha256
+               (base32
+                "1w25rxdbj907nsx285k9nm480pvy12w3yknfh4n1dfv17cwy072i"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; xmllint attempts to download DTD
+       #:test-target "test"
+       #:phases
+       (alist-cons-after
+        'unpack 'fix-configuration
+        (lambda* (#:key inputs #:allow-other-keys)
+          (substitute* "default.config"
+            (("csound=csound")
+             (string-append "csound="
+                            (assoc-ref inputs "csound")
+                            "/bin/csound"))
+            (("/usr/bin/aplay")
+             (string-append (assoc-ref inputs "aplay")
+                            "/bin/aplay"))
+            (("/usr/bin/timidity")
+             (string-append (assoc-ref inputs "timidity")
+                            "/bin/timidity"))
+            (("/usr/bin/mpg123")
+             (string-append (assoc-ref inputs "mpg123")
+                            "/bin/mpg123"))
+            (("/usr/bin/ogg123")
+             (string-append (assoc-ref inputs "ogg123")
+                            "/bin/ogg123"))))
+        (alist-cons-before
+         'build 'patch-python-shebangs
+         (lambda _
+           ;; Two python scripts begin with a Unicode BOM, so patch-shebang
+           ;; has no effect.
+           (substitute* '("solfege/parsetree.py"
+                          "solfege/presetup.py")
+             (("#!/usr/bin/python") (string-append "#!" (which "python")))))
+         (alist-cons-before
+          'build 'add-sitedirs
+          ;; .pth files are not automatically interpreted unless the
+          ;; directories containing them are added as "sites".  The directories
+          ;; are then added to those in the PYTHONPATH.  This is required for
+          ;; the operation of pygtk and pygobject.
+          (lambda _
+            (substitute* "run-solfege.py"
+              (("import os")
+               "import os, site
+for path in [path for path in sys.path if 'site-packages' in path]: site.addsitedir(path)")))
+          (alist-cons-before
+           'build 'adjust-config-file-prefix
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "run-solfege.py"
+               (("prefix = os.path.*$")
+                (string-append "prefix = " (assoc-ref outputs "out")))))
+           (alist-cons-after
+            'install 'wrap-program
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              ;; Make sure 'solfege' runs with the correct PYTHONPATH.  We
+              ;; also need to modify GDK_PIXBUF_MODULE_FILE for SVG support.
+              (let* ((out (assoc-ref outputs "out"))
+                     (path (getenv "PYTHONPATH"))
+                     (rsvg (assoc-ref inputs "librsvg"))
+                     (pixbuf (find-files rsvg "^loaders\\.cache$")))
+                (wrap-program (string-append out "/bin/solfege")
+                  `("PYTHONPATH" ":" prefix (,path))
+                  `("GDK_PIXBUF_MODULE_FILE" ":" prefix ,pixbuf))))
+            %standard-phases)))))))
+    (inputs
+     `(("python" ,python-2)
+       ("pygtk" ,python2-pygtk)
+       ("gettext" ,gnu-gettext)
+       ("gtk" ,gtk+)
+       ;; TODO: Lilypond is optional.  Produces errors at build time:
+       ;;   Drawing systems...Error: /undefinedresult in --glyphshow--
+       ;; Fontconfig is needed to fix one of the errors, but other similar
+       ;; errors remain.
+       ;;("lilypond" ,lilypond)
+       ("librsvg" ,librsvg) ; needed at runtime for icons
+       ("libpng" ,libpng) ; needed at runtime for icons
+       ;; players needed at runtime
+       ("aplay" ,alsa-utils)
+       ("csound" ,csound) ; optional, needed for some exercises
+       ("mpg123" ,mpg123)
+       ("ogg123" ,vorbis-tools)
+       ("timidity" ,timidity++)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("txt2man" ,txt2man)
+       ("libxml2" ,libxml2) ; for tests
+       ("ghostscript" ,ghostscript)
+       ;;("fontconfig" ,fontconfig) ; only needed with lilypond
+       ;;("freetype" ,freetype) ; only needed with lilypond
+       ("texinfo" ,texinfo)))
+    (home-page "https://www.gnu.org/software/solfege/")
+    (synopsis "Ear training")
+    (description
+     "GNU Solfege is a program for practicing musical ear-training.  With it,
+you can practice your recognition of various musical intervals and chords.  It
+features a statistics overview so you can monitor your progress across several
+sessions.  Solfege is also designed to be extensible so you can easily write
+your own lessons.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index ba92abce1e3159092707afec37b4b39bf73f3238..0b6584318348a8a330f2411079f4f28016dfbd6a 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -34,14 +34,14 @@ (define-module (gnu packages node)
 (define-public node
   (package
     (name "node")
-    (version "0.12.0")
+    (version "0.12.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://nodejs.org/dist/v" version
                                   "/node-v" version ".tar.gz"))
               (sha256
                (base32
-                "0cifd2qhpyrbxx71a4hsagzk24qas8m5zvwcyhx69cz9yhxf404p"))))
+                "0bbp58p3iwsp35c37brkkh6bmjjhwsw2nlr8srz3wqryx6nphzmc"))))
     (native-inputs `(("python" ,python-2)
                      ("perl" ,perl)
                      ("gcc" ,gcc-4.9)
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 9072adae3c8b54a57811a3c08aeef63171cf103e..70595b1bac8ccb7cb5343616b9fbd01900c71eee 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013,2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,7 @@ (define-module (gnu packages parallel)
 (define-public parallel
   (package
     (name "parallel")
-    (version "20150122")
+    (version "20150322")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +36,7 @@ (define-public parallel
                           version ".tar.bz2"))
       (sha256
        (base32
-        "14g9pka59vln19rg6y8lyvrsc4nb3jk8y26hv3hdrf44rgwpds7d"))))
+        "1zsj1bd4zbwb4n9i0jgzs7vd5wkyg3xvj6s1q6s5fyn0pff7j01c"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (home-page "http://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/icecat-CVE-2015-0817.patch b/gnu/packages/patches/icecat-CVE-2015-0817.patch
deleted file mode 100644
index bb530a535dcf8b14cd2a9b050db10b93ef6371b1..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0817.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From cedbdf8290018fbef65458e9e438c72adf2c2775 Mon Sep 17 00:00:00 2001
-From: Steve Fink <sfink@mozilla.com>
-Date: Thu, 19 Mar 2015 15:46:24 -0700
-Subject: [PATCH] Bug 1145255. r=luke, a=lmandel
-
----
- js/src/jit/AsmJS.cpp | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/js/src/jit/AsmJS.cpp b/js/src/jit/AsmJS.cpp
-index 302b5ab..1b8eed6 100644
---- a/js/src/jit/AsmJS.cpp
-+++ b/js/src/jit/AsmJS.cpp
-@@ -14,6 +14,7 @@
- 
- #include "jsmath.h"
- #include "jsprf.h"
-+#include "jsutil.h"
- #include "jsworkers.h"
- #include "prmjtime.h"
- 
-@@ -3432,9 +3433,17 @@ FoldMaskedArrayIndex(FunctionCompiler &f, ParseNode **indexExpr, int32_t *mask,
-     if (IsLiteralOrConstInt(f, maskNode, &mask2)) {
-         // Flag the access to skip the bounds check if the mask ensures that an 'out of
-         // bounds' access can not occur based on the current heap length constraint.
--        if (mask2 == 0 ||
--            CountLeadingZeroes32(f.m().minHeapLength() - 1) <= CountLeadingZeroes32(mask2)) {
-+        if (mask2 == 0) {
-             *needsBoundsCheck = NO_BOUNDS_CHECK;
-+        } else {
-+            uint32_t minHeap = f.m().minHeapLength();
-+            uint32_t minHeapZeroes = CountLeadingZeroes32(minHeap - 1);
-+            uint32_t maskZeroes = CountLeadingZeroes32(mask2);
-+            if ((minHeapZeroes < maskZeroes) ||
-+                (IsPowerOfTwo(minHeap) && minHeapZeroes == maskZeroes))
-+            {
-+                *needsBoundsCheck = NO_BOUNDS_CHECK;
-+            }
-         }
-         *mask &= mask2;
-         *indexExpr = indexNode;
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch
deleted file mode 100644
index 5d396eed6b2b2e9c13b4c015146aa4e2a0604844..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0818-pt1.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 79dddb16aaa58f5b5cef49dac6d234f500af3baf Mon Sep 17 00:00:00 2001
-From: Olli Pettay <Olli.Pettay@helsinki.fi>
-Date: Thu, 19 Mar 2015 21:53:32 -0400
-Subject: [PATCH] Bug 1144988 - Don't let other pages to load while doing
- scroll-to-anchor. r=bz, a=lmandel
-
----
- docshell/base/nsDocShell.cpp | 23 ++++++++++++++---------
- docshell/base/nsDocShell.h   |  1 +
- 2 files changed, 15 insertions(+), 9 deletions(-)
-
-diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index 887c910..14ff3f2 100644
---- a/docshell/base/nsDocShell.cpp
-+++ b/docshell/base/nsDocShell.cpp
-@@ -4204,8 +4204,8 @@ nsDocShell::IsPrintingOrPP(bool aDisplayErrorDialog)
- bool
- nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog)
- {
--  bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) && !mFiredUnloadEvent;
--  if (!isAllowed) {
-+  bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) &&
-+                   !mFiredUnloadEvent && !mBlockNavigation;  if (!isAllowed) {
-     return false;
-   }
-   if (!mContentViewer) {
-@@ -9321,13 +9321,18 @@ nsDocShell::InternalLoad(nsIURI * aURI,
-             GetCurScrollPos(ScrollOrientation_X, &cx);
-             GetCurScrollPos(ScrollOrientation_Y, &cy);
- 
--            // ScrollToAnchor doesn't necessarily cause us to scroll the window;
--            // the function decides whether a scroll is appropriate based on the
--            // arguments it receives.  But even if we don't end up scrolling,
--            // ScrollToAnchor performs other important tasks, such as informing
--            // the presShell that we have a new hash.  See bug 680257.
--            rv = ScrollToAnchor(curHash, newHash, aLoadType);
--            NS_ENSURE_SUCCESS(rv, rv);
-+            {
-+                AutoRestore<bool> scrollingToAnchor(mBlockNavigation);
-+                mBlockNavigation = true;
-+
-+                // ScrollToAnchor doesn't necessarily cause us to scroll the window;
-+                // the function decides whether a scroll is appropriate based on the
-+                // arguments it receives.  But even if we don't end up scrolling,
-+                // ScrollToAnchor performs other important tasks, such as informing
-+                // the presShell that we have a new hash.  See bug 680257.
-+                rv = ScrollToAnchor(curHash, newHash, aLoadType);
-+                NS_ENSURE_SUCCESS(rv, rv);
-+            }
- 
-             // Reset mLoadType to its original value once we exit this block,
-             // because this short-circuited load might have started after a
-diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
-index c191777..be353ee 100644
---- a/docshell/base/nsDocShell.h
-+++ b/docshell/base/nsDocShell.h
-@@ -835,6 +835,7 @@ protected:
-     bool                       mInPrivateBrowsing;
-     bool                       mUseRemoteTabs;
-     bool                       mDeviceSizeIsPageSize;
-+    bool                       mBlockNavigation;
- 
-     // Because scriptability depends on the mAllowJavascript values of our
-     // ancestors, we cache the effective scriptability and recompute it when
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch b/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch
deleted file mode 100644
index 4eac5df4dbea077194e0a704c7a4f59dac84759e..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0818-pt2.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 83364c747c421b191f9d4012896a9e5a1d5223ad Mon Sep 17 00:00:00 2001
-From: Kyle Huey <khuey@kylehuey.com>
-Date: Fri, 20 Mar 2015 19:15:13 -0700
-Subject: [PATCH] Bug 1144988. r=bz a=lmandel
-
----
- docshell/base/nsDocShell.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index 4cddcef..bdf88a5cf 100644
---- a/docshell/base/nsDocShell.cpp
-+++ b/docshell/base/nsDocShell.cpp
-@@ -1322,9 +1322,10 @@ nsDocShell::LoadURI(nsIURI * aURI,
-     
-     // Note: we allow loads to get through here even if mFiredUnloadEvent is
-     // true; that case will get handled in LoadInternal or LoadHistoryEntry.
--    if (IsPrintingOrPP()) {
-+    if (IsPrintingOrPP() || mBlockNavigation) {
-       return NS_OK; // JS may not handle returning of an error code
-     }
-+
-     nsCOMPtr<nsIURI> referrer;
-     nsCOMPtr<nsIInputStream> postStream;
-     nsCOMPtr<nsIInputStream> headersStream;
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-bug-1127780.patch b/gnu/packages/patches/icecat-bug-1127780.patch
deleted file mode 100644
index c433616087956c0b6779949640b6ac75267fd569..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-bug-1127780.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From cf1de3d04302841aaa05aed8364da3399cbca9b4 Mon Sep 17 00:00:00 2001
-From: Bobby Holley <bobbyholley@gmail.com>
-Date: Tue, 17 Feb 2015 17:47:12 -0500
-Subject: [PATCH] Bug 1127780 - Add null check. r=bz, a=bkerensa
-
----
- js/xpconnect/wrappers/XrayWrapper.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/xpconnect/wrappers/XrayWrapper.h b/js/xpconnect/wrappers/XrayWrapper.h
-index ead095f1..cc8c580 100644
---- a/js/xpconnect/wrappers/XrayWrapper.h
-+++ b/js/xpconnect/wrappers/XrayWrapper.h
-@@ -131,7 +131,7 @@ class XrayWrapper : public Base {
-     {
-         if (!Base::getPrototypeOf(cx, wrapper, protop))
-             return false;
--        if (WrapperFactory::IsXrayWrapper(protop))
-+        if (!protop || WrapperFactory::IsXrayWrapper(protop))
-             return true;
- 
-         protop.set(JS_GetObjectPrototype(cx, wrapper));
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-bug-1144991.patch b/gnu/packages/patches/icecat-bug-1144991.patch
deleted file mode 100644
index 5632e37eb327d978d6cede56870d9c858b3d0cef..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-bug-1144991.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From ae49ed04f54c2f78d6ba7e545e0099602a3270fa Mon Sep 17 00:00:00 2001
-From: Boris Zbarsky <bzbarsky@mit.edu>
-Date: Thu, 19 Mar 2015 18:58:44 -0400
-Subject: [PATCH] Bug 1144991 - Be a bit more restrictive about when a
- URI_IS_UI_RESOURCE source is allowed to link to a URI_IS_UI_RESOURCE URI that
- doesn't have the same scheme. r=bholley, a=abillings
-
----
- caps/src/nsScriptSecurityManager.cpp | 38 +++++++++++++++++++++++++-----------
- 1 file changed, 27 insertions(+), 11 deletions(-)
-
-diff --git a/caps/src/nsScriptSecurityManager.cpp b/caps/src/nsScriptSecurityManager.cpp
-index 3587358..6577b95 100644
---- a/caps/src/nsScriptSecurityManager.cpp
-+++ b/caps/src/nsScriptSecurityManager.cpp
-@@ -770,12 +770,31 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal,
-     NS_ENSURE_SUCCESS(rv, rv);
-     if (hasFlags) {
-         if (aFlags & nsIScriptSecurityManager::ALLOW_CHROME) {
-+
-+            // For now, don't change behavior for resource:// or moz-icon:// and
-+            // just allow them.
-             if (!targetScheme.EqualsLiteral("chrome")) {
--                // for now don't change behavior for resource: or moz-icon:
-                 return NS_OK;
-             }
- 
--            // allow load only if chrome package is whitelisted
-+            // Allow a URI_IS_UI_RESOURCE source to link to a URI_IS_UI_RESOURCE
-+            // target if ALLOW_CHROME is set.
-+            //
-+            // ALLOW_CHROME is a flag that we pass on all loads _except_ docshell
-+            // loads (since docshell loads run the loaded content with its origin
-+            // principal). So we're effectively allowing resource://, chrome://,
-+            // and moz-icon:// source URIs to load resource://, chrome://, and
-+            // moz-icon:// files, so long as they're not loading it as a document.
-+            bool sourceIsUIResource;
-+            rv = NS_URIChainHasFlags(sourceBaseURI,
-+                                     nsIProtocolHandler::URI_IS_UI_RESOURCE,
-+                                     &sourceIsUIResource);
-+            NS_ENSURE_SUCCESS(rv, rv);
-+            if (sourceIsUIResource) {
-+                return NS_OK;
-+            }
-+
-+            // Allow the load only if the chrome package is whitelisted.
-             nsCOMPtr<nsIXULChromeRegistry> reg(do_GetService(
-                                                  NS_CHROMEREGISTRY_CONTRACTID));
-             if (reg) {
-@@ -787,17 +806,14 @@ nsScriptSecurityManager::CheckLoadURIWithPrincipal(nsIPrincipal* aPrincipal,
-             }
-         }
- 
--        // resource: and chrome: are equivalent, securitywise
--        // That's bogus!!  Fix this.  But watch out for
--        // the view-source stylesheet?
--        bool sourceIsChrome;
--        rv = NS_URIChainHasFlags(sourceBaseURI,
--                                 nsIProtocolHandler::URI_IS_UI_RESOURCE,
--                                 &sourceIsChrome);
--        NS_ENSURE_SUCCESS(rv, rv);
--        if (sourceIsChrome) {
-+        // Special-case the hidden window: it's allowed to load
-+        // URI_IS_UI_RESOURCE no matter what.  Bug 1145470 tracks removing this.
-+        nsAutoCString sourceSpec;
-+        if (NS_SUCCEEDED(sourceBaseURI->GetSpec(sourceSpec)) &&
-+            sourceSpec.EqualsLiteral("resource://gre-resources/hiddenWindow.html")) {
-             return NS_OK;
-         }
-+
-         if (reportErrors) {
-             ReportError(nullptr, errorTag, sourceURI, aTargetURI);
-         }
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-bug-1145870.patch b/gnu/packages/patches/icecat-bug-1145870.patch
deleted file mode 100644
index 34a018c69707d253464e227ebbbf90061a4c4f7f..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-bug-1145870.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a40e2ebc2ab57dacb539d4e49ed4193764ff7112 Mon Sep 17 00:00:00 2001
-From: Kyle Huey <khuey@kylehuey.com>
-Date: Fri, 20 Mar 2015 19:05:56 -0700
-Subject: [PATCH] Bug 1145870. r=bz a=lmandel
-
----
- docshell/base/nsDocShell.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index 14ff3f2..4cddcef 100644
---- a/docshell/base/nsDocShell.cpp
-+++ b/docshell/base/nsDocShell.cpp
-@@ -8900,6 +8900,8 @@ nsDocShell::InternalLoad(nsIURI * aURI,
- 
-     NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE);
- 
-+    NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED);
-+
-     // wyciwyg urls can only be loaded through history. Any normal load of
-     // wyciwyg through docshell is  illegal. Disallow such loads.
-     if (aLoadType & LOAD_CMD_NORMAL) {
-@@ -12570,7 +12572,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent,
- {
-   NS_ASSERTION(NS_IsMainThread(), "wrong thread");
- 
--  if (!IsOKToLoadURI(aURI)) {
-+  if (!IsOKToLoadURI(aURI) || mBlockNavigation) {
-     return NS_OK;
-   }
- 
-@@ -12626,7 +12628,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent,
-     *aRequest = nullptr;
-   }
- 
--  if (!IsOKToLoadURI(aURI)) {
-+  if (!IsOKToLoadURI(aURI) || mBlockNavigation) {
-     return NS_OK;
-   }
- 
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-bug-1146339.patch b/gnu/packages/patches/icecat-bug-1146339.patch
deleted file mode 100644
index 9d858523b9296c0210986da5a9ebfba615a95617..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/icecat-bug-1146339.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From 4ca86283a71427f27e810d77c8e75418f6428457 Mon Sep 17 00:00:00 2001
-From: Olli Pettay <Olli.Pettay@helsinki.fi>
-Date: Mon, 23 Mar 2015 22:23:53 -0400
-Subject: [PATCH] Bug 1146339 - Do anchor scrolling right before dispatching
- popstate/hashchange. r=bz, a=lmandel
-
----
- docshell/base/nsDocShell.cpp | 64 +++++++++++++++++++++-----------------------
- docshell/base/nsDocShell.h   |  1 -
- 2 files changed, 30 insertions(+), 35 deletions(-)
-
-diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index bdf88a5cf..efb6a6e 100644
---- a/docshell/base/nsDocShell.cpp
-+++ b/docshell/base/nsDocShell.cpp
-@@ -1322,7 +1322,7 @@ nsDocShell::LoadURI(nsIURI * aURI,
-     
-     // Note: we allow loads to get through here even if mFiredUnloadEvent is
-     // true; that case will get handled in LoadInternal or LoadHistoryEntry.
--    if (IsPrintingOrPP() || mBlockNavigation) {
-+    if (IsPrintingOrPP()) {
-       return NS_OK; // JS may not handle returning of an error code
-     }
- 
-@@ -4206,7 +4206,8 @@ bool
- nsDocShell::IsNavigationAllowed(bool aDisplayPrintErrorDialog)
- {
-   bool isAllowed = !IsPrintingOrPP(aDisplayPrintErrorDialog) &&
--                   !mFiredUnloadEvent && !mBlockNavigation;  if (!isAllowed) {
-+                   !mFiredUnloadEvent;
-+  if (!isAllowed) {
-     return false;
-   }
-   if (!mContentViewer) {
-@@ -8901,8 +8902,6 @@ nsDocShell::InternalLoad(nsIURI * aURI,
- 
-     NS_ENSURE_TRUE(!mIsBeingDestroyed, NS_ERROR_NOT_AVAILABLE);
- 
--    NS_ENSURE_TRUE(!mBlockNavigation, NS_ERROR_UNEXPECTED);
--
-     // wyciwyg urls can only be loaded through history. Any normal load of
-     // wyciwyg through docshell is  illegal. Disallow such loads.
-     if (aLoadType & LOAD_CMD_NORMAL) {
-@@ -9324,19 +9323,6 @@ nsDocShell::InternalLoad(nsIURI * aURI,
-             GetCurScrollPos(ScrollOrientation_X, &cx);
-             GetCurScrollPos(ScrollOrientation_Y, &cy);
- 
--            {
--                AutoRestore<bool> scrollingToAnchor(mBlockNavigation);
--                mBlockNavigation = true;
--
--                // ScrollToAnchor doesn't necessarily cause us to scroll the window;
--                // the function decides whether a scroll is appropriate based on the
--                // arguments it receives.  But even if we don't end up scrolling,
--                // ScrollToAnchor performs other important tasks, such as informing
--                // the presShell that we have a new hash.  See bug 680257.
--                rv = ScrollToAnchor(curHash, newHash, aLoadType);
--                NS_ENSURE_SUCCESS(rv, rv);
--            }
--
-             // Reset mLoadType to its original value once we exit this block,
-             // because this short-circuited load might have started after a
-             // normal, network load, and we don't want to clobber its load type.
-@@ -9424,16 +9410,6 @@ nsDocShell::InternalLoad(nsIURI * aURI,
-                     mOSHE->SetCacheKey(cacheKey);
-             }
- 
--            /* restore previous position of scroller(s), if we're moving
--             * back in history (bug 59774)
--             */
--            if (mOSHE && (aLoadType == LOAD_HISTORY || aLoadType == LOAD_RELOAD_NORMAL))
--            {
--                nscoord bx, by;
--                mOSHE->GetScrollPosition(&bx, &by);
--                SetCurScrollPosEx(bx, by);
--            }
--
-             /* Restore the original LSHE if we were loading something
-              * while short-circuited load was initiated.
-              */
-@@ -9471,12 +9447,36 @@ nsDocShell::InternalLoad(nsIURI * aURI,
- 
-             SetDocCurrentStateObj(mOSHE);
- 
-+            // Inform the favicon service that the favicon for oldURI also
-+            // applies to aURI.
-+            CopyFavicon(currentURI, aURI, mInPrivateBrowsing);
-+
-+            nsRefPtr<nsGlobalWindow> win = mScriptGlobal ?
-+              mScriptGlobal->GetCurrentInnerWindowInternal() : nullptr;
-+
-+            // ScrollToAnchor doesn't necessarily cause us to scroll the window;
-+            // the function decides whether a scroll is appropriate based on the
-+            // arguments it receives.  But even if we don't end up scrolling,
-+            // ScrollToAnchor performs other important tasks, such as informing
-+            // the presShell that we have a new hash.  See bug 680257.
-+            rv = ScrollToAnchor(curHash, newHash, aLoadType);
-+            NS_ENSURE_SUCCESS(rv, rv);
-+
-+            /* restore previous position of scroller(s), if we're moving
-+             * back in history (bug 59774)
-+             */
-+            if (mOSHE && (aLoadType == LOAD_HISTORY ||
-+                          aLoadType == LOAD_RELOAD_NORMAL)) {
-+              nscoord bx, by;
-+              mOSHE->GetScrollPosition(&bx, &by);
-+              SetCurScrollPosEx(bx, by);
-+            }
-+
-             // Dispatch the popstate and hashchange events, as appropriate.
-             //
-             // The event dispatch below can cause us to re-enter script and
-             // destroy the docshell, nulling out mScriptGlobal. Hold a stack
-             // reference to avoid null derefs. See bug 914521.
--            nsRefPtr<nsGlobalWindow> win = mScriptGlobal;
-             if (win) {
-                 // Fire a hashchange event URIs differ, and only in their hashes.
-                 bool doHashchange = sameExceptHashes && !curHash.Equals(newHash);
-@@ -9492,10 +9492,6 @@ nsDocShell::InternalLoad(nsIURI * aURI,
-                 }
-             }
- 
--            // Inform the favicon service that the favicon for oldURI also
--            // applies to aURI.
--            CopyFavicon(currentURI, aURI, mInPrivateBrowsing);
--
-             return NS_OK;
-         }
-     }
-@@ -12573,7 +12569,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent,
- {
-   NS_ASSERTION(NS_IsMainThread(), "wrong thread");
- 
--  if (!IsOKToLoadURI(aURI) || mBlockNavigation) {
-+  if (!IsOKToLoadURI(aURI)) {
-     return NS_OK;
-   }
- 
-@@ -12629,7 +12625,7 @@ nsDocShell::OnLinkClickSync(nsIContent *aContent,
-     *aRequest = nullptr;
-   }
- 
--  if (!IsOKToLoadURI(aURI) || mBlockNavigation) {
-+  if (!IsOKToLoadURI(aURI)) {
-     return NS_OK;
-   }
- 
-diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
-index be353ee..c191777 100644
---- a/docshell/base/nsDocShell.h
-+++ b/docshell/base/nsDocShell.h
-@@ -835,7 +835,6 @@ protected:
-     bool                       mInPrivateBrowsing;
-     bool                       mUseRemoteTabs;
-     bool                       mDeviceSizeIsPageSize;
--    bool                       mBlockNavigation;
- 
-     // Because scriptability depends on the mAllowJavascript values of our
-     // ancestors, we cache the effective scriptability and recompute it when
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/librep-rules.mk.patch b/gnu/packages/patches/librep-rules.mk.patch
deleted file mode 100644
index 4ea2a3ae1b037ca7cf818ebd89570c9a2ba0b8ea..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/librep-rules.mk.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-rules.mk.in: Don't set prefix, datadir, libdir, datarootdir and repdir.
-rules.mk.in: Use pkg-config to get the absolute path for repcommonexedir.
-
-Merged into upstream: <https://github.com/SawfishWM/librep/commit/a1f2db721aa5055e90f6a76fde625946340ed8cf>.
-
---- librep_0.92.4.orig/rules.mk.in	2015-01-31 23:21:59.614751496 +0800
-+++ librep_0.92.4/rules.mk.in	2015-02-02 18:56:55.097171657 +0800
-@@ -1,18 +1,10 @@
- # rules.mk
- 
--prefix=@prefix@
--datadir=@datadir@
--libdir=@libdir@
-+repcommonexecdir?=$(shell pkg-config --variable=repcommonexecdir librep)
-+rpath_repcommonexecdir:=$(repcommonexecdir)
- 
--# shut up configure
--datarootdir=@datarootdir@
--
--repdir=@repdir@
--repcommonexecdir=@repcommonexecdir@
--rpath_repcommonexecdir=@repcommonexecdir@
--
--rep_LIBTOOL=$(repcommonexecdir)/libtool --tag CC
--rep_INSTALL_ALIASES=$(repcommonexecdir)/install-aliases
-+rep_LIBTOOL:=$(repcommonexecdir)/libtool --tag CC
-+rep_INSTALL_ALIASES:=$(repcommonexecdir)/install-aliases
- 
- # use this like:
- # foo.la : foo.lo bar.lo
diff --git a/gnu/packages/patches/linux-libre-libreboot-fix.patch b/gnu/packages/patches/linux-libre-libreboot-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d340a99fcb283603c70ee6dd8a4a30b2ba67e41e
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-libreboot-fix.patch
@@ -0,0 +1,37 @@
+This patch fixes linux-libre-3.19.x on Libreboot X60 machines.
+Copied from https://bugzilla.kernel.org/show_bug.cgi?id=93171#c25
+
+--- a/drivers/gpu/drm/i915/i915_irq.c	
++++ a/drivers/gpu/drm/i915/i915_irq.c	
+@@ -3598,14 +3598,12 @@ static int i8xx_irq_postinstall(struct drm_device *dev)
+ 		~(I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+-		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+-		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+ 	I915_WRITE16(IMR, dev_priv->irq_mask);
+ 
+ 	I915_WRITE16(IER,
+ 		     I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ 		     I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+-		     I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ 		     I915_USER_INTERRUPT);
+ 	POSTING_READ16(IER);
+ 
+@@ -3767,14 +3765,12 @@ static int i915_irq_postinstall(struct drm_device *dev)
+ 		  I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ 		  I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+ 		  I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT |
+-		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT |
+-		  I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT);
++		  I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT);
+ 
+ 	enable_mask =
+ 		I915_ASLE_INTERRUPT |
+ 		I915_DISPLAY_PIPE_A_EVENT_INTERRUPT |
+ 		I915_DISPLAY_PIPE_B_EVENT_INTERRUPT |
+-		I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT |
+ 		I915_USER_INTERRUPT;
+ 
+ 	if (I915_HAS_HOTPLUG(dev)) {
diff --git a/gnu/packages/patches/linux-libre-vblank-fix.patch b/gnu/packages/patches/linux-libre-vblank-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7f242cfcc112735502fe7dd779c326925b581dd8
--- /dev/null
+++ b/gnu/packages/patches/linux-libre-vblank-fix.patch
@@ -0,0 +1,175 @@
+From f9b61ff6bce9a44555324b29e593fdffc9a115bc Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Wed, 7 Jan 2015 13:54:39 +0100
+Subject: [PATCH] drm/i915: Push vblank enable/disable past
+ encoder->enable/disable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It is platform/output depenedent when exactly the pipe will start
+running. Sometimes we just need the (cpu) pipe enabled, in other cases
+the pch transcoder is enough and in yet other cases the (DP) port is
+sending the frame start signal.
+
+In a perfect world we'd put the drm_crtc_vblank_on call exactly where
+the pipe starts running, but due to cloning and similar things this
+will get messy. And the current approach of picking the most
+conservative place for all combinations also doesn't work since that
+results in legit vblank waits (in encoder->enable hooks, e.g. the 2
+vblank waits for sdvo) failing.
+
+Completely going back to the old world before
+
+commit 51e31d49c89055299e34b8f44d13f70e19aaaad1
+Author: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date:   Mon Sep 15 12:36:02 2014 +0200
+
+    drm/i915: Use generic vblank wait
+
+isn't great either since screaming when the vblank wait work because
+the pipe is off is kinda nice.
+
+Pick a compromise and move the drm_crtc_vblank_on right before the
+encoder->enable call. This is a lie on some outputs/platforms, but
+after the ->enable callback the pipe is guaranteed to run everywhere.
+So not that bad really. Suggested by Ville.
+
+v2: Same treatment for drm_crtc_vblank_off and encoder->disable: I've
+missed the ibx pipe B select w/a, which also has a vblank wait in the
+disable function (while the pipe is obviously still running).
+
+Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Cc: Chris Wilson <chris@chris-wilson.co.uk>
+Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
+---
+ drivers/gpu/drm/i915/intel_display.c | 42 ++++++++++++++++++------------------
+ 1 file changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index a1dbe74..e224820 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -4301,15 +4301,15 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
+ 	if (intel_crtc->config.has_pch_encoder)
+ 		ironlake_pch_enable(crtc);
+ 
++	assert_vblank_disabled(crtc);
++	drm_crtc_vblank_on(crtc);
++
+ 	for_each_encoder_on_crtc(dev, crtc, encoder)
+ 		encoder->enable(encoder);
+ 
+ 	if (HAS_PCH_CPT(dev))
+ 		cpt_verify_modeset(dev, intel_crtc->pipe);
+ 
+-	assert_vblank_disabled(crtc);
+-	drm_crtc_vblank_on(crtc);
+-
+ 	intel_crtc_enable_planes(crtc);
+ }
+ 
+@@ -4421,14 +4421,14 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
+ 	if (intel_crtc->config.dp_encoder_is_mst)
+ 		intel_ddi_set_vc_payload_alloc(crtc, true);
+ 
++	assert_vblank_disabled(crtc);
++	drm_crtc_vblank_on(crtc);
++
+ 	for_each_encoder_on_crtc(dev, crtc, encoder) {
+ 		encoder->enable(encoder);
+ 		intel_opregion_notify_encoder(encoder, true);
+ 	}
+ 
+-	assert_vblank_disabled(crtc);
+-	drm_crtc_vblank_on(crtc);
+-
+ 	/* If we change the relative order between pipe/planes enabling, we need
+ 	 * to change the workaround. */
+ 	haswell_mode_set_planes_workaround(intel_crtc);
+@@ -4479,12 +4479,12 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
+ 
+ 	intel_crtc_disable_planes(crtc);
+ 
+-	drm_crtc_vblank_off(crtc);
+-	assert_vblank_disabled(crtc);
+-
+ 	for_each_encoder_on_crtc(dev, crtc, encoder)
+ 		encoder->disable(encoder);
+ 
++	drm_crtc_vblank_off(crtc);
++	assert_vblank_disabled(crtc);
++
+ 	if (intel_crtc->config.has_pch_encoder)
+ 		intel_set_pch_fifo_underrun_reporting(dev_priv, pipe, false);
+ 
+@@ -4544,14 +4544,14 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
+ 
+ 	intel_crtc_disable_planes(crtc);
+ 
+-	drm_crtc_vblank_off(crtc);
+-	assert_vblank_disabled(crtc);
+-
+ 	for_each_encoder_on_crtc(dev, crtc, encoder) {
+ 		intel_opregion_notify_encoder(encoder, false);
+ 		encoder->disable(encoder);
+ 	}
+ 
++	drm_crtc_vblank_off(crtc);
++	assert_vblank_disabled(crtc);
++
+ 	if (intel_crtc->config.has_pch_encoder)
+ 		intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A,
+ 						      false);
+@@ -5021,12 +5021,12 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
+ 	intel_update_watermarks(crtc);
+ 	intel_enable_pipe(intel_crtc);
+ 
+-	for_each_encoder_on_crtc(dev, crtc, encoder)
+-		encoder->enable(encoder);
+-
+ 	assert_vblank_disabled(crtc);
+ 	drm_crtc_vblank_on(crtc);
+ 
++	for_each_encoder_on_crtc(dev, crtc, encoder)
++		encoder->enable(encoder);
++
+ 	intel_crtc_enable_planes(crtc);
+ 
+ 	/* Underruns don't raise interrupts, so check manually. */
+@@ -5082,12 +5082,12 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
+ 	intel_update_watermarks(crtc);
+ 	intel_enable_pipe(intel_crtc);
+ 
+-	for_each_encoder_on_crtc(dev, crtc, encoder)
+-		encoder->enable(encoder);
+-
+ 	assert_vblank_disabled(crtc);
+ 	drm_crtc_vblank_on(crtc);
+ 
++	for_each_encoder_on_crtc(dev, crtc, encoder)
++		encoder->enable(encoder);
++
+ 	intel_crtc_enable_planes(crtc);
+ 
+ 	/*
+@@ -5159,12 +5159,12 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
+ 	 */
+ 	intel_wait_for_vblank(dev, pipe);
+ 
+-	drm_crtc_vblank_off(crtc);
+-	assert_vblank_disabled(crtc);
+-
+ 	for_each_encoder_on_crtc(dev, crtc, encoder)
+ 		encoder->disable(encoder);
+ 
++	drm_crtc_vblank_off(crtc);
++	assert_vblank_disabled(crtc);
++
+ 	intel_disable_pipe(intel_crtc);
+ 
+ 	i9xx_pfit_disable(intel_crtc);
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b2ff43c0d3d6bef86b4359742a449c3d5d2377a2
--- /dev/null
+++ b/gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch
@@ -0,0 +1,53 @@
+This patch (adapted from nixpkgs for Build.PL) configures Getopt::Long to pass
+options so they will be available at the second GetOptions call.
+
+Also an option to specify the search path for libfontconfig is added.
+
+--- GD-2.56/Build.PL	2014-10-27 20:34:54.000000000 -0500
++++ GD-2.56/Build.PL	2015-02-22 10:08:12.569973657 -0600
+@@ -2,14 +2,14 @@
+ 
+ use strict;
+ use Module::Build;
+-use Getopt::Long;
++use Getopt::Long qw(:config pass_through);
+ use Config;
+ 
+ # =====> PATHS: CHECK AND ADJUST <=====
+ my (@INC,@LIBPATH,@LIBS);
+ my $AUTOCONFIG = 0;      # global set by try_to_autoconfigure() below
+ 
+-my ($options,$lib_gd_path,$lib_ft_path,$lib_png_path,$lib_jpeg_path,$lib_xpm_path,$lib_zlib_path);
++my ($options,$lib_gd_path,$lib_ft_path,$lib_png_path,$lib_jpeg_path,$lib_xpm_path,$lib_zlib_path,$lib_fontconfig_path);
+ 
+ unless (try_to_autoconfigure(\$options,\$lib_gd_path,\@INC,\@LIBPATH,\@LIBS)) {
+     die <<END;
+@@ -38,6 +38,7 @@
+ 			"lib_jpeg_path=s" => \$lib_jpeg_path,
+ 			"lib_xpm_path=s"  => \$lib_xpm_path,
+ 			"lib_zlib_path=s" => \$lib_zlib_path,
++			"lib_fontconfig_path=s" => \$lib_fontconfig_path,
+ 		       );
+ unless ($result) {
+   die <<END;
+@@ -53,6 +54,7 @@
+      -lib_jpeg_path path            path to libjpeg
+      -lib_xpm_path  path            path to libxpm
+      -lib_zlib_path path            path to libpng
++     -lib_fontconfig_path path      path to fontconfig
+      -ignore_missing_gd             Ignore missing or old libgd installations and try to compile anyway
+ 
+ If no options are passed on the command line.  The program will
+@@ -100,6 +102,12 @@
+     @INC     = ("-I$lib_zlib_path/include", @INC);
+     @LIBPATH = ("-L$lib_zlib_path/lib", @LIBPATH); 
+ }
++if( defined($lib_fontconfig_path) ) 
++{
++    print "Fontconfig library used from:     $lib_fontconfig_path\n";
++    @INC     = ("-I$lib_fontconfig_path/include", @INC);
++    @LIBPATH = ("-L$lib_fontconfig_path/lib", @LIBPATH); 
++}
+ #############################################################################################
+ 
+ if ($^O eq 'VMS'){
diff --git a/gnu/packages/patches/pulseaudio-longer-test-timeout.patch b/gnu/packages/patches/pulseaudio-longer-test-timeout.patch
new file mode 100644
index 0000000000000000000000000000000000000000..fa81f749d2ec340b07044db163ece41ed193cd8a
--- /dev/null
+++ b/gnu/packages/patches/pulseaudio-longer-test-timeout.patch
@@ -0,0 +1,13 @@
+Increase the timeout on 'cpu-mix-test' to accommodate slower machines.
+
+--- pulseaudio-6.0/src/tests/cpu-mix-test.c.ORIG	2015-02-12 09:10:35.000000000 -0500
++++ pulseaudio-6.0/src/tests/cpu-mix-test.c	2015-03-31 13:45:05.316878322 -0400
+@@ -212,7 +212,7 @@
+ #if defined (__arm__) && defined (__linux__) && defined (HAVE_NEON)
+     tcase_add_test(tc, mix_neon_test);
+ #endif
+-    tcase_set_timeout(tc, 120);
++    tcase_set_timeout(tc, 240);
+     suite_add_tcase(s, tc);
+ 
+     sr = srunner_create(s);
diff --git a/gnu/packages/patches/source-highlight-regexrange-test.patch b/gnu/packages/patches/source-highlight-regexrange-test.patch
deleted file mode 100644
index 298c831b35dd4ee606abbe81072d85ea696198f7..0000000000000000000000000000000000000000
--- a/gnu/packages/patches/source-highlight-regexrange-test.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Disable a single check.  The failure is discussed at:
-
-  https://savannah.gnu.org/bugs/index.php?41786
-
---- a/lib/tests/test_regexranges_main.cpp	2012-04-14 08:58:25.000000000 -0500
-+++ b/lib/tests/test_regexranges_main.cpp	2014-03-05 23:49:23.520402043 -0600
-@@ -52,7 +52,7 @@
-     check_range_regex("simple regex");
-     check_range_regex("[[:alpha:]]+");
-     // test with a wrong regular expression
--    check_range_regex("{notclosed", false);
-+    // check_range_regex("{notclosed", false);
- 
-     // reset regular expressions
-     ranges.clear();
diff --git a/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch b/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f5cd0b9a9e16263c392d1b67ebea7e0a67b22323
--- /dev/null
+++ b/gnu/packages/patches/xf86-video-sis-fix-exa-crash.patch
@@ -0,0 +1,45 @@
+Fix X server crash when sis driver is used with EXA acceleration.
+
+Source: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/trusty/xserver-xorg-video-sis/trusty/revision/24/debian/patches/fix-exa-crash.diff
+
+The patch was originally proposed by nihui:
+https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-sis/+bug/1066464/comments/13
+
+--- a/src/sis310_accel.c
++++ b/src/sis310_accel.c
+@@ -1874,7 +1874,7 @@
+ {
+ 	ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
+ 	SISPtr pSiS = SISPTR(pScrn);
+-	unsigned char *dst = pDst->devPrivate.ptr;
++	unsigned char *dst = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pDst);
+ 	int dst_pitch = exaGetPixmapPitch(pDst);
+ 
+ 	(pSiS->SyncAccel)(pScrn);
+@@ -1882,7 +1882,7 @@
+ 	if(pDst->drawable.bitsPerPixel < 8)
+ 	   return FALSE;
+ 
+-	dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * src_pitch);
++	dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * dst_pitch);
+ 	while(h--) {
+ 	   SiSMemCopyToVideoRam(pSiS, dst, (unsigned char *)src,
+ 				(w * pDst->drawable.bitsPerPixel / 8));
+@@ -1953,7 +1953,7 @@
+ {
+ 	ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen);
+ 	SISPtr pSiS = SISPTR(pScrn);
+-	unsigned char *src = pSrc->devPrivate.ptr;
++	unsigned char *src = ((unsigned char *) pSiS->FbBase) + exaGetPixmapOffset(pSrc);
+ 	int src_pitch = exaGetPixmapPitch(pSrc);
+ 	int size = src_pitch < dst_pitch ? src_pitch : dst_pitch;
+ 
+@@ -1964,7 +1964,7 @@
+ 
+ 	src += (x * pSrc->drawable.bitsPerPixel / 8) + (y * src_pitch);
+ 	while(h--) {
+-	   SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, size);
++	   SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, (w * pSrc->drawable.bitsPerPixel / 8));
+ 	   src += src_pitch;
+ 	   dst += dst_pitch;
+ 	}
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 9d41d88d26f023f1f4d161642af1eff2caeca744..902192bb6f6fb301195fed5a45b8d02e03aab81f 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -281,6 +281,27 @@ (define-public perl-cache-cache
 easy to use abstraction of the filesystem or shared memory.")
     (license (package-license perl))))
 
+(define-public perl-cache-fastmmap
+  (package
+    (name "perl-cache-fastmmap")
+    (version "1.40")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RO/ROBM/"
+                           "Cache-FastMmap-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0h3ckr04cdn6dvl40m4m97vl5ybf30v1lwhw3jvkr92kpksvq4hd"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Cache-FastMmap")
+    (synopsis "Shared memory interprocess cache via mmap")
+    (description "A shared memory cache through an mmap'ed file.  It's core is
+written in C for performance.  It uses fcntl locking to ensure multiple
+processes can safely access the cache at the same time.  It uses a basic LRU
+algorithm to keep the most used entries in the cache.")
+    (license (package-license perl))))
+
 (define-public perl-capture-tiny
   (package
     (name "perl-capture-tiny")
@@ -649,6 +670,26 @@ (define-public perl-class-method-modifiers
 method.")
     (license (package-license perl))))
 
+(define-public perl-class-singleton
+  (package
+    (name "perl-class-singleton")
+    (version "1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SH/SHAY/"
+                           "Class-Singleton-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0y7ngrjf551bjgmijp5rsidbkq6c8hb5lmy2jcqq0fify020s8iq"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Class-Singleton")
+    (synopsis "Implementation of a singleton class for Perl")
+    (description "This module implements a Singleton class from which other
+classes can be derived. By itself, the Class::Singleton module does very
+little other than manage the instantiation of a single object.")
+    (license (package-license perl))))
+
 (define-public perl-class-tiny
   (package
     (name "perl-class-tiny")
@@ -1023,6 +1064,88 @@ (define-public perl-data-visitor
 structures, and all ref types (hashes, arrays, scalars, code, globs).")
     (license (package-license perl))))
 
+(define-public perl-datetime
+  (package
+    (name "perl-datetime")
+    (version "1.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "DateTime-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fli1ls298qa8nfki15myxqqqfpxvslxk4j5r3vjk577wfgjrnms"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-warnings" ,perl-test-warnings)))
+    (propagated-inputs
+     `(("perl-datetime-locale" ,perl-datetime-locale)
+       ("perl-datetime-timezone" ,perl-datetime-timezone)
+       ("perl-params-validate" ,perl-params-validate)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/DateTime")
+    (synopsis "Date and time object for Perl")
+    (description "DateTime is a class for the representation of date/time
+combinations.  It represents the Gregorian calendar, extended backwards in
+time before its creation (in 1582).")
+    (license artistic2.0)))
+
+(define-public perl-datetime-locale
+  (package
+    (name "perl-datetime-locale")
+    (version "0.45")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "DateTime-Locale-" version ".tar.gz"))
+       (sha256
+        (base32
+         "175grkrxiv012n6ch3z1sip4zprcili6m5zqi3njdk5c1gdvi8ca"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-params-validate" ,perl-params-validate)))
+    (home-page "http://search.cpan.org/dist/DateTime-Locale")
+    (synopsis "Localization support for DateTime.pm")
+    (description "The DateTime::Locale modules provide localization data for
+the DateTime.pm class.")
+    (license (package-license perl))))
+
+(define-public perl-datetime-timezone
+  (package
+    (name "perl-datetime-timezone")
+    (version "1.86")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "DateTime-TimeZone-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1aj5liy9as7yci2s9cqv9gqna5wggah8yg2jqrc89dnrin25s26z"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-class-singleton" ,perl-class-singleton)
+       ("perl-list-allutils" ,perl-list-allutils)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-params-validate" ,perl-params-validate)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/DateTime-TimeZone")
+    (synopsis "Time zone object for Perl")
+    (description "This class is the base class for all time zone objects.  A
+time zone is represented internally as a set of observances, each of which
+describes the offset from GMT for a given time period.  Note that without the
+DateTime module, this module does not do much.  It's primary interface is
+through a DateTime object, and most users will not need to directly use
+DateTime::TimeZone methods.")
+    (license (package-license perl))))
+
 (define-public perl-devel-caller
   (package
     (name "perl-devel-caller")
@@ -1963,6 +2086,30 @@ (define-public perl-json-xs
 versa.")
     (license (package-license perl))))
 
+(define-public perl-list-allutils
+  (package
+    (name "perl-list-allutils")
+    (version "0.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "List-AllUtils-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1qmfpmly0pghc94k6ifnd1vwzlv8nks27qkqs6h4p7vcricn7zjc"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-warnings" ,perl-test-warnings)))
+    (propagated-inputs
+     `(("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-scalar-list-utils" ,perl-scalar-list-utils)))
+    (home-page "http://search.cpan.org/dist/List-AllUtils")
+    (synopsis "Combination of List::Util and List::MoreUtils")
+    (description "This module exports all of the functions that either
+List::Util or List::MoreUtils defines, with preference to List::Util.")
+    (license (package-license perl))))
+
 (define-public perl-list-moreutils
   (package
     (name "perl-list-moreutils")
@@ -2469,6 +2616,28 @@ (define-public perl-moosex-params-validate
 validation to Moose.")
     (license (package-license perl))))
 
+(define-public perl-moosex-relatedclassroles
+  (package
+    (name "perl-moosex-relatedclassroles")
+    (version "0.004")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
+                           "MooseX-RelatedClassRoles-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17vynkf6m5d039qkr4in1c9lflr8hnwp1fgzdwhj4q6jglipmnrh"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-moosex-role-parameterized" ,perl-moosex-role-parameterized)))
+    (home-page "http://search.cpan.org/dist/MooseX-RelatedClassRoles")
+    (synopsis "Apply roles to a related Perl class")
+    (description "This module applies roles to make a subclass instead of
+manually setting up a subclass.")
+    (license (package-license perl))))
+
 (define-public perl-moosex-role-parameterized
   (package
     (name "perl-moosex-role-parameterized")
@@ -3108,6 +3277,29 @@ (define-public perl-scope-guard
 collector.")
     (license (package-license perl))))
 
+(define-public perl-spiffy
+  (package
+    (name "perl-spiffy")
+    (version "0.46")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
+                           "Spiffy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18qxshrjh0ibpzjm2314157mxlibh3smyg64nr4mq990hh564n4g"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Spiffy")
+    (synopsis "Spiffy Perl Interface Framework For You")
+    (description "Spiffy is a framework and methodology for doing object
+oriented (OO) programming in Perl.  Spiffy combines the best parts of
+Exporter.pm, base.pm, mixin.pm and SUPER.pm into one magic foundation class.
+It attempts to fix all the nits and warts of traditional Perl OO, in a clean,
+straightforward and (perhaps someday) standard way.  Spiffy borrows ideas from
+other OO languages like Python, Ruby, Java and Perl 6.")
+    (license (package-license perl))))
+
 (define-public perl-stream-buffered
   (package
     (name "perl-stream-buffered")
@@ -3410,6 +3602,32 @@ (define-public perl-template-toolkit
 documents: HTML, XML, POD, PostScript, LaTeX, and so on.")
     (license (package-license perl))))
 
+(define-public perl-test-base
+  (package
+    (name "perl-test-base")
+    (version "0.88")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
+                           "Test-Base-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fch1cvivnszbnwhpfmwv1rin04j5xkj1n1ylfmlxg6bm72qqdjj"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-algorithm-diff" ,perl-algorithm-diff)
+       ("perl-text-diff" ,perl-text-diff)))
+    (propagated-inputs
+     `(("perl-spiffy" ,perl-spiffy)
+       ("perl-test-deep" ,perl-test-deep)))
+    (home-page "http://search.cpan.org/dist/Test-Base")
+    (synopsis "Data-driven testing framework for Perl")
+    (description "Test::Base gives a way to trivially write your own test
+framework base class.  It concentrates on offering reusable data driven
+patterns, so that you can write tests with a minimum of code.")
+    (license (package-license perl))))
+
 (define-public perl-test-cleannamespaces
   (package
     (name "perl-test-cleannamespaces")
@@ -3874,6 +4092,27 @@ (define-public perl-test-trap
 from boxed blocks of test code.")
     (license (package-license perl))))
 
+(define-public perl-test-utf8
+  (package
+    (name "perl-test-utf8")
+    (version "1.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MA/MARKF/"
+                           "Test-utf8-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0yhvf735v334qqvp9zg7i66qyk6r4cbk5s2psv93d3fdd4bindzg"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Test-utf8")
+    (synopsis "UTF-8 testing in Perl")
+    (description "This module is a collection of tests useful for dealing with
+UTF-8 strings in Perl.  This module has two types of tests: The validity tests
+check if a string is valid and not corrupt, whereas the characteristics tests
+will check that string has a given set of characteristics.")
+    (license (package-license perl))))
+
 (define-public perl-test-warn
   (package
     (name "perl-test-warn")
@@ -3963,6 +4202,27 @@ (define-public perl-test-writevariants
 generation of tests in nested combinations of contexts.")
     (license (package-license perl))))  ;See LICENSE
 
+(define-public perl-test-yaml
+  (package
+    (name "perl-test-yaml")
+    (version "1.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
+                           "Test-YAML-" version ".tar.gz"))
+       (sha256
+        (base32
+         "079nayc0fp2fwjv8s2yr069bdffln699j6z3lqr5dpx1v2qg82ck"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-test-base" ,perl-test-base)))
+    (home-page "http://search.cpan.org/dist/Test-YAML")
+    (synopsis "Testing module for YAML implementations")
+    (description "Test::YAML is a subclass of Test::Base with YAML specific
+support.")
+    (license (package-license perl))))
+
 (define-public perl-text-balanced
   (package
     (name "perl-text-balanced")
@@ -3982,6 +4242,26 @@ (define-public perl-text-balanced
 text sequences from strings.")
     (license (package-license perl))))
 
+(define-public perl-text-csv
+  (package
+    (name "perl-text-csv")
+    (version "1.33")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MA/MAKAMAKA/"
+                           "Text-CSV-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05a1nayxv04n0hx7y3m8327ijm34k9nhngrbxl18zmgzpawqynww"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-CSV")
+    (synopsis "Manipulate comma-separated values")
+    (description "Text::CSV provides facilities for the composition and
+decomposition of comma-separated values.  An instance of the Text::CSV class
+can combine fields into a CSV string and parse a CSV string into fields.")
+    (license (package-license perl))))
+
 (define-public perl-text-diff
   (package
     (name "perl-text-diff")
@@ -4283,6 +4563,27 @@ (define-public perl-variable-magic
 having to write a single line of XS.")
     (license (package-license perl))))
 
+(define-public perl-yaml
+  (package
+    (name "perl-yaml")
+    (version "1.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
+                           "YAML-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0sswbkyisgny7ksw34n7zdaxrhsbbn7dgjb9gjybpzhcnml476kc"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-yaml" ,perl-test-yaml)))
+    (home-page "http://search.cpan.org/dist/YAML")
+    (synopsis "YAML for Perl")
+    (description "The YAML.pm module implements a YAML Loader and Dumper based
+on the YAML 1.0 specification.")
+    (license (package-license perl))))
+
 (define-public perl-yaml-tiny
   (package
     (name "perl-yaml-tiny")
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 9ccca5c8b540983052f65cae47e5f9edee0d8ed4..7739c7a2765febb6783b9f9dd21d3f59568fa865 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,34 @@ (define-module (gnu packages popt)
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses))
 
+(define-public argtable
+  (package
+    (name "argtable")
+    (version "2.13")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/argtable/argtable"
+                    (string-join (string-split version #\.) "-")
+                    ".tar.gz"))
+             (sha256
+              (base32
+               "1gyxf4bh9jp5gb3l6g5qy90zzcf3vcpk0irgwbv1lc6mrskyhxwg"))))
+    (build-system gnu-build-system)
+    (home-page "http://argtable.sourceforge.net/")
+    (synopsis "Command line option parsing library")
+    (description
+     "Argtable is an ANSI C library for parsing GNU style command line
+options.  It enables a program's command line syntax to be defined in the
+source code as an array of argtable structs.  The command line is then parsed
+according to that specification and the resulting values are returned in those
+same structs where they are accessible to the main program.  Both tagged (-v,
+--verbose, --foo=bar) and untagged arguments are supported, as are multiple
+instances of each argument.  Syntax error handling is automatic and the library
+also provides the means for generating a textual description of the command
+line syntax.")
+    (license lgpl2.0+)))
+
 (define-public popt
   (package
     (name "popt")
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index 1576c3dfea42c6c057fe793702cc448eebd06378..81b6537f15dbe5bb643e116d86c82aea004af776 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -144,7 +144,7 @@ (define-public enscript
 (define-public source-highlight
   (package
     (name "source-highlight")
-    (version "3.1.7")
+    (version "3.1.8")
     (source
      (origin
       (method url-fetch)
@@ -152,11 +152,7 @@ (define-public source-highlight
                           version ".tar.gz"))
       (sha256
        (base32
-        "1s49ld8cnpzhhwq0r7s0sfm3cg3nhhm0wla27lwraifrrl3y1cp1"))
-      (patches
-       (list (search-patch
-              ;; Patch submitted as Savannah item #41786
-              "source-highlight-regexrange-test.patch")))))
+        "18xdalxg7yzrxc1njzgw7aryq2jdm7zq2yqz41sc7k6il5z6lcq1"))))
     (build-system gnu-build-system)
     ;; The ctags that comes with emacs does not support the --excmd options,
     ;; so can't be used
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index d76f74b775bd3ad1e14265a131e54e7bcddd98f4..edf01e59fae1585ac505ece4abe6703ea059e323 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -128,7 +128,9 @@ (define pulseaudio
               '(substitute* "src/daemon/default.pa.in"
                  (("load-module module-console-kit" all)
                   (string-append "#" all "\n"))))
-             (patches (list (search-patch "pulseaudio-fix-mult-test.patch")))))
+             (patches
+              (list (search-patch "pulseaudio-fix-mult-test.patch")
+                    (search-patch "pulseaudio-longer-test-timeout.patch")))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--localstatedir=/var" ;"--sysconfdir=/etc"
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index c5cae6de45e7a7fb2869e037aadd38f605ebd356..59c460af3b4e61832ba9720586f36c933be0c737 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1571,9 +1571,9 @@ (define-public python-certifi
 (define-public python2-certifi
   (package-with-python2 python-certifi))
 
-(define-public python2-requests
+(define-public python-requests
   (package
-    (name "python2-requests")
+    (name "python-requests")
     (version "2.4.0")
     (source (origin
              (method url-fetch)
@@ -1588,8 +1588,7 @@ (define-public python2-requests
     (inputs
      `(("python-setuptools" ,python-setuptools)
        ("python-certifi" ,python-certifi)))
-    (arguments `(#:tests? #f ; no tests
-                 #:python ,python-2))
+    (arguments `(#:tests? #f)) ; no tests
     (home-page "http://python-requests.org/")
     (synopsis "Python HTTP library")
     (description
@@ -1597,6 +1596,9 @@ (define-public python2-requests
 than Python’s urllib2 library.")
     (license asl2.0)))
 
+(define-public python2-requests
+  (package-with-python2 python-requests))
+
 (define-public python-jsonschema
   (package
     (name "python-jsonschema")
@@ -2865,6 +2867,37 @@ (define-public python-decorator
 (define-public python2-decorator
   (package-with-python2 python-decorator))
 
+(define-public python-drmaa
+  (package
+    (name "python-drmaa")
+    (version "0.7.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/d/drmaa/drmaa-"
+             version ".tar.gz"))
+       (sha256
+        (base32 "0bzl9f9g34dlhwf09i3fdv7dqqzf2iq0w7d6c2bafx1nlap8qfbh"))))
+    (build-system python-build-system)
+    ;; The test suite requires libdrmaa which is provided by the cluster
+    ;; environment.  At runtime the environment variable DRMAA_LIBRARY_PATH
+    ;; should be set to the path of the libdrmaa library.
+    (arguments '(#:tests? #f))
+    (native-inputs
+     `(("python-nose" ,python-nose)
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "https://pypi.python.org/pypi/drmaa")
+    (synopsis "Python bindings for the DRMAA library")
+    (description
+      "A Python package for Distributed Resource Management (DRM) job
+submission and control.  This package is an implementation of the DRMAA 1.0
+Python language binding specification.")
+    (license bsd-3)))
+
+(define-public python2-drmaa
+  (package-with-python2 python-drmaa))
+
 (define-public python-ipython
   (package
     (name "python-ipython")
@@ -3446,3 +3479,32 @@ (define-public python2-xlib
 library for Python programs.  It is useful to implement low-level X clients.
 It is written entirely in Python.")
     (license gpl2+)))
+
+(define-public python-singledispatch
+  (package
+    (name "python-singledispatch")
+    (version "3.4.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/s/singledispatch/"
+             "singledispatch-" version ".tar.gz"))
+       (sha256
+        (base32
+         "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page
+     "http://docs.python.org/3/library/functools.html#functools.singledispatch")
+    (synopsis "Backport of singledispatch feature from Python 3.4")
+    (description
+     "This library brings functools.singledispatch from Python 3.4 to Python
+2.6-3.3.")
+    (license license:expat)))
+
+(define-public python2-singledispatch
+  (package-with-python2 python-singledispatch))
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index f50632885fddf673400434e7ff0477661902c478..e2cb62c62c72d51fd1d5fe3898edbd2546db167e 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -36,15 +36,14 @@ (define-module (gnu packages sawfish)
 (define-public librep
   (package
     (name "librep")
-    (version "0.92.4")
+    (version "0.92.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://download.tuxfamily.org/" name "/"
                                   name "_" version ".tar.xz"))
               (sha256
                (base32
-                "0297m24p2y8j3wavf8qqyriic7ls2392cmfn96y0pi83r5qckc25"))
-              (patches (list (search-patch "librep-rules.mk.patch")))))
+                "0zsy5gi8kvz5vq41y5rzm6lfi3dpiwbg4diwb6d30qfi72mrpni2"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("makeinfo"   ,texinfo)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index b8b9d4bd9c2db1ceb668780e16cbfd2f3fe9809e..661ef913865965d1e7db3badce5bdbaa09a95536 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -21,9 +21,7 @@
 
 (define-module (gnu packages video)
   #:use-module (ice-9 match)
-  #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 public-domain
-                               fsf-free isc))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -68,6 +66,7 @@ (define-module (gnu packages video)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages version-control)
@@ -79,6 +78,44 @@ (define-module (gnu packages video)
   #:use-module (gnu packages yasm)
   #:use-module (gnu packages zip))
 
+(define-public aalib
+  (package
+    (name "aalib")
+    (version "1.4rc5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/aa-project/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("makeinfo" ,texinfo)))
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace configure
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    ;; This old `configure' script doesn't support
+                    ;; variables passed as arguments.
+                    (let ((out     (assoc-ref outputs "out"))
+                          (ncurses (assoc-ref inputs "ncurses")))
+                      (setenv "CONFIG_SHELL" (which "bash"))
+                      (zero? (system* "./configure"
+                                      (string-append "--prefix=" out)
+                                      (string-append "--with-ncurses="
+                                                     ncurses)))))))))
+    (home-page "http://aa-project.sourceforge.net/aalib/")
+    (synopsis "ASCII-art library")
+    (description
+     "AA-lib is a low level gfx library which does not require graphics device.
+In fact, there is no graphical output possible.  AA-lib replaces those
+old-fashioned output methods with powerful ascii-art renderer.")
+    (license license:lgpl2.0+)))
+
 (define-public liba52
   (package
     (name "liba52")
@@ -106,7 +143,7 @@ (define-public liba52
     (description "liba52 is a library for decoding ATSC A/52 streams.  The
 A/52 standard is used in a variety of applications, including digital
 television and DVD.  It is also known as AC-3.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libass
   (package
@@ -134,7 +171,7 @@ (define-public libass
     (synopsis "Subtitle rendering library for the ASS/SSA format")
     (description "libass is a subtitle rendering library for the
 ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
-    (license isc)))
+    (license license:isc)))
 
 (define-public libcaca
   (package
@@ -162,7 +199,7 @@ (define-public libcaca
 pixels, so that it can work on older video cards or text terminals.  It
 supports Unicode, 2048 colors, dithering of color images, and advanced text
 canvas operations.")
-    (license (fsf-free "file://COPYING")))) ;WTFPL version 2
+    (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
 
 (define-public libdca
   (package
@@ -181,7 +218,7 @@ (define-public libdca
     (synopsis "DTS Coherent Acoustics decoder")
     (description "libdca is a library for decoding DTS Coherent Acoustics
 streams.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libdv
   (package
@@ -204,7 +241,7 @@ (define-public libdv
 that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface.  Libdv was
 developed according to the official standards for DV video: IEC 61834 and
 SMPTE 314M.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libva
   (package
@@ -233,7 +270,7 @@ (define-public libva
 to enable hardware accelerated video decode/encode at various
 entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding
 standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
-    (license expat)))
+    (license license:expat)))
 
 (define-public ffmpeg
   (package
@@ -389,7 +426,7 @@ (define-public ffmpeg
     (description "FFmpeg is a complete, cross-platform solution to record,
 convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 ;; We need this older ffmpeg because vlc-2.1.5 doesn't work with ffmpeg-2.4.
 (define-public ffmpeg-2.2
@@ -465,7 +502,7 @@ (define-public vlc
     (description "VLC is a cross-platform multimedia player and framework
 that plays most multimedia files as well as DVD, Audio CD, VCD, and various
 treaming protocols.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public mplayer
   (package
@@ -553,7 +590,7 @@ (define-public mplayer
 Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT,
 NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files.  One can watch VideoCD,
 SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 ;;; This is not version 2; it's a fork literally named "mplayer2".
 (define-public mplayer2
@@ -673,7 +710,7 @@ (define-public mplayer2
 several areas.")
     ;; See file Copyright.  Most files are gpl2+ or compatible, but talloc.c
     ;; is under lgpl3+, thus the whole project becomes gpl3+.
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public mpv
   (package
@@ -758,7 +795,7 @@ (define-public mpv
     (description "mpv is a general-purpose audio and video player.  It is a
 fork of mplayer2 and MPlayer.  It shares some features with the former
 projects while introducing many more.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libvpx
   (package
@@ -810,7 +847,7 @@ (define-public libvpx
        ("yasm" ,yasm)))
     (synopsis "VP8/VP9 video codec")
     (description "libvpx is a codec for the VP8/VP9 video compression format.")
-    (license bsd-3)
+    (license license:bsd-3)
     (home-page "http://www.webmproject.org/")))
 
 (define-public youtube-dl
@@ -832,7 +869,7 @@ (define-public youtube-dl
     (description
      "youtube-dl is a small command-line program to download videos from
 YouTube.com and a few more sites.")
-    (license public-domain)))
+    (license license:public-domain)))
 
 (define-public libbluray
   (package
@@ -860,7 +897,7 @@ (define-public libbluray
     (description
      "libbluray is a library designed for Blu-Ray Disc playback for media
 players, like VLC or MPlayer.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libdvdread
   (package
@@ -883,7 +920,7 @@ (define-public libdvdread
 DVDs.  It parses IFO files, reads NAV-blocks, and performs CSS
 authentication and descrambling (if an external libdvdcss library is
 installed).")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libdvdnav
   (package
@@ -915,7 +952,7 @@ (define-public libdvdnav
 additional calls to tell the library of user interaction.  The whole
 DVD virtual machine and internal playback states are completely
 encapsulated.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libdvdnav-4
   (package
@@ -961,7 +998,7 @@ (define-public libdvdcss
     (description
      "libdvdcss is a simple library designed for accessing DVDs like a block
 device without having to bother about the decryption.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public srt2vtt
   (package
@@ -982,7 +1019,7 @@ (define-public srt2vtt
     (description "srt2vtt converts SubRip formatted subtitles to WebVTT format
 for use with HTML5 video.")
     (home-page "http://dthompson.us/pages/software/srt2vtt")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public avidemux
   (package
@@ -1097,7 +1134,7 @@ (define-public avidemux
 can be automated using projects, job queue and powerful scripting
 capabilities.")
     ;; Software with various licenses is included, see License.txt.
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public avidemux-2.5
   (package (inherit avidemux)
@@ -1228,7 +1265,7 @@ (define-public vapoursynth
 multithreading, generalized colorspaces, per frame properties, and videos with
 format changes.")
     ;; As seen from the source files.
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public xvid
   (package
@@ -1261,4 +1298,31 @@ (define-public xvid
 codec library.  It uses ASP features such as b-frames, global and quarter
 pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG
 and custom quantization matrices.")
-    (license gpl2+)))
+    (license license:gpl2+)))
+
+(define-public livestreamer
+  (package
+    (name "livestreamer")
+    (version "1.12.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/chrippa/livestreamer/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append "livestreamer-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1dhgk8v8q1h3km4g5jc0cmjsxdaa2d456fvdb2wk7hmxmmwbqm9j"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; tests rely on external web servers
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (propagated-inputs
+     `(("python-requests" ,python-requests)
+       ("python-singledispatch" ,python-singledispatch)))
+    (synopsis "Internet video stream viewer")
+    (description "Livestreamer is a command-line utility that extracts streams
+from various services and pipes them into a video playing application.")
+    (home-page "http://livestreamer.io/")
+    (license license:bsd-2)))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index cbf3cb34656b55ee165ab46639029b49749b668d..374642862a94719a8eba42bc1a36d4e02501ed2e 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -40,6 +40,7 @@ (define-module (gnu packages web)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages gd)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages lua)
@@ -107,38 +108,51 @@ (define-public nginx
     (arguments
      `(#:tests? #f                      ; no test target
        #:phases
-       (alist-cons-before
-        'configure 'patch-/bin/sh
-        (lambda _
-          (substitute* "auto/feature"
-            (("/bin/sh") (which "bash"))))
-        (alist-replace
-         'configure
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((flags
-                  (list (string-append "--prefix=" (assoc-ref outputs "out"))
-                        "--with-http_ssl_module"
-                        "--with-pcre-jit"
-                        "--with-ipv6"
-                        "--with-debug"
-                        ;; Even when not cross-building, we pass the
-                        ;; --crossbuild option to avoid customizing for the
-                        ;; kernel version on the build machine.
-                        ,(let ((system "Linux")    ; uname -s
-                               (release "2.6.32")  ; uname -r
-                               ;; uname -m
-                               (machine (match (or (%current-target-system)
-                                                   (%current-system))
-                                          ("x86_64-linux"   "x86_64")
-                                          ("i686-linux"     "i686")
-                                          ("mips64el-linux" "mips64"))))
-                           (string-append "--crossbuild="
-                                          system ":" release ":" machine)))))
-             (setenv "CC" "gcc")
-             (format #t "environment variable `CC' set to `gcc'~%")
-             (format #t "configure flags: ~s~%" flags)
-             (zero? (apply system* "./configure" flags))))
-         %standard-phases))))
+       (modify-phases %standard-phases
+         (add-before configure patch-/bin/sh
+           (lambda _
+             (substitute* "auto/feature"
+               (("/bin/sh") (which "bash")))))
+         (replace configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((flags
+                    (list (string-append "--prefix=" (assoc-ref outputs "out"))
+                          "--with-http_ssl_module"
+                          "--with-pcre-jit"
+                          "--with-ipv6"
+                          "--with-debug"
+                          ;; Even when not cross-building, we pass the
+                          ;; --crossbuild option to avoid customizing for the
+                          ;; kernel version on the build machine.
+                          ,(let ((system "Linux")    ; uname -s
+                                 (release "2.6.32")  ; uname -r
+                                 ;; uname -m
+                                 (machine (match (or (%current-target-system)
+                                                     (%current-system))
+                                            ("x86_64-linux"   "x86_64")
+                                            ("i686-linux"     "i686")
+                                            ("mips64el-linux" "mips64"))))
+                             (string-append "--crossbuild="
+                                            system ":" release ":" machine)))))
+               (setenv "CC" "gcc")
+               (format #t "environment variable `CC' set to `gcc'~%")
+               (format #t "configure flags: ~s~%" flags)
+               (zero? (apply system* "./configure" flags)))))
+         (add-after install fix-root-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; 'make install' puts things in strange places, so we need to
+             ;; clean it up ourselves.
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share/nginx")))
+               ;; This directory is empty, so get rid of it.
+               (rmdir (string-append out "/logs"))
+               ;; Example configuration and HTML files belong in
+               ;; /share.
+               (mkdir-p share)
+               (rename-file (string-append out "/conf")
+                            (string-append share "/conf"))
+               (rename-file (string-append out "/html")
+                            (string-append share "/html"))))))))
     (home-page "http://nginx.org")
     (synopsis "HTTP and reverse proxy server")
     (description
@@ -648,6 +662,36 @@ (define-public perl-catalyst-devel
 modules.")
     (license (package-license perl))))
 
+(define-public perl-catalyst-dispatchtype-regex
+  (package
+    (name "perl-catalyst-dispatchtype-regex")
+    (version "5.90035")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
+                           "Catalyst-DispatchType-Regex-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build) ;needs Module::Build >= 0.4004
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-catalyst-runtime" ,perl-catalyst-runtime)))
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-text-simpletable" ,perl-text-simpletable)))
+    (home-page "http://search.cpan.org/dist/Catalyst-DispatchType-Regex")
+    (synopsis "Regex DispatchType for Catalyst")
+    (description "Dispatch type managing path-matching behaviour using
+regexes.  Regex dispatch types have been deprecated and removed from Catalyst
+core.  It is recommend that you use Chained methods or other techniques
+instead.  As part of the refactoring, the dispatch priority of Regex vs Regexp
+vs LocalRegex vs LocalRegexp may have changed.  Priority is now influenced by
+when the dispatch type is first seen in your application.")
+    (license (package-license perl))))
+
 (define-public perl-catalyst-model-dbic-schema
   (package
   (name "perl-catalyst-model-dbic-schema")
@@ -693,6 +737,32 @@ (define-public perl-catalyst-model-dbic-schema
 Models.")
   (license (package-license perl))))
 
+(define-public perl-catalyst-plugin-accesslog
+  (package
+    (name "perl-catalyst-plugin-accesslog")
+    (version "1.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
+                           "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hqvckaw91q5yc25a33bp0d4qqxlgkp7rxlvi8n8svxd1406r55s"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-datetime" ,perl-datetime)
+       ("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (arguments `(#:tests? #f))          ;Unexpected http responses
+    (home-page "http://search.cpan.org/dist/Catalyst-Plugin-AccessLog")
+    (synopsis "Request logging from within Catalyst")
+    (description "This Catalyst plugin enables you to create \"access logs\"
+from within a Catalyst application instead of requiring a webserver to do it
+for you.  It will work even with Catalyst debug logging turned off.")
+    (license (package-license perl))))
+
 (define-public perl-catalyst-plugin-authentication
   (package
     (name "perl-catalyst-plugin-authentication")
@@ -727,6 +797,30 @@ (define-public perl-catalyst-plugin-authentication
 system authorises them to do).")
     (license (package-license perl))))
 
+(define-public perl-catalyst-plugin-captcha
+  (package
+    (name "perl-catalyst-plugin-captcha")
+    (version "0.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
+                           "Catalyst-Plugin-Captcha-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
+       ("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-gd-securityimage" ,perl-gd-securityimage)
+       ("perl-http-date" ,perl-http-date)))
+    (home-page "http://search.cpan.org/dist/Catalyst-Plugin-Captcha")
+    (synopsis "Captchas for Catalyst")
+    (description "This plugin creates and validates Captcha images for
+Catalyst.")
+    (license (package-license perl))))
+
 (define-public perl-catalyst-plugin-configloader
   (package
     (name "perl-catalyst-plugin-configloader")
@@ -785,6 +879,90 @@ (define-public perl-catalyst-plugin-session
 management in web applications together: the state, and the store.")
     (license (package-license perl))))
 
+(define-public perl-catalyst-plugin-session-state-cookie
+  (package
+    (name "perl-catalyst-plugin-session-state-cookie")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
+                           "Catalyst-Plugin-Session-State-Cookie-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
+       ("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-moose" ,perl-moose)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page
+     "http://search.cpan.org/dist/Catalyst-Plugin-Session-State-Cookie")
+    (synopsis "Maintain session IDs using cookies")
+    (description "In order for Catalyst::Plugin::Session to work, the session
+ID needs to be stored on the client, and the session data needs to be stored
+on the server.  This plugin stores the session ID on the client using the
+cookie mechanism.")
+    (license (package-license perl))))
+
+(define-public perl-catalyst-plugin-session-store-fastmmap
+  (package
+    (name "perl-catalyst-plugin-session-store-fastmmap")
+    (version "0.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
+                           "Catalyst-Plugin-Session-Store-FastMmap-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cache-fastmmap" ,perl-cache-fastmmap)
+       ("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
+       ("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-moosex-emulate-class-accessor-fast"
+        ,perl-moosex-emulate-class-accessor-fast)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-path-class" ,perl-path-class)))
+    (home-page
+     "http://search.cpan.org/dist/Catalyst-Plugin-Session-Store-FastMmap")
+    (synopsis "FastMmap session storage backend.")
+    (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
+storage plugin for Catalyst that uses an mmap'ed file to act as a shared
+memory interprocess cache.  It is based on Cache::FastMmap.")
+    (license (package-license perl))))
+
+(define-public perl-catalyst-plugin-stacktrace
+  (package
+    (name "perl-catalyst-plugin-stacktrace")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
+                           "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Catalyst-Plugin-StackTrace")
+    (synopsis "Stack trace on the Catalyst debug screen")
+    (description "This plugin enhances the standard Catalyst debug screen by
+including a stack trace of your appliation up to the point where the error
+occurred.  Each stack frame is displayed along with the package name, line
+number, file name, and code context surrounding the line number.")
+    (license (package-license perl))))
+
 (define-public perl-catalyst-plugin-static-simple
   (package
     (name "perl-catalyst-plugin-static-simple")
@@ -879,6 +1057,88 @@ (define-public perl-catalyst-runtime
 \"plug in\" existing Perl modules that do what you need.")
     (license (package-license perl))))
 
+(define-public perl-catalyst-traitfor-request-proxybase
+  (package
+    (name "perl-catalyst-traitfor-request-proxybase")
+    (version "0.000005")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
+                           "Catalyst-TraitFor-Request-ProxyBase-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-catalystx-roleapplicator" ,perl-catalystx-roleapplicator)
+       ("perl-http-message" ,perl-http-message)))
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-uri" ,perl-uri)))
+    (home-page
+     "http://search.cpan.org/dist/Catalyst-TraitFor-Request-ProxyBase")
+    (synopsis "Replace request base with value passed by HTTP proxy")
+    (description "This module is a Moose::Role which allows you more
+flexibility in your application's deployment configurations when deployed
+behind a proxy.  Using this module, the request base ($c->req->base) is
+replaced with the contents of the X-Request-Base header.")
+    (license (package-license perl))))
+
+(define-public perl-catalyst-view-download
+  (package
+    (name "perl-catalyst-view-download")
+    (version "0.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
+                           "Catalyst-View-Download-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-test-simple" ,perl-test-simple)
+       ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)
+       ("perl-text-csv" ,perl-text-csv)
+       ("perl-xml-simple" ,perl-xml-simple)))
+    (home-page "http://search.cpan.org/dist/Catalyst-View-Download")
+    (synopsis "Download data in many formats")
+    (description "The purpose of this module is to provide a method for
+downloading data into many supportable formats.  For example, downloading a
+table based report in a variety of formats (CSV, HTML, etc.). ")
+    (license (package-license perl))))
+
+(define-public perl-catalyst-view-json
+  (package
+    (name "perl-catalyst-view-json")
+    (version "0.35")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
+                           "Catalyst-View-JSON-" version ".tar.gz"))
+       (sha256
+        (base32
+         "184pyghlrkl7p387bnyvswi2d9myvdg4v3lax6xrd59shskvpmkm"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-yaml" ,perl-yaml)))
+    (inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-json-maybexs" ,perl-json-maybexs)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Catalyst-View-JSON")
+    (synopsis "Catalyst JSON view")
+    (description "Catalyst::View::JSON is a Catalyst View handler that returns
+stash data in JSON format.")
+    (license (package-license perl))))
+
 (define-public perl-catalystx-component-traits
   (package
     (name "perl-catalystx-component-traits")
@@ -912,6 +1172,29 @@ (define-public perl-catalystx-component-traits
 MooseX::Traits::Pluggable.")
     (license (package-license perl))))
 
+(define-public perl-catalystx-roleapplicator
+  (package
+    (name "perl-catalystx-roleapplicator")
+    (version "0.005")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
+                           "CatalystX-RoleApplicator-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-moose" ,perl-moose)
+       ("perl-moosex-relatedclassroles" ,perl-moosex-relatedclassroles)))
+    (home-page "http://search.cpan.org/dist/CatalystX-RoleApplicator")
+    (synopsis "Apply roles to Catalyst classes")
+    (description "CatalystX::RoleApplicator applies roles to Catalyst
+application classes.")
+    (license (package-license perl))))
+
 (define-public perl-cgi-simple
   (package
     (name "perl-cgi-simple")
@@ -1725,6 +2008,41 @@ (define-public perl-test-www-mechanize
 WWW::Mechanize that incorporates features for web application testing.")
     (license l:artistic2.0)))
 
+(define-public perl-test-www-mechanize-catalyst
+  (package
+    (name "perl-test-www-mechanize-catalyst")
+    (version "0.60")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
+                           "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0nhhfrrai3ndziz873vpa1j0vljjnib4wqafd6yyvkf58ad7v0lv"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
+       ("perl-catalyst-plugin-session-state-cookie"
+        ,perl-catalyst-plugin-session-state-cookie)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-utf8" ,perl-test-utf8)))
+    (propagated-inputs
+     `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
+       ("perl-class-load" ,perl-class-load)
+       ("perl-libwww" ,perl-libwww)
+       ("perl-moose" ,perl-moose)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-test-www-mechanize" ,perl-test-www-mechanize)
+       ("perl-www-mechanize" ,perl-www-mechanize)))
+    (home-page "http://search.cpan.org/dist/Test-WWW-Mechanize-Catalyst")
+    (synopsis "Test::WWW::Mechanize for Catalyst")
+    (description "The Test::WWW::Mechanize::Catalyst module meshes the
+Test::WWW:Mechanize module and the Catalyst web application framework to allow
+testing of Catalyst applications without needing to start up a web server.")
+    (license (package-license perl))))
+
 (define-public perl-test-www-mechanize-psgi
   (package
     (name "perl-test-www-mechanize-psgi")
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index f182270aea9a4b1da4be1f6aab7601e6b1ada78d..dff76cacf50aee2f0a3aba8ad2489ce20a70b690 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -27,10 +27,12 @@ (define-module (gnu packages xiph)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages doxygen)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages openssl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -338,3 +340,63 @@ (define opus-tools
 decoding .opus files")
     (license license:bsd-3)
     (home-page "http://www.opus-codec.org")))
+
+(define-public icecast
+  (package
+    (name "icecast")
+    (version "2.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.xiph.org/releases/icecast/icecast-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0js5lylrgklhvvaksx46zc8lc975qb1bns8h1ms545nv071rxy23"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libxslt" ,libxslt)
+       ("libxml2" ,libxml2)
+       ("openssl" ,openssl)
+       ("curl" ,curl)
+       ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
+       ("libtheora" ,libtheora)
+       ("speex" ,speex)))
+    (synopsis "Streaming media server")
+    (description "Icecast is a streaming media server which currently supports
+Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams.  It can be used to
+create an Internet radio station or a privately running jukebox and many
+things in between.")
+    (home-page "http://icecast.org/")
+    (license license:gpl2)))
+
+(define-public libshout
+  (package
+    (name "libshout")
+    (version "2.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.xiph.org/releases/libshout/"
+                    name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0vlj4dxfxg06xhvv0z2zjjlrjh5di2m28w7v16zcygsy99mmyg6g"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     ;; shout.pc refers to all these.
+     `(("libtheora" ,libtheora)
+       ("libvorbis" ,libvorbis)
+       ("speex"     ,speex)))
+    (home-page "http://www.icecast.org/")
+    (synopsis "Audio streaming library for icecast encoders")
+    (description
+     "Libshout is a library for communicating with and sending data to an
+icecast server.  It handles the socket connection, the timing of the data,
+and prevents bad data from getting to the icecast server.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index cfb4cc16434e68178d95904b704f6decfbc8aeee..998f0803fcf04ecdb7886426f00320d280cf5fb1 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2932,7 +2932,8 @@ (define-public xf86-video-sis
         (sha256
           (base32
            "1l0w84x39gq4y9j81dny9r6rma1xkqvxpsavpkd8h7h8panbcbmy"))
-        (patches (list (search-patch "xf86-video-sis-update-api.patch")))))
+        (patches (list (search-patch "xf86-video-sis-update-api.patch")
+                       (search-patch "xf86-video-sis-fix-exa-crash.patch")))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
               ("xf86dgaproto" ,xf86dgaproto)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 24e6d323595f3a8add6a16f216ec982f35dccce4..cd1ba0b7b907dca456a9629b97cacd0add6026d1 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -526,8 +526,10 @@ (define* (nscd-service #:optional (config %nscd-default-configuration)
 
              (respawn? #f)))))
 
-(define (syslog-service)
-  "Return a service that runs @code{syslogd} with reasonable default settings."
+(define* (syslog-service #:key config-file)
+  "Return a service that runs @code{syslogd}.
+If configuration file name @var{config-file} is not specified, use some
+reasonable default settings."
 
   ;; Snippet adapted from the GNU inetutils manual.
   (define contents "
@@ -561,7 +563,7 @@ (define contents "
       (start
        #~(make-forkexec-constructor
           (list (string-append #$inetutils "/libexec/syslogd")
-                "--no-detach" "--rcfile" #$syslog.conf)))
+                "--no-detach" "--rcfile" #$(or config-file syslog.conf))))
       (stop #~(make-kill-destructor))))))
 
 (define* (guix-build-accounts count #:key
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 9537958df7a32d86104f4fdba916da60b696ea84..e2f85421e9df4dfca7a189675c16e05f4ba9bd18 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -86,7 +86,7 @@ (define* (lsh-service #:key
                       (tcp/ip-forwarding? #t)
                       (password-authentication? #t)
                       (public-key-authentication? #t)
-                      initialize?)
+                      (initialize? #t))
   "Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}.
 @var{host-key} must designate a file containing the host key, and readable
 only by root.
diff --git a/gnu/system.scm b/gnu/system.scm
index 0d510b623b1ef65557bf5c5c69d9530edfab6751..ece61adb2b8abad740caef766c32a0e768f88c3b 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -737,6 +737,7 @@ (define make-initrd
     (operating-system-initrd os))
 
   (mlet %store-monad ((initrd (make-initrd boot-file-systems
+                                           #:linux (operating-system-kernel os)
                                            #:mapped-devices mapped-devices)))
     (return #~(string-append #$initrd "/initrd"))))
 
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 9feb8f73e62550aa1b728cfd1cfc2775d8eacc7b..83685adcbc9e4c41cbc40130e2d2389f5e1ea1af 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -143,20 +143,22 @@ (define (file-system->spec fs)
 
 (define* (base-initrd file-systems
                       #:key
+                      (linux linux-libre)
                       (mapped-devices '())
                       qemu-networking?
-                      virtio?
+                      (virtio? #t)
                       volatile-root?
                       (extra-modules '()))
-  "Return a monadic derivation that builds a generic initrd.  FILE-SYSTEMS is
-a list of file-systems to be mounted by the initrd, possibly in addition to
-the root file system specified on the kernel command line via '--root'.
-MAPPED-DEVICES is a list of device mappings to realize before FILE-SYSTEMS are
-mounted.
+  "Return a monadic derivation that builds a generic initrd, with kernel
+modules taken from LINUX.  FILE-SYSTEMS is a list of file-systems to be
+mounted by the initrd, possibly in addition to the root file system specified
+on the kernel command line via '--root'.  MAPPED-DEVICES is a list of device
+mappings to realize before FILE-SYSTEMS are mounted.
 
 When QEMU-NETWORKING? is true, set up networking with the standard QEMU
 parameters.  When VIRTIO? is true, load additional modules so the initrd can
-be used as a QEMU guest with para-virtualized I/O drivers.
+be used as a QEMU guest with the root file system on a para-virtualized block
+device.
 
 When VOLATILE-ROOT? is true, the root file system is writable but any changes
 to it are lost.
@@ -224,7 +226,7 @@ (define device-mapping-commands
              (open source target)))
          mapped-devices))
 
-  (mlet %store-monad ((kodir (flat-linux-module-directory linux-libre
+  (mlet %store-monad ((kodir (flat-linux-module-directory linux
                                                           linux-modules)))
     (expression->initrd
      #~(begin
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index c93e26d65f37de703b1410c074b380542073c986..e194ed6cf1866119743fe7e51c2471488d0db07a 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -149,6 +149,7 @@ (define* (expression->derivation-in-linux-vm name exp
        (initrd       (if initrd                   ; use the default initrd?
                          (return initrd)
                          (base-initrd %linux-vm-file-systems
+                                      #:linux linux
                                       #:virtio? #t
                                       #:qemu-networking? #t))))
 
diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm
new file mode 100644
index 0000000000000000000000000000000000000000..79faa5a09e0a13fe8a17654cd03ce89c5d70df28
--- /dev/null
+++ b/guix/build-system/haskell.scm
@@ -0,0 +1,135 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build-system haskell)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix packages)
+  #:use-module (guix derivations)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-26)
+  #:export (haskell-build
+            haskell-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for Haskell packages using 'Setup.hs'.  This is
+;; implemented as an extension of 'gnu-build-system'.
+;;
+;; Code:
+
+(define (default-haskell)
+  "Return the default Haskell package."
+  ;; Lazily resolve the binding to avoid a circular dependency.
+  (let ((haskell (resolve-interface '(gnu packages haskell))))
+    (module-ref haskell 'ghc)))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs system target
+                (haskell (default-haskell))
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:target #:haskell #:inputs #:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilation
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("haskell" ,haskell)
+                         ,@native-inputs))
+         (outputs outputs)
+         (build haskell-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))))
+
+(define* (haskell-build store name inputs
+                        #:key source
+                        (haddock? #t)
+                        (haddock-flags ''())
+                        (tests? #t)
+                        (test-target "test")
+                        (configure-flags ''())
+                        (phases '(@ (guix build haskell-build-system)
+                                    %standard-phases))
+                        (outputs '("out"))
+                        (search-paths '())
+                        (system (%current-system))
+                        (guile #f)
+                        (imported-modules '((guix build haskell-build-system)
+                                            (guix build gnu-build-system)
+                                            (guix build utils)))
+                        (modules '((guix build haskell-build-system)
+                                   (guix build utils))))
+  "Build SOURCE using HASKELL, and with INPUTS.  This assumes that SOURCE
+provides a 'Setup.hs' file as its build system."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (haskell-build #:name ,name
+                      #:source ,(match (assoc-ref inputs "source")
+                                  (((? derivation? source))
+                                   (derivation->output-path source))
+                                  ((source)
+                                   source)
+                                  (source
+                                   source))
+                      #:configure-flags ,configure-flags
+                      #:haddock-flags ,haddock-flags
+                      #:system ,system
+                      #:test-target ,test-target
+                      #:tests? ,tests?
+                      #:haddock? ,haddock?
+                      #:phases ,phases
+                      #:outputs %outputs
+                      #:search-paths ',(map search-path-specification->sexp
+                                            search-paths)
+                      #:inputs %build-inputs)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:inputs inputs
+                                #:system system
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define haskell-build-system
+  (build-system
+    (name 'haskell)
+    (description "The standard Haskell build system")
+    (lower lower)))
+
+;;; haskell.scm ends here
diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm
index 9c0104365daf1232fb5f0c6d7f2bfb81678904b2..15d7de2236ad5e640e01c82bd5bcf47d9e0430cd 100644
--- a/guix/build/glib-or-gtk-build-system.scm
+++ b/guix/build/glib-or-gtk-build-system.scm
@@ -140,7 +140,9 @@ (define handle-output
      ((output . directory)
       (unless (member output glib-or-gtk-wrap-excluded-outputs)
         (let* ((bindir       (string-append directory "/bin"))
-               (bin-list     (find-files bindir ".*"))
+               (libexecdir   (string-append directory "/libexec"))
+               (bin-list     (append (find-files bindir ".*")
+                                     (find-files libexecdir ".*")))
                (datadirs     (data-directories
                               (alist-cons output directory inputs)))
                (gtk-mod-dirs (gtk-module-directories
diff --git a/guix/build/haskell-build-system.scm b/guix/build/haskell-build-system.scm
new file mode 100644
index 0000000000000000000000000000000000000000..52b9c79d2f1915ae3aea93b5802c93992305998e
--- /dev/null
+++ b/guix/build/haskell-build-system.scm
@@ -0,0 +1,220 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build haskell-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build utils)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 rdelim)
+  #:use-module (ice-9 regex)
+  #:use-module (ice-9 match)
+  #:export (%standard-phases
+            haskell-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard Haskell package build procedure.
+;;
+;; The Haskell compiler, to find libraries, relies on a library database with
+;; a binary cache. For GHC the cache has to be named 'package.cache'. If every
+;; library would generate the cache at build time, then they would clash in
+;; profiles. For this reason we do not generate the cache when we generate
+;; libraries substitutes. Instead:
+;;
+;; - At build time we use the 'setup-compiler' phase to generate a temporary
+;;   library database and its cache.
+;;
+;; - We generate the cache when a profile is created.
+;;
+;; Code:
+
+;; Directory where we create the temporary libraries database with its cache
+;; as required by the compiler.
+(define %tmp-db-dir
+  (string-append (or (getenv "TMP") "/tmp")
+                 "/package.conf.d"))
+
+(define (run-setuphs command params)
+  (let ((setup-file (cond
+                     ((file-exists? "Setup.hs")
+                      "Setup.hs")
+                     ((file-exists? "Setup.lhs")
+                      "Setup.lhs")
+                     (else
+                      #f))))
+    (if setup-file
+        (begin
+          (format #t "running \"runhaskell Setup.hs\" with command ~s \
+and parameters ~s~%"
+                  command params)
+          (zero? (apply system* "runhaskell" setup-file command params)))
+        (error "no Setup.hs nor Setup.lhs found"))))
+
+(define* (configure #:key outputs inputs tests? (configure-flags '())
+                    #:allow-other-keys)
+  "Configure a given Haskell package."
+  (let* ((out (assoc-ref outputs "out"))
+         (input-dirs (match inputs
+                       (((_ . dir) ...)
+                        dir)
+                       (_ '())))
+         (params (append `(,(string-append "--prefix=" out))
+                         `(,(string-append
+                             "--docdir=" out "/share/doc/"
+                             (package-name-version out)))
+                         `(,(string-append "--package-db=" %tmp-db-dir))
+                         '("--global")
+                         `(,(string-append
+                             "--extra-include-dirs="
+                             (list->search-path-as-string
+                              (search-path-as-list '("include") input-dirs)
+                              ":")))
+                         `(,(string-append
+                             "--extra-lib-dirs="
+                             (list->search-path-as-string
+                              (search-path-as-list '("lib") input-dirs)
+                              ":")))
+                         (if tests?
+                             '("--enable-tests")
+                             '())
+                         configure-flags)))
+    (run-setuphs "configure" params)))
+
+(define* (build #:rest empty)
+  "Build a given Haskell package."
+  (run-setuphs "build" '()))
+
+(define* (install #:rest empty)
+  "Install a given Haskell package."
+  (run-setuphs "copy" '()))
+
+(define (package-name-version store-dir)
+  "Given a store directory STORE-DIR return 'name-version' of the package."
+  (let* ((base (basename store-dir)))
+    (string-drop base
+                 (+ 1 (string-index base #\-)))))
+
+(define (grep rx port)
+  "Given a regular-expression RX including a group, read from PORT until the
+first match and return the content of the group."
+  (let ((line (read-line port)))
+    (if (eof-object? line)
+        #f
+        (let ((rx-result (regexp-exec rx line)))
+          (if rx-result
+              (match:substring rx-result 1)
+              (grep rx port))))))
+
+(define* (setup-compiler #:key system inputs outputs #:allow-other-keys)
+  "Setup the compiler environment."
+  (let* ((haskell (assoc-ref inputs "haskell"))
+         (name-version (package-name-version haskell)))
+    (cond
+     ((string-match "ghc" name-version)
+      (make-ghc-package-database system inputs outputs))
+     (else
+      (format #t
+              "Compiler ~a not supported~%" name-version)))))
+
+(define (make-ghc-package-database system inputs outputs)
+  "Generate the GHC package database."
+  (let* ((haskell  (assoc-ref inputs "haskell"))
+         (input-dirs (match inputs
+                       (((_ . dir) ...)
+                        dir)
+                       (_ '())))
+         (conf-dirs (search-path-as-list
+                     `(,(string-append "lib/" system "-"
+                                       (package-name-version haskell)
+                                       "/package.conf.d"))
+                     input-dirs))
+         (conf-files (append-map (cut find-files <> "\\.conf$") conf-dirs)))
+    (mkdir-p %tmp-db-dir)
+    (for-each (lambda (file)
+                (copy-file file
+                           (string-append %tmp-db-dir "/" (basename file))))
+              conf-files)
+    (zero? (system* "ghc-pkg"
+                    (string-append "--package-db=" %tmp-db-dir)
+                    "recache"))))
+
+(define* (register #:key name system inputs outputs #:allow-other-keys)
+  "Generate the compiler registration file for a given Haskell package.  Don't
+generate the cache as it would clash in user profiles."
+  (let* ((out (assoc-ref outputs "out"))
+         (haskell  (assoc-ref inputs "haskell"))
+         (lib (string-append out "/lib"))
+         (config-dir (string-append lib "/" system
+                                    "-" (package-name-version haskell)
+                                    "/package.conf.d"))
+         (id-rx (make-regexp "^id: *(.*)$"))
+         (lib-rx (make-regexp "lib.*\\.(a|so)"))
+         (config-file (string-append config-dir "/" name ".conf"))
+         (params
+          (list (string-append "--gen-pkg-config=" config-file))))
+    (unless (null? (find-files lib lib-rx))
+      (mkdir-p config-dir)
+      (run-setuphs "register" params)
+      (let ((config-file-name+id
+             (call-with-ascii-input-file config-file (cut grep id-rx <>))))
+        (rename-file config-file
+                     (string-append config-dir "/" config-file-name+id
+                                    ".conf"))))
+    #t))
+
+(define* (check #:key tests? test-target #:allow-other-keys)
+  "Run the test suite of a given Haskell package."
+  (if tests?
+      (run-setuphs test-target '())
+      (begin
+        (format #t "test suite not run~%")
+        #t)))
+
+(define* (haddock #:key outputs haddock? haddock-flags #:allow-other-keys)
+  "Run the test suite of a given Haskell package."
+  (if haddock?
+      (let* ((out (assoc-ref outputs "out"))
+             (doc-src (string-append (getcwd) "/dist/doc"))
+             (doc-dest (string-append out "/share/doc/"
+                                      (package-name-version out))))
+        (if (run-setuphs "haddock" haddock-flags)
+            (begin
+              (copy-recursively doc-src doc-dest)
+              #t)
+            #f))
+      #t))
+
+(define %standard-phases
+  (modify-phases gnu:%standard-phases
+    (add-before configure setup-compiler setup-compiler)
+    (add-after install haddock haddock)
+    (add-after install register register)
+    (replace install install)
+    (replace check check)
+    (replace build build)
+    (replace configure configure)))
+
+(define* (haskell-build #:key inputs (phases %standard-phases)
+                        #:allow-other-keys #:rest args)
+  "Build the given Haskell package, applying all of PHASES in order."
+  (apply gnu:gnu-build
+         #:inputs inputs #:phases phases
+         args))
+
+;;; haskell-build-system.scm ends here
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 3cc7ae760f59e06ff8fef9ac2ca6e29d87b0765d..6190f3286d9bf83b769964a98e81e4987321966e 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -232,6 +232,41 @@ (define generation-ctime-alist
          filter-by-duration)
         (else #f)))
 
+(define (delete-matching-generations store profile pattern)
+  "Delete from PROFILE all the generations matching PATTERN.  PATTERN must be
+a string denoting a set of generations: the empty list means \"all generations
+but the current one\", a number designates a generation, and other patterns
+denote ranges as interpreted by 'matching-derivations'."
+  (let ((current (generation-number profile)))
+    (cond ((not (file-exists? profile))            ; XXX: race condition
+           (raise (condition (&profile-not-found-error
+                              (profile profile)))))
+          ((string-null? pattern)
+           (delete-generations (%store) profile
+                               (delv current (profile-generations profile))))
+          ;; Do not delete the zeroth generation.
+          ((equal? 0 (string->number pattern))
+           #t)
+
+          ;; If PATTERN is a duration, match generations that are
+          ;; older than the specified duration.
+          ((matching-generations pattern profile
+                                 #:duration-relation >)
+           =>
+           (lambda (numbers)
+             (when (memv current numbers)
+               (warning (_ "not removing generation ~a, which is current~%")
+                        current))
+
+             ;; Make sure we don't inadvertently remove the current
+             ;; generation.
+             (let ((numbers (delv current numbers)))
+               (when (null-list? numbers)
+                 (leave (_ "no matching generation~%")))
+               (delete-generations (%store) profile numbers))))
+          (else
+           (leave (_ "invalid syntax: ~a~%") pattern)))))
+
 
 ;;;
 ;;; Package specifications.
@@ -751,9 +786,6 @@ (define (process-actions opts)
     (define dry-run? (assoc-ref opts 'dry-run?))
     (define profile  (assoc-ref opts 'profile))
 
-    (define current-generation-number
-      (generation-number profile))
-
     ;; First roll back if asked to.
     (cond ((and (assoc-ref opts 'roll-back?)
                 (not dry-run?))
@@ -782,30 +814,7 @@ (define current-generation-number
            (for-each
             (match-lambda
              (('delete-generations . pattern)
-              (cond ((not (file-exists? profile)) ; XXX: race condition
-                     (raise (condition (&profile-not-found-error
-                                        (profile profile)))))
-                    ((string-null? pattern)
-                     (delete-generations
-                      (%store) profile
-                      (delete current-generation-number
-                              (profile-generations profile))))
-                    ;; Do not delete the zeroth generation.
-                    ((equal? 0 (string->number pattern))
-                     (exit 0))
-
-                    ;; If PATTERN is a duration, match generations that are
-                    ;; older than the specified duration.
-                    ((matching-generations pattern profile
-                                           #:duration-relation >)
-                     =>
-                     (lambda (numbers)
-                       (if (null-list? numbers)
-                           (exit 1)
-                           (delete-generations (%store) profile numbers))))
-                    (else
-                     (leave (_ "invalid syntax: ~a~%")
-                            pattern)))
+              (delete-matching-generations (%store) profile pattern)
 
               (process-actions
                (alist-delete 'delete-generations opts)))
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
new file mode 100644
index 0000000000000000000000000000000000000000..c7c66fefbeac44260476356330047769f962b5f3
--- /dev/null
+++ b/guix/scripts/publish.scm
@@ -0,0 +1,243 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix scripts publish)
+  #:use-module ((system repl server) #:prefix repl:)
+  #:use-module (ice-9 binary-ports)
+  #:use-module (ice-9 format)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 regex)
+  #:use-module (rnrs io ports)
+  #:use-module (rnrs bytevectors)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-2)
+  #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-37)
+  #:use-module (web http)
+  #:use-module (web request)
+  #:use-module (web response)
+  #:use-module (web server)
+  #:use-module (web uri)
+  #:use-module (guix base32)
+  #:use-module (guix base64)
+  #:use-module (guix config)
+  #:use-module (guix derivations)
+  #:use-module (guix hash)
+  #:use-module (guix pki)
+  #:use-module (guix pk-crypto)
+  #:use-module (guix store)
+  #:use-module (guix serialization)
+  #:use-module (guix ui)
+  #:export (guix-publish))
+
+(define (show-help)
+  (format #t (_ "Usage: guix publish [OPTION]...
+Publish ~a over HTTP.\n") %store-directory)
+  (display (_ "
+  -p, --port=PORT        listen on PORT"))
+  (display (_ "
+  -r, --repl[=PORT]      spawn REPL server on PORT"))
+  (newline)
+  (display (_ "
+  -h, --help             display this help and exit"))
+  (display (_ "
+  -V, --version          display version information and exit"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  (list (option '(#\h "help") #f #f
+                (lambda _
+                  (show-help)
+                  (exit 0)))
+        (option '(#\V "version") #f #f
+                (lambda _
+                  (show-version-and-exit "guix publish")))
+        (option '(#\p "port") #t #f
+                (lambda (opt name arg result)
+                  (alist-cons 'port (string->number* arg) result)))
+        (option '(#\r "repl") #f #t
+                (lambda (opt name arg result)
+                  ;; If port unspecified, use default Guile REPL port.
+                  (let ((port (and arg (string->number* arg))))
+                    (alist-cons 'repl (or port 37146) result))))))
+
+(define %default-options
+  '((port . 8080)
+    (repl . #f)))
+
+(define (lazy-read-file-sexp file)
+  "Return a promise to read the canonical sexp from FILE."
+  (delay
+    (call-with-input-file file
+      (compose string->canonical-sexp
+               get-string-all))))
+
+(define %private-key
+  (lazy-read-file-sexp %private-key-file))
+
+(define %public-key
+  (lazy-read-file-sexp %public-key-file))
+
+(define %nix-cache-info
+  `(("StoreDir" . ,%store-directory)
+    ("WantMassQuery" . 0)
+    ("Priority" . 100)))
+
+(define (load-derivation file)
+  "Read the derivation from FILE."
+  (call-with-input-file file read-derivation))
+
+(define (signed-string s)
+  "Sign the hash of the string S with the daemon's key."
+  (let* ((public-key (force %public-key))
+         (hash (bytevector->hash-data (sha256 (string->utf8 s))
+                                      #:key-type (key-type public-key))))
+    (signature-sexp hash (force %private-key) public-key)))
+
+(define base64-encode-string
+  (compose base64-encode string->utf8))
+
+(define (narinfo-string store-path path-info key)
+  "Generate a narinfo key/value string for STORE-PATH using the details in
+PATH-INFO.  The narinfo is signed with KEY."
+  (let* ((url        (string-append "nar/" (basename store-path)))
+         (hash       (bytevector->base32-string
+                      (path-info-hash path-info)))
+         (size       (path-info-nar-size path-info))
+         (references (string-join
+                      (map basename (path-info-references path-info))
+                      " "))
+         (deriver (path-info-deriver path-info))
+         (base-info  (format #f
+                             "StorePath: ~a
+URL: ~a
+Compression: none
+NarHash: sha256:~a
+NarSize: ~d
+References: ~a~%"
+                             store-path url hash size references))
+         ;; Do not render a "Deriver" or "System" line if we are rendering
+         ;; info for a derivation.
+         (info (if (string-null? deriver)
+                   base-info
+                   (let ((drv (load-derivation deriver)))
+                     (format #f "~aSystem: ~a~%Deriver: ~a~%"
+                             base-info (derivation-system drv)
+                             (basename deriver)))))
+         (signature  (base64-encode-string
+                      (canonical-sexp->string (signed-string info)))))
+    (format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature)))
+
+(define (not-found request)
+  "Render 404 response for REQUEST."
+  (values (build-response #:code 404)
+          (string-append "Resource not found: "
+                         (uri-path (request-uri request)))))
+
+(define (render-nix-cache-info)
+  "Render server information."
+  (values '((content-type . (text/plain)))
+          (lambda (port)
+            (for-each (match-lambda
+                       ((key . value)
+                        (format port "~a: ~a~%" key value)))
+                      %nix-cache-info))))
+
+(define (render-narinfo store request hash)
+  "Render metadata for the store path corresponding to HASH."
+  (let* ((store-path (hash-part->path store hash))
+         (path-info (and (not (string-null? store-path))
+                         (query-path-info store store-path))))
+    (if path-info
+        (values '((content-type . (application/x-nix-narinfo)))
+                (cut display
+                     (narinfo-string store-path path-info (force %private-key))
+                     <>))
+        (not-found request))))
+
+(define (render-nar request store-item)
+  "Render archive of the store path corresponding to STORE-ITEM."
+  (let ((store-path (string-append %store-directory "/" store-item)))
+    ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will
+    ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte
+    ;; sequences.
+    (if (file-exists? store-path)
+        (values '((content-type . (application/x-nix-archive
+                                   (charset . "ISO-8859-1"))))
+                (lambda (port)
+                  (write-file store-path port)))
+        (not-found request))))
+
+(define extract-narinfo-hash
+  (let ((regexp (make-regexp "^([a-df-np-sv-z0-9]{32}).narinfo$")))
+    (lambda (str)
+      "Return the hash within the narinfo resource string STR, or false if STR
+is invalid."
+      (and=> (regexp-exec regexp str)
+             (cut match:substring <> 1)))))
+
+(define (get-request? request)
+  "Return #t if REQUEST uses the GET method."
+  (eq? (request-method request) 'GET))
+
+(define (request-path-components request)
+  "Split the URI path of REQUEST into a list of component strings.  For
+example: \"/foo/bar\" yields '(\"foo\" \"bar\")."
+  (split-and-decode-uri-path (uri-path (request-uri request))))
+
+(define (make-request-handler store)
+  (lambda (request body)
+    (format #t "~a ~a~%"
+            (request-method request)
+            (uri-path (request-uri request)))
+    (if (get-request? request) ; reject POST, PUT, etc.
+        (match (request-path-components request)
+          ;; /nix-cache-info
+          (("nix-cache-info")
+           (render-nix-cache-info))
+          ;; /<hash>.narinfo
+          (((= extract-narinfo-hash (? string? hash)))
+           (render-narinfo store request hash))
+          ;; /nar/<store-item>
+          (("nar" store-item)
+           (render-nar request store-item))
+          (_ (not-found request)))
+        (not-found request))))
+
+(define (run-publish-server port store)
+  (run-server (make-request-handler store)
+              'http
+              `(#:addr ,INADDR_ANY
+                #:port ,port)))
+
+(define (guix-publish . args)
+  (with-error-handling
+    (let* ((opts (args-fold* args %options
+                             (lambda (opt name arg result)
+                               (leave (_ "~A: unrecognized option~%") name))
+                             (lambda (arg result)
+                               (leave (_ "~A: extraneuous argument~%") arg))
+                             %default-options))
+           (port (assoc-ref opts 'port))
+           (repl-port (assoc-ref opts 'repl)))
+      (format #t (_ "publishing ~a on port ~d~%") %store-directory port)
+      (when repl-port
+        (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port)))
+      (with-store store
+        (run-publish-server (assoc-ref opts 'port) store)))))
diff --git a/guix/store.scm b/guix/store.scm
index 3d6b06989c950718649a69cc975569600303083e..10b9062db206d21c7fe72777fcff6eaa30829174 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -60,6 +60,7 @@ (define-module (guix store)
             valid-path?
             query-path-hash
             hash-part->path
+            query-path-info
             add-text-to-store
             add-to-store
             build-things
@@ -79,6 +80,13 @@ (define-module (guix store)
             substitutable-paths
             substitutable-path-info
 
+            path-info?
+            path-info-deriver
+            path-info-hash
+            path-info-references
+            path-info-registration-time
+            path-info-nar-size
+
             references
             requisites
             referrers
@@ -212,6 +220,24 @@ (define (read-substitutable-path-list p)
                 (cons (substitutable path deriver refs dl-size nar-size)
                       result))))))
 
+;; Information about a store path.
+(define-record-type <path-info>
+  (path-info deriver hash references registration-time nar-size)
+  path-info?
+  (deriver path-info-deriver)
+  (hash path-info-hash)
+  (references path-info-references)
+  (registration-time path-info-registration-time)
+  (nar-size path-info-nar-size))
+
+(define (read-path-info p)
+  (let ((deriver  (read-store-path p))
+        (hash     (base16-string->bytevector (read-string p)))
+        (refs     (read-store-path-list p))
+        (registration-time (read-int p))
+        (nar-size (read-long-long p)))
+    (path-info deriver hash refs registration-time nar-size)))
+
 (define-syntax write-arg
   (syntax-rules (integer boolean file string string-list string-pairs
                  store-path store-path-list base16)
@@ -236,7 +262,7 @@ (define-syntax write-arg
 
 (define-syntax read-arg
   (syntax-rules (integer boolean string store-path store-path-list
-                 substitutable-path-list base16)
+                 substitutable-path-list path-info base16)
     ((_ integer p)
      (read-int p))
     ((_ boolean p)
@@ -249,6 +275,8 @@ (define-syntax read-arg
      (read-store-path-list p))
     ((_ substitutable-path-list p)
      (read-substitutable-path-list p))
+    ((_ path-info p)
+     (read-path-info p))
     ((_ base16 p)
      (base16-string->bytevector (read-string p)))))
 
@@ -541,6 +569,10 @@ (define hash-part->path
      ;; /HASH.narinfo.
      (query-path-from-hash-part server hash-part))))
 
+(define-operation (query-path-info (store-path path))
+  "Return the info (hash, references, etc.) for PATH."
+  path-info)
+
 (define add-text-to-store
   ;; A memoizing version of `add-to-store', to avoid repeated RPCs with
   ;; the very same arguments during a given session.
diff --git a/guix/ui.scm b/guix/ui.scm
index 9e75a35d161e533d32da153289b3036dd617df0a..5ca5afe4573d1bc61d011c9585faa248fe7739c9 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -902,6 +902,8 @@ (define (option? str) (string-prefix? "-" str))
        (format (current-error-port)
                (_ "guix: unrecognized option '~a'~%") o)
        (show-guix-usage))
+      (("help" args ...)
+       (show-guix-help))
       ((command args ...)
        (apply run-guix-command
               (string->symbol command)
diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS
index 8052ce9d3e13b3ea646c471ecc981a1fe85b5ccf..b271fd3ad5442782a0390812ca19501a687069a4 100644
--- a/po/guix/LINGUAS
+++ b/po/guix/LINGUAS
@@ -1,6 +1,7 @@
 # Set of available languages.
 
 cs
+da
 de
 en@boldquot
 en@quot
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 39115f970b1f4f2f3ffe953b66b61421ca786d19..5ac9201295c70c0df7fb26c5740da775ed8ad309 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -13,6 +13,7 @@ guix/scripts/substitute.scm
 guix/scripts/authenticate.scm
 guix/scripts/system.scm
 guix/scripts/lint.scm
+guix/scripts/publish.scm
 guix/gnu-maintenance.scm
 guix/ui.scm
 guix/http-client.scm
diff --git a/po/guix/da.po b/po/guix/da.po
new file mode 100644
index 0000000000000000000000000000000000000000..3e0c84caf122cfb32a5e82b0ab947914bccc84a7
--- /dev/null
+++ b/po/guix/da.po
@@ -0,0 +1,1516 @@
+# Danish translation guix.
+# Copyright (C) 2015 Free Software Foundation, Inc.
+# This file is distributed under the same license as the guix package.
+# Joe Hansen <joedalton2@yahoo.dk>, 2015.
+#
+# garbage -> affald (spild, bedre forslag?)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: guix 0.8.1\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2015-01-26 23:51+0100\n"
+"PO-Revision-Date: 2015-04-06 19:30+01:00\n"
+"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: gnu/packages.scm:78
+#, scheme-format
+msgid "~a: patch not found"
+msgstr "~a: rettelse blev ikke fundet"
+
+#: gnu/packages.scm:89
+#, scheme-format
+msgid "could not find bootstrap binary '~a' for system '~a'"
+msgstr "kunne ikke finde bootstraps binære »~a« for system »~a«"
+
+#: gnu/packages.scm:141
+#, scheme-format
+msgid "cannot access `~a': ~a~%"
+msgstr "kan ikke tilgå »~a«: ~a~%"
+
+#: gnu/packages.scm:372
+#, scheme-format
+msgid "looking for the latest release of GNU ~a..."
+msgstr "kigger efter den seneste udgivelse af GNU ~a..."
+
+#: gnu/packages.scm:379
+#, scheme-format
+msgid "~a: note: using ~a but ~a is available upstream~%"
+msgstr "~a: bemærk: bruger ~a men ~a er tilgængelig opstrøm~%"
+
+#: gnu/packages.scm:401 guix/scripts/package.scm:306
+#, scheme-format
+msgid "ambiguous package specification `~a'~%"
+msgstr "tvetydig pakkespecifikation »~a«~%"
+
+#: gnu/packages.scm:402 guix/scripts/package.scm:308
+#, scheme-format
+msgid "choosing ~a from ~a~%"
+msgstr "vælger ~a fra ~a~%"
+
+#: gnu/packages.scm:408
+#, scheme-format
+msgid "~A: package not found for version ~a~%"
+msgstr "~A: pakke ikke fundet for version ~a~%"
+
+#: gnu/packages.scm:410
+#, scheme-format
+msgid "~A: unknown package~%"
+msgstr "~A: ukendt pakke~%"
+
+#: gnu/system.scm:716
+msgid "system locale lacks a definition"
+msgstr "systemsprog mangler en definition"
+
+#: guix/scripts/build.scm:65
+#, scheme-format
+msgid "failed to create GC root `~a': ~a~%"
+msgstr "kunne ikke oprette GC-root »~a«: ~a~%"
+
+#: guix/scripts/build.scm:102
+msgid ""
+"\n"
+"  -L, --load-path=DIR    prepend DIR to the package module search path"
+msgstr ""
+"\n"
+"  -L, --load-path=MAPPE  foranstil MAPPE til pakkemodulets søgesti"
+
+#: guix/scripts/build.scm:104
+msgid ""
+"\n"
+"  -K, --keep-failed      keep build tree of failed builds"
+msgstr ""
+"\n"
+"  -K, --keep-failed      bevar byggetræ for mislykkede bygninger"
+
+#: guix/scripts/build.scm:106
+msgid ""
+"\n"
+"  -n, --dry-run          do not build the derivations"
+msgstr ""
+"\n"
+"  -n, --dry-run          byg ikke derivationerne"
+
+#: guix/scripts/build.scm:108
+msgid ""
+"\n"
+"      --fallback         fall back to building when the substituter fails"
+msgstr ""
+"\n"
+"      --fallback         fald tilbage til bygning når erstatningen fejler"
+
+#: guix/scripts/build.scm:110
+msgid ""
+"\n"
+"      --no-substitutes   build instead of resorting to pre-built substitutes"
+msgstr ""
+"\n"
+"      --no-substitutes   byg i stedet for en ny sortering af præbyggede substitutter"
+
+#: guix/scripts/build.scm:112
+msgid ""
+"\n"
+"      --no-build-hook    do not attempt to offload builds via the build hook"
+msgstr ""
+"\n"
+"      --no-build-hook    forsøg ikke at aflaste bygninger via byggekrogen"
+
+#: guix/scripts/build.scm:114
+msgid ""
+"\n"
+"      --max-silent-time=SECONDS\n"
+"                         mark the build as failed after SECONDS of silence"
+msgstr ""
+"\n"
+"      --max-silent-time=SEKUNDER\n"
+"                         marker bygningen som mislykket efter SEKUNDER af stilhed"
+
+#: guix/scripts/build.scm:117
+msgid ""
+"\n"
+"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
+msgstr ""
+"\n"
+"      --timeout=SEKUNDER marker bygningen som mislykket efter SEKUNDER af aktivitet"
+
+#: guix/scripts/build.scm:119
+msgid ""
+"\n"
+"      --verbosity=LEVEL  use the given verbosity LEVEL"
+msgstr ""
+"\n"
+"      --verbosity=NIVEAU brug det angivne uddybnings-NIVEAU"
+
+#: guix/scripts/build.scm:121
+msgid ""
+"\n"
+"  -c, --cores=N          allow the use of up to N CPU cores for the build"
+msgstr ""
+"\n"
+"  -c, --cores=N          tillad brugen af op til N CPU-kerner til bygningen"
+
+#: guix/scripts/build.scm:123
+msgid ""
+"\n"
+"  -M, --max-jobs=N       allow at most N build jobs"
+msgstr ""
+"\n"
+"  -M, --max-jobs=N       tillad højest N-byggejob"
+
+#: guix/scripts/build.scm:198 guix/scripts/build.scm:205
+#, scheme-format
+msgid "not a number: '~a' option argument: ~a~%"
+msgstr "ikke et nummer: »~a« tilvalgsparameter: ~a~%"
+
+#: guix/scripts/build.scm:224
+msgid ""
+"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
+"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
+msgstr ""
+"Brug: guix build [TILVALG]... PAKKE-ELLER-AFLEDNING...\n"
+"Byg den angivne PAKKE-ELLER-AFLEDNING og returner deres uddatastier.\n"
+
+#: guix/scripts/build.scm:226
+msgid ""
+"\n"
+"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
+msgstr ""
+"\n"
+"  -e, --expression=UDTRYK\n"
+"                         byg pakken eller derivationen UDTRYK evaluerer til"
+
+#: guix/scripts/build.scm:228
+msgid ""
+"\n"
+"  -S, --source           build the packages' source derivations"
+msgstr ""
+"\n"
+"  -S, --source           byg pakkernes kildederivationer"
+
+#: guix/scripts/build.scm:230
+msgid ""
+"\n"
+"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+"\n"
+"  -s, --system=SYSTEM    forsøger at bygge for SYSTEM--f.eks., »i686-linux«"
+
+#: guix/scripts/build.scm:232
+msgid ""
+"\n"
+"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
+msgstr ""
+"\n"
+"      --target=TRIPLET   krydsbyg for TRIPLET--f.eks., »armel-linux-gnu«"
+
+#: guix/scripts/build.scm:234
+msgid ""
+"\n"
+"      --with-source=SOURCE\n"
+"                         use SOURCE when building the corresponding package"
+msgstr ""
+"\n"
+"      --with-source=KILDE\n"
+"                         brug KILDE når den tilsvarende pakke bygges"
+
+#: guix/scripts/build.scm:237
+msgid ""
+"\n"
+"      --no-grafts        do not graft packages"
+msgstr ""
+"\n"
+"      --no-grafts        pod ikke pakker"
+
+#: guix/scripts/build.scm:239
+msgid ""
+"\n"
+"  -d, --derivations      return the derivation paths of the given packages"
+msgstr ""
+"\n"
+"  -d, --derivations      returner de afledte stier for de givne pakker"
+
+#: guix/scripts/build.scm:241
+msgid ""
+"\n"
+"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
+"                         as a garbage collector root"
+msgstr ""
+"\n"
+"  -r, --root=FIL         gør FIL til en symbolsk henvisning for resultatet, og\n"
+"                         registrer den som en affaldsindsamlerroot"
+
+#: guix/scripts/build.scm:244
+msgid ""
+"\n"
+"      --log-file         return the log file names for the given derivations"
+msgstr ""
+"\n"
+"      --log-file         returner logfilnavnen for de givne afledninger"
+
+#: guix/scripts/build.scm:249 guix/scripts/download.scm:53
+#: guix/scripts/package.scm:467 guix/scripts/gc.scm:58
+#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:414
+#: guix/scripts/lint.scm:469
+msgid ""
+"\n"
+"  -h, --help             display this help and exit"
+msgstr ""
+"\n"
+"  -h, --help             vis denne hjælpetekst og afslut"
+
+#: guix/scripts/build.scm:251 guix/scripts/download.scm:55
+#: guix/scripts/package.scm:469 guix/scripts/gc.scm:60
+#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83
+#: guix/scripts/substitute-binary.scm:568 guix/scripts/system.scm:416
+#: guix/scripts/lint.scm:473
+msgid ""
+"\n"
+"  -V, --version          display version information and exit"
+msgstr ""
+"\n"
+"  -V, --version          vis versioninformation og afslut"
+
+#: guix/scripts/build.scm:383
+#, scheme-format
+msgid "sources do not match any package:~{ ~a~}~%"
+msgstr "kilder matcher ikke nogen pakke:~{ ~a~}~%"
+
+#: guix/scripts/build.scm:417 guix/scripts/download.scm:96
+#: guix/scripts/package.scm:694 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:213 guix/scripts/system.scm:499
+#: guix/scripts/lint.scm:521
+#, scheme-format
+msgid "~A: unrecognized option~%"
+msgstr "~A: ikke genkendt tilvalg~%"
+
+#: guix/scripts/build.scm:445
+#, scheme-format
+msgid "no build log for '~a'~%"
+msgstr "ingen byggelog for »~a«~%"
+
+#: guix/scripts/download.scm:44
+msgid ""
+"Usage: guix download [OPTION] URL\n"
+"Download the file at URL, add it to the store, and print its store path\n"
+"and the hash of its contents.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n"
+"('hex' and 'hexadecimal' can be used as well).\n"
+msgstr ""
+"Brug: guix download [TILVALG] ADRESSE\n"
+"hent filen på ADRESSE, tilføj den til lageret, og udskriv dens lagersti\n"
+"og hashen for dens indhold.\n"
+"\n"
+"Understøttede formater: »nix-base32« (standard), »base32«, og »base16«\n"
+"(»hex« og »hexadecimal« kan også bruges).\n"
+
+#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50
+msgid ""
+"\n"
+"  -f, --format=FMT       write the hash in the given format"
+msgstr ""
+"\n"
+"  -f, --format=FMT       skriv hashen i det givne format"
+
+#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75
+#, scheme-format
+msgid "unsupported hash format: ~a~%"
+msgstr "ikke understøttet hash-format: ~a~%"
+
+#: guix/scripts/download.scm:106
+#, scheme-format
+msgid "~a: failed to parse URI~%"
+msgstr "~a: kunne ikke fortolke URI~%"
+
+#: guix/scripts/download.scm:117
+#, scheme-format
+msgid "~a: download failed~%"
+msgstr "~a: overførsel mislykkede~%"
+
+#: guix/scripts/package.scm:98
+#, scheme-format
+msgid "failed to build the empty profile~%"
+msgstr "kunne ikke bygge den tomme profil~%"
+
+#: guix/scripts/package.scm:114
+#, scheme-format
+msgid "switching from generation ~a to ~a~%"
+msgstr "skifter fra generation ~a til ~a~%"
+
+#: guix/scripts/package.scm:133
+#, scheme-format
+msgid "nothing to do: already at the empty profile~%"
+msgstr "intet at udføre: allerede en tom profil~%"
+
+#: guix/scripts/package.scm:145
+#, scheme-format
+msgid "deleting ~a~%"
+msgstr "sletter ~a~%"
+
+#: guix/scripts/package.scm:296
+#, scheme-format
+msgid "package `~a' lacks output `~a'~%"
+msgstr "pakke »~a« mangler uddata »~a«~%"
+
+#: guix/scripts/package.scm:313
+#, scheme-format
+msgid "~a: package not found~%"
+msgstr "~a: pakken blev ikke fundet~%"
+
+#: guix/scripts/package.scm:406
+#, scheme-format
+msgid "The following environment variable definitions may be needed:~%"
+msgstr "De følgende miljøvariabeldefinitioner kan være krævet:~%"
+
+#: guix/scripts/package.scm:422
+msgid ""
+"Usage: guix package [OPTION]... PACKAGES...\n"
+"Install, remove, or upgrade PACKAGES in a single transaction.\n"
+msgstr ""
+"Brug: guix-pakke [TILVALG]... PAKKER...\n"
+"Installer, fjern eller opgrader PAKKER i en enkel transaktion.\n"
+
+#: guix/scripts/package.scm:424
+msgid ""
+"\n"
+"  -i, --install=PACKAGE  install PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=PAKKE    installer PAKKE"
+
+#: guix/scripts/package.scm:426
+msgid ""
+"\n"
+"  -e, --install-from-expression=EXP\n"
+"                         install the package EXP evaluates to"
+msgstr ""
+"\n"
+"  -e, --install-from-expression=UDTRYK\n"
+"                         installer pakken UDTRYK evaluerer til"
+
+#: guix/scripts/package.scm:429
+msgid ""
+"\n"
+"  -r, --remove=PACKAGE   remove PACKAGE"
+msgstr ""
+"\n"
+"  -r, --remove=PAKKE     fjern PAKKE"
+
+#: guix/scripts/package.scm:431
+msgid ""
+"\n"
+"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
+msgstr ""
+"\n"
+"  -u, --upgrade[=REGUDTRYK]\n"
+"                         opgrader alle de installerede pakker der matcher\n"
+"                         REGUDTRYK"
+
+#: guix/scripts/package.scm:433
+msgid ""
+"\n"
+"      --roll-back        roll back to the previous generation"
+msgstr ""
+"\n"
+"      --roll-back        rul tilbage til den forrige generation"
+
+#: guix/scripts/package.scm:435
+msgid ""
+"\n"
+"      --search-paths     display needed environment variable definitions"
+msgstr ""
+"\n"
+"      --search-paths     vis krævede miljøvariabeldefinitioner"
+
+#: guix/scripts/package.scm:437
+msgid ""
+"\n"
+"  -l, --list-generations[=PATTERN]\n"
+"                         list generations matching PATTERN"
+msgstr ""
+"\n"
+"  -l, --list-generations[=MØNSTER]\n"
+"                         vis generationer der matcher MØNSTER"
+
+#: guix/scripts/package.scm:440
+msgid ""
+"\n"
+"  -d, --delete-generations[=PATTERN]\n"
+"                         delete generations matching PATTERN"
+msgstr ""
+"\n"
+"  -d, --delete-generations[=MØNSTER]\n"
+"                         slet generationer der matcher MØNSTER"
+
+#: guix/scripts/package.scm:443
+msgid ""
+"\n"
+"  -S, --switch-generation=PATTERN\n"
+"                         switch to a generation matching PATTERN"
+msgstr ""
+"\n"
+"  -S, --switch-generation=MØNSTER\n"
+"                         skift til et generationsmatchende MØNSTER"
+
+#: guix/scripts/package.scm:446
+msgid ""
+"\n"
+"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
+msgstr ""
+"\n"
+"  -p, --profile=PROFIL   brug PROFIL i stedet for brugerens standardprofil"
+
+#: guix/scripts/package.scm:449
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the profile"
+msgstr ""
+"\n"
+"      --bootstrap        brug bootstrap Guile til at bygge profilen"
+
+#: guix/scripts/package.scm:451 guix/scripts/pull.scm:74
+msgid ""
+"\n"
+"      --verbose          produce verbose output"
+msgstr ""
+"\n"
+"      --verbose          lav uddybende uddata"
+
+#: guix/scripts/package.scm:454
+msgid ""
+"\n"
+"  -s, --search=REGEXP    search in synopsis and description using REGEXP"
+msgstr ""
+"\n"
+"  -s, --search=REGUDTRYK søg i synopsis og beskrivelse via REGUDTRYK"
+
+#: guix/scripts/package.scm:456
+msgid ""
+"\n"
+"  -I, --list-installed[=REGEXP]\n"
+"                         list installed packages matching REGEXP"
+msgstr ""
+"\n"
+"  -I, --list-installed[=REGUDTRYK]\n"
+"                         vis installerede pakker der matcher REGUDTRYK"
+
+#: guix/scripts/package.scm:459
+msgid ""
+"\n"
+"  -A, --list-available[=REGEXP]\n"
+"                         list available packages matching REGEXP"
+msgstr ""
+"\n"
+"  -A, --list-available[=REGUDTRYK]\n"
+"                         vis tilgængelige pakker der matcher REGUDTRYK"
+
+#: guix/scripts/package.scm:462
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  --show=PACKAGE         vis detaljer om PAKKE"
+
+#: guix/scripts/package.scm:698
+#, scheme-format
+msgid "~A: extraneous argument~%"
+msgstr "~A: uvedkommende argument~%"
+
+#: guix/scripts/package.scm:708
+#, scheme-format
+msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
+msgstr "Prøv »info '(guix) Invoking guix package« for yderligere information.~%"
+
+#: guix/scripts/package.scm:730
+#, scheme-format
+msgid "error: while creating directory `~a': ~a~%"
+msgstr "fejl: under oprettelse af mappe »~a«: ~a~%"
+
+#: guix/scripts/package.scm:734
+#, scheme-format
+msgid "Please create the `~a' directory, with you as the owner.~%"
+msgstr "Opret venligst mappen »~a«, med dig som ejer.~%"
+
+#: guix/scripts/package.scm:741
+#, scheme-format
+msgid "error: directory `~a' is not owned by you~%"
+msgstr "fejl: mappen »~a« er ikke ejet af dig~%"
+
+#: guix/scripts/package.scm:744
+#, scheme-format
+msgid "Please change the owner of `~a' to user ~s.~%"
+msgstr "Ændr venligst ejeren af »~a« til brugeren ~s.~%"
+
+#: guix/scripts/package.scm:777
+#, scheme-format
+msgid "cannot switch to generation '~a'~%"
+msgstr "kan ikke skifte til generation »~a«~%"
+
+#: guix/scripts/package.scm:809 guix/scripts/package.scm:910
+#, scheme-format
+msgid "invalid syntax: ~a~%"
+msgstr "ugyldig syntaks: ~a~%"
+
+#: guix/scripts/package.scm:846
+#, scheme-format
+msgid "nothing to be done~%"
+msgstr "intet at udføre~%"
+
+#: guix/scripts/package.scm:861
+#, scheme-format
+msgid "~a package in profile~%"
+msgid_plural "~a packages in profile~%"
+msgstr[0] "~a pakke i profil~%"
+msgstr[1] "~a pakker i profil~%"
+
+#: guix/scripts/package.scm:876
+#, scheme-format
+msgid "Generation ~a\t~a"
+msgstr "Generation ~a\t~a"
+
+#: guix/scripts/package.scm:883
+#, scheme-format
+msgid "~a\t(current)~%"
+msgstr "~a\t(nuværende)~%"
+
+#: guix/scripts/gc.scm:39
+msgid ""
+"Usage: guix gc [OPTION]... PATHS...\n"
+"Invoke the garbage collector.\n"
+msgstr ""
+"Brug: guix gc [TILVALG]... STIER...\n"
+"Start affaldsindsamleren.\n"
+
+#: guix/scripts/gc.scm:41
+msgid ""
+"\n"
+"  -C, --collect-garbage[=MIN]\n"
+"                         collect at least MIN bytes of garbage"
+msgstr ""
+"\n"
+"  -C, --collect-garbage[=MIN]\n"
+"                         saml mindst MIN byte affald"
+
+#: guix/scripts/gc.scm:44
+msgid ""
+"\n"
+"  -d, --delete           attempt to delete PATHS"
+msgstr ""
+"\n"
+"  -d, --delete           forsøg at slette STIER"
+
+#: guix/scripts/gc.scm:46
+msgid ""
+"\n"
+"      --list-dead        list dead paths"
+msgstr ""
+"\n"
+"      --list-dead        vis døde stier"
+
+#: guix/scripts/gc.scm:48
+msgid ""
+"\n"
+"      --list-live        list live paths"
+msgstr ""
+"\n"
+"      --list-live        vis live stier"
+
+#: guix/scripts/gc.scm:51
+msgid ""
+"\n"
+"      --references       list the references of PATHS"
+msgstr ""
+"\n"
+"      --references       vis referencerne for STIER"
+
+#: guix/scripts/gc.scm:53
+msgid ""
+"\n"
+"  -R, --requisites       list the requisites of PATHS"
+msgstr ""
+"\n"
+"  -R, --requisites       vis rekvisitter for STIER"
+
+#: guix/scripts/gc.scm:55
+msgid ""
+"\n"
+"      --referrers        list the referrers of PATHS"
+msgstr ""
+"\n"
+"      --referrers        vis henvisninger for STIER"
+
+#: guix/scripts/gc.scm:84
+#, scheme-format
+msgid "invalid amount of storage: ~a~%"
+msgstr "ugyldig lagermængde: ~a~%"
+
+#: guix/scripts/hash.scm:45
+msgid ""
+"Usage: guix hash [OPTION] FILE\n"
+"Return the cryptographic hash of FILE.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n"
+"and 'hexadecimal' can be used as well).\n"
+msgstr ""
+"Brug: guix hash [TILVALG] FIL\n"
+"Returner den kryptografiske hash for FIL.\n"
+"\n"
+"Understøttede formater: »nix-base32« (standard), »base32« og »base16« (»hex«\n"
+"og »hexadecimal« kan også bruges).\n"
+
+#: guix/scripts/hash.scm:52
+msgid ""
+"\n"
+"  -r, --recursive        compute the hash on FILE recursively"
+msgstr ""
+"\n"
+"  -r, --recursive        beregn hashen på FIL rekursivt"
+
+#: guix/scripts/hash.scm:103
+#, scheme-format
+msgid "unrecognized option: ~a~%"
+msgstr "tilvalg blev ikke genkendt: ~a~%"
+
+#: guix/scripts/hash.scm:134 guix/ui.scm:258
+#, scheme-format
+msgid "~a~%"
+msgstr "~a~%"
+
+#: guix/scripts/hash.scm:137
+#, scheme-format
+msgid "wrong number of arguments~%"
+msgstr "forkert antal argumenter~%"
+
+#: guix/scripts/pull.scm:72
+msgid ""
+"Usage: guix pull [OPTION]...\n"
+"Download and deploy the latest version of Guix.\n"
+msgstr ""
+"Brug: guix pull [TILVALG]...\n"
+"Hent og udrul den seneste version af Guix.\n"
+
+#: guix/scripts/pull.scm:76
+msgid ""
+"\n"
+"      --url=URL          download the Guix tarball from URL"
+msgstr ""
+"\n"
+"      --url=URL          hent Guix-tarball'en fra ADRESSE"
+
+#: guix/scripts/pull.scm:78
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the new Guix"
+msgstr ""
+"\n"
+"      --bootstrap        brug bootstrap Guile til at bygge den nye Guix"
+
+#: guix/scripts/pull.scm:132
+msgid "tarball did not produce a single source directory"
+msgstr "tarball fremstillede ikke en enkel kildemappe"
+
+#: guix/scripts/pull.scm:150
+#, scheme-format
+msgid "unpacking '~a'...~%"
+msgstr "udpakker »~a«...~%"
+
+#: guix/scripts/pull.scm:159
+msgid "failed to unpack source code"
+msgstr "kunne ikke udpakke kildekode"
+
+#: guix/scripts/pull.scm:200
+#, scheme-format
+msgid "updated ~a successfully deployed under `~a'~%"
+msgstr "opdaterede ~a der med succes blev udrullet undet »~a«~%"
+
+#: guix/scripts/pull.scm:203
+#, scheme-format
+msgid "failed to update Guix, check the build log~%"
+msgstr "kunne ikke opdatere Guix, kontroller byggeloggen~%"
+
+#: guix/scripts/pull.scm:205
+msgid "Guix already up to date\n"
+msgstr "Guix er allerede opdateret\n"
+
+#: guix/scripts/pull.scm:215
+#, scheme-format
+msgid "~A: unexpected argument~%"
+msgstr "~A: uventet argument~%"
+
+#: guix/scripts/pull.scm:224
+msgid "failed to download up-to-date source, exiting\n"
+msgstr "kunne ikke hente opdateret kilde, afslutter\n"
+
+#: guix/scripts/substitute-binary.scm:80
+#, scheme-format
+msgid "authentication and authorization of substitutes disabled!~%"
+msgstr "godkendelse og autorisation af substitutter er deaktiveret!~%"
+
+#: guix/scripts/substitute-binary.scm:163
+#, scheme-format
+msgid "download from '~a' failed: ~a, ~s~%"
+msgstr "hent fra »~a« mislykkedes: ~a, ~s~%"
+
+#: guix/scripts/substitute-binary.scm:178
+#, scheme-format
+msgid "while fetching ~a: server is somewhat slow~%"
+msgstr "under overførsel af ~a: server er noget langsom~%"
+
+#: guix/scripts/substitute-binary.scm:180
+#, scheme-format
+msgid "try `--no-substitutes' if the problem persists~%"
+msgstr "prøv »--no-substitutes« hvis problemet fortsætter~%"
+
+#: guix/scripts/substitute-binary.scm:221
+#, scheme-format
+msgid "updating list of substitutes from '~a'...~%"
+msgstr "opdaterer liste af substitutter fra »~a«...~%"
+
+#: guix/scripts/substitute-binary.scm:253
+#, scheme-format
+msgid "signature version must be a number: ~s~%"
+msgstr "signaturversion skal være et nummer: ~s~%"
+
+#: guix/scripts/substitute-binary.scm:257
+#, scheme-format
+msgid "unsupported signature version: ~a~%"
+msgstr "signaturversion er ikke understøttet: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:265
+#, scheme-format
+msgid "signature is not a valid s-expression: ~s~%"
+msgstr "signatur er ikke et gyldigt s-udtryk: ~s~%"
+
+#: guix/scripts/substitute-binary.scm:269
+#, scheme-format
+msgid "invalid format of the signature field: ~a~%"
+msgstr "ugyldigt format for signaturfeltet: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:304
+#, scheme-format
+msgid "invalid signature for '~a'~%"
+msgstr "ugyldig signatur for »~a«~%"
+
+#: guix/scripts/substitute-binary.scm:306
+#, scheme-format
+msgid "hash mismatch for '~a'~%"
+msgstr "hash mismatch for »~a«~%"
+
+#: guix/scripts/substitute-binary.scm:308
+#, scheme-format
+msgid "'~a' is signed with an unauthorized key~%"
+msgstr "»~a« er underskrevet med en uautoriseret nøgle~%"
+
+#: guix/scripts/substitute-binary.scm:310
+#, scheme-format
+msgid "signature on '~a' is corrupt~%"
+msgstr "signatur på »~a« er ødelagt~%"
+
+#: guix/scripts/substitute-binary.scm:344
+#, scheme-format
+msgid "substitute at '~a' lacks a signature~%"
+msgstr "substitut på »~a« mangler en signatur~%"
+
+#: guix/scripts/substitute-binary.scm:532
+#, scheme-format
+msgid "Downloading, please wait...~%"
+msgstr "Henter, vent venligst ...~%"
+
+#: guix/scripts/substitute-binary.scm:534
+#, scheme-format
+msgid "(Please consider upgrading Guile to get proper progress report.)~%"
+msgstr "(Overvej venligst at opgradere Guile for at få korrekt statusrapport.)~%"
+
+#: guix/scripts/substitute-binary.scm:547
+#, scheme-format
+msgid "host name lookup error: ~a~%"
+msgstr "opslagsfejl for værtsnavn: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:556
+msgid ""
+"Usage: guix substitute-binary [OPTION]...\n"
+"Internal tool to substitute a pre-built binary to a local build.\n"
+msgstr ""
+"Brug: guix substitute-binary [TILVALG]...\n"
+"Internt værktøj til at erstatte en præbygget binær fil med en lokal bygning.\n"
+
+#: guix/scripts/substitute-binary.scm:558
+msgid ""
+"\n"
+"      --query            report on the availability of substitutes for the\n"
+"                         store file names passed on the standard input"
+msgstr ""
+"\n"
+"      --query            rapport om tilgængeligheden for substitutter for\n"
+"                         lagerfilnavnene sendt til standardind"
+
+#: guix/scripts/substitute-binary.scm:561
+msgid ""
+"\n"
+"      --substitute STORE-FILE DESTINATION\n"
+"                         download STORE-FILE and store it as a Nar in file\n"
+"                         DESTINATION"
+msgstr ""
+"\n"
+"      --substitute LAGER-FIL DESTINATION\n"
+"                         hent LAGER-FIL og lagr den som en Nar i filen\n"
+"                         DESTINATION"
+
+#: guix/scripts/substitute-binary.scm:606
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
+msgstr "ACL for arkivimporter ser ikke ud til at være initialiseret, substitutter kan være utilgængelige\n"
+
+#: guix/scripts/substitute-binary.scm:640
+#, scheme-format
+msgid "these substitute URLs will not be used:~{ ~a~}~%"
+msgstr "disse substitutadresser vil ikke blive brugt:~{ ~a~}~%"
+
+#: guix/scripts/substitute-binary.scm:666
+#, scheme-format
+msgid "failed to look up host '~a' (~a), substituter disabled~%"
+msgstr "kunne ikke slå vært op »~a« (~a), substitutter deaktiveret~%"
+
+#: guix/scripts/substitute-binary.scm:777
+#, scheme-format
+msgid "~a: unrecognized options~%"
+msgstr "~a: ikke genkendte tilvalg~%"
+
+#: guix/scripts/authenticate.scm:58
+#, scheme-format
+msgid "cannot find public key for secret key '~a'~%"
+msgstr "kan ikke finde offentlig nøgle for hemmelig nøgle »~a«~%"
+
+#: guix/scripts/authenticate.scm:78
+#, scheme-format
+msgid "error: invalid signature: ~a~%"
+msgstr "fejl: ugyldig signatur: ~a~%"
+
+#: guix/scripts/authenticate.scm:80
+#, scheme-format
+msgid "error: unauthorized public key: ~a~%"
+msgstr "fejl: ikke autoriseret offentlig nøgle: ~a~%"
+
+#: guix/scripts/authenticate.scm:82
+#, scheme-format
+msgid "error: corrupt signature data: ~a~%"
+msgstr "fejl: ødelagt signaturdata: ~a~%"
+
+#: guix/scripts/authenticate.scm:126
+msgid ""
+"Usage: guix authenticate OPTION...\n"
+"Sign or verify the signature on the given file.  This tool is meant to\n"
+"be used internally by 'guix-daemon'.\n"
+msgstr ""
+"Brug: guix authenticate TILVALG...\n"
+"Underskriv eller verificer signaturen på den givne fil. Dette værktøj skal\n"
+"bruges internt af »guix-daemon«.\n"
+
+#: guix/scripts/authenticate.scm:132
+msgid "wrong arguments"
+msgstr "forkerte argumenter"
+
+#: guix/scripts/system.scm:75
+#, scheme-format
+msgid "failed to open operating system file '~a': ~a~%"
+msgstr "kunne ikke åbne operativsystemfil »~a«: ~a~%"
+
+#: guix/scripts/system.scm:79
+#, scheme-format
+msgid "~a: error: ~a~%"
+msgstr "~a: fejl: ~a~%"
+
+#: guix/scripts/system.scm:83
+#, scheme-format
+msgid "failed to load operating system file '~a':~%"
+msgstr "kunne ikke indlæse operativsystemfil »~a«:~%"
+
+#: guix/scripts/system.scm:120
+#, scheme-format
+msgid "failed to register '~a' under '~a'~%"
+msgstr "kunne ikke registrere »~a« under »~a«~%"
+
+#: guix/scripts/system.scm:152
+#, scheme-format
+msgid "failed to install GRUB on device '~a'~%"
+msgstr "kunne ikke installere GRUB på enhed »~a«~%"
+
+#: guix/scripts/system.scm:169
+#, scheme-format
+msgid "initializing the current root file system~%"
+msgstr "initialiserer det nuværende root-filsystem~%"
+
+#: guix/scripts/system.scm:223
+#, scheme-format
+msgid "activating system...~%"
+msgstr "aktiverer system ...~%"
+
+#: guix/scripts/system.scm:273
+#, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr "ikke genkendte opstartsparametre for »~a«~%"
+
+#: guix/scripts/system.scm:369
+#, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr "initialiserer operativsystem under »~a«...~%"
+
+#: guix/scripts/system.scm:385
+msgid ""
+"Usage: guix system [OPTION] ACTION FILE\n"
+"Build the operating system declared in FILE according to ACTION.\n"
+msgstr ""
+"Brug: guix system [TILVALG] HANDLING FIL\n"
+"Byg operativsystemet deklæret i FIL jævnfør HANDLING.\n"
+
+#: guix/scripts/system.scm:388
+msgid "The valid values for ACTION are:\n"
+msgstr "De gyldige værdier for HANDLING er:\n"
+
+#: guix/scripts/system.scm:389
+msgid "  - 'reconfigure', switch to a new operating system configuration\n"
+msgstr "  - »reconfigure«, skift til en ny operativsystemkonfiguration\n"
+
+#: guix/scripts/system.scm:391
+msgid "  - 'build', build the operating system without installing anything\n"
+msgstr "  - »build«, byg operativsystemet uden at installere noget\n"
+
+#: guix/scripts/system.scm:393
+msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
+msgstr "  - »vm«, byg et virtuelt maskinaftryk som deler værtens lager\n"
+
+#: guix/scripts/system.scm:395
+msgid "  - 'vm-image', build a freestanding virtual machine image\n"
+msgstr "  - »vm-image«, byg et fritstående virtuelt maskinaftryk\n"
+
+#: guix/scripts/system.scm:397
+msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
+msgstr "  - »disk-image«, byg et diskaftryk, egnet for et USB-drev\n"
+
+#: guix/scripts/system.scm:399
+msgid "  - 'init', initialize a root file system to run GNU.\n"
+msgstr "  - »init«, initialiser et rootfilsystem til at køre GNU.\n"
+
+#: guix/scripts/system.scm:403
+msgid ""
+"\n"
+"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
+msgstr ""
+"\n"
+"      --image-size=STR   for »vm-image«, lav et aftryk af STR"
+
+#: guix/scripts/system.scm:405
+msgid ""
+"\n"
+"      --no-grub          for 'init', do not install GRUB"
+msgstr ""
+"\n"
+"      --no-grub          for »init«, installer ikke GRUB"
+
+#: guix/scripts/system.scm:407
+msgid ""
+"\n"
+"      --share=SPEC       for 'vm', share host file system according to SPEC"
+msgstr ""
+"\n"
+"      --share=SPEC       for »vm«, del værtsfilsystem jævnfør SPEC"
+
+#: guix/scripts/system.scm:409
+msgid ""
+"\n"
+"      --expose=SPEC      for 'vm', expose host file system according to SPEC"
+msgstr ""
+"\n"
+"      --expose=SPEC      for »vm«, fremvis værtsfilsystem jævnfør SPEC"
+
+#: guix/scripts/system.scm:411
+msgid ""
+"\n"
+"      --full-boot        for 'vm', make a full boot sequence"
+msgstr ""
+"\n"
+"      --full-boot        for »vm«, lav en fuld opstartssekvens"
+
+#: guix/scripts/system.scm:507
+#, scheme-format
+msgid "~a: unknown action~%"
+msgstr "~a: ukendt handling~%"
+
+#: guix/scripts/system.scm:524
+#, scheme-format
+msgid "wrong number of arguments for action '~a'~%"
+msgstr "forkert antal argumenter for handling »~a«~%"
+
+#: guix/scripts/system.scm:544
+#, scheme-format
+msgid "no configuration file specified~%"
+msgstr "ingen konfigurationsfil angivet~%"
+
+#: guix/scripts/lint.scm:82
+#, scheme-format
+msgid "Available checkers:~%"
+msgstr "Tilgængelige kontrolprogrammer:~%"
+
+#: guix/scripts/lint.scm:102
+msgid "description should not be empty"
+msgstr "beskrivelse skal være udfyldt"
+
+#: guix/scripts/lint.scm:109
+msgid "description should start with an upper-case letter or digit"
+msgstr "beskrivelse skal starte med et stort bogstav eller et tal"
+
+# arg, hvad foregår der her
+#: guix/scripts/lint.scm:125
+#, scheme-format
+msgid ""
+"sentences in description should be followed ~\n"
+"by two spaces; possible infraction~p at ~{~a~^, ~}"
+msgstr ""
+"sætninger i beskrivelsen skal efterfølges ~\n"
+"af to mellemrum; mulig infraction~p ved ~{~a~^, ~}"
+
+#: guix/scripts/lint.scm:146
+msgid "pkg-config should probably be a native input"
+msgstr "pkg-config skal sandsynligvis være standarddata"
+
+#: guix/scripts/lint.scm:161
+msgid "synopsis should not be empty"
+msgstr "synopsis skal være udfyldt"
+
+#: guix/scripts/lint.scm:169
+msgid "no period allowed at the end of the synopsis"
+msgstr "ingen periode er tilladt i slutningen af synopsen"
+
+#: guix/scripts/lint.scm:181
+msgid "no article allowed at the beginning of the synopsis"
+msgstr "ingen artikel er tilladt i begyndelsen af synopsen"
+
+#: guix/scripts/lint.scm:188
+msgid "synopsis should be less than 80 characters long"
+msgstr "synopsis skal være mindre end 80 tegn lang"
+
+#: guix/scripts/lint.scm:194
+msgid "synopsis should start with an upper-case letter or digit"
+msgstr "synopsis skal starte med et stort bogstav eller et tal"
+
+#: guix/scripts/lint.scm:201
+msgid "synopsis should not start with the package name"
+msgstr "synopsis skal ikke starte med pakkenavnet"
+
+#: guix/scripts/lint.scm:270
+#, scheme-format
+msgid "URI ~a not reachable: ~a (~s)"
+msgstr "URI ~a kan ikke nås: ~a (~s)"
+
+#: guix/scripts/lint.scm:278
+#, scheme-format
+msgid "URI ~a domain not found: ~a"
+msgstr "URI ~a domæne blev ikke fundet: ~a"
+
+#: guix/scripts/lint.scm:286
+#, scheme-format
+msgid "URI ~a unreachable: ~a"
+msgstr "URI ~a kan ikke nås: ~a"
+
+#: guix/scripts/lint.scm:312
+msgid "invalid value for home page"
+msgstr "ugyldig værdi for hjemmeside"
+
+#: guix/scripts/lint.scm:315
+#, scheme-format
+msgid "invalid home page URL: ~s"
+msgstr "ugyldig hjemmesideadresse: ~s"
+
+#: guix/scripts/lint.scm:336
+msgid "file names of patches should start with the package name"
+msgstr "filnavn for rettelser skal starte med pakkenavnet"
+
+#: guix/scripts/lint.scm:374
+#, scheme-format
+msgid "~a: ~a: proposed synopsis: ~s~%"
+msgstr "~a: ~a: foreslået synopsis: ~s~%"
+
+#: guix/scripts/lint.scm:386
+#, scheme-format
+msgid "~a: ~a: proposed description:~%     \"~a\"~%"
+msgstr "~a: ~a: foreslået beskrivelse:~%     »~a«~%"
+
+#: guix/scripts/lint.scm:415
+msgid "Validate package descriptions"
+msgstr "Valider pakkebeskrivelser"
+
+#: guix/scripts/lint.scm:419
+msgid "Validate synopsis & description of GNU packages"
+msgstr "Valider synopsis og beskrivelse for GNU-pakker"
+
+#: guix/scripts/lint.scm:423
+msgid "Identify inputs that should be native inputs"
+msgstr "Identificer inddata som skal være standarddata"
+
+#: guix/scripts/lint.scm:427
+msgid "Validate file names of patches"
+msgstr "Valider filnavne for rettelser"
+
+#: guix/scripts/lint.scm:431
+msgid "Validate home-page URLs"
+msgstr "Valider hjemmesiders adresser"
+
+#: guix/scripts/lint.scm:435
+msgid "Validate source URLs"
+msgstr "Valider kildeadresser"
+
+#: guix/scripts/lint.scm:439
+msgid "Validate package synopses"
+msgstr "Valider pakkesynopser"
+
+#: guix/scripts/lint.scm:464
+msgid ""
+"Usage: guix lint [OPTION]... [PACKAGE]...\n"
+"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n"
+msgstr ""
+"Brug: guix lint [TILVALG]... [PAKKE]...\n"
+"Kør et sæt af kontroller på den specificerede pakke; hvis ingen er specificeret, så kør kontrollerne på alle pakker.\n"
+
+#: guix/scripts/lint.scm:466
+msgid ""
+"\n"
+"  -c, --checkers=CHECKER1,CHECKER2...\n"
+"                         only run the specificed checkers"
+msgstr ""
+"\n"
+"  -c, --checkers=KONTROL1,KONTROL2...\n"
+"                         kør kun de specificerede kontroller"
+
+#: guix/scripts/lint.scm:471
+msgid ""
+"\n"
+"  -l, --list-checkers    display the list of available lint checkers"
+msgstr ""
+"\n"
+"  -l, --list-checkers    vis listen med tilgængelige lint-kontroller"
+
+#: guix/scripts/lint.scm:491
+#, scheme-format
+msgid "~a: invalid checker~%"
+msgstr "~a: ugyldig kontrol~%"
+
+#: guix/gnu-maintenance.scm:438
+#, scheme-format
+msgid "signature verification failed for `~a'~%"
+msgstr "signaturverifikation mislykkedes for »~a«~%"
+
+#: guix/gnu-maintenance.scm:440
+#, scheme-format
+msgid "(could be because the public key is not in your keyring)~%"
+msgstr "(kunne være fordi den offentlige nøgle ikke er i din nøglering)~%"
+
+#: guix/gnu-maintenance.scm:515
+#, scheme-format
+msgid "~a: could not locate source file"
+msgstr "~a: kunne ikke lokalisere kildefil"
+
+#: guix/gnu-maintenance.scm:520
+#, scheme-format
+msgid "~a: ~a: no `version' field in source; skipping~%"
+msgstr "~a: ~a: intet »versionsfelt« i kilde; udelader~%"
+
+#: guix/ui.scm:137
+#, scheme-format
+msgid "failed to install locale: ~a~%"
+msgstr "kunne ikke installere sprog: ~a~%"
+
+#: guix/ui.scm:156
+msgid ""
+"Copyright (C) 2014 the Guix authors\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Ophavsret 2014 Guix-forfatterne\n"
+"Licens GPLv3+: GNU GPL version 3 eller senere <http://gnu.org/licenses/gpl.html>\n"
+"Dette er et frit program; du kan frit ændre og videredistribuere programmet.\n"
+"Der er INGEN GARANTI, inden for lovens rammer.\n"
+
+#: guix/ui.scm:164
+#, scheme-format
+msgid ""
+"\n"
+"Report bugs to: ~a."
+msgstr ""
+"\n"
+"Rapporter fejl til: ~a."
+
+#: guix/ui.scm:166
+#, scheme-format
+msgid ""
+"\n"
+"~a home page: <~a>"
+msgstr ""
+"\n"
+"~a hjemmeside: <~a>"
+
+#: guix/ui.scm:168
+msgid ""
+"\n"
+"General help using GNU software: <http://www.gnu.org/gethelp/>"
+msgstr ""
+"\n"
+"Generel hjælp til brugen af GNU-programmer: <http://www.gnu.org/gethelp/>"
+
+#: guix/ui.scm:175
+#, scheme-format
+msgid "~a: invalid number~%"
+msgstr "~a: ugyldigt nummer~%"
+
+#: guix/ui.scm:192
+#, scheme-format
+msgid "invalid number: ~a~%"
+msgstr "ugyldigt nummer: ~a~%"
+
+#: guix/ui.scm:215
+#, scheme-format
+msgid "unknown unit: ~a~%"
+msgstr "ukendt enhed: ~a~%"
+
+#: guix/ui.scm:226
+#, scheme-format
+msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
+msgstr "~a:~a:~a: pakken »~a« har ugyldige inddata: ~s~%"
+
+#: guix/ui.scm:233
+#, scheme-format
+msgid "~a: ~a: build system `~a' does not support cross builds~%"
+msgstr "~a: ~a: byggesystem »~a« understøtter ikke krydsbygninger~%"
+
+#: guix/ui.scm:238
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr "profilen »~a« findes ikke~%"
+
+#: guix/ui.scm:241
+#, scheme-format
+msgid "generation ~a of profile '~a' does not exist~%"
+msgstr "oprettelse ~a af profilen »~a« findes ikke~%"
+
+#: guix/ui.scm:245
+#, scheme-format
+msgid "failed to connect to `~a': ~a~%"
+msgstr "kunne ikke forbinde til »~a«: ~a~%"
+
+#: guix/ui.scm:250
+#, scheme-format
+msgid "build failed: ~a~%"
+msgstr "bygning mislykkedes: ~a~%"
+
+#: guix/ui.scm:253
+#, scheme-format
+msgid "reference to invalid output '~a' of derivation '~a'~%"
+msgstr "reference til ugyldige uddata »~a« for afledning »~a«~%"
+
+#: guix/ui.scm:264
+#, scheme-format
+msgid "~a: ~a~%"
+msgstr "~a: ~a~%"
+
+#: guix/ui.scm:283
+#, scheme-format
+msgid "failed to read expression ~s: ~s~%"
+msgstr "kunne ikke læse udtryk ~s: ~s~%"
+
+#: guix/ui.scm:289
+#, scheme-format
+msgid "failed to evaluate expression `~a': ~s~%"
+msgstr "kunne ikke evaluere udtryk »~a«: ~s~%"
+
+#: guix/ui.scm:298
+#, scheme-format
+msgid "expression ~s does not evaluate to a package~%"
+msgstr "udtryk ~s evaluerer ikke til en pakke~%"
+
+#: guix/ui.scm:350
+#, scheme-format
+msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[Den følgende afledning ville blive bygget:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[De følgende afledninger ville blive bygget:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:355
+#, scheme-format
+msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[Den følgende fil ville blive hentet:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[De følgende filer ville blive hentet:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:361
+#, scheme-format
+msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[Den følgende afledning vil blive bygget:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[De følgende afledninger vil blive bygget:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:366
+#, scheme-format
+msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[Den følgende fil vil blive hentet:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[De følgende filer vil blive hentet:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:418
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke ville blive fjernet:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker ville blive fjernet:~%~{~a~%~}~%"
+
+#: guix/ui.scm:423
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke vil blive fjernet:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker vil blive fjernet:~%~{~a~%~}~%"
+
+#: guix/ui.scm:436
+#, scheme-format
+msgid "The following package would be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke ville blive opgraderet:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker ville blive opgraderet:~%~{~a~%~}~%"
+
+#: guix/ui.scm:441
+#, scheme-format
+msgid "The following package will be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke vil blive opgraderet:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker vil blive opgraderet:~%~{~a~%~}~%"
+
+#: guix/ui.scm:452
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke ville blive installeret:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker ville blive installeret:~%~{~a~%~}~%"
+
+#: guix/ui.scm:457
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
+msgstr[0] "Den følgende pakke vil blive installeret:~%~{~a~%~}~%"
+msgstr[1] "De følgende pakker vil blive installeret:~%~{~a~%~}~%"
+
+#: guix/ui.scm:474
+msgid "<unknown location>"
+msgstr "<ukendt sted>"
+
+#: guix/ui.scm:500
+#, scheme-format
+msgid "failed to create configuration directory `~a': ~a~%"
+msgstr "kunne ikke oprette konfiguratinsmappe »~a«: ~a~%"
+
+#: guix/ui.scm:600 guix/ui.scm:614
+msgid "unknown"
+msgstr "ukendt"
+
+#: guix/ui.scm:723
+#, scheme-format
+msgid "invalid argument: ~a~%"
+msgstr "ugyldigt argument: ~a~%"
+
+#: guix/ui.scm:732
+#, scheme-format
+msgid "Try `guix --help' for more information.~%"
+msgstr "Prøv »guix --help« for yderligere information.~%"
+
+#: guix/ui.scm:762
+msgid ""
+"Usage: guix COMMAND ARGS...\n"
+"Run COMMAND with ARGS.\n"
+msgstr ""
+"Brug: guix KOMMANDO ARG...\n"
+"Kør KOMMANDO med ARG.\n"
+
+#: guix/ui.scm:765
+msgid "COMMAND must be one of the sub-commands listed below:\n"
+msgstr "KOMMANDO skal være en af underkommandoerne vist nedenfor:\n"
+
+#: guix/ui.scm:785
+#, scheme-format
+msgid "guix: ~a: command not found~%"
+msgstr "guix: ~a: kommando blev ikke fundet~%"
+
+#: guix/ui.scm:803
+#, scheme-format
+msgid "guix: missing command name~%"
+msgstr "guix: mangler kommandonavn~%"
+
+#: guix/ui.scm:811
+#, scheme-format
+msgid "guix: unrecognized option '~a'~%"
+msgstr "guix: ikke genkendt tilvalg »~a«~%"
+
+#: guix/http-client.scm:217
+#, scheme-format
+msgid "using Guile ~a, which does not support ~s encoding~%"
+msgstr "bruger Guile ~a, som ikke understøtter ~s-kodning~%"
+
+#: guix/http-client.scm:220
+#, scheme-format
+msgid "download failed; use a newer Guile~%"
+msgstr "overførsel mislykkedes; brug en nyere Guile~%"
+
+#: guix/http-client.scm:232
+#, scheme-format
+msgid "following redirection to `~a'...~%"
+msgstr "følger omdirigering til »~a«...~%"
+
+#: guix/http-client.scm:241
+msgid "download failed"
+msgstr "overførsel mislykkedes"
+
+#: guix/nar.scm:155
+msgid "signature is not a valid s-expression"
+msgstr "signatur er ikke et gyldigt s-udtryk"
+
+#: guix/nar.scm:164
+msgid "invalid signature"
+msgstr "ugyldig signatur"
+
+#: guix/nar.scm:168
+msgid "invalid hash"
+msgstr "ugyldig hash"
+
+#: guix/nar.scm:176
+msgid "unauthorized public key"
+msgstr "uautoriseret offentlig nøgle"
+
+#: guix/nar.scm:181
+msgid "corrupt signature data"
+msgstr "ødelagt signaturdata"
+
+#: guix/nar.scm:201
+msgid "corrupt file set archive"
+msgstr "ødelagt filsætarkiv"
+
+#: guix/nar.scm:211
+#, scheme-format
+msgid "importing file or directory '~a'...~%"
+msgstr "importerer fil eller mappe »~a«...~%"
+
+#: guix/nar.scm:222
+#, scheme-format
+msgid "found valid signature for '~a'~%"
+msgstr "fandt gyldig signatur for »~a«~%"
+
+#: guix/nar.scm:229
+msgid "imported file lacks a signature"
+msgstr "importeret fil mangler en signatur"
+
+#: guix/nar.scm:268
+msgid "invalid inter-file archive mark"
+msgstr "ugyldig arkivmærke for mellemfil"
diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cedfa3217b514ae807c1ae6e7e652fee9bc97843
--- /dev/null
+++ b/tests/guix-package-net.sh
@@ -0,0 +1,170 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.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/>.
+
+#
+# Test the `guix package' command-line utility.  This test requires network
+# access and is skipped when that is lacking.
+#
+
+guix package --version
+
+readlink_base ()
+{
+    basename `readlink "$1"`
+}
+
+# Return true if a typical shebang in the store would exceed Linux's default
+# static limit.
+shebang_too_long ()
+{
+    test `echo $NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash | wc -c` \
+	 -ge 128
+}
+
+profile="t-profile-$$"
+rm -f "$profile"
+
+trap 'rm -f "$profile" "$profile-"[0-9]* ; rm -rf t-home-'"$$" EXIT
+
+
+guix package --bootstrap -p "$profile" -i guile-bootstrap
+test -L "$profile" && test -L "$profile-1-link"
+! test -f "$profile-2-link"
+test -f "$profile/bin/guile"
+
+boot_make="(@@ (gnu packages commencement) gnu-make-boot0)"
+boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`"
+guix package --bootstrap -p "$profile" -i "$boot_make_drv"
+test -L "$profile-2-link"
+test -f "$profile/bin/make" && test -f "$profile/bin/guile"
+
+# Check whether `--list-installed' works.
+# XXX: Change the tests when `--install' properly extracts the package
+# name and version string.
+installed="`guix package -p "$profile" --list-installed | cut -f1 | xargs echo | sort`"
+case "x$installed" in
+    "guile-bootstrap make-boot0")
+        true;;
+    "make-boot0 guile-bootstrap")
+        true;;
+    "*")
+        false;;
+esac
+
+test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
+
+# List generations.
+test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
+     = "  guile-bootstrap"
+
+# Exit with 1 when a generation does not exist.
+if guix package -p "$profile" --list-generations=42;
+then false; else true; fi
+if guix package -p "$profile" --switch-generation=99;
+then false; else true; fi
+
+# Remove a package.
+guix package --bootstrap -p "$profile" -r "guile-bootstrap"
+test -L "$profile-3-link"
+test -f "$profile/bin/make" && ! test -f "$profile/bin/guile"
+
+# Roll back.
+guix package --roll-back -p "$profile"
+test "`readlink_base "$profile"`" = "$profile-2-link"
+test -x "$profile/bin/guile" && test -x "$profile/bin/make"
+guix package --roll-back -p "$profile"
+test "`readlink_base "$profile"`" = "$profile-1-link"
+test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
+
+# Switch to the rolled generation and switch back.
+guix package -p "$profile" --switch-generation=2
+test "`readlink_base "$profile"`" = "$profile-2-link"
+guix package -p "$profile" --switch-generation=-1
+test "`readlink_base "$profile"`" = "$profile-1-link"
+
+# Move to the empty profile.
+for i in `seq 1 3`
+do
+    guix package --bootstrap --roll-back -p "$profile"
+    ! test -f "$profile/bin"
+    ! test -f "$profile/lib"
+    test "`readlink_base "$profile"`" = "$profile-0-link"
+done
+
+# Test that '--list-generations' does not output the zeroth generation.
+test -z "`guix package -p "$profile" -l 0`"
+
+# Reinstall after roll-back to the empty profile.
+guix package --bootstrap -p "$profile" -e "$boot_make"
+test "`readlink_base "$profile"`" = "$profile-1-link"
+test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
+
+# Check that the first generation is the current one.
+test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)"
+
+# Roll-back to generation 0, and install---all at once.
+guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap
+test "`readlink_base "$profile"`" = "$profile-1-link"
+test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
+
+# Install Make.
+guix package --bootstrap -p "$profile" -e "$boot_make"
+test "`readlink_base "$profile"`" = "$profile-2-link"
+test -x "$profile/bin/guile" && test -x "$profile/bin/make"
+grep "`guix build -e "$boot_make"`" "$profile/manifest"
+
+# Make a "hole" in the list of generations, and make sure we can
+# roll back and switch "over" it.
+rm "$profile-1-link"
+guix package --bootstrap -p "$profile" --roll-back
+test "`readlink_base "$profile"`" = "$profile-0-link"
+guix package -p "$profile" --switch-generation=+1
+test "`readlink_base "$profile"`" = "$profile-2-link"
+
+# Make sure LIBRARY_PATH gets listed by `--search-paths'.
+guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap
+guix package --search-paths -p "$profile" | grep LIBRARY_PATH
+
+# Roll back so we can delete #3 below.
+guix package -p "$profile" --switch-generation=2
+
+# Delete the third generation and check that it was actually deleted.
+guix package -p "$profile" --delete-generations=3
+test -z "`guix package -p "$profile" -l 3`"
+
+
+#
+# Try with the default profile.
+#
+
+XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
+export XDG_CACHE_HOME
+HOME="$PWD/t-home-$$"
+export HOME
+
+mkdir -p "$HOME"
+
+# Get the canonical directory name so that 'guix package' recognizes it.
+HOME="`cd $HOME; pwd -P`"
+
+guix package --bootstrap -e "$boot_make"
+test -f "$HOME/.guix-profile/bin/make"
+
+guix package --bootstrap --roll-back
+! test -f "$HOME/.guix-profile/bin/make"
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 94cf92742075023bba92c881ca384f89e4f984d9..6cfd50b5e5b2848d73f3724a13bea10c38543e79 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -28,14 +28,6 @@ readlink_base ()
     basename `readlink "$1"`
 }
 
-# Return true if a typical shebang in the store would not exceed Linux's
-# default static limit.
-shebang_not_too_long ()
-{
-    test `echo $NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash | wc -c` \
-	 -lt 128
-}
-
 module_dir="t-guix-package-$$"
 profile="t-profile-$$"
 rm -f "$profile"
@@ -63,115 +55,12 @@ test -f "$profile/bin/guile"
 guix package --search-paths -p "$profile"
 test "`guix package --search-paths -p "$profile" | wc -l`" = 0
 
-# Check whether we have network access and an acceptable shebang length.
-if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null \
-	 && shebang_not_too_long
-then
-    boot_make="(@@ (gnu packages commencement) gnu-make-boot0)"
-    boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`"
-    guix package --bootstrap -p "$profile" -i "$boot_make_drv"
-    test -L "$profile-2-link"
-    test -f "$profile/bin/make" && test -f "$profile/bin/guile"
-
-
-    # Check whether `--list-installed' works.
-    # XXX: Change the tests when `--install' properly extracts the package
-    # name and version string.
-    installed="`guix package -p "$profile" --list-installed | cut -f1 | xargs echo | sort`"
-    case "x$installed" in
-        "guile-bootstrap make-boot0")
-            true;;
-        "make-boot0 guile-bootstrap")
-            true;;
-        "*")
-            false;;
-    esac
-
-    test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
-
-    # List generations.
-    test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
-        = "  guile-bootstrap"
-
-    # Exit with 1 when a generation does not exist.
-    if guix package -p "$profile" --list-generations=42;
-    then false; else true; fi
-    if guix package -p "$profile" --switch-generation=99;
-    then false; else true; fi
-
-    # Remove a package.
-    guix package --bootstrap -p "$profile" -r "guile-bootstrap"
-    test -L "$profile-3-link"
-    test -f "$profile/bin/make" && ! test -f "$profile/bin/guile"
-
-    # Roll back.
-    guix package --roll-back -p "$profile"
-    test "`readlink_base "$profile"`" = "$profile-2-link"
-    test -x "$profile/bin/guile" && test -x "$profile/bin/make"
-    guix package --roll-back -p "$profile"
-    test "`readlink_base "$profile"`" = "$profile-1-link"
-    test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
-
-    # Switch to the rolled generation and switch back.
-    guix package -p "$profile" --switch-generation=2
-    test "`readlink_base "$profile"`" = "$profile-2-link"
-    guix package -p "$profile" --switch-generation=-1
-    test "`readlink_base "$profile"`" = "$profile-1-link"
-
-    # Move to the empty profile.
-    for i in `seq 1 3`
-    do
-        guix package --bootstrap --roll-back -p "$profile"
-        ! test -f "$profile/bin"
-        ! test -f "$profile/lib"
-        test "`readlink_base "$profile"`" = "$profile-0-link"
-    done
-
-    # Test that '--list-generations' does not output the zeroth generation.
-    test -z "`guix package -p "$profile" -l 0`"
-
-    # Reinstall after roll-back to the empty profile.
-    guix package --bootstrap -p "$profile" -e "$boot_make"
-    test "`readlink_base "$profile"`" = "$profile-1-link"
-    test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
-
-    # Check that the first generation is the current one.
-    test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)"
-
-    # Roll-back to generation 0, and install---all at once.
-    guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap
-    test "`readlink_base "$profile"`" = "$profile-1-link"
-    test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
-
-    # Install Make.
-    guix package --bootstrap -p "$profile" -e "$boot_make"
-    test "`readlink_base "$profile"`" = "$profile-2-link"
-    test -x "$profile/bin/guile" && test -x "$profile/bin/make"
-    grep "`guix build -e "$boot_make"`" "$profile/manifest"
-
-    # Make a "hole" in the list of generations, and make sure we can
-    # roll back and switch "over" it.
-    rm "$profile-1-link"
-    guix package --bootstrap -p "$profile" --roll-back
-    test "`readlink_base "$profile"`" = "$profile-0-link"
-    guix package -p "$profile" --switch-generation=+1
-    test "`readlink_base "$profile"`" = "$profile-2-link"
-
-    # Make sure LIBRARY_PATH gets listed by `--search-paths'.
-    guix package --bootstrap -p "$profile" -i guile-bootstrap -i gcc-bootstrap
-    guix package --search-paths -p "$profile" | grep LIBRARY_PATH
-
-    # Delete the third generation and check that it was actually deleted.
-    guix package -p "$profile" --delete-generations=3
-    test -z "`guix package -p "$profile" -l 3`"
-
-    # Exit with 1 when a generation does not exist.
-    if guix package -p "$profile" --delete-generations=42;
-    then false; else true; fi
-
-    # Exit with 0 when trying to delete the zeroth generation.
-    guix package -p "$profile" --delete-generations=0
-fi
+# Exit with 1 when a generation does not exist.
+if guix package -p "$profile" --delete-generations=42;
+then false; else true; fi
+
+# Exit with 0 when trying to delete the zeroth generation.
+guix package -p "$profile" --delete-generations=0
 
 # Make sure multiple arguments to -i works.
 guix package --bootstrap -i guile gcc -p "$profile" -n
@@ -212,6 +101,14 @@ if guix package -p "$profile" --delete-generations=12m;
 then false; else true; fi
 test "`readlink_base "$profile"`" = "$generation"
 
+# The following command should not delete the current generation, even though
+# it matches the given pattern (see <http://bugs.gnu.org/19978>.)  And since
+# there's nothing else to delete, it should just fail.
+guix package --list-generations -p "$profile"
+if guix package --bootstrap -p "$profile" --delete-generations=1..
+then false; else true; fi
+test "`readlink_base "$profile"`" = "$generation"
+
 # Make sure $profile is a GC root at this point.
 real_profile="`readlink -f "$profile"`"
 if guix gc -d "$real_profile"
@@ -242,18 +139,6 @@ guix package --bootstrap -i guile-bootstrap
 test -L "$HOME/.guix-profile"
 test -f "$HOME/.guix-profile/bin/guile"
 
-if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
-then
-    guix package --bootstrap -e "$boot_make"
-    test -f "$HOME/.guix-profile/bin/make"
-    first_environment="`cd $HOME/.guix-profile ; pwd`"
-
-    guix package --bootstrap --roll-back
-    test -f "$HOME/.guix-profile/bin/guile"
-    ! test -f "$HOME/.guix-profile/bin/make"
-    test "`cd $HOME/.guix-profile ; pwd`" = "$first_environment"
-fi
-
 # Move to the empty profile.
 default_profile="`readlink "$HOME/.guix-profile"`"
 for i in `seq 1 3`
diff --git a/tests/publish.scm b/tests/publish.scm
new file mode 100644
index 0000000000000000000000000000000000000000..60f57a8ddbf0c20408f2c3fac239a6f78d622f61
--- /dev/null
+++ b/tests/publish.scm
@@ -0,0 +1,114 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@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 (test-publish)
+  #:use-module (guix scripts publish)
+  #:use-module (guix tests)
+  #:use-module (guix config)
+  #:use-module (guix utils)
+  #:use-module (guix hash)
+  #:use-module (guix store)
+  #:use-module (guix base32)
+  #:use-module (guix base64)
+  #:use-module ((guix serialization) #:select (restore-file))
+  #:use-module (guix pk-crypto)
+  #:use-module (web client)
+  #:use-module (web response)
+  #:use-module (rnrs bytevectors)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-64)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 rdelim))
+
+(define %store
+  (open-connection-for-tests))
+
+(define %reference (add-text-to-store %store "ref" "foo"))
+
+(define %item (add-text-to-store %store "item" "bar" (list %reference)))
+
+(define (http-get-body uri)
+  (call-with-values (lambda () (http-get uri))
+    (lambda (response body) body)))
+
+(define (publish-uri route)
+  (string-append "http://localhost:6789" route))
+
+;; Run a local publishing server in a separate thread.
+(call-with-new-thread
+ (lambda ()
+   (guix-publish "--port=6789"))) ; attempt to avoid port collision
+
+;; Wait until the server is accepting connections.
+(let ((conn (socket PF_INET SOCK_STREAM 0)))
+  (let loop ()
+    (unless (false-if-exception
+             (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") 6789))
+      (loop))))
+
+(test-begin "publish")
+
+(test-equal "/nix-cache-info"
+  (format #f "StoreDir: ~a\nWantMassQuery: 0\nPriority: 100\n"
+          %store-directory)
+  (http-get-body (publish-uri "/nix-cache-info")))
+
+(test-equal "/*.narinfo"
+  (let* ((info (query-path-info %store %item))
+         (unsigned-info
+          (format #f
+                  "StorePath: ~a
+URL: nar/~a
+Compression: none
+NarHash: sha256:~a
+NarSize: ~d
+References: ~a~%"
+                  %item
+                  (basename %item)
+                  (bytevector->base32-string
+                   (path-info-hash info))
+                  (path-info-nar-size info)
+                  (basename (first (path-info-references info)))))
+         (signature (base64-encode
+                     (string->utf8
+                      (canonical-sexp->string
+                       ((@@ (guix scripts publish) signed-string)
+                        unsigned-info))))))
+    (format #f "~aSignature: 1;~a;~a~%"
+            unsigned-info (gethostname) signature))
+  (utf8->string
+   (http-get-body
+    (publish-uri
+     (string-append "/" (store-path-hash-part %item) ".narinfo")))))
+
+(test-equal "/nar/*"
+  "bar"
+  (call-with-temporary-output-file
+   (lambda (temp port)
+     (let ((nar (utf8->string
+                 (http-get-body
+                  (publish-uri
+                   (string-append "/nar/" (basename %item)))))))
+       (call-with-input-string nar (cut restore-file <> temp)))
+     (call-with-input-file temp read-string))))
+
+(test-end "publish")
+
+
+(exit (= (test-runner-fail-count (test-runner-current)) 0))
diff --git a/tests/store.scm b/tests/store.scm
index f778c2086d8e6d76c4bab1a293fdc4195d003687..eeceed45c18a2ac990ba50c92ad053997bb5cbc9 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -606,6 +606,16 @@ (define (same? x y)
          (file (add %store "foo" "Lowered.")))
     (call-with-input-file file get-string-all)))
 
+(test-assert "query-path-info"
+  (let* ((ref (add-text-to-store %store "ref" "foo"))
+         (item (add-text-to-store %store "item" "bar" (list ref)))
+         (info (query-path-info %store item)))
+    (and (equal? (path-info-references info) (list ref))
+         (equal? (path-info-hash info)
+                 (sha256
+                  (string->utf8
+                   (call-with-output-string (cut write-file item <>))))))))
+
 (test-end "store")
 
 
diff --git a/tests/syscalls.scm b/tests/syscalls.scm
index f26331e1644545658f81bc621bf63f9aad3dffef..706f3dff44f82424264d04f14ecb318b1e80c230 100644
--- a/tests/syscalls.scm
+++ b/tests/syscalls.scm
@@ -19,6 +19,7 @@
 (define-module (test-syscalls)
   #:use-module (guix build syscalls)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-64)
   #:use-module (ice-9 match))
 
@@ -45,7 +46,10 @@ (define-module (test-syscalls)
       (memv (system-error-errno args) (list EPERM ENOENT)))))
 
 (test-assert "mount-points"
-  (member "/" (mount-points)))
+  ;; Reportedly "/" is not always listed as a mount point, so check a few
+  ;; others (see <http://bugs.gnu.org/20261>.)
+  (any (cute member <> (mount-points))
+       '("/" "/proc" "/sys" "/dev")))
 
 (test-assert "swapon, ENOENT/EPERM"
   (catch 'system-error