summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-12-14 11:55:07 +0100
committerLudovic Courtès <ludo@gnu.org>2014-12-14 11:55:07 +0100
commitc4a1b6c2ba479c6abcd22cab6a1fcd560469e986 (patch)
tree057fb773fcac4200ea66a0267a818be61cca3104
parent2ed11b3a3e05549ed6ef8a604464f424c0eeae1c (diff)
parent45c5b47b96a238c764c2d32966267f7f897bcc3d (diff)
downloadguix-c4a1b6c2ba479c6abcd22cab6a1fcd560469e986.tar.gz
Merge branch 'master' into 'core-updates'.
-rw-r--r--.dir-locals.el2
-rw-r--r--.gitignore1
-rw-r--r--AUTHORS1
-rw-r--r--Makefile.am8
-rw-r--r--THANKS2
-rw-r--r--build-aux/hydra/demo-os.scm2
-rw-r--r--configure.ac3
-rw-r--r--doc/emacs.texi20
-rw-r--r--doc/guix.texi349
-rw-r--r--emacs.am4
-rw-r--r--emacs/guix-backend.el4
-rw-r--r--emacs/guix-base.el42
-rw-r--r--emacs/guix-emacs.el79
-rw-r--r--emacs/guix-helper.scm.in1
-rw-r--r--emacs/guix-init.el.in19
-rw-r--r--emacs/guix-main.scm2
-rw-r--r--emacs/guix-profiles.el.in62
-rw-r--r--gnu-system.am22
-rw-r--r--gnu/build/activation.scm30
-rw-r--r--gnu/build/install.scm10
-rw-r--r--gnu/build/linux-boot.scm43
-rw-r--r--gnu/build/linux-modules.scm166
-rw-r--r--gnu/build/vm.scm9
-rw-r--r--gnu/packages/admin.scm13
-rw-r--r--gnu/packages/base.scm7
-rw-r--r--gnu/packages/bioinformatics.scm84
-rw-r--r--gnu/packages/bittorrent.scm73
-rw-r--r--gnu/packages/cdrom.scm111
-rw-r--r--gnu/packages/debug.scm139
-rw-r--r--gnu/packages/dictionaries.scm4
-rw-r--r--gnu/packages/disk.scm4
-rw-r--r--gnu/packages/dwm.scm55
-rw-r--r--gnu/packages/emacs.scm204
-rw-r--r--gnu/packages/fish.scm12
-rw-r--r--gnu/packages/fonts.scm82
-rw-r--r--gnu/packages/freeipmi.scm4
-rw-r--r--gnu/packages/games.scm3
-rw-r--r--gnu/packages/gimp.scm5
-rw-r--r--gnu/packages/gl.scm3
-rw-r--r--gnu/packages/glib.scm116
-rw-r--r--gnu/packages/global.scm4
-rw-r--r--gnu/packages/gnome.scm48
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnupg.scm8
-rw-r--r--gnu/packages/gnutls.scm4
-rw-r--r--gnu/packages/gsasl.scm4
-rw-r--r--gnu/packages/gtk.scm117
-rw-r--r--gnu/packages/linux-libre-i686.conf170
-rw-r--r--gnu/packages/linux-libre-x86_64.conf172
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/lisp.scm9
-rw-r--r--gnu/packages/llvm.scm107
-rw-r--r--gnu/packages/mail.scm165
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/maths.scm9
-rw-r--r--gnu/packages/mg.scm64
-rw-r--r--gnu/packages/mp3.scm92
-rw-r--r--gnu/packages/nutrition.scm68
-rw-r--r--gnu/packages/ocrad.scm4
-rw-r--r--gnu/packages/package-management.scm4
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/glib-tests-gapplication.patch28
-rw-r--r--gnu/packages/patches/guile-linux-syscalls.patch9
-rw-r--r--gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch15
-rw-r--r--gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch39
-rw-r--r--gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch15
-rw-r--r--gnu/packages/patches/wmctrl-64-fix.patch32
-rw-r--r--gnu/packages/patches/xf86-video-openchrome-includes.patch35
-rw-r--r--gnu/packages/pcre.scm8
-rw-r--r--gnu/packages/perl.scm203
-rw-r--r--gnu/packages/pkg-config.scm20
-rw-r--r--gnu/packages/pretty-print.scm41
-rw-r--r--gnu/packages/python.scm675
-rw-r--r--gnu/packages/qemu.scm2
-rw-r--r--gnu/packages/qt.scm17
-rw-r--r--gnu/packages/scrot.scm68
-rw-r--r--gnu/packages/socat.scm55
-rw-r--r--gnu/packages/telephony.scm12
-rw-r--r--gnu/packages/texlive.scm1
-rw-r--r--gnu/packages/tre.scm45
-rw-r--r--gnu/packages/unclutter.scm69
-rw-r--r--gnu/packages/version-control.scm184
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/web.scm65
-rw-r--r--gnu/packages/wget.scm4
-rw-r--r--gnu/packages/xdisorg.scm341
-rw-r--r--gnu/packages/xfce.scm478
-rw-r--r--gnu/packages/xfig.scm10
-rw-r--r--gnu/packages/xorg.scm147
-rw-r--r--gnu/packages/yubico.scm76
-rw-r--r--gnu/services/ssh.scm9
-rw-r--r--gnu/services/xorg.scm30
-rw-r--r--gnu/system.scm61
-rw-r--r--gnu/system/file-systems.scm8
-rw-r--r--gnu/system/grub.scm19
-rw-r--r--gnu/system/install.scm7
-rw-r--r--gnu/system/linux-initrd.scm63
-rw-r--r--gnu/system/locale.scm126
-rw-r--r--gnu/system/shadow.scm17
-rw-r--r--gnu/system/vm.scm4
-rw-r--r--guix/build-system/glib-or-gtk.scm3
-rw-r--r--guix/build-system/python.scm2
-rw-r--r--guix/build/emacs-utils.scm10
-rw-r--r--guix/build/glib-or-gtk-build-system.scm99
-rw-r--r--guix/derivations.scm1
-rw-r--r--guix/download.scm24
-rw-r--r--guix/elf.scm1045
-rw-r--r--guix/gnu-maintenance.scm8
-rw-r--r--guix/import/gnu.scm2
-rw-r--r--guix/licenses.scm13
-rw-r--r--guix/monads.scm33
-rw-r--r--guix/packages.scm2
-rw-r--r--guix/scripts/archive.scm5
-rw-r--r--guix/scripts/build.scm20
-rw-r--r--guix/scripts/environment.scm6
-rw-r--r--guix/scripts/package.scm5
-rwxr-xr-xguix/scripts/substitute-binary.scm6
-rw-r--r--guix/scripts/system.scm58
-rw-r--r--guix/store.scm4
-rw-r--r--guix/ui.scm5
-rw-r--r--guix/utils.scm10
-rw-r--r--nix/nix-daemon/guix-daemon.cc3
-rw-r--r--po/guix/POTFILES.in1
-rw-r--r--po/guix/eo.po606
-rw-r--r--po/guix/hu.po603
-rw-r--r--po/packages/LINGUAS1
-rw-r--r--po/packages/hu.po1262
-rw-r--r--test-env.in4
-rw-r--r--tests/guix-build.sh10
-rw-r--r--tests/guix-package.sh13
130 files changed, 8537 insertions, 1242 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
index 106c35bce6..b099068dac 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -46,6 +46,8 @@
    (eval . (put 'syntax-parameterize 'scheme-indent-function 1))
    (eval . (put 'with-monad 'scheme-indent-function 1))
    (eval . (put 'mbegin 'scheme-indent-function 1))
+   (eval . (put 'mwhen 'scheme-indent-function 1))
+   (eval . (put 'munless 'scheme-indent-function 1))
    (eval . (put 'mlet* 'scheme-indent-function 2))
    (eval . (put 'mlet 'scheme-indent-function 2))
    (eval . (put 'run-with-store 'scheme-indent-function 1))
diff --git a/.gitignore b/.gitignore
index a424a397c4..bcb82aa26d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -110,3 +110,4 @@ GTAGS
 /emacs/guix-autoloads.el
 /emacs/guix-helper.scm
 /emacs/guix-init.el
+/emacs/guix-profiles.el
diff --git a/AUTHORS b/AUTHORS
index ced88a1e4a..19cf492270 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -13,6 +13,7 @@ alphabetical order):
        Federico Beffa <beffa@fbengineering.ch>
           Marek Benc <merkur32@gmail.com>
             Sou Bunnbu (宋文武) <iyzsong@gmail.com>
+          Tomáš Čech <sleep_walker@suse.cz>
         Ludovic Courtès <ludo@gnu.org>
            John Darrington <jmd@gnu.org>
         Andreas Enge <andreas@enge.fr>
diff --git a/Makefile.am b/Makefile.am
index ee029c3735..bc0b95232e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -56,6 +56,7 @@ MODULES =					\
   guix/ftp-client.scm				\
   guix/http-client.scm				\
   guix/gnupg.scm				\
+  guix/elf.scm					\
   guix/store.scm				\
   guix/svn-download.scm				\
   guix/ui.scm					\
@@ -281,6 +282,13 @@ SUFFIXES = .go
 guix_install_go_files = install-nobase_nodist_guilemoduleDATA
 $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
 
+# The above trick doesn't work for 'config.go' because both 'config.scm' and
+# 'config.go' are listed in $(nobase_nodist_guilemodule_DATA).  Thus, give it
+# special treatment.
+install-data-hook: set-bootstrap-executable-permissions
+	touch "$(DESTDIR)$(guilemoduledir)/guix/config.go"
+
+
 SUBDIRS = po/guix po/packages
 BUILT_SOURCES =
 
diff --git a/THANKS b/THANKS
index 4d398c16fe..d8968b78ac 100644
--- a/THANKS
+++ b/THANKS
@@ -26,11 +26,13 @@ infrastructure help:
 	    Niels Möller <nisse@lysator.liu.se>
 	   Yutaka Niibe <gniibe@fsij.org>
              Adam Pribyl <pribyl@lowlevel.cz>
+                  rekado <rekado@elephly.net>
       Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
 	   Cyrill Schenkel <cyrill.schenkel@gmail.com>
 	    Benno Schulenberg <coordinator@translationproject.org>
 	     Alen Skondro <askondro@gmail.com>
 	 Matthias Wachs <wachs@net.in.tum.de>
+             Andy Wingo <wingo@pobox.com>
            Philip Woods <elzairthesorcerer@gmail.com>
 
 GNU Guix also includes non-software works.  Thanks to the following
diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm
index 9164500d70..d96cdce496 100644
--- a/build-aux/hydra/demo-os.scm
+++ b/build-aux/hydra/demo-os.scm
@@ -37,7 +37,7 @@
 (operating-system
  (host-name "gnu")
  (timezone "Europe/Paris")
- (locale "en_US.UTF-8")
+ (locale "en_US.utf8")
 
  (bootloader (grub-configuration
               (device "/dev/sda")))
diff --git a/configure.ac b/configure.ac
index 9c000912cc..235990edc3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.68)
-AC_INIT([GNU Guix], [0.8], [bug-guix@gnu.org], [guix],
+AC_INIT([GNU Guix], [0.9], [bug-guix@gnu.org], [guix],
   [http://www.gnu.org/software/guix/])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -185,6 +185,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"])
 emacsuidir="${guilemoduledir}/guix/emacs"
 AC_SUBST([emacsuidir])
 AC_CONFIG_FILES([emacs/guix-init.el
+                 emacs/guix-profiles.el
                  emacs/guix-helper.scm])
 
 AC_OUTPUT
diff --git a/doc/emacs.texi b/doc/emacs.texi
index ad2dcd8f65..86e0048538 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -56,11 +56,21 @@ Manual}):
 (require 'guix-init)
 @end example
 
-Do not worry about the efficiency of that @code{require} thing.  It will
-not load the whole ``guix.el'' package, it will just autoload the main
-interactive commands (@pxref{Autoload,,, elisp, The GNU Emacs Lisp
-Reference Manual}).
-
+By default, along with autoloading (@pxref{Autoload,,, elisp, The GNU
+Emacs Lisp Reference Manual}) the main interactive commands for
+``guix.el'' (@pxref{Emacs Commands}), requiring @code{guix-init} will
+also autoload commands for the Emacs packages installed in your user
+profile.
+
+To disable automatic loading of installed Emacs packages, set
+@code{guix-package-enable-at-startup} variable to @code{nil} before
+requiring @code{guix-init}.  This variable has the same meaning for
+Emacs packages installed with Guix, as @code{package-enable-at-startup}
+for the built-in Emacs package system (@pxref{Package Installation,,,
+emacs, The GNU Emacs Manual}).
+
+You can activate Emacs packages installed in your profile whenever you
+want using @kbd{M-x@tie{}guix-emacs-load-autoloads}.
 
 @node Emacs Usage
 @subsection Usage
diff --git a/doc/guix.texi b/doc/guix.texi
index c0b9668760..bb52cf713f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -76,6 +76,93 @@ package management tool written for the GNU system.
 * GNU Free Documentation License::  The license of this manual.
 * Concept Index::               Concepts.
 * Programming Index::           Data types, functions, and variables.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Installation
+
+* Requirements::                Software needed to build and run Guix.
+* Setting Up the Daemon::       Preparing the build daemon's environment.
+* Invoking guix-daemon::        Running the build daemon.
+
+Setting Up the Daemon
+
+* Build Environment Setup::     Preparing the isolated build environment.
+* Daemon Offload Setup::        Offloading builds to remote machines.
+
+Package Management
+
+* Features::                    How Guix will make your life brighter.
+* Invoking guix package::       Package installation, removal, etc.
+* Emacs Interface::             Package management from Emacs.
+* Substitutes::                 Downloading pre-built binaries.
+* Packages with Multiple Outputs::  Single source package, multiple outputs.
+* Invoking guix gc::            Running the garbage collector.
+* Invoking guix pull::          Fetching the latest Guix and distribution.
+* Invoking guix archive::       Exporting and importing store files.
+
+Programming Interface
+
+* Defining Packages::           Defining new packages.
+* Build Systems::               Specifying how packages are built.
+* The Store::                   Manipulating the package store.
+* Derivations::                 Low-level interface to package derivations.
+* The Store Monad::             Purely functional interface to the store.
+* G-Expressions::               Manipulating build expressions.
+
+Utilities
+
+* Invoking guix build::         Building packages from the command line.
+* Invoking guix download::      Downloading a file and printing its hash.
+* Invoking guix hash::          Computing the cryptographic hash of a file.
+* Invoking guix import::        Importing package definitions.
+* Invoking guix refresh::       Updating package definitions.
+* Invoking guix lint::          Finding errors in package definitions.
+* Invoking guix environment::   Setting up development environments.
+
+GNU Distribution
+
+* System Installation::         Installing the whole operating system.
+* System Configuration::        Configuring a GNU system.
+* Installing Debugging Files::  Feeding the debugger.
+* Security Updates::            Deploying security fixes quickly.
+* Package Modules::             Packages from the programmer's viewpoint.
+* Packaging Guidelines::        Growing the distribution.
+* Bootstrapping::               GNU/Linux built from scratch.
+* Porting::                     Targeting another platform or kernel.
+
+System Configuration
+
+* Using the Configuration System::  Customizing your GNU system.
+* operating-system Reference::  Detail of operating-system declarations.
+* File Systems::                Configuring file system mounts.
+* Mapped Devices::              Block device extra processing.
+* User Accounts::               Specifying user accounts.
+* Locales::                     Language and cultural convention settings.
+* Services::                    Specifying system services.
+* Setuid Programs::             Programs running with root privileges.
+* Initial RAM Disk::            Linux-Libre bootstrapping.
+* GRUB Configuration::          Configuring the boot loader.
+* Invoking guix system::        Instantiating a system configuration.
+* Defining Services::           Adding new service definitions.
+
+Services
+
+* Base Services::               Essential system services.
+* Networking Services::         Network setup, SSH daemon, etc.
+* X Window::                    Graphical display.
+
+Packaging Guidelines
+
+* Software Freedom::     What may go into the distribution.
+* Package Naming::       What's in a name?
+* Version Numbers::      When the name is not enough.
+* Python Modules::       Taming the snake.
+* Perl Modules::         Little pearls.
+* Fonts::                Fond of fonts.
+
+@end detailmenu
 @end menu
 
 @c *********************************************************************
@@ -260,6 +347,15 @@ 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:
 
@@ -499,7 +595,7 @@ Cache build failures.  By default, only successful builds are cached.
 Use @var{n} CPU cores to build each derivation; @code{0} means as many
 as available.
 
-The default value is @code{1}, but it may be overridden by clients, such
+The default value is @code{0}, but it may be overridden by clients, such
 as the @code{--cores} option of @command{guix build} (@pxref{Invoking
 guix build}).
 
@@ -510,7 +606,9 @@ parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}.
 @item --max-jobs=@var{n}
 @itemx -M @var{n}
 Allow at most @var{n} build jobs in parallel.  The default value is
-@code{1}.
+@code{1}.  Setting it to @code{0} means that no builds will be performed
+locally; instead, the daemon will offload builds (@pxref{Daemon Offload
+Setup}), or simply fail.
 
 @item --debug
 Produce debugging output.
@@ -1719,6 +1817,13 @@ modules}.  This is achieved by wrapping the programs in launch scripts
 that appropriately set the @code{XDG_DATA_DIRS} and @code{GTK_PATH}
 environment variables.
 
+It is possible to exclude specific package outputs from that wrapping
+process by listing their names in the
+@code{#:glib-or-gtk-wrap-excluded-outputs} parameter.  This is useful
+when an output is known not to contain any GLib or GTK+ binaries, and
+where wrapping would gratuitously add a dependency of that output on
+GLib and GTK+.
+
 @item glib-or-gtk-compile-schemas
 The phase @code{glib-or-gtk-compile-schemas} makes sure that all GLib's
 @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html,
@@ -2679,6 +2784,12 @@ may be helpful when debugging setup issues with the build daemon.
 Allow the use of up to @var{n} CPU cores for the build.  The special
 value @code{0} means to use as many CPU cores as available.
 
+@item --max-jobs=@var{n}
+@itemx -M @var{n}
+Allow at most @var{n} build jobs in parallel.  @xref{Invoking
+guix-daemon, @code{--max-jobs}}, for details about this option and the
+equivalent @command{guix-daemon} option.
+
 @end table
 
 Behind the scenes, @command{guix build} is essentially an interface to
@@ -2686,6 +2797,25 @@ the @code{package-derivation} procedure of the @code{(guix packages)}
 module, and to the @code{build-derivations} procedure of the @code{(guix
 store)} module.
 
+In addition to options explicitly passed on the command line,
+@command{guix build} and other @command{guix} commands that support
+building honor the @code{GUIX_BUILD_OPTIONS} environment variable.
+
+@defvr {Environment Variable} GUIX_BUILD_OPTIONS
+Users can define this variable to a list of command line options that
+will automatically be used by @command{guix build} and other
+@command{guix} commands that can perform builds, as in the example
+below:
+
+@example
+$ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar"
+@end example
+
+These options are parsed independently, and the result is appended to
+the parsed command-line options.
+@end defvr
+
+
 @node Invoking guix download
 @section Invoking @command{guix download}
 
@@ -3275,8 +3405,9 @@ Systems}).  This is typically done using the @code{-L} option of
 @command{mkfs.ext4} and related commands.
 
 The installation image includes Parted (@pxref{Overview,,, parted, GNU
-Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools
-to manipulate ext2/ext3/ext4 file systems.
+Parted User Manual}), @command{fdisk}, Cryptsetup/LUKS for disk
+encryption, and e2fsprogs, the suite of tools to manipulate
+ext2/ext3/ext4 file systems.
 
 @item
 Once that is done, mount the target root partition under @file{/mnt}.
@@ -3375,6 +3506,7 @@ instance to support new system services.
 * File Systems::                Configuring file system mounts.
 * Mapped Devices::              Block device extra processing.
 * User Accounts::               Specifying user accounts.
+* Locales::                     Language and cultural convention settings.
 * Services::                    Specifying system services.
 * Setuid Programs::             Programs running with root privileges.
 * Initial RAM Disk::            Linux-Libre bootstrapping.
@@ -3401,7 +3533,7 @@ kernel, initial RAM disk, and boot loader looks like this:
 (operating-system
   (host-name "komputilo")
   (timezone "Europe/Paris")
-  (locale "fr_FR.UTF-8")
+  (locale "fr_FR.utf8")
   (bootloader (grub-configuration
                 (device "/dev/sda")))
   (file-systems (cons (file-system
@@ -3411,7 +3543,7 @@ kernel, initial RAM disk, and boot loader looks like this:
                       %base-file-systems))
   (users (list (user-account
                 (name "alice")
-                (uid 1000) (group 100)
+                (group "users")
                 (comment "Bob's sister")
                 (home-directory "/home/alice"))))
   (packages (cons emacs %base-packages))
@@ -3554,9 +3686,13 @@ package}).
 @item @code{timezone}
 A timezone identifying string---e.g., @code{"Europe/Paris"}.
 
-@item @code{locale} (default: @code{"en_US.UTF-8"})
-The name of the default locale (@pxref{Locales,,, libc, The GNU C
-Library Reference Manual}).
+@item @code{locale} (default: @code{"en_US.utf8"})
+The name of the default locale (@pxref{Locale Names,,, libc, The GNU C
+Library Reference Manual}).  @xref{Locales}, for more information.
+
+@item @code{locale-definitions} (default: @var{%default-locale-definitions})
+The list of locale definitions to be compiled and that may be used at
+run time.  @xref{Locales}.
 
 @item @code{services} (default: @var{%base-services})
 A list of monadic values denoting system services.  @xref{Services}.
@@ -3630,6 +3766,13 @@ is interpreted as a partition label name; when it is @code{uuid},
 The @code{label} and @code{uuid} options offer a way to refer to disk
 partitions without having to hard-code their actual device name.
 
+However, when a file system's source is a mapped device (@pxref{Mapped
+Devices}), its @code{device} field @emph{must} refer to the mapped
+device name---e.g., @file{/dev/mapper/root-partition}---and consequently
+@code{title} must be set to @code{'device}.  This is required so that
+the system knows that mounting the file system depends on having the
+corresponding device mapping established.
+
 @item @code{flags} (default: @code{'()})
 This is a list of symbols denoting mount flags.  Recognized flags
 include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
@@ -3818,8 +3961,8 @@ users change it with @command{passwd}.
 
 If you @emph{do} want to have a preset password for an account, then
 this field must contain the encrypted password, as a string.
-@xref{crypt,,, The GNU C Library Reference Manual}, for more information
-on password encryption, and @ref{Encryption,,, GNU Guile Reference
+@xref{crypt,,, libc, The GNU C Library Reference Manual}, for more information
+on password encryption, and @ref{Encryption,,, guile, GNU Guile Reference
 Manual}, for information on Guile's @code{crypt} procedure.
 
 @end table
@@ -3863,6 +4006,78 @@ to be present on the system.  This includes groups such as ``root'',
 specific devices such as ``audio'', ``disk'', and ``cdrom''.
 @end defvr
 
+@node Locales
+@subsection Locales
+
+@cindex locale
+A @dfn{locale} defines cultural conventions for a particular language
+and region of the world (@pxref{Locales,,, libc, The GNU C Library
+Reference Manual}).  Each locale has a name that typically has the form
+@code{@var{language}_@var{territory}.@var{charset}}---e.g.,
+@code{fr_LU.utf8} designates the locale for the French language, with
+cultural conventions from Luxembourg, and using the UTF-8 encoding.
+
+@cindex locale definition
+Usually, you will want to specify the default locale for the machine
+using the @code{locale} field of the @code{operating-system} declaration
+(@pxref{operating-system Reference, @code{locale}}).
+
+That locale must be among the @dfn{locale definitions} that are known to
+the system---and these are specified in the @code{locale-definitions}
+slot of @code{operating-system}.  The default value includes locale
+definition for some widely used locales, but not for all the available
+locales, in order to save space.
+
+If the locale specified in the @code{locale} field is not among the
+definitions listed in @code{locale-definitions}, @command{guix system}
+raises an error.  In that case, you should add the locale definition to
+the @code{locale-definitions} field.  For instance, to add the North
+Frisian locale for Germany, the value of that field may be:
+
+@example
+(cons (locale-definition
+        (name "fy_DE.utf8") (source "fy_DE"))
+      %default-locale-definitions)
+@end example
+
+Likewise, to save space, one might want @code{locale-definitions} to
+list only the locales that are actually used, as in:
+
+@example
+(list (locale-definition
+        (name "ja_JP.eucjp") (source "ja_JP")
+        (charset "EUC-JP")))
+@end example
+
+The @code{locale-definition} form is provided by the @code{(gnu system
+locale)} module.  Details are given below.
+
+@deftp {Data Type} locale-definition
+This is the data type of a locale definition.
+
+@table @asis
+
+@item @code{name}
+The name of the locale.  @xref{Locale Names,,, libc, The GNU C Library
+Reference Manual}, for more information on locale names.
+
+@item @code{source}
+The name of the source for that locale.  This is typically the
+@code{@var{language}_@var{territory}} part of the locale name.
+
+@item @code{charset} (default: @code{"UTF-8"})
+The ``character set'' or ``code set'' for that locale,
+@uref{http://www.iana.org/assignments/character-sets, as defined by
+IANA}.
+
+@end table
+@end deftp
+
+@defvr {Scheme Variable} %default-locale-definitions
+An arbitrary list of commonly used locales, used as the default value of
+the @code{locale-definitions} field of @code{operating-system}
+declarations.
+@end defvr
 
 @node Services
 @subsection Services
@@ -3872,11 +4087,42 @@ An important part of preparing an @code{operating-system} declaration is
 listing @dfn{system services} and their configuration (@pxref{Using the
 Configuration System}).  System services are typically daemons launched
 when the system boots, or other actions needed at that time---e.g.,
-configuring network access.  They are managed by GNU@tie{}dmd
-(@pxref{Introduction,,, dmd, GNU dmd Manual}).
+configuring network access.
+
+Services are managed by GNU@tie{}dmd (@pxref{Introduction,,, dmd, GNU
+dmd Manual}).  On a running system, the @command{deco} command allows
+you to list the available services, show their status, start and stop
+them, or do other specific operations (@pxref{Jump Start,,, dmd, GNU dmd
+Manual}).  For example:
+
+@example
+# deco status dmd
+@end example
+
+The above command, run as @code{root}, lists the currently defined
+services.  The @command{deco doc} command shows a synopsis of the given
+service:
+
+@example
+# deco doc nscd
+Run libc's name service cache daemon (nscd).
+@end example
+
+The @command{start}, @command{stop}, and @command{restart} sub-commands
+have the effect you would expect.  For instance, the commands below stop
+the nscd service and restart the Xorg display server:
+
+@example
+# deco stop nscd
+Service nscd has been stopped.
+# deco restart xorg-server
+Service xorg-server has been stopped.
+Service xorg-server has been started.
+@end example
 
 The following sections document the available services, starting with
-the core services.
+the core services, that may be used in an @code{operating-system}
+declaration.
 
 @menu
 * Base Services::               Essential system services.
@@ -3904,7 +4150,7 @@ system, you will want to append services to @var{%base-services}, like
 this:
 
 @example
-(cons* (avahi-service) (lshd-service) %base-services)
+(cons* (avahi-service) (lsh-service) %base-services)
 @end example
 @end defvr
 
@@ -3967,7 +4213,7 @@ Run @var{udev}, which populates the @file{/dev} directory dynamically.
 @node Networking Services
 @subsubsection Networking Services
 
-The @code{(gnu system networking)} module provides services to configure
+The @code{(gnu services networking)} module provides services to configure
 the network interface.
 
 @cindex DHCP, networking service
@@ -4032,12 +4278,17 @@ When @var{initialize?} is true, automatically create the seed and host key
 upon service activation if they do not exist yet.  This may take long and
 require interaction.
 
+When @var{initialize?} is false, it is up to the user to initialize the
+randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create
+a key pair with the private key stored in file @var{host-key} (@pxref{lshd
+basics,,, lsh, LSH Manual}).
+
 When @var{interfaces} is empty, lshd listens for connections on all the
 network interfaces; otherwise, @var{interfaces} must be a list of host names
 or addresses.
 
-@var{allow-empty-passwords?} specifies whether to accepts log-ins with empty
-passwords, and @var{root-login?} specifies whether to accepts log-ins as
+@var{allow-empty-passwords?} specifies whether to accept log-ins with empty
+passwords, and @var{root-login?} specifies whether to accept log-ins as
 root.
 
 The other options should be self-descriptive.
@@ -4745,6 +4996,7 @@ needed is to review and apply the patch.
 * Version Numbers::      When the name is not enough.
 * Python Modules::       Taming the snake.
 * Perl Modules::         Little pearls.
+* Fonts::                Fond of fonts.
 @end menu
 
 @node Software Freedom
@@ -4796,6 +5048,8 @@ already part of the official project name.  But @pxref{Python
 Modules} and @ref{Perl Modules} for special rules concerning modules for
 the Python and Perl languages.
 
+Font package names are handled differently, @pxref{Fonts}.
+
 
 @node Version Numbers
 @subsection Version Numbers
@@ -4871,6 +5125,43 @@ are also prepended by @code{perl-}.  Such modules tend to have the word
 prefix.  For instance, @code{libwww-perl} becomes @code{perl-libwww}.
 
 
+@node Fonts
+@subsection Fonts
+
+For fonts that are in general not installed by a user for typesetting
+purposes, or that are distributed as part of a larger software package,
+we rely on the general packaging rules for software; for instance, this
+applies to the fonts delivered as part of the X.Org system or fonts that
+are part of TeX Live.
+
+To make it easier for a user to search for fonts, names for other packages
+containing only fonts are constructed as follows, independently of the
+upstream package name.
+
+The name of a package containing only one font family starts with
+@code{font-}; it is followed by the foundry name and a dash @code{-}
+if the foundry is known, and the font family name, in which spaces are
+replaced by dashes (and as usual, all upper case letters are transformed
+to lower case).
+For example, the Gentium font family by SIL is packaged under the name
+@code{font-sil-gentium}.
+
+For a package containing several font families, the name of the collection
+is used in the place of the font family name.
+For instance, the Liberation fonts consist of three families,
+Liberation Sans, Liberation Serif and Liberation Mono.
+These could be packaged separately under the names
+@code{font-liberation-sans} and so on; but as they are distributed together
+under a common name, we prefer to package them together as
+@code{font-liberation}.
+
+In the case where several formats of the same font family or font collection
+are packaged separately, a short form of the format, prepended by a dash,
+is added to the package name.  We use @code{-ttf} for TrueType fonts,
+@code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1
+fonts.
+
+
 
 @node Bootstrapping
 @section Bootstrapping
@@ -4955,7 +5246,7 @@ no-dependency requirement is verified by checking whether the files of
 the final tool chain contain references to the @file{/gnu/store}
 directories of the bootstrap inputs.  The process that leads to this
 ``final'' tool chain is described by the package definitions found in
-the @code{(gnu packages base)} module.
+the @code{(gnu packages commencement)} module.
 
 @c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
 The first tool that gets built with the bootstrap binaries is
@@ -4976,7 +5267,7 @@ And voilà!  At this point we have the complete set of build tools that
 the GNU Build System expects.  These are in the @code{%final-inputs}
 variable of the @code{(gnu packages commencement)} module, and are
 implicitly used by any package that uses @code{gnu-build-system}
-(@pxref{Defining Packages}).
+(@pxref{Build Systems, @code{gnu-build-system}}).
 
 
 @unnumberedsubsec Building the Bootstrap Binaries
@@ -5024,12 +5315,20 @@ one:
 guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
 @end example
 
+For this to work, the @code{glibc-dynamic-linker} procedure in
+@code{(gnu packages bootstrap)} must be augmented to return the right
+file name for libc's dynamic linker on that platform; likewise,
+@code{system->linux-architecture} in @code{(gnu packages linux)} must be
+taught about the new platform.
+
 Once these are built, the @code{(gnu packages bootstrap)} module needs
-to be updated to refer to these binaries on the target platform.  In
-addition, the @code{glibc-dynamic-linker} procedure in that module must
-be augmented to return the right file name for libc's dynamic linker on
-that platform; likewise, @code{system->linux-architecture} in @code{(gnu
-packages linux)} must be taught about the new platform.
+to be updated to refer to these binaries on the target platform.  That
+is, the hashes and URLs of the bootstrap tarballs for the new platform
+must be added alongside those of the currently supported platforms.  The
+bootstrap Guile tarball is treated specially: it is expected to be
+available locally, and @file{gnu-system.am} has rules do download it for
+the supported architectures; a rule for the new platform must be added
+as well.
 
 In practice, there may be some complications.  First, it may be that the
 extended GNU triplet that specifies an ABI (like the @code{eabi} suffix
diff --git a/emacs.am b/emacs.am
index be7e77ecd8..a43168e2cf 100644
--- a/emacs.am
+++ b/emacs.am
@@ -21,6 +21,7 @@ AUTOLOADS = emacs/guix-autoloads.el
 ELFILES =					\
   emacs/guix-backend.el				\
   emacs/guix-base.el				\
+  emacs/guix-emacs.el				\
   emacs/guix-history.el				\
   emacs/guix-info.el				\
   emacs/guix-list.el				\
@@ -36,7 +37,8 @@ dist_lisp_DATA =				\
   $(AUTOLOADS)
 
 nodist_lisp_DATA =				\
-  emacs/guix-init.el
+  emacs/guix-init.el				\
+  emacs/guix-profiles.el
 
 $(AUTOLOADS): $(ELFILES)
 	$(EMACS) --batch --eval						\
diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el
index a320eae35a..73a429b9ee 100644
--- a/emacs/guix-backend.el
+++ b/emacs/guix-backend.el
@@ -52,6 +52,7 @@
 ;;; Code:
 
 (require 'geiser-mode)
+(require 'guix-emacs)
 
 (defvar guix-load-path
   (file-name-directory (or load-file-name
@@ -125,7 +126,8 @@ This REPL is used for receiving information only if
   "Hook run before executing an operation in Guix REPL.")
 
 (defvar guix-after-repl-operation-hook
-  '(guix-repl-operation-success-message)
+  '(guix-emacs-load-autoloads-maybe
+    guix-repl-operation-success-message)
   "Hook run after executing successful operation in Guix REPL.")
 
 (defvar guix-repl-operation-p nil
diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 23575ac2bf..5129c87a5d 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -28,53 +28,13 @@
 ;;; Code:
 
 (require 'cl-lib)
+(require 'guix-profiles)
 (require 'guix-backend)
 (require 'guix-utils)
 (require 'guix-history)
 (require 'guix-messages)
 
 
-;;; Profiles
-
-(defvar guix-user-profile
-  (expand-file-name "~/.guix-profile")
-  "User profile.")
-
-(defvar guix-default-profile
-  (concat (or (getenv "NIX_STATE_DIR") "/var/guix")
-          "/profiles/per-user/"
-          (getenv "USER")
-          "/guix-profile")
-  "Default Guix profile.")
-
-(defvar guix-current-profile guix-default-profile
-  "Current profile.")
-
-(defun guix-profile-prompt (&optional default)
-  "Prompt for profile and return it.
-Use DEFAULT as a start directory.  If it is nil, use
-`guix-current-profile'."
-  (let* ((path (read-file-name "Profile: "
-                               (file-name-directory
-                                (or default guix-current-profile))))
-         (path (directory-file-name (expand-file-name path))))
-    (if (string= path guix-user-profile)
-        guix-default-profile
-      path)))
-
-(defun guix-set-current-profile (path)
-  "Set `guix-current-profile' to PATH.
-Interactively, prompt for PATH.  With prefix, use
-`guix-default-profile'."
-  (interactive
-   (list (if current-prefix-arg
-             guix-default-profile
-           (guix-profile-prompt))))
-  (setq guix-current-profile path)
-  (message "Current profile has been set to '%s'."
-           guix-current-profile))
-
-
 ;;; Parameters of the entries
 
 (defvar guix-param-titles
diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el
new file mode 100644
index 0000000000..512a2e2b1a
--- /dev/null
+++ b/emacs/guix-emacs.el
@@ -0,0 +1,79 @@
+;;; guix-emacs.el --- Emacs packages installed with Guix
+
+;; Copyright © 2014 Alex Kost <alezost@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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides auxiliary code for working with Emacs packages
+;; installed with Guix.
+
+;;; Code:
+
+(require 'guix-profiles)
+
+(defcustom guix-emacs-activate-after-operation t
+  "Activate Emacs packages after installing.
+If nil, do not load autoloads of the Emacs packages after
+they are successfully installed."
+  :type 'boolean
+  :group 'guix)
+
+(defvar guix-emacs-autoloads nil
+  "List of the last loaded Emacs autoloads.")
+
+(defun guix-emacs-directory (&optional profile)
+  "Return directory with Emacs packages installed in PROFILE.
+If PROFILE is nil, use `guix-user-profile'."
+  (expand-file-name "share/emacs/site-lisp"
+                    (or profile guix-user-profile)))
+
+(defun guix-emacs-find-autoloads (&optional profile)
+  "Return list of autoloads of Emacs packages installed in PROFILE.
+If PROFILE is nil, use `guix-user-profile'.
+Return nil if there are no emacs packages installed in PROFILE."
+  (let ((dir (guix-emacs-directory profile)))
+    (if (file-directory-p dir)
+        (directory-files dir 'full-name "-autoloads\\.el\\'")
+      (message "Directory '%s' does not exist." dir)
+      nil)))
+
+;;;###autoload
+(defun guix-emacs-load-autoloads (&optional all)
+  "Load autoloads for Emacs packages installed in a user profile.
+If ALL is nil, activate only those packages that were installed
+after the last activation, otherwise activate all Emacs packages
+installed in `guix-user-profile'."
+  (interactive "P")
+  (let* ((autoloads (guix-emacs-find-autoloads))
+         (files (if all
+                    autoloads
+                  (cl-nset-difference autoloads guix-emacs-autoloads
+                                      :test #'string=))))
+    (dolist (file files)
+      (load file 'noerror))
+    (setq guix-emacs-autoloads autoloads)))
+
+(defun guix-emacs-load-autoloads-maybe ()
+  "Load autoloads for Emacs packages if needed.
+See `guix-emacs-activate-after-operation' for details."
+  (and guix-emacs-activate-after-operation
+       (guix-emacs-load-autoloads)))
+
+(provide 'guix-emacs)
+
+;;; guix-emacs.el ends here
diff --git a/emacs/guix-helper.scm.in b/emacs/guix-helper.scm.in
index 554d55119f..0bbd36be21 100644
--- a/emacs/guix-helper.scm.in
+++ b/emacs/guix-helper.scm.in
@@ -50,6 +50,7 @@
                                 (and=> (getenv "HOME")
                                        (cut string-append <> "/.config")))
                             (cut string-append <> "/guix/latest"))))
+    (push! module-dir %load-path)
     (push! module-dir %load-compiled-path)
     (if (and updates-dir (file-exists? updates-dir))
         (begin
diff --git a/emacs/guix-init.el.in b/emacs/guix-init.el.in
index 4e62728187..4e40d7171a 100644
--- a/emacs/guix-init.el.in
+++ b/emacs/guix-init.el.in
@@ -1,14 +1,21 @@
 (require 'guix-autoloads)
+(require 'guix-emacs)
 
 (defvar guix-load-path
   (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")
   "Directory with scheme files for \"guix.el\" package.")
 
-(defvar guix-default-profile
-  (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
-          "/profiles/per-user/"
-          (getenv "USER")
-          "/guix-profile")
-  "Default Guix profile.")
+(defcustom guix-package-enable-at-startup t
+  "If non-nil, activate Emacs packages installed in a user profile.
+Set this variable to nil before requiring `guix-init' file to
+avoid loading autoloads of Emacs packages installed in
+`guix-user-profile'."
+  :type 'boolean
+  :group 'guix)
+
+(add-to-list 'load-path (guix-emacs-directory))
+
+(when guix-package-enable-at-startup
+  (guix-emacs-load-autoloads 'all))
 
 (provide 'guix-init)
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 8ad4dcbdd7..ae3a492249 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -857,6 +857,7 @@ OUTPUTS is a list of package outputs (may be an empty list)."
                (derivations (list derivation))
                (new-profile (derivation->output-path derivation)))
           (set-build-options store
+                             #:print-build-trace #f
                              #:use-substitutes? use-substitutes?)
           (show-manifest-transaction store manifest transaction
                                      #:dry-run? dry-run?)
@@ -908,6 +909,7 @@ GENERATIONS is a list of generation numbers."
       (let* ((derivation  (package-source-derivation store source))
              (derivations (list derivation)))
         (set-build-options store
+                           #:print-build-trace #f
                            #:use-substitutes? use-substitutes?)
         (show-what-to-build store derivations
                             #:use-substitutes? use-substitutes?
diff --git a/emacs/guix-profiles.el.in b/emacs/guix-profiles.el.in
new file mode 100644
index 0000000000..1e43707b68
--- /dev/null
+++ b/emacs/guix-profiles.el.in
@@ -0,0 +1,62 @@
+;;; guix-profiles.el --- Guix profiles
+
+;; Copyright © 2014 Alex Kost <alezost@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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defvar guix-user-profile
+  (expand-file-name "~/.guix-profile")
+  "User profile.")
+
+(defvar guix-default-profile
+  (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
+          "/profiles/per-user/"
+          (getenv "USER")
+          "/guix-profile")
+  "Default Guix profile.")
+
+(defvar guix-current-profile guix-default-profile
+  "Current profile.")
+
+(defun guix-profile-prompt (&optional default)
+  "Prompt for profile and return it.
+Use DEFAULT as a start directory.  If it is nil, use
+`guix-current-profile'."
+  (let* ((path (read-file-name "Profile: "
+                               (file-name-directory
+                                (or default guix-current-profile))))
+         (path (directory-file-name (expand-file-name path))))
+    (if (string= path guix-user-profile)
+        guix-default-profile
+      path)))
+
+(defun guix-set-current-profile (path)
+  "Set `guix-current-profile' to PATH.
+Interactively, prompt for PATH.  With prefix, use
+`guix-default-profile'."
+  (interactive
+   (list (if current-prefix-arg
+             guix-default-profile
+           (guix-profile-prompt))))
+  (setq guix-current-profile path)
+  (message "Current profile has been set to '%s'."
+           guix-current-profile))
+
+(provide 'guix-profiles)
+
+;;; guix-profiles.el ends here
diff --git a/gnu-system.am b/gnu-system.am
index 246f52a12e..f1ebe40703 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -45,6 +45,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/base.scm				\
   gnu/packages/bash.scm				\
   gnu/packages/bdw-gc.scm			\
+  gnu/packages/bioinformatics.scm		\
   gnu/packages/bittorrent.scm			\
   gnu/packages/bison.scm			\
   gnu/packages/boost.scm			\
@@ -72,6 +73,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/databases.scm			\
   gnu/packages/datamash.scm			\
   gnu/packages/dc.scm				\
+  gnu/packages/debug.scm			\
   gnu/packages/dejagnu.scm			\
   gnu/packages/dictionaries.scm			\
   gnu/packages/disk.scm				\
@@ -160,6 +162,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/links.scm			\
   gnu/packages/linux.scm			\
   gnu/packages/lisp.scm				\
+  gnu/packages/llvm.scm				\
   gnu/packages/lout.scm				\
   gnu/packages/lsh.scm				\
   gnu/packages/lsof.scm				\
@@ -173,6 +176,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/mc.scm				\
   gnu/packages/mcrypt.scm			\
   gnu/packages/messaging.scm			\
+  gnu/packages/mg.scm				\
   gnu/packages/miscfiles.scm			\
   gnu/packages/mit-krb5.scm			\
   gnu/packages/moe.scm				\
@@ -189,6 +193,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/node.scm				\
   gnu/packages/noweb.scm			\
   gnu/packages/ntp.scm				\
+  gnu/packages/nutrition.scm			\
   gnu/packages/nvi.scm				\
   gnu/packages/ocaml.scm			\
   gnu/packages/ocrad.scm			\
@@ -229,7 +234,6 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/scanner.scm			\
   gnu/packages/scheme.scm			\
   gnu/packages/screen.scm			\
-  gnu/packages/scrot.scm			\
   gnu/packages/sdl.scm				\
   gnu/packages/search.scm			\
   gnu/packages/serveez.scm			\
@@ -237,6 +241,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/skribilo.scm			\
   gnu/packages/slim.scm				\
   gnu/packages/smalltalk.scm			\
+  gnu/packages/socat.scm			\
   gnu/packages/ssh.scm				\
   gnu/packages/stalonetray.scm			\
   gnu/packages/swig.scm				\
@@ -249,7 +254,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/time.scm				\
   gnu/packages/tmux.scm				\
   gnu/packages/tor.scm				\
-  gnu/packages/unclutter.scm			\
+  gnu/packages/tre.scm				\
   gnu/packages/unrtf.scm			\
   gnu/packages/upnp.scm				\
   gnu/packages/uucp.scm				\
@@ -273,8 +278,11 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/xlockmore.scm			\
   gnu/packages/xml.scm				\
   gnu/packages/xnee.scm				\
+  gnu/packages/xdisorg.scm			\
   gnu/packages/xorg.scm				\
+  gnu/packages/xfce.scm				\
   gnu/packages/yasm.scm				\
+  gnu/packages/yubico.scm			\
   gnu/packages/zile.scm				\
   gnu/packages/zip.scm				\
   gnu/packages/zsh.scm				\
@@ -294,6 +302,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/system/install.scm			\
   gnu/system/linux.scm				\
   gnu/system/linux-initrd.scm			\
+  gnu/system/locale.scm				\
   gnu/system/shadow.scm				\
   gnu/system/vm.scm				\
 						\
@@ -302,6 +311,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/build/install.scm				\
   gnu/build/linux-boot.scm			\
   gnu/build/linux-initrd.scm			\
+  gnu/build/linux-modules.scm			\
   gnu/build/vm.scm
 
 
@@ -351,6 +361,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glib-tests-homedir.patch			\
   gnu/packages/patches/glib-tests-prlimit.patch			\
   gnu/packages/patches/glib-tests-timer.patch			\
+  gnu/packages/patches/glib-tests-gapplication.patch		\
   gnu/packages/patches/glibc-bootstrap-system.patch		\
   gnu/packages/patches/glibc-ldd-x86_64.patch			\
   gnu/packages/patches/gnunet-fix-scheduler.patch		\
@@ -412,6 +423,9 @@ dist_patch_DATA =						\
   gnu/packages/patches/pybugz-stty.patch			\
   gnu/packages/patches/python-fix-tests.patch			\
   gnu/packages/patches/python-libffi-mips-n32-fix.patch		\
+  gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch	\
+  gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch	\
+  gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   gnu/packages/patches/qt4-tests.patch				\
   gnu/packages/patches/ratpoison-shell.patch			\
   gnu/packages/patches/readline-link-ncurses.patch		\
@@ -433,7 +447,9 @@ dist_patch_DATA =						\
   gnu/packages/patches/util-linux-perl.patch			\
   gnu/packages/patches/vpnc-script.patch			\
   gnu/packages/patches/w3m-fix-compile.patch			\
+  gnu/packages/patches/wmctrl-64-fix.patch			\
   gnu/packages/patches/xf86-input-synaptics-glibc-2.20.patch	\
+  gnu/packages/patches/xf86-video-openchrome-includes.patch	\
   gnu/packages/patches/xmodmap-asprintf.patch
 
 bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
@@ -470,7 +486,7 @@ nodist_bootstrap_mips64el_linux_DATA =					\
 
 # Those files must remain executable, so they remain executable once
 # imported into the store.
-install-data-hook:
+set-bootstrap-executable-permissions:
 	chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
 
 DISTCLEANFILES =				\
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index 3eebb71dfc..dfadde326c 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -50,6 +50,25 @@
                 ,name)))
     (zero? (apply system* "groupadd" args))))
 
+(define %skeleton-directory
+  ;; Directory containing skeleton files for new accounts.
+  ;; Note: keep the trailing '/' so that 'scandir' enters it.
+  "/etc/skel/")
+
+(define (dot-or-dot-dot? file)
+  (member file '("." "..")))
+
+(define* (copy-account-skeletons home
+                                 #:optional (directory %skeleton-directory))
+  "Copy the account skeletons from DIRECTORY to HOME."
+  (let ((files (scandir directory (negate dot-or-dot-dot?)
+                        string<?)))
+    (mkdir-p home)
+    (for-each (lambda (file)
+                (copy-file (string-append directory "/" file)
+                           (string-append home "/" file)))
+              files)))
+
 (define* (add-user name group
                    #:key uid comment home shell password system?
                    (supplementary-groups '())
@@ -70,6 +89,7 @@ properties.  Return #t on success."
           (cut format <> "~a:x:~a:~a:~a:~a:~a~%"
                name "0" "0" comment home shell))
         (chmod "/etc/shadow" #o600)
+        (copy-account-skeletons (or home "/root"))
         #t)
 
       ;; Use 'useradd' from the Shadow package.
@@ -198,18 +218,12 @@ numeric gid or #f."
                 ;; XXX: Dirty hack to meet sudo's expectations.
                 (when (string=? (basename target) "sudoers")
                   (chmod target #o440))))
-            (scandir etc
-                     (lambda (file)
-                       (not (member file '("." ".."))))
+            (scandir etc (negate dot-or-dot-dot?)
 
                      ;; The default is 'string-locale<?', but we don't have
                      ;; it when run from the initrd's statically-linked
                      ;; Guile.
-                     string<?))
-
-  ;; Prevent ETC from being GC'd.
-  (rm-f "/var/guix/gcroots/etc-directory")
-  (symlink etc "/var/guix/gcroots/etc-directory"))
+                     string<?)))
 
 (define %setuid-directory
   ;; Place where setuid programs are stored.
diff --git a/gnu/build/install.scm b/gnu/build/install.scm
index a472259a4a..aa901f6971 100644
--- a/gnu/build/install.scm
+++ b/gnu/build/install.scm
@@ -36,13 +36,17 @@
 
 (define* (install-grub grub.cfg device mount-point)
   "Install GRUB with GRUB.CFG on DEVICE, which is assumed to be mounted on
-MOUNT-POINT."
+MOUNT-POINT.
+
+Note that the caller must make sure that GRUB.CFG is registered as a GC root
+so that the fonts, background images, etc. referred to by GRUB.CFG are not
+GC'd."
   (let* ((target (string-append mount-point "/boot/grub/grub.cfg"))
          (pivot  (string-append target ".new")))
     (mkdir-p (dirname target))
 
-    ;; Copy GRUB.CFG instead of just symlinking it since it's not a GC root.
-    ;; Do that atomically.
+    ;; Copy GRUB.CFG instead of just symlinking it, because symlinks won't
+    ;; work when /boot is on a separate partition.  Do that atomically.
     (copy-file grub.cfg pivot)
     (rename-file pivot target)
 
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index ea1971ff9c..b2ed1a8b54 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -26,6 +26,7 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 ftw)
   #:use-module (guix build utils)
+  #:use-module (gnu build linux-modules)
   #:use-module (gnu build file-systems)
   #:export (mount-essential-file-systems
             linux-command-line
@@ -34,7 +35,6 @@
             configure-qemu-networking
 
             bind-mount
-            load-linux-module*
             device-number
             boot-system))
 
@@ -218,14 +218,6 @@ networking values.)  Return #t if INTERFACE is up, #f otherwise."
 
     (logand (network-interface-flags sock interface) IFF_UP)))
 
-(define (load-linux-module* file)
-  "Load Linux module from FILE, the name of a `.ko' file."
-  (define (slurp module)
-    ;; TODO: Use 'mmap' to reduce memory usage.
-    (call-with-input-file file get-bytevector-all))
-
-  (load-linux-module (slurp file)))
-
 (define (device-number major minor)
   "Return the device number for the device with MAJOR and MINOR, for use as
 the last argument of `mknod'."
@@ -332,16 +324,17 @@ bailing out.~%root contents: ~s~%" (scandir "/"))
 
 (define* (boot-system #:key
                       (linux-modules '())
+                      linux-module-directory
                       qemu-guest-networking?
                       volatile-root?
                       pre-mount
                       (mounts '()))
   "This procedure is meant to be called from an initrd.  Boot a system by
-first loading LINUX-MODULES (a list of absolute file names of '.ko' files),
-then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true,
-calling PRE-MOUNT, mounting the file systems specified in MOUNTS, and finally
-booting into the new root if any.  The initrd supports kernel command-line
-options '--load', '--root', and '--repl'.
+first loading LINUX-MODULES (a list of module names) from
+LINUX-MODULE-DIRECTORY, then setting up QEMU guest networking if
+QEMU-GUEST-NETWORKING? is true, calling PRE-MOUNT, mounting the file systems
+specified in MOUNTS, and finally booting into the new root if any.  The initrd
+supports kernel command-line options '--load', '--root', and '--repl'.
 
 Mount the root file system, specified by the '--root' command-line argument,
 if any.
@@ -362,6 +355,10 @@ to it are lost."
              mounts)
         "ext4"))
 
+  (define (lookup-module name)
+    (string-append linux-module-directory "/"
+                   (ensure-dot-ko name)))
+
   (display "Welcome, this is GNU's early boot Guile.\n")
   (display "Use '--repl' for an initrd REPL.\n\n")
 
@@ -376,7 +373,10 @@ to it are lost."
          (start-repl))
 
        (display "loading kernel modules...\n")
-       (for-each load-linux-module* linux-modules)
+       (current-module-debugging-port (current-output-port))
+       (for-each (cut load-linux-module* <>
+                      #:lookup-module lookup-module)
+                 (map lookup-module linux-modules))
 
        (when qemu-guest-networking?
          (unless (configure-qemu-networking)
@@ -388,6 +388,14 @@ to it are lost."
        ;; Prepare the real root file system under /root.
        (unless (file-exists? "/root")
          (mkdir "/root"))
+
+       (when (procedure? pre-mount)
+         ;; Do whatever actions are needed before mounting the root file
+         ;; system--e.g., installing device mappings.  Error out when the
+         ;; return value is false.
+         (unless (pre-mount)
+           (error "pre-mount actions failed")))
+
        (if root
            (mount-root-file-system (canonicalize-device-spec root)
                                    root-fs-type
@@ -398,11 +406,6 @@ to it are lost."
          (mkdir "/root/dev")
          (make-essential-device-nodes #:root "/root"))
 
-       (when (procedure? pre-mount)
-         ;; Do whatever actions are needed before mounting--e.g., installing
-         ;; device mappings.
-         (pre-mount))
-
        ;; Mount the specified file systems.
        (for-each mount-file-system
                  (remove root-mount-point? mounts))
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
new file mode 100644
index 0000000000..a3bc7d6e33
--- /dev/null
+++ b/gnu/build/linux-modules.scm
@@ -0,0 +1,166 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu build linux-modules)
+  #:use-module (guix elf)
+  #:use-module (rnrs io ports)
+  #:use-module (rnrs bytevectors)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (ice-9 vlist)
+  #:use-module (ice-9 match)
+  #:export (dot-ko
+            ensure-dot-ko
+            module-dependencies
+            recursive-module-dependencies
+            modules-loaded
+            module-loaded?
+            load-linux-module*
+
+            current-module-debugging-port))
+
+;;; Commentary:
+;;;
+;;; Tools to deal with Linux kernel modules.
+;;;
+;;; Code:
+
+(define current-module-debugging-port
+  (make-parameter (%make-void-port "w")))
+
+(define (section-contents elf section)
+  "Return the contents of SECTION in ELF as a bytevector."
+  (let* ((modinfo  (elf-section-by-name elf ".modinfo"))
+         (contents (make-bytevector (elf-section-size modinfo))))
+    (bytevector-copy! (elf-bytes elf) (elf-section-offset modinfo)
+                      contents 0
+                      (elf-section-size modinfo))
+    contents))
+
+(define %not-nul
+  (char-set-complement (char-set #\nul)))
+
+(define (nul-separated-string->list str)
+  "Split STR at occurrences of the NUL character and return the resulting
+string list."
+  (string-tokenize str %not-nul))
+
+(define (key=value->pair str)
+  "Assuming STR has the form \"KEY=VALUE\", return a pair like (KEY
+. \"VALUE\")."
+  (let ((= (string-index str #\=)))
+    (cons (string->symbol (string-take str =))
+          (string-drop str (+ 1 =)))))
+
+(define (modinfo-section-contents file)
+  "Return the contents of the '.modinfo' section of FILE as a list of
+key/value pairs.."
+  (let* ((bv      (call-with-input-file file get-bytevector-all))
+         (elf     (parse-elf bv))
+         (modinfo (section-contents elf ".modinfo")))
+    (map key=value->pair
+         (nul-separated-string->list (utf8->string modinfo)))))
+
+(define %not-comma
+  (char-set-complement (char-set #\,)))
+
+(define (module-dependencies file)
+  "Return the list of modules that FILE depends on.  The returned list
+contains module names, not actual file names."
+  (let ((info (modinfo-section-contents file)))
+    (match (assq 'depends info)
+      (('depends . what)
+       (string-tokenize what %not-comma)))))
+
+(define dot-ko
+  (cut string-append <> ".ko"))
+
+(define (ensure-dot-ko name)
+  "Return NAME with a '.ko' prefix appended, unless it already has it."
+  (if (string-suffix? ".ko" name)
+      name
+      (dot-ko name)))
+
+(define* (recursive-module-dependencies files
+                                        #:key (lookup-module dot-ko))
+  "Return the topologically-sorted list of file names of the modules depended
+on by FILES, recursively.  File names of modules are determined by applying
+LOOKUP-MODULE to the module name."
+  (let loop ((files   files)
+             (result  '())
+             (visited vlist-null))
+    (match files
+      (()
+       (delete-duplicates (reverse result)))
+      ((head . tail)
+       (let* ((visited? (vhash-assoc head visited))
+              (deps     (if visited?
+                            '()
+                            (map lookup-module (module-dependencies head))))
+              (visited  (if visited?
+                            visited
+                            (vhash-cons head #t visited))))
+         (loop (append deps tail)
+               (append result deps) visited))))))
+
+(define %not-newline
+  (char-set-complement (char-set #\newline)))
+
+(define (modules-loaded)
+  "Return the list of names of currently loaded Linux modules."
+  (let* ((contents (call-with-input-file "/proc/modules"
+                     get-string-all))
+         (lines    (string-tokenize contents %not-newline)))
+    (match (map string-tokenize lines)
+      (((modules . _) ...)
+       modules))))
+
+(define (module-loaded? module)
+  "Return #t if MODULE is already loaded.  MODULE must be a Linux module name,
+not a file name."
+  (member module (modules-loaded)))
+
+(define* (load-linux-module* file
+                             #:key
+                             (recursive? #t)
+                             (lookup-module dot-ko))
+  "Load Linux module from FILE, the name of a `.ko' file.  When RECURSIVE? is
+true, load its dependencies first (à la 'modprobe'.)  The actual files
+containing modules depended on are obtained by calling LOOKUP-MODULE with the
+module name."
+  (define (slurp module)
+    ;; TODO: Use 'mmap' to reduce memory usage.
+    (call-with-input-file file get-bytevector-all))
+
+  (when recursive?
+    (for-each (cut load-linux-module* <> #:lookup-module lookup-module)
+              (map lookup-module (module-dependencies file))))
+
+  (format (current-module-debugging-port)
+          "loading Linux module from '~a'...~%" file)
+
+  (catch 'system-error
+    (lambda ()
+      (load-linux-module (slurp file)))
+    (lambda args
+      ;; If this module was already loaded and we're in modprobe style, ignore
+      ;; the error.
+      (unless (and recursive? (= EEXIST (system-error-errno args)))
+        (apply throw args)))))
+
+;;; linux-modules.scm ends here
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 03db1cd5f9..2c53cf5dd9 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -178,6 +178,12 @@ volume name."
   (display "populating...\n")
   (populate-root-file-system system-directory target-directory))
 
+(define (register-grub.cfg-root target grub.cfg)
+  "On file system TARGET, register GRUB.CFG as a GC root."
+  (let ((directory (string-append target "/var/guix/gcroots")))
+    (mkdir-p directory)
+    (symlink grub.cfg (string-append directory "/grub.cfg"))))
+
 (define* (initialize-hard-disk device
                                #:key
                                system-directory
@@ -222,6 +228,9 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
 
   (install-grub grub.cfg device target-directory)
 
+  ;; Register GRUB.CFG as a GC root.
+  (register-grub.cfg-root target-directory grub.cfg)
+
   ;; 'guix-register' resets timestamps and everything, so no need to do it
   ;; once more in that case.
   (unless register-closures?
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 3893da3a07..d7cd0b8092 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -689,9 +689,12 @@ commands and their arguments.")
                    (let ((port (open-file ".config" "al")))
                      (display "
       CONFIG_DEBUG_SYSLOG=y
-      CONFIG_CTRL_IFACE_DBUS=y
-      CONFIG_CTRL_IFACE_DBUS_NEW=y
-      CONFIG_CTRL_IFACE_DBUS_INTRO=y
+
+      # TODO: Add a variant of this package with DBus support.
+      #CONFIG_CTRL_IFACE_DBUS=y
+      #CONFIG_CTRL_IFACE_DBUS_NEW=y
+      #CONFIG_CTRL_IFACE_DBUS_INTRO=y
+
       CONFIG_DRIVER_NL80211=y
       CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
       CONFIG_LIBNL32=y
@@ -708,7 +711,9 @@ commands and their arguments.")
     (inputs
      `(("readline" ,readline)
        ("libnl" ,libnl)
-       ("dbus" ,dbus)
+       ;; TODO: Add a variant with DBus support.  This significantly increases
+       ;; the size of its closure since DBus depends on libx11.
+       ;; ("dbus" ,dbus)
        ("openssl" ,o:openssl)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index e2ec52a45b..aec8d8949c 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -500,7 +501,7 @@ with the Linux kernel.")
 (define-public tzdata
   (package
     (name "tzdata")
-    (version "2014a")
+    (version "2014j")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -508,7 +509,7 @@ with the Linux kernel.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "1cg843ajz4g16axpz56zvalwsbp1s764na2bk4fb44ayx162bzvw"))))
+               "038fvj6zf51k6z9sbbxbj87ajaf69l3whal2vwshbm4l0qr71n52"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
@@ -555,7 +556,7 @@ with the Linux kernel.")
                                 version ".tar.gz"))
                           (sha256
                            (base32
-                            "1xfkqi1q8cnxqbv8azdj5pqlzhkjz6xag09f1z0s8rxi86jkpf85"))))))
+                            "1qpd12imy7q5hb5fhk48mfw65s0xlrkmms0zr2gk0mj88qjn3m3z"))))))
     (home-page "http://www.iana.org/time-zones")
     (synopsis "Database of current and historical time zones")
     (description "The Time Zone Database (often called tz or zoneinfo)
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
new file mode 100644
index 0000000000..6f6178a3ff
--- /dev/null
+++ b/gnu/packages/bioinformatics.scm
@@ -0,0 +1,84 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; 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 bioinformatics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python))
+
+(define-public samtools
+  (package
+    (name "samtools")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/samtools/"
+                       version "/samtools-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "1y5p2hs4gif891b4ik20275a8xf3qrr1zh9wpysp4g8m0g1jckf2"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (alist-cons-after
+        'unpack
+        'patch-makefile-curses
+        (lambda _
+          (substitute* "Makefile"
+            (("-lcurses") "-lncurses")))
+        (alist-cons-after
+         'unpack
+         'patch-tests
+         (lambda* (#:key inputs #:allow-other-keys)
+           (let ((bash (assoc-ref inputs "bash")))
+             (substitute* "test/test.pl"
+               ;; The test script calls out to /bin/bash
+               (("/bin/bash")
+                (string-append bash "/bin/bash"))
+               ;; There are two failing tests upstream relating to the "stats"
+               ;; subcommand in test_usage_subcommand ("did not have Usage"
+               ;; and "usage did not mention samtools stats"), so we disable
+               ;; them.
+               (("(test_usage_subcommand\\(.*\\);)" cmd)
+                (string-append "unless ($subcommand eq 'stats') {" cmd "};")))))
+         (alist-delete
+          'configure
+          %standard-phases)))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("ncurses" ,ncurses)
+              ("perl" ,perl)
+              ("python" ,python)
+              ("zlib" ,zlib)))
+    (home-page "http://samtools.sourceforge.net")
+    (synopsis "Utilities to efficiently manipulate nucleotide sequence alignments")
+    (description
+     "Samtools implements various utilities for post-processing nucleotide
+sequence alignments in the SAM, BAM, and CRAM formats, including indexing,
+variant calling (in conjunction with bcftools), and a simple alignment
+viewer.")
+    (license license:expat)))
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 8b4388668e..20a2bdca8c 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -1,4 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -20,6 +21,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module ((guix licenses) #:prefix l:)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages libevent)
@@ -30,7 +32,11 @@
   #:use-module ((gnu packages compression)
                 #:select (zlib))
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gtk))
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl))
 
 (define-public transmission
   (package
@@ -44,11 +50,12 @@
               (sha256
                (base32
                 "1sxr1magqb5s26yvr5yhs1f7bmir8gl09niafg64lhgfnhv1kz59"))))
-    (build-system gnu-build-system)
+    (build-system glib-or-gtk-build-system)
     (outputs '("out"                      ; library and command-line interface
                "gui"))                    ; graphical user interface
     (arguments
-     '(#:phases (alist-cons-after
+     '(#:glib-or-gtk-wrap-excluded-outputs '("out")
+       #:phases (alist-cons-after
                  'install 'move-gui
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; Move the GUI to its own output, so that "out" doesn't
@@ -88,3 +95,63 @@ DHT, µTP, PEX and Magnet Links.")
     ;;
     ;; A few files files carry an MIT/X11 license header.
     (license l:gpl3+)))
+
+(define-public libtorrent
+  (package
+    (name "libtorrent")
+    (version "0.13.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://libtorrent.rakshasa.no/downloads/libtorrent-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0ma910br5vxrfpm4f4w4942lpmhwvqjnnf9h8vpf52fw35qhjkkh"))))
+    (build-system gnu-build-system)
+    (inputs `(("openssl" ,openssl)
+              ("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ;; Add this when you enable tests:
+                     ;; ("cppunit" ,cppunit)
+                     ))
+    (arguments
+     ;; FIXME: enable tests on the next release:
+     ;; https://github.com/rakshasa/libtorrent/issues/59
+     `(#:tests? #f))
+    (synopsis "BitTorrent library of rtorrent")
+    (description
+     "LibTorrent is a BitTorrent library used by and developed in parallel
+with the BitTorrent client rtorrent.  It is written in C++ with emphasis on
+speed and efficiency.")
+    (home-page "http://libtorrent.rakshasa.no/")
+    (license l:gpl2+)))
+
+(define-public rtorrent
+  (package
+    (name "rtorrent")
+    (version "0.9.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://libtorrent.rakshasa.no/downloads/rtorrent-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "113yrrac75vqi4g8r6bgs0ggjllj9bkg9shv08vqzdhkwqg2q2mw"))))
+    (build-system gnu-build-system)
+    (inputs `(("libtorrent" ,libtorrent)
+              ("ncurses" ,ncurses)
+              ("curl" ,curl)
+              ("cyrus-sasl" ,cyrus-sasl)
+              ("openssl" ,openssl)
+              ("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("cppunit" ,cppunit)))
+    (synopsis "BitTorrent client with ncurses interface")
+    (description
+     "rTorrent is a BitTorrent client with an ncurses interface.  It supports
+full encryption, DHT, PEX, and Magnet Links.  It can also be controlled via
+XML-RPC over SCGI.")
+    (home-page "http://libtorrent.rakshasa.no/")
+    (license l:gpl2+)))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 29def9b6aa..6187f871af 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -32,7 +32,11 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages readline)
-  #:use-module (gnu packages which))
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages wget)
+  #:use-module (gnu packages xiph))
 
 (define-public libcddb
   (package
@@ -68,14 +72,14 @@ caching facility provided by the library.")
 (define-public libcdio
   (package
     (name "libcdio")
-    (version "0.92")
+    (version "0.93")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/libcdio/libcdio-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1b9zngn8nnxb1yyngi1kwi73nahp4lsx59j17q1bahzz58svydik"))))
+               "0xb9km1750ndr7nglgbv1smv03dy8nkcfd9djbzqn3ldzlicswj9"))))
     (build-system gnu-build-system)
     (inputs
        `(("ncurses" ,ncurses)
@@ -217,3 +221,104 @@ files.  Dvdisaster works at the image level so that the recovery does not
 depend on the file system of the medium.  The maximum error correction
 capacity is user-selectable.")
     (license gpl2+)))
+
+(define-public cd-discid
+  (package
+    (name "cd-discid")
+    (version "1.4")
+    (home-page "http://linukz.org/cd-discid.shtml")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://linukz.org/download/cd-discid-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile"
+                  (("/usr/bin/install")
+                   "install")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f
+       #:phases (alist-delete 'configure %standard-phases)
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))))
+    (synopsis "Get CDDB discid information from an audio CD")
+    (description
+     "cd-discid is a command-line tool to retrieve CDDB discid information
+from an audio CD.")
+    (license gpl2+)))
+
+(define-public abcde
+  (package
+    (name "abcde")
+    (version "2.6")
+    (home-page "http://abcde.einval.com/")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append home-page "/download/abcde-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0y2cg233n2hixs0ji76dggpzgf52v4c4mnpwiai889ql2piafgk8"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile"
+                  (("/usr/bin/install")
+                   "install")
+                  (("^etcdir = .*$")
+                   (string-append "etcdir = $(prefix)/etc\n"))))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-replace
+                 'configure
+                 (lambda* (#:key outputs inputs #:allow-other-keys)
+                   (substitute* "Makefile"
+                     (("^prefix = .*$")
+                      (string-append "prefix = "
+                                     (assoc-ref outputs "out")
+                                     "\n"))))
+                 (alist-cons-after
+                  'install 'wrap
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (let ((wget   (assoc-ref inputs "wget"))
+                          (vorbis (assoc-ref inputs "vorbis-tools"))
+                          (parano (assoc-ref inputs "cdparanoia"))
+                          (which  (assoc-ref inputs "which"))
+                          (discid (assoc-ref inputs "cd-discid"))
+                          (out    (assoc-ref outputs "out")))
+                      (define (wrap file)
+                        (wrap-program file
+                                      `("PATH" ":" prefix
+                                        (,(string-append out "/bin:"
+                                                         wget "/bin:"
+                                                         which "/bin:"
+                                                         vorbis "/bin:"
+                                                         discid "/bin:"
+                                                         parano "/bin")))))
+
+                      (for-each wrap
+                                (find-files (string-append out "/bin")
+                                            ".*"))))
+                  %standard-phases))
+       #:tests? #f))
+
+    (inputs `(("wget" ,wget)
+              ("which" ,which)
+              ("cdparanoia" ,cdparanoia)
+              ("cd-discid" ,cd-discid)
+              ("vorbis-tools" ,vorbis-tools)
+
+              ;; A couple of Python and Perl scripts are included.
+              ("python" ,python)
+              ("perl" ,perl)))
+
+    (synopsis "Command-line audio CD ripper")
+    (description
+     "abcde is a front-end command-line utility (actually, a shell script)
+that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex
+and/or MPP/MP+ (Musepack) format, and tags them, all in one go.")
+    (license gpl2+)))
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
new file mode 100644
index 0000000000..afa8b8d99b
--- /dev/null
+++ b/gnu/packages/debug.scm
@@ -0,0 +1,139 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages debug)
+  #:use-module (guix packages)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages indent)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pretty-print))
+
+(define-public delta
+  (package
+    (name "delta")
+    (version "2006.08.03")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (list
+            (string-append "http://ftp.de.debian.org/debian/pool/main/d/delta/"
+                           "delta_" version ".orig.tar.gz")
+            ;; This uri seems to send guix download into an infinite loop
+            (string-append "http://delta.tigris.org/files/documents/3103/"
+                           "33566/delta-" version ".tar.gz")))
+      (sha256
+       (base32
+        "184wh35pf2ddx97319s6sgkzpz48xxkbwzcjpycv009bm53lh61q"))))
+    (build-system gnu-build-system)
+    (inputs                             ;Installed programs are perl scripts
+     `(("perl" ,perl)))
+    (arguments
+     `(#:phases
+       (alist-replace
+        'install
+        (lambda* (#:key outputs #:allow-other-keys)
+          ;; Makefile contains no install target
+          (let* ((out (assoc-ref outputs "out"))
+                 (bin (string-append out "/bin"))
+                 (doc (string-append out "/share/doc/delta-" ,version)))
+            (begin
+              (mkdir-p bin)
+              (mkdir-p doc)
+              (for-each (lambda (h)
+                          (copy-file h (string-append doc "/" (basename h))))
+                        `("License.txt" ,@(find-files "www" ".*\\.html")))
+              (for-each (lambda (b)
+                          (copy-file b (string-append bin "/" b)))
+                        `("delta" "multidelta" "topformflat")))))
+        (alist-delete 'configure %standard-phases))))
+    (home-page "http://delta.tigris.org/")
+    (synopsis "Heuristical file minimizer")
+    (description
+     "Delta assists you in minimizing \"interesting\" files subject to a test
+of their interestingness.  A common such situation is when attempting to
+isolate a small failure-inducing substring of a large input that causes your
+program to exhibit a bug.")
+    ;; See License.txt, which is a bsd-3 license, despite the project's
+    ;; home-page pointing to a bsd-2 license.
+    (license bsd-3)))
+
+(define-public c-reduce
+  (package
+    (name "c-reduce")
+    (version "2.2.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (list
+            (string-append "http://embed.cs.utah.edu/creduce/"
+                           "creduce-" version ".tar.gz")))
+      (sha256
+       (base32
+        "0wh0fkyg2l41d2wkndrgdiai9g2qiav7jik7cys21vmgzq01pyy2"))
+      (modules '((guix build utils)))
+      (snippet
+       '(substitute* "clang_delta/TransformationManager.cpp"
+          (("llvm/Config/config.h") "llvm/Config/llvm-config.h")))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("astyle"          ,astyle)
+       ("delta"           ,delta)
+       ("llvm"            ,llvm)
+       ("clang"           ,clang)
+       ("flex"            ,flex)
+       ("indent"          ,indent)
+       ("perl"            ,perl)
+       ("benchmark-timer" ,perl-benchmark-timer)
+       ("exporter-lite"   ,perl-exporter-lite)
+       ("file-which"      ,perl-file-which)
+       ("getopt-tabular"  ,perl-getopt-tabular)
+       ("regex-common"    ,perl-regexp-common)
+       ("sys-cpu"         ,perl-sys-cpu)))
+    (arguments
+     `(#:phases (alist-cons-after
+                 'install 'set-load-paths
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   ;; Tell creduce where to find the perl modules it needs.
+                   (let* ((out (assoc-ref outputs "out"))
+                          (prog (string-append out "/bin/creduce")))
+                     (wrap-program
+                      prog
+                      `("PERL5LIB" ":" prefix
+                        ,(map (lambda (p)
+                                (string-append (assoc-ref inputs p)
+                                               "/lib/perl5/site_perl/"
+                                               ,(package-version perl)))
+                              '("benchmark-timer" "exporter-lite"
+                                "file-which"      "getopt-tabular"
+                                "regex-common"    "sys-cpu"))))))
+                 %standard-phases)))
+    (home-page "http://embed.cs.utah.edu/creduce")
+    (synopsis "Reducer for interesting code")
+    (description
+     "C-Reduce is a tool that takes a large C or C++ program that has a
+property of interest (such as triggering a compiler bug) and automatically
+produces a much smaller C/C++ program that has the same property.  It is
+intended for use by people who discover and report bugs in compilers and other
+tools that process C/C++ code.")
+    (license ncsa)))
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 4520c2149f..345d0a26c1 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -29,14 +29,14 @@
 (define-public vera
   (package
     (name "vera")
-    (version "1.21a")
+    (version "1.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/vera/vera-" version
                                   ".tar.gz"))
               (sha256
                (base32
-                "09qz1g8js8qw735wmd8kraqbk1d1997v3px2lcc58frf1r66bp8f"))))
+                "1anx6ikwlkg7bn3c5a8xxrp33bvhfgxmncvnqbn2fp1hnbhqh5i7"))))
     (build-system trivial-build-system)
     (arguments
      `(#:builder (begin
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index c37a6bb25e..6a7fdcfb19 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -100,7 +100,7 @@ tables, and it understands a variety of different formats.")
 (define-public ddrescue
   (package
     (name "ddrescue")
-    (version "1.18.1")
+    (version "1.19")
     (source
      (origin
       (method url-fetch)
@@ -108,7 +108,7 @@ tables, and it understands a variety of different formats.")
                           version ".tar.lz"))
       (sha256
        (base32
-        "1ad1ifby89wys8lxh4d24y5lih6hkz54jhv6sf6bs1i7sd7lnqaq"))))
+        "1f278w7i9sx45jk6fsw1kyzx743k3alx1c4w1q8sk05ckafhr3gd"))))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
     (synopsis "Data recovery utility")
diff --git a/gnu/packages/dwm.scm b/gnu/packages/dwm.scm
index b5dbe73cda..1a02aa3769 100644
--- a/gnu/packages/dwm.scm
+++ b/gnu/packages/dwm.scm
@@ -84,3 +84,58 @@ left corner.
 dwm draws a small customizable border around windows to indicate the focus
 state.")
     (license x11)))
+
+(define-public dmenu
+  (package
+    (name "dmenu")
+    (version "4.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://dl.suckless.org/tools/dmenu-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0l58jpxrr80fmyw5pgw5alm5qry49aw6y049745wl991v2cdcb08"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output))
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxinerama" ,libxinerama)))
+    (home-page "http://tools.suckless.org/dmenu/")
+    (synopsis "Dynamic menu")
+    (description
+     "A dynamic menu for X, originally designed for dwm.  It manages large
+numbers of user-defined menu items efficiently.")
+    (license x11)))
+
+(define-public slock
+  (package
+    (name "slock")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://dl.suckless.org/tools/slock-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1r70s3npmp0nyrfdsxz8cw1i1z8n9phqdlw02wjphv341h3yajp0"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no tests
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output))
+       #:phases (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxinerama" ,libxinerama)))
+    (home-page "http://tools.suckless.org/slock/")
+    (synopsis "Simple X session lock")
+    (description
+     "Simple X session lock with trivial feedback on password entry.")
+    (license x11)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 119c613128..9ccf34c362 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages gtk)
@@ -44,6 +46,10 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages acl)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages linux)               ;alsa
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages mp3)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
 
@@ -58,7 +64,7 @@
              (sha256
               (base32
                "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7"))))
-    (build-system gnu-build-system)
+    (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases (alist-cons-before
                  'configure 'fix-/bin/pwd
@@ -114,6 +120,7 @@ languages.")
     (name "emacs-no-x-toolkit")
     (synopsis "The extensible, customizable, self-documenting text
 editor (without an X toolkit)" )
+    (build-system gnu-build-system)
     (inputs (append `(("inotify-tools" ,inotify-tools))
                     (alist-delete "gtk+" (package-inputs emacs))))
     (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
@@ -135,6 +142,15 @@ editor (without an X toolkit)" )
              (sha256
               (base32 "1mrk0bzqcpfhsw6635qznn47nzfy9ps7wrhkpymswdfpw5mdsry5"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-after
+                 'install 'post-install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (symlink "geiser-install.el"
+                            (string-append (assoc-ref outputs "out")
+                                           "/share/emacs/site-lisp/"
+                                           "geiser-autoloads.el")))
+                 %standard-phases)))
     (inputs `(("guile" ,guile-2.0)
               ("emacs" ,emacs)))
     (home-page "http://nongnu.org/geiser/")
@@ -186,6 +202,7 @@ giving her access to live metadata.")
            (copy-file source target)
            (with-directory-excursion lisp-dir
              (parameterize ((%emacs emacs))
+               (emacs-generate-autoloads ,name lisp-dir)
                (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
     (home-page "http://mumble.net/~campbell/emacs/paredit/")
     (synopsis "Emacs minor mode for editing parentheses")
@@ -240,7 +257,13 @@ when typing parentheses directly or commenting out code line by line.")
              (emacs-substitute-variables "magit.el"
                ("magit-git-executable" (string-append git "/bin/git"))
                ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))
-         %standard-phases))))
+         (alist-cons-after
+          'install 'post-install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (emacs-generate-autoloads
+             ,name (string-append (assoc-ref outputs "out")
+                                  "/share/emacs/site-lisp/")))
+          %standard-phases)))))
     (home-page "http://magit.github.io/")
     (synopsis "Emacs interface for the Git version control system")
     (description
@@ -317,6 +340,7 @@ operations.")
                      (string-append (assoc-ref outputs "out")
                                     "/share/emacs/site-lisp")
                    (for-each delete-file '("ChangeLog" "ChangeLog.1"))
+                   (symlink "w3m-load.el" "w3m-autoloads.el")
                    #t)))
           %standard-phases)))))
     (home-page "http://emacs-w3m.namazu.org/")
@@ -359,9 +383,183 @@ operations.")
            (let ((wget (assoc-ref inputs "wget")))
              (emacs-substitute-variables "wget.el"
                ("wget-command" (string-append wget "/bin/wget")))))
-         %standard-phases))))
+         (alist-cons-after
+          'install 'post-install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (emacs-generate-autoloads
+             "wget" (string-append (assoc-ref outputs "out")
+                                   "/share/emacs/site-lisp/")))
+          %standard-phases)))))
     (home-page "http://www.emacswiki.org/emacs/EmacsWget")
     (synopsis "Simple file downloader for Emacs based on wget")
     (description
      "Emacs-wget is an emacs interface for the wget file downloader.")
     (license gpl2+)))
+
+
+;;;
+;;; Multimedia.
+;;;
+
+(define-public emms
+  (package
+    (name "emms")
+    (version "4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/emms/emms-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile"
+                  (("/usr/bin/install-info")
+                   ;; No need to use 'install-info' since it would create a
+                   ;; useless 'dir' file.
+                   "true")
+                  (("^INFODIR=.*")
+                   ;; Install Info files to $out/share/info, not $out/info.
+                   "INFODIR := $(PREFIX)/share/info\n")
+                  (("/site-lisp/emms")
+                   ;; Install directly in share/emacs/site-lisp, not in a
+                   ;; sub-directory.
+                   "/site-lisp")
+                  (("^all: (.*)\n" _ rest)
+                   ;; Build 'emms-print-metadata'.
+                   (string-append "all: " rest " emms-print-metadata\n"))))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules ((guix build gnu-build-system)
+                           (guix build utils)
+                           (guix build emacs-utils))
+
+       #:phases (alist-replace
+                 'configure
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (let ((out     (assoc-ref outputs "out"))
+                         (vorbis  (assoc-ref inputs "vorbis-tools"))
+                         (alsa    (assoc-ref inputs "alsa-utils"))
+                         (mpg321  (assoc-ref inputs "mpg321"))
+                         (mp3info (assoc-ref inputs "mp3info")))
+                     ;; Specify the installation directory.
+                     (substitute* "Makefile"
+                       (("PREFIX=.*$")
+                        (string-append "PREFIX := " out "\n")))
+
+                     (setenv "SHELL" (which "sh"))
+                     (setenv "CC" "gcc")
+
+                     ;; Specify the absolute file names of the various
+                     ;; programs so that everything works out-of-the-box.
+                     (with-directory-excursion "lisp"
+                       (emacs-substitute-variables
+                           "emms-player-mpg321-remote.el"
+                         ("emms-player-mpg321-remote-command"
+                          (string-append mpg321 "/bin/mpg321")))
+                       (substitute* "emms-player-simple.el"
+                         (("\"ogg123\"")
+                          (string-append "\"" vorbis "/bin/ogg123\"")))
+                       (emacs-substitute-variables "emms-info-ogginfo.el"
+                         ("emms-info-ogginfo-program-name"
+                          (string-append vorbis "/bin/ogginfo")))
+                       (emacs-substitute-variables "emms-info-libtag.el"
+                         ("emms-info-libtag-program-name"
+                          (string-append out "/bin/emms-print-metadata")))
+                       (emacs-substitute-variables "emms-info-mp3info.el"
+                         ("emms-info-mp3info-program-name"
+                          (string-append mp3info "/bin/mp3info")))
+                       (substitute* "emms-volume-amixer.el"
+                         (("\"amixer\"")
+                          (string-append "\"" alsa "/bin/amixer\"")))
+                       (substitute* "emms-tag-editor.el"
+                         (("\"mp3info\"")
+                          (string-append mp3info "/bin/mp3info"))))))
+                 (alist-cons-before
+                  'install 'pre-install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    ;; The 'install' rule expects 'emms-print-metadata.1' to
+                    ;; be already installed.
+                    (let* ((out  (assoc-ref outputs "out"))
+                           (man1 (string-append out "/share/man/man1")))
+                      (mkdir-p man1)
+                      (copy-file "emms-print-metadata.1"
+                                 (string-append man1 "/emms-print-metadata.1"))))
+                  (alist-cons-after
+                   'install 'post-install
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let* ((out    (assoc-ref outputs "out"))
+                            (target (string-append
+                                     out "/bin/emms-print-metadata")))
+                       (symlink "emms-auto.el"
+                                (string-append out "/share/emacs/site-lisp/"
+                                               "emms-autoloads.el"))
+                       (mkdir-p (dirname target))
+                       (copy-file "src/emms-print-metadata" target)
+                       (chmod target #o555)))
+                   %standard-phases)))
+       #:tests? #f))
+    (native-inputs `(("emacs" ,emacs)            ;for (guix build emacs-utils)
+                     ("texinfo" ,texinfo)))
+    (inputs `(;("perl" ,perl)                     ;for 'emms-print-metadata.pl'
+              ("alsa-utils" ,alsa-utils)
+              ("vorbis-tools" ,vorbis-tools)
+              ("mpg321" ,mpg321)
+              ("taglib" ,taglib)
+              ("mp3info" ,mp3info)))
+    (synopsis "Emacs Multimedia System")
+    (description
+     "EMMS is the Emacs Multimedia System.  It is a small front-end which
+can control one of the supported external players.  Thus, it supports
+whatever formats are supported by your music player.  It also
+supports tagging and playlist management, all behind a clean and
+light user interface.")
+    (home-page "http://www.gnu.org/software/emms/")
+    (license gpl3+)))
+
+
+;;;
+;;; Miscellaneous.
+;;;
+
+(define-public bbdb
+  (package
+    (name "bbdb")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/bbdb/bbdb-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; We don't want to build and install the PDF.
+               '(substitute* "doc/Makefile.in"
+                  (("^doc_DATA = .*$")
+                   "doc_DATA =\n")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-cons-after
+                 'install 'post-install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; Add an autoloads file with the right name for guix.el.
+                   (let* ((out  (assoc-ref outputs "out"))
+                          (site (string-append out "/share/emacs/site-lisp")))
+                     (with-directory-excursion site
+                       (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
+                 %standard-phases)))
+    (native-inputs `(("emacs" ,emacs)))
+    (home-page "http://savannah.nongnu.org/projects/bbdb/")
+    (synopsis "Contact management utility for Emacs")
+    (description
+     "BBDB is the Insidious Big Brother Database for GNU Emacs.  It provides
+an address book for email and snail mail addresses, phone numbers and the
+like.  It can be linked with various Emacs mail clients (Message and Mail
+mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
+    (license gpl3+)))
diff --git a/gnu/packages/fish.scm b/gnu/packages/fish.scm
index 6f818b4ed9..9398446a0c 100644
--- a/gnu/packages/fish.scm
+++ b/gnu/packages/fish.scm
@@ -28,21 +28,27 @@
 (define-public fish
   (package
     (name "fish")
-    (version "2.1.0")
+    (version "2.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://fishshell.com/files/"
                                   version "/fish-" version ".tar.gz"))
               (sha256
                (base32
-                "0i7h3hx8iszli3d4kphw79sz9m07f2lc2c9hr9smdps5s7wpllmg"))))
+                "096rhi911s3j618cvp8fj9pb4jniy3y6415jvjg8bhszsp1x7r5p"))
+              (modules '((guix build utils)))
+              ;; Don't try to install /etc/fish/config.fish.
+              (snippet
+               '(substitute* "Makefile.in"
+                  ((".*INSTALL.*sysconfdir.*fish.*") "")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)))
     (inputs
      `(("ncurses" ,ncurses)))
     (arguments
-     '(#:tests? #f)) ; no check target
+     '(#:tests? #f ; no check target
+       #:configure-flags '("--sysconfdir=/etc")))
     (synopsis "The friendly interactive shell")
     (description
      "Fish (friendly interactive shell) is a shell focused on interactive use,
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 4ed86d96f8..74cfc9dbe1 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
+;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,9 +32,9 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages pkg-config))
 
-(define-public ttf-dejavu
+(define-public font-dejavu
   (package
-    (name "ttf-dejavu")
+    (name "font-dejavu")
     (version "2.34")
     (source (origin
              (method url-fetch)
@@ -97,9 +98,9 @@ provide serif, sans and monospaced variants.")
      (license:x11-style
       "http://dejavu-fonts.org/"))))
 
-(define-public ttf-bitstream-vera
+(define-public font-bitstream-vera
   (package
-    (name "ttf-bitstream-vera")
+    (name "font-bitstream-vera")
     (version "1.10")
     (source (origin
              (method url-fetch)
@@ -151,9 +152,9 @@ package provides the TrueType (TTF) files.")
      (license:x11-style
       "https://www-old.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
 
-(define-public freefont-ttf
+(define-public font-gnu-freefont-ttf
   (package
-    (name "freefont-ttf")
+    (name "font-gnu-freefont-ttf")
     (version "20100919")
     (source (origin
              (method url-fetch)
@@ -203,9 +204,74 @@ package provides the TrueType (TTF) files.")
 10646/Unicode UCS (Universal Character Set).")
    (license license:gpl3+)))
 
-(define-public terminus-font
+(define-public font-liberation
   (package
-    (name "terminus-font")
+    (name "font-liberation")
+    (version "2.00.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://fedorahosted.org/releases/l/i/"
+                                  "liberation-fonts/liberation-fonts-ttf-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "010m4zfqan4w04b6bs9pm3gapn9hsb18bmwwgp2p6y6idj52g43q"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+
+         (let ((tar      (string-append (assoc-ref %build-inputs "tar")
+                                        "/bin/tar"))
+               (PATH     (string-append (assoc-ref %build-inputs "gzip")
+                                        "/bin"))
+               (font-dir (string-append %output "/share/fonts/truetype"))
+               (doc-dir  (string-append %output "/share/doc/" ,name)))
+           (setenv "PATH" PATH)
+           (system* tar "xvf" (assoc-ref %build-inputs "source"))
+           (mkdir-p font-dir)
+           (mkdir-p doc-dir)
+           (chdir (string-append "liberation-fonts-ttf-" ,version))
+           (for-each (lambda (ttf)
+                       (copy-file ttf
+                                  (string-append font-dir "/"
+                                                 (basename ttf))))
+                     (find-files "." "\\.ttf$"))
+           (for-each (lambda (doc)
+                       (copy-file doc
+                                  (string-append doc-dir "/"
+                                                 (basename doc))))
+                     '("AUTHORS" "ChangeLog" "LICENSE" "README" "TODO"))))))
+    (native-inputs
+     `(("source" ,source)
+       ("tar" ,tar)
+       ("gzip" ,gzip)))
+    (home-page "https://fedorahosted.org/liberation-fonts/")
+    (synopsis
+     "Fonts compatible with Arial, Times New Roman, and Courier New")
+    (description
+     "The Liberation font family aims at metric compatibility with
+Arial, Times New Roman, and Courier New.
+
+There are three sets:
+
+- Sans (a substitute for Arial, Albany, Helvetica, Nimbus Sans L, and
+Bitstream Vera Sans);
+
+- Serif (a substitute for Times New Roman, Thorndale, Nimbus Roman, and
+Bitstream Vera Serif);
+
+- Mono (a substitute for Courier New, Cumberland, Courier, Nimbus Mono L,
+and Bitstream Vera Sans Mono).
+
+The Liberation Fonts are sponsored by Red Hat.")
+    (license license:silofl1.1)))
+
+(define-public font-terminus
+  (package
+    (name "font-terminus")
     (version "4.39")
     (source
       (origin
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 5ce87ae842..39e541b884 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -27,14 +27,14 @@
 (define-public freeipmi
   (package
     (name "freeipmi")
-    (version "1.4.5")
+    (version "1.4.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "033zakrk3kvi4y41kslicr90b3yb2kj052cl6nbja7ybn70y9nkz"))))
+               "1j33b2spj1vzjf1ymfrgka5h7imijmdwg9jdjfb92b2ccld9jj6l"))))
     (build-system gnu-build-system)
     (inputs
      `(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index e79be3fa49..db878b033d 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -168,7 +168,8 @@ scriptable with Guile.")
                      (let ((prefix (assoc-ref outputs "out")))
                        ;; Create directories that the makefile assumes exist.
                        (mkdir-p (string-append prefix "/bin"))
-                       (mkdir-p (string-append prefix "/share/applications"))))
+                       (mkdir-p (string-append prefix "/share/applications"))
+                       (mkdir-p (string-append prefix "/share/pixmaps"))))
                    ;; No configure script.
                    (alist-delete 'configure %standard-phases))))
        #:tests? #f)) ;; No check target.
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index aeedd23916..a0c18eac93 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -74,7 +74,10 @@ provided as well as the framework to add new color models and data types.")
                 "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(;; More than just the one test disabled below now fails; disable them
+       ;; all according to the rationale given below.
+       #:tests? #f
+       #:phases
        (alist-cons-before
         'build 'pre-build
         (lambda _
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 94f03cb1ec..17a6d4fd3c 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -31,7 +31,8 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages fontutils)
-  #:use-module (gnu packages guile))
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages xdisorg))
 
 (define-public glu
   (package
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index be2924c606..486cdb6add 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -22,6 +22,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
@@ -37,6 +38,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages file)
+  #:use-module (gnu packages which)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages m4)
 
@@ -54,8 +56,7 @@
 (define dbus
   (package
     (name "dbus")
-    (version "1.8.8")
-    (replacement dbus-1.8.10)                     ;fix for CVE-2014-7824
+    (version "1.8.10")
     (source (origin
              (method url-fetch)
              (uri
@@ -63,7 +64,7 @@
                              version ".tar.gz"))
              (sha256
               (base32
-               "1zfi5grrlryppgrl23im82cqw6l9fk1wlc2ayvzx0yd994v2dayz"))
+               "13mgvwigm931r8n9363imnn0vn6dvc0m322k3p8fs5c8nvyqggqh"))
              (patches (list (search-patch "dbus-localstatedir.patch")))))
     (build-system gnu-build-system)
     (arguments
@@ -114,35 +115,23 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
 shared NFS home directories.")
     (license license:gpl2+)))                     ; or Academic Free License 2.1
 
-(define-public dbus-1.8.10
-  (let ((real-version "1.8.10"))
-    (package (inherit dbus)
-      (source (origin
-                (method url-fetch)
-                (uri
-                 (string-append "http://dbus.freedesktop.org/releases/dbus/dbus-"
-                                real-version ".tar.gz"))
-                (sha256
-                 (base32
-                  "13mgvwigm931r8n9363imnn0vn6dvc0m322k3p8fs5c8nvyqggqh"))
-                (patches (list (search-patch "dbus-localstatedir.patch")))))
-      (replacement #f))))
-
 (define glib
   (package
    (name "glib")
-   (version "2.40.0")
+   (version "2.40.2")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
                                 name "/" (string-take version 4) "/"
                                 name "-" version ".tar.xz"))
             (sha256
-             (base32 "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"))
+             (base32
+              "0ykcf99mhpkza3xwa3k79vgfml8mqiac9044802yi5q8jpr8mzz8"))
             (patches (list (search-patch "glib-tests-homedir.patch")
                            (search-patch "glib-tests-desktop.patch")
                            (search-patch "glib-tests-prlimit.patch")
-                           (search-patch "glib-tests-timer.patch")))))
+                           (search-patch "glib-tests-timer.patch")
+                           (search-patch "glib-tests-gapplication.patch")))))
    (build-system gnu-build-system)
    (outputs '("out"           ; everything
               "bin"           ; glib-mkenums, gtester, etc.; depends on Python
@@ -233,6 +222,11 @@ dynamic loading, and an object system.")
      `(;; In practice, GIR users will need libffi when using
        ;; gobject-introspection.
        ("libffi" ,libffi)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "GI_TYPELIB_PATH")
+            (directories '("lib/girepository-1.0")))))
+    (search-paths native-search-paths)
     (arguments
      `(#:phases
         (alist-cons-before
@@ -430,3 +424,85 @@ has an ease of use unmatched by other C++ callback libraries.")
      "Glibmm provides a C++ programming interface to the part of GLib that are
 useful for C++.")
     (license license:lgpl2.1+)))
+
+(define-public python2-pygobject-2
+  (package
+    (name "python2-pygobject")
+    ;; This was the last version to declare the 2.0 platform number, i.e. its
+    ;; pkg-config files were named pygobject-2.0.pc
+    (version "2.28.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/pygobject/"
+                           (version-major+minor version)
+                           "/pygobject-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv"))
+       (patches
+        (list (search-patch
+               "python2-pygobject-2-gi-info-type-error-domain.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)
+       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
+       ("pkg-config" ,pkg-config)
+       ("dbus" ,dbus)))                 ;for tests
+    (inputs
+     `(("python" ,python-2)
+       ("glib"   ,glib)
+       ("python2-py2cairo" ,python2-py2cairo)
+       ("gobject-introspection" ,gobject-introspection)))
+    (propagated-inputs
+     `(("libffi" ,libffi)))             ;mentioned in pygobject-2.0.pc
+    (arguments
+     `(#:tests? #f                      ;segfaults during tests
+       #:configure-flags '("LIBS=-lcairo-gobject")))
+    (home-page "https://pypi.python.org/pypi/PyGObject")
+    (synopsis "Python bindings for GObject")
+    (description
+     "Python bindings for GLib, GObject, and GIO.")
+    (license license:lgpl2.1+)))
+
+(define-public python-pygobject
+  (package
+    (name "python-pygobject")
+    (version "3.12.2")                  ;last version that works with
+                                        ;gobject-introspection 1.38
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/pygobject/"
+                           (version-major+minor version)
+                           "/pygobject-" version ".tar.xz"))
+       (sha256
+        (base32
+         "08m5yad1hjdax4g39w6lgjk4124mcwpa8fc5iyvb8nygk8s3syky"))))
+    ;; 3.14.0: 0m1d75iwxa6k1xbkn6c6yq5r10pxnf7i5c2a5yvwsnab7ylzz7kp
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)
+       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python" ,python)
+       ("glib"   ,glib)
+       ("python-pycairo" ,python-pycairo)
+       ("gobject-introspection" ,gobject-introspection)
+       ("libffi" ,libffi)))
+    (arguments
+     ;; TODO: failing tests: test_native_calls_async
+     ;; test_native_calls_async_errors test_native_calls_sync
+     ;; test_native_calls_sync_errors test_python_calls_async
+     ;; test_python_calls_async_error test_python_calls_async_error_result
+     ;; test_python_calls_sync test_python_calls_sync_errors
+     ;; test_python_calls_sync_noargs test_callback_user_data_middle_none
+     ;; test_callback_user_data_middle_single
+     ;; test_callback_user_data_middle_tuple
+     '(#:tests? #f))
+    (home-page "https://pypi.python.org/pypi/PyGObject")
+    (synopsis "Python bindings for GObject")
+    (description
+     "Python bindings for GLib, GObject, and GIO.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm
index d43caf4f54..f7377def0a 100644
--- a/gnu/packages/global.scm
+++ b/gnu/packages/global.scm
@@ -28,14 +28,14 @@
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.3.2")
+    (version "6.3.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "07iifpz00ch3drlscvk5v12j7bckwv6pk8040y81s1x14b0gf220"))))
+               "0j828dg2cjf77rx71cw68jpk7jl119v6nyb0kyvirr5i1860j1fx"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libtool" ,libtool)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5fa892ad07..1d3ce25421 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -46,7 +46,8 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg))
 
 (define-public brasero
   (package
@@ -1119,6 +1120,51 @@ widgets built in the loading process.")
 controls using the Bonobo component framework.")
     (license license:lgpl2.0+)))
 
+(define-public libwnck
+  (package
+    (name "libwnck")
+    (version "3.14.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32 "074jww04z8g9r1acndqap79wx4kbm3rpkf4lcg1v82b66iv0027m"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     `(("gtk+" ,gtk+)
+       ("libxres" ,libxres)
+       ("startup-notification" ,startup-notification)))
+    (home-page "https://developer.gnome.org/libwnck/")
+    (synopsis "Window Navigator Construction Kit")
+    (description
+     "Libwnck is the Window Navigator Construction Kit, a library for use in
+writing pagers, tasklists, and more generally applications that are dealing
+with window management.  It tries hard to respect the Extended Window Manager
+Hints specification (EWMH).")
+    (license license:lgpl2.0+)))
+
+;; stable version for gtk2, required by xfwm4.
+(define-public libwnck-1
+  (package (inherit libwnck)
+    (name "libwnck")
+    (version "2.30.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "15713yl0f8f3p99jzqqfmbicrdswd3vwpx7r3bkf1bgh6d9lvs4b"))))
+    (propagated-inputs
+     `(("gtk+" ,gtk+-2)
+       ("libxres" ,libxres)
+       ("startup-notification" ,startup-notification)))))
 
 (define-public goffice
   (package
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index d9f83477df..249971becd 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -103,14 +103,14 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.37")
+   (version "0.9.38")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1p3wnhr43v6vqdgl86r76298wjfxz2ihj9zh9kpz8l7va30br357"))))
+              "08g7p4l0p2fsjj8ayl68zq1bqgrn0pck19bm8yd7k61whvfv9wld"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index ecbb17895c..1ef8fe7e3a 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -39,7 +39,7 @@
 (define-public libgpg-error
   (package
     (name "libgpg-error")
-    (version "1.13")
+    (version "1.17")
     (source
      (origin
       (method url-fetch)
@@ -47,7 +47,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "02lv5h865f8if391xjp3njg04k0l4x2pwjkcdbzcwilail1skazq"))))
+        "1dapxzxl1naghf342fwfc2w2f2c5hb9gr1a1s4n8dsqn26kybx1z"))))
     (build-system gnu-build-system)
     (home-page "http://gnupg.org")
     (synopsis "Library of error values for GnuPG components")
@@ -132,7 +132,7 @@ provided.")
 (define-public libksba
   (package
     (name "libksba")
-    (version "1.3.0")
+    (version "1.3.2")
     (source
      (origin
       (method url-fetch)
@@ -141,7 +141,7 @@ provided.")
             version ".tar.bz2"))
       (sha256
        (base32
-        "0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
+        "01l4hvcknk9nb4bvyb6aqaid19jg0wv3ik54j1b89hnzamwm75gb"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error)))
diff --git a/gnu/packages/gnutls.scm b/gnu/packages/gnutls.scm
index fd1b38d5ae..7ac7a9e304 100644
--- a/gnu/packages/gnutls.scm
+++ b/gnu/packages/gnutls.scm
@@ -36,7 +36,7 @@
 (define-public libtasn1
   (package
     (name "libtasn1")
-    (version "4.1")
+    (version "4.2")
     (source
      (origin
       (method url-fetch)
@@ -44,7 +44,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "00gkyppzw6fqi5mnc3d8paf7bp6nfhi9213481awy07sviqnbvk0"))))
+        "1fydwh5hlnmprdzmzn4kiqb939br59qv1001k7ah5b626v5l2fv9"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
 
diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm
index 8fb21eee90..071ffb4b84 100644
--- a/gnu/packages/gsasl.scm
+++ b/gnu/packages/gsasl.scm
@@ -48,13 +48,13 @@
 (define-public gss
   (package
    (name "gss")
-   (version "1.0.2")
+   (version "1.0.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gss/gss-" version
                                 ".tar.gz"))
             (sha256 (base32
-                     "1qa8lbkzi6ilfggx7mchfzjnchvhwi68rck3jf9j4425ncz7zsd9"))))
+                     "1syyvh3k659xf1hdv9pilnnhbbhs6vfapayp4xgdcc8mfgf9v4gz"))))
    (build-system gnu-build-system)
    (inputs `(("nettle" ,nettle)
              ("shishi" ,shishi)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 15d6ab441b..8646397aad 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -25,6 +25,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages ghostscript)
@@ -38,7 +39,8 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg))
 
 (define-public atk
   (package
@@ -272,10 +274,11 @@ printing and other features typical of a source code editor.")
              (base32
               "05s6ksvy1yan6h6zny9n3bmvygcnzma6ljl6i0z9cci2xg116c8q"))))
    (build-system gnu-build-system)
-   (inputs
+   (propagated-inputs ; required by gdk-pixbuf-2.0.pc
     `(("glib" ,glib)
-      ("libjpeg" ,libjpeg)
-      ("libpng" ,libpng)
+      ("libpng" ,libpng)))
+   (inputs
+    `(("libjpeg" ,libjpeg)
       ("libtiff" ,libtiff)))
    (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -634,3 +637,109 @@ extensive documentation, including API reference and a tutorial.")
        ("atkmm" ,atkmm)
        ("gtk+" ,gtk+-2)
        ("glibmm" ,glibmm)))))
+
+(define-public python-pycairo
+  (package
+    (name "python-pycairo")
+    (version "1.10.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://cairographics.org/releases/pycairo-"
+                          version ".tar.bz2"))
+      (sha256
+       (base32
+        "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs                  ;pycairo.pc references cairo
+     `(("cairo" ,cairo)))
+    (arguments
+     `(#:tests? #f
+       #:phases (alist-cons-before
+                 'build 'configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (zero? (system* "./waf" "configure"
+                                   (string-append "--prefix="
+                                                  (assoc-ref outputs "out")))))
+                 (alist-replace
+                  'build
+                  (lambda _
+                    (zero? (system* "./waf" "build")))
+                  (alist-replace
+                   'install
+                   (lambda _
+                     (zero? (system* "./waf" "install")))
+                   %standard-phases)))))
+    (home-page "http://cairographics.org/pycairo/")
+    (synopsis "Python bindings for cairo")
+    (description
+     "Pycairo is a set of Python bindings for the Cairo graphics library.")
+    (license license:lgpl3+)))
+
+(define-public python2-py2cairo
+  (package (inherit python-pycairo)
+    (name "python2-py2cairo")
+    (version "1.10.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://cairographics.org/releases/py2cairo-"
+                          version ".tar.bz2"))
+      (sha256
+       (base32
+        "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k"))))
+    (arguments
+     `(#:python ,python-2
+       ,@(package-arguments python-pycairo)))
+    ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
+    (license (list license:lgpl2.1 license:mpl1.1))))
+
+(define-public python2-pygtk
+  (package
+    (name "python2-pygtk")
+    (version "2.24.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://ftp.gnome.org/pub/GNOME/sources"
+                          "/pygtk/" (version-major+minor version)
+                          "/pygtk-" version ".tar.bz2"))
+      (sha256
+       (base32
+        "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python" ,python-2)
+       ("glib"   ,glib)))
+    (propagated-inputs
+     `(("python-pycairo"   ,python2-py2cairo)    ;loaded at runtime
+       ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
+       ("gtk+"             ,gtk+-2)))
+    (arguments
+     `(#:tests? #f
+       #:phases (alist-cons-after
+                 'install 'install-pth
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   ;; pygtk's modules are stored in a subdirectory of python's
+                   ;; site-packages directory.  Add a .pth file so that python
+                   ;; will add that subdirectory to its module search path.
+                   (let* ((out    (assoc-ref outputs "out"))
+                          (site   (string-append out "/lib/python"
+                                                 ,(version-major+minor
+                                                   (package-version python-2))
+                                                 "/site-packages")))
+                     (call-with-output-file (string-append site "/pygtk.pth")
+                       (lambda (port)
+                         (format port "gtk-2.0~%")))))
+                 %standard-phases)))
+    (home-page "http://www.pygtk.org/")
+    (synopsis "Python bindings for GTK+")
+    (description
+     "PyGTK allows you to write full featured GTK programs in Python.  It is
+targetted at GTK 2.x, and can be used in conjunction with gnome-python to
+write GNOME applications.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf
index e14994c38b..d50f5ca246 100644
--- a/gnu/packages/linux-libre-i686.conf
+++ b/gnu/packages/linux-libre-i686.conf
@@ -1,11 +1,12 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.17.0-gnu Kernel Configuration
+# Linux/x86 3.18.0-gnu Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
 CONFIG_X86=y
 CONFIG_INSTRUCTION_DECODER=y
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
 CONFIG_OUTPUT_FORMAT="elf32-i386"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
 CONFIG_LOCKDEP_SUPPORT=y
@@ -127,6 +128,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
 #
 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
 CONFIG_RCU_FANOUT_LEAF=16
@@ -139,7 +141,6 @@ CONFIG_RCU_FAST_NO_HZ=y
 CONFIG_LOG_BUF_SHIFT=17
 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -184,6 +185,7 @@ CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
 CONFIG_SGETMASK_SYSCALL=y
@@ -201,8 +203,10 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+CONFIG_BPF_SYSCALL=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
 # CONFIG_EMBEDDED is not set
 CONFIG_HAVE_PERF_EVENTS=y
@@ -289,6 +293,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
@@ -361,12 +366,15 @@ CONFIG_FREEZER=y
 #
 CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_MPPARSE=y
 # CONFIG_X86_BIGSMP is not set
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
 CONFIG_X86_INTEL_MID=y
 CONFIG_X86_INTEL_LPSS=y
+CONFIG_IOSF_MBI=m
+CONFIG_IOSF_MBI_DEBUG=y
 # CONFIG_X86_RDC321X is not set
 # CONFIG_X86_32_NON_STANDARD is not set
 CONFIG_X86_32_IRIS=m
@@ -499,6 +507,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
 CONFIG_MEMORY_HOTREMOVE=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_MEMORY_BALLOON=y
 CONFIG_BALLOON_COMPACTION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
@@ -803,7 +812,6 @@ CONFIG_BINFMT_AOUT=m
 CONFIG_BINFMT_MISC=m
 CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_IOSF_MBI=m
 CONFIG_PMC_ATOM=y
 CONFIG_NET=y
 
@@ -847,6 +855,8 @@ CONFIG_IP_PIMSM_V2=y
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
@@ -872,6 +882,7 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -908,7 +919,7 @@ CONFIG_NET_PTP_CLASSIFY=y
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
+CONFIG_BRIDGE_NETFILTER=m
 
 #
 # Core Netfilter Configuration
@@ -967,6 +978,7 @@ CONFIG_NFT_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1070,6 +1082,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -1098,6 +1111,7 @@ CONFIG_IP_VS_RR=m
 CONFIG_IP_VS_WRR=m
 CONFIG_IP_VS_LC=m
 CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
 CONFIG_IP_VS_LBLC=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_DH=m
@@ -1126,10 +1140,13 @@ CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
 CONFIG_NF_TABLES_ARP=m
 CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1163,10 +1180,13 @@ CONFIG_NF_DEFRAG_IPV6=m
 CONFIG_NF_CONNTRACK_IPV6=m
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
 CONFIG_NF_LOG_IPV6=m
 CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1266,6 +1286,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
@@ -1373,6 +1394,7 @@ CONFIG_BATMAN_ADV_MCAST=y
 CONFIG_OPENVSWITCH=m
 CONFIG_OPENVSWITCH_GRE=y
 CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GENEVE=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
@@ -1447,6 +1469,7 @@ CONFIG_CAN_TSCAN1=m
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN_PLATFORM=m
 CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_M_CAN=m
 CONFIG_CAN_CC770=m
 CONFIG_CAN_CC770_ISA=m
 CONFIG_CAN_CC770_PLATFORM=m
@@ -1657,6 +1680,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1784,6 +1808,7 @@ CONFIG_MTD_NAND_DENALI_PCI=m
 CONFIG_MTD_NAND_DENALI_DT=m
 CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018
 CONFIG_MTD_NAND_GPIO=m
+# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
 CONFIG_MTD_NAND_IDS=m
 CONFIG_MTD_NAND_RICOH=m
 CONFIG_MTD_NAND_DISKONCHIP=m
@@ -1807,6 +1832,7 @@ CONFIG_MTD_ONENAND_2X_PROGRAM=y
 CONFIG_MTD_LPDDR=m
 CONFIG_MTD_QINFO_PROBE=m
 CONFIG_MTD_SPI_NOR=m
+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_BEB_LIMIT=20
@@ -1979,6 +2005,7 @@ CONFIG_VMWARE_VMCI=m
 # Intel MIC Card Driver
 #
 CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1990,6 +2017,7 @@ CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -2077,6 +2105,7 @@ CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_SCSI_FLASHPOINT=y
 CONFIG_VMWARE_PVSCSI=m
+CONFIG_XEN_SCSI_FRONTEND=m
 CONFIG_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
@@ -2295,6 +2324,7 @@ CONFIG_TARGET_CORE=m
 CONFIG_TCM_IBLOCK=m
 CONFIG_TCM_FILEIO=m
 CONFIG_TCM_PSCSI=m
+CONFIG_TCM_USER=m
 CONFIG_LOOPBACK_TARGET=m
 CONFIG_TCM_FC=m
 CONFIG_ISCSI_TARGET=m
@@ -2422,6 +2452,8 @@ CONFIG_NET_DSA_MV88E6060=m
 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_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
@@ -2433,6 +2465,8 @@ CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
 CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
 CONFIG_NET_VENDOR_ALTEON=y
 CONFIG_ACENIC=m
 # CONFIG_ACENIC_OMIT_TIGON_I is not set
@@ -2523,6 +2557,8 @@ CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
+CONFIG_FM10K_VXLAN=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
@@ -2579,6 +2615,7 @@ CONFIG_QLCNIC_VXLAN=y
 CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
 CONFIG_8139CP=m
@@ -2668,6 +2705,7 @@ CONFIG_MICREL_PHY=m
 CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
+CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_MICREL_KS8995MA=m
 CONFIG_PLIP=m
 CONFIG_PPP=y
@@ -2764,8 +2802,10 @@ CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 CONFIG_ATH9K_DEBUGFS=y
 CONFIG_ATH9K_STATION_STATISTICS=y
+# CONFIG_ATH9K_DYNACK is not set
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_CHANNEL_CONTEXT=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2852,6 +2892,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
+CONFIG_IWLWIFI_UAPSD=y
 
 #
 # Debugging Options
@@ -2926,6 +2967,8 @@ CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8723BE=m
 CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTLWIFI_PCI=m
@@ -3346,6 +3389,7 @@ CONFIG_INPUT_AD714X_SPI=m
 CONFIG_INPUT_ARIZONA_HAPTICS=m
 CONFIG_INPUT_BMA150=m
 CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MAX77693_HAPTIC=m
 CONFIG_INPUT_MAX8925_ONKEY=m
 CONFIG_INPUT_MAX8997_HAPTIC=m
 CONFIG_INPUT_MC13783_PWRBUTTON=m
@@ -3369,6 +3413,7 @@ CONFIG_INPUT_TWL4030_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_VIBRA=m
 CONFIG_INPUT_TWL6040_VIBRA=m
 CONFIG_INPUT_UINPUT=y
+CONFIG_INPUT_PALMAS_PWRBUTTON=m
 CONFIG_INPUT_PCF50633_PMU=m
 CONFIG_INPUT_PCF8574=m
 CONFIG_INPUT_PWM_BEEPER=m
@@ -3386,6 +3431,8 @@ CONFIG_INPUT_CMA3000_I2C=m
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
 CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
 CONFIG_INPUT_SOC_BUTTON_ARRAY=m
+CONFIG_INPUT_DRV260X_HAPTICS=m
+CONFIG_INPUT_DRV2667_HAPTICS=m
 
 #
 # Hardware I/O ports
@@ -3464,6 +3511,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
 CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_FINTEK=m
 
 #
 # Non-8250 serial port support
@@ -3553,6 +3601,8 @@ CONFIG_TCG_ST33_I2C=m
 CONFIG_TCG_XEN=m
 CONFIG_TELCLOCK=m
 CONFIG_DEVPORT=y
+CONFIG_XILLYBUS=m
+CONFIG_XILLYBUS_PCIE=m
 
 #
 # I2C support
@@ -3736,6 +3786,7 @@ 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
@@ -3781,6 +3832,7 @@ CONFIG_GPIO_RDC321X=m
 # SPI GPIO expanders:
 #
 CONFIG_GPIO_MAX7301=m
+CONFIG_GPIO_MCP23S08=m
 CONFIG_GPIO_MC33880=m
 
 #
@@ -3954,6 +4006,7 @@ CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
 CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_MENF21BMC_HWMON=m
 CONFIG_SENSORS_ADCXX=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM70=m
@@ -4046,12 +4099,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
 CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
 
 #
 # Texas Instruments thermal drivers
@@ -4066,10 +4121,13 @@ CONFIG_WATCHDOG_CORE=y
 CONFIG_SOFT_WATCHDOG=m
 CONFIG_DA9052_WATCHDOG=m
 CONFIG_DA9055_WATCHDOG=m
+CONFIG_DA9063_WATCHDOG=m
+CONFIG_MENF21BMC_WATCHDOG=m
 CONFIG_WM831X_WATCHDOG=m
 CONFIG_WM8350_WATCHDOG=m
 CONFIG_XILINX_WATCHDOG=m
 CONFIG_DW_WATCHDOG=m
+CONFIG_RN5T618_WATCHDOG=m
 CONFIG_TWL4030_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
@@ -4203,6 +4261,7 @@ CONFIG_MFD_MAX8907=m
 CONFIG_MFD_MAX8925=y
 CONFIG_MFD_MAX8997=y
 CONFIG_MFD_MAX8998=y
+CONFIG_MFD_MENF21BMC=m
 CONFIG_EZX_PCAP=y
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
@@ -4214,6 +4273,7 @@ CONFIG_MFD_RDC321X=m
 CONFIG_MFD_RTSX_PCI=m
 CONFIG_MFD_RTSX_USB=m
 CONFIG_MFD_RC5T583=y
+CONFIG_MFD_RN5T618=m
 CONFIG_MFD_SEC_CORE=y
 CONFIG_MFD_SI476X_CORE=m
 CONFIG_MFD_SM501=m
@@ -4285,6 +4345,7 @@ CONFIG_REGULATOR_DA9210=m
 CONFIG_REGULATOR_DA9211=m
 CONFIG_REGULATOR_FAN53555=m
 CONFIG_REGULATOR_GPIO=m
+CONFIG_REGULATOR_ISL9305=m
 CONFIG_REGULATOR_ISL6271A=m
 CONFIG_REGULATOR_LP3971=m
 CONFIG_REGULATOR_LP3972=m
@@ -4304,6 +4365,7 @@ CONFIG_REGULATOR_MAX8997=m
 CONFIG_REGULATOR_MAX8998=m
 CONFIG_REGULATOR_MAX77686=m
 CONFIG_REGULATOR_MAX77693=m
+CONFIG_REGULATOR_MAX77802=m
 CONFIG_REGULATOR_MC13XXX_CORE=m
 CONFIG_REGULATOR_MC13783=m
 CONFIG_REGULATOR_MC13892=m
@@ -4311,7 +4373,9 @@ CONFIG_REGULATOR_PALMAS=m
 CONFIG_REGULATOR_PCAP=m
 CONFIG_REGULATOR_PCF50633=m
 CONFIG_REGULATOR_PFUZE100=m
+CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_RC5T583=m
+CONFIG_REGULATOR_RN5T618=m
 CONFIG_REGULATOR_S2MPA01=m
 CONFIG_REGULATOR_S2MPS11=m
 CONFIG_REGULATOR_S5M8767=m
@@ -4388,6 +4452,7 @@ CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_ITE_CIR=m
@@ -4547,11 +4612,13 @@ CONFIG_DVB_USB_GL861=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_USB_DRV=m
 CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
 
 #
 # Webcam, TV (analog/digital) USB devices
@@ -4565,8 +4632,9 @@ CONFIG_VIDEO_EM28XX_RC=m
 #
 # Software defined radio USB devices
 #
-CONFIG_USB_MSI2500=m
 CONFIG_USB_AIRSPY=m
+CONFIG_USB_HACKRF=m
+CONFIG_USB_MSI2500=m
 CONFIG_MEDIA_PCI_SUPPORT=y
 
 #
@@ -4592,6 +4660,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
 CONFIG_VIDEO_HEXIUM_ORION=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW68=m
 
 #
 # Media capture/analog/hybrid TV support
@@ -4615,11 +4684,13 @@ CONFIG_VIDEO_SAA7134=m
 CONFIG_VIDEO_SAA7134_ALSA=m
 CONFIG_VIDEO_SAA7134_RC=y
 CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
 CONFIG_VIDEO_SAA7164=m
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -4632,6 +4703,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
 CONFIG_DVB_PLUTO2=m
 CONFIG_DVB_DM1105=m
 CONFIG_DVB_PT1=m
+CONFIG_DVB_PT3=m
 CONFIG_MANTIS_CORE=m
 CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
@@ -4646,9 +4718,8 @@ CONFIG_SOC_CAMERA_PLATFORM=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 CONFIG_V4L_TEST_DRIVERS=y
-CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_VIVID=m
 CONFIG_VIDEO_MEM2MEM_TESTDEV=m
 
 #
@@ -4865,6 +4936,8 @@ CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
 
 #
 # Multistandard (satellite) frontends
@@ -4938,6 +5011,7 @@ CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
 CONFIG_DVB_RTL2832_SDR=m
 CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -4969,6 +5043,7 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
+CONFIG_DVB_TC90522=m
 
 #
 # Digital terrestrial only tuners/PLL
@@ -5022,7 +5097,6 @@ CONFIG_VGA_SWITCHEROO=y
 # Direct Rendering Manager
 #
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -5063,13 +5137,14 @@ CONFIG_DRM_AST=m
 # CONFIG_DRM_MGAG200 is not set
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
-CONFIG_DRM_BOCHS=m
+# CONFIG_DRM_BOCHS is not set
 
 #
 # Frame buffer Devices
 #
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
 CONFIG_FB_DDC=m
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
@@ -5243,7 +5318,7 @@ CONFIG_LOGO=y
 CONFIG_LOGO_LIBRE_CLUT224=y
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
@@ -5494,6 +5569,7 @@ CONFIG_SND_SOC_AK4554=m
 CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
+CONFIG_SND_SOC_CS35L32=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
@@ -5503,6 +5579,7 @@ CONFIG_SND_SOC_CS4271=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_MAX98090=m
 CONFIG_SND_SOC_PCM1681=m
 CONFIG_SND_SOC_PCM1792A=m
@@ -5519,6 +5596,10 @@ CONFIG_SND_SOC_SIGMADSP_I2C=m
 CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
 CONFIG_SND_SOC_SN95031=m
 CONFIG_SND_SOC_SPDIF=m
+CONFIG_SND_SOC_SSM2602=m
+CONFIG_SND_SOC_SSM2602_SPI=m
+CONFIG_SND_SOC_SSM2602_I2C=m
+CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
@@ -5539,6 +5620,7 @@ CONFIG_SND_SOC_WM8776=m
 CONFIG_SND_SOC_WM8804=m
 CONFIG_SND_SOC_WM8903=m
 CONFIG_SND_SOC_WM8962=m
+CONFIG_SND_SOC_WM8978=m
 CONFIG_SND_SOC_TPA6130A2=m
 CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
@@ -5601,6 +5683,7 @@ CONFIG_HID_NTRIG=m
 CONFIG_HID_ORTEK=m
 CONFIG_HID_PANTHERLORD=m
 CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PENMOUNT=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -5679,6 +5762,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 CONFIG_USB_C67X00_HCD=m
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -5701,13 +5785,11 @@ CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SL811_HCD_ISO=y
 CONFIG_USB_SL811_CS=m
 CONFIG_USB_R8A66597_HCD=m
-CONFIG_USB_RENESAS_USBHS_HCD=m
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
 CONFIG_USB_HCD_BCMA=m
 CONFIG_USB_HCD_SSB=m
 # CONFIG_USB_HCD_TEST_MODE is not set
-CONFIG_USB_RENESAS_USBHS=m
 
 #
 # USB Device Class drivers
@@ -5857,7 +5939,6 @@ CONFIG_USB_SERIAL_OMNINET=m
 CONFIG_USB_SERIAL_OPTICON=m
 CONFIG_USB_SERIAL_XSENS_MT=m
 CONFIG_USB_SERIAL_WISHBONE=m
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 CONFIG_USB_SERIAL_DEBUG=m
@@ -5901,9 +5982,6 @@ CONFIG_USB_XUSBATM=m
 #
 CONFIG_USB_PHY=y
 CONFIG_NOP_USB_XCEIV=m
-CONFIG_SAMSUNG_USBPHY=m
-CONFIG_SAMSUNG_USB2PHY=m
-CONFIG_SAMSUNG_USB3PHY=m
 CONFIG_USB_GPIO_VBUS=m
 CONFIG_TAHVO_USB=m
 CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y
@@ -5921,7 +5999,6 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
 CONFIG_USB_FOTG210_UDC=m
 CONFIG_USB_GR_UDC=m
 CONFIG_USB_R8A66597=m
-CONFIG_USB_RENESAS_USBHS_UDC=m
 CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
@@ -5948,6 +6025,8 @@ CONFIG_USB_F_SUBSET=m
 CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
+CONFIG_USB_F_UAC1=m
+CONFIG_USB_F_UVC=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -5988,6 +6067,7 @@ CONFIG_USB_G_DBGP=m
 # CONFIG_USB_G_DBGP_PRINTK is not set
 CONFIG_USB_G_DBGP_SERIAL=y
 CONFIG_USB_G_WEBCAM=m
+CONFIG_USB_LED_TRIG=y
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
@@ -6085,6 +6165,7 @@ CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_MAX8997=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
+CONFIG_LEDS_MENF21BMC=m
 
 #
 # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
@@ -6188,6 +6269,7 @@ CONFIG_RTC_DRV_MAX8925=m
 CONFIG_RTC_DRV_MAX8998=m
 CONFIG_RTC_DRV_MAX8997=m
 CONFIG_RTC_DRV_MAX77686=m
+CONFIG_RTC_DRV_MAX77802=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
@@ -6245,7 +6327,6 @@ CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_DA9052=m
 CONFIG_RTC_DRV_DA9055=m
 CONFIG_RTC_DRV_DA9063=m
-CONFIG_RTC_DRV_EFI=m
 CONFIG_RTC_DRV_STK17TA8=m
 CONFIG_RTC_DRV_M48T86=m
 CONFIG_RTC_DRV_M48T35=m
@@ -6348,11 +6429,11 @@ CONFIG_XEN_GRANT_DEV_ALLOC=m
 CONFIG_SWIOTLB_XEN=y
 CONFIG_XEN_TMEM=m
 CONFIG_XEN_PCIDEV_BACKEND=m
+CONFIG_XEN_SCSI_BACKEND=m
 CONFIG_XEN_PRIVCMD=m
 CONFIG_XEN_ACPI_PROCESSOR=y
 CONFIG_XEN_HAVE_PVMMU=y
 CONFIG_STAGING=y
-CONFIG_ET131X=m
 CONFIG_SLICOSS=m
 CONFIG_PRISM2_USB=m
 CONFIG_COMEDI=m
@@ -6360,12 +6441,10 @@ CONFIG_COMEDI=m
 CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048
 CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480
 CONFIG_COMEDI_MISC_DRIVERS=y
-CONFIG_COMEDI_KCOMEDILIB=m
 CONFIG_COMEDI_BOND=m
 CONFIG_COMEDI_TEST=m
 CONFIG_COMEDI_PARPORT=m
 CONFIG_COMEDI_SERIAL2002=m
-CONFIG_COMEDI_SKEL=m
 CONFIG_COMEDI_SSV_DNP=m
 CONFIG_COMEDI_ISA_DRIVERS=y
 CONFIG_COMEDI_PCL711=m
@@ -6480,12 +6559,13 @@ CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
 CONFIG_COMEDI_USB_DRIVERS=y
 CONFIG_COMEDI_DT9812=m
+CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
 CONFIG_COMEDI_USBDUXFAST=m
 CONFIG_COMEDI_USBDUXSIGMA=m
 CONFIG_COMEDI_VMK80XX=m
 CONFIG_COMEDI_8255=m
-CONFIG_COMEDI_FC=m
+CONFIG_COMEDI_KCOMEDILIB=m
 CONFIG_COMEDI_AMPLC_DIO200=m
 CONFIG_COMEDI_AMPLC_PC236=m
 CONFIG_COMEDI_DAS08=m
@@ -6505,13 +6585,10 @@ CONFIG_RTL8192E=m
 CONFIG_R8712U=m
 CONFIG_R8188EU=m
 CONFIG_88EU_AP_MODE=y
-CONFIG_R8192EE=m
 CONFIG_R8723AU=m
 CONFIG_8723AU_AP_MODE=y
 CONFIG_8723AU_BT_COEXIST=y
-CONFIG_R8821AE=m
 CONFIG_RTS5208=m
-# CONFIG_RTS5208_DEBUG is not set
 CONFIG_LINE6_USB=m
 # CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
 CONFIG_VT6655=m
@@ -6561,13 +6638,8 @@ CONFIG_AD7746=m
 #
 # Direct Digital Synthesis
 #
-CONFIG_AD5930=m
 CONFIG_AD9832=m
 CONFIG_AD9834=m
-CONFIG_AD9850=m
-CONFIG_AD9852=m
-CONFIG_AD9910=m
-CONFIG_AD9951=m
 
 #
 # Digital gyroscope sensors
@@ -6647,7 +6719,6 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
 CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
 CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
 CONFIG_STAGING_MEDIA=y
-CONFIG_DVB_AS102=m
 CONFIG_I2C_BCM2048=m
 CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
@@ -6691,8 +6762,6 @@ CONFIG_LNET=m
 CONFIG_LNET_MAX_PAYLOAD=1048576
 CONFIG_LNET_SELFTEST=m
 CONFIG_LNET_XPRT_IB=m
-CONFIG_XILLYBUS=m
-CONFIG_XILLYBUS_PCIE=m
 CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
@@ -6761,6 +6830,7 @@ 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
@@ -6769,11 +6839,14 @@ CONFIG_COMMON_CLK=y
 # Common Clock Framework
 #
 CONFIG_COMMON_CLK_WM831X=m
+CONFIG_COMMON_CLK_MAX_GEN=y
 CONFIG_COMMON_CLK_MAX77686=m
+CONFIG_COMMON_CLK_MAX77802=m
 CONFIG_COMMON_CLK_SI5351=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=m
 CONFIG_COMMON_CLK_PALMAS=m
+# CONFIG_COMMON_CLK_PXA is not set
 
 #
 # Hardware Spinlock drivers
@@ -6787,6 +6860,7 @@ CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
 CONFIG_DW_APB_TIMER=y
+# CONFIG_ATMEL_PIT is not set
 # CONFIG_SH_TIMER_CMT is not set
 # CONFIG_SH_TIMER_MTU2 is not set
 # CONFIG_SH_TIMER_TMU is not set
@@ -6808,6 +6882,10 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # Rpmsg drivers
 #
+
+#
+# SOC (System On Chip) specific Drivers
+#
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -6833,6 +6911,7 @@ CONFIG_EXTCON_MAX14577=m
 CONFIG_EXTCON_MAX77693=m
 CONFIG_EXTCON_MAX8997=m
 CONFIG_EXTCON_PALMAS=m
+CONFIG_EXTCON_RT8973A=m
 CONFIG_EXTCON_SM5502=m
 CONFIG_MEMORY=y
 CONFIG_IIO=m
@@ -6847,6 +6926,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # Accelerometers
 #
 CONFIG_BMA180=m
+CONFIG_BMC150_ACCEL=m
 CONFIG_HID_SENSOR_ACCEL_3D=m
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -6876,6 +6956,7 @@ CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
 CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL6030_GPADC=m
@@ -6937,6 +7018,7 @@ CONFIG_ADIS16130=m
 CONFIG_ADIS16136=m
 CONFIG_ADIS16260=m
 CONFIG_ADXRS450=m
+CONFIG_BMG160=m
 CONFIG_HID_SENSOR_GYRO_3D=m
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
@@ -6962,6 +7044,7 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
 # Light sensors
 #
 CONFIG_ADJD_S311=m
+CONFIG_AL3320A=m
 CONFIG_APDS9300=m
 CONFIG_CM32181=m
 CONFIG_CM36651=m
@@ -7044,6 +7127,8 @@ CONFIG_PWM=y
 CONFIG_PWM_SYSFS=y
 CONFIG_PWM_LP3943=m
 CONFIG_PWM_LPSS=m
+CONFIG_PWM_LPSS_PCI=m
+CONFIG_PWM_LPSS_PLATFORM=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_IPACK_BUS=m
@@ -7162,6 +7247,7 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=m
 CONFIG_FUSE_FS=y
 CONFIG_CUSE=m
+CONFIG_OVERLAY_FS=m
 
 #
 # Caches
@@ -7317,6 +7403,7 @@ CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -7488,6 +7575,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_TIMER_STATS=y
 
 #
@@ -7592,7 +7680,7 @@ CONFIG_TEST_KSTRTOX=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
-CONFIG_TEST_MODULE=m
+CONFIG_TEST_LKM=m
 CONFIG_TEST_USER_COPY=m
 CONFIG_TEST_BPF=m
 CONFIG_TEST_FIRMWARE=m
@@ -7663,6 +7751,7 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
 CONFIG_SECURITY_SMACK=y
+# CONFIG_SECURITY_SMACK_BRINGUP is not set
 CONFIG_SECURITY_TOMOYO=y
 CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
 CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
@@ -7676,8 +7765,8 @@ CONFIG_SECURITY_YAMA=y
 CONFIG_SECURITY_YAMA_STACKED=y
 CONFIG_INTEGRITY=y
 CONFIG_INTEGRITY_SIGNATURE=y
-CONFIG_INTEGRITY_AUDIT=y
 CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_INTEGRITY_AUDIT=y
 CONFIG_IMA=y
 CONFIG_IMA_MEASURE_PCR_IDX=10
 CONFIG_IMA_LSM_RULES=y
@@ -7693,10 +7782,6 @@ CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
 CONFIG_EVM=y
-
-#
-# EVM options
-#
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
 # CONFIG_DEFAULT_SECURITY_SELINUX is not set
@@ -7738,6 +7823,7 @@ CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_ABLK_HELPER=m
diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf
index fcad0654b5..e7ecc6829e 100644
--- a/gnu/packages/linux-libre-x86_64.conf
+++ b/gnu/packages/linux-libre-x86_64.conf
@@ -1,11 +1,12 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.17.0-gnu Kernel Configuration
+# Linux/x86 3.18.0-gnu Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
 CONFIG_X86=y
 CONFIG_INSTRUCTION_DECODER=y
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
 CONFIG_OUTPUT_FORMAT="elf64-x86-64"
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
 CONFIG_LOCKDEP_SUPPORT=y
@@ -132,6 +133,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
 #
 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
 CONFIG_RCU_USER_QS=y
@@ -152,8 +154,6 @@ 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_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
-CONFIG_ARCH_USES_NUMA_PROT_NONE=y
 CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
 CONFIG_NUMA_BALANCING=y
 CONFIG_CGROUPS=y
@@ -200,6 +200,7 @@ CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
 CONFIG_SGETMASK_SYSCALL=y
@@ -217,8 +218,10 @@ CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
+CONFIG_BPF_SYSCALL=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
 CONFIG_PCI_QUIRKS=y
 # CONFIG_EMBEDDED is not set
 CONFIG_HAVE_PERF_EVENTS=y
@@ -309,6 +312,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_BLK_DEV_BSG=y
@@ -381,6 +385,7 @@ CONFIG_FREEZER=y
 #
 CONFIG_ZONE_DMA=y
 CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_X2APIC=y
 CONFIG_X86_MPPARSE=y
 CONFIG_X86_EXTENDED_PLATFORM=y
@@ -389,6 +394,8 @@ CONFIG_X86_NUMACHIP=y
 # CONFIG_X86_UV is not set
 # CONFIG_X86_GOLDFISH is not set
 CONFIG_X86_INTEL_LPSS=y
+CONFIG_IOSF_MBI=m
+CONFIG_IOSF_MBI_DEBUG=y
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
 CONFIG_HYPERVISOR_GUEST=y
@@ -496,6 +503,7 @@ CONFIG_MEMORY_HOTREMOVE=y
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_MEMORY_BALLOON=y
 CONFIG_BALLOON_COMPACTION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
@@ -782,7 +790,6 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
 CONFIG_SYSVIPC_COMPAT=y
 CONFIG_KEYS_COMPAT=y
 CONFIG_X86_DEV_DMA_OPS=y
-CONFIG_IOSF_MBI=m
 CONFIG_PMC_ATOM=y
 CONFIG_NET=y
 CONFIG_COMPAT_NETLINK_MESSAGES=y
@@ -827,6 +834,8 @@ CONFIG_IP_PIMSM_V2=y
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
+CONFIG_NET_FOU=m
+CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
@@ -852,6 +861,7 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -888,7 +898,7 @@ CONFIG_NET_PTP_CLASSIFY=y
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
-CONFIG_BRIDGE_NETFILTER=y
+CONFIG_BRIDGE_NETFILTER=m
 
 #
 # Core Netfilter Configuration
@@ -947,6 +957,7 @@ CONFIG_NFT_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1050,6 +1061,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETNET=m
@@ -1078,6 +1090,7 @@ CONFIG_IP_VS_RR=m
 CONFIG_IP_VS_WRR=m
 CONFIG_IP_VS_LC=m
 CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_FO=m
 CONFIG_IP_VS_LBLC=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_DH=m
@@ -1106,10 +1119,13 @@ CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_TABLES_IPV4=m
 CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
 CONFIG_NFT_REJECT_IPV4=m
 CONFIG_NF_TABLES_ARP=m
 CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1143,10 +1159,13 @@ CONFIG_NF_DEFRAG_IPV6=m
 CONFIG_NF_CONNTRACK_IPV6=m
 CONFIG_NF_TABLES_IPV6=m
 CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
 CONFIG_NFT_REJECT_IPV6=m
 CONFIG_NF_LOG_IPV6=m
 CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1246,6 +1265,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
+CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_DSA_TAG_TRAILER=y
@@ -1349,6 +1369,7 @@ CONFIG_BATMAN_ADV_MCAST=y
 CONFIG_OPENVSWITCH=m
 CONFIG_OPENVSWITCH_GRE=y
 CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GENEVE=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
@@ -1418,6 +1439,7 @@ CONFIG_CAN_PLX_PCI=m
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN_PLATFORM=m
 CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_M_CAN=m
 CONFIG_CAN_CC770=m
 CONFIG_CAN_CC770_ISA=m
 CONFIG_CAN_CC770_PLATFORM=m
@@ -1628,6 +1650,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
+CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1754,6 +1777,7 @@ CONFIG_MTD_NAND_DENALI_PCI=m
 CONFIG_MTD_NAND_DENALI_DT=m
 CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018
 CONFIG_MTD_NAND_GPIO=m
+# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
 CONFIG_MTD_NAND_IDS=m
 CONFIG_MTD_NAND_RICOH=m
 CONFIG_MTD_NAND_DISKONCHIP=m
@@ -1776,6 +1800,7 @@ CONFIG_MTD_ONENAND_2X_PROGRAM=y
 CONFIG_MTD_LPDDR=m
 CONFIG_MTD_QINFO_PROBE=m
 CONFIG_MTD_SPI_NOR=m
+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_BEB_LIMIT=20
@@ -1947,6 +1972,7 @@ CONFIG_INTEL_MIC_CARD=m
 CONFIG_GENWQE=m
 CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
 CONFIG_ECHO=m
+# CONFIG_CXL_BASE is not set
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1958,6 +1984,7 @@ CONFIG_RAID_ATTRS=m
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
 CONFIG_SCSI_NETLINK=y
+# CONFIG_SCSI_MQ_DEFAULT is not set
 CONFIG_SCSI_PROC_FS=y
 
 #
@@ -2040,6 +2067,7 @@ CONFIG_SCSI_HPTIOP=m
 CONFIG_SCSI_BUSLOGIC=m
 CONFIG_SCSI_FLASHPOINT=y
 CONFIG_VMWARE_PVSCSI=m
+CONFIG_XEN_SCSI_FRONTEND=m
 CONFIG_HYPERV_STORAGE=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
@@ -2233,6 +2261,7 @@ CONFIG_TARGET_CORE=m
 CONFIG_TCM_IBLOCK=m
 CONFIG_TCM_FILEIO=m
 CONFIG_TCM_PSCSI=m
+CONFIG_TCM_USER=m
 CONFIG_LOOPBACK_TARGET=m
 CONFIG_TCM_FC=m
 CONFIG_ISCSI_TARGET=m
@@ -2359,6 +2388,8 @@ CONFIG_NET_DSA_MV88E6060=m
 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_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
 CONFIG_NET_VENDOR_3COM=y
@@ -2368,6 +2399,8 @@ CONFIG_VORTEX=m
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
 CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_ET131X=m
 CONFIG_NET_VENDOR_ALTEON=y
 CONFIG_ACENIC=m
 # CONFIG_ACENIC_OMIT_TIGON_I is not set
@@ -2453,6 +2486,8 @@ CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
 CONFIG_I40EVF=m
+CONFIG_FM10K=m
+CONFIG_FM10K_VXLAN=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
@@ -2505,6 +2540,7 @@ CONFIG_QLCNIC_VXLAN=y
 CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
 CONFIG_8139CP=m
@@ -2593,6 +2629,7 @@ CONFIG_MICREL_PHY=m
 CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
+CONFIG_MDIO_BCM_UNIMAC=m
 CONFIG_MICREL_KS8995MA=m
 CONFIG_PLIP=m
 CONFIG_PPP=y
@@ -2689,8 +2726,10 @@ CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 CONFIG_ATH9K_DEBUGFS=y
 CONFIG_ATH9K_STATION_STATISTICS=y
+# CONFIG_ATH9K_DYNACK is not set
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_CHANNEL_CONTEXT=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2777,6 +2816,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
+CONFIG_IWLWIFI_UAPSD=y
 
 #
 # Debugging Options
@@ -2851,6 +2891,8 @@ CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8723BE=m
 CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTLWIFI_PCI=m
@@ -3244,6 +3286,7 @@ CONFIG_INPUT_AD714X_SPI=m
 CONFIG_INPUT_ARIZONA_HAPTICS=m
 CONFIG_INPUT_BMA150=m
 CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MAX77693_HAPTIC=m
 CONFIG_INPUT_MAX8925_ONKEY=m
 CONFIG_INPUT_MAX8997_HAPTIC=m
 CONFIG_INPUT_MC13783_PWRBUTTON=m
@@ -3266,6 +3309,7 @@ CONFIG_INPUT_TWL4030_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_VIBRA=m
 CONFIG_INPUT_TWL6040_VIBRA=m
 CONFIG_INPUT_UINPUT=y
+CONFIG_INPUT_PALMAS_PWRBUTTON=m
 CONFIG_INPUT_PCF50633_PMU=m
 CONFIG_INPUT_PCF8574=m
 CONFIG_INPUT_PWM_BEEPER=m
@@ -3283,6 +3327,8 @@ CONFIG_INPUT_CMA3000_I2C=m
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
 CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
 CONFIG_INPUT_SOC_BUTTON_ARRAY=m
+CONFIG_INPUT_DRV260X_HAPTICS=m
+CONFIG_INPUT_DRV2667_HAPTICS=m
 
 #
 # Hardware I/O ports
@@ -3356,6 +3402,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
 CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_FINTEK=m
 
 #
 # Non-8250 serial port support
@@ -3436,6 +3483,8 @@ CONFIG_TCG_ST33_I2C=m
 CONFIG_TCG_XEN=m
 CONFIG_TELCLOCK=m
 CONFIG_DEVPORT=y
+CONFIG_XILLYBUS=m
+CONFIG_XILLYBUS_PCIE=m
 
 #
 # I2C support
@@ -3614,6 +3663,7 @@ 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
@@ -3656,6 +3706,7 @@ CONFIG_GPIO_RDC321X=m
 # SPI GPIO expanders:
 #
 CONFIG_GPIO_MAX7301=m
+CONFIG_GPIO_MCP23S08=m
 CONFIG_GPIO_MC33880=m
 
 #
@@ -3827,6 +3878,7 @@ CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
 CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_MENF21BMC_HWMON=m
 CONFIG_SENSORS_ADCXX=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM70=m
@@ -3919,12 +3971,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
 CONFIG_X86_PKG_TEMP_THERMAL=m
-CONFIG_ACPI_INT3403_THERMAL=m
 CONFIG_INTEL_SOC_DTS_THERMAL=m
+CONFIG_INT340X_THERMAL=m
+CONFIG_ACPI_THERMAL_REL=m
 
 #
 # Texas Instruments thermal drivers
@@ -3939,10 +3993,13 @@ CONFIG_WATCHDOG_CORE=y
 CONFIG_SOFT_WATCHDOG=m
 CONFIG_DA9052_WATCHDOG=m
 CONFIG_DA9055_WATCHDOG=m
+CONFIG_DA9063_WATCHDOG=m
+CONFIG_MENF21BMC_WATCHDOG=m
 CONFIG_WM831X_WATCHDOG=m
 CONFIG_WM8350_WATCHDOG=m
 CONFIG_XILINX_WATCHDOG=m
 CONFIG_DW_WATCHDOG=m
+CONFIG_RN5T618_WATCHDOG=m
 CONFIG_TWL4030_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
@@ -4062,6 +4119,7 @@ CONFIG_MFD_MAX8907=m
 CONFIG_MFD_MAX8925=y
 CONFIG_MFD_MAX8997=y
 CONFIG_MFD_MAX8998=y
+CONFIG_MFD_MENF21BMC=m
 CONFIG_EZX_PCAP=y
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
@@ -4073,6 +4131,7 @@ CONFIG_MFD_RDC321X=m
 CONFIG_MFD_RTSX_PCI=m
 CONFIG_MFD_RTSX_USB=m
 CONFIG_MFD_RC5T583=y
+CONFIG_MFD_RN5T618=m
 CONFIG_MFD_SEC_CORE=y
 CONFIG_MFD_SI476X_CORE=m
 CONFIG_MFD_SM501=m
@@ -4143,6 +4202,7 @@ CONFIG_REGULATOR_DA9210=m
 CONFIG_REGULATOR_DA9211=m
 CONFIG_REGULATOR_FAN53555=m
 CONFIG_REGULATOR_GPIO=m
+CONFIG_REGULATOR_ISL9305=m
 CONFIG_REGULATOR_ISL6271A=m
 CONFIG_REGULATOR_LP3971=m
 CONFIG_REGULATOR_LP3972=m
@@ -4162,6 +4222,7 @@ CONFIG_REGULATOR_MAX8997=m
 CONFIG_REGULATOR_MAX8998=m
 CONFIG_REGULATOR_MAX77686=m
 CONFIG_REGULATOR_MAX77693=m
+CONFIG_REGULATOR_MAX77802=m
 CONFIG_REGULATOR_MC13XXX_CORE=m
 CONFIG_REGULATOR_MC13783=m
 CONFIG_REGULATOR_MC13892=m
@@ -4169,7 +4230,9 @@ CONFIG_REGULATOR_PALMAS=m
 CONFIG_REGULATOR_PCAP=m
 CONFIG_REGULATOR_PCF50633=m
 CONFIG_REGULATOR_PFUZE100=m
+CONFIG_REGULATOR_PWM=m
 CONFIG_REGULATOR_RC5T583=m
+CONFIG_REGULATOR_RN5T618=m
 CONFIG_REGULATOR_S2MPA01=m
 CONFIG_REGULATOR_S2MPS11=m
 CONFIG_REGULATOR_S5M8767=m
@@ -4245,6 +4308,7 @@ CONFIG_IR_XMP_DECODER=m
 CONFIG_RC_DEVICES=y
 CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
+CONFIG_IR_HIX5HD2=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_ITE_CIR=m
@@ -4404,11 +4468,13 @@ CONFIG_DVB_USB_GL861=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_MXL111SF=m
 CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_USB_DVBSKY=m
 CONFIG_DVB_TTUSB_BUDGET=m
 CONFIG_DVB_TTUSB_DEC=m
 CONFIG_SMS_USB_DRV=m
 CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+CONFIG_DVB_AS102=m
 
 #
 # Webcam, TV (analog/digital) USB devices
@@ -4422,8 +4488,9 @@ CONFIG_VIDEO_EM28XX_RC=m
 #
 # Software defined radio USB devices
 #
-CONFIG_USB_MSI2500=m
 CONFIG_USB_AIRSPY=m
+CONFIG_USB_HACKRF=m
+CONFIG_USB_MSI2500=m
 CONFIG_MEDIA_PCI_SUPPORT=y
 
 #
@@ -4449,6 +4516,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
 CONFIG_VIDEO_HEXIUM_ORION=m
 CONFIG_VIDEO_MXB=m
 CONFIG_VIDEO_SOLO6X10=m
+CONFIG_VIDEO_TW68=m
 
 #
 # Media capture/analog/hybrid TV support
@@ -4472,11 +4540,13 @@ CONFIG_VIDEO_SAA7134=m
 CONFIG_VIDEO_SAA7134_ALSA=m
 CONFIG_VIDEO_SAA7134_RC=y
 CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_GO7007=m
 CONFIG_VIDEO_SAA7164=m
 
 #
 # Media digital TV PCI Adapters
 #
+CONFIG_DVB_AV7110_IR=y
 CONFIG_DVB_AV7110=m
 CONFIG_DVB_AV7110_OSD=y
 CONFIG_DVB_BUDGET_CORE=m
@@ -4489,6 +4559,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
 CONFIG_DVB_PLUTO2=m
 CONFIG_DVB_DM1105=m
 CONFIG_DVB_PT1=m
+CONFIG_DVB_PT3=m
 CONFIG_MANTIS_CORE=m
 CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
@@ -4502,9 +4573,8 @@ CONFIG_SOC_CAMERA_PLATFORM=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
-CONFIG_VIDEO_RENESAS_VSP1=m
 CONFIG_V4L_TEST_DRIVERS=y
-CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_VIVID=m
 CONFIG_VIDEO_MEM2MEM_TESTDEV=m
 
 #
@@ -4704,6 +4774,8 @@ CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
 
 #
 # Multistandard (satellite) frontends
@@ -4777,6 +4849,7 @@ CONFIG_DVB_RTL2830=m
 CONFIG_DVB_RTL2832=m
 CONFIG_DVB_RTL2832_SDR=m
 CONFIG_DVB_SI2168=m
+CONFIG_DVB_AS102_FE=m
 
 #
 # DVB-C (cable) frontends
@@ -4808,6 +4881,7 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
+CONFIG_DVB_TC90522=m
 
 #
 # Digital terrestrial only tuners/PLL
@@ -4855,7 +4929,6 @@ CONFIG_VGA_SWITCHEROO=y
 # Direct Rendering Manager
 #
 CONFIG_DRM=m
-CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -4895,13 +4968,14 @@ CONFIG_DRM_AST=m
 # CONFIG_DRM_MGAG200 is not set
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
-CONFIG_DRM_BOCHS=m
+# CONFIG_DRM_BOCHS is not set
 
 #
 # Frame buffer Devices
 #
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CMDLINE=y
 CONFIG_FB_DDC=m
 CONFIG_FB_BOOT_VESA_SUPPORT=y
 CONFIG_FB_CFB_FILLRECT=y
@@ -5068,7 +5142,7 @@ CONFIG_LOGO=y
 CONFIG_LOGO_LIBRE_CLUT224=y
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
@@ -5276,6 +5350,7 @@ CONFIG_SND_SOC_AK4554=m
 CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
+CONFIG_SND_SOC_CS35L32=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
@@ -5285,6 +5360,7 @@ CONFIG_SND_SOC_CS4271=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_MAX98090=m
 CONFIG_SND_SOC_PCM1681=m
 CONFIG_SND_SOC_PCM1792A=m
@@ -5300,6 +5376,10 @@ CONFIG_SND_SOC_SIGMADSP=m
 CONFIG_SND_SOC_SIGMADSP_I2C=m
 CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
 CONFIG_SND_SOC_SPDIF=m
+CONFIG_SND_SOC_SSM2602=m
+CONFIG_SND_SOC_SSM2602_SPI=m
+CONFIG_SND_SOC_SSM2602_I2C=m
+CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
@@ -5320,6 +5400,7 @@ CONFIG_SND_SOC_WM8776=m
 CONFIG_SND_SOC_WM8804=m
 CONFIG_SND_SOC_WM8903=m
 CONFIG_SND_SOC_WM8962=m
+CONFIG_SND_SOC_WM8978=m
 CONFIG_SND_SOC_TPA6130A2=m
 CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
@@ -5382,6 +5463,7 @@ CONFIG_HID_NTRIG=m
 CONFIG_HID_ORTEK=m
 CONFIG_HID_PANTHERLORD=m
 CONFIG_PANTHERLORD_FF=y
+CONFIG_HID_PENMOUNT=m
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
 CONFIG_HID_PICOLCD_FB=y
@@ -5460,6 +5542,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 CONFIG_USB_C67X00_HCD=m
 CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
 CONFIG_USB_XHCI_PLATFORM=m
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -5482,13 +5565,11 @@ CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SL811_HCD_ISO=y
 CONFIG_USB_SL811_CS=m
 CONFIG_USB_R8A66597_HCD=m
-CONFIG_USB_RENESAS_USBHS_HCD=m
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
 CONFIG_USB_HCD_BCMA=m
 CONFIG_USB_HCD_SSB=m
 # CONFIG_USB_HCD_TEST_MODE is not set
-CONFIG_USB_RENESAS_USBHS=m
 
 #
 # USB Device Class drivers
@@ -5638,7 +5719,6 @@ CONFIG_USB_SERIAL_OMNINET=m
 CONFIG_USB_SERIAL_OPTICON=m
 CONFIG_USB_SERIAL_XSENS_MT=m
 CONFIG_USB_SERIAL_WISHBONE=m
-CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 CONFIG_USB_SERIAL_DEBUG=m
@@ -5682,9 +5762,6 @@ CONFIG_USB_XUSBATM=m
 #
 CONFIG_USB_PHY=y
 CONFIG_NOP_USB_XCEIV=m
-CONFIG_SAMSUNG_USBPHY=m
-CONFIG_SAMSUNG_USB2PHY=m
-CONFIG_SAMSUNG_USB3PHY=m
 CONFIG_USB_GPIO_VBUS=m
 CONFIG_TAHVO_USB=m
 CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y
@@ -5702,7 +5779,6 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
 CONFIG_USB_FOTG210_UDC=m
 CONFIG_USB_GR_UDC=m
 CONFIG_USB_R8A66597=m
-CONFIG_USB_RENESAS_USBHS_UDC=m
 CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
@@ -5729,6 +5805,8 @@ CONFIG_USB_F_SUBSET=m
 CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
+CONFIG_USB_F_UAC1=m
+CONFIG_USB_F_UVC=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -5769,6 +5847,7 @@ CONFIG_USB_G_DBGP=m
 # CONFIG_USB_G_DBGP_PRINTK is not set
 CONFIG_USB_G_DBGP_SERIAL=y
 CONFIG_USB_G_WEBCAM=m
+CONFIG_USB_LED_TRIG=y
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_WHCI=m
@@ -5864,6 +5943,7 @@ CONFIG_LEDS_MC13783=m
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_MAX8997=m
 CONFIG_LEDS_LM355x=m
+CONFIG_LEDS_MENF21BMC=m
 
 #
 # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
@@ -5968,6 +6048,7 @@ CONFIG_RTC_DRV_MAX8925=m
 CONFIG_RTC_DRV_MAX8998=m
 CONFIG_RTC_DRV_MAX8997=m
 CONFIG_RTC_DRV_MAX77686=m
+CONFIG_RTC_DRV_MAX77802=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
@@ -6024,7 +6105,6 @@ CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_DA9052=m
 CONFIG_RTC_DRV_DA9055=m
 CONFIG_RTC_DRV_DA9063=m
-CONFIG_RTC_DRV_EFI=m
 CONFIG_RTC_DRV_STK17TA8=m
 CONFIG_RTC_DRV_M48T86=m
 CONFIG_RTC_DRV_M48T35=m
@@ -6126,13 +6206,13 @@ CONFIG_XEN_GRANT_DEV_ALLOC=m
 CONFIG_SWIOTLB_XEN=y
 CONFIG_XEN_TMEM=m
 CONFIG_XEN_PCIDEV_BACKEND=m
+CONFIG_XEN_SCSI_BACKEND=m
 CONFIG_XEN_PRIVCMD=m
 CONFIG_XEN_ACPI_PROCESSOR=y
 CONFIG_XEN_MCE_LOG=y
 CONFIG_XEN_HAVE_PVMMU=y
 CONFIG_XEN_EFI=y
 CONFIG_STAGING=y
-CONFIG_ET131X=m
 CONFIG_SLICOSS=m
 CONFIG_PRISM2_USB=m
 CONFIG_COMEDI=m
@@ -6140,12 +6220,10 @@ CONFIG_COMEDI=m
 CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048
 CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480
 CONFIG_COMEDI_MISC_DRIVERS=y
-CONFIG_COMEDI_KCOMEDILIB=m
 CONFIG_COMEDI_BOND=m
 CONFIG_COMEDI_TEST=m
 CONFIG_COMEDI_PARPORT=m
 CONFIG_COMEDI_SERIAL2002=m
-CONFIG_COMEDI_SKEL=m
 CONFIG_COMEDI_ISA_DRIVERS=y
 CONFIG_COMEDI_PCL711=m
 CONFIG_COMEDI_PCL724=m
@@ -6259,12 +6337,13 @@ CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
 CONFIG_COMEDI_USB_DRIVERS=y
 CONFIG_COMEDI_DT9812=m
+CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
 CONFIG_COMEDI_USBDUXFAST=m
 CONFIG_COMEDI_USBDUXSIGMA=m
 CONFIG_COMEDI_VMK80XX=m
 CONFIG_COMEDI_8255=m
-CONFIG_COMEDI_FC=m
+CONFIG_COMEDI_KCOMEDILIB=m
 CONFIG_COMEDI_AMPLC_DIO200=m
 CONFIG_COMEDI_AMPLC_PC236=m
 CONFIG_COMEDI_DAS08=m
@@ -6284,13 +6363,10 @@ CONFIG_RTL8192E=m
 CONFIG_R8712U=m
 CONFIG_R8188EU=m
 CONFIG_88EU_AP_MODE=y
-CONFIG_R8192EE=m
 CONFIG_R8723AU=m
 CONFIG_8723AU_AP_MODE=y
 CONFIG_8723AU_BT_COEXIST=y
-CONFIG_R8821AE=m
 CONFIG_RTS5208=m
-# CONFIG_RTS5208_DEBUG is not set
 CONFIG_LINE6_USB=m
 # CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
 CONFIG_VT6655=m
@@ -6340,13 +6416,8 @@ CONFIG_AD7746=m
 #
 # Direct Digital Synthesis
 #
-CONFIG_AD5930=m
 CONFIG_AD9832=m
 CONFIG_AD9834=m
-CONFIG_AD9850=m
-CONFIG_AD9852=m
-CONFIG_AD9910=m
-CONFIG_AD9951=m
 
 #
 # Digital gyroscope sensors
@@ -6422,7 +6493,6 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
 CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
 CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
 CONFIG_STAGING_MEDIA=y
-CONFIG_DVB_AS102=m
 CONFIG_I2C_BCM2048=m
 CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
@@ -6466,8 +6536,6 @@ CONFIG_LNET=m
 CONFIG_LNET_MAX_PAYLOAD=1048576
 CONFIG_LNET_SELFTEST=m
 CONFIG_LNET_XPRT_IB=m
-CONFIG_XILLYBUS=m
-CONFIG_XILLYBUS_PCIE=m
 CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
@@ -6540,6 +6608,7 @@ 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
@@ -6548,11 +6617,14 @@ CONFIG_COMMON_CLK=y
 # Common Clock Framework
 #
 CONFIG_COMMON_CLK_WM831X=m
+CONFIG_COMMON_CLK_MAX_GEN=y
 CONFIG_COMMON_CLK_MAX77686=m
+CONFIG_COMMON_CLK_MAX77802=m
 CONFIG_COMMON_CLK_SI5351=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=m
 CONFIG_COMMON_CLK_PALMAS=m
+# CONFIG_COMMON_CLK_PXA is not set
 
 #
 # Hardware Spinlock drivers
@@ -6564,6 +6636,7 @@ CONFIG_COMMON_CLK_PALMAS=m
 CONFIG_CLKEVT_I8253=y
 CONFIG_I8253_LOCK=y
 CONFIG_CLKBLD_I8253=y
+# CONFIG_ATMEL_PIT is not set
 # CONFIG_SH_TIMER_CMT is not set
 # CONFIG_SH_TIMER_MTU2 is not set
 # CONFIG_SH_TIMER_TMU is not set
@@ -6589,6 +6662,10 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # Rpmsg drivers
 #
+
+#
+# SOC (System On Chip) specific Drivers
+#
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -6614,6 +6691,7 @@ CONFIG_EXTCON_MAX14577=m
 CONFIG_EXTCON_MAX77693=m
 CONFIG_EXTCON_MAX8997=m
 CONFIG_EXTCON_PALMAS=m
+CONFIG_EXTCON_RT8973A=m
 CONFIG_EXTCON_SM5502=m
 CONFIG_MEMORY=y
 CONFIG_IIO=m
@@ -6628,6 +6706,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # Accelerometers
 #
 CONFIG_BMA180=m
+CONFIG_BMC150_ACCEL=m
 CONFIG_HID_SENSOR_ACCEL_3D=m
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -6657,6 +6736,7 @@ CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
 CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL6030_GPADC=m
@@ -6718,6 +6798,7 @@ CONFIG_ADIS16130=m
 CONFIG_ADIS16136=m
 CONFIG_ADIS16260=m
 CONFIG_ADXRS450=m
+CONFIG_BMG160=m
 CONFIG_HID_SENSOR_GYRO_3D=m
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
@@ -6743,6 +6824,7 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
 # Light sensors
 #
 CONFIG_ADJD_S311=m
+CONFIG_AL3320A=m
 CONFIG_APDS9300=m
 CONFIG_CM32181=m
 CONFIG_CM36651=m
@@ -6825,6 +6907,8 @@ CONFIG_PWM=y
 CONFIG_PWM_SYSFS=y
 CONFIG_PWM_LP3943=m
 CONFIG_PWM_LPSS=m
+CONFIG_PWM_LPSS_PCI=m
+CONFIG_PWM_LPSS_PLATFORM=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_IPACK_BUS=m
@@ -6944,6 +7028,7 @@ CONFIG_QUOTACTL_COMPAT=y
 CONFIG_AUTOFS4_FS=m
 CONFIG_FUSE_FS=y
 CONFIG_CUSE=m
+CONFIG_OVERLAY_FS=m
 
 #
 # Caches
@@ -7099,6 +7184,7 @@ CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
@@ -7269,6 +7355,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_TIMER_STATS=y
 
 #
@@ -7374,7 +7461,7 @@ CONFIG_TEST_KSTRTOX=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
-CONFIG_TEST_MODULE=m
+CONFIG_TEST_LKM=m
 CONFIG_TEST_USER_COPY=m
 CONFIG_TEST_BPF=m
 CONFIG_TEST_FIRMWARE=m
@@ -7445,6 +7532,7 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
 # CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
 CONFIG_SECURITY_SMACK=y
+# CONFIG_SECURITY_SMACK_BRINGUP is not set
 CONFIG_SECURITY_TOMOYO=y
 CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
 CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
@@ -7458,8 +7546,8 @@ CONFIG_SECURITY_YAMA=y
 CONFIG_SECURITY_YAMA_STACKED=y
 CONFIG_INTEGRITY=y
 CONFIG_INTEGRITY_SIGNATURE=y
-CONFIG_INTEGRITY_AUDIT=y
 CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_INTEGRITY_AUDIT=y
 CONFIG_IMA=y
 CONFIG_IMA_MEASURE_PCR_IDX=10
 CONFIG_IMA_LSM_RULES=y
@@ -7475,10 +7563,6 @@ CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
 CONFIG_EVM=y
-
-#
-# EVM options
-#
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
 # CONFIG_DEFAULT_SECURITY_SELINUX is not set
@@ -7520,6 +7604,7 @@ CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_PCRYPT=m
 CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_MCRYPTD=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_ABLK_HELPER=m
@@ -7572,6 +7657,7 @@ CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA1_SSSE3=m
 CONFIG_CRYPTO_SHA256_SSSE3=m
 CONFIG_CRYPTO_SHA512_SSSE3=m
+CONFIG_CRYPTO_SHA1_MB=m
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=y
 CONFIG_CRYPTO_TGR192=m
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 0d30aeea94..3f83711f32 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -192,7 +192,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "3.17.3")
+  (let* ((version "3.18")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -265,7 +265,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "1qyk70m7y7ak94idkqpgyinnnpqpwxvl39rwh8pqdvrcm7w5b0lq"))))
+               "1kv03bhls9rya4sg3qixyjirc79pn2g5bcwldcj7hs4apa77sd0g"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
@@ -1487,7 +1487,13 @@ mapper.  Kernel components are part of Linux-libre.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))))
+                "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Install the manual pages in the right place.
+               '(substitute* "Makefile"
+                  (("INSTALL_MAN= .*")
+                   "INSTALL_MAN= $(PREFIX)/share/man")))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (alist-replace
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index f9d1c26518..0bacac47bf 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -31,13 +31,13 @@
 (define-public gcl
   (package
     (name "gcl")
-    (version "2.6.11")
+    (version "2.6.12")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/" name "/" name "-" version ".tar.gz"))
       (sha256
-       (base32 "177vz8z74mky5nrq6qlfvnzvb1prw8jmlv4cwfx8w7k3k818y1a4"))))
+       (base32 "1s4hs2qbjqmn9h88l4xvsifq5c3dlc5s74lyb61rdi5grhdlkf4f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-build? #f  ; The build system seems not to be thread safe.
@@ -63,7 +63,10 @@
                        (find-files "h" "\\.defs"))
                     (("SHELL=/bin/(ba)?sh")
                      (string-append "SHELL=" (which "bash")))))
-                %standard-phases)))
+                ;; drop strip phase to make maxima build, see
+                ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
+                (alist-delete 'strip
+                 %standard-phases))))
     (native-inputs
      `(("m4" ,m4)
        ("readline" ,readline)
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
new file mode 100644
index 0000000000..5b70124655
--- /dev/null
+++ b/gnu/packages/llvm.scm
@@ -0,0 +1,107 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages llvm)
+  #:use-module (guix packages)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages xml))
+
+(define-public llvm
+  (package
+    (name "llvm")
+    (version "3.5.0")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://llvm.org/releases/"
+                          version "/llvm-" version ".src.tar.xz"))
+      (sha256
+       (base32
+        "00swb43mzlvda8306arlg2jw7g6k3acwfccgf1k4c2pgd3rrkq98"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("python" ,python-wrapper)
+       ("perl"   ,perl)))
+    (arguments
+     `(#:phases (alist-cons-before
+                 'build 'link-lib-for-build-exec
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; This is a hacky fix that will allow binaries to run
+                   ;; before being installed.  -DCMAKE_SKIP_BUILD_RPATH=FALSE
+                   ;; seems to not help.  Nixpkgs does the same.
+                   (let* ((out       (assoc-ref outputs "out"))
+                          (out-lib   (string-append out "/lib"))
+                          (build-lib (string-append (getcwd) "/lib")))
+                     (mkdir-p out)
+                     (symlink build-lib out-lib)))
+                 (alist-cons-after
+                  'build 'cleanup-out
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    ;; Cleanup the symlink that was created previously.  Let
+                    ;; the install phase repopulate out.
+                    (delete-file-recursively (assoc-ref outputs "out")))
+                  %standard-phases))))
+    (home-page "http://www.llvm.org")
+    (synopsis "Optimizing compiler infrastructure")
+    (description
+     "LLVM is a compiler infrastructure designed for compile-time, link-time, runtime,
+and idle-time optimization of programs from arbitrary programming languages.
+It currently supports compilation of C and C++ programs, using front-ends
+derived from GCC 4.0.1.  A new front-end for the C family of languages is in
+development.  The compiler infrastructure includes mirror sets of programming
+tools as well as libraries with equivalent functionality.")
+    (license ncsa)))
+
+(define-public clang
+  (package
+    (name "clang")
+    (version (package-version llvm))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://llvm.org/releases/"
+                           version "/cfe-" version ".src.tar.xz"))
+       (sha256
+        (base32
+         "12yv3jwdjcbkrx7zjm8wh4jrvb59v8fdw4mnmz3zc1jb00p9k07w"))))
+    ;; Using cmake allows us to treat llvm as an external library.  There
+    ;; doesn't seem to be any way to do this with clang's autotools-based
+    ;; build system.
+    (build-system cmake-build-system)
+    (native-inputs (package-native-inputs llvm))
+    (inputs
+     `(("libxml2" ,libxml2)
+       ,@(package-inputs llvm)))
+    (propagated-inputs
+     `(("llvm" ,llvm)))
+    (arguments `(#:configure-flags '("-DCLANG_INCLUDE_TESTS=True")))
+    (home-page "http://clang.llvm.org")
+    (synopsis "C language family frontend for LLVM")
+    (description
+     "Clang is a compiler front end for the C, C++, Objective-C and
+Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang
+project includes the Clang front end, the Clang static analyzer, and several
+code analysis tools.")
+    (license ncsa)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 46c24092e5..6051dabb29 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2,6 +2,8 @@
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
+;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,14 +24,23 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages backup)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages enchant)
   #:use-module (gnu packages gdbm)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages gsasl)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages libcanberra)
+  #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages databases)
@@ -46,8 +57,10 @@
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gdb)
   #:use-module (gnu packages samba)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ bsd-style))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -365,4 +378,154 @@ attachments, create new maildirs, and so on.")
 ing, and tagging large collections of email messages.")
     (license gpl3+)))
 
+(define-public getmail
+  (package
+    (name "getmail")
+    (version "4.46.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://pyropus.ca/software/getmail/old-versions/"
+                           name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15rqmm25pq6ll8aaqh8h6pfdkpqs7y6yismb3h3w1bz8j292c8zl"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:python ,python-2))
+    (home-page "http://pyropus.ca/software/getmail/")
+    (synopsis "Mail retriever")
+    (description
+     "A flexible, extensible mail retrieval system with support for
+POP3, IMAP4, SSL variants of both, maildirs, mboxrd files, external MDAs,
+arbitrary message filtering, single-user and domain-mailboxes, and many other
+useful features.")
+
+    ;; License is specified in file '__init__.py'.
+    (license gpl2)))
+
+(define-public libetpan
+  (package
+    (name "libetpan")
+    (version "1.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://github.com/dinhviethoa/" name
+                   "/archive/" version ".tar.gz"))
+             (sha256
+               (base32 "05qyqx2c1ppb1jnrs3m52i60f9xlxfxdmb9dnwg4vqjv8kwv2qkr"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("autoconf" ,(autoconf-wrapper))
+                     ("automake" ,automake)
+                     ("libtool" ,libtool "bin")
+                     ("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     ;; 'libetpan-config --libs' returns '-lssl -lcrypto -lsasl2', so these
+     ;; libraries need to be propagated.
+     `(("cyrus-sasl" ,cyrus-sasl)
+       ("openssl" ,openssl)))
+    (inputs
+     `(("curl" ,curl)
+       ("expat" ,expat)))
+    (arguments
+      '(#:phases (alist-cons-before
+                  'configure 'autogen
+                  (lambda _
+                    (system* "./autogen.sh")) ;; Note: this fails because the
+                         ;; generated configure script uses /bin/sh. It is
+                         ;; replaced in the configure phase by the correct
+                         ;; value. TODO: replace the configure phase by the
+                         ;; autogen phase and have the SHELL variable be replaced
+                  %standard-phases)
+        #:configure-flags
+        '("--disable-static" "--disable-db")))
+    (home-page "http://www.etpan.org/libetpan.html")
+    (synopsis "Portable middleware for email access")
+    (description
+     "The purpose of this mail library is to provide a portable, efficient
+framework for different kinds of mail access: IMAP, SMTP, POP and NNTP.  It
+provides an API for C language.  It's the low-level API used by MailCore and
+MailCore 2.")
+    (license (bsd-style "file://COPYING"))))
+
+(define-public claws-mail
+  (package
+    (name "claws-mail")
+    (version "3.11.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.sourceforge.net/project/claws-mail/"
+                    "Claws Mail/" version "/" name "-" version ".tar.xz"))
+              (sha256
+               (base32 "0cyixz1jgfpi8abh9fbb8ylx9mcvw4jqj81cms666wpqr6v828yp"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("bogofilter" ,bogofilter)
+              ("curl" ,curl)
+              ("dbus-glib" ,dbus-glib)
+              ("dbus" ,dbus)
+              ("enchant" ,enchant)
+              ("expat" ,expat)
+              ("ghostscript" ,ghostscript)
+              ("hicolor-icon-theme" ,hicolor-icon-theme)
+              ("gnupg" ,gnupg)
+              ("gnutls" ,gnutls)
+              ("gpgme" ,gpgme)
+              ("gtk" ,gtk+-2)
+              ("libarchive" ,libarchive)
+              ("libcanberra" ,libcanberra)
+              ("libetpan" ,libetpan)
+              ("libnotify" ,libnotify)
+              ("libsm" ,libsm)
+              ("libxml2" ,libxml2)
+              ("perl" ,perl)
+              ("python-2" ,python-2)))
+    (arguments
+      '(#:configure-flags
+        '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")))
+    (synopsis "GTK-based Email client")
+    (description
+     "Claws-Mail is an email client (and news reader) based on GTK+.  The
+appearance and interface are designed to be familiar to new users coming from
+other popular email clients, as well as experienced users.  Almost all commands
+are accessible with the keyboard.  Plus, Claws-Mail is extensible via addons
+which can add many functionalities to the base client.")
+    (home-page "http://www.claws-mail.org/")
+    (license gpl3+))) ; most files are actually public domain or x11
+
+(define-public msmtp
+  (package
+    (name "msmtp")
+    (version "1.4.32")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://downloads.sourceforge.net/project/msmtp/msmtp/" version
+             "/msmtp-" version ".tar.bz2"))
+       (sha256 (base32
+                "122z38pv4q03w3mbnhrhg4w85a51258sfdg2ips0b6cgwz3wbw1b"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libidn" ,libidn)
+       ("gnutls" ,gnutls)
+       ("zlib" ,zlib)
+       ("gsasl" ,gsasl)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://msmtp.sourceforge.net/")
+    (arguments
+     `(#:configure-flags (list "--with-libgsasl"
+                               "--with-libidn"
+                               "--with-ssl=gnutls")))
+    (synopsis
+     "Simple and easy to use SMTP client with decent sendmail compatibility")
+    (description
+     "msmtp is an SMTP client.  In the default mode, it transmits a mail to
+an SMTP server (for example at a free mail provider) which takes care of further
+delivery.")
+    (license gpl3+)))
+
 ;;; mail.scm ends here
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 3d5d02ea64..028403ce74 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -151,7 +151,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
 (define-public help2man
   (package
     (name "help2man")
-    (version "1.46.3")
+    (version "1.46.4")
     (source
      (origin
       (method url-fetch)
@@ -159,7 +159,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "0hi94a6ai96yw0v8xgjzpp5c6jr33ifmbn2mkp7wz7rgmwxxqsd6"))))
+        "0csn7jx7nhlrflalw1992p3l5afawlpdyjdff2q5bk5hadgz3rqs"))))
     (build-system gnu-build-system)
     (arguments `(;; There's no `check' target.
                  #:tests? #f))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 1aa3757ebe..7296d48d83 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -953,6 +953,9 @@ point numbers")
     (inputs `(("gfortran" ,gfortran-4.8)
               ("lapack-tar" ,(package-source lapack))))
     (outputs '("out" "doc"))
+    ;; For the moment we drop support for MIPS at it fails to compile. See
+    ;; https://lists.gnu.org/archive/html/guix-devel/2014-11/msg00516.html
+    (supported-systems (delete "mips64el-linux" %supported-systems))
     (arguments
      `(#:parallel-build? #f
        #:parallel-tests? #f
@@ -979,6 +982,12 @@ point numbers")
          ;; Disable parallel build as it gives errors: atlas_pthread.h is
          ;; needed to compile C files before it is generated.
          "-Ss" "pmake" "make -j 1"
+         ;; Probe is failing for MIPS.  We therefore define the system
+         ;; architecture explicitly by setting (-A) MACHINETYPE = 49
+         ;; 'MIPSR1xK' and (-V) ISA = 1 'none'.
+         ,,@(if (string-prefix? "mips" (%current-system))
+              (list "-A" "49" "-V" "1")
+              (list))
          ;; Generate shared libraries.
          "--shared"
          ;; Build a full LAPACK library.
diff --git a/gnu/packages/mg.scm b/gnu/packages/mg.scm
new file mode 100644
index 0000000000..a315dfed33
--- /dev/null
+++ b/gnu/packages/mg.scm
@@ -0,0 +1,64 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mg)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pkg-config))
+
+(define-public mg
+  (package
+    (name "mg")
+    (version "20050429")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://homepage.boetes.org/software/mg/mg-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "19kib0aha4a40izzds7r63qfb2akq4sily6k28fl0n0zdgq0cna1"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "Makefile.in"
+                    (("-Werror") "")
+                    (("-lcurses") "-lncurses")
+                    (("/usr/bin/install") "install -D")
+                    (("/usr/bin/strip") "strip"))))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (arguments
+     ;; No test suite available.
+     '(#:tests? #f
+       #:phases (alist-cons-before
+                 'configure 'pre-configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (substitute* "Makefile.in"
+                     (("(prefix=[[:blank:]]*)/usr/local" all prefix)
+                      (string-append prefix (assoc-ref outputs "out")))))
+                 %standard-phases)))
+    (home-page "http://homepage.boetes.org/software/mg/")
+    (synopsis "Microscopic GNU Emacs clone")
+    (description
+     "mg is Micro GNU Emacs; this is a portable version of the mg maintained
+by the OpenBSD team.")
+    (license public-domain)))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 54b81955d9..1731cd59af 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,17 +25,18 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages pulseaudio)
-  #:use-module ((gnu packages linux)
-                #:select (alsa-lib))
+  #:use-module (gnu packages linux)               ;alsa-lib
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake))
 
 (define-public libmad
   (package
@@ -129,6 +131,90 @@ a highly stable and efficient implementation.")
    (license license:lgpl2.0+)
    (home-page "http://id3lib.sourceforge.net/")))
 
+(define-public taglib
+  (package
+    (name "taglib")
+    (version "1.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://taglib.github.io/releases/taglib-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "06n7gnbcqa3r6c9gv00y0y1r48dyyazm6yj403i7ma0r2k6p3lvj"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))                    ;no 'test' target
+    (inputs `(("zlib" ,zlib)))
+    (home-page "http://developer.kde.org/~wheeler/taglib.html")
+    (synopsis "Library to access audio file meta-data")
+    (description
+     "TagLib is a C++ library for reading and editing the meta-data of several
+popular audio formats.  Currently it supports both ID3v1 and ID3v2 for MP3
+files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC,
+Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")
+
+    ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
+    (license (list license:lgpl2.1 license:mpl1.1))))
+
+(define-public mp3info
+  (package
+    (name "mp3info")
+    (version "0.8.5a")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
+                    version ".tgz"))
+              (sha256
+               (base32
+                "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "Makefile"
+                  (("/bin/rm") "rm")
+                  (("/usr/bin/install") "install")
+                  (("man/man1") "share/man/man1")))))
+    (build-system gnu-build-system)
+    (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
+    (arguments
+     '(#:phases (alist-replace
+                 'configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let ((out (assoc-ref outputs "out")))
+                     (substitute* "Makefile"
+                       (("prefix=.*")
+                        (string-append "prefix := " out "\n")))))
+                 (alist-cons-before
+                  'install 'pre-install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let ((out (assoc-ref outputs "out")))
+                      (mkdir-p (string-append out "/bin"))
+                      (mkdir-p (string-append out "/share/man/man1"))))
+                  (alist-cons-after
+                   'install 'post-install
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     ;; Move the GTK+ interface to "gui".
+                     (let ((out (assoc-ref outputs "out"))
+                           (gui (assoc-ref outputs "gui")))
+                       (mkdir-p (string-append gui "/bin"))
+                       (rename-file (string-append out "/bin/gmp3info")
+                                    (string-append gui "/bin/gmp3info"))))
+                   %standard-phases)))
+        #:tests? #f))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk+" ,gtk+-2)
+       ("ncurses" ,ncurses)))
+    (home-page "http://www.ibiblio.org/mp3info/")
+    (synopsis "MP3 technical info viewer and ID3 1.x tag editor")
+    (description
+     "MP3Info is a little utility used to read and modify the ID3 tags of MP3
+files.  MP3Info can also display various techincal aspects of an MP3 file
+including playing time, bit-rate, sampling frequency and other attributes in a
+pre-defined or user-specifiable output format.")
+    (license license:gpl2+)))
+
 (define-public libmp3splt
   (package
    (name "libmp3splt")
diff --git a/gnu/packages/nutrition.scm b/gnu/packages/nutrition.scm
new file mode 100644
index 0000000000..72bd5b0d3e
--- /dev/null
+++ b/gnu/packages/nutrition.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages nutrition)
+  #:use-module (guix packages)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages python))
+
+(define-public gourmet
+  (package
+    (name "gourmet")
+    (version "0.17.4")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://github.com/thinkle/gourmet/archive/"
+                          version ".tar.gz"))
+      (sha256
+       (base32
+        "1qvz175arzqm10lpfx8ffadrgirs3240zzqcp0h7sl53qfwx7v8k"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("distutils-extra"   ,python2-distutils-extra)
+       ("intltool"          ,intltool)
+       ("python-pygtk"      ,python2-pygtk))) ;for tests
+    ;; TODO: Add python-reportlab and/or python-poppler for printing/pdf
+    ;; export, and python-beautifulsoup for web import plugin.
+    (inputs
+     `(("pygtk"             ,python2-pygtk)
+       ("sqlalchemy"        ,python2-sqlalchemy)
+       ("python-pillow"     ,python2-pillow)
+       ("elib.intl"         ,python2-elib.intl)
+       ;; XXX: This really isn't an input for gourmet but of pillow.  Making
+       ;; it a propagated input in pillow doesn't seem to get its site path
+       ;; into gourmet's wrapper's PYTHONPATH however...
+       ("python-setuptools" ,python2-setuptools)))
+    (arguments
+     `(#:python ,python-2               ;exception and print syntax
+       #:tests? #f))                    ;tests look bitrotted
+    (home-page "http://thinkle.github.io/gourmet/")
+    (synopsis "Recipe organizer")
+    (description
+     "Gourmet Recipe Manager is a recipe organizer that allows you to collect,
+search, organize, and browse your recipes.  Gourmet can also generate shopping
+lists and calculate nutritional information.  It imports Mealmaster,
+MasterCook and KRecipe files and exports PDFs, webpages, and other formats.")
+    (license gpl2+)))
diff --git a/gnu/packages/ocrad.scm b/gnu/packages/ocrad.scm
index ee35256123..8ad4f32670 100644
--- a/gnu/packages/ocrad.scm
+++ b/gnu/packages/ocrad.scm
@@ -27,14 +27,14 @@
 (define-public ocrad
   (package
     (name "ocrad")
-    (version "0.23")
+    (version "0.24")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/ocrad/ocrad-"
                                  version ".tar.lz"))
              (sha256
               (base32
-               "0vx0v4sz8ivgcp04zggdq9cv9sb5zxnn7j1nm15cds0zq1wr9g7m"))))
+               "0hhlx072d00bi9qia0nj5izsq4qkscpfz2mpbyfc72msl3hfvslv"))))
     (build-system gnu-build-system)
     (native-inputs `(("lzip" ,lzip)))
     (home-page "http://www.gnu.org/software/ocrad/")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 0bbd7b6dcd..408734d6fa 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -118,7 +118,7 @@ the Nix package manager.")
 
 (define guix-devel
   ;; Development version of Guix.
-  (let ((commit "47739f5"))
+  (let ((commit "3b09332"))
     (package (inherit guix-0.8)
       (version (string-append "0.8." commit))
       (source (origin
@@ -129,7 +129,7 @@ the Nix package manager.")
                       (recursive? #t)))
                 (sha256
                  (base32
-                  "17azgv1i8f9spwa35m23d2yk0wlmf48xm6ka1rqh30nhacwlmnx7"))))
+                  "1szlyhpy688ca96kfyjb6cdy5zhxvqmdig4m7ql7rjqfmz0gvka1"))))
       (arguments
        (substitute-keyword-arguments (package-arguments guix-0.8)
          ((#:phases phases)
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index eaf789f828..6524110f2a 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -27,7 +27,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20141022")
+    (version "20141122")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +35,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1dpssybids6k6na4rh2gwv1m581h28rcmsvq0hs56hrrh7qpjmvp"))))
+        "1kpd4ayd4lb867nfnpkam4b3mh86jl6cdy386x1rich938gbrg38"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (home-page "http://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/glib-tests-gapplication.patch b/gnu/packages/patches/glib-tests-gapplication.patch
new file mode 100644
index 0000000000..1845fcb9b8
--- /dev/null
+++ b/gnu/packages/patches/glib-tests-gapplication.patch
@@ -0,0 +1,28 @@
+This test has proven to be unreliable, often leading to things like this
+in gapplication.log:
+
+  PASS: gapplication 3 /gapplication/properties
+  Failed to register: The connection is closed
+  **
+  GLib-GIO:ERROR:gapplication.c:564:test_quit: assertion failed: (activated)
+  ok 4 /gapplication/app-id
+  PASS: gapplication 4 /gapplication/app-id
+  ../../tap-test: line 5: 24133 Aborted                 $1 -k --tap
+  # GLib-GIO:ERROR:gapplication.c:564:test_quit: assertion failed: (activated)
+  cleaning up pid 24154
+  ERROR: gapplication - missing test plan
+  ERROR: gapplication - exited with status 134 (terminated by signal 6?)
+
+See <https://bugs.debian.org/756273> and <http://bugs.gnu.org/18445>.
+
+
+--- glib-2.40.2/gio/tests/gapplication.c	2014-12-03 22:34:44.566667649 +0100
++++ glib-2.40.2/gio/tests/gapplication.c	2014-12-03 22:34:45.346674179 +0100
+@@ -685,7 +685,6 @@ main (int argc, char **argv)
+ /*  g_test_add_func ("/gapplication/non-unique", test_nonunique); */
+   g_test_add_func ("/gapplication/properties", properties);
+   g_test_add_func ("/gapplication/app-id", appid);
+-  g_test_add_func ("/gapplication/quit", test_quit);
+   g_test_add_func ("/gapplication/local-actions", test_local_actions);
+ /*  g_test_add_func ("/gapplication/remote-actions", test_remote_actions); */
+   g_test_add_func ("/gapplication/local-command-line", test_local_command_line);
diff --git a/gnu/packages/patches/guile-linux-syscalls.patch b/gnu/packages/patches/guile-linux-syscalls.patch
index 1fb24bde27..57c7f2589d 100644
--- a/gnu/packages/patches/guile-linux-syscalls.patch
+++ b/gnu/packages/patches/guile-linux-syscalls.patch
@@ -7,7 +7,7 @@ diff --git a/libguile/posix.c b/libguile/posix.c
 index 324f21b..cbee94d 100644
 --- a/libguile/posix.c
 +++ b/libguile/posix.c
-@@ -2286,6 +2286,266 @@ scm_init_popen (void)
+@@ -2286,6 +2286,261 @@ scm_init_popen (void)
  }
  #endif
  
@@ -84,12 +84,7 @@ index 324f21b..cbee94d 100644
 +  free (c_options);
 +
 +  if (err != 0)
-+    {
-+      /* XXX: `insmod' actually provides better translation of some of
-+	 the error codes.  */
-+      errno = err;
-+      SCM_SYSERROR;
-+    }
++    SCM_SYSERROR;
 +
 +  return SCM_UNSPECIFIED;
 +}
diff --git a/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch b/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch
new file mode 100644
index 0000000000..2f8b159870
--- /dev/null
+++ b/gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch
@@ -0,0 +1,15 @@
+From resolution of upstream python issue #20901: http://bugs.python.org/issue20901
+
+diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py
+--- Lib/sqlite3/test/hooks.py
++++ Lib/sqlite3/test/hooks.py
+@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase):
+             create table bar (a, b)
+             """)
+         second_count = len(progress_calls)
+-        self.assertGreater(first_count, second_count)
++        self.assertGreaterEqual(first_count, second_count)
+ 
+     def CheckCancelOperation(self):
+         """
+
diff --git a/gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch b/gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch
new file mode 100644
index 0000000000..6a08e56351
--- /dev/null
+++ b/gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch
@@ -0,0 +1,39 @@
+From e5df32ffbf37481dbb6a70c4d4e7b7b9778c5549 Mon Sep 17 00:00:00 2001
+From: "John (J5) Palmieri" <johnp@redhat.com>
+Date: Sat, 13 Aug 2011 04:13:28 -0400
+Subject: remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN
+
+
+diff --git a/gi/pygi-info.c b/gi/pygi-info.c
+index 8729e25..007b609 100644
+--- a/gi/pygi-info.c
++++ b/gi/pygi-info.c
+@@ -165,9 +165,6 @@ _pygi_info_new (GIBaseInfo *info)
+         case GI_INFO_TYPE_CONSTANT:
+             type = &PyGIConstantInfo_Type;
+             break;
+-        case GI_INFO_TYPE_ERROR_DOMAIN:
+-            type = &PyGIErrorDomainInfo_Type;
+-            break;
+         case GI_INFO_TYPE_UNION:
+             type = &PyGIUnionInfo_Type;
+             break;
+@@ -484,7 +481,6 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
+                 case GI_INFO_TYPE_INVALID:
+                 case GI_INFO_TYPE_FUNCTION:
+                 case GI_INFO_TYPE_CONSTANT:
+-                case GI_INFO_TYPE_ERROR_DOMAIN:
+                 case GI_INFO_TYPE_VALUE:
+                 case GI_INFO_TYPE_SIGNAL:
+                 case GI_INFO_TYPE_PROPERTY:
+@@ -863,7 +859,6 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
+                     case GI_INFO_TYPE_INVALID:
+                     case GI_INFO_TYPE_FUNCTION:
+                     case GI_INFO_TYPE_CONSTANT:
+-                    case GI_INFO_TYPE_ERROR_DOMAIN:
+                     case GI_INFO_TYPE_VALUE:
+                     case GI_INFO_TYPE_SIGNAL:
+                     case GI_INFO_TYPE_PROPERTY:
+-- 
+cgit v0.10.1
+
diff --git a/gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch b/gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch
new file mode 100644
index 0000000000..f121e8852a
--- /dev/null
+++ b/gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch
@@ -0,0 +1,15 @@
+From resolution of upstream python issue #20901: http://bugs.python.org/issue20901
+
+diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py
+--- Lib/sqlite3/test/hooks.py
++++ Lib/sqlite3/test/hooks.py
+@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase):
+             create table bar (a, b)
+             """)
+         second_count = len(progress_calls)
+-        self.assertTrue(first_count > second_count)
++        self.assertGreaterEqual(first_count, second_count)
+ 
+     def CheckCancelOperation(self):
+         """
+
diff --git a/gnu/packages/patches/wmctrl-64-fix.patch b/gnu/packages/patches/wmctrl-64-fix.patch
new file mode 100644
index 0000000000..3ec1c913ff
--- /dev/null
+++ b/gnu/packages/patches/wmctrl-64-fix.patch
@@ -0,0 +1,32 @@
+Description: Correct 64 Architecture implementation of 32 bit data
+Author: Chris Donoghue <cdonoghu@gmail.com>
+Bug-Debian: http://bugs.debian.org/362068
+
+--- wmctrl-1.07.orig/main.c
++++ wmctrl-1.07/main.c
+@@ -1425,6 +1425,16 @@ static gchar *get_property (Display *dis
+      *
+      * long_length = Specifies the length in 32-bit multiples of the
+      *               data to be retrieved.
++     *
++     * NOTE:  see 
++     * http://mail.gnome.org/archives/wm-spec-list/2003-March/msg00067.html
++     * In particular:
++     *
++     * 	When the X window system was ported to 64-bit architectures, a
++     * rather peculiar design decision was made. 32-bit quantities such
++     * as Window IDs, atoms, etc, were kept as longs in the client side
++     * APIs, even when long was changed to 64 bits.
++     *
+      */
+     if (XGetWindowProperty(disp, win, xa_prop_name, 0, MAX_PROPERTY_VALUE_LEN / 4, False,
+             xa_prop_type, &xa_ret_type, &ret_format,     
+@@ -1441,6 +1451,8 @@ static gchar *get_property (Display *dis
+ 
+     /* null terminate the result to make string handling easier */
+     tmp_size = (ret_format / 8) * ret_nitems;
++    /* Correct 64 Architecture implementation of 32 bit data */
++    if(ret_format==32) tmp_size *= sizeof(long)/4;
+     ret = g_malloc(tmp_size + 1);
+     memcpy(ret, ret_prop, tmp_size);
+     ret[tmp_size] = '\0';
diff --git a/gnu/packages/patches/xf86-video-openchrome-includes.patch b/gnu/packages/patches/xf86-video-openchrome-includes.patch
new file mode 100644
index 0000000000..3c79596387
--- /dev/null
+++ b/gnu/packages/patches/xf86-video-openchrome-includes.patch
@@ -0,0 +1,35 @@
+This follows the same rationale as xf86-input-synaptics-glibc-2.20.patch
+to allow building with glibc-2.20.
+diff -u -r xf86-video-openchrome-0.2.906.old/src/via_3d.h xf86-video-openchrome-0.2.906/src/via_3d.h
+--- xf86-video-openchrome-0.2.906.old/src/via_3d.h	2014-11-23 14:04:58.000000000 +0100
++++ xf86-video-openchrome-0.2.906/src/via_3d.h	2014-11-23 14:18:37.000000000 +0100
+@@ -24,6 +24,7 @@
+ #ifndef VIA_3D_H
+ #define VIA_3D_H
+ 
++#include "xorg-server.h"
+ #include "xf86.h"
+ #include "via_dmabuffer.h"
+ 
+diff -u -r xf86-video-openchrome-0.2.906.old/src/via_driver.h xf86-video-openchrome-0.2.906/src/via_driver.h
+--- xf86-video-openchrome-0.2.906.old/src/via_driver.h	2014-11-23 14:04:58.000000000 +0100
++++ xf86-video-openchrome-0.2.906/src/via_driver.h	2014-11-23 14:21:43.000000000 +0100
+@@ -35,6 +35,7 @@
+ #endif
+ 
+ #include "vgaHW.h"
++#include "xorg-server.h"
+ #include "xf86.h"
+ 
+ #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 
+diff -u -r xf86-video-openchrome-0.2.906.old/src/via_timing.h xf86-video-openchrome-0.2.906/src/via_timing.h
+--- xf86-video-openchrome-0.2.906.old/src/via_timing.h	2014-11-23 14:04:58.000000000 +0100
++++ xf86-video-openchrome-0.2.906/src/via_timing.h	2014-11-23 14:20:50.000000000 +0100
+@@ -25,6 +25,7 @@
+ #ifndef _TIMING_H_
+ #define _TIMING_H_
+ 
++#include "xorg-server.h"
+ #include "xf86.h"
+ 
+ /* Aspect ratio not CVT standard */
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index 54a3e2277c..3181ba7592 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,14 +28,14 @@
 (define-public pcre
   (package
    (name "pcre")
-   (version "8.32")
+   (version "8.36")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/pcre/pcre/"
                                 version "/pcre-" version ".tar.bz2"))
             (sha256
              (base32
-              "0m8gvrf1q0iwll4csirvvj98xygw4cy7r14i5l53ivsqs2dzn4x9"))))
+              "1fs5p1z67m9f4xnyil3s4lhgyld78f7m4d1yawpyhh0cvrbk90zg"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
@@ -43,7 +44,8 @@
     `(#:configure-flags '("--enable-utf"
                           "--enable-pcregrep-libz"
                           "--enable-pcregrep-libbz2"
-                          "--enable-pcretest-libreadline")))
+                          "--enable-pcretest-libreadline"
+                          "--enable-jit")))
    (synopsis "Perl Compatible Regular Expressions")
    (description
     "The PCRE library is a set of functions that implement regular expression
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 8d71660180..a724a1b21f 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -161,3 +161,206 @@ SHA-1 message digest algorithm for use by Perl programs.")
     (home-page (string-append "http://search.cpan.org/~gaas/Digest-SHA1-"
                               version "/SHA1.pm"))
     (license (package-license perl))))
+
+(define-public perl-benchmark-timer
+  (package
+    (name "perl-benchmark-timer")
+    (version "0.7102")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/D/DC/DCOPPIT/"
+                                  "Benchmark-Timer-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1gl9ybm9hgia3ld5s11b7bv2p2hmx5rss5hxcfy6rmbzrjcnci01"))))
+    (build-system perl-build-system)
+    ;; The optional input module Statistics::PointEstimation (from
+    ;; Statistics-TTest) lists no license.
+    (synopsis "Benchmarking with statistical confidence")
+    (description
+     "The Benchmark::Timer class allows you to time portions of code
+conveniently, as well as benchmark code by allowing timings of repeated
+trials.  It is perfect for when you need more precise information about the
+running time of portions of your code than the Benchmark module will give you,
+but don't want to go all out and profile your code.")
+    (home-page (string-append "http://search.cpan.org/~dcoppit/"
+                              "Benchmark-Timer-" version))
+    (license gpl2)))
+
+(define-public perl-exporter-lite
+  (package
+    (name "perl-exporter-lite")
+    (version "0.06")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
+                                  "Exporter-Lite-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0k4gkvid4fr8yvwj0axdx5111mzfw2iipls3qllxr364fqhmclpj"))))
+    (build-system perl-build-system)
+    (synopsis "Lightweight exporting of functions and variables")
+    (description
+     "Exporter::Lite is an alternative to Exporter, intended to provide a
+lightweight subset of the most commonly-used functionality.  It supports
+import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
+    (home-page (string-append "http://search.cpan.org/~neilb/"
+                              "Exporter-Lite-" version))
+    (license (package-license perl))))
+
+(define-public perl-probe-perl
+  (package
+    (name "perl-probe-perl")
+    (version "0.03")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/K/KW/KWILLIAMS/"
+                                  "Probe-Perl-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0c9wiaz0mqqknafr4jdr0g2gdzxnn539182z0icqaqvp5qgd5r6r"))))
+    (build-system perl-build-system)
+    (synopsis "Information about the currently running perl")
+    (description
+     "Probe::Perl provides methods for obtaining information about the
+currently running perl interpreter.  It originally began life as code in the
+Module::Build project, but has been externalized here for general use.")
+    (home-page (string-append "http://search.cpan.org/~kwilliams/"
+                              "Probe-Perl-" version))
+    (license (package-license perl))))
+
+(define-public perl-ipc-run3
+  (package
+    (name "perl-ipc-run3")
+    (version "0.048")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                                  "IPC-Run3-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0r9m8q78bg7yycpixd7738jm40yz71p2q7inm766kzsw3g6c709x"))))
+    (build-system perl-build-system)
+    (synopsis "Run a subprocess with input/ouput redirection")
+    (description
+     "The IPC::Run3 module allows you to run a subprocess and redirect stdin,
+stdout, and/or stderr to files and perl data structures.  It aims to satisfy
+99% of the need for using system, qx, and open3 with a simple, extremely
+Perlish API and none of the bloat and rarely used features of IPC::Run.")
+    (home-page (string-append "http://search.cpan.org/~rjbs/"
+                              "IPC-Run3-" version))
+    ;; "You may use this module under the terms of the BSD, Artistic, or GPL
+    ;; licenses, any version."
+    (license (list bsd-3 gpl3+))))
+
+(define-public perl-test-script
+  (package
+    (name "perl-test-script")
+    (version "1.07")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                                  "Test-Script-" version ".tar.gz"))
+              (sha256
+               (base32
+                "15pb4zzsnm33msc1syhig2bk05xqc0pckmfyahdwbd177bj5w7p2"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("probe-perl" ,perl-probe-perl)
+       ("ipc-run3"   ,perl-ipc-run3)))
+    (synopsis "Basic cross-platform tests for scripts")
+    (description
+     "The intent of the Test::Script module is to provide a series of basic
+tests for 80% of the testing you will need to do for scripts in the script (or
+bin as is also commonly used) paths of your Perl distribution.")
+    (home-page (string-append "http://search.cpan.org/~adamk/"
+                              "Test-Script-" version))
+    (license (package-license perl))))
+
+(define-public perl-file-which
+  (package
+    (name "perl-file-which")
+    (version "1.09")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                                  "File-Which-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1hxjyh9yrv32f3g8vrnr8iylzprajsac14vjm75kf1qnj1jyqbxp"))))
+    (build-system perl-build-system)
+    (native-inputs `(("test-script" ,perl-test-script)))
+    (synopsis "Portable implementation of the `which' utility")
+    (description
+     "File::Which was created to be able to get the paths to executable
+programs on systems under which the `which' program wasn't implemented in the
+shell.")
+    (home-page (string-append "http://search.cpan.org/~adamk/"
+                              "File-Which-" version))
+    (license (package-license perl))))
+
+(define-public perl-getopt-tabular
+  (package
+    (name "perl-getopt-tabular")
+    (version "0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/G/GW/GWARD/"
+                                  "Getopt-Tabular-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0xskl9lcj07sdfx5dkma5wvhhgf5xlsq0khgh8kk34dm6dv0dpwv"))))
+    (build-system perl-build-system)
+    (synopsis "Table-driven argument parsing for Perl")
+    (description
+     "Getopt::Tabular is a Perl 5 module for table-driven argument parsing,
+vaguely inspired by John Ousterhout's Tk_ParseArgv.")
+    (home-page (string-append "http://search.cpan.org/~gward/"
+                              "Getopt-Tabular-" version))
+    (license (package-license perl))))
+
+(define-public perl-regexp-common
+  (package
+    (name "perl-regexp-common")
+    (version "2013031301")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/A/AB/ABIGAIL/"
+                                  "Regexp-Common-" version ".tar.gz"))
+              (sha256
+               (base32
+                "112wybsm0vr8yfannx6sdfvgp5vza28gjgr3pgn69ak4sac836kj"))))
+    (build-system perl-build-system)
+    (synopsis "Provide commonly requested regular expressions")
+    (description
+     "This module exports a single hash (`%RE') that stores or generates
+commonly needed regular expressions.  Patterns currently provided include:
+balanced parentheses and brackets, delimited text (with escapes), integers and
+floating-point numbers in any base (up to 36), comments in 44 languages,
+offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip
+codes.")
+    (home-page (string-append "http://search.cpan.org/~abigail/"
+                              "Regexp-Common-" version))
+    ;; Quad-licensed: Perl Artistic, Perl Artistic 2.0, X11, and BSD.
+    (license (list (package-license perl) x11 bsd-3))))
+
+(define-public perl-sys-cpu
+  (package
+    (name "perl-sys-cpu")
+    (version "0.61")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/M/MZ/MZSANFORD/"
+                                  "Sys-CPU-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1r6976bs86j7zp51m5vh42xlyah951jgdlkimv202413kjvqc2i5"))))
+    (build-system perl-build-system)
+    (synopsis "Perl extension for getting CPU information")
+    (description
+     "In responce to a post on perlmonks.org, a module for counting the number
+of CPU's on a system.  Support has now also been added for type of CPU and
+clock speed.")
+    (home-page (string-append "http://search.cpan.org/~mzsanford/"
+                              "Sys-CPU-" version))
+    (license (package-license perl))))
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 279a6c1f29..dc4905a271 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -71,13 +71,11 @@ instance.")))
        #:builder (begin
                    (use-modules (guix build utils))
 
-                   (let* ((out  (assoc-ref %outputs "out"))
-                          (bin  (string-append out "/bin"))
-                          (prog (string-append ,target "-pkg-config"))
-                          (native
-                           (string-append
-                            (assoc-ref %build-inputs "pkg-config")
-                            "/bin/pkg-config")))
+                   (let* ((in     (assoc-ref %build-inputs "pkg-config"))
+                          (out    (assoc-ref %outputs "out"))
+                          (bin    (string-append out "/bin"))
+                          (prog   (string-append ,target "-pkg-config"))
+                          (native (string-append in "/bin/pkg-config")))
 
                      (mkdir-p bin)
 
@@ -85,7 +83,13 @@ instance.")))
                      ;; This satisfies the pkg.m4 macros, which use
                      ;; AC_PROG_TOOL to determine the `pkg-config' program
                      ;; name.
-                     (symlink native (string-append bin "/" prog))))))
+                     (symlink native (string-append bin "/" prog))
+
+                     ;; Also make 'pkg.m4' available, some packages might
+                     ;; expect it.
+                     (mkdir-p (string-append out "/share"))
+                     (symlink (string-append in "/share/aclocal")
+                              (string-append out "/share/aclocal"))))))
     (native-inputs `(("pkg-config" ,%pkg-config)))
 
     ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index bd38a4b53d..1576c3dfea 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -196,3 +196,44 @@ output to 8 different formats, including HTML, LaTeX and ODF.  It can also
 output to ANSI color escape sequences, so that highlighted source code can be
 seen in a terminal.")
     (license gpl3+)))
+
+(define-public astyle
+  (package
+    (name "astyle")
+    (version "2.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/astyle/astyle/astyle%20"
+                           version "/astyle_"  version "_linux.tar.gz"))
+       (sha256
+        (base32
+         "0f9sh9kq5ajp1yz133h00fr9235p1m698x7n3h7zbrhjiwgynd6s"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no tests
+       #:make-flags (list (string-append "prefix=" %output)
+                          "INSTALL=install"
+                          "all")
+       #:phases (alist-replace
+                 'configure
+                 (lambda _ (chdir "build/gcc"))
+                 (alist-cons-after
+                  'install 'install-libs
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    ;; Libraries are not installed by default
+                    (let* ((output (assoc-ref outputs "out"))
+                           (libdir (string-append output "/lib")))
+                      (begin
+                        (mkdir-p libdir)
+                        (for-each (lambda (l)
+                                    (copy-file
+                                     l (string-append libdir "/" (basename l))))
+                                  (find-files "bin" "lib*")))))
+                  %standard-phases))))
+    (home-page "http://astyle.sourceforge.net/")
+    (synopsis "Source code indenter, formatter, and beautifier")
+    (description
+     "Artistic Style is a source code indenter, formatter, and beautifier for
+the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.")
+    (license lgpl3+)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 378660482f..dc7def5507 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -24,27 +24,40 @@
 (define-module (gnu packages python)
   #:use-module ((guix licenses)
                 #:select (asl2.0 bsd-3 bsd-2 bsd-style cc0 expat x11 x11-style
-                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1+
+                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+
                           psfl public-domain))
   #:use-module ((guix licenses) #:select (zlib) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gdbm)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages zip)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages perl)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
-  #:use-module (guix build-system trivial))
+  #:use-module (guix build-system trivial)
+  #:use-module (srfi srfi-1))
 
 (define-public python-2
   (package
@@ -55,7 +68,8 @@
       (method url-fetch)
       (uri (string-append "https://www.python.org/ftp/python/"
                           version "/Python-" version ".tar.xz"))
-      (patches (list (search-patch "python-libffi-mips-n32-fix.patch")))
+      (patches (list (search-patch "python-libffi-mips-n32-fix.patch")
+                     (search-patch "python2-sqlite-3.8.4-test-fix.patch")))
       (patch-flags '("-p0"))
       (sha256
        (base32
@@ -109,6 +123,7 @@
         (let ((bz2 (assoc-ref %build-inputs "bzip2"))
               (gdbm (assoc-ref %build-inputs "gdbm"))
               (libffi (assoc-ref %build-inputs "libffi"))
+              (sqlite (assoc-ref %build-inputs "sqlite"))
               (openssl (assoc-ref %build-inputs "openssl"))
               (readline (assoc-ref %build-inputs "readline"))
               (zlib (assoc-ref %build-inputs "zlib")))
@@ -117,6 +132,7 @@
                (string-append "CPPFLAGS="
                 "-I" bz2 "/include "
                 "-I" gdbm "/include "
+                "-I" sqlite "/include "
                 "-I" openssl "/include "
                 "-I" readline "/include "
                 "-I" zlib "/include")
@@ -124,6 +140,7 @@
                 "-L" bz2 "/lib "
                 "-L" gdbm "/lib "
                 "-L" libffi "/lib "
+                "-L" sqlite "/lib "
                 "-L" openssl "/lib "
                 "-L" readline "/lib "
                 "-L" zlib "/lib")))
@@ -167,6 +184,7 @@
      `(("bzip2" ,bzip2)
        ("gdbm" ,gdbm)
        ("libffi" ,libffi)                         ; for ctypes
+       ("sqlite" ,sqlite)                         ; for sqlite extension
        ("openssl" ,openssl)
        ("readline" ,readline)
        ("zlib" ,zlib)
@@ -198,6 +216,7 @@ data types.")
               (uri (string-append "https://www.python.org/ftp/python/"
                                   version "/Python-" version ".tar.xz"))
               (patches (list (search-patch "python-fix-tests.patch")
+                             (search-patch "python-sqlite-3.8.4-test-fix.patch")
                              (search-patch "python-libffi-mips-n32-fix.patch")))
               (patch-flags '("-p0"))
               (sha256
@@ -1873,3 +1892,653 @@ writing C extensions for Python as easy as Python itself.")
     (name "python2-cython")
     (inputs
      `(("python-2" ,python-2))))) ; this is not automatically changed
+
+;; This version of numpy is missing the documentation and is only used to
+;; build matplotlib which is required to build numpy's documentation.
+(define python-numpy-bootstrap
+  (package
+    (name "python-numpy-bootstrap")
+    (version "1.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/numpy"
+                           "/numpy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "070ybfvpgfmiz2hs94x445hvkh9dh52nyi0m8jp5kdihgvhbnx80"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-nose" ,python-nose)
+       ("atlas" ,atlas)))
+    (native-inputs
+     `(("gfortran" ,gfortran-4.8)))
+    (arguments
+     `(#:phases
+       (alist-cons-before
+        'build 'set-environment-variables
+        (lambda* (#:key inputs #:allow-other-keys)
+          (let* ((atlas-threaded
+                  (string-append (assoc-ref inputs "atlas") 
+                                 "/lib/libtatlas.so"))
+                 ;; On single core CPUs only the serial library is created.
+                 (atlas-lib
+                  (if (file-exists? atlas-threaded)
+                      atlas-threaded
+                      (string-append (assoc-ref inputs "atlas") 
+                                     "/lib/libsatlas.so"))))
+            (setenv "ATLAS" atlas-lib)))
+        ;; Tests can only be run after the library has been installed and not
+        ;; within the source directory.
+        (alist-cons-after
+         'install 'check
+         (lambda _ 
+           (with-directory-excursion "/tmp"
+             (zero? (system* "python" "-c" 
+                             "import numpy; numpy.test(verbose=2)"))))
+         (alist-delete 
+          'check 
+          %standard-phases)))))
+    (home-page "http://www.numpy.org/")
+    (synopsis "Fundamental package for scientific computing with Python")
+    (description "NumPy is the fundamental package for scientific computing
+with Python. It contains among other things: a powerful N-dimensional array
+object, sophisticated (broadcasting) functions, tools for integrating C/C++
+and Fortran code, useful linear algebra, Fourier transform, and random number
+capabilities.")
+    (license bsd-3)))
+
+(define python2-numpy-bootstrap
+  (package-with-python2 python-numpy-bootstrap))
+
+(define-public python-numpy
+  (package (inherit python-numpy-bootstrap)
+    (name "python-numpy")
+    (outputs '("out" "doc"))
+    (inputs 
+     `(("which" ,which)
+       ("python-setuptools" ,python-setuptools)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-sphinx" ,python-sphinx)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-numpydoc" ,python-numpydoc)
+       ,@(package-inputs python-numpy-bootstrap)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("texlive" ,texlive)
+       ("texinfo" ,texinfo)
+       ("perl" ,perl)
+       ,@(package-native-inputs python-numpy-bootstrap)))
+    (arguments
+     `(,@(substitute-keyword-arguments 
+             (package-arguments python-numpy-bootstrap)
+           ((#:phases phases)
+            `(alist-cons-after
+              'install 'install-doc
+              (lambda* (#:key outputs #:allow-other-keys)
+                (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                       (doc (string-append 
+                             data "/doc/" ,name "-" 
+                             ,(package-version python-numpy-bootstrap)))
+                       (info (string-append data "/info"))
+                       (html (string-append doc "/html"))
+                       (pyver ,(string-append "PYVER=")))
+                  (with-directory-excursion "doc"
+                    (mkdir-p html)
+                    (system* "make" "html" pyver)
+                    (system* "make" "latex" "PAPER=a4" pyver)
+                    (system* "make" "-C" "build/latex" 
+                             "all-pdf" "PAPER=a4" pyver)
+                    ;; FIXME: Generation of the info file fails.
+                    ;; (system* "make" "info" pyver)
+                    ;; (mkdir-p info)
+                    ;; (copy-file "build/texinfo/numpy.info"
+                    ;;            (string-append info "/numpy.info"))
+                    (for-each (lambda (file)
+                                (copy-file (string-append "build/latex" file)
+                                           (string-append doc file)))
+                              '("/numpy-ref.pdf" "/numpy-user.pdf"))
+                    (with-directory-excursion "build/html"
+                      (for-each (lambda (file)
+                                  (let* ((dir (dirname file))
+                                         (tgt-dir (string-append html "/" dir)))
+                                    (unless (equal? "." dir)
+                                      (mkdir-p tgt-dir))
+                                    (copy-file file (string-append html "/" file))))
+                                (find-files "." ".*"))))))
+              ,phases)))))))
+
+(define-public python2-numpy
+  (let ((numpy (package-with-python2 python-numpy)))
+    (package (inherit numpy)
+      ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is customized for
+      ;; Python 2. Since it is also an input to PYTHON2-MATPLOTLIB, we need to
+      ;; import the right version of 'matplotlib' as well.
+      (inputs `(("python2-numpydoc" ,python2-numpydoc)
+                ("python2-matplotlib" ,python2-matplotlib)
+                ,@(alist-delete "python-numpydoc" 
+                                (alist-delete "python-matplotlib"
+                                              (package-inputs numpy))))))))
+
+(define-public python-pyparsing
+  (package
+    (name "python-pyparsing")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/pyparsing"
+                           "/pyparsing-" version ".tar.gz"))
+       (sha256
+        (base32
+         "01lasib0n2fp2k99c988qhz16lm9hcwmnmrmhybdb3jq2xmkvr0p"))))
+    (build-system python-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:tests? #f ; no test target
+       #:modules ((guix build python-build-system)
+                  (guix build utils))
+       #:phases
+       (alist-cons-after
+        'install 'install-doc
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let* ((doc (string-append (assoc-ref outputs "doc") 
+                                     "/share/doc/" ,name "-" ,version))
+                 (html-doc (string-append doc "/html"))
+                 (examples (string-append doc "/examples")))
+            (mkdir-p html-doc)
+            (mkdir-p examples)
+            (for-each 
+             (lambda (dir tgt)
+               (map (lambda (file) 
+                      (copy-file file (string-append tgt "/" (basename file))))
+                    (find-files dir ".*")))
+             (list "docs" "htmldoc" "examples")
+             (list doc html-doc examples))))
+        %standard-phases)))
+    (home-page "http://pyparsing.wikispaces.com")
+    (synopsis "Python parsing class library")
+    (description
+     "The pyparsing module is an alternative approach to creating and
+executing simple grammars, vs. the traditional lex/yacc approach, or the use
+of regular expressions.  The pyparsing module provides a library of classes
+that client code uses to construct the grammar directly in Python code.")
+    (license expat)))
+
+(define-public python2-pyparsing
+  (package-with-python2 python-pyparsing))
+
+(define-public python-numpydoc
+  (package
+    (name "python-numpydoc")
+    (version "0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append 
+             "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-docutils" ,python-docutils)
+       ("python-sphinx" ,python-sphinx)
+       ("python-nose" ,python-nose)))
+    (home-page "https://pypi.python.org/pypi/numpydoc")
+    (synopsis
+     "Numpy's Sphinx extensions")
+    (description
+     "Sphinx extension to support docstrings in Numpy format.")
+    (license bsd-2)))
+
+(define-public python2-numpydoc
+  (package 
+    (inherit (package-with-python2 python-numpydoc))
+    ;; With python-2 1 test (out of 30) fails because it doesn't find
+    ;; matplotlib.  With python-3 it seems to detect at run-time the absence
+    ;; of matplotlib.
+    (arguments `(#:tests? #f
+                 #:python ,python-2))))
+
+(define-public python-matplotlib
+  (package
+    (name "python-matplotlib")
+    (version "1.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/matplotlib"
+                           "/matplotlib-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0m6v9nwdldlwk22gcd339zg6mny5m301fxgks7z8sb8m9wawg8qp"))))
+    (build-system python-build-system)
+    (outputs '("out" "doc"))
+    (inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-dateutil" ,python-dateutil-2)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-six" ,python-six)
+       ("python-pytz" ,python-pytz)
+       ("python-numpy" ,python-numpy-bootstrap)
+       ("python-sphinx" ,python-sphinx)
+       ("python-numpydoc" ,python-numpydoc)
+       ("python-nose" ,python-nose)
+       ("python-mock" ,python-mock)
+       ("libpng" ,libpng)
+       ("imagemagick" ,imagemagick)
+       ("freetype" ,freetype)
+       ;; FIXME: Add backends when available.
+       ;("python-pygtk" ,python-pygtk)
+       ;("python-pycairo" ,python-pycairo)
+       ;("python-pygobject" ,python-pygobject)
+       ;("python-wxpython" ,python-wxpython)
+       ;("python-pyqt" ,python-pyqt)
+       ))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("texlive" ,texlive)
+       ("texinfo" ,texinfo)))
+    (arguments
+     `(#:phases
+       (alist-cons-after
+        'install 'install-doc
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                 (doc (string-append data "/doc/" ,name "-" ,version))
+                 (info (string-append data "/info"))
+                 (html (string-append doc "/html")))
+            (with-directory-excursion "doc"
+              ;; Without setting this variable we get an encoding error.
+              (setenv "LANG" "en_US.UTF-8")
+              ;; Produce pdf in 'A4' format.
+              (substitute* (find-files "." "conf\\.py")
+                (("latex_paper_size = 'letter'")
+                 "latex_paper_size = 'a4'"))
+              (mkdir-p html)
+              (mkdir-p info)
+              ;; The doc recommends to run the 'html' target twice.
+              (system* "python" "make.py" "html")
+              (system* "python" "make.py" "html")
+              (system* "python" "make.py" "latex")
+              (system* "python" "make.py" "texinfo")
+              (copy-file "build/texinfo/matplotlib.info"
+                         (string-append info "/matplotlib.info"))
+              (copy-file "build/latex/Matplotlib.pdf"
+                         (string-append doc "/Matplotlib.pdf"))
+              (with-directory-excursion "build/html"
+                (map (lambda (file)
+                       (let* ((dir (dirname file))
+                              (tgt-dir (string-append html "/" dir)))
+                         (unless (equal? "." dir)
+                           (mkdir-p tgt-dir))
+                         (copy-file file (string-append html "/" file))))
+                     (find-files "." ".*"))))))
+        %standard-phases)))
+    (home-page "http://matplotlib.org")
+    (synopsis "2D plotting library for Python")
+    (description
+     "Matplotlib is a Python 2D plotting library which produces publication
+quality figures in a variety of hardcopy formats and interactive environments
+across platforms.  Matplotlib can be used in Python scripts, the python and
+ipython shell, web application servers, and six graphical user interface
+toolkits.")
+    (license psfl)))
+
+(define-public python2-matplotlib
+  (let ((matplotlib (package-with-python2 python-matplotlib)))
+    (package (inherit matplotlib)
+      ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is
+      ;; customized for Python 2.
+      (inputs `(("python2-numpydoc" ,python2-numpydoc)
+                ,@(alist-delete "python-numpydoc" 
+                                (package-inputs matplotlib)))))))
+
+;; Scipy 0.14.0 with Numpy 0.19.X fails several tests.  This is known and
+;; planned to be fixed in 0.14.1.  It is claimed that the failures can safely
+;; be ignored:
+;; http://mail.scipy.org/pipermail/scipy-dev/2014-September/020043.html
+;; https://github.com/scipy/scipy/issues/3853 
+;;
+;; The main test suite procedure prints the summary message:
+;;
+;; Ran 16412 tests in 245.033s
+;; FAILED (KNOWNFAIL=277, SKIP=921, errors=327, failures=42)
+;; 
+;; However, it still does return normally.
+(define-public python-scipy
+  (package
+    (name "python-scipy")
+    (version "0.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/scipy"
+                           "/scipy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "053bmz4qmnk4dmxvspfak8r10rpmy6mzwfzgy33z338ppzka6hab"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-nose" ,python-nose)
+       ("python-sphinx" ,python-sphinx)
+       ("atlas" ,atlas)))
+    (native-inputs
+     `(("gfortran" ,gfortran-4.8)
+       ("texlive" ,texlive)
+       ("perl" ,perl)))
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:phases
+       (alist-cons-before
+        'build 'set-environment-variables
+        (lambda* (#:key inputs #:allow-other-keys)
+          (let* ((atlas-threaded
+                  (string-append (assoc-ref inputs "atlas") 
+                                 "/lib/libtatlas.so"))
+                 ;; On single core CPUs only the serial library is created.
+                 (atlas-lib
+                  (if (file-exists? atlas-threaded)
+                      atlas-threaded
+                      (string-append (assoc-ref inputs "atlas") 
+                                     "/lib/libsatlas.so"))))
+            (setenv "ATLAS" atlas-lib)))
+        (alist-cons-after
+         'install 'install-doc
+         (lambda* (#:key outputs #:allow-other-keys)
+           (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                  (doc (string-append data "/doc/" ,name "-" ,version))
+                  (html (string-append doc "/html"))
+                  (pyver ,(string-append "PYVER=")))
+             (with-directory-excursion "doc"
+               ;; Without setting this variable we get an encoding error.
+               (setenv "LANG" "en_US.UTF-8")
+               ;; Fix generation of images for mathematical expressions.
+               (substitute* (find-files "source" "conf\\.py")
+                 (("pngmath_use_preview = True")
+                  "pngmath_use_preview = False"))
+               (mkdir-p html)
+               (system* "make" "html" pyver)
+               (system* "make" "latex" "PAPER=a4" pyver)
+               (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
+               (copy-file "build/latex/scipy-ref.pdf"
+                          (string-append doc "/scipy-ref.pdf"))
+               (with-directory-excursion "build/html"
+                 (for-each (lambda (file)
+                             (let* ((dir (dirname file))
+                                    (tgt-dir (string-append html "/" dir)))
+                               (unless (equal? "." dir)
+                                 (mkdir-p tgt-dir))
+                               (copy-file file (string-append html "/" file))))
+                           (find-files "." ".*"))))))
+         ;; Tests can only be run after the library has been installed and not
+         ;; within the source directory.
+         (alist-cons-after
+          'install 'check
+          (lambda _ 
+            (with-directory-excursion "/tmp"
+              (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
+          (alist-delete 
+           'check 
+           %standard-phases))))))
+    (home-page "http://www.scipy.org/")
+    (synopsis "The Scipy library provides efficient numerical routines")
+    (description "The SciPy library is one of the core packages that make up
+the SciPy stack.  It provides many user-friendly and efficient numerical
+routines such as routines for numerical integration and optimization.")
+    (license bsd-3)))
+
+(define-public python2-scipy
+  (let ((scipy (package-with-python2 python-scipy)))
+    (package (inherit scipy)
+      ;; Use packages customized for python-2.
+      (inputs `(("python2-matplotlib" ,python2-matplotlib)
+                ("python2-numpy" ,python2-numpy)
+                ,@(alist-delete "python-matplotlib" 
+                                (alist-delete "python-numpy" 
+                                              (package-inputs scipy))))))))
+
+(define-public python-sqlalchemy
+  (package
+    (name "python-sqlalchemy")
+    (version "0.9.7")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://pypi.python.org/packages/source/S/"
+                          "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
+      (sha256
+       (base32
+        "059ayifj5l08v6vv56anhyibyllscn10dlzr2fcw68gz1hfjdzsz"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython) ;for c extensions
+       ("python-pytest" ,python-pytest)
+       ("python-mock"   ,python-mock))) ;for tests
+    (arguments
+     `(#:phases (alist-replace
+                 'check
+                 (lambda _ (zero? (system* "py.test")))
+                 %standard-phases)))
+    (home-page "http://www.sqlalchemy.org")
+    (synopsis "Database abstraction library")
+    (description
+     "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
+gives application developers the full power and flexibility of SQL.  It
+provides a full suite of well known enterprise-level persistence patterns,
+designed for efficient and high-performing database access, adapted into a
+simple and Pythonic domain language.")
+    (license x11)))
+
+(define-public python2-sqlalchemy
+  (package-with-python2 python-sqlalchemy))
+
+(define-public python-distutils-extra
+  (package
+    (name "python-distutils-extra")
+    (version "2.38")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
+                          version "/+download/python-distutils-extra-"
+                          version ".tar.gz"))
+      (sha256
+       (base32
+        "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "https://launchpad.net/python-distutils-extra/")
+    (synopsis "Enhancements to Python's distutils")
+    (description
+     "The python-distutils-extra module enables you to easily integrate
+gettext support, themed icons, and scrollkeeper-based documentation into
+Python's distutils.")
+    (license gpl2)))
+
+(define-public python2-distutils-extra
+  (package-with-python2 python-distutils-extra))
+
+(define-public python2-elib.intl
+  (package
+    (name "python2-elib.intl")
+    (version "0.0.3")
+    (source
+     (origin
+       ;; This project doesn't tag releases or publish tarballs, so we take
+       ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dieterv/elib.intl.git")
+             (commit "d09997cfef")))
+       (sha256
+        (base32
+         "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python2-setuptools" ,python2-setuptools)))
+    (arguments
+     ;; incompatible with Python 3 (exception syntax)
+     `(#:python ,python-2
+       #:tests? #f
+       ;; With standard flags, the install phase attempts to create a zip'd
+       ;; egg file, and fails with an error: 'ZIP does not support timestamps
+       ;; before 1980'
+       #:configure-flags '("--single-version-externally-managed"
+                           "--record=elib.txt")))
+    (home-page "https://github.com/dieterv/elib.intl")
+    (synopsis "Enhanced internationalization for Python")
+    (description
+     "The elib.intl module provides enhanced internationalization (I18N)
+services for your Python modules and applications.")
+    (license lgpl3+)))
+
+(define-public python-pillow
+  (package
+    (name "python-pillow")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pypi.python.org/packages/source/P/"
+                           "Pillow/Pillow-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0iw36c73wkhz88wa78v6l43llsb080ihw8yq7adhfqxdib7l4hzr"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("python-nose"       ,python-nose)))
+    (inputs
+     `(("lcms"     ,lcms)
+       ("zlib"     ,zlib)
+       ("libjpeg"  ,libjpeg)
+       ("openjpeg" ,openjpeg)
+       ("libtiff"  ,libtiff)))
+    (propagated-inputs
+     `(;; Used at runtime for pkg_resources
+       ("python-setuptools" ,python-setuptools)))
+    (arguments
+     `(#:phases (alist-cons-after
+                 'install 'check-installed
+                 (lambda _
+                   (begin
+                     (setenv "HOME" (getcwd))
+                     (and (zero? (system* "python" "selftest.py" "--installed"))
+                          (zero? (system* "python" "test-installed.py")))))
+                 (alist-delete 'check %standard-phases))))
+    (home-page "https://pypi.python.org/pypi/Pillow")
+    (synopsis "Fork of the Python Imaging Library")
+    (description
+     "The Python Imaging Library adds image processing capabilities to your
+Python interpreter.  This library provides extensive file format support, an
+efficient internal representation, and fairly powerful image processing
+capabilities.  The core image library is designed for fast access to data
+stored in a few basic pixel formats.  It should provide a solid foundation for
+a general image processing tool.")
+    (license (x11-style
+              "http://www.pythonware.com/products/pil/license.htm"
+              "The PIL Software License"))))
+
+(define-public python2-pillow
+  (package-with-python2 python-pillow))
+
+(define-public python-pycparser
+  (package
+    (name "python-pycparser")
+    (version "2.10")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://pypi.python.org/packages/source/p/"
+                          "pycparser/pycparser-" version ".tar.gz"))
+      (sha256
+       (base32
+        "0v5qfq03yvd1pi0dwlgfai0p3dh9bq94pydn19c4pdn0c6v9hzcm"))))
+    (outputs '("out" "doc"))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-setuptools" ,python-setuptools)))
+    (arguments
+     `(#:phases 
+       (alist-replace
+        'check
+        (lambda _
+          (with-directory-excursion "tests"
+            (zero? (system* "python" "all_tests.py"))))
+        (alist-cons-after
+         'install 'install-doc
+         (lambda* (#:key outputs #:allow-other-keys)
+           (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                  (doc (string-append data "/doc/" ,name "-" ,version))
+                  (examples (string-append doc "/examples")))
+             (mkdir-p examples)
+             (for-each (lambda (file)
+                         (copy-file (string-append "." file)
+                                    (string-append doc file)))
+                       '("/README.rst" "/CHANGES" "/LICENSE"))
+             (copy-recursively "examples" examples)))
+         %standard-phases))))
+    (home-page "https://github.com/eliben/pycparser")
+    (synopsis "C parser in Python")
+    (description
+     "Pycparser is a complete parser of the C language, written in pure Python
+using the PLY parsing library.  It parses C code into an AST and can serve as
+a front-end for C compilers or analysis tools.")
+    (license bsd-3)))
+
+(define-public python2-pycparser
+  (package-with-python2 python-pycparser))
+
+(define-public python-cffi
+  (package
+    (name "python-cffi")
+    (version "0.8.6")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://pypi.python.org/packages/source/c/"
+                          "cffi/cffi-" version ".tar.gz"))
+      (sha256 
+       (base32 "0406j3sgndmx88idv5zxkkrwfqxmjl18pj8gf47nsg4ymzixjci5"))))
+    (build-system python-build-system)
+    (outputs '("out" "doc"))
+    (inputs
+     `(("libffi" ,libffi)))
+    (propagated-inputs ; required at run-time
+     `(("python-pycparser" ,python-pycparser)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-sphinx" ,python-sphinx)
+       ("python-setuptools" ,python-setuptools)))
+    (arguments
+     `(#:tests? #f ; FIXME: requires pytest
+       #:phases 
+       (alist-cons-after
+        'install 'install-doc
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
+                 (doc (string-append data "/doc/" ,name "-" ,version))
+                 (html (string-append doc "/html")))
+            (with-directory-excursion "doc"
+              (system* "make" "html")
+              (mkdir-p html)
+              (copy-recursively "build/html" html))
+            (copy-file "LICENSE" (string-append doc "/LICENSE"))))
+        %standard-phases)))
+    (home-page "http://cffi.readthedocs.org")
+    (synopsis "Foreign function interface for Python")
+    (description
+     "Foreign Function Interface for Python calling C code.")
+    (license expat)))
+
+(define-public python2-cffi
+  (package-with-python2 python-cffi))
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 75a14b6e8f..0a37a246bd 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.scm
@@ -33,7 +33,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages perl))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 46c7c34c3c..30b772d4d9 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -26,6 +26,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
@@ -36,7 +37,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages gl)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages xorg))
 
 (define-public libxkbcommon
@@ -52,10 +53,20 @@
                "176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch"))))
     (build-system gnu-build-system)
     (inputs
-     `(("libxcb" ,libxcb)))
+     `(("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("xkeyboard-config" ,xkeyboard-config)))
     (native-inputs
      `(("bison" ,bison)
        ("pkg-config" ,pkg-config)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-xkb-config-root="
+                            (assoc-ref %build-inputs "xkeyboard-config")
+                            "/share/X11/xkb")
+             (string-append "--with-x-locale-root="
+                            (assoc-ref %build-inputs "libx11")
+                            "/share/X11/locale"))))
     (home-page "http://xkbcommon.org/")
     (synopsis "Library to handle keyboard descriptions")
     (description "Xkbcommon is a library to handle keyboard descriptions,
@@ -85,7 +96,6 @@ X11 (yet).")
     (propagated-inputs
      `(("mesa" ,mesa)))
     (inputs
-     ;; FIXME: Add input ruby once available.
      `(("alsa-lib" ,alsa-lib)
        ("dbus" ,dbus)
        ("fontconfig" ,fontconfig)
@@ -102,6 +112,7 @@ X11 (yet).")
        ("openssl" ,openssl)
        ("pulseaudio" ,pulseaudio)
        ("python-wrapper" ,python-wrapper)
+       ("ruby" ,ruby)
        ("xcb-util" ,xcb-util)
        ("xcb-util-image" ,xcb-util-image)
        ("xcb-util-keysyms" ,xcb-util-keysyms)
diff --git a/gnu/packages/scrot.scm b/gnu/packages/scrot.scm
deleted file mode 100644
index b842c2dcf0..0000000000
--- a/gnu/packages/scrot.scm
+++ /dev/null
@@ -1,68 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Alex Kost <alezost@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 scrot)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages image))
-
-(define-public scrot
-  (package
-    (name "scrot")
-    (version "0.8")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://linuxbrit.co.uk/downloads/scrot-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
-    (build-system gnu-build-system)
-    (arguments
-     ;; By default, man and doc are put in PREFIX/{man,doc} instead of
-     ;; PREFIX/share/{man,doc}.
-     '(#:configure-flags
-       (list (string-append "--mandir="
-                            (assoc-ref %outputs "out")
-                            "/share/man"))
-       #:phases (alist-replace
-                 'install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out (assoc-ref outputs "out"))
-                          (doc (string-append out "/share/doc/scrot")))
-                     (mkdir-p doc)
-                     (zero?
-                      (system* "make" "install"
-                               (string-append "docsdir=" doc)))))
-                 %standard-phases)))
-    (inputs
-     `(("libx11" ,libx11)
-       ("giblib" ,giblib)))
-    (home-page "http://linuxbrit.co.uk/software/")
-    (synopsis "Command-line screen capture utility for X Window System")
-    (description
-     "Scrot allows to save a screenshot of a full screen, a window or a part
-of the screen selected by mouse.")
-    ;; This license removes a clause about X Consortium from the original
-    ;; X11 license.
-    (license (x11-style "file://COPYING"
-                        "See 'COPYING' in the distribution."))))
diff --git a/gnu/packages/socat.scm b/gnu/packages/socat.scm
new file mode 100644
index 0000000000..7c0bc3d964
--- /dev/null
+++ b/gnu/packages/socat.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages socat)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages openssl))
+
+;; XXX: Group with other networking tools like tcpdump in a module?
+(define-public socat
+  (package
+    (name "socat")
+    (version "1.7.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.dest-unreach.org/socat/download/socat-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "028yjka2zr6j1i8pmfmvzqki8ajczdl1hnry1x31xbbg3j83jxsb"))))
+    (build-system gnu-build-system)
+    (arguments '(#:tests? #f))                    ;no 'check' phase
+    (inputs `(("openssl" ,openssl)))
+    (home-page "http://www.dest-unreach.org/socat/")
+    (synopsis
+     "Open bidirectional communication channels from the command line")
+    (description
+     "socat is a relay for bidirectional data transfer between two independent
+data channels---files, pipes, devices, sockets, etc.  It can create
+\"listening\" sockets, named pipes, and pseudo terminals.
+
+socat can be used, for instance, as TCP port forwarder, as a shell interface
+to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
+line, to logically connect serial lines on different computers, or to
+establish a relatively secure environment (su and chroot) for running client
+or server shell scripts with network connections. ")
+    (license license:gpl2)))
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index a5a7902f9c..583c44c50b 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -56,13 +56,13 @@ reimplementation.")
 (define-public ucommon
   (package
    (name "ucommon")
-   (version "6.1.11")
+   (version "6.2.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/commoncpp/" name "-"
                    version ".tar.gz"))
             (sha256 (base32
-                     "0hpwxiyd7c3qnzksk6vw94cdig1v8yy6khgcaa87a7hb3zbkv4zg"))))
+                     "1apk1k877knvh2k1yqspsln5wm81a4ly4w97ang1qhi21ydwgjnn"))))
    (build-system gnu-build-system)
    (synopsis "Common C++ framework for threaded applications")
    (description "GNU uCommon C++ is meant as a very light-weight C++ library
@@ -75,13 +75,13 @@ support.")
 (define-public ccrtp
   (package
    (name "ccrtp")
-   (version "2.0.9")
+   (version "2.1.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/ccrtp/ccrtp-"
                    version ".tar.gz"))
             (sha256 (base32
-                     "1prh2niwa4lzvskk12j4ckr7dv141dfh8yjmpkbhbnv4gmpifci0"))))
+                     "1p1pk2m7v75rdrh05rizpqcd5p08g3n541rw0kssyfzd805fb90d"))))
    (build-system gnu-build-system)
    (inputs `(("ucommon" ,ucommon)
              ("libgcrypt" ,libgcrypt)))
@@ -142,13 +142,13 @@ multiplayer games.")
 (define-public sipwitch
   (package
    (name "sipwitch")
-   (version "1.9.2")
+   (version "1.9.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/sipwitch/sipwitch-"
                    version ".tar.gz"))
             (sha256 (base32
-                     "0cf0zrdfi4w9qn50ags3rvwc29km2k526f6sm6i7jb0hsrvg0k8x"))))
+                     "1iyh390rmxqrks7rypl8ql7fhd3pmy2ckqnp1p0llzrx67jh2q91"))))
    (build-system gnu-build-system)
    ;; The configure.ac uses pkg-config but in a kludgy way which breaks when 
    ;; cross-compiling.  Among other issues there the program name "pkg-config"
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index 02637befe4..f14bbb8c06 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages tcsh)
   #:use-module (gnu packages which)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages zip)
   #:autoload   (gnu packages texinfo) (texinfo))
 
diff --git a/gnu/packages/tre.scm b/gnu/packages/tre.scm
new file mode 100644
index 0000000000..33d2cff093
--- /dev/null
+++ b/gnu/packages/tre.scm
@@ -0,0 +1,45 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright 2014 John Darrington
+;;;
+;;; 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 tre)
+  #:use-module (gnu packages)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix licenses))
+
+(define-public tre
+  (package
+    (name "tre")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri       
+          (string-append "http://laurikari.net/tre/" name "-" version
+                         ".tar.bz2"))
+        (sha256
+          (base32 "0n36cgqys59r2gmb7jzbqiwsy790v8nbxk82d2n2saz0rp145ild"))))
+
+    (build-system gnu-build-system)
+    (synopsis "Approximate regex matching library and agrep utility")
+    (description "Superset of the POSIX regex API, enabling approximate
+matching.  Also ships a version of the agrep utility which behaves similar to
+grep but features ineaxct matching.")
+    (home-page "http://laurikari.net/tre")
+    (license bsd-2)))
diff --git a/gnu/packages/unclutter.scm b/gnu/packages/unclutter.scm
deleted file mode 100644
index ca1f7ede77..0000000000
--- a/gnu/packages/unclutter.scm
+++ /dev/null
@@ -1,69 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Alex Kost <alezost@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 unclutter)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages xorg))
-
-(define-public unclutter
-  (package
-   (name "unclutter")
-   (version "8")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "http://ftp.x.org/contrib/utilities/unclutter-"
-                  version ".tar.Z"))
-            (sha256
-             (base32
-              "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
-   (build-system gnu-build-system)
-   (arguments
-    '(#:tests? #f  ; no check target
-      #:phases (alist-delete
-                'configure
-                (alist-replace
-                 'install
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (bin  (string-append out "/bin"))
-                          (man1 (string-append out "/share/man/man1")))
-                     (mkdir-p bin)
-                     (mkdir-p man1)
-                     (zero?
-                      (system* "make" "install" "install.man"
-                               (string-append "BINDIR=" bin)
-                               (string-append "MANDIR=" man1)))))
-                 %standard-phases))))
-   (inputs `(("libx11" ,libx11)))
-   (home-page "http://ftp.x.org/contrib/utilities/")
-   (synopsis "Hide idle mouse cursor")
-   (description
-    "Unclutter is a program which runs permanently in the background of an
-X11 session.  It checks on the X11 pointer (cursor) position every few
-seconds, and when it finds it has not moved (and no buttons are pressed
-on the mouse, and the cursor is not in the root window) it creates a
-small sub-window as a child of the window the cursor is in.  The new
-window installs a cursor of size 1x1 but a mask of all 0, i.e. an
-invisible cursor.  This allows you to see all the text in an xterm or
-xedit, for example.  The human factors crowd would agree it should make
-things less distracting.")
-   (license public-domain)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0b52f0c2e5..4f9ed54d56 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,13 +23,18 @@
 
 (define-module (gnu packages version-control)
   #:use-module ((guix licenses)
-                #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+ x11-style))
+                #:select (asl2.0 bsd-2
+                          gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
+                          x11-style))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system trivial)
   #:use-module (guix build utils)
   #:use-module (gnu packages apr)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages cook)
   #:use-module (gnu packages curl)
@@ -204,6 +210,130 @@ everything from small to very large projects with speed and efficiency.")
    (license gpl2)
    (home-page "http://git-scm.com/")))
 
+(define-public shflags
+  (package
+    (name "shflags")
+    (version "1.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://shflags.googlecode.com/files/"
+                                  "shflags-" version ".tgz"))
+              (sha256
+               (base32
+                "08laxhf1hifh3w4j0hri5ppcklaqz0mnkmbaz8j0wxih29vi8slm"))))
+    (build-system trivial-build-system)
+    (native-inputs `(("tar" ,tar)
+                     ("gzip" ,gzip)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((source (assoc-ref %build-inputs "source"))
+                          (tar    (assoc-ref %build-inputs "tar"))
+                          (gzip   (assoc-ref %build-inputs "gzip"))
+                          (output (assoc-ref %outputs "out"))
+                          (srcdir (string-append output "/src")))
+                     (begin
+                       (setenv "PATH" (string-append gzip "/bin"))
+                       (system* (string-append tar "/bin/tar") "xzf"
+                                source)
+                       (chdir ,(string-append name "-" version))
+                       (mkdir-p srcdir)
+                       (copy-file "src/shflags"
+                                  (string-append srcdir "/shflags"))
+                       #t)))))
+    (home-page "https://code.google.com/p/shflags/")
+    (synopsis "Command-line flags library for shell scripts")
+    (description
+     "Shell Flags (shFlags) is a library written to greatly simplify the
+handling of command-line flags in Bourne based Unix shell scripts (bash, dash,
+ksh, sh, zsh).  Most shell scripts use getopt for flags processing, but the
+different versions of getopt on various OSes make writing portable shell
+scripts difficult.  shFlags instead provides an API that doesn't change across
+shell and OS versions so the script writer can be confident that the script
+will work.")
+    (license lgpl2.1)))
+
+(define-public git-flow
+  (package
+    (name "git-flow")
+    ;; This version has not be officially released yet, so we build it
+    ;; directly from the git repository.
+    (version "0.4.2-pre")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/nvie/gitflow/")
+                    (commit "15aab26")))
+              (sha256
+               (base32
+                "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
+    (build-system gnu-build-system)
+    (inputs `(("shflags" ,shflags)))
+    (arguments
+     '(#:tests? #f                    ; no tests
+       #:make-flags (list (string-append "prefix="
+                                         (assoc-ref %outputs "out")))
+       #:phases (alist-cons-after
+                 'unpack 'reset-shFlags-link
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; The link points to a file in the shFlags submodule.
+                   ;; Redirect it to point to our system shFlags.
+                   (let ((shflags (assoc-ref inputs "shflags")))
+                     (begin
+                       (delete-file "gitflow-shFlags")
+                       (symlink (string-append shflags "/src/shflags")
+                                "gitflow-shFlags"))))
+                 (alist-delete
+                  'configure
+                  (alist-delete 'build %standard-phases)))))
+    (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
+    (synopsis "Git extensions for Vincent Driessen's branching model")
+    (description
+     "Vincent Driessen's branching model is a git branching and release
+management strategy that helps developers keep track of features, hotfixes,
+and releases in bigger software projects.  The git-flow library of git
+subcommands helps automate some parts of the flow to make working with it a
+lot easier.")
+    (license bsd-2)))
+
+(define-public git-test-sequence
+  (let ((commit "48e5a2f"))
+    (package
+      (name "git-test-sequence")
+      (version (string-append "20140312." commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      ;; There are many other scripts in this directory; we
+                      ;; are interested in just one for this package.
+                      (url "https://github.com/dustin/bindir")
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617"))))
+      (build-system trivial-build-system)
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder (begin
+                     (use-modules (guix build utils))
+                     (let* ((source (assoc-ref %build-inputs "source"))
+                            (output (assoc-ref %outputs "out"))
+                            (bindir (string-append output "/bin"))
+                            (script "git-test-sequence"))
+                       (begin
+                         (mkdir-p bindir)
+                         (copy-file (string-append source "/" script)
+                                    (string-append bindir "/" script))
+                         #t)))))
+      (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
+      (synopsis "Run a command over a sequence of commits")
+      (description
+       "git-test-sequence is similar to an automated git bisect except it’s
+linear.  It will test every change between two points in the DAG.  It will
+also walk each side of a merge and test those changes individually.")
+      (license (x11-style "file://LICENSE")))))
+
 (define-public mercurial
   (package
     (name "mercurial")
@@ -297,33 +427,45 @@ property manipulation.")
     (version "1.7.18")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://archive.apache.org/dist/subversion/subversion-"
-                                 version ".tar.bz2"))
+             (uri (string-append "http://archive.apache.org/dist/subversion/"
+                                 "subversion-" version ".tar.bz2"))
              (sha256
               (base32
                "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
-                 'install 'instal-perl-bindings
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Follow the instructions from
-                   ;; 'subversion/bindings/swig/INSTALL'.
-                   (let ((out (assoc-ref outputs "out")))
-                     (and (zero? (system* "make" "swig-pl-lib"))
-                          ;; FIXME: Test failures.
-                          ;; (zero? (system* "make" "check-swig-pl"))
-                          (zero? (system* "make" "install-swig-pl-lib"))
+                 'configure 'patch-libtool-wrapper-ls
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; This substitution allows tests svnauthz_tests and
+                   ;; svnlook_tests to pass.  These tests execute svnauthz and
+                   ;; svnlook through their libtool wrapper scripts from svn
+                   ;; hooks, whose empty environments cause "ls: command not
+                   ;; found" errors.  It would be nice if this fix ultimately
+                   ;; made its way into libtool.
+                   (let ((coreutils (assoc-ref inputs "coreutils")))
+                     (substitute* "libtool"
+                       (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))))
+                 (alist-cons-after
+                  'install 'instal-perl-bindings
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    ;; Follow the instructions from
+                    ;; 'subversion/bindings/swig/INSTALL'.
+                    (let ((out (assoc-ref outputs "out")))
+                      (and (zero? (system* "make" "swig-pl-lib"))
+                           ;; FIXME: Test failures.
+                           ;; (zero? (system* "make" "check-swig-pl"))
+                           (zero? (system* "make" "install-swig-pl-lib"))
 
-                          ;; Set the right installation prefix.
-                          (with-directory-excursion
-                              "subversion/bindings/swig/perl/native"
-                            (and (zero?
-                                  (system* "perl" "Makefile.PL"
-                                           (string-append "PREFIX=" out)))
-                                 (zero?
-                                  (system* "make" "install")))))))
-                 %standard-phases)))
+                           ;; Set the right installation prefix.
+                           (with-directory-excursion
+                               "subversion/bindings/swig/perl/native"
+                             (and (zero?
+                                   (system* "perl" "Makefile.PL"
+                                            (string-append "PREFIX=" out)))
+                                  (zero?
+                                   (system* "make" "install")))))))
+                  %standard-phases))))
     (native-inputs
       `(("pkg-config" ,pkg-config)
         ;; For the Perl bindings.
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 7ec1537678..063f1dae43 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -395,7 +395,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2014.09.06")
+    (version "2014.11.21.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://youtube-dl.org/downloads/"
@@ -403,7 +403,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1a50vqgzp9wjh2763shald6dlmdd5qlqy83vg4yrihdrlh8sk6dd"))))
+                "0rxpx8j4qhhsws6czlfji1x9igsinkbbwvld10qdylll7g9q1v7j"))))
     (build-system python-build-system)
     (inputs `(("setuptools" ,python-setuptools)))
     (home-page "http://youtube-dl.org")
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 0731d0b84b..1ff3dfb5a5 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +20,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages web)
+  #:use-module (ice-9 match)
   #:use-module ((guix licenses) #:prefix l:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -77,6 +79,69 @@ and its related documentation.")
     (license l:asl2.0)
     (home-page "https://httpd.apache.org/")))
 
+(define-public nginx
+  (package
+    (name "nginx")
+    (version "1.6.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://nginx.org/download/nginx-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "060s77qxhkn02fjkcndsr0xppj2bppjzkj0gn84svrykb4lqqq5m"))))
+    (build-system gnu-build-system)
+    (inputs `(("pcre" ,pcre)
+              ("openssl" ,openssl)
+              ("zlib" ,zlib)))
+    (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))))
+    (home-page "http://nginx.org")
+    (synopsis "HTTP and reverse proxy server")
+    (description
+     "Nginx (\"engine X\") is a high-performance web and reverse proxy server
+created by Igor Sysoev.  It can be used both as a standalone web server
+and as a proxy to reduce the load on back-end HTTP or mail servers.")
+    ;; Almost all of nginx is distributed under the bsd-2 license.
+    ;; The exceptions are:
+    ;;   * The 'nginx-http-push' module is covered by the expat license.
+    ;;   * The 'nginx-development-kit' module is mostly covered by bsd-3,
+    ;;     except for two source files which are bsd-4 licensed.
+    (license (list l:bsd-2 l:expat l:bsd-3 l:bsd-4))))
+
 (define-public json-c
   (package
     (name "json-c")
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index f937e2ae3c..8debe4baea 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -31,7 +31,7 @@
 (define-public wget
   (package
     (name "wget")
-    (version "1.16")
+    (version "1.16.1")
     (source
      (origin
       (method url-fetch)
@@ -39,7 +39,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "1rxhr3jmgbwryzl51di4avqxw9m9j1z2aak8q1npns0p184xsqcj"))))
+        "0csdw41hixa4kd0m19r7p41sip1hlnkp5y62bdzq9zhmxq3wg5ib"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
new file mode 100644
index 0000000000..6820d018e3
--- /dev/null
+++ b/gnu/packages/xdisorg.scm
@@ -0,0 +1,341 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Alex Kost <alezost@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 xdisorg)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages xorg))
+
+;; packages outside the x.org system proper
+
+(define-public xclip
+  (package
+    (name "xclip")
+    (version "0.12")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "mirror://sourceforge/" name "/" name "-" version ".tar.gz"))
+        (sha256
+          (base32
+           "0ibcf46rldnv0r424qcnai1fa5iq3lm5q5rdd7snsi5sb78gmixp"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f))   ; There is no test suite
+    (inputs `(("libxmu" ,libxmu)
+              ("libxt" ,libxt)))
+    (home-page "http://xclip.sourceforge.net/")
+    (synopsis "Command line interface to X11 clipboard")
+    (description "Xclip is a command line interface to the X11 clipboard.  It
+can also be used for copying files, as an alternative to sftp/scp, thus
+avoiding password prompts when X11 forwarding has already been setup.")
+    (license license:gpl2+)))
+
+(define-public xeyes
+  (package
+    (name "xeyes")
+    (version "1.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "http://xeyes.sourcearchive.com/downloads/1.0.1/xeyes_"
+               version
+               ".orig.tar.gz"))
+        (sha256
+          (base32
+            "04c3md570j67g55h3bix1qbngcslnq91skli51k3g1avki88zkm9"))))
+    (build-system gnu-build-system)
+    (inputs
+      `(("libxext" ,libxext)
+        ("libxmu" ,libxmu)
+        ("libxt" ,libxt)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://xeyes.sourcearchive.com/")
+    (synopsis "Follow-the-mouse X demo")
+    (description "Xeyes is a demo program for x.org.  It shows eyes
+following the mouse.")
+    (license license:x11)))
+
+
+(define-public pixman
+  (package
+    (name "pixman")
+    (version "0.32.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "http://cairographics.org/releases/pixman-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32
+           "113ycngcssbrps217dyajq96hm9xghsfch82h14yffla1r1fviw0"))))
+    (build-system gnu-build-system)
+    (inputs
+      `(("libpng" ,libpng)
+        ("zlib" ,zlib)))
+    (native-inputs
+      `(("pkg-config" ,pkg-config)))
+    (home-page "http://www.pixman.org/")
+    (synopsis "Low-level pixel manipulation library")
+    (description "Pixman is a low-level software library for pixel
+manipulation, providing features such as image compositing and trapezoid
+rasterisation.")
+    (license license:x11)))
+
+
+(define-public libdrm
+  (package
+    (name "libdrm")
+    (version "2.4.46")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "http://dri.freedesktop.org/libdrm/libdrm-"
+               version
+               ".tar.bz2"))
+        (sha256
+          (base32
+            "1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
+    (build-system gnu-build-system)
+    (inputs
+      `(("libpciaccess" ,libpciaccess)
+        ("libpthread-stubs" ,libpthread-stubs)))
+    (native-inputs
+       `(("pkg-config" ,pkg-config)))
+    (home-page "http://dri.freedesktop.org/wiki/")
+    (synopsis "Direct rendering userspace library")
+    (description "The Direct Rendering Infrastructure, also known as the DRI,
+is a framework for allowing direct access to graphics hardware under the
+X Window System in a safe and efficient manner.  It includes changes to the
+X server, to several client libraries, and to the kernel (DRM, Direct
+Rendering Manager).  The most important use for the DRI is to create fast
+OpenGL implementations providing hardware acceleration for Mesa.
+Several 3D accelerated drivers have been written to the DRI specification,
+including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
+and Matrox.")
+    (license license:x11)))
+
+
+;; old version, required by old mesa, see
+;; http://www.mail-archive.com/nouveau@lists.freedesktop.org/msg10098.html
+(define-public libdrm-2.4.33
+  (package (inherit libdrm)
+    (version "2.4.33")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "http://dri.freedesktop.org/libdrm/libdrm-"
+               version
+               ".tar.bz2"))
+        (sha256
+          (base32
+            "1slgi61n4dlsfli47ql354fd1ppj7n40jd94wvnsdqx0mna9syrd"))))
+    (arguments
+      `(#:configure-flags
+         ;; create libdrm_nouveau.so, needed by mesa, see
+         ;; http://comments.gmane.org/gmane.linux.lfs.beyond.support/43261
+         `("--enable-nouveau-experimental-api")))))
+
+
+(define-public mtdev
+  (package
+    (name "mtdev")
+    (version "1.1.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "http://bitmath.org/code/mtdev/mtdev-"
+               version ".tar.bz2"))
+        (sha256
+          (base32
+            "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d"))))
+    (build-system gnu-build-system)
+    (home-page "http://bitmath.org/code/mtdev/")
+    (synopsis "Multitouch protocol translation library")
+    (description "Mtdev is a stand-alone library which transforms all
+variants of kernel MT events to the slotted type B protocol.  The events
+put into mtdev may be from any MT device, specifically type A without
+contact tracking, type A with contact tracking, or type B with contact
+tracking.")
+    (license license:x11)))
+
+(define-public startup-notification
+  (package
+    (name "startup-notification")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.freedesktop.org/software/" name
+                           "/releases/" name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jmyryrpqb35y9hd5sgxqy2z0r1snw7d3ljw0jak0n0cjdz1yf9w"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("xcb-util" ,xcb-util)))
+    (home-page "http://www.freedesktop.org/wiki/Software/startup-notification/")
+    (synopsis "Application startup notification and feedback library")
+    (description
+     "Startup-notification contains a reference implementation of the startup
+notification protocol.  The reference implementation is mostly under an X Window
+System style license, and has no special dependencies.")
+    ;; Most of the code is provided under x11 license.
+    (license license:lgpl2.0+)))
+
+(define-public wmctrl
+  (package
+    (name "wmctrl")
+    (version "1.07")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://tomas.styblo.name/wmctrl/dist/wmctrl-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np"))
+              (patches (list (search-patch "wmctrl-64-fix.patch")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append "--mandir="
+                            (assoc-ref %outputs "out")
+                            "/share/man"))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxmu" ,libxmu)
+       ("glib" ,glib)))
+    (home-page "http://tomas.styblo.name/wmctrl/")
+    (synopsis "Command-line tool to control X window managers")
+    (description
+     "Wmctrl allows to interact with an X window manager that is compatible
+with the EWMH/NetWM specification.  It can query the window manager for
+information, and request for certain window management actions (resize and
+move windows, switch between desktops, etc.)")
+    (license license:gpl2+)))
+
+(define-public scrot
+  (package
+    (name "scrot")
+    (version "0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://linuxbrit.co.uk/downloads/scrot-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; By default, man and doc are put in PREFIX/{man,doc} instead of
+     ;; PREFIX/share/{man,doc}.
+     '(#:configure-flags
+       (list (string-append "--mandir="
+                            (assoc-ref %outputs "out")
+                            "/share/man"))
+       #:phases (alist-replace
+                 'install
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (doc (string-append out "/share/doc/scrot")))
+                     (mkdir-p doc)
+                     (zero?
+                      (system* "make" "install"
+                               (string-append "docsdir=" doc)))))
+                 %standard-phases)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("giblib" ,giblib)))
+    (home-page "http://linuxbrit.co.uk/software/")
+    (synopsis "Command-line screen capture utility for X Window System")
+    (description
+     "Scrot allows to save a screenshot of a full screen, a window or a part
+of the screen selected by mouse.")
+    ;; This license removes a clause about X Consortium from the original
+    ;; X11 license.
+    (license (license:x11-style "file://COPYING"
+                                "See 'COPYING' in the distribution."))))
+
+(define-public unclutter
+  (package
+    (name "unclutter")
+    (version "8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://ftp.x.org/contrib/utilities/unclutter-"
+                    version ".tar.Z"))
+              (sha256
+               (base32
+                "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; no check target
+       #:phases (alist-delete
+                 'configure
+                 (alist-replace
+                  'install
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (let* ((out  (assoc-ref outputs "out"))
+                           (bin  (string-append out "/bin"))
+                           (man1 (string-append out "/share/man/man1")))
+                      (mkdir-p bin)
+                      (mkdir-p man1)
+                      (zero?
+                       (system* "make" "install" "install.man"
+                                (string-append "BINDIR=" bin)
+                                (string-append "MANDIR=" man1)))))
+                  %standard-phases))))
+    (inputs `(("libx11" ,libx11)))
+    (home-page "http://ftp.x.org/contrib/utilities/")
+    (synopsis "Hide idle mouse cursor")
+    (description
+     "Unclutter is a program which runs permanently in the background of an
+X11 session.  It checks on the X11 pointer (cursor) position every few
+seconds, and when it finds it has not moved (and no buttons are pressed
+on the mouse, and the cursor is not in the root window) it creates a
+small sub-window as a child of the window the cursor is in.  The new
+window installs a cursor of size 1x1 but a mask of all 0, i.e. an
+invisible cursor.  This allows you to see all the text in an xterm or
+xedit, for example.  The human factors crowd would agree it should make
+things less distracting.")
+    (license license:public-domain)))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
new file mode 100644
index 0000000000..69776fc582
--- /dev/null
+++ b/gnu/packages/xfce.scm
@@ -0,0 +1,478 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 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 xfce)
+  #:use-module ((guix licenses) #:hide (freetype))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages pcre))
+
+(define-public gtk-xfce-engine
+  (package
+    (name "gtk-xfce-engine")
+    (version "3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "13c3ajfqkdr6jlqjyhcp4nls0ddanypr83q9qib2ciffik78zq4h"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs `(("gtk+" ,gtk+-2)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "GTK+ theme engine for Xfce")
+    (description
+     "Default GTK+ engine and themes for Xfce Desktop Environment.")
+    (license gpl2+)))
+
+(define-public libxfce4util
+  (package
+    (name "libxfce4util")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs `(("glib" ,glib))) ; required by libxfce4util-1.0.pc
+    (home-page "http://www.xfce.org/")
+    (synopsis "Basic utility library for Xfce")
+    (description
+     "A general-purpose utility library with core application support for the
+Xfce Desktop Environment.")
+    (license lgpl2.0+)))
+
+(define-public xfconf
+  (package
+    (name "xfconf")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0xh520z0qh0ib0ijgnyrgii9h5d4pc53n6mx1chhyzfc86j1jlhp"))))
+    (build-system gnu-build-system)
+    (arguments '(#:parallel-tests? #f)) ; parallel tests failed
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     ;; libxfconf-0.pc refers to all these.
+     `(("glib" ,glib)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)))
+    (inputs
+     `(("libxfce4util" ,libxfce4util)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Configuration storage and query system for Xfce")
+    (description
+     "Settings daemon for Xfce, implemented as a D-Bus-based configuration
+storage system.")
+    (license lgpl2.0+)))
+
+(define-public libxfce4ui
+  (package
+    (name "libxfce4ui")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     ;; libxfce4kbd-private-2.pc refers to all these.
+     `(("gtk+" ,gtk+-2)
+       ("libxfce4util" ,libxfce4util)
+       ("xfconf" ,xfconf)))
+    (inputs `(("libsm" ,libsm)
+              ("libice" ,libice)
+              ("startup-notification" ,startup-notification)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Widgets library for Xfce")
+    (description
+     "Libxfce4ui is the replacement of the old libxfcegui4 library.  It is used
+to share commonly used Xfce widgets amoung the Xfce applications.")
+    (license lgpl2.0+)))
+
+(define-public exo
+  (package
+    (name "exo")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1c05pbagw14djv5zmqg34qfj40jav8sd10w2zi2wpzrad4qal8bf"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     ;; exo-1.pc refers to all these.
+     `(("gtk+" ,gtk+-2)
+       ("libxfce4util" ,libxfce4util)))
+    (inputs
+     `(("libxfce4ui" ,libxfce4ui)
+       ("perl-uri" ,perl-uri)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Extension library for Xfce")
+    (description
+     "An extension library to Xfce.  While Xfce comes with quite a few libraries
+that are targeted at desktop development, libexo is targeted at application
+development.")
+    ;; Libraries are under LGPLv2+, and programs under GPLv2+.
+    (license (list gpl2+ lgpl2.1+))))
+
+(define-public garcon
+  (package
+    (name "garcon")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("glib:bin" ,glib "bin")))
+    (propagated-inputs `(("glib" ,glib))) ; required by garcon-1.pc
+    (inputs `(("libxfce4util" ,libxfce4util)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Implementation of the freedesktop.org menu specification")
+    (description
+     "Garcon is a freedesktop.org compliant menu implementation based on
+GLib and GIO.  It was started as a complete rewrite of the former Xfce menu
+library called libxfce4menu, which, in contrast to garcon, was lacking menu
+merging features essential for loading menus modified with menu editors.")
+    (license lgpl2.0+)))
+
+(define-public tumbler
+  (package
+    (name "tumbler")
+    (version "0.1.25")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0ijm04vm75gmhyyzrlqdr6vzchr01hlajcm84lm6j64cim8dxm82"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("glib:bin" ,glib "bin") ; need glib-genmarshal
+       ("dbus-glib" ,dbus-glib))) ; need dbus-binding-tool
+    (propagated-inputs
+     `(("glib" ,glib))) ; required by tumbler-1.pc
+    (inputs
+     `(("dbus" ,dbus)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("freetype" ,freetype)
+       ("libjpeg" ,libjpeg)
+       ("libgsf" ,libgsf)
+       ("poppler" ,poppler)
+       ("gstreamer" ,gstreamer-0.10)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "D-Bus service for applications to request thumbnails")
+    (description
+     "Tumbler is a D-Bus service for applications to request thumbnails for
+various URI schemes and MIME types.  It is an implementation of the thumbnail
+management D-Bus specification.")
+    (license gpl2+)))
+
+(define-public xfce4-panel
+  (package
+    (name "xfce4-panel")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     `(("libxfce4util" ,libxfce4util))) ; required by libxfce4panel-1.0.pc
+    (inputs
+     `(("exo" ,exo)
+       ("garcon", garcon)
+       ("libwnck" ,libwnck-1)
+       ("libxfce4ui" ,libxfce4ui)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce desktop panel")
+    (description
+     "Desktop panel for Xfce, which contains program launchers, window buttons,
+applications menu, workspace switcher and more.")
+    ;; Libraries are under LGPLv2.1+, and programs under GPLv2+.
+    (license (list gpl2+ lgpl2.1+))))
+
+(define-public xfce4-appfinder
+  (package
+    (name "xfce4-appfinder")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0falckrziw8m1a72nxd7fqq84r3xfbrb6lv35flsca346rzawah4"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("garcon" ,garcon)
+       ("libxfce4ui" ,libxfce4ui)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce application finder")
+    (description
+     "Application finder for Xfce, it will show the applications installed on
+your system in categories, so you can quickly find and launch them.")
+    (license gpl2+)))
+
+(define-public xfce4-session
+  (package
+    (name "xfce4-session")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append "--with-xsession-prefix=" %output))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("iceauth" ,iceauth)
+       ("libsm" ,libsm)
+       ("libwnck" ,libwnck-1)
+       ("libxfce4ui" ,libxfce4ui)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce session manager")
+    (description
+     "Session manager for Xfce, it will restore your session on startup and
+allows you to shutdown the computer from Xfce.")
+    (license gpl2+)))
+
+(define-public xfce4-settings
+  (package
+    (name "xfce4-settings")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("exo" ,exo)
+       ("garcon" ,garcon)
+       ("libnotify" ,libnotify)
+       ("libxcursor", libxcursor)
+       ("libxi" ,libxi)
+       ("libxrandr" ,libxrandr)
+       ("libxfce4ui" ,libxfce4ui)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce settings manager")
+    (description
+     "Settings manager for Xfce, it can control various aspects of the desktop
+like appearance, display, keyboard and mouse settings.")
+    (license gpl2+)))
+
+(define-public thunar
+  (package
+    (name "thunar")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  "Thunar-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1fn8wjzkfvnx2giv3rrg2cyrr2c96f9mskgvcji0ixyfcjga249c"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("exo" ,exo)
+       ("gudev", eudev)
+       ("libexif" ,libexif)
+       ("libnotify" ,libnotify)
+       ("libxfce4ui" ,libxfce4ui)
+       ("pcre" ,pcre)
+       ("xfce4-panel" ,xfce4-panel)
+       ("startup-notification" ,startup-notification)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce file manager")
+    (description
+     "A modern file manager for graphical desktop, aiming to be easy-to-use and
+fast.")
+    (license gpl2+)))
+
+(define-public thunar-volman
+  (package
+    (name "thunar-volman")
+    (version "0.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "1sxw09fwyn5sr6ipxk7r8gqjyf41c2v7vkgl0l6mhy5mcb48f27z"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("exo" ,exo)
+       ("gudev" ,eudev)
+       ("libnotify" ,libnotify)
+       ("libxfce4ui" ,libxfce4ui)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Removable media manager for Thunar")
+    (description
+     "Thunar-volman is an extension for the Thunar File Manager, which enables
+automatic management of removable drives and media.  For example, if
+thunar-volman is installed and configured properly, and you plug in your
+digitcal camera, it will automatically spawn your preferred photo application
+and import the new pictures from your camera.")
+    (license gpl2+)))
+
+(define-public xfwm4
+  (package
+    (name "xfwm4")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("libwnck", libwnck-1)
+       ("libxfce4ui" ,libxfce4ui)
+       ("libxrandr" ,libxrandr)
+       ("libxcomposite" ,libxcomposite)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce window manager")
+    (description
+     "Window manager for Xfce, it handles the placement of windows
+on the screen.")
+    (license gpl2+)))
+
+(define-public xfdesktop
+  (package
+    (name "xfdesktop")
+    (version "4.10.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://archive.xfce.org/xfce/"
+                                  (version-major+minor version)
+                                  "/src/" name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("exo" ,exo)
+       ("garcon" ,garcon)
+       ("libnotify" ,libnotify)
+       ("libwnck" ,libwnck-1)
+       ("libxfce4ui" ,libxfce4ui)
+       ("thunar" ,thunar)))
+    (home-page "http://www.xfce.org/")
+    (synopsis "Xfce desktop manager")
+    (description
+     "Desktop manager for Xfce, it sets the background color or image with
+optional application menu or icons for minimized applications or launchers,
+devices and folders.")
+    (license gpl2+)))
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index b15407417f..6436e52ad6 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -118,7 +119,14 @@
                   (close-pipe in)
                   (close-port out)))
               (zero? (system* "make" "install.doc"))))
-          %standard-phases)))))
+          (alist-cons-after
+           'install 'wrap-xfig
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/xfig")
+                             `("XAPPLRESDIR" suffix
+                               (,(string-append out "/etc/X11/app-defaults"))))))
+           %standard-phases))))))
     (home-page "http://xfig.org/")
     (synopsis "Interactive drawing tool")
     (description
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 41c6a03932..fcefebffc5 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -41,148 +41,11 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages ncurses))
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages xdisorg))
 
 
 
-;; packages outside the x.org system proper
-
-(define-public xeyes
-  (package
-    (name "xeyes")
-    (version "1.0.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "http://xeyes.sourcearchive.com/downloads/1.0.1/xeyes_"
-               version
-               ".orig.tar.gz"))
-        (sha256
-          (base32
-            "04c3md570j67g55h3bix1qbngcslnq91skli51k3g1avki88zkm9"))))
-    (build-system gnu-build-system)
-    (inputs
-      `(("libxext" ,libxext)
-        ("libxmu" ,libxmu)
-        ("libxt" ,libxt)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://xeyes.sourcearchive.com/")
-    (synopsis "Follow-the-mouse X demo")
-    (description "Xeyes is a demo program for x.org.  It shows eyes
-following the mouse.")
-    (license license:x11)))
-
-
-(define-public pixman
-  (package
-    (name "pixman")
-    (version "0.32.4")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "http://cairographics.org/releases/pixman-"
-               version
-               ".tar.gz"))
-        (sha256
-          (base32
-           "113ycngcssbrps217dyajq96hm9xghsfch82h14yffla1r1fviw0"))))
-    (build-system gnu-build-system)
-    (inputs
-      `(("libpng" ,libpng)
-        ("zlib" ,zlib)))
-    (native-inputs
-      `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.pixman.org/")
-    (synopsis "Low-level pixel manipulation library")
-    (description "Pixman is a low-level software library for pixel
-manipulation, providing features such as image compositing and trapezoid
-rasterisation.")
-    (license license:x11)))
-
-
-(define-public libdrm
-  (package
-    (name "libdrm")
-    (version "2.4.46")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "http://dri.freedesktop.org/libdrm/libdrm-"
-               version
-               ".tar.bz2"))
-        (sha256
-          (base32
-            "1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
-    (build-system gnu-build-system)
-    (inputs
-      `(("libpciaccess" ,libpciaccess)
-        ("libpthread-stubs" ,libpthread-stubs)))
-    (native-inputs
-       `(("pkg-config" ,pkg-config)))
-    (home-page "http://dri.freedesktop.org/wiki/")
-    (synopsis "Direct rendering userspace library")
-    (description "The Direct Rendering Infrastructure, also known as the DRI,
-is a framework for allowing direct access to graphics hardware under the
-X Window System in a safe and efficient manner.  It includes changes to the
-X server, to several client libraries, and to the kernel (DRM, Direct
-Rendering Manager).  The most important use for the DRI is to create fast
-OpenGL implementations providing hardware acceleration for Mesa.
-Several 3D accelerated drivers have been written to the DRI specification,
-including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
-and Matrox.")
-    (license license:x11)))
-
-
-;; old version, required by old mesa, see
-;; http://www.mail-archive.com/nouveau@lists.freedesktop.org/msg10098.html
-(define-public libdrm-2.4.33
-  (package (inherit libdrm)
-    (version "2.4.33")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "http://dri.freedesktop.org/libdrm/libdrm-"
-               version
-               ".tar.bz2"))
-        (sha256
-          (base32
-            "1slgi61n4dlsfli47ql354fd1ppj7n40jd94wvnsdqx0mna9syrd"))))
-    (arguments
-      `(#:configure-flags
-         ;; create libdrm_nouveau.so, needed by mesa, see
-         ;; http://comments.gmane.org/gmane.linux.lfs.beyond.support/43261
-         `("--enable-nouveau-experimental-api")))))
-
-
-(define-public mtdev
-  (package
-    (name "mtdev")
-    (version "1.1.3")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "http://bitmath.org/code/mtdev/mtdev-"
-               version ".tar.bz2"))
-        (sha256
-          (base32
-            "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d"))))
-    (build-system gnu-build-system)
-    (home-page "http://bitmath.org/code/mtdev/")
-    (synopsis "Multitouch protocol translation library")
-    (description "Mtdev is a stand-alone library which transforms all
-variants of kernel MT events to the slotted type B protocol.  The events
-put into mtdev may be from any MT device, specifically type A without
-contact tracking, type A with contact tracking, or type B with contact
-tracking.")
-    (license license:x11)))
-
-
 
 ;; packages without propagated input
 ;; (rationale for this separation: The packages in PROPAGATED_INPUTS need to
@@ -1297,7 +1160,8 @@ autotools system.")
           (base32
             "1b8sniijb85v4my6v30ma9yqnwl4hkclci9l1hqxnipfyhl4sa9j"))))
     (build-system gnu-build-system)
-    (inputs
+    (propagated-inputs
+     ;; xcomposite.pc refers to all these.
       `(("xproto" ,xproto)
         ("libxfixes" ,libxfixes)
         ("libx11" ,libx11)
@@ -2843,7 +2707,8 @@ kernel mode setting (KMS).")
                ".tar.bz2"))
         (sha256
           (base32
-            "0hgzn1r7ig94xbr9dvq0bp1nxqlfp2ki8823jca3f22a2kf8wmg7"))))
+            "0hgzn1r7ig94xbr9dvq0bp1nxqlfp2ki8823jca3f22a2kf8wmg7"))
+        (patches (list (search-patch "xf86-video-openchrome-includes.patch")))))
     (build-system gnu-build-system)
     (inputs `(("libx11" ,libx11)
               ("libxext" ,libxext)
diff --git a/gnu/packages/yubico.scm b/gnu/packages/yubico.scm
new file mode 100644
index 0000000000..f2e8ff133c
--- /dev/null
+++ b/gnu/packages/yubico.scm
@@ -0,0 +1,76 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages yubico)
+  #:use-module (gnu packages)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages man)
+  #:use-module (gnu packages curl))
+
+(define-public libyubikey
+  (package
+    (name "libyubikey")
+    (version "1.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://developers.yubico.com/yubico-c/Releases/"
+                    name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1f0plzmr1gwry4rfgq9q70v6qwqny009hac289ad5m6sj7vqflxr"))))
+    (build-system gnu-build-system)
+    (synopsis "Development kit for the YubiKey authentication device")
+    (description
+     "This package contains a C library and command-line tools that make up
+the low-level development kit for the Yubico YubiKey authentication device.")
+    (home-page "https://developers.yubico.com/yubico-c/")
+    (license bsd-2)))
+
+(define-public ykclient
+  (package
+    (name "ykclient")
+    (version "2.13")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://developers.yubico.com/yubico-c-client/Releases/"
+                    name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1lw1j61rfjngs8vvv9m348zl4166zg24bq0dy72r44wiz79yic4j"))))
+    (build-system gnu-build-system)
+
+    ;; There's just one test, and it requires network access to access
+    ;; yubico.com, so skip it.
+    (arguments '(#:tests? #f))
+
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("help2man" ,help2man)))
+    (inputs `(("curl" ,curl)))
+    (synopsis "C library to validate one-time-password YubiKeys")
+    (description
+     "YubiKey C Client Library (libykclient) is a C library used to validate a
+one-time-password (OTP) YubiKey against Yubico’s servers.  See the Yubico
+website for more information about Yubico and the YubiKey.")
+    (home-page "https://developers.yubico.com/yubico-c-client/")
+    (license bsd-2)))
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm
index 5fc98e988c..2b52c777b7 100644
--- a/gnu/services/ssh.scm
+++ b/gnu/services/ssh.scm
@@ -91,12 +91,17 @@ When @var{initialize?} is true, automatically create the seed and host key
 upon service activation if they do not exist yet.  This may take long and
 require interaction.
 
+When @var{initialize?} is false, it is up to the user to initialize the
+randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create
+a key pair with the private key stored in file @var{host-key} (@pxref{lshd
+basics,,, lsh, LSH Manual}).
+
 When @var{interfaces} is empty, lshd listens for connections on all the
 network interfaces; otherwise, @var{interfaces} must be a list of host names
 or addresses.
 
-@var{allow-empty-passwords?} specifies whether to accepts log-ins with empty
-passwords, and @var{root-login?} specifies whether to accepts log-ins as
+@var{allow-empty-passwords?} specifies whether to accept log-ins with empty
+passwords, and @var{root-login?} specifies whether to accept log-ins as
 root.
 
 The other options should be self-descriptive."
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 5236573a39..fbf96c799b 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -96,6 +96,7 @@ Section \"Files\"
   ModulePath \"" xf86-video-intel "/lib/xorg/modules/drivers\"
   ModulePath \"" xf86-video-mach64 "/lib/xorg/modules/drivers\"
   ModulePath \"" xf86-video-nv "/lib/xorg/modules/drivers\"
+  ModulePath \"" xf86-video-sis "/lib/xorg/modules/drivers\"
   ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\"
   ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\"
   ModulePath \"" xf86-input-synaptics "/lib/xorg/modules/input\"
@@ -142,28 +143,31 @@ EndSection
     #~(begin
         (use-modules (ice-9 match))
 
+        (define (exec-from-login-shell command . args)
+          ;; Run COMMAND from a login shell so that it gets to see the same
+          ;; environment variables that one gets when logging in on a tty, for
+          ;; instance.
+          (let* ((pw    (getpw (getuid)))
+                 (shell (passwd:shell pw))
+                 (st    (stat command #f)))
+            (when (and st (not (zero? (logand (stat:mode st) #o100))))
+              ;; The '--login' option is supported at least by Bash and zsh.
+              (execl shell shell "--login" "-c"
+                     (string-join (cons command args))))))
+
+        ;; First, try to run ~/.xsession.
         (let* ((home     (getenv "HOME"))
-               (profile  (string-append home "/.guix-profile/bin"))
-               (PATH     (or (getenv "PATH") ""))
                (xsession (string-append home "/.xsession")))
-          ;; Make sure the user's profile is visible.
-          (setenv "PATH"
-                  (string-append profile
-                                 (if (string-null? PATH) "" ":")
-                                 PATH))
-
-          ;; First, try to run ~/.xsession.
-          (false-if-exception (execl xsession xsession)))
+          (exec-from-login-shell xsession))
 
         ;; Then try a pre-configured session type.
         (let ((ratpoison (string-append #$ratpoison "/bin/ratpoison"))
               (wmaker    (string-append #$windowmaker "/bin/wmaker")))
           (match (command-line)
             ((_ "ratpoison")
-             (execl ratpoison ratpoison))
+             (exec-from-login-shell ratpoison))
             (_
-             ;; 'wmaker' does execvp(argv[0]), so we really can't mess up.
-             (execl wmaker wmaker))))))
+             (exec-from-login-shell wmaker))))))
 
   (gexp->script "xinitrc" builder))
 
diff --git a/gnu/system.scm b/gnu/system.scm
index f98aa83f62..fc8b57fe06 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages nano)
   #:use-module (gnu packages lsof)
   #:use-module (gnu packages gawk)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages firmware)
   #:autoload   (gnu packages cryptsetup) (cryptsetup)
@@ -46,12 +47,15 @@
   #:use-module (gnu services base)
   #:use-module (gnu system grub)
   #:use-module (gnu system shadow)
+  #:use-module (gnu system locale)
   #:use-module (gnu system linux)
   #:use-module (gnu system linux-initrd)
   #:use-module (gnu system file-systems)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:export (operating-system
             operating-system?
 
@@ -69,6 +73,7 @@
             operating-system-packages
             operating-system-timezone
             operating-system-locale
+            operating-system-locale-definitions
             operating-system-mapped-devices
             operating-system-file-systems
             operating-system-activation-script
@@ -129,7 +134,9 @@
 
   (timezone operating-system-timezone)            ; string
   (locale   operating-system-locale               ; string
-            (default "en_US.UTF-8"))
+            (default "en_US.utf8"))
+  (locale-definitions operating-system-locale-definitions ; list of <locale-definition>
+                      (default %default-locale-definitions))
 
   (services operating-system-user-services        ; list of monadic services
             (default %base-services))
@@ -204,9 +211,7 @@ file."
   "Return file system services for the file systems of OS that are not marked
 as 'needed-for-boot'."
   (define file-systems
-    (remove (lambda (fs)
-              (or (file-system-needed-for-boot? fs)
-                  (string=? "/" (file-system-mount-point fs))))
+    (remove file-system-needed-for-boot?
             (operating-system-file-systems os)))
 
   (define (device-mappings fs)
@@ -329,6 +334,12 @@ explicitly appear in OS."
          pciutils usbutils
          util-linux inetutils isc-dhcp wireless-tools
          net-tools                        ; XXX: remove when Inetutils suffices
+         man-db
+
+         ;; The 'sudo' command is already in %SETUID-PROGRAMS, but we also
+         ;; want the other commands and the man pages (notably because
+         ;; auto-completion in Emacs shell relies on man pages.)
+         sudo
 
          ;; Get 'insmod' & co. from kmod, not module-init-tools, since udev
          ;; already depends on it anyway.
@@ -380,11 +391,10 @@ This is the GNU system.  Welcome.\n")
        (nsswitch   (text-file "nsswitch.conf"
                               "hosts: files dns\n"))
 
-       ;; TODO: Generate bashrc from packages' search-paths.
-       (bashrc    (text-file* "bashrc"  "
-export PS1='\\u@\\h \\w\\$ '
-
-export LC_ALL=\"" locale "\"
+       ;; Startup file for POSIX-compliant login shells, which set system-wide
+       ;; environment variables.
+       (profile    (text-file* "profile"  "\
+export LANG=\"" locale "\"
 export TZ=\"" timezone "\"
 export TZDIR=\"" tzdata "/share/zoneinfo\"
 
@@ -393,11 +403,8 @@ export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules
 
 export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin
 export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH
-export CPATH=$HOME/.guix-profile/include:" profile "/include
-export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
+export MANPATH=$HOME/.guix-profile/share/man:/run/current-system/profile/share/man
 export INFOPATH=$HOME/.guix-profile/share/info:/run/current-system/profile/share/info
-alias ls='ls -p --color'
-alias ll='ls -l'
 "))
        (skel      (skeleton-directory skeletons)))
     (file-union "etc"
@@ -410,7 +417,7 @@ alias ll='ls -l'
                   ("nsswitch.conf" ,#~#$nsswitch)
                   ("skel" ,#~#$skel)
                   ("shells" ,#~#$shells)
-                  ("profile" ,#~#$bashrc)
+                  ("profile" ,#~#$profile)
                   ("hosts" ,#~#$hosts-file)
                   ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
                                                  #$timezone))
@@ -525,8 +532,10 @@ etc."
   (define %modules
     '((gnu build activation)
       (gnu build linux-boot)
+      (gnu build linux-modules)
       (gnu build file-systems)
-      (guix build utils)))
+      (guix build utils)
+      (guix elf)))
 
   (define (service-activations services)
     ;; Return the activation scripts for SERVICES.
@@ -638,12 +647,7 @@ we're running in the final root."
 (define (operating-system-initrd-file os)
   "Return a gexp denoting the initrd file of OS."
   (define boot-file-systems
-    (filter (match-lambda
-             (($ <file-system> device title "/")
-              #t)
-             (($ <file-system> device title mount-point type flags
-                               options boot?)
-              boot?))
+    (filter file-system-needed-for-boot?
             (operating-system-file-systems os)))
 
   (define mapped-devices
@@ -656,6 +660,19 @@ we're running in the final root."
                                            #:mapped-devices mapped-devices)))
     (return #~(string-append #$initrd "/initrd"))))
 
+(define (operating-system-locale-directory os)
+  "Return the directory containing the locales compiled for the definitions
+listed in OS.  The C library expects to find it under
+/run/current-system/locale."
+  ;; While we're at it, check whether the locale of OS is defined.
+  (unless (member (operating-system-locale os)
+                  (map locale-definition-name
+                       (operating-system-locale-definitions os)))
+    (raise (condition
+            (&message (message "system locale lacks a definition")))))
+
+  (locale-directory (operating-system-locale-definitions os)))
+
 (define (kernel->grub-label kernel)
   "Return a label for the GRUB menu entry that boots KERNEL."
   (string-append "GNU with "
@@ -705,6 +722,7 @@ this file is the reconstruction of GRUB menu entries for old configurations."
        (boot        (operating-system-boot-script os))
        (kernel  ->  (operating-system-kernel os))
        (initrd      (operating-system-initrd-file os))
+       (locale      (operating-system-locale-directory os))
        (params      (operating-system-parameters-file os)))
     (file-union "system"
                 `(("boot" ,#~#$boot)
@@ -712,6 +730,7 @@ this file is the reconstruction of GRUB menu entries for old configurations."
                   ("parameters" ,#~#$params)
                   ("initrd" ,initrd)
                   ("profile" ,#~#$profile)
+                  ("locale" ,#~#$locale)          ;used by libc
                   ("etc" ,#~#$etc)))))
 
 ;;; system.scm ends here
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index ed9d70587f..4760821840 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -70,13 +70,19 @@
                     (default '()))
   (options          file-system-options           ; string or #f
                     (default #f))
-  (needed-for-boot? file-system-needed-for-boot?  ; Boolean
+  (needed-for-boot? %file-system-needed-for-boot? ; Boolean
                     (default #f))
   (check?           file-system-check?            ; Boolean
                     (default #t))
   (create-mount-point? file-system-create-mount-point? ; Boolean
                        (default #f)))
 
+(define-inlinable (file-system-needed-for-boot? fs)
+  "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root
+file system."
+  (or (%file-system-needed-for-boot? fs)
+      (string=? "/" (file-system-mount-point fs))))
+
 (define %fuse-control-file-system
   ;; Control file system for Linux' file systems in user-space (FUSE).
   (file-system
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index 00e09f9736..ecffee3112 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -170,6 +170,9 @@ function load_video {
   insmod video_cirrus
 }
 
+# Set 'root' to the partition that contains /gnu/store.
+search --file --set ~a/share/grub/unicode.pf2
+
 if loadfont ~a/share/grub/unicode.pf2; then
   set gfxmode=640x480
   load_video
@@ -185,7 +188,7 @@ else
   set menu_color_normal=cyan/blue
   set menu_color_highlight=white/blue
 fi~%"
-                        #$grub
+                        #$grub #$grub
                         #$image
                         #$(theme-colors grub-theme-color-normal)
                         #$(theme-colors grub-theme-color-highlight))))))
@@ -209,11 +212,14 @@ entries corresponding to old generations of the system."
     (match-lambda
      (($ <menu-entry> label linux arguments initrd)
       #~(format port "menuentry ~s {
+  # Set 'root' to the partition that contains the kernel.
+  search --file --set ~a/bzImage~%
+
   linux ~a/bzImage ~a
   initrd ~a
 }~%"
                 #$label
-                #$linux (string-join (list #$@arguments))
+                #$linux #$linux (string-join (list #$@arguments))
                 #$initrd))))
 
   (mlet %store-monad ((sugar (eye-candy config #~port)))
@@ -223,14 +229,9 @@ entries corresponding to old generations of the system."
             #$sugar
             (format port "
 set default=~a
-set timeout=~a
-search.file ~a/bzImage~%"
+set timeout=~a~%"
                     #$(grub-configuration-default-entry config)
-                    #$(grub-configuration-timeout config)
-                    #$(any (match-lambda
-                            (($ <menu-entry> _ linux)
-                             linux))
-                           all-entries))
+                    #$(grub-configuration-timeout config))
             #$@(map entry->gexp all-entries)
 
             #$@(if (pair? old-entries)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 961361b937..01e79480b1 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -21,7 +21,9 @@
   #:use-module (guix gexp)
   #:use-module (guix monads)
   #:use-module ((guix store) #:select (%store-prefix))
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages grub)
@@ -219,7 +221,7 @@ Use Alt-F2 for documentation.
   (operating-system
     (host-name "gnu")
     (timezone "Europe/Paris")
-    (locale "en_US.UTF-8")
+    (locale "en_US.utf8")
     (bootloader (grub-configuration
                  (device "/dev/sda")))
     (file-systems
@@ -254,7 +256,8 @@ Use Alt-F2 for documentation.
     (packages (cons* texinfo-4                 ;for the standalone Info reader
                      parted ddrescue
                      grub                  ;mostly so xrefs to its manual work
-                     wireless-tools
+                     cryptsetup
+                     wireless-tools wpa-supplicant
                      ;; XXX: We used to have GNU fdisk here, but as of version
                      ;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable
                      ;; space; furthermore util-linux's fdisk is already
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 3279172da7..ee6ce48828 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -92,7 +92,9 @@ MODULES and taken from LINUX."
   (define build-exp
     #~(begin
         (use-modules (ice-9 match) (ice-9 regex)
-                     (guix build utils))
+                     (srfi srfi-1)
+                     (guix build utils)
+                     (gnu build linux-modules))
 
         (define (string->regexp str)
           ;; Return a regexp that matches STR exactly.
@@ -101,21 +103,35 @@ MODULES and taken from LINUX."
         (define module-dir
           (string-append #$linux "/lib/modules"))
 
+        (define (lookup module)
+          (let ((name (ensure-dot-ko module)))
+            (match (find-files module-dir (string->regexp name))
+              ((file)
+               file)
+              (()
+               (error "module not found" name module-dir))
+              ((_ ...)
+               (error "several modules by that name"
+                      name module-dir)))))
+
+        (define modules
+          (let ((modules (map lookup '#$modules)))
+            (append modules
+                    (recursive-module-dependencies modules
+                                                   #:lookup-module lookup))))
+
         (mkdir #$output)
         (for-each (lambda (module)
-                    (match (find-files module-dir (string->regexp module))
-                      ((file)
-                       (format #t "copying '~a'...~%" file)
-                       (copy-file file (string-append #$output "/" module)))
-                      (()
-                       (error "module not found" module module-dir))
-                      ((_ ...)
-                       (error "several modules by that name"
-                              module module-dir))))
-                  '#$modules)))
+                    (format #t "copying '~a'...~%" module)
+                    (copy-file module
+                               (string-append #$output "/"
+                                              (basename module))))
+                  (delete-duplicates modules))))
 
   (gexp->derivation "linux-modules" build-exp
-                    #:modules '((guix build utils))))
+                    #:modules '((guix build utils)
+                                (guix elf)
+                                (gnu build linux-modules))))
 
 (define (file-system->spec fs)
   "Return a list corresponding to file-system FS that can be passed to the
@@ -150,16 +166,16 @@ modules can be listed in EXTRA-MODULES.  They will be added to the initrd, and
 loaded at boot time in the order in which they appear."
   (define virtio-modules
     ;; Modules for Linux para-virtualized devices, for use in QEMU guests.
-    '("virtio.ko" "virtio_ring.ko" "virtio_pci.ko"
-      "virtio_balloon.ko" "virtio_blk.ko" "virtio_net.ko"))
+    '("virtio_pci" "virtio_balloon" "virtio_blk" "virtio_net"
+      "virtio_console"))
 
   (define cifs-modules
     ;; Modules needed to mount CIFS file systems.
-    '("md4.ko" "ecb.ko" "cifs.ko"))
+    '("md4" "ecb" "cifs"))
 
   (define virtio-9p-modules
     ;; Modules for the 9p paravirtualized file system.
-    '("fscache.ko" "9pnet.ko" "9p.ko" "9pnet_virtio.ko"))
+    '("9p" "9pnet_virtio"))
 
   (define (file-system-type-predicate type)
     (lambda (fs)
@@ -167,8 +183,8 @@ loaded at boot time in the order in which they appear."
 
   (define linux-modules
     ;; Modules added to the initrd and loaded from the initrd.
-    `("libahci.ko" "ahci.ko"                      ;for SATA controllers
-      "pata_acpi.ko" "pata_atiixp.ko"             ;for ATA controllers
+    `("ahci"                                   ;for SATA controllers
+      "pata_acpi" "pata_atiixp"                ;for ATA controllers
       ,@(if (or virtio? qemu-networking?)
             virtio-modules
             '())
@@ -179,7 +195,7 @@ loaded at boot time in the order in which they appear."
             virtio-9p-modules
             '())
       ,@(if volatile-root?
-            '("fuse.ko")
+            '("fuse")
             '())
       ,@extra-modules))
 
@@ -220,14 +236,15 @@ loaded at boot time in the order in which they appear."
          (boot-system #:mounts '#$(map file-system->spec file-systems)
                       #:pre-mount (lambda ()
                                     (and #$@device-mapping-commands))
-                      #:linux-modules (map (lambda (file)
-                                             (string-append #$kodir "/" file))
-                                           '#$linux-modules)
+                      #:linux-modules '#$linux-modules
+                      #:linux-module-directory '#$kodir
                       #:qemu-guest-networking? #$qemu-networking?
                       #:volatile-root? '#$volatile-root?))
      #:name "base-initrd"
      #:modules '((guix build utils)
                  (gnu build linux-boot)
-                 (gnu build file-systems)))))
+                 (gnu build linux-modules)
+                 (gnu build file-systems)
+                 (guix elf)))))
 
 ;;; linux-initrd.scm ends here
diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm
new file mode 100644
index 0000000000..17b1dead58
--- /dev/null
+++ b/gnu/system/locale.scm
@@ -0,0 +1,126 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system locale)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (srfi srfi-26)
+  #:export (locale-definition
+            locale-definition?
+            locale-definition-name
+            locale-definition-source
+            locale-definition-charset
+
+            locale-directory
+
+            %default-locale-definitions))
+
+;;; Commentary:
+;;;
+;;; Locale definitions, and compilation thereof.
+;;;
+;;; Code:
+
+(define-record-type* <locale-definition> locale-definition
+  make-locale-definition
+  locale-definition?
+  (name    locale-definition-name)                ;string--e.g., "fr_FR.utf8"
+  (source  locale-definition-source)              ;string--e.g., "fr_FR"
+  (charset locale-definition-charset              ;string--e.g., "UTF-8"
+           (default "UTF-8")))
+
+(define* (localedef-command locale
+                            #:key (libc (canonical-package glibc)))
+  "Return a gexp that runs 'localedef' from LIBC to build LOCALE."
+  #~(begin
+      (format #t "building locale '~a'...~%"
+              #$(locale-definition-name locale))
+      (zero? (system* (string-append #$libc "/bin/localedef")
+                      "--no-archive" "--prefix" #$output
+                      "-i" #$(locale-definition-source locale)
+                      "-f" #$(locale-definition-charset locale)
+                      (string-append #$output "/"
+                                     #$(locale-definition-name locale))))))
+
+(define* (locale-directory locales
+                           #:key (libc (canonical-package glibc)))
+  "Return a directory containing all of LOCALES compiled."
+  (define build
+    #~(begin
+        (mkdir #$output)
+
+        ;; 'localedef' executes 'gzip' to access compressed locale sources.
+        (setenv "PATH" (string-append #$gzip "/bin"))
+
+        (exit
+         (and #$@(map (cut localedef-command <> #:libc libc)
+                      locales)))))
+
+  (gexp->derivation "locale" build
+                    #:local-build? #t))
+
+(define %default-locale-definitions
+  ;; Arbitrary set of locales that are built by default.  They are here mostly
+  ;; to facilitate first-time use to some people, while others may have to add
+  ;; a specific <locale-definition>.
+  (letrec-syntax ((utf8-locale (syntax-rules ()
+                                 ((_ name*)
+                                  (locale-definition
+                                   (name (string-append name* ".utf8"))
+                                   (source name*)
+                                   (charset "UTF-8")))))
+                  (utf8-locales (syntax-rules ()
+                                  ((_ name ...)
+                                   (list (utf8-locale name) ...)))))
+    (utf8-locales "ca_ES"
+                  "cs_CZ"
+                  "da_DK"
+                  "de_DE"
+                  "el_GR"
+                  "en_AU"
+                  "en_CA"
+                  "en_GB"
+                  "en_US"
+                  "es_AR"
+                  "es_CL"
+                  "es_ES"
+                  "es_MX"
+                  "fi_FI"
+                  "fr_BE"
+                  "fr_CA"
+                  "fr_CH"
+                  "fr_FR"
+                  "ga_IE"
+                  "it_IT"
+                  "ja_JP"
+                  "ko_KR"
+                  "nb_NO"
+                  "nl_NL"
+                  "pl_PL"
+                  "pt_PT"
+                  "ro_RO"
+                  "ru_RU"
+                  "sv_SE"
+                  "tr_TR"
+                  "uk_UA"
+                  "vi_VN"
+                  "zh_CN")))
+
+;;; locale.scm ends here
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 6970021e1f..b4ba0060bd 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -115,9 +115,16 @@
         (copy-file (car (find-files #$guile-wm "wm-init-sample.scm"))
                    #$output)))
 
-  (mlet %store-monad ((bashrc (text-file "bashrc" "\
-# Allow non-login shells such as an xterm to get things right.
-test -f /etc/profile && source /etc/profile\n"))
+  (mlet %store-monad ((profile (text-file "bash_profile" "\
+# Honor per-interactive-shell startup file
+if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
+                      (bashrc (text-file "bashrc" "\
+PS1='\\u@\\h \\w\\$ '
+alias ls='ls -p --color'
+alias ll='ls -l'\n"))
+                      (zlogin (text-file "zlogin" "\
+# Honor system-wide environment variables
+source /etc/profile\n"))
                       (guile-wm (gexp->derivation "guile-wm" copy-guile-wm
                                                   #:modules
                                                   '((guix build utils))))
@@ -127,7 +134,9 @@ XTerm*metaSendsEscape: true\n"))
                       (gdbinit   (text-file "gdbinit" "\
 # Tell GDB where to look for separate debugging files.
 set debug-file-directory ~/.guix-profile/lib/debug\n")))
-    (return `((".bashrc" ,bashrc)
+    (return `((".bash_profile" ,profile)
+              (".bashrc" ,bashrc)
+              (".zlogin" ,zlogin)
               (".Xdefaults" ,xdefaults)
               (".guile-wm" ,guile-wm)
               (".gdbinit" ,gdbinit)))))
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 07b13deeca..4374256530 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -104,7 +104,9 @@
                                               '((gnu build vm)
                                                 (gnu build install)
                                                 (gnu build linux-boot)
+                                                (gnu build linux-modules)
                                                 (gnu build file-systems)
+                                                (guix elf)
                                                 (guix build utils)
                                                 (guix build store-copy)))
                                              (guile-for-build
@@ -470,7 +472,7 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
      " -enable-kvm -no-reboot -net nic,model=virtio \
   " #$@(map virtfs-option shared-fs) " \
   -net user \
-  -serial stdio \
+  -serial stdio -vga std \
   -drive file=" #$image
   ",if=virtio,cache=writeback,werror=report,readonly \
   -m 256"))
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index 51e0c419e3..8091311879 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -122,6 +122,7 @@
                                                   "bin" "sbin"))
                             (phases '(@ (guix build glib-or-gtk-build-system)
                                         %standard-phases))
+                            (glib-or-gtk-wrap-excluded-outputs ''())
                             (system (%current-system))
                             (imported-modules %default-imported-modules)
                             (modules %default-modules)
@@ -153,6 +154,8 @@
                           #:search-paths ',(map search-path-specification->sexp
                                                 search-paths)
                           #:phases ,phases
+                          #:glib-or-gtk-wrap-excluded-outputs
+                           ,glib-or-gtk-wrap-excluded-outputs
                           #:configure-flags ,configure-flags
                           #:make-flags ,make-flags
                           #:out-of-source? ,out-of-source?
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index 78348e9cf7..4bba7167ca 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -86,6 +86,8 @@ prepended to the name."
               arguments)))
       (inputs
         (map rewrite (package-inputs p)))
+      (propagated-inputs
+        (map rewrite (package-propagated-inputs p)))
       (native-inputs
         (map rewrite (package-native-inputs p))))))
 
diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
index 10ef3c8d0f..0cff28b45b 100644
--- a/guix/build/emacs-utils.scm
+++ b/guix/build/emacs-utils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
   #:export (%emacs
             emacs-batch-eval
             emacs-batch-edit-file
+            emacs-generate-autoloads
             emacs-substitute-sexps
             emacs-substitute-variables))
 
@@ -47,6 +49,14 @@
                           (format #f "--eval=~S" expr)))
     (error "emacs-batch-edit-file failed!" file expr)))
 
+(define (emacs-generate-autoloads name directory)
+  "Generate autoloads for Emacs package NAME placed in DIRECTORY."
+  (let* ((file (string-append directory "/" name "-autoloads.el"))
+         (expr `(let ((backup-inhibited t)
+                      (generated-autoload-file ,file))
+                  (update-directory-autoloads ,directory))))
+    (emacs-batch-eval expr)))
+
 (define-syntax emacs-substitute-sexps
   (syntax-rules ()
     "Substitute the S-expression immediately following the first occurrence of
diff --git a/guix/build/glib-or-gtk-build-system.scm b/guix/build/glib-or-gtk-build-system.scm
index 1d87a4cf27..9351a70a0e 100644
--- a/guix/build/glib-or-gtk-build-system.scm
+++ b/guix/build/glib-or-gtk-build-system.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:export (%standard-phases
             glib-or-gtk-build))
 
@@ -36,14 +38,14 @@
 
 (define (directory-included? directory directories-list)
   "Is DIRECTORY included in DIRECTORIES-LIST?"
-  (fold (lambda (s p) (or (string-ci=? s directory) p)) 
+  (fold (lambda (s p) (or (string-ci=? s directory) p))
         #f directories-list))
 
 (define (gtk-module-directories inputs)
   "Check for the existence of \"libdir/gtk-v.0\" in INPUTS.  Return a list
 with all found directories."
-  (let* ((version 
-          (if (string-match "gtk\\+-3" 
+  (let* ((version
+          (if (string-match "gtk\\+-3"
                             (or (assoc-ref inputs "gtk+")
                                 (assoc-ref inputs "source")
                                 "gtk+-3")) ; we default to version 3
@@ -54,7 +56,7 @@ with all found directories."
             (let* ((in (match input
                          ((_ . dir) dir)
                          (_ "")))
-                   (libdir 
+                   (libdir
                     (string-append in "/lib/gtk-" version)))
               (if (and (directory-exists? libdir)
                        (not (directory-included? libdir prev)))
@@ -77,49 +79,68 @@ a list with all found directories."
 
   (fold glib-schemas '() inputs))
 
-(define* (wrap-all-programs #:key inputs outputs #:allow-other-keys)
+(define* (wrap-all-programs #:key inputs outputs
+                            (glib-or-gtk-wrap-excluded-outputs '())
+                            #:allow-other-keys)
   "Implement phase \"glib-or-gtk-wrap\": look for GSettings schemas and
 gtk+-v.0 libraries and create wrappers with suitably set environment variables
-if found."
-  (let* ((out (assoc-ref outputs "out"))
-         (bindir (string-append out "/bin"))
-         (bin-list (find-files bindir ".*"))
-         (schemas (schemas-directories (acons "out" out inputs)))
-         (schemas-env-var 
-          (if (not (null? schemas))
-              `("XDG_DATA_DIRS" ":" prefix ,schemas)
-              #f))
-         (gtk-mod-dirs (gtk-module-directories (acons "out" out inputs)))
-         (gtk-mod-env-var 
-          (if (not (null? gtk-mod-dirs))
-              `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
-              #f)))
-    (cond
-     ((and schemas-env-var gtk-mod-env-var)
-      (map (lambda (prog) 
-             (wrap-program prog schemas-env-var gtk-mod-env-var))
-           bin-list))
-     (schemas-env-var
-      (map (lambda (prog) (wrap-program prog schemas-env-var)) bin-list))
-     (gtk-mod-env-var
-      (map (lambda (prog) (wrap-program prog gtk-mod-env-var)) bin-list)))))
+if found.
 
-(define* (compile-glib-schemas #:key inputs outputs #:allow-other-keys)
+Wrapping is not applied to outputs whose name is listed in
+GLIB-OR-GTK-WRAP-EXCLUDED-OUTPUTS.  This is useful when an output is known not
+to contain any GLib or GTK+ binaries, and where wrapping would gratuitously
+add a dependency of that output on GLib and GTK+."
+  (define handle-output
+    (match-lambda
+     ((output . directory)
+      (unless (member output glib-or-gtk-wrap-excluded-outputs)
+        (let* ((bindir       (string-append directory "/bin"))
+               (bin-list     (find-files bindir ".*"))
+               (schemas      (schemas-directories
+                              (alist-cons output directory inputs)))
+               (gtk-mod-dirs (gtk-module-directories
+                              (alist-cons output directory inputs)))
+               (schemas-env-var
+                (if (not (null? schemas))
+                    `("XDG_DATA_DIRS" ":" prefix ,schemas)
+                    #f))
+               (gtk-mod-env-var
+                (if (not (null? gtk-mod-dirs))
+                    `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
+                    #f)))
+          (cond
+           ((and schemas-env-var gtk-mod-env-var)
+            (for-each (cut wrap-program <> schemas-env-var gtk-mod-env-var)
+                      bin-list))
+           (schemas-env-var
+            (for-each (cut wrap-program <> schemas-env-var)
+                      bin-list))
+           (gtk-mod-env-var
+            (for-each (cut wrap-program <> gtk-mod-env-var)
+                      bin-list))))))))
+
+  (for-each handle-output outputs)
+  #t)
+
+(define* (compile-glib-schemas #:key outputs #:allow-other-keys)
   "Implement phase \"glib-or-gtk-compile-schemas\": compile \"glib\" schemas
 if needed."
-  (let* ((out (assoc-ref outputs "out"))
-         (schemasdir (string-append out "/share/glib-2.0/schemas")))
-    (if (and (directory-exists? schemasdir)
-             (not (file-exists? 
-                   (string-append schemasdir "/gschemas.compiled"))))
-        (system* "glib-compile-schemas" schemasdir)
-        #t)))
+  (every (match-lambda
+          ((output . directory)
+           (let ((schemasdir (string-append directory
+                                            "/share/glib-2.0/schemas")))
+             (if (and (directory-exists? schemasdir)
+                      (not (file-exists?
+                            (string-append schemasdir "/gschemas.compiled"))))
+                 (zero? (system* "glib-compile-schemas" schemasdir))
+                 #t))))
+         outputs))
 
 (define %standard-phases
   (alist-cons-after
-   'install 'glib-or-gtk-wrap wrap-all-programs 
-   (alist-cons-after 
-    'install 'glib-or-gtk-compile-schemas compile-glib-schemas 
+   'install 'glib-or-gtk-wrap wrap-all-programs
+   (alist-cons-after
+    'install 'glib-or-gtk-compile-schemas compile-glib-schemas
     gnu:%standard-phases)))
 
 (define* (glib-or-gtk-build #:key inputs (phases %standard-phases)
diff --git a/guix/derivations.scm b/guix/derivations.scm
index b1ba573190..69cef1a4cd 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -37,6 +37,7 @@
             derivation-inputs
             derivation-sources
             derivation-system
+            derivation-builder
             derivation-builder-arguments
             derivation-builder-environment-vars
             derivation-file-name
diff --git a/guix/download.scm b/guix/download.scm
index 947da004ae..4c111dd2b5 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -61,15 +61,23 @@
        ,@(map (cut string-append <> "/gcc") gnu-mirrors))
       (gnupg
        "ftp://gd.tuwien.ac.at/privacy/gnupg/"
-       "ftp://gnupg.x-zone.org/pub/gnupg/"
-       "ftp://ftp.gnupg.cz/pub/gcrypt/"
-       "ftp://sunsite.dk/pub/security/gcrypt/"
-       "http://gnupg.wildyou.net/"
-       "http://ftp.gnupg.zone-h.org/"
-       "ftp://ftp.jyu.fi/pub/crypt/gcrypt/"
-       "ftp://trumpetti.atm.tut.fi/gcrypt/"
+       "ftp://mirrors.dotsrc.org/gcrypt/"
        "ftp://mirror.cict.fr/gnupg/"
-       "ftp://ftp.strasbourg.linuxfr.org/pub/gnupg/")
+       "http://artfiles.org/gnupg.org"
+       "ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/"
+       "ftp://ftp.freenet.de/pub/ftp.gnupg.org/gcrypt/"
+       "http://www.crysys.hu/"
+       "ftp://ftp.hi.is/pub/mirrors/gnupg/"
+       "ftp://ftp.heanet.ie/mirrors/ftp.gnupg.org/gcrypt/"
+       "ftp://ftp.bit.nl/mirror/gnupg/"
+       "ftp://ftp.surfnet.nl/pub/security/gnupg/"
+       "ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.gnupg.org/"
+       "ftp://ftp.sunet.se/pub/security/gnupg/"
+       "ftp://mirror.switch.ch/mirror/gnupg/"
+       "ftp://mirror.tje.me.uk/pub/mirrors/ftp.gnupg.org/"
+       "ftp://ftp.mirrorservice.org/sites/ftp.gnupg.org/gcrypt/"
+       "ftp://ftp.ring.gr.jp/pub/net/gnupg/"
+       "ftp://ftp.gnupg.org/gcrypt/")
       (gnome
        "http://ftp.belnet.be/ftp.gnome.org/"
        "http://ftp.linux.org.uk/mirrors/ftp.gnome.org/"
diff --git a/guix/elf.scm b/guix/elf.scm
new file mode 100644
index 0000000000..a4b0e819a5
--- /dev/null
+++ b/guix/elf.scm
@@ -0,0 +1,1045 @@
+;;; Guile ELF reader and writer
+
+;; Copyright (C)  2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+
+;;;; This library is free software; you can redistribute it and/or
+;;;; modify it under the terms of the GNU Lesser General Public
+;;;; License as published by the Free Software Foundation; either
+;;;; version 3 of the License, or (at your option) any later version.
+;;;;
+;;;; This library 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
+;;;; Lesser General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU Lesser General Public
+;;;; License along with this library; if not, write to the Free Software
+;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+;;; Commentary:
+;;;
+;;; This file was taken from the Guile 2.1 branch, where it is known as
+;;; (system vm elf), and renamed to (guix elf).  It will be unneeded when Guix
+;;; switches to Guile 2.1/2.2.
+;;;
+;;; A module to read and write Executable and Linking Format (ELF)
+;;; files.
+;;;
+;;; This module exports a number of record types that represent the
+;;; various parts that make up ELF files.  Fundamentally this is the
+;;; main header, the segment headers (program headers), and the section
+;;; headers.  It also exports bindings for symbolic constants and
+;;; utilities to parse and write special kinds of ELF sections.
+;;;
+;;; See elf(5) for more information on ELF.
+;;;
+;;; Code:
+
+(define-module (guix elf)
+  #:use-module (rnrs bytevectors)
+  #:use-module (system foreign)
+  #:use-module (system base target)
+  #:use-module (srfi srfi-9)
+  #:use-module (ice-9 receive)
+  #:use-module (ice-9 vlist)
+  #:export (has-elf-header?
+
+            (make-elf* . make-elf)
+            elf?
+            elf-bytes elf-word-size elf-byte-order
+            elf-abi elf-type elf-machine-type
+            elf-entry elf-phoff elf-shoff elf-flags elf-ehsize
+            elf-phentsize elf-phnum elf-shentsize elf-shnum elf-shstrndx
+
+            ELFOSABI_NONE ELFOSABI_HPUX ELFOSABI_NETBSD ELFOSABI_GNU
+            ELFOSABI_SOLARIS ELFOSABI_AIX ELFOSABI_IRIX ELFOSABI_FREEBSD
+            ELFOSABI_TRU64 ELFOSABI_MODESTO ELFOSABI_OPENBSD
+            ELFOSABI_ARM_AEABI ELFOSABI_ARM ELFOSABI_STANDALONE
+
+            ET_NONE ET_REL ET_EXEC ET_DYN ET_CORE
+
+            EM_NONE EM_SPARC EM_386 EM_MIPS EM_PPC EM_PPC64 EM_ARM EM_SH
+            EM_SPARCV9 EM_IA_64 EM_X86_64
+
+            elf-header-len elf-header-shoff-offset
+            write-elf-header
+
+            (make-elf-segment* . make-elf-segment)
+            elf-segment?
+            elf-segment-index
+            elf-segment-type elf-segment-offset elf-segment-vaddr
+            elf-segment-paddr elf-segment-filesz elf-segment-memsz
+            elf-segment-flags elf-segment-align
+
+            elf-program-header-len write-elf-program-header
+
+            PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP PT_NOTE PT_SHLIB
+            PT_PHDR PT_TLS PT_NUM PT_LOOS PT_GNU_EH_FRAME PT_GNU_STACK
+            PT_GNU_RELRO
+
+            PF_R PF_W PF_X
+
+            (make-elf-section* . make-elf-section)
+            elf-section?
+            elf-section-index
+            elf-section-name elf-section-type elf-section-flags
+            elf-section-addr elf-section-offset elf-section-size
+            elf-section-link elf-section-info elf-section-addralign
+            elf-section-entsize
+
+            elf-section-header-len elf-section-header-addr-offset
+            elf-section-header-offset-offset
+            write-elf-section-header
+
+            (make-elf-symbol* . make-elf-symbol)
+            elf-symbol?
+            elf-symbol-name elf-symbol-value elf-symbol-size
+            elf-symbol-info elf-symbol-other elf-symbol-shndx
+            elf-symbol-binding elf-symbol-type elf-symbol-visibility
+
+            elf-symbol-len elf-symbol-value-offset write-elf-symbol
+
+            SHN_UNDEF
+
+            SHT_NULL SHT_PROGBITS SHT_SYMTAB SHT_STRTAB SHT_RELA
+            SHT_HASH SHT_DYNAMIC SHT_NOTE SHT_NOBITS SHT_REL SHT_SHLIB
+            SHT_DYNSYM SHT_INIT_ARRAY SHT_FINI_ARRAY SHT_PREINIT_ARRAY
+            SHT_GROUP SHT_SYMTAB_SHNDX SHT_NUM SHT_LOOS SHT_HIOS
+            SHT_LOPROC SHT_HIPROC SHT_LOUSER SHT_HIUSER
+
+            SHF_WRITE SHF_ALLOC SHF_EXECINSTR SHF_MERGE SHF_STRINGS
+            SHF_INFO_LINK SHF_LINK_ORDER SHF_OS_NONCONFORMING SHF_GROUP
+            SHF_TLS
+
+            DT_NULL DT_NEEDED DT_PLTRELSZ DT_PLTGOT DT_HASH DT_STRTAB
+            DT_SYMTAB DT_RELA DT_RELASZ DT_RELAENT DT_STRSZ DT_SYMENT
+            DT_INIT DT_FINI DT_SONAME DT_RPATH DT_SYMBOLIC DT_REL
+            DT_RELSZ DT_RELENT DT_PLTREL DT_DEBUG DT_TEXTREL DT_JMPREL
+            DT_BIND_NOW DT_INIT_ARRAY DT_FINI_ARRAY DT_INIT_ARRAYSZ
+            DT_FINI_ARRAYSZ DT_RUNPATH DT_FLAGS DT_ENCODING
+            DT_PREINIT_ARRAY DT_PREINIT_ARRAYSZ DT_NUM DT_LOGUILE
+            DT_GUILE_GC_ROOT DT_GUILE_GC_ROOT_SZ DT_GUILE_ENTRY
+            DT_GUILE_VM_VERSION DT_GUILE_FRAME_MAPS DT_HIGUILE
+            DT_LOOS DT_HIOS DT_LOPROC DT_HIPROC
+
+            string-table-ref
+
+            STB_LOCAL STB_GLOBAL STB_WEAK STB_NUM STB_LOOS STB_GNU
+            STB_HIOS STB_LOPROC STB_HIPROC
+
+            STT_NOTYPE STT_OBJECT STT_FUNC STT_SECTION STT_FILE
+            STT_COMMON STT_TLS STT_NUM STT_LOOS STT_GNU STT_HIOS
+            STT_LOPROC STT_HIPROC
+
+            STV_DEFAULT STV_INTERNAL STV_HIDDEN STV_PROTECTED
+
+            NT_GNU_ABI_TAG NT_GNU_HWCAP NT_GNU_BUILD_ID NT_GNU_GOLD_VERSION
+
+            parse-elf
+            elf-segment elf-segments
+            elf-section elf-sections elf-section-by-name elf-sections-by-name
+            elf-symbol-table-len elf-symbol-table-ref
+
+            parse-elf-note
+            elf-note-name elf-note-desc elf-note-type))
+
+;; #define EI_NIDENT 16
+
+;; typedef struct {
+;;     unsigned char e_ident[EI_NIDENT];
+;;     uint16_t      e_type;
+;;     uint16_t      e_machine;
+;;     uint32_t      e_version;
+;;     ElfN_Addr     e_entry;
+;;     ElfN_Off      e_phoff;
+;;     ElfN_Off      e_shoff;
+;;     uint32_t      e_flags;
+;;     uint16_t      e_ehsize;
+;;     uint16_t      e_phentsize;
+;;     uint16_t      e_phnum;
+;;     uint16_t      e_shentsize;
+;;     uint16_t      e_shnum;
+;;     uint16_t      e_shstrndx;
+;; } ElfN_Ehdr;
+
+(define elf32-header-len 52)
+(define elf64-header-len 64)
+(define (elf-header-len word-size)
+  (case word-size
+    ((4) elf32-header-len)
+    ((8) elf64-header-len)
+    (else (error "invalid word size" word-size))))
+(define (elf-header-shoff-offset word-size)
+  (case word-size
+    ((4) 32)
+    ((8) 40)
+    (else (error "bad word size" word-size))))
+
+(define ELFCLASS32      1)              ; 32-bit objects
+(define ELFCLASS64      2)              ; 64-bit objects
+
+(define ELFDATA2LSB     1)              ; 2's complement, little endian
+(define ELFDATA2MSB     2)              ; 2's complement, big endian
+
+(define EV_CURRENT      1)              ; Current version
+
+(define ELFOSABI_NONE		0)	; UNIX System V ABI */
+(define ELFOSABI_HPUX		1)	; HP-UX
+(define ELFOSABI_NETBSD		2)	; NetBSD.
+(define ELFOSABI_GNU		3)	; Object uses GNU ELF extensions.
+(define ELFOSABI_SOLARIS	6)	; Sun Solaris.
+(define ELFOSABI_AIX		7)	; IBM AIX.
+(define ELFOSABI_IRIX		8)	; SGI Irix.
+(define ELFOSABI_FREEBSD	9)	; FreeBSD.
+(define ELFOSABI_TRU64		10)	; Compaq TRU64 UNIX.
+(define ELFOSABI_MODESTO	11)	; Novell Modesto.
+(define ELFOSABI_OPENBSD	12)	; OpenBSD.
+(define ELFOSABI_ARM_AEABI	64)	; ARM EABI
+(define ELFOSABI_ARM		97)	; ARM
+(define ELFOSABI_STANDALONE     255)    ; Standalone (embedded) application
+
+(define ET_NONE		0)		; No file type
+(define ET_REL		1)		; Relocatable file
+(define ET_EXEC		2)		; Executable file
+(define ET_DYN		3)		; Shared object file
+(define ET_CORE		4)		; Core file
+
+;;
+;; Machine types
+;;
+;; Just a sampling of these values.  We could include more, but the
+;; important thing is to recognize architectures for which we have a
+;; native compiler.  Recognizing more common machine types is icing on
+;; the cake.
+;; 
+(define EM_NONE          0)             ; No machine
+(define EM_SPARC         2)             ; SUN SPARC
+(define EM_386           3)             ; Intel 80386
+(define EM_MIPS          8)             ; MIPS R3000 big-endian
+(define EM_PPC          20)             ; PowerPC
+(define EM_PPC64        21)             ; PowerPC 64-bit
+(define EM_ARM          40)             ; ARM
+(define EM_SH           42)             ; Hitachi SH
+(define EM_SPARCV9      43)             ; SPARC v9 64-bit
+(define EM_IA_64        50)             ; Intel Merced
+(define EM_X86_64       62)             ; AMD x86-64 architecture
+
+(define cpu-mapping (make-hash-table))
+(for-each (lambda (pair)
+            (hashq-set! cpu-mapping (car pair) (cdr pair)))
+          `((none . ,EM_NONE)
+            (sparc . ,EM_SPARC) ; FIXME: map 64-bit to SPARCV9 ?
+            (i386 . ,EM_386)
+            (mips . ,EM_MIPS)
+            (ppc . ,EM_PPC)
+            (ppc64 . ,EM_PPC64)
+            (arm . ,EM_ARM) ; FIXME: there are more arm cpu variants
+            (sh . ,EM_SH) ; FIXME: there are more sh cpu variants
+            (ia64 . ,EM_IA_64)
+            (x86_64 . ,EM_X86_64)))
+
+(define SHN_UNDEF 0)
+
+(define host-machine-type
+  (hashq-ref cpu-mapping
+             (string->symbol (car (string-split %host-type #\-)))
+             EM_NONE))
+
+(define host-word-size
+  (sizeof '*))
+
+(define host-byte-order
+  (native-endianness))
+
+(define (has-elf-header? bv)
+  (and
+   ;; e_ident
+   (>= (bytevector-length bv) 16)
+   (= (bytevector-u8-ref bv 0) #x7f)
+   (= (bytevector-u8-ref bv 1) (char->integer #\E))
+   (= (bytevector-u8-ref bv 2) (char->integer #\L))
+   (= (bytevector-u8-ref bv 3) (char->integer #\F))
+   (cond
+    ((= (bytevector-u8-ref bv 4) ELFCLASS32)
+     (>= (bytevector-length bv) elf32-header-len))
+    ((= (bytevector-u8-ref bv 4) ELFCLASS64)
+     (>= (bytevector-length bv) elf64-header-len))
+    (else #f))
+   (or (= (bytevector-u8-ref bv 5) ELFDATA2LSB)
+       (= (bytevector-u8-ref bv 5) ELFDATA2MSB))
+   (= (bytevector-u8-ref bv 6) EV_CURRENT)
+   ;; Look at ABI later.
+   (= (bytevector-u8-ref bv 8) 0)       ; ABI version
+   ;; The rest of the e_ident is padding.
+
+   ;; e_version
+   (let ((byte-order (if (= (bytevector-u8-ref bv 5) ELFDATA2LSB)
+                         (endianness little)
+                         (endianness big))))
+     (= (bytevector-u32-ref bv 20 byte-order) EV_CURRENT))))
+
+(define-record-type <elf>
+  (make-elf bytes word-size byte-order abi type machine-type
+            entry phoff shoff flags ehsize
+            phentsize phnum shentsize shnum shstrndx)
+  elf?
+  (bytes elf-bytes)
+  (word-size elf-word-size)
+  (byte-order elf-byte-order)
+  (abi elf-abi)
+  (type elf-type)
+  (machine-type elf-machine-type)
+  (entry elf-entry)
+  (phoff elf-phoff)
+  (shoff elf-shoff)
+  (flags elf-flags)
+  (ehsize elf-ehsize)
+  (phentsize elf-phentsize)
+  (phnum elf-phnum)
+  (shentsize elf-shentsize)
+  (shnum elf-shnum)
+  (shstrndx elf-shstrndx))
+
+(define* (make-elf* #:key (bytes #f)
+                    (byte-order (target-endianness))
+                    (word-size (target-word-size))
+                    (abi ELFOSABI_STANDALONE)
+                    (type ET_DYN)
+                    (machine-type EM_NONE)
+                    (entry 0)
+                    (phoff (elf-header-len word-size))
+                    (shoff -1)
+                    (flags 0)
+                    (ehsize (elf-header-len word-size))
+                    (phentsize (elf-program-header-len word-size))
+                    (phnum 0)
+                    (shentsize (elf-section-header-len word-size))
+                    (shnum 0)
+                    (shstrndx SHN_UNDEF))
+  (make-elf bytes word-size byte-order abi type machine-type
+            entry phoff shoff flags ehsize
+            phentsize phnum shentsize shnum shstrndx))
+
+(define (parse-elf32 bv byte-order)
+  (make-elf bv 4 byte-order
+            (bytevector-u8-ref bv 7)
+            (bytevector-u16-ref bv 16 byte-order)
+            (bytevector-u16-ref bv 18 byte-order)
+            (bytevector-u32-ref bv 24 byte-order)
+            (bytevector-u32-ref bv 28 byte-order)
+            (bytevector-u32-ref bv 32 byte-order)
+            (bytevector-u32-ref bv 36 byte-order)
+            (bytevector-u16-ref bv 40 byte-order)
+            (bytevector-u16-ref bv 42 byte-order)
+            (bytevector-u16-ref bv 44 byte-order)
+            (bytevector-u16-ref bv 46 byte-order)
+            (bytevector-u16-ref bv 48 byte-order)
+            (bytevector-u16-ref bv 50 byte-order)))
+
+(define (write-elf-ident bv class data abi)
+  (bytevector-u8-set! bv 0 #x7f)
+  (bytevector-u8-set! bv 1 (char->integer #\E))
+  (bytevector-u8-set! bv 2 (char->integer #\L))
+  (bytevector-u8-set! bv 3 (char->integer #\F))
+  (bytevector-u8-set! bv 4 class)
+  (bytevector-u8-set! bv 5 data)
+  (bytevector-u8-set! bv 6 EV_CURRENT)
+  (bytevector-u8-set! bv 7 abi)
+  (bytevector-u8-set! bv 8 0) ; ABI version
+  (bytevector-u8-set! bv 9 0) ; Pad to 16 bytes.
+  (bytevector-u8-set! bv 10 0)
+  (bytevector-u8-set! bv 11 0)
+  (bytevector-u8-set! bv 12 0)
+  (bytevector-u8-set! bv 13 0)
+  (bytevector-u8-set! bv 14 0)
+  (bytevector-u8-set! bv 15 0))
+
+(define (write-elf32-header bv elf)
+  (let ((byte-order (elf-byte-order elf)))
+    (write-elf-ident bv ELFCLASS32
+                     (case byte-order
+                       ((little) ELFDATA2LSB)
+                       ((big) ELFDATA2MSB)
+                       (else (error "unknown endianness" byte-order)))
+                     (elf-abi elf))
+    (bytevector-u16-set! bv 16 (elf-type elf) byte-order)
+    (bytevector-u16-set! bv 18 (elf-machine-type elf) byte-order)
+    (bytevector-u32-set! bv 20 EV_CURRENT byte-order)
+    (bytevector-u32-set! bv 24 (elf-entry elf) byte-order)
+    (bytevector-u32-set! bv 28 (elf-phoff elf) byte-order)
+    (bytevector-u32-set! bv 32 (elf-shoff elf) byte-order)
+    (bytevector-u32-set! bv 36 (elf-flags elf) byte-order)
+    (bytevector-u16-set! bv 40 (elf-ehsize elf) byte-order)
+    (bytevector-u16-set! bv 42 (elf-phentsize elf) byte-order)
+    (bytevector-u16-set! bv 44 (elf-phnum elf) byte-order)
+    (bytevector-u16-set! bv 46 (elf-shentsize elf) byte-order)
+    (bytevector-u16-set! bv 48 (elf-shnum elf) byte-order)
+    (bytevector-u16-set! bv 50 (elf-shstrndx elf) byte-order)))
+
+(define (parse-elf64 bv byte-order)
+  (make-elf bv 8 byte-order
+            (bytevector-u8-ref bv 7)
+            (bytevector-u16-ref bv 16 byte-order)
+            (bytevector-u16-ref bv 18 byte-order)
+            (bytevector-u64-ref bv 24 byte-order)
+            (bytevector-u64-ref bv 32 byte-order)
+            (bytevector-u64-ref bv 40 byte-order)
+            (bytevector-u32-ref bv 48 byte-order)
+            (bytevector-u16-ref bv 52 byte-order)
+            (bytevector-u16-ref bv 54 byte-order)
+            (bytevector-u16-ref bv 56 byte-order)
+            (bytevector-u16-ref bv 58 byte-order)
+            (bytevector-u16-ref bv 60 byte-order)
+            (bytevector-u16-ref bv 62 byte-order)))
+
+(define (write-elf64-header bv elf)
+  (let ((byte-order (elf-byte-order elf)))
+    (write-elf-ident bv ELFCLASS64
+                     (case byte-order
+                       ((little) ELFDATA2LSB)
+                       ((big) ELFDATA2MSB)
+                       (else (error "unknown endianness" byte-order)))
+                     (elf-abi elf))
+    (bytevector-u16-set! bv 16 (elf-type elf) byte-order)
+    (bytevector-u16-set! bv 18 (elf-machine-type elf) byte-order)
+    (bytevector-u32-set! bv 20 EV_CURRENT byte-order)
+    (bytevector-u64-set! bv 24 (elf-entry elf) byte-order)
+    (bytevector-u64-set! bv 32 (elf-phoff elf) byte-order)
+    (bytevector-u64-set! bv 40 (elf-shoff elf) byte-order)
+    (bytevector-u32-set! bv 48 (elf-flags elf) byte-order)
+    (bytevector-u16-set! bv 52 (elf-ehsize elf) byte-order)
+    (bytevector-u16-set! bv 54 (elf-phentsize elf) byte-order)
+    (bytevector-u16-set! bv 56 (elf-phnum elf) byte-order)
+    (bytevector-u16-set! bv 58 (elf-shentsize elf) byte-order)
+    (bytevector-u16-set! bv 60 (elf-shnum elf) byte-order)
+    (bytevector-u16-set! bv 62 (elf-shstrndx elf) byte-order)))
+
+(define (parse-elf bv)
+  (cond
+   ((has-elf-header? bv)
+    (let ((class (bytevector-u8-ref bv 4))
+          (byte-order (let ((data (bytevector-u8-ref bv 5)))
+                        (cond
+                         ((= data ELFDATA2LSB) (endianness little))
+                         ((= data ELFDATA2MSB) (endianness big))
+                         (else (error "unhandled byte order" data))))))
+      (cond
+       ((= class ELFCLASS32) (parse-elf32 bv byte-order))
+       ((= class ELFCLASS64) (parse-elf64 bv byte-order))
+       (else (error "unhandled class" class)))))
+   (else
+    (error "Invalid ELF" bv))))
+
+(define* (write-elf-header bv elf)
+  ((case (elf-word-size elf)
+     ((4) write-elf32-header)
+     ((8) write-elf64-header)
+     (else (error "unknown word size" (elf-word-size elf))))
+   bv elf))
+
+;;
+;; Segment types
+;;
+(define PT_NULL         0)              ; Program header table entry unused
+(define PT_LOAD         1)              ; Loadable program segment
+(define PT_DYNAMIC      2)              ; Dynamic linking information
+(define PT_INTERP       3)              ; Program interpreter
+(define PT_NOTE         4)              ; Auxiliary information
+(define PT_SHLIB        5)              ; Reserved
+(define PT_PHDR         6)              ; Entry for header table itself
+(define PT_TLS          7)              ; Thread-local storage segment
+(define PT_NUM          8)              ; Number of defined types
+(define PT_LOOS         #x60000000)     ; Start of OS-specific
+(define PT_GNU_EH_FRAME #x6474e550)     ; GCC .eh_frame_hdr segment
+(define PT_GNU_STACK    #x6474e551)     ; Indicates stack executability
+(define PT_GNU_RELRO    #x6474e552)     ; Read-only after relocation
+
+;;
+;; Segment flags
+;;
+(define PF_X            (ash 1 0))      ; Segment is executable
+(define PF_W            (ash 1 1))      ; Segment is writable
+(define PF_R            (ash 1 2))      ; Segment is readable
+
+(define-record-type <elf-segment>
+  (make-elf-segment index type offset vaddr paddr filesz memsz flags align)
+  elf-segment?
+  (index elf-segment-index)
+  (type elf-segment-type)
+  (offset elf-segment-offset)
+  (vaddr elf-segment-vaddr)
+  (paddr elf-segment-paddr)
+  (filesz elf-segment-filesz)
+  (memsz elf-segment-memsz)
+  (flags elf-segment-flags)
+  (align elf-segment-align))
+
+(define* (make-elf-segment* #:key (index -1) (type PT_LOAD) (offset 0) (vaddr 0)
+                            (paddr 0) (filesz 0) (memsz filesz)
+                            (flags (logior PF_W PF_R))
+                            (align 8))
+  (make-elf-segment index type offset vaddr paddr filesz memsz flags align))
+
+;; typedef struct {
+;;     uint32_t   p_type;
+;;     Elf32_Off  p_offset;
+;;     Elf32_Addr p_vaddr;
+;;     Elf32_Addr p_paddr;
+;;     uint32_t   p_filesz;
+;;     uint32_t   p_memsz;
+;;     uint32_t   p_flags;
+;;     uint32_t   p_align;
+;; } Elf32_Phdr;
+
+(define (parse-elf32-program-header index bv offset byte-order)
+  (if (<= (+ offset 32) (bytevector-length bv))
+      (make-elf-segment index
+                        (bytevector-u32-ref bv offset byte-order)
+                        (bytevector-u32-ref bv (+ offset 4) byte-order)
+                        (bytevector-u32-ref bv (+ offset 8) byte-order)
+                        (bytevector-u32-ref bv (+ offset 12) byte-order)
+                        (bytevector-u32-ref bv (+ offset 16) byte-order)
+                        (bytevector-u32-ref bv (+ offset 20) byte-order)
+                        (bytevector-u32-ref bv (+ offset 24) byte-order)
+                        (bytevector-u32-ref bv (+ offset 28) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf32-program-header bv offset byte-order seg)
+  (bytevector-u32-set! bv offset (elf-segment-type seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 4) (elf-segment-offset seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 8) (elf-segment-vaddr seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 12) (elf-segment-paddr seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 16) (elf-segment-filesz seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 20) (elf-segment-memsz seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 24) (elf-segment-flags seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 28) (elf-segment-align seg) byte-order))
+
+
+;; typedef struct {
+;;     uint32_t   p_type;
+;;     uint32_t   p_flags;
+;;     Elf64_Off  p_offset;
+;;     Elf64_Addr p_vaddr;
+;;     Elf64_Addr p_paddr;
+;;     uint64_t   p_filesz;
+;;     uint64_t   p_memsz;
+;;     uint64_t   p_align;
+;; } Elf64_Phdr;
+
+;; NB: position of `flags' is different!
+
+(define (parse-elf64-program-header index bv offset byte-order)
+  (if (<= (+ offset 56) (bytevector-length bv))
+      (make-elf-segment index
+                        (bytevector-u32-ref bv offset byte-order)
+                        (bytevector-u64-ref bv (+ offset 8) byte-order)
+                        (bytevector-u64-ref bv (+ offset 16) byte-order)
+                        (bytevector-u64-ref bv (+ offset 24) byte-order)
+                        (bytevector-u64-ref bv (+ offset 32) byte-order)
+                        (bytevector-u64-ref bv (+ offset 40) byte-order)
+                        (bytevector-u32-ref bv (+ offset 4) byte-order)
+                        (bytevector-u64-ref bv (+ offset 48) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf64-program-header bv offset byte-order seg)
+  (bytevector-u32-set! bv offset (elf-segment-type seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 8) (elf-segment-offset seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 16) (elf-segment-vaddr seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 24) (elf-segment-paddr seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 32) (elf-segment-filesz seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 40) (elf-segment-memsz seg) byte-order)
+  (bytevector-u32-set! bv (+ offset 4) (elf-segment-flags seg) byte-order)
+  (bytevector-u64-set! bv (+ offset 48) (elf-segment-align seg) byte-order))
+
+(define (write-elf-program-header bv offset byte-order word-size seg)
+  ((case word-size
+     ((4) write-elf32-program-header)
+     ((8) write-elf64-program-header)
+     (else (error "invalid word size" word-size)))
+   bv offset byte-order seg))
+
+(define (elf-program-header-len word-size)
+  (case word-size
+    ((4) 32)
+    ((8) 56)
+    (else (error "bad word size" word-size))))
+
+(define (elf-segment elf n)
+  (if (not (< -1 n (elf-phnum elf)))
+      (error "bad segment number" n))
+  ((case (elf-word-size elf)
+     ((4) parse-elf32-program-header)
+     ((8) parse-elf64-program-header)
+     (else (error "unhandled pointer size")))
+   (elf-bytes elf)
+   (+ (elf-phoff elf) (* n (elf-phentsize elf)))
+   (elf-byte-order elf)))
+
+(define (elf-segments elf)
+  (let lp ((n (elf-phnum elf)) (out '()))
+    (if (zero? n)
+        out
+        (lp (1- n) (cons (elf-segment elf (1- n)) out)))))
+
+(define-record-type <elf-section>
+  (make-elf-section index name type flags
+                    addr offset size link info addralign entsize)
+  elf-section?
+  (index elf-section-index)
+  (name elf-section-name)
+  (type elf-section-type)
+  (flags elf-section-flags)
+  (addr elf-section-addr)
+  (offset elf-section-offset)
+  (size elf-section-size)
+  (link elf-section-link)
+  (info elf-section-info)
+  (addralign elf-section-addralign)
+  (entsize elf-section-entsize))
+
+(define* (make-elf-section* #:key (index SHN_UNDEF) (name 0) (type SHT_PROGBITS)
+                            (flags SHF_ALLOC) (addr 0) (offset 0) (size 0)
+                            (link 0) (info 0) (addralign 8) (entsize 0))
+  (make-elf-section index name type flags addr offset size link info addralign
+                    entsize))
+
+;; typedef struct {
+;;     uint32_t   sh_name;
+;;     uint32_t   sh_type;
+;;     uint32_t   sh_flags;
+;;     Elf32_Addr sh_addr;
+;;     Elf32_Off  sh_offset;
+;;     uint32_t   sh_size;
+;;     uint32_t   sh_link;
+;;     uint32_t   sh_info;
+;;     uint32_t   sh_addralign;
+;;     uint32_t   sh_entsize;
+;; } Elf32_Shdr;
+
+(define (parse-elf32-section-header index bv offset byte-order)
+  (if (<= (+ offset 40) (bytevector-length bv))
+      (make-elf-section index
+                        (bytevector-u32-ref bv offset byte-order)
+                        (bytevector-u32-ref bv (+ offset 4) byte-order)
+                        (bytevector-u32-ref bv (+ offset 8) byte-order)
+                        (bytevector-u32-ref bv (+ offset 12) byte-order)
+                        (bytevector-u32-ref bv (+ offset 16) byte-order)
+                        (bytevector-u32-ref bv (+ offset 20) byte-order)
+                        (bytevector-u32-ref bv (+ offset 24) byte-order)
+                        (bytevector-u32-ref bv (+ offset 28) byte-order)
+                        (bytevector-u32-ref bv (+ offset 32) byte-order)
+                        (bytevector-u32-ref bv (+ offset 36) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf32-section-header bv offset byte-order sec)
+  (bytevector-u32-set! bv offset (elf-section-name sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 4) (elf-section-type sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 8) (elf-section-flags sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 12) (elf-section-addr sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 16) (elf-section-offset sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 20) (elf-section-size sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 24) (elf-section-link sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 28) (elf-section-info sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 32) (elf-section-addralign sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 36) (elf-section-entsize sec) byte-order))
+
+
+;; typedef struct {
+;;     uint32_t   sh_name;
+;;     uint32_t   sh_type;
+;;     uint64_t   sh_flags;
+;;     Elf64_Addr sh_addr;
+;;     Elf64_Off  sh_offset;
+;;     uint64_t   sh_size;
+;;     uint32_t   sh_link;
+;;     uint32_t   sh_info;
+;;     uint64_t   sh_addralign;
+;;     uint64_t   sh_entsize;
+;; } Elf64_Shdr;
+
+(define (elf-section-header-len word-size)
+  (case word-size
+    ((4) 40)
+    ((8) 64)
+    (else (error "bad word size" word-size))))
+
+(define (elf-section-header-addr-offset word-size)
+  (case word-size
+    ((4) 12)
+    ((8) 16)
+    (else (error "bad word size" word-size))))
+
+(define (elf-section-header-offset-offset word-size)
+  (case word-size
+    ((4) 16)
+    ((8) 24)
+    (else (error "bad word size" word-size))))
+
+(define (parse-elf64-section-header index bv offset byte-order)
+  (if (<= (+ offset 64) (bytevector-length bv))
+      (make-elf-section index
+                        (bytevector-u32-ref bv offset byte-order)
+                        (bytevector-u32-ref bv (+ offset 4) byte-order)
+                        (bytevector-u64-ref bv (+ offset 8) byte-order)
+                        (bytevector-u64-ref bv (+ offset 16) byte-order)
+                        (bytevector-u64-ref bv (+ offset 24) byte-order)
+                        (bytevector-u64-ref bv (+ offset 32) byte-order)
+                        (bytevector-u32-ref bv (+ offset 40) byte-order)
+                        (bytevector-u32-ref bv (+ offset 44) byte-order)
+                        (bytevector-u64-ref bv (+ offset 48) byte-order)
+                        (bytevector-u64-ref bv (+ offset 56) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf64-section-header bv offset byte-order sec)
+  (bytevector-u32-set! bv offset (elf-section-name sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 4) (elf-section-type sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 8) (elf-section-flags sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 16) (elf-section-addr sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 24) (elf-section-offset sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 32) (elf-section-size sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 40) (elf-section-link sec) byte-order)
+  (bytevector-u32-set! bv (+ offset 44) (elf-section-info sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 48) (elf-section-addralign sec) byte-order)
+  (bytevector-u64-set! bv (+ offset 56) (elf-section-entsize sec) byte-order))
+
+(define (elf-section elf n)
+  (if (not (< -1 n (elf-shnum elf)))
+      (error "bad section number" n))
+  ((case (elf-word-size elf)
+     ((4) parse-elf32-section-header)
+     ((8) parse-elf64-section-header)
+     (else (error "unhandled pointer size")))
+   n
+   (elf-bytes elf)
+   (+ (elf-shoff elf) (* n (elf-shentsize elf)))
+   (elf-byte-order elf)))
+
+(define (write-elf-section-header bv offset byte-order word-size sec)
+  ((case word-size
+     ((4) write-elf32-section-header)
+     ((8) write-elf64-section-header)
+     (else (error "invalid word size" word-size)))
+   bv offset byte-order sec))
+
+(define (elf-sections elf)
+  (let lp ((n (elf-shnum elf)) (out '()))
+    (if (zero? n)
+        out
+        (lp (1- n) (cons (elf-section elf (1- n)) out)))))
+
+;;
+;; Section Types
+;;
+(define SHT_NULL          0)            ; Section header table entry unused
+(define SHT_PROGBITS      1)            ; Program data
+(define SHT_SYMTAB        2)            ; Symbol table
+(define SHT_STRTAB        3)            ; String table
+(define SHT_RELA          4)            ; Relocation entries with addends
+(define SHT_HASH          5)            ; Symbol hash table
+(define SHT_DYNAMIC       6)            ; Dynamic linking information
+(define SHT_NOTE          7)            ; Notes
+(define SHT_NOBITS        8)            ; Program space with no data (bss)
+(define SHT_REL           9)            ; Relocation entries, no addends
+(define SHT_SHLIB         10)           ; Reserved
+(define SHT_DYNSYM        11)           ; Dynamic linker symbol table
+(define SHT_INIT_ARRAY    14)           ; Array of constructors
+(define SHT_FINI_ARRAY    15)           ; Array of destructors
+(define SHT_PREINIT_ARRAY 16)           ; Array of pre-constructors
+(define SHT_GROUP         17)           ; Section group
+(define SHT_SYMTAB_SHNDX  18)           ; Extended section indeces
+(define SHT_NUM           19)           ; Number of defined types. 
+(define SHT_LOOS          #x60000000)   ; Start OS-specific. 
+(define SHT_HIOS          #x6fffffff)   ; End OS-specific type
+(define SHT_LOPROC        #x70000000)   ; Start of processor-specific
+(define SHT_HIPROC        #x7fffffff)   ; End of processor-specific
+(define SHT_LOUSER        #x80000000)   ; Start of application-specific
+(define SHT_HIUSER        #x8fffffff)   ; End of application-specific
+
+;;
+;; Section Flags
+;;
+(define SHF_WRITE            (ash 1 0)) ; Writable
+(define SHF_ALLOC            (ash 1 1)) ; Occupies memory during execution
+(define SHF_EXECINSTR        (ash 1 2)) ; Executable
+(define SHF_MERGE            (ash 1 4)) ; Might be merged
+(define SHF_STRINGS          (ash 1 5)) ; Contains nul-terminated strings
+(define SHF_INFO_LINK        (ash 1 6)) ; `sh_info' contains SHT index
+(define SHF_LINK_ORDER       (ash 1 7)) ; Preserve order after combining
+(define SHF_OS_NONCONFORMING (ash 1 8)) ; Non-standard OS specific handling required
+(define SHF_GROUP            (ash 1 9)) ; Section is member of a group. 
+(define SHF_TLS              (ash 1 10)) ; Section hold thread-local data. 
+
+;;
+;; Dynamic entry types.  The DT_GUILE types are non-standard.
+;;
+(define DT_NULL		0)		; Marks end of dynamic section
+(define DT_NEEDED	1)		; Name of needed library
+(define DT_PLTRELSZ	2)		; Size in bytes of PLT relocs
+(define DT_PLTGOT	3)		; Processor defined value
+(define DT_HASH		4)		; Address of symbol hash table
+(define DT_STRTAB	5)		; Address of string table
+(define DT_SYMTAB	6)		; Address of symbol table
+(define DT_RELA		7)		; Address of Rela relocs
+(define DT_RELASZ	8)		; Total size of Rela relocs
+(define DT_RELAENT	9)		; Size of one Rela reloc
+(define DT_STRSZ	10)		; Size of string table
+(define DT_SYMENT	11)		; Size of one symbol table entry
+(define DT_INIT		12)		; Address of init function
+(define DT_FINI		13)		; Address of termination function
+(define DT_SONAME	14)		; Name of shared object
+(define DT_RPATH	15)		; Library search path (deprecated)
+(define DT_SYMBOLIC	16)		; Start symbol search here
+(define DT_REL		17)		; Address of Rel relocs
+(define DT_RELSZ	18)		; Total size of Rel relocs
+(define DT_RELENT	19)		; Size of one Rel reloc
+(define DT_PLTREL	20)		; Type of reloc in PLT
+(define DT_DEBUG	21)		; For debugging ; unspecified
+(define DT_TEXTREL	22)		; Reloc might modify .text
+(define DT_JMPREL	23)		; Address of PLT relocs
+(define	DT_BIND_NOW	24)		; Process relocations of object
+(define	DT_INIT_ARRAY	25)		; Array with addresses of init fct
+(define	DT_FINI_ARRAY	26)		; Array with addresses of fini fct
+(define	DT_INIT_ARRAYSZ	27)		; Size in bytes of DT_INIT_ARRAY
+(define	DT_FINI_ARRAYSZ	28)		; Size in bytes of DT_FINI_ARRAY
+(define DT_RUNPATH	29)		; Library search path
+(define DT_FLAGS	30)		; Flags for the object being loaded
+(define DT_ENCODING	32)		; Start of encoded range
+(define DT_PREINIT_ARRAY 32)		; Array with addresses of preinit fc
+(define DT_PREINIT_ARRAYSZ 33)		; size in bytes of DT_PREINIT_ARRAY
+(define	DT_NUM		34)		; Number used
+(define DT_LOGUILE      #x37146000)     ; Start of Guile-specific
+(define DT_GUILE_GC_ROOT    #x37146000) ; Offset of GC roots
+(define DT_GUILE_GC_ROOT_SZ #x37146001) ; Size in machine words of GC roots
+(define DT_GUILE_ENTRY      #x37146002) ; Address of entry thunk
+(define DT_GUILE_VM_VERSION #x37146003) ; Bytecode version
+(define DT_GUILE_FRAME_MAPS #x37146004) ; Offset of .guile.frame-maps
+(define DT_HIGUILE      #x37146fff)     ; End of Guile-specific
+(define DT_LOOS		#x6000000d)	; Start of OS-specific
+(define DT_HIOS		#x6ffff000)	; End of OS-specific
+(define DT_LOPROC	#x70000000)	; Start of processor-specific
+(define DT_HIPROC	#x7fffffff)	; End of processor-specific
+
+
+(define (string-table-ref bv offset)
+  (let lp ((end offset))
+    (if (zero? (bytevector-u8-ref bv end))
+        (let ((out (make-bytevector (- end offset))))
+          (bytevector-copy! bv offset out 0 (- end offset))
+          (utf8->string out))
+        (lp (1+ end)))))
+
+(define (elf-section-by-name elf name)
+  (let ((off (elf-section-offset (elf-section elf (elf-shstrndx elf)))))
+    (let lp ((n (elf-shnum elf)))
+      (and (> n 0)
+           (let ((section (elf-section elf (1- n))))
+             (if (equal? (string-table-ref (elf-bytes elf)
+                                           (+ off (elf-section-name section)))
+                         name)
+                 section
+                 (lp (1- n))))))))
+
+(define (elf-sections-by-name elf)
+  (let* ((sections (elf-sections elf))
+         (off (elf-section-offset (list-ref sections (elf-shstrndx elf)))))
+    (map (lambda (section)
+           (cons (string-table-ref (elf-bytes elf)
+                                   (+ off (elf-section-name section)))
+                 section))
+         sections)))
+
+(define-record-type <elf-symbol>
+  (make-elf-symbol name value size info other shndx)
+  elf-symbol?
+  (name elf-symbol-name)
+  (value elf-symbol-value)
+  (size elf-symbol-size)
+  (info elf-symbol-info)
+  (other elf-symbol-other)
+  (shndx elf-symbol-shndx))
+
+(define* (make-elf-symbol* #:key (name 0) (value 0) (size 0)
+                           (binding STB_LOCAL) (type STT_NOTYPE)
+                           (info (logior (ash binding 4) type))
+                           (visibility STV_DEFAULT) (other visibility)
+                           (shndx SHN_UNDEF))
+  (make-elf-symbol name value size info other shndx))
+
+;; typedef struct {
+;;     uint32_t      st_name;
+;;     Elf32_Addr    st_value;
+;;     uint32_t      st_size;
+;;     unsigned char st_info;
+;;     unsigned char st_other;
+;;     uint16_t      st_shndx;
+;; } Elf32_Sym;
+
+(define (elf-symbol-len word-size)
+  (case word-size
+    ((4) 16)
+    ((8) 24)
+    (else (error "bad word size" word-size))))
+
+(define (elf-symbol-value-offset word-size)
+  (case word-size
+    ((4) 4)
+    ((8) 8)
+    (else (error "bad word size" word-size))))
+
+(define (parse-elf32-symbol bv offset stroff byte-order)
+  (if (<= (+ offset 16) (bytevector-length bv))
+      (make-elf-symbol (let ((name (bytevector-u32-ref bv offset byte-order)))
+                         (if stroff
+                             (string-table-ref bv (+ stroff name))
+                             name))
+                       (bytevector-u32-ref bv (+ offset 4) byte-order)
+                       (bytevector-u32-ref bv (+ offset 8) byte-order)
+                       (bytevector-u8-ref bv (+ offset 12))
+                       (bytevector-u8-ref bv (+ offset 13))
+                       (bytevector-u16-ref bv (+ offset 14) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf32-symbol bv offset byte-order sym)
+  (bytevector-u32-set! bv offset (elf-symbol-name sym) byte-order)
+  (bytevector-u32-set! bv (+ offset 4) (elf-symbol-value sym) byte-order)
+  (bytevector-u32-set! bv (+ offset 8) (elf-symbol-size sym) byte-order)
+  (bytevector-u8-set! bv (+ offset 12) (elf-symbol-info sym))
+  (bytevector-u8-set! bv (+ offset 13) (elf-symbol-other sym))
+  (bytevector-u16-set! bv (+ offset 14) (elf-symbol-shndx sym) byte-order))
+
+;; typedef struct {
+;;     uint32_t      st_name;
+;;     unsigned char st_info;
+;;     unsigned char st_other;
+;;     uint16_t      st_shndx;
+;;     Elf64_Addr    st_value;
+;;     uint64_t      st_size;
+;; } Elf64_Sym;
+
+(define (parse-elf64-symbol bv offset stroff byte-order)
+  (if (<= (+ offset 24) (bytevector-length bv))
+      (make-elf-symbol (let ((name (bytevector-u32-ref bv offset byte-order)))
+                         (if stroff
+                             (string-table-ref bv (+ stroff name))
+                             name))
+                       (bytevector-u64-ref bv (+ offset 8) byte-order)
+                       (bytevector-u64-ref bv (+ offset 16) byte-order)
+                       (bytevector-u8-ref bv (+ offset 4))
+                       (bytevector-u8-ref bv (+ offset 5))
+                       (bytevector-u16-ref bv (+ offset 6) byte-order))
+      (error "corrupt ELF (offset out of range)" offset)))
+
+(define (write-elf64-symbol bv offset byte-order sym)
+  (bytevector-u32-set! bv offset (elf-symbol-name sym) byte-order)
+  (bytevector-u8-set! bv (+ offset 4) (elf-symbol-info sym))
+  (bytevector-u8-set! bv (+ offset 5) (elf-symbol-other sym))
+  (bytevector-u16-set! bv (+ offset 6) (elf-symbol-shndx sym) byte-order)
+  (bytevector-u64-set! bv (+ offset 8) (elf-symbol-value sym) byte-order)
+  (bytevector-u64-set! bv (+ offset 16) (elf-symbol-size sym) byte-order))
+
+(define (write-elf-symbol bv offset byte-order word-size sym)
+  ((case word-size
+     ((4) write-elf32-symbol)
+     ((8) write-elf64-symbol)
+     (else (error "invalid word size" word-size)))
+   bv offset byte-order sym))
+
+(define (elf-symbol-table-len section)
+  (let ((len (elf-section-size section))
+        (entsize (elf-section-entsize section)))
+    (unless (and (not (zero? entsize)) (zero? (modulo len entsize)))
+      (error "bad symbol table" section))
+    (/ len entsize)))
+
+(define* (elf-symbol-table-ref elf section n #:optional strtab)
+  (let ((bv (elf-bytes elf))
+        (byte-order (elf-byte-order elf))
+        (stroff (and strtab (elf-section-offset strtab)))
+        (base (elf-section-offset section))
+        (len (elf-section-size section))
+        (entsize (elf-section-entsize section)))
+    (unless (<= (* (1+ n) entsize) len)
+      (error "out of range symbol table access" section n))
+    (case (elf-word-size elf)
+      ((4)
+       (unless (<= 16 entsize)
+         (error "bad entsize for symbol table" section))
+       (parse-elf32-symbol bv (+ base (* n entsize)) stroff byte-order))
+      ((8)
+       (unless (<= 24 entsize)
+         (error "bad entsize for symbol table" section))
+       (parse-elf64-symbol bv (+ base (* n entsize)) stroff byte-order))
+      (else (error "bad word size" elf)))))
+
+;; Legal values for ST_BIND subfield of st_info (symbol binding).
+
+(define STB_LOCAL	0)		; Local symbol
+(define STB_GLOBAL	1)		; Global symbol
+(define STB_WEAK	2)		; Weak symbol
+(define STB_NUM		3)		; Number of defined types. 
+(define STB_LOOS	10)		; Start of OS-specific
+(define STB_GNU_UNIQUE	10)		; Unique symbol. 
+(define STB_HIOS	12)		; End of OS-specific
+(define STB_LOPROC	13)		; Start of processor-specific
+(define STB_HIPROC	15)		; End of processor-specific
+
+;; Legal values for ST_TYPE subfield of st_info (symbol type).
+
+(define STT_NOTYPE	0)		; Symbol type is unspecified
+(define STT_OBJECT	1)		; Symbol is a data object
+(define STT_FUNC	2)		; Symbol is a code object
+(define STT_SECTION	3)		; Symbol associated with a section
+(define STT_FILE	4)		; Symbol's name is file name
+(define STT_COMMON	5)		; Symbol is a common data object
+(define STT_TLS		6)		; Symbol is thread-local data objec
+(define STT_NUM		7)		; Number of defined types. 
+(define STT_LOOS	10)		; Start of OS-specific
+(define STT_GNU_IFUNC	10)		; Symbol is indirect code object
+(define STT_HIOS	12)		; End of OS-specific
+(define STT_LOPROC	13)		; Start of processor-specific
+(define STT_HIPROC	15)		; End of processor-specific
+
+;; Symbol visibility specification encoded in the st_other field.
+
+(define STV_DEFAULT	0)		; Default symbol visibility rules
+(define STV_INTERNAL	1)		; Processor specific hidden class
+(define STV_HIDDEN	2)		; Sym unavailable in other modules
+(define STV_PROTECTED	3)		; Not preemptible, not exported
+
+(define (elf-symbol-binding sym)
+  (ash (elf-symbol-info sym) -4))
+
+(define (elf-symbol-type sym)
+  (logand (elf-symbol-info sym) #xf))
+
+(define (elf-symbol-visibility sym)
+  (logand (elf-symbol-other sym) #x3))
+
+(define NT_GNU_ABI_TAG 1)
+(define NT_GNU_HWCAP 2)
+(define NT_GNU_BUILD_ID 3)
+(define NT_GNU_GOLD_VERSION 4)
+
+(define-record-type <elf-note>
+  (make-elf-note name desc type)
+  elf-note?
+  (name elf-note-name)
+  (desc elf-note-desc)
+  (type elf-note-type))
+
+(define (parse-elf-note elf section)
+  (let ((bv (elf-bytes elf))
+        (byte-order (elf-byte-order elf))
+        (offset (elf-section-offset section)))
+    (unless (<= (+ offset 12) (bytevector-length bv))
+      (error "corrupt ELF (offset out of range)" offset))
+    (let ((namesz (bytevector-u32-ref bv offset byte-order))
+          (descsz (bytevector-u32-ref bv (+ offset 4) byte-order))
+          (type (bytevector-u32-ref bv (+ offset 8) byte-order)))
+      (unless (<= (+ offset 12 namesz descsz) (bytevector-length bv))
+        (error "corrupt ELF (offset out of range)" offset))
+      (let ((name (make-bytevector (1- namesz)))
+            (desc (make-bytevector descsz)))
+        (bytevector-copy! bv (+ offset 12) name 0 (1- namesz))
+        (bytevector-copy! bv (+ offset 12 namesz) desc 0 descsz)
+        (make-elf-note (utf8->string name) desc type)))))
diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm
index ee84446549..0528e9f253 100644
--- a/guix/gnu-maintenance.scm
+++ b/guix/gnu-maintenance.scm
@@ -233,12 +233,14 @@ stored."
      (values "ftp.gnu.org" (string-append "/gnu/" project)))))
 
 (define (sans-extension tarball)
-  "Return TARBALL without its .tar.* extension."
-  (let ((end (string-contains tarball ".tar")))
+  "Return TARBALL without its .tar.* or .zip extension."
+  (let ((end (or (string-contains tarball ".tar")
+                 (string-contains tarball ".zip"))))
     (substring tarball 0 end)))
 
 (define %tarball-rx
-  (make-regexp "^(.+)-([0-9]|[^-])*(-src)?\\.tar\\."))
+  ;; Note: .zip files are notably used for freefont-ttf.
+  (make-regexp "^(.+)-([0-9]|[^-])*(-src)?\\.(tar\\.|zip$)"))
 
 (define %alpha-tarball-rx
   (make-regexp "^.*-.*[0-9](-|~)?(alpha|beta|rc|cvs|svn|git)-?[0-9\\.]*\\.tar\\."))
diff --git a/guix/import/gnu.scm b/guix/import/gnu.scm
index 763b8d2a12..1947f489fb 100644
--- a/guix/import/gnu.scm
+++ b/guix/import/gnu.scm
@@ -84,7 +84,7 @@
                                      ,(string-append ".tar." archive-type)))
                  (sha256
                   (base32
-                   ,(bytevector->base32-string (file-sha256 tarball))))))
+                   ,(bytevector->nix-base32-string (file-sha256 tarball))))))
        (build-system gnu-build-system)
        (synopsis ,(gnu-package-doc-summary package))
        (description ,(gnu-package-doc-description package))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index 3a21f4f5cf..86f3ae4e82 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -40,7 +40,8 @@
             ibmpl1.0
             imlib2
             lgpl2.0 lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
-            mpl2.0
+            mpl1.1 mpl2.0
+            ncsa
             openldap2.8 openssl
             psfl public-domain
             qpl
@@ -239,11 +240,21 @@ which may be a file:// URI pointing the package's tree."
            "https://www.gnu.org/licenses/lgpl.html"
            "https://www.gnu.org/licenses/license-list#LGPLv3"))
 
+(define mpl1.1
+  (license "MPL 1.1"
+           "http://directory.fsf.org/wiki/License:MPLv1.1"
+           "https://www.gnu.org/licenses/license-list#MPL"))
+
 (define mpl2.0
   (license "MPL 2.0"
            "http://directory.fsf.org/wiki/License:MPLv2.0"
            "https://www.gnu.org/licenses/license-list#MPL-2.0"))
 
+(define ncsa
+  (license "NCSA/University of Illinois Open Source License"
+           "http://directory.fsf.org/wiki/License:IllinoisNCSA"
+           "https://www.gnu.org/licenses/license-list#NCSA"))
+
 (define openssl
   (license "OpenSSL"
            "http://directory.fsf.org/wiki/License:OpenSSL"
diff --git a/guix/monads.scm b/guix/monads.scm
index b419ba066a..65683e65de 100644
--- a/guix/monads.scm
+++ b/guix/monads.scm
@@ -39,7 +39,9 @@
             mlet
             mlet*
             mbegin
-            lift1 lift2 lift3 lift4 lift5 lift6 lift7 lift
+            mwhen
+            munless
+            lift0 lift1 lift2 lift3 lift4 lift5 lift6 lift7 lift
             listm
             foldm
             mapm
@@ -173,9 +175,15 @@ form is (VAR -> VAL), bind VAR to the non-monadic value VAL in the same way as
                body ...)))))))
 
 (define-syntax mbegin
-  (syntax-rules ()
+  (syntax-rules (%current-monad)
     "Bind the given monadic expressions in sequence, returning the result of
 the last one."
+    ((_ %current-monad mexp)
+     mexp)
+    ((_ %current-monad mexp rest ...)
+     (>>= mexp
+          (lambda (unused-value)
+            (mbegin %current-monad rest ...))))
     ((_ monad mexp)
      (with-monad monad
        mexp))
@@ -185,6 +193,26 @@ the last one."
             (lambda (unused-value)
               (mbegin monad rest ...)))))))
 
+(define-syntax mwhen
+  (syntax-rules ()
+    "When CONDITION is true, evaluate EXP0..EXP* as in an 'mbegin'.  When
+CONDITION is false, return *unspecified* in the current monad."
+    ((_ condition exp0 exp* ...)
+     (if condition
+         (mbegin %current-monad
+           exp0 exp* ...)
+         (return *unspecified*)))))
+
+(define-syntax munless
+  (syntax-rules ()
+    "When CONDITION is false, evaluate EXP0..EXP* as in an 'mbegin'.  When
+CONDITION is true, return *unspecified* in the current monad."
+    ((_ condition exp0 exp* ...)
+     (if condition
+         (return *unspecified*)
+         (mbegin %current-monad
+           exp0 exp* ...)))))
+
 (define-syntax define-lift
   (syntax-rules ()
     ((_ liftn (args ...))
@@ -194,6 +222,7 @@ the last one."
          (with-monad monad
            (return (proc args ...))))))))
 
+(define-lift lift0 ())
 (define-lift lift1 (a))
 (define-lift lift2 (a b))
 (define-lift lift3 (a b c))
diff --git a/guix/packages.scm b/guix/packages.scm
index 67a767106e..07f6d0ccbc 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -376,7 +376,7 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
                     (add-to-store store (basename patch) #t
                                   "sha256" patch))
                    ((? origin?)
-                    (package-source-derivation store patch)))))
+                    (package-source-derivation store patch system)))))
          (iota (length patches))
 
          patches))
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index 84904e29da..781ffc5f58 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -293,6 +293,11 @@ the input port."
 (define (guix-archive . args)
   (define (parse-options)
     ;; Return the alist of option values.
+    (append (parse-options-from args)
+            (parse-options-from (environment-build-options))))
+
+  (define (parse-options-from args)
+    ;; Actual parsing takes place here.
     (args-fold* args %options
                 (lambda (opt name arg result)
                   (leave (_ "~A: unrecognized option~%") name))
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 7b7f419f3a..26e9f42774 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -119,7 +119,9 @@ options handled by 'set-build-options-from-command-line', and listed in
   (display (_ "
       --verbosity=LEVEL  use the given verbosity LEVEL"))
   (display (_ "
-  -c, --cores=N          allow the use of up to N CPU cores for the build")))
+  -c, --cores=N          allow the use of up to N CPU cores for the build"))
+  (display (_ "
+  -M, --max-jobs=N       allow at most N build jobs")))
 
 (define (set-build-options-from-command-line store opts)
   "Given OPTS, an alist as returned by 'args-fold' given
@@ -128,6 +130,7 @@ options handled by 'set-build-options-from-command-line', and listed in
   (set-build-options store
                      #:keep-failed? (assoc-ref opts 'keep-failed?)
                      #:build-cores (or (assoc-ref opts 'cores) 0)
+                     #:max-build-jobs (or (assoc-ref opts 'max-jobs) 1)
                      #:fallback? (assoc-ref opts 'fallback?)
                      #:use-substitutes? (assoc-ref opts 'substitutes?)
                      #:use-build-hook? (assoc-ref opts 'build-hook?)
@@ -192,7 +195,15 @@ options handled by 'set-build-options-from-command-line', and listed in
                   (let ((c (false-if-exception (string->number arg))))
                     (if c
                         (apply values (alist-cons 'cores c result) rest)
-                        (leave (_ "~a: not a number~%") arg)))))))
+                        (leave (_ "not a number: '~a' option argument: ~a~%")
+                               name arg)))))
+        (option '(#\M "max-jobs") #t #f
+                (lambda (opt name arg result . rest)
+                  (let ((c (false-if-exception (string->number arg))))
+                    (if c
+                        (apply values (alist-cons 'max-jobs c result) rest)
+                        (leave (_ "not a number: '~a' option argument: ~a~%")
+                               name arg)))))))
 
 
 ;;;
@@ -390,6 +401,11 @@ arguments with packages that use the specified source."
 (define (guix-build . args)
   (define (parse-options)
     ;; Return the alist of option values.
+    (append (parse-options-from args)
+            (parse-options-from (environment-build-options))))
+
+  (define (parse-options-from args)
+    ;; Actual parsing takes place here.
     (args-fold* args %options
                 (lambda (opt name arg result)
                   (leave (_ "~A: unrecognized option~%") name))
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 81bad963f6..c388b0c52c 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -213,6 +213,12 @@ packages."
 ;; Entry point.
 (define (guix-environment . args)
   (define (parse-options)
+    ;; Return the alist of option values.
+    (append (parse-options-from args)
+            (parse-options-from (environment-build-options))))
+
+  (define (parse-options-from args)
+    ;; Actual parsing takes place here.
     (args-fold* args %options
                 (lambda (opt name arg result)
                   (leave (_ "~A: unrecognized option~%") name))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 3a72053766..21dc66cb75 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -668,6 +668,11 @@ removed from MANIFEST."
 (define (guix-package . args)
   (define (parse-options)
     ;; Return the alist of option values.
+    (append (parse-options-from args)
+            (parse-options-from (environment-build-options))))
+
+  (define (parse-options-from args)
+    ;; Actual parsing takes place here.
     (args-fold* args %options
                 (lambda (opt name arg result arg-handler)
                   (leave (_ "~A: unrecognized option~%") name))
diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm
index ddca76d370..9c96411630 100755
--- a/guix/scripts/substitute-binary.scm
+++ b/guix/scripts/substitute-binary.scm
@@ -175,7 +175,7 @@ to the caller without emitting an error message."
                            %fetch-timeout
                            0)
            (begin
-             (warning (_ "while fetching ~a: server is unresponsive~%")
+             (warning (_ "while fetching ~a: server is somewhat slow~%")
                       (uri->string uri))
              (warning (_ "try `--no-substitutes' if the problem persists~%"))
 
@@ -758,6 +758,10 @@ substituter disabled~%")
                                             progress)))
             ;; Unpack the Nar at INPUT into DESTINATION.
             (restore-file input destination)
+
+            ;; Skip a line after what 'progress-proc' printed.
+            (newline (current-error-port))
+
             (every (compose zero? cdr waitpid) pids))))
        (("--version")
         (show-version-and-exit "guix substitute-binary"))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 398a5a371b..27404772b7 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -131,6 +131,27 @@ TARGET, and register them."
               (map (cut copy-item <> target #:log-port log-port)
                    to-copy))))
 
+(define (install-grub* grub.cfg device target)
+  "This is a variant of 'install-grub' with error handling, lifted in
+%STORE-MONAD"
+  (let* ((gc-root      (string-append %gc-roots-directory "/grub.cfg"))
+         (temp-gc-root (string-append gc-root ".new"))
+         (delete-file  (lift1 delete-file %store-monad))
+         (make-symlink (lift2 switch-symlinks %store-monad))
+         (rename       (lift2 rename-file %store-monad)))
+    (mbegin %store-monad
+      ;; Prepare the symlink to GRUB.CFG to make sure that it's a GC root when
+      ;; 'install-grub' completes (being a bit paranoid.)
+      (make-symlink temp-gc-root grub.cfg)
+
+      (munless (false-if-exception (install-grub grub.cfg device target))
+        (delete-file temp-gc-root)
+        (leave (_ "failed to install GRUB on device '~a'~%") device))
+
+      ;; Register GRUB.CFG as a GC root so that its dependencies (background
+      ;; image, font, etc.) are not reclaimed.
+      (rename temp-gc-root gc-root))))
+
 (define* (install os-drv target
                   #:key (log-port (current-output-port))
                   grub? grub.cfg device)
@@ -151,18 +172,19 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
             ;; Copy items to the new store.
             (copy-closure to-copy target #:log-port log-port)))))
 
-  (mlet* %store-monad ((os-dir -> (derivation->output-path os-drv))
-                       (%         (maybe-copy os-dir)))
+  (let ((os-dir   (derivation->output-path os-drv))
+        (format   (lift format %store-monad))
+        (populate (lift2 populate-root-file-system %store-monad)))
 
-    ;; Create a bunch of additional files.
-    (format log-port "populating '~a'...~%" target)
-    (populate-root-file-system os-dir target)
+    (mbegin %store-monad
+      (maybe-copy os-dir)
 
-    (when grub?
-      (unless (false-if-exception (install-grub grub.cfg device target))
-        (leave (_ "failed to install GRUB on device '~a'~%") device)))
+      ;; Create a bunch of additional files.
+      (format log-port "populating '~a'...~%" target)
+      (populate os-dir target)
 
-    (return #t)))
+      (mwhen grub?
+        (install-grub* grub.cfg device target)))))
 
 
 ;;;
@@ -334,14 +356,11 @@ boot directly to the kernel or to the bootloader."
 
           (case action
             ((reconfigure)
-             (mlet %store-monad ((% (switch-to-system os)))
-               (when grub?
-                 (unless (false-if-exception
-                          (install-grub (derivation->output-path grub.cfg)
-                                        device "/"))
-                   (leave (_ "failed to install GRUB on device '~a'~%")
-                          device)))
-               (return #t)))
+             (mbegin %store-monad
+               (switch-to-system os)
+               (mwhen grub?
+                 (install-grub* (derivation->output-path grub.cfg)
+                                device "/"))))
             ((init)
              (newline)
              (format #t (_ "initializing operating system under '~a'...~%")
@@ -467,6 +486,11 @@ Build the operating system declared in FILE according to ACTION.\n"))
 (define (guix-system . args)
   (define (parse-options)
     ;; Return the alist of option values.
+    (append (parse-options-from args)
+            (parse-options-from (environment-build-options))))
+
+  (define (parse-options-from args)
+    ;; Actual parsing takes place here.
     (args-fold* args %options
                 (lambda (opt name arg result)
                   (leave (_ "~A: unrecognized option~%") name))
diff --git a/guix/store.scm b/guix/store.scm
index bc4c641583..571cc060d3 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -435,14 +435,14 @@ encoding conversion errors."
 (define* (set-build-options server
                             #:key keep-failed? keep-going? fallback?
                             (verbosity 0)
-                            (max-build-jobs (current-processor-count))
+                            (max-build-jobs 1)
                             timeout
                             (max-silent-time 3600)
                             (use-build-hook? #t)
                             (build-verbosity 0)
                             (log-type 0)
                             (print-build-trace #t)
-                            (build-cores 1)
+                            (build-cores (current-processor-count))
                             (use-substitutes? #t)
                             (binary-caches '())) ; client "untrusted" cache URLs
   ;; Must be called after `open-connection'.
diff --git a/guix/ui.scm b/guix/ui.scm
index 69b073da50..c77e04172e 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -64,6 +64,7 @@
             string->generations
             string->duration
             args-fold*
+            environment-build-options
             run-guix-command
             program-name
             guix-warning-port
@@ -712,6 +713,10 @@ reporting."
       (leave (_ "invalid argument: ~a~%")
              (apply format #f msg args)))))
 
+(define (environment-build-options)
+  "Return additional build options passed as environment variables."
+  (arguments-from-environment-variable "GUIX_BUILD_OPTIONS"))
+
 (define (show-guix-usage)
   (format (current-error-port)
           (_ "Try `guix --help' for more information.~%"))
diff --git a/guix/utils.scm b/guix/utils.scm
index 9b802b6fb3..d0d2e8a3d4 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -72,6 +72,7 @@
             package-name->name+version
             string-tokenize*
             string-replace-substring
+            arguments-from-environment-variable
             file-extension
             file-sans-extension
             call-with-temporary-output-file
@@ -627,6 +628,15 @@ REPLACEMENT."
                        (substring str start index)
                        pieces))))))))
 
+(define (arguments-from-environment-variable variable)
+  "Retrieve value of environment variable denoted by string VARIABLE in the
+form of a list of strings (`char-set:graphic' tokens) suitable for consumption
+by `args-fold', if VARIABLE is defined, otherwise return an empty list."
+  (let ((env (getenv variable)))
+    (if env
+        (string-tokenize env char-set:graphic)
+        '())))
+
 (define (call-with-temporary-output-file proc)
   "Call PROC with a name of a temporary file and open output port to that
 file; close the file and delete it when leaving the dynamic extent of this
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index d1d4541971..3cca120755 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -264,6 +264,9 @@ main (int argc, char *argv[])
   /* Turn automatic deduplication on by default.  */
   settings.autoOptimiseStore = true;
 
+  /* Default to using as many cores as possible.  */
+  settings.buildCores = 0;
+
   argvSaved = argv;
 
   try
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 5cc68ff404..591b6a1c9a 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -1,6 +1,7 @@
 # List of source files which contain translatable strings.
 # This should be source files of the various tools, and not package modules.
 gnu/packages.scm
+gnu/system.scm
 guix/scripts/build.scm
 guix/scripts/download.scm
 guix/scripts/package.scm
diff --git a/po/guix/eo.po b/po/guix/eo.po
index cffc546dc1..ee57c6520b 100644
--- a/po/guix/eo.po
+++ b/po/guix/eo.po
@@ -5,49 +5,68 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: guix 0.7-pre1\n"
+"Project-Id-Version: guix 0.8\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-07-25 00:55+0200\n"
-"PO-Revision-Date: 2014-07-14 11:29-0300\n"
+"POT-Creation-Date: 2014-11-09 22:32+0100\n"
+"PO-Revision-Date: 2014-12-07 16:05-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
 "Language: eo\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 1.6.10\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: gnu/packages.scm:102
+#: gnu/packages.scm:120
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "ne eblas atingi '~a': ~a~%"
 
-#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
+#: gnu/packages.scm:350
+#, scheme-format
+msgid "looking for the latest release of GNU ~a..."
+msgstr "ni serĉas la lastan eldonon de GNU ~a..."
+
+#: gnu/packages.scm:354
+#, scheme-format
+msgid "~a: note: using ~a but ~a is available upstream~%"
+msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"
+
+#: gnu/packages.scm:376 guix/scripts/package.scm:305
 #, scheme-format
 msgid "ambiguous package specification `~a'~%"
 msgstr "plursenca pak-specifigo '~a'~%"
 
-#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
+#: gnu/packages.scm:377 guix/scripts/package.scm:307
 #, scheme-format
 msgid "choosing ~a from ~a~%"
 msgstr "ni elektas ~a el ~a~%"
 
-#: guix/scripts/build.scm:61
+#: gnu/packages.scm:383
 #, scheme-format
 msgid "~A: package not found for version ~a~%"
 msgstr "~A: pako ne trovita por versio ~a~%"
 
-#: guix/scripts/build.scm:63
+#: gnu/packages.scm:385
 #, scheme-format
 msgid "~A: unknown package~%"
 msgstr "~A: nekonata pako~%"
 
-#: guix/scripts/build.scm:86
+#: guix/scripts/build.scm:65
 #, scheme-format
 msgid "failed to create GC root `~a': ~a~%"
 msgstr "fiasko dum kreo de radiko GC '~a': ~a~%"
 
-#: guix/scripts/build.scm:123
+#: guix/scripts/build.scm:102
+msgid ""
+"\n"
+"  -L, --load-path=DIR    prepend DIR to the package module search path"
+msgstr ""
+"\n"
+"  -L, --load-path=UJO    antaŭmedi UJOn al la modula serĉvojo de la pako"
+
+#: guix/scripts/build.scm:104
 msgid ""
 "\n"
 "  -K, --keep-failed      keep build tree of failed builds"
@@ -55,7 +74,7 @@ msgstr ""
 "\n"
 "  -K, --keep-failed      teni konstru-arbon el fiaskintaj konstruoj"
 
-#: guix/scripts/build.scm:125
+#: guix/scripts/build.scm:106
 msgid ""
 "\n"
 "  -n, --dry-run          do not build the derivations"
@@ -63,7 +82,7 @@ msgstr ""
 "\n"
 "  -n, --dry-run          ne konstrui derivaĵojn"
 
-#: guix/scripts/build.scm:127
+#: guix/scripts/build.scm:108
 msgid ""
 "\n"
 "      --fallback         fall back to building when the substituter fails"
@@ -71,7 +90,7 @@ msgstr ""
 "\n"
 "      --fallback         retropaŝi al konstruado kiam la anstataŭiganto fiaskas"
 
-#: guix/scripts/build.scm:129
+#: guix/scripts/build.scm:110
 msgid ""
 "\n"
 "      --no-substitutes   build instead of resorting to pre-built substitutes"
@@ -79,7 +98,7 @@ msgstr ""
 "\n"
 "      --no-substitutes   konstrui anstataŭ provi jam-konstruitajn anstataŭigantojn"
 
-#: guix/scripts/build.scm:131
+#: guix/scripts/build.scm:112
 msgid ""
 "\n"
 "      --no-build-hook    do not attempt to offload builds via the build hook"
@@ -87,7 +106,7 @@ msgstr ""
 "\n"
 "      --no-build-hook    ne provi disŝarĝi konstruojn per la konstru-hoko"
 
-#: guix/scripts/build.scm:133
+#: guix/scripts/build.scm:114
 msgid ""
 "\n"
 "      --max-silent-time=SECONDS\n"
@@ -97,7 +116,7 @@ msgstr ""
 "      --max-silent-time=SEKUNDOJ\n"
 "                         marki la konstruon kiel fiaskintan post SEKUNDOJ da silento"
 
-#: guix/scripts/build.scm:136
+#: guix/scripts/build.scm:117
 msgid ""
 "\n"
 "      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
@@ -105,7 +124,7 @@ msgstr ""
 "\n"
 "      --timeout=SEKUNDOJ marki la konstruon kiel fiaskintan post SEKUNDOJ da aktivado"
 
-#: guix/scripts/build.scm:138
+#: guix/scripts/build.scm:119
 msgid ""
 "\n"
 "      --verbosity=LEVEL  use the given verbosity LEVEL"
@@ -113,7 +132,7 @@ msgstr ""
 "\n"
 "      --verbosity=NIVELO uzi la indikitan detaligan NIVELOn"
 
-#: guix/scripts/build.scm:140
+#: guix/scripts/build.scm:121
 msgid ""
 "\n"
 "  -c, --cores=N          allow the use of up to N CPU cores for the build"
@@ -121,12 +140,12 @@ msgstr ""
 "\n"
 "  -c, --cores=N          permesigi uzon de ĝis N CPU-nukleojn por la konstruo"
 
-#: guix/scripts/build.scm:206
+#: guix/scripts/build.scm:195
 #, scheme-format
 msgid "~a: not a number~%"
 msgstr "~a: ne estas numero~%"
 
-#: guix/scripts/build.scm:223
+#: guix/scripts/build.scm:213
 msgid ""
 "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
 "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
@@ -134,7 +153,7 @@ msgstr ""
 "Uzado: guix build [MODIFILO]... PAKO-AŬ-DERIVAĴO...\n"
 "Konstrui la indikitan PAKO-AŬ-DERIVAĴOn kaj montri iliajn eligajn vojojn.\n"
 
-#: guix/scripts/build.scm:225
+#: guix/scripts/build.scm:215
 msgid ""
 "\n"
 "  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
@@ -142,7 +161,7 @@ msgstr ""
 "\n"
 "  -e, --expression=ESPR  konstrui la pakon aŭ derivaĵon kiu rezultas de ESPR"
 
-#: guix/scripts/build.scm:227
+#: guix/scripts/build.scm:217
 msgid ""
 "\n"
 "  -S, --source           build the packages' source derivations"
@@ -150,7 +169,7 @@ msgstr ""
 "\n"
 "  -S, --source           konstrui la font-derivaĵojn de la pakoj"
 
-#: guix/scripts/build.scm:229
+#: guix/scripts/build.scm:219
 msgid ""
 "\n"
 "  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
@@ -158,7 +177,7 @@ msgstr ""
 "\n"
 "  -s, --system=SISTEMO   provi konstrui por SISTEMO--ekz., \"i686-linux\""
 
-#: guix/scripts/build.scm:231
+#: guix/scripts/build.scm:221
 msgid ""
 "\n"
 "      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
@@ -166,7 +185,7 @@ msgstr ""
 "\n"
 "      --target=TRIOPO    cruc-konstrui por TRIOPO--ekz., \"armel-linux-gnu\""
 
-#: guix/scripts/build.scm:233
+#: guix/scripts/build.scm:223
 msgid ""
 "\n"
 "      --with-source=SOURCE\n"
@@ -176,7 +195,15 @@ msgstr ""
 "      --with-source=FONTO\n"
 "                         uzi FONTOn dum konstruo de la koresponda pako"
 
-#: guix/scripts/build.scm:236
+#: guix/scripts/build.scm:226
+msgid ""
+"\n"
+"      --no-grafts        do not graft packages"
+msgstr ""
+"\n"
+"      --no-grafts        ne kunmetu pakojn"
+
+#: guix/scripts/build.scm:228
 msgid ""
 "\n"
 "  -d, --derivations      return the derivation paths of the given packages"
@@ -184,7 +211,7 @@ msgstr ""
 "\n"
 "  -d, --derivations      liveri la derivaĵajn vojojn de la indikitaj pakoj"
 
-#: guix/scripts/build.scm:238
+#: guix/scripts/build.scm:230
 msgid ""
 "\n"
 "  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
@@ -194,7 +221,7 @@ msgstr ""
 "  -r, --root=DOSIERO     igi DOSIEROn simbola ligo al la rezulto, kaj registri\n"
 "                         ĝin kiel radikon de rubaĵ-kolektanto"
 
-#: guix/scripts/build.scm:241
+#: guix/scripts/build.scm:233
 msgid ""
 "\n"
 "      --log-file         return the log file names for the given derivations"
@@ -202,10 +229,11 @@ msgstr ""
 "\n"
 "      --log-file         liveri la protokol-dosierajn nomojn por la indikitaj derivaĵoj"
 
-#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
-#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
+#: guix/scripts/build.scm:238 guix/scripts/download.scm:53
+#: guix/scripts/package.scm:451 guix/scripts/gc.scm:58
+#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81
+#: guix/scripts/substitute-binary.scm:560 guix/scripts/system.scm:371
+#: guix/scripts/lint.scm:262
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -213,10 +241,11 @@ msgstr ""
 "\n"
 "  -h, --help             montri ĉi tiun helpon kaj eliri"
 
-#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
-#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
+#: guix/scripts/build.scm:240 guix/scripts/download.scm:55
+#: guix/scripts/package.scm:453 guix/scripts/gc.scm:60
+#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83
+#: guix/scripts/substitute-binary.scm:562 guix/scripts/system.scm:373
+#: guix/scripts/lint.scm:266
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -224,19 +253,20 @@ msgstr ""
 "\n"
 "  -V, --version          montri informon pri versio kaj eliri"
 
-#: guix/scripts/build.scm:368
+#: guix/scripts/build.scm:366
 #, scheme-format
 msgid "sources do not match any package:~{ ~a~}~%"
 msgstr "fontoj ne kongruas al iu ajn pako:~{ ~a~}~%"
 
-#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
+#: guix/scripts/build.scm:395 guix/scripts/download.scm:96
+#: guix/scripts/package.scm:673 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:213 guix/scripts/system.scm:426
+#: guix/scripts/lint.scm:313
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: nerekonata modifilo~%"
 
-#: guix/scripts/build.scm:425
+#: guix/scripts/build.scm:423
 #, scheme-format
 msgid "no build log for '~a'~%"
 msgstr "neniu konstruita protokolo por '~a'~%"
@@ -280,73 +310,42 @@ msgstr "~a: analizo de URI fiaskis~%"
 msgid "~a: download failed~%"
 msgstr "~a: elŝuto fiaskis~%"
 
-#: guix/scripts/package.scm:88
+#: guix/scripts/package.scm:97
 #, scheme-format
 msgid "failed to build the empty profile~%"
 msgstr "fiasko dum konstruo de malplena profilo~%"
 
-#: guix/scripts/package.scm:97
+#: guix/scripts/package.scm:113
 #, scheme-format
 msgid "switching from generation ~a to ~a~%"
 msgstr "alterno el generacio ~a al ~a~%"
 
-#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
-#: guix/scripts/package.scm:985
-#, scheme-format
-msgid "profile '~a' does not exist~%"
-msgstr "profilo '~a' ne ekzistas~%"
-
-#: guix/scripts/package.scm:112
+#: guix/scripts/package.scm:132
 #, scheme-format
 msgid "nothing to do: already at the empty profile~%"
 msgstr "nenio por fari: jam estas ĉe la malplena profilo~%"
 
-#: guix/scripts/package.scm:197
-#, scheme-format
-msgid "The following package would be removed:~%~{~a~%~}~%"
-msgstr "La jena pako devos esti forigata:~%~{~a~%~}~%"
-
-#: guix/scripts/package.scm:202
-#, scheme-format
-msgid "The following package will be removed:~%~{~a~%~}~%"
-msgstr "La jena pako estos forigata:~%~{~a~%~}~%"
-
-#: guix/scripts/package.scm:214
-#, scheme-format
-msgid "The following package would be installed:~%~{~a~%~}~%"
-msgstr "La jena pako estus instalata:~% ~{~a~%~}~%"
-
-#: guix/scripts/package.scm:219
+#: guix/scripts/package.scm:144
 #, scheme-format
-msgid "The following package will be installed:~%~{~a~%~}~%"
-msgstr "La jena pako estos instalata:~% ~{~a~%~}~%"
+msgid "deleting ~a~%"
+msgstr "ni forigas ~a~%"
 
-#: guix/scripts/package.scm:339
+#: guix/scripts/package.scm:295
 #, scheme-format
 msgid "package `~a' lacks output `~a'~%"
 msgstr "pako '~a' malhavas eligon '~a'~%"
 
-#: guix/scripts/package.scm:356
+#: guix/scripts/package.scm:312
 #, scheme-format
 msgid "~a: package not found~%"
 msgstr "~a: pako ne trovita~%"
 
-#: guix/scripts/package.scm:391
-#, scheme-format
-msgid "looking for the latest release of GNU ~a..."
-msgstr "ni serĉas la lastan eldonon de GNU ~a..."
-
-#: guix/scripts/package.scm:395
-#, scheme-format
-msgid "~a: note: using ~a but ~a is available upstream~%"
-msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"
-
-#: guix/scripts/package.scm:467
+#: guix/scripts/package.scm:390
 #, scheme-format
 msgid "The following environment variable definitions may be needed:~%"
 msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%"
 
-#: guix/scripts/package.scm:483
+#: guix/scripts/package.scm:406
 msgid ""
 "Usage: guix package [OPTION]... PACKAGES...\n"
 "Install, remove, or upgrade PACKAGES in a single transaction.\n"
@@ -354,7 +353,7 @@ msgstr ""
 "Uzmaniero: guix package [MODIFILO]... PAKOJ...\n"
 "Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n"
 
-#: guix/scripts/package.scm:485
+#: guix/scripts/package.scm:408
 msgid ""
 "\n"
 "  -i, --install=PACKAGE  install PACKAGE"
@@ -362,7 +361,7 @@ msgstr ""
 "\n"
 "  -i, --install=PAKO     instali PAKOn"
 
-#: guix/scripts/package.scm:487
+#: guix/scripts/package.scm:410
 msgid ""
 "\n"
 "  -e, --install-from-expression=EXP\n"
@@ -372,7 +371,7 @@ msgstr ""
 "  -e, --install-from-expression=ESP\n"
 "                         instali la pakon ESP rezultas al"
 
-#: guix/scripts/package.scm:490
+#: guix/scripts/package.scm:413
 msgid ""
 "\n"
 "  -r, --remove=PACKAGE   remove PACKAGE"
@@ -380,7 +379,7 @@ msgstr ""
 "\n"
 "  -r, --remove=PAKO      forigi PAKOn"
 
-#: guix/scripts/package.scm:492
+#: guix/scripts/package.scm:415
 msgid ""
 "\n"
 "  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
@@ -388,7 +387,7 @@ msgstr ""
 "\n"
 "  -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al REGESP"
 
-#: guix/scripts/package.scm:494
+#: guix/scripts/package.scm:417
 msgid ""
 "\n"
 "      --roll-back        roll back to the previous generation"
@@ -396,7 +395,7 @@ msgstr ""
 "\n"
 "      --roll-back        retropaŝi al la antaŭa generacio"
 
-#: guix/scripts/package.scm:496
+#: guix/scripts/package.scm:419
 msgid ""
 "\n"
 "      --search-paths     display needed environment variable definitions"
@@ -404,7 +403,7 @@ msgstr ""
 "\n"
 "      --search-paths     montri necesajn medi-variablajn difinojn"
 
-#: guix/scripts/package.scm:498
+#: guix/scripts/package.scm:421
 msgid ""
 "\n"
 "  -l, --list-generations[=PATTERN]\n"
@@ -414,7 +413,7 @@ msgstr ""
 "  -I, --list-generations[=ŜABLONO]\n"
 "                         listigi generaciojn kongruantajn al ŜABLONO"
 
-#: guix/scripts/package.scm:501
+#: guix/scripts/package.scm:424
 msgid ""
 "\n"
 "  -d, --delete-generations[=PATTERN]\n"
@@ -424,7 +423,17 @@ msgstr ""
 "  -d, --delete-generations[=ŜABLONO]\n"
 "                         forigi generaciojn kongruantajn al ŜABLONO"
 
-#: guix/scripts/package.scm:504
+#: guix/scripts/package.scm:427
+msgid ""
+"\n"
+"  -S, --switch-generation=PATTERN\n"
+"                         switch to a generation matching PATTERN"
+msgstr ""
+"\n"
+"  -S, --switch-generations=ŜABLONO\n"
+"                         ŝalti al generacio kongruanta al ŜABLONO"
+
+#: guix/scripts/package.scm:430
 msgid ""
 "\n"
 "  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
@@ -432,7 +441,7 @@ msgstr ""
 "\n"
 "  -p, --profile=PROFILO  uzi PROFILOn anstataŭ la apriora profilo de la uzanto"
 
-#: guix/scripts/package.scm:507
+#: guix/scripts/package.scm:433
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the profile"
@@ -440,7 +449,7 @@ msgstr ""
 "\n"
 "      --bootstrap        uzi la praŝargilon Guile por konstrui la profilon"
 
-#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
+#: guix/scripts/package.scm:435 guix/scripts/pull.scm:74
 msgid ""
 "\n"
 "      --verbose          produce verbose output"
@@ -448,7 +457,7 @@ msgstr ""
 "\n"
 "      --verbose          produkti detalplenan eligon"
 
-#: guix/scripts/package.scm:512
+#: guix/scripts/package.scm:438
 msgid ""
 "\n"
 "  -s, --search=REGEXP    search in synopsis and description using REGEXP"
@@ -456,7 +465,7 @@ msgstr ""
 "\n"
 "  -s, --search=REGESP    serĉi en resumo kaj priskribo uzante REGESP"
 
-#: guix/scripts/package.scm:514
+#: guix/scripts/package.scm:440
 msgid ""
 "\n"
 "  -I, --list-installed[=REGEXP]\n"
@@ -466,7 +475,7 @@ msgstr ""
 "  -I, --list-installed[=REGESP]\n"
 "                         listigi instalitajn pakojn kongruantajn al REGESP"
 
-#: guix/scripts/package.scm:517
+#: guix/scripts/package.scm:443
 msgid ""
 "\n"
 "  -A, --list-available[=REGEXP]\n"
@@ -476,71 +485,72 @@ msgstr ""
 "  -A, --list-available[=REGESP]\n"
 "                         listigi disponeblajn pakojn kongruantajn al REGESP"
 
-#: guix/scripts/package.scm:520
-#, fuzzy
+#: guix/scripts/package.scm:446
 msgid ""
 "\n"
 "  --show=PACKAGE         show details about PACKAGE"
 msgstr ""
 "\n"
-"  -i, --install=PAKO     instali PAKOn"
+"  -show=PAKO             montri detalojn pri PAKO"
 
-#: guix/scripts/package.scm:767
+#: guix/scripts/package.scm:677
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: fremda argumento~%"
 
-#: guix/scripts/package.scm:782
+#: guix/scripts/package.scm:687
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"
 
-#: guix/scripts/package.scm:804
+#: guix/scripts/package.scm:709
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"
 
-#: guix/scripts/package.scm:808
+#: guix/scripts/package.scm:713
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"
 
-#: guix/scripts/package.scm:815
+#: guix/scripts/package.scm:720
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"
 
-#: guix/scripts/package.scm:818
+#: guix/scripts/package.scm:723
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%"
 
-#: guix/scripts/package.scm:843
+#: guix/scripts/package.scm:756
 #, scheme-format
-msgid "deleting ~a~%"
-msgstr "ni forigas ~a~%"
+msgid "cannot switch to generation '~a'~%"
+msgstr "ne eblas ŝalti al generacio '~a'~%"
 
-#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
+#: guix/scripts/package.scm:788 guix/scripts/package.scm:889
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "malvalida sintakso: ~a~%"
 
-#: guix/scripts/package.scm:925
+#: guix/scripts/package.scm:825
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "nenio por fari~%"
 
-#: guix/scripts/package.scm:948
+#: guix/scripts/package.scm:840
 #, scheme-format
 msgid "~a package in profile~%"
-msgstr "pako ~a en profilo~%"
+msgid_plural "~a packages in profile~%"
+msgstr[0] "pako ~a en profilo~%"
+msgstr[1] "pakoj ~a en profilo~%"
 
-#: guix/scripts/package.scm:963
+#: guix/scripts/package.scm:855
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "Generacio ~a\t~a"
 
-#: guix/scripts/package.scm:970
+#: guix/scripts/package.scm:862
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(nuna)~%"
@@ -643,7 +653,7 @@ msgstr ""
 msgid "unrecognized option: ~a~%"
 msgstr "nerekonata modifilo: ~a~%"
 
-#: guix/scripts/hash.scm:134 guix/ui.scm:233
+#: guix/scripts/hash.scm:134 guix/ui.scm:252
 #, scheme-format
 msgid "~a~%"
 msgstr "~a~%"
@@ -653,7 +663,7 @@ msgstr "~a~%"
 msgid "wrong number of arguments~%"
 msgstr "malĝusta nombro da argumentoj~%"
 
-#: guix/scripts/pull.scm:73
+#: guix/scripts/pull.scm:72
 msgid ""
 "Usage: guix pull [OPTION]...\n"
 "Download and deploy the latest version of Guix.\n"
@@ -661,7 +671,7 @@ msgstr ""
 "Uzmaniero: guix pull [MODIFILO]...\n"
 "Elŝuti kaj liveri la lastan version de Guix.\n"
 
-#: guix/scripts/pull.scm:77
+#: guix/scripts/pull.scm:76
 msgid ""
 "\n"
 "      --url=URL          download the Guix tarball from URL"
@@ -669,7 +679,7 @@ msgstr ""
 "\n"
 "      --url=URL          elŝuti la tar-dosiero de Guix el URL"
 
-#: guix/scripts/pull.scm:79
+#: guix/scripts/pull.scm:78
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the new Guix"
@@ -677,29 +687,42 @@ msgstr ""
 "\n"
 "      --bootstrap        uzi la 'bootstrap' Guile por konstrui novan Guix"
 
-#: guix/scripts/pull.scm:117
+#: guix/scripts/pull.scm:132
+msgid "tarball did not produce a single source directory"
+msgstr "tarball ne produktis ununuran fontan dosierujon"
+
+#: guix/scripts/pull.scm:150
 #, scheme-format
-msgid "~A: unexpected argument~%"
-msgstr "~A: neatendita argumento~%"
+msgid "unpacking '~a'...~%"
+msgstr "malpakado de '~a'...~%"
 
-#: guix/scripts/pull.scm:126
-msgid "failed to download up-to-date source, exiting\n"
-msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"
+#: guix/scripts/pull.scm:159
+msgid "failed to unpack source code"
+msgstr "ni malsukcesis malpaki font-kodon"
 
-#: guix/scripts/pull.scm:145
+#: guix/scripts/pull.scm:200
 #, scheme-format
 msgid "updated ~a successfully deployed under `~a'~%"
 msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%"
 
-#: guix/scripts/pull.scm:148
+#: guix/scripts/pull.scm:203
 #, scheme-format
 msgid "failed to update Guix, check the build log~%"
 msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"
 
-#: guix/scripts/pull.scm:150
+#: guix/scripts/pull.scm:205
 msgid "Guix already up to date\n"
 msgstr "Guix jam estas ĝisdata\n"
 
+#: guix/scripts/pull.scm:215
+#, scheme-format
+msgid "~A: unexpected argument~%"
+msgstr "~A: neatendita argumento~%"
+
+#: guix/scripts/pull.scm:224
+msgid "failed to download up-to-date source, exiting\n"
+msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"
+
 #: guix/scripts/substitute-binary.scm:80
 #, scheme-format
 msgid "authentication and authorization of substitutes disabled!~%"
@@ -775,12 +798,12 @@ msgstr "Ni elŝutas, bonvolu atendi...~%"
 msgid "(Please consider upgrading Guile to get proper progress report.)~%"
 msgstr "(Bonvolu konsideri pri ĝisdatigo de Guile por havigi ĝustan progres-raporton.)~%"
 
-#: guix/scripts/substitute-binary.scm:545
+#: guix/scripts/substitute-binary.scm:541
 #, scheme-format
 msgid "host name lookup error: ~a~%"
 msgstr "eraro en serĉado de gastigant-nomo: ~a~%"
 
-#: guix/scripts/substitute-binary.scm:554
+#: guix/scripts/substitute-binary.scm:550
 msgid ""
 "Usage: guix substitute-binary [OPTION]...\n"
 "Internal tool to substitute a pre-built binary to a local build.\n"
@@ -788,7 +811,7 @@ msgstr ""
 "Uzmaniero: guix substitute-binary [MODIFILO]...\n"
 "Interna ilo por anstataŭigi antaŭ-konstruitan duumaĵon al loka kompilaĵo.\n"
 
-#: guix/scripts/substitute-binary.scm:556
+#: guix/scripts/substitute-binary.scm:552
 msgid ""
 "\n"
 "      --query            report on the availability of substitutes for the\n"
@@ -798,7 +821,7 @@ msgstr ""
 "      --query            raporti pri la disponebleco de anstataŭigoj por la\n"
 "                         konservaj dosier-nomoj indikitaj per la ĉefenigujo"
 
-#: guix/scripts/substitute-binary.scm:559
+#: guix/scripts/substitute-binary.scm:555
 msgid ""
 "\n"
 "      --substitute STORE-FILE DESTINATION\n"
@@ -810,16 +833,21 @@ msgstr ""
 "                         elŝuti KONSERV-DOSIEROn kaj konservi ĝin kiel Nar en la\n"
 "                         dosiero CELO"
 
-#: guix/scripts/substitute-binary.scm:604
+#: guix/scripts/substitute-binary.scm:600
 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
 msgstr "ACL por importo de arĥivoj ŝajnas esti ne-ekigita, anstataŭoj eble ne disponeblos\n"
 
-#: guix/scripts/substitute-binary.scm:625
+#: guix/scripts/substitute-binary.scm:634
+#, scheme-format
+msgid "these substitute URLs will not be used:~{ ~a~}~%"
+msgstr "tiuj ĉi anstataŭigaj URL-oj ne estos uzataj:~{ ~a~}~%"
+
+#: guix/scripts/substitute-binary.scm:660
 #, scheme-format
 msgid "failed to look up host '~a' (~a), substituter disabled~%"
 msgstr "ni malsukcesis serĉi gastiganton '~a' (~a), anstataŭiganto estas malebligata~%"
 
-#: guix/scripts/substitute-binary.scm:732
+#: guix/scripts/substitute-binary.scm:767
 #, scheme-format
 msgid "~a: unrecognized options~%"
 msgstr "~a: nerekonata modifiloj~%"
@@ -863,7 +891,7 @@ msgstr "malĝustaj argumentoj"
 msgid "failed to open operating system file '~a': ~a~%"
 msgstr "fiasko dum malfermo de la operaci-sistema dosiero '~a': ~a~%"
 
-#: guix/scripts/system.scm:78 guix/ui.scm:238
+#: guix/scripts/system.scm:78 guix/ui.scm:258
 #, scheme-format
 msgid "~a: ~a~%"
 msgstr "~a: ~a~%"
@@ -883,7 +911,7 @@ msgstr "fiasko dum registro de '~a' sub '~a'~%"
 msgid "initializing the current root file system~%"
 msgstr "ekigado de la nuna radika dosiersistemo~%"
 
-#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:325
 #, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"
@@ -893,17 +921,17 @@ msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"
 msgid "activating system...~%"
 msgstr "ni aktivas la sistemon...~%"
 
-#: guix/scripts/system.scm:236
+#: guix/scripts/system.scm:239
 #, scheme-format
 msgid "unrecognized boot parameters for '~a'~%"
 msgstr "nerekonataj ekŝargaj parametroj por '~a'~%"
 
-#: guix/scripts/system.scm:323
+#: guix/scripts/system.scm:330
 #, scheme-format
 msgid "initializing operating system under '~a'...~%"
 msgstr "ni ekigas la operaci-sistemon sub '~a'...~%"
 
-#: guix/scripts/system.scm:339
+#: guix/scripts/system.scm:346
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
@@ -911,35 +939,35 @@ msgstr ""
 "Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n"
 "Konstrui la operaci-sistemon deklarita en DOSIERO akorde al AGO.\n"
 
-#: guix/scripts/system.scm:342
+#: guix/scripts/system.scm:349
 msgid "The valid values for ACTION are:\n"
 msgstr "La validaj valoroj por AGO estas:\n"
 
-#: guix/scripts/system.scm:343
+#: guix/scripts/system.scm:350
 msgid "  - 'reconfigure', switch to a new operating system configuration\n"
 msgstr "  - 'reconfigure', alterni al nova operaci-sistema agordaro\n"
 
-#: guix/scripts/system.scm:345
+#: guix/scripts/system.scm:352
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr "  - 'build', konstrui la operaci-sistemon sen instali ion ajn\n"
 
-#: guix/scripts/system.scm:347
+#: guix/scripts/system.scm:354
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr "  - 'vm', konstrui virtual-maŝinan bildon kiu kundividas la gastigantan memoron\n"
 
-#: guix/scripts/system.scm:349
+#: guix/scripts/system.scm:356
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr "  - 'vm-image', konstrui memstaran virtual-maŝinan bildon\n"
 
-#: guix/scripts/system.scm:351
+#: guix/scripts/system.scm:358
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr "  - 'disk-image', konstrui disk-bildon, taŭga por USB-memoro\n"
 
-#: guix/scripts/system.scm:353
+#: guix/scripts/system.scm:360
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr "  - 'init', ekigi radikan dosiersistemon por lanĉi GNU-on.\n"
 
-#: guix/scripts/system.scm:357
+#: guix/scripts/system.scm:364
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
@@ -947,7 +975,7 @@ msgstr ""
 "\n"
 "      --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO"
 
-#: guix/scripts/system.scm:359
+#: guix/scripts/system.scm:366
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
@@ -955,21 +983,86 @@ msgstr ""
 "\n"
 "      --no-grub          por 'init', ne instali GRUB"
 
-#: guix/scripts/system.scm:422
+#: guix/scripts/system.scm:368
+msgid ""
+"\n"
+"      --full-boot        for 'vm', make a full boot sequence"
+msgstr ""
+"\n"
+"      --full-boot        por 'vm', fari kompletan ekŝargan sekvon"
+
+#: guix/scripts/system.scm:434
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: nekonata pako~%"
 
-#: guix/scripts/system.scm:439
+#: guix/scripts/system.scm:451
 #, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "malĝusta nombro da argumentoj por la ago '~a'~%"
 
-#: guix/scripts/system.scm:459
+#: guix/scripts/system.scm:471
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "neniu agorda dosiero estis indikata~%"
 
+#: guix/scripts/lint.scm:51
+#, scheme-format
+msgid "~a: ~a: ~a~%"
+msgstr "~a: ~a: ~a~%"
+
+#: guix/scripts/lint.scm:72
+#, scheme-format
+msgid "Available checkers:~%"
+msgstr "Disponeblaj kontroliloj:~%"
+
+#: guix/scripts/lint.scm:226
+msgid "Validate package descriptions"
+msgstr "Validigi pak-priskribojn"
+
+#: guix/scripts/lint.scm:230
+msgid "Identify inputs that should be native inputs"
+msgstr "Identigi enigojn kiuj devus esti originalaj enigoj"
+
+#: guix/scripts/lint.scm:234
+msgid "Validate filenames of patches"
+msgstr "Validigi dosiernomojn de flikaĵoj"
+
+#: guix/scripts/lint.scm:238
+msgid "Validate package synopsis"
+msgstr "Validigi pak-resumojn"
+
+#: guix/scripts/lint.scm:257
+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 ""
+"Uzmaniero: guix lint [MODIFILO]... [PAKO]...\n"
+"Lanĉi aron da kontroliloj por la indikita pako; se neniu estas indikita, lanĉi la konstrolilojn por ĉiuj pakoj.\n"
+
+#: guix/scripts/lint.scm:259
+msgid ""
+"\n"
+"  -c, --checkers=CHECKER1,CHECKER2...\n"
+"                         only run the specificed checkers"
+msgstr ""
+"\n"
+"  -c, --checkers=KONTROL1,KONTROL2...\n"
+"                         nur lanĉi la indikitajn kontrolilojn"
+
+#: guix/scripts/lint.scm:264
+msgid ""
+"\n"
+"  -l, --list-checkers    display the list of available lint checkers"
+msgstr ""
+"\n"
+"  -l, --list-checkers    montri la liston de disponeblaj kontroliloj"
+
+#: guix/scripts/lint.scm:283
+#, scheme-format
+msgid "~a: invalid checker"
+msgstr "~a: malvalida kontrolilo"
+
 #: guix/gnu-maintenance.scm:373
 #, scheme-format
 msgid "signature verification failed for `~a'~%"
@@ -990,12 +1083,12 @@ msgstr "~a: ne eblis trovi fontan dosieron"
 msgid "~a: ~a: no `version' field in source; skipping~%"
 msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%"
 
-#: guix/ui.scm:131
+#: guix/ui.scm:135
 #, scheme-format
 msgid "failed to install locale: ~a~%"
 msgstr "fiasko dum instalo de lokaĵaro: ~a~%"
 
-#: guix/ui.scm:150
+#: guix/ui.scm:154
 msgid ""
 "Copyright (C) 2014 the Guix authors\n"
 "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -1007,7 +1100,7 @@ msgstr ""
 "Tio ĉi estas libera programaro: vi estas libera por modifi kaj redisdoni ĝin.\n"
 "Estas NENIU GARANTIO, plejamplekse permesate de leĝoj.\n"
 
-#: guix/ui.scm:158
+#: guix/ui.scm:162
 #, scheme-format
 msgid ""
 "\n"
@@ -1016,7 +1109,7 @@ msgstr ""
 "\n"
 "Raportu program-misojn al: ~a."
 
-#: guix/ui.scm:160
+#: guix/ui.scm:164
 #, scheme-format
 msgid ""
 "\n"
@@ -1025,7 +1118,7 @@ msgstr ""
 "\n"
 "hejm-paĝo de ~a: <~a>"
 
-#: guix/ui.scm:162
+#: guix/ui.scm:166
 msgid ""
 "\n"
 "General help using GNU software: <http://www.gnu.org/gethelp/>"
@@ -1033,100 +1126,160 @@ msgstr ""
 "\n"
 "Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>"
 
-#: guix/ui.scm:169
+#: guix/ui.scm:173
 #, scheme-format
 msgid "~a: invalid number~%"
 msgstr "~a: malvalida numero~%"
 
-#: guix/ui.scm:186
+#: guix/ui.scm:190
 #, scheme-format
 msgid "invalid number: ~a~%"
 msgstr "malvalida numero: ~a~%"
 
-#: guix/ui.scm:201
+#: guix/ui.scm:213
 #, scheme-format
 msgid "unknown unit: ~a~%"
 msgstr "nekonata unuo: ~a~%"
 
-#: guix/ui.scm:212
+#: guix/ui.scm:224
 #, scheme-format
 msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
 msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%"
 
-#: guix/ui.scm:219
+#: guix/ui.scm:231
 #, scheme-format
 msgid "~a: ~a: build system `~a' does not support cross builds~%"
 msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%"
 
-#: guix/ui.scm:224
+#: guix/ui.scm:236
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr "profilo '~a' ne ekzistas~%"
+
+#: guix/ui.scm:239
+#, scheme-format
+msgid "generation ~a of profile '~a' does not exist~%"
+msgstr "generacio ~a de la profilo '~a' ne ekzistas~%"
+
+#: guix/ui.scm:243
 #, scheme-format
 msgid "failed to connect to `~a': ~a~%"
 msgstr "fiasko dum konekto al '~a': ~a~%"
 
-#: guix/ui.scm:229
+#: guix/ui.scm:248
 #, scheme-format
 msgid "build failed: ~a~%"
 msgstr "konstruo fiakis: ~a~%"
 
-#: guix/ui.scm:257
+#: guix/ui.scm:277
 #, scheme-format
 msgid "failed to read expression ~s: ~s~%"
 msgstr "fiasko dum lego de esprimo ~s: ~s~%"
 
-#: guix/ui.scm:263
+#: guix/ui.scm:283
 #, scheme-format
 msgid "failed to evaluate expression `~a': ~s~%"
 msgstr "fiasko dum analizo de esprimo '~a': ~a~%"
 
-#: guix/ui.scm:272
+#: guix/ui.scm:292
 #, scheme-format
 msgid "expression ~s does not evaluate to a package~%"
 msgstr "la esprimo ~s ne rezultas pakon~%"
 
-#: guix/ui.scm:319
+#: guix/ui.scm:339
 #, scheme-format
 msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
-msgstr "~:[La jena derivo povus esti konstruata:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[La jena derivo estus konstruata:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[La jenaj derivoj estus konstruataj:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:324
+#: guix/ui.scm:344
 #, scheme-format
 msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
-msgstr "~:[La jena derivo povus esti elŝutata:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[La jena derivo estus elŝutata:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[La jenaj derivoj estus elŝutataj:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:330
+#: guix/ui.scm:350
 #, scheme-format
 msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
-msgstr "~:[La jena derivo estos esti konstruata:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[La jena derivo estos konstruata:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[La jenaj derivoj estos konstruataj:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:335
+#: guix/ui.scm:355
 #, scheme-format
 msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
-msgstr "~:[La jena derivo estos esti elŝutata:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[La jena derivo estos elŝutata:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[La jenaj derivoj estos elŝutataj:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:407
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estus forigata:~%~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estus forigataj:~%~{~a~%~}~%"
+
+#: guix/ui.scm:412
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estos forigata:~%~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estos forigataj:~%~{~a~%~}~%"
+
+#: guix/ui.scm:425
+#, scheme-format
+msgid "The following package would be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estus ĝisdatigata:~%~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estus ĝisdatigataj:~%~{~a~%~}~%"
+
+#: guix/ui.scm:430
+#, scheme-format
+msgid "The following package will be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estos ĝisdatigata:~%~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estos ĝisdatigataj:~%~{~a~%~}~%"
+
+#: guix/ui.scm:441
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estus instalata:~% ~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estus instalataj:~% ~{~a~%~}~%"
+
+#: guix/ui.scm:446
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
+msgstr[0] "La jena pako estos instalata:~% ~{~a~%~}~%"
+msgstr[1] "La jenaj pakoj estos instalataj:~% ~{~a~%~}~%"
 
-#: guix/ui.scm:352
+#: guix/ui.scm:463
 msgid "<unknown location>"
 msgstr "<nekonata loko>"
 
-#: guix/ui.scm:380
+#: guix/ui.scm:489
 #, scheme-format
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"
 
-#: guix/ui.scm:475 guix/ui.scm:489
+#: guix/ui.scm:589 guix/ui.scm:603
 msgid "unknown"
 msgstr "nekonata"
 
-#: guix/ui.scm:598
+#: guix/ui.scm:712
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "malvalida argumento: ~a~%"
 
-#: guix/ui.scm:603
+#: guix/ui.scm:717
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Provu 'guix --help' por pli da informo.~%"
 
-#: guix/ui.scm:633
+#: guix/ui.scm:747
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1134,21 +1287,21 @@ msgstr ""
 "Uzmaniero: guix KOMANDO ARGj...\n"
 "Lanĉas KOMANDOn kun ARGj.\n"
 
-#: guix/ui.scm:636
+#: guix/ui.scm:750
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"
 
-#: guix/ui.scm:656
+#: guix/ui.scm:770
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: komando ne trovita~%"
 
-#: guix/ui.scm:674
+#: guix/ui.scm:788
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: mankas komanda nomo~%"
 
-#: guix/ui.scm:682
+#: guix/ui.scm:796
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: nerekonata modifilo: '~a'~%"
@@ -1172,84 +1325,75 @@ msgstr "ni sekvas la redirektigon al '~a'...~%"
 msgid "download failed"
 msgstr "elŝuto fiaskis"
 
-#: guix/nar.scm:134
-msgid "unexpected executable file marker"
-msgstr "neatendita rul-dosiera markilo"
-
-#: guix/nar.scm:141
-msgid "unsupported nar file type"
-msgstr "nesubtenata dosier-tipo nar"
-
-#: guix/nar.scm:209
-msgid "unsupported file type"
-msgstr "nesubtenata dosier-tipo"
-
-#: guix/nar.scm:219
-msgid "invalid nar signature"
-msgstr "malvalida subskribo nar"
-
-#: guix/nar.scm:230
-msgid "invalid nar end-of-file marker"
-msgstr "malvalida dosierfina markilo nar"
-
-#: guix/nar.scm:244
-msgid "invalid symlink tokens"
-msgstr "malvalidaj simbol-ligaj ĵetonoj"
-
-#: guix/nar.scm:263
-msgid "unexpected directory entry termination"
-msgstr "neatendita fino de dosieruja enigo"
-
-#: guix/nar.scm:272
-msgid "unexpected directory inter-entry marker"
-msgstr "neatendita dosieruja inter-eniga markilo"
-
-#: guix/nar.scm:277
-msgid "unsupported nar entry type"
-msgstr "nesubtenata enig-tipo nar"
-
-#: guix/nar.scm:376
+#: guix/nar.scm:155
 msgid "signature is not a valid s-expression"
 msgstr "subskribo ne estas valida s-esprimo"
 
-#: guix/nar.scm:385
+#: guix/nar.scm:164
 msgid "invalid signature"
 msgstr "nevalida subskribo"
 
-#: guix/nar.scm:389
+#: guix/nar.scm:168
 msgid "invalid hash"
 msgstr "nevalida haketo"
 
-#: guix/nar.scm:397
+#: guix/nar.scm:176
 msgid "unauthorized public key"
 msgstr "nerajtigita publika ŝlosilo"
 
-#: guix/nar.scm:402
+#: guix/nar.scm:181
 msgid "corrupt signature data"
 msgstr "difektita subskriba datumaro"
 
-#: guix/nar.scm:422
+#: guix/nar.scm:201
 msgid "corrupt file set archive"
 msgstr "difektita arĥivo de dosier-grupo"
 
-#: guix/nar.scm:432
+#: guix/nar.scm:211
 #, scheme-format
 msgid "importing file or directory '~a'...~%"
 msgstr "ni importas dosieron aŭ dosierujon '~a'...~%"
 
-#: guix/nar.scm:441
+#: guix/nar.scm:220
 #, scheme-format
 msgid "found valid signature for '~a'~%"
 msgstr "ni trovis validan subskribon por '~a'~%"
 
-#: guix/nar.scm:448
+#: guix/nar.scm:227
 msgid "imported file lacks a signature"
 msgstr "importita dosiero malhavas subskribon"
 
-#: guix/nar.scm:487
+#: guix/nar.scm:266
 msgid "invalid inter-file archive mark"
 msgstr "malvalida inter-dosiera arĥiva marko"
 
+#~ msgid "unexpected executable file marker"
+#~ msgstr "neatendita rul-dosiera markilo"
+
+#~ msgid "unsupported nar file type"
+#~ msgstr "nesubtenata dosier-tipo nar"
+
+#~ msgid "unsupported file type"
+#~ msgstr "nesubtenata dosier-tipo"
+
+#~ msgid "invalid nar signature"
+#~ msgstr "malvalida subskribo nar"
+
+#~ msgid "invalid nar end-of-file marker"
+#~ msgstr "malvalida dosierfina markilo nar"
+
+#~ msgid "invalid symlink tokens"
+#~ msgstr "malvalidaj simbol-ligaj ĵetonoj"
+
+#~ msgid "unexpected directory entry termination"
+#~ msgstr "neatendita fino de dosieruja enigo"
+
+#~ msgid "unexpected directory inter-entry marker"
+#~ msgstr "neatendita dosieruja inter-eniga markilo"
+
+#~ msgid "unsupported nar entry type"
+#~ msgstr "nesubtenata enig-tipo nar"
+
 #~ msgid "Hello, GNU world: An example GNU package"
 #~ msgstr "Saluton, mondo GNU: ekzemplo de pako GNU"
 
diff --git a/po/guix/hu.po b/po/guix/hu.po
index 33b42f71dc..7d4322cdb6 100644
--- a/po/guix/hu.po
+++ b/po/guix/hu.po
@@ -5,10 +5,10 @@
 # Balázs Úr <urbalazs@gmail.com>, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: guix 0.7-pre1\n"
+"Project-Id-Version: guix 0.8\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-07-25 00:55+0200\n"
-"PO-Revision-Date: 2014-07-18 17:37+0200\n"
+"POT-Creation-Date: 2014-11-09 22:32+0100\n"
+"PO-Revision-Date: 2014-12-03 21:49+0100\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
 "Language: hu\n"
@@ -18,37 +18,55 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Lokalize 1.5\n"
 
-#: gnu/packages.scm:102
+#: gnu/packages.scm:120
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "nem sikerült elérni: „~a”: ~a~%"
 
-#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
+#: gnu/packages.scm:350
+#, scheme-format
+msgid "looking for the latest release of GNU ~a..."
+msgstr "a GNU ~a legutóbbi kiadásának keresése…"
+
+#: gnu/packages.scm:354
+#, scheme-format
+msgid "~a: note: using ~a but ~a is available upstream~%"
+msgstr "~a: megjegyzés: ~a használata, de ~a elérhető a tárolóban~%"
+
+#: gnu/packages.scm:376 guix/scripts/package.scm:305
 #, scheme-format
 msgid "ambiguous package specification `~a'~%"
 msgstr "nem egyértelmű csomag specifikáció: „~a”~%"
 
-#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
+#: gnu/packages.scm:377 guix/scripts/package.scm:307
 #, scheme-format
 msgid "choosing ~a from ~a~%"
 msgstr "~a választása innen: ~a~%"
 
-#: guix/scripts/build.scm:61
+#: gnu/packages.scm:383
 #, scheme-format
 msgid "~A: package not found for version ~a~%"
 msgstr "~A: nem található csomag ehhez a verzióhoz: ~a~%"
 
-#: guix/scripts/build.scm:63
+#: gnu/packages.scm:385
 #, scheme-format
 msgid "~A: unknown package~%"
 msgstr "~A: ismeretlen csomag~%"
 
-#: guix/scripts/build.scm:86
+#: guix/scripts/build.scm:65
 #, scheme-format
 msgid "failed to create GC root `~a': ~a~%"
 msgstr "nem sikerült a GC gyökér létrehozása: „~a”: ~a~%"
 
-#: guix/scripts/build.scm:123
+#: guix/scripts/build.scm:102
+msgid ""
+"\n"
+"  -L, --load-path=DIR    prepend DIR to the package module search path"
+msgstr ""
+"\n"
+"  -L, --load-path=KVT    KVT beszúrása a csomag modul keresési útvonalhoz"
+
+#: guix/scripts/build.scm:104
 msgid ""
 "\n"
 "  -K, --keep-failed      keep build tree of failed builds"
@@ -57,7 +75,7 @@ msgstr ""
 "  -K, --keep-failed      sikertelen összeállítások összeállítási fájának\n"
 "                         megtartása"
 
-#: guix/scripts/build.scm:125
+#: guix/scripts/build.scm:106
 msgid ""
 "\n"
 "  -n, --dry-run          do not build the derivations"
@@ -65,7 +83,7 @@ msgstr ""
 "\n"
 "  -n, --dry-run          ne állítsa össze a származékokat"
 
-#: guix/scripts/build.scm:127
+#: guix/scripts/build.scm:108
 msgid ""
 "\n"
 "      --fallback         fall back to building when the substituter fails"
@@ -74,7 +92,7 @@ msgstr ""
 "      --fallback         térjen vissza az összeállításra, ha a helyettesítő\n"
 "                         sikertelen"
 
-#: guix/scripts/build.scm:129
+#: guix/scripts/build.scm:110
 msgid ""
 "\n"
 "      --no-substitutes   build instead of resorting to pre-built substitutes"
@@ -83,7 +101,7 @@ msgstr ""
 "      --no-substitutes   összeállítás az előre összeállított helyettesítők\n"
 "                         felhasználása helyett"
 
-#: guix/scripts/build.scm:131
+#: guix/scripts/build.scm:112
 msgid ""
 "\n"
 "      --no-build-hook    do not attempt to offload builds via the build hook"
@@ -92,7 +110,7 @@ msgstr ""
 "      --no-build-hook    ne próbáljon meg összeállításokat tehermentesíteni\n"
 "                         az összeállítási hurkon keresztül"
 
-#: guix/scripts/build.scm:133
+#: guix/scripts/build.scm:114
 msgid ""
 "\n"
 "      --max-silent-time=SECONDS\n"
@@ -103,7 +121,7 @@ msgstr ""
 "                         az összeállítás sikertelennek jelölése MÁSODPERC\n"
 "                         hallgatás után"
 
-#: guix/scripts/build.scm:136
+#: guix/scripts/build.scm:117
 msgid ""
 "\n"
 "      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
@@ -112,7 +130,7 @@ msgstr ""
 "      --timeout=MÁSODPERC  az összeállítás sikertelennek jelölése MÁSODPERC\n"
 "                         aktivitás után"
 
-#: guix/scripts/build.scm:138
+#: guix/scripts/build.scm:119
 msgid ""
 "\n"
 "      --verbosity=LEVEL  use the given verbosity LEVEL"
@@ -120,7 +138,7 @@ msgstr ""
 "\n"
 "      --verbosity=SZINT  a megadott bőbeszédűségi SZINT használata"
 
-#: guix/scripts/build.scm:140
+#: guix/scripts/build.scm:121
 msgid ""
 "\n"
 "  -c, --cores=N          allow the use of up to N CPU cores for the build"
@@ -129,12 +147,12 @@ msgstr ""
 "  -c, --cores=N          legfeljebb N CPU-mag használatának engedélyezése\n"
 "                         az összeállításhoz"
 
-#: guix/scripts/build.scm:206
+#: guix/scripts/build.scm:195
 #, scheme-format
 msgid "~a: not a number~%"
 msgstr "~a: nem szám~%"
 
-#: guix/scripts/build.scm:223
+#: guix/scripts/build.scm:213
 msgid ""
 "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
 "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
@@ -143,7 +161,7 @@ msgstr ""
 "A megadott CSOMAG-VAGY-SZÁRMAZTATOTT összeállítása, és a kimeneti elérési\n"
 "útjaik visszaadása.\n"
 
-#: guix/scripts/build.scm:225
+#: guix/scripts/build.scm:215
 msgid ""
 "\n"
 "  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
@@ -152,7 +170,7 @@ msgstr ""
 "  -e, --expression=KIF   a csomag vagy a kiértékelt származtatott KIF\n"
 "                         összeállítása"
 
-#: guix/scripts/build.scm:227
+#: guix/scripts/build.scm:217
 msgid ""
 "\n"
 "  -S, --source           build the packages' source derivations"
@@ -160,7 +178,7 @@ msgstr ""
 "\n"
 "  -S, --source           a csomagok forrásszármazékainak összeállítása"
 
-#: guix/scripts/build.scm:229
+#: guix/scripts/build.scm:219
 msgid ""
 "\n"
 "  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
@@ -169,7 +187,7 @@ msgstr ""
 "  -s, --system=RENDSZER  kísérlet a RENDSZERRE történő összeállításra,\n"
 "                         például „i686-linux”"
 
-#: guix/scripts/build.scm:231
+#: guix/scripts/build.scm:221
 msgid ""
 "\n"
 "      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
@@ -178,7 +196,7 @@ msgstr ""
 "      --target=HÁRMAS    kereszt összeállítás a HÁRMASRA, például\n"
 "                         „armel-linux-gnu”"
 
-#: guix/scripts/build.scm:233
+#: guix/scripts/build.scm:223
 msgid ""
 "\n"
 "      --with-source=SOURCE\n"
@@ -188,7 +206,15 @@ msgstr ""
 "      --with-source=FORRÁS\n"
 "                         FORRÁS használata a megfelelő csomag összeállításakor"
 
-#: guix/scripts/build.scm:236
+#: guix/scripts/build.scm:226
+msgid ""
+"\n"
+"      --no-grafts        do not graft packages"
+msgstr ""
+"\n"
+"      --no-grafts        ne oltsa be a csomagokat"
+
+#: guix/scripts/build.scm:228
 msgid ""
 "\n"
 "  -d, --derivations      return the derivation paths of the given packages"
@@ -196,7 +222,7 @@ msgstr ""
 "\n"
 "  -d, --derivations      a megadott csomagok származék-útvonalának visszaadása"
 
-#: guix/scripts/build.scm:238
+#: guix/scripts/build.scm:230
 msgid ""
 "\n"
 "  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
@@ -206,7 +232,7 @@ msgstr ""
 "  -r, --root=FÁJL        a FÁJL az eredmény egy szimbolikus linkje legyen,\n"
 "                         és regisztrálja gyökér szemétgyűjtőként"
 
-#: guix/scripts/build.scm:241
+#: guix/scripts/build.scm:233
 msgid ""
 "\n"
 "      --log-file         return the log file names for the given derivations"
@@ -214,10 +240,11 @@ msgstr ""
 "\n"
 "      --log-file         a megadott származékok naplófájl-neveinek visszaadása"
 
-#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
-#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
+#: guix/scripts/build.scm:238 guix/scripts/download.scm:53
+#: guix/scripts/package.scm:451 guix/scripts/gc.scm:58
+#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81
+#: guix/scripts/substitute-binary.scm:560 guix/scripts/system.scm:371
+#: guix/scripts/lint.scm:262
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -225,10 +252,11 @@ msgstr ""
 "\n"
 "  -h, --help             ezen súgó megjelenítése és kilépés"
 
-#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
-#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
+#: guix/scripts/build.scm:240 guix/scripts/download.scm:55
+#: guix/scripts/package.scm:453 guix/scripts/gc.scm:60
+#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83
+#: guix/scripts/substitute-binary.scm:562 guix/scripts/system.scm:373
+#: guix/scripts/lint.scm:266
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -236,19 +264,20 @@ msgstr ""
 "\n"
 "  -V, --version          verzióinformációk megjelenítése és kilépés"
 
-#: guix/scripts/build.scm:368
+#: guix/scripts/build.scm:366
 #, scheme-format
 msgid "sources do not match any package:~{ ~a~}~%"
 msgstr "a források nem illeszkednek semmilyen csomagra:~{ ~a~}~%"
 
-#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
+#: guix/scripts/build.scm:395 guix/scripts/download.scm:96
+#: guix/scripts/package.scm:673 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:213 guix/scripts/system.scm:426
+#: guix/scripts/lint.scm:313
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: ismeretlen kapcsoló~%"
 
-#: guix/scripts/build.scm:425
+#: guix/scripts/build.scm:423
 #, scheme-format
 msgid "no build log for '~a'~%"
 msgstr "nincs összeállítási napló ehhez: „~a”~%"
@@ -292,73 +321,42 @@ msgstr "~a: az URI feldolgozása sikertelen~%"
 msgid "~a: download failed~%"
 msgstr "~a: letöltés sikertelen~%"
 
-#: guix/scripts/package.scm:88
+#: guix/scripts/package.scm:97
 #, scheme-format
 msgid "failed to build the empty profile~%"
 msgstr "az üres profil összeállítása sikertelen~%"
 
-#: guix/scripts/package.scm:97
+#: guix/scripts/package.scm:113
 #, scheme-format
 msgid "switching from generation ~a to ~a~%"
 msgstr "átváltás a(z) ~a generációról erre: ~a~%"
 
-#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
-#: guix/scripts/package.scm:985
-#, scheme-format
-msgid "profile '~a' does not exist~%"
-msgstr "a(z) „~a” profil nem létezik~%"
-
-#: guix/scripts/package.scm:112
+#: guix/scripts/package.scm:132
 #, scheme-format
 msgid "nothing to do: already at the empty profile~%"
 msgstr "nincs mit tenni: már az üres profilnál van~%"
 
-#: guix/scripts/package.scm:197
-#, scheme-format
-msgid "The following package would be removed:~%~{~a~%~}~%"
-msgstr "A következő csomagot el kellene távolítani:~%~{~a~%~}~%"
-
-#: guix/scripts/package.scm:202
-#, scheme-format
-msgid "The following package will be removed:~%~{~a~%~}~%"
-msgstr "A következő csomag el lesz távolítva:~%~{~a~%~}~%"
-
-#: guix/scripts/package.scm:214
-#, scheme-format
-msgid "The following package would be installed:~%~{~a~%~}~%"
-msgstr "A következő csomagot telepíteni kellene:~%~{~a~%~}~%"
-
-#: guix/scripts/package.scm:219
+#: guix/scripts/package.scm:144
 #, scheme-format
-msgid "The following package will be installed:~%~{~a~%~}~%"
-msgstr "A következő csomag telepítve lesz:~%~{~a~%~}~%"
+msgid "deleting ~a~%"
+msgstr "~a törlése~%"
 
-#: guix/scripts/package.scm:339
+#: guix/scripts/package.scm:295
 #, scheme-format
 msgid "package `~a' lacks output `~a'~%"
 msgstr "a(z) „~a” csomag hiányolja a kimenetet: „~a”~%"
 
-#: guix/scripts/package.scm:356
+#: guix/scripts/package.scm:312
 #, scheme-format
 msgid "~a: package not found~%"
 msgstr "~a: a csomag nem található~%"
 
-#: guix/scripts/package.scm:391
-#, scheme-format
-msgid "looking for the latest release of GNU ~a..."
-msgstr "a GNU ~a legutóbbi kiadásának keresése…"
-
-#: guix/scripts/package.scm:395
-#, scheme-format
-msgid "~a: note: using ~a but ~a is available upstream~%"
-msgstr "~a: megjegyzés: ~a használata, de ~a elérhető a tárolóban~%"
-
-#: guix/scripts/package.scm:467
+#: guix/scripts/package.scm:390
 #, scheme-format
 msgid "The following environment variable definitions may be needed:~%"
 msgstr "A következő környezeti változó meghatározások lehetnek szükségesek:~%"
 
-#: guix/scripts/package.scm:483
+#: guix/scripts/package.scm:406
 msgid ""
 "Usage: guix package [OPTION]... PACKAGES...\n"
 "Install, remove, or upgrade PACKAGES in a single transaction.\n"
@@ -366,7 +364,7 @@ msgstr ""
 "Használat: guix package [KAPCSOLÓ]… CSOMAGOK…\n"
 "CSOMAGOK telepítése, eltávolítása vagy frissítése egyetlen tranzakcióban.\n"
 
-#: guix/scripts/package.scm:485
+#: guix/scripts/package.scm:408
 msgid ""
 "\n"
 "  -i, --install=PACKAGE  install PACKAGE"
@@ -374,7 +372,7 @@ msgstr ""
 "\n"
 "  -i, --install=CSOMAG   CSOMAG telepítése"
 
-#: guix/scripts/package.scm:487
+#: guix/scripts/package.scm:410
 msgid ""
 "\n"
 "  -e, --install-from-expression=EXP\n"
@@ -384,7 +382,7 @@ msgstr ""
 "  -e, --install-from-expression=KIF\n"
 "                         a kiértékelt KIF csomag telepítése"
 
-#: guix/scripts/package.scm:490
+#: guix/scripts/package.scm:413
 msgid ""
 "\n"
 "  -r, --remove=PACKAGE   remove PACKAGE"
@@ -392,7 +390,7 @@ msgstr ""
 "\n"
 "  -r, --remove=CSOMAG    CSOMAG eltávolítása"
 
-#: guix/scripts/package.scm:492
+#: guix/scripts/package.scm:415
 msgid ""
 "\n"
 "  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
@@ -401,7 +399,7 @@ msgstr ""
 "  -u, --upgrade[=REGKIF] az összes REGKIF-re illeszkedő telepített csomag\n"
 "                         frissítése"
 
-#: guix/scripts/package.scm:494
+#: guix/scripts/package.scm:417
 msgid ""
 "\n"
 "      --roll-back        roll back to the previous generation"
@@ -409,7 +407,7 @@ msgstr ""
 "\n"
 "      --roll-back        visszagörgetés az előző generációra"
 
-#: guix/scripts/package.scm:496
+#: guix/scripts/package.scm:419
 msgid ""
 "\n"
 "      --search-paths     display needed environment variable definitions"
@@ -418,7 +416,7 @@ msgstr ""
 "      --search-paths     a szükséges környezeti változó meghatározások\n"
 "                         megjelenítése"
 
-#: guix/scripts/package.scm:498
+#: guix/scripts/package.scm:421
 msgid ""
 "\n"
 "  -l, --list-generations[=PATTERN]\n"
@@ -428,7 +426,7 @@ msgstr ""
 "  -l, --list-generations[=MINTA]\n"
 "                         a MINTÁRA illeszkedő generációk listázása"
 
-#: guix/scripts/package.scm:501
+#: guix/scripts/package.scm:424
 msgid ""
 "\n"
 "  -d, --delete-generations[=PATTERN]\n"
@@ -438,7 +436,17 @@ msgstr ""
 "  -d, --delete-generations[=MINTA]\n"
 "                         a MINTÁRA illeszkedő generációk törlése"
 
-#: guix/scripts/package.scm:504
+#: guix/scripts/package.scm:427
+msgid ""
+"\n"
+"  -S, --switch-generation=PATTERN\n"
+"                         switch to a generation matching PATTERN"
+msgstr ""
+"\n"
+"  -S, --switch-generation=MINTA\n"
+"                         átváltás a MINTÁRA illeszkedő generációra"
+
+#: guix/scripts/package.scm:430
 msgid ""
 "\n"
 "  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
@@ -447,7 +455,7 @@ msgstr ""
 "  -p, --profile=PROFIL   a PROFIL használata a felhasználó alapértelmezett\n"
 "                         profilja helyett"
 
-#: guix/scripts/package.scm:507
+#: guix/scripts/package.scm:433
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the profile"
@@ -456,7 +464,7 @@ msgstr ""
 "      --bootstrap        a Guile rendszertöltő használata a profil\n"
 "                         összeállításához"
 
-#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
+#: guix/scripts/package.scm:435 guix/scripts/pull.scm:74
 msgid ""
 "\n"
 "      --verbose          produce verbose output"
@@ -464,7 +472,7 @@ msgstr ""
 "\n"
 "      --verbose          bőbeszédű kimenet előállítása"
 
-#: guix/scripts/package.scm:512
+#: guix/scripts/package.scm:438
 msgid ""
 "\n"
 "  -s, --search=REGEXP    search in synopsis and description using REGEXP"
@@ -473,7 +481,7 @@ msgstr ""
 "  -s, --search=REGKIF    keresés az összegzésben és a leírásban REGKIF\n"
 "                         használatával"
 
-#: guix/scripts/package.scm:514
+#: guix/scripts/package.scm:440
 msgid ""
 "\n"
 "  -I, --list-installed[=REGEXP]\n"
@@ -483,7 +491,7 @@ msgstr ""
 "  -I, --list-installed[=REGKIF]\n"
 "                         a REGKIF-re illeszkedő telepített csomagok listázása"
 
-#: guix/scripts/package.scm:517
+#: guix/scripts/package.scm:443
 msgid ""
 "\n"
 "  -A, --list-available[=REGEXP]\n"
@@ -493,73 +501,74 @@ msgstr ""
 "  -A, --list-available[=REGKIF]\n"
 "                         a REGKIF-re illeszkedő elérhető csomagok listázása"
 
-#: guix/scripts/package.scm:520
-#, fuzzy
+#: guix/scripts/package.scm:446
 msgid ""
 "\n"
 "  --show=PACKAGE         show details about PACKAGE"
 msgstr ""
 "\n"
-"  -i, --install=CSOMAG   CSOMAG telepítése"
+"  --show=CSOMAG          a CSOMAG részleteinek megjelenítése"
 
-#: guix/scripts/package.scm:767
+#: guix/scripts/package.scm:677
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: nem odatartozó argumentum~%"
 
-#: guix/scripts/package.scm:782
+#: guix/scripts/package.scm:687
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr ""
 "További információkért próbálja az „info '(guix) Invoking guix package'”\n"
 "parancsot.~%"
 
-#: guix/scripts/package.scm:804
+#: guix/scripts/package.scm:709
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "hiba: a(z) „~a” könyvtár létrehozása közben: ~a~%"
 
-#: guix/scripts/package.scm:808
+#: guix/scripts/package.scm:713
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Hozza létre a(z) „~a” könyvtárat az ön nevében, tulajdonosként.~%"
 
-#: guix/scripts/package.scm:815
+#: guix/scripts/package.scm:720
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "hiba: a(z) „~a” könyvtárnak nem ön a tulajdonosa~%"
 
-#: guix/scripts/package.scm:818
+#: guix/scripts/package.scm:723
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Változtassa meg a(z) „~a” tulajdonosát erre a felhasználóra: ~s.~%"
 
-#: guix/scripts/package.scm:843
+#: guix/scripts/package.scm:756
 #, scheme-format
-msgid "deleting ~a~%"
-msgstr "~a törlése~%"
+msgid "cannot switch to generation '~a'~%"
+msgstr "nem sikerült átváltani erre a generációra: „~a”~%"
 
-#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
+#: guix/scripts/package.scm:788 guix/scripts/package.scm:889
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "érvénytelen szintaxis: ~a~%"
 
-#: guix/scripts/package.scm:925
+#: guix/scripts/package.scm:825
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "nincs mit tenni~%"
 
-#: guix/scripts/package.scm:948
+#: guix/scripts/package.scm:840
 #, scheme-format
 msgid "~a package in profile~%"
-msgstr "~a csomag a profilban~%"
+msgid_plural "~a packages in profile~%"
+msgstr[0] "~a csomag a profilban~%"
+msgstr[1] "~a csomag a profilban~%"
 
-#: guix/scripts/package.scm:963
+#: guix/scripts/package.scm:855
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "~a generáció\t~a"
 
-#: guix/scripts/package.scm:970
+#: guix/scripts/package.scm:862
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(jelenlegi)~%"
@@ -662,7 +671,7 @@ msgstr ""
 msgid "unrecognized option: ~a~%"
 msgstr "ismeretlen kapcsoló: ~a~%"
 
-#: guix/scripts/hash.scm:134 guix/ui.scm:233
+#: guix/scripts/hash.scm:134 guix/ui.scm:252
 #, scheme-format
 msgid "~a~%"
 msgstr "~a~%"
@@ -672,7 +681,7 @@ msgstr "~a~%"
 msgid "wrong number of arguments~%"
 msgstr "nem megfelelő számú argumentum~%"
 
-#: guix/scripts/pull.scm:73
+#: guix/scripts/pull.scm:72
 msgid ""
 "Usage: guix pull [OPTION]...\n"
 "Download and deploy the latest version of Guix.\n"
@@ -680,7 +689,7 @@ msgstr ""
 "Használat: guix pull [KAPCSOLÓ]…\n"
 "A Guix legújabb verziójának letöltése és telepítése.\n"
 
-#: guix/scripts/pull.scm:77
+#: guix/scripts/pull.scm:76
 msgid ""
 "\n"
 "      --url=URL          download the Guix tarball from URL"
@@ -688,7 +697,7 @@ msgstr ""
 "\n"
 "      --url=URL          a Guix tarball letöltése az URL-ről"
 
-#: guix/scripts/pull.scm:79
+#: guix/scripts/pull.scm:78
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the new Guix"
@@ -697,29 +706,42 @@ msgstr ""
 "      --bootstrap        a Guile rendszertöltő használata az új Guix\n"
 "                         összeállításához"
 
-#: guix/scripts/pull.scm:117
+#: guix/scripts/pull.scm:132
+msgid "tarball did not produce a single source directory"
+msgstr "a tarball nem hozott létre egyedüli forráskönyvtárat"
+
+#: guix/scripts/pull.scm:150
 #, scheme-format
-msgid "~A: unexpected argument~%"
-msgstr "~A: nem várt argumentum~%"
+msgid "unpacking '~a'...~%"
+msgstr "kibontás: „~a”...~%"
 
-#: guix/scripts/pull.scm:126
-msgid "failed to download up-to-date source, exiting\n"
-msgstr "a legfrissebb forrás letöltése sikertelen, kilépés\n"
+#: guix/scripts/pull.scm:159
+msgid "failed to unpack source code"
+msgstr "nem sikerült a forráskód kibontása"
 
-#: guix/scripts/pull.scm:145
+#: guix/scripts/pull.scm:200
 #, scheme-format
 msgid "updated ~a successfully deployed under `~a'~%"
 msgstr "a(z) ~a frissítése sikeresen telepítve ez alá: „~a”~%"
 
-#: guix/scripts/pull.scm:148
+#: guix/scripts/pull.scm:203
 #, scheme-format
 msgid "failed to update Guix, check the build log~%"
 msgstr "a Guix frissítése sikertelen, nézze meg az összeállítási naplót~%"
 
-#: guix/scripts/pull.scm:150
+#: guix/scripts/pull.scm:205
 msgid "Guix already up to date\n"
 msgstr "A Guix már naprakész\n"
 
+#: guix/scripts/pull.scm:215
+#, scheme-format
+msgid "~A: unexpected argument~%"
+msgstr "~A: nem várt argumentum~%"
+
+#: guix/scripts/pull.scm:224
+msgid "failed to download up-to-date source, exiting\n"
+msgstr "a legfrissebb forrás letöltése sikertelen, kilépés\n"
+
 #: guix/scripts/substitute-binary.scm:80
 #, scheme-format
 msgid "authentication and authorization of substitutes disabled!~%"
@@ -795,12 +817,12 @@ msgstr "Letöltés, kérem várjon…~%"
 msgid "(Please consider upgrading Guile to get proper progress report.)~%"
 msgstr "(Fontolja meg a Guile frissítését a megfelelő állapotjelentés beszerzéséhez.)~%"
 
-#: guix/scripts/substitute-binary.scm:545
+#: guix/scripts/substitute-binary.scm:541
 #, scheme-format
 msgid "host name lookup error: ~a~%"
 msgstr "gépnév keresési hiba: ~a~%"
 
-#: guix/scripts/substitute-binary.scm:554
+#: guix/scripts/substitute-binary.scm:550
 msgid ""
 "Usage: guix substitute-binary [OPTION]...\n"
 "Internal tool to substitute a pre-built binary to a local build.\n"
@@ -809,7 +831,7 @@ msgstr ""
 "Belső eszköz egy előre összeállított binárisnak egy helyi összeállítással\n"
 "való helyettesítéséhez.\n"
 
-#: guix/scripts/substitute-binary.scm:556
+#: guix/scripts/substitute-binary.scm:552
 msgid ""
 "\n"
 "      --query            report on the availability of substitutes for the\n"
@@ -819,7 +841,7 @@ msgstr ""
 "      --query            a helyettesítők elérhetőségének jelentése a\n"
 "                         szabványos bemeneten átadott tároló fájlnevekhez"
 
-#: guix/scripts/substitute-binary.scm:559
+#: guix/scripts/substitute-binary.scm:555
 msgid ""
 "\n"
 "      --substitute STORE-FILE DESTINATION\n"
@@ -831,18 +853,23 @@ msgstr ""
 "                         TÁROLÓ-FÁJL letöltése és eltárolása Nar formátumban\n"
 "                         a CÉL fájlban"
 
-#: guix/scripts/substitute-binary.scm:604
+#: guix/scripts/substitute-binary.scm:600
 msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
 msgstr ""
 "Az ACL előkészítetlennek tűnik az archívum importokhoz, a helyettesítők\n"
 "elérhetetlenek lehetnek\n"
 
-#: guix/scripts/substitute-binary.scm:625
+#: guix/scripts/substitute-binary.scm:634
+#, scheme-format
+msgid "these substitute URLs will not be used:~{ ~a~}~%"
+msgstr "ezek a helyettesítő URL-ek nem lesznek használva:~{ ~a~}~%"
+
+#: guix/scripts/substitute-binary.scm:660
 #, scheme-format
 msgid "failed to look up host '~a' (~a), substituter disabled~%"
 msgstr "a(z) „~a” (~a) gép keresése sikertelen, a helyettesítő letiltva~%"
 
-#: guix/scripts/substitute-binary.scm:732
+#: guix/scripts/substitute-binary.scm:767
 #, scheme-format
 msgid "~a: unrecognized options~%"
 msgstr "~a: ismeretlen kapcsolók~%"
@@ -886,7 +913,7 @@ msgstr "hibás argumentumok"
 msgid "failed to open operating system file '~a': ~a~%"
 msgstr "a(z) „~a” operációs rendszer fájl megnyitása sikertelen: ~a~%"
 
-#: guix/scripts/system.scm:78 guix/ui.scm:238
+#: guix/scripts/system.scm:78 guix/ui.scm:258
 #, scheme-format
 msgid "~a: ~a~%"
 msgstr "~a: ~a~%"
@@ -906,7 +933,7 @@ msgstr "a(z) „~a” regisztrálása sikertelen ez alá: „~a”~%"
 msgid "initializing the current root file system~%"
 msgstr "a jelenlegi gyökér fájlrendszer előkészítése~%"
 
-#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:325
 #, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"
@@ -916,17 +943,17 @@ msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"
 msgid "activating system...~%"
 msgstr "a rendszer aktiválása…~%"
 
-#: guix/scripts/system.scm:236
+#: guix/scripts/system.scm:239
 #, scheme-format
 msgid "unrecognized boot parameters for '~a'~%"
 msgstr "azonosítatlan indítási paraméterek ehhez: „~a”~%"
 
-#: guix/scripts/system.scm:323
+#: guix/scripts/system.scm:330
 #, scheme-format
 msgid "initializing operating system under '~a'...~%"
 msgstr "az operációs rendszer előkészítése „~a” alá…~%"
 
-#: guix/scripts/system.scm:339
+#: guix/scripts/system.scm:346
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
@@ -934,37 +961,37 @@ msgstr ""
 "Használat: guix system [KAPCSOLÓ] MŰVELET FÁJL\n"
 "A FÁJLBAN meghatározott operációs rendszer összeállítása a MŰVELET szerint.\n"
 
-#: guix/scripts/system.scm:342
+#: guix/scripts/system.scm:349
 msgid "The valid values for ACTION are:\n"
 msgstr "A MŰVELET érvényes értékei a következők:\n"
 
-#: guix/scripts/system.scm:343
+#: guix/scripts/system.scm:350
 msgid "  - 'reconfigure', switch to a new operating system configuration\n"
 msgstr "  - „reconfigure”, átváltás egy új operációs rendszer beállításra\n"
 
-#: guix/scripts/system.scm:345
+#: guix/scripts/system.scm:352
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr "  - „build”, az operációs rendszer összeállítása bármi telepítése nélkül\n"
 
-#: guix/scripts/system.scm:347
+#: guix/scripts/system.scm:354
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr ""
 "  - „vm”, egy virtuális gép lemezkép összeállítása, amely megosztja a gazda\n"
 "              tárolóját\n"
 
-#: guix/scripts/system.scm:349
+#: guix/scripts/system.scm:356
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr "  - „vm-image”, egy szabadon álló virtuális gép lemezkép összeállítása\n"
 
-#: guix/scripts/system.scm:351
+#: guix/scripts/system.scm:358
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr "  - „disk-image”, egy USB-meghajtóhoz megfelelő lemezkép összeállítása\n"
 
-#: guix/scripts/system.scm:353
+#: guix/scripts/system.scm:360
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr "  - „init”, a gyökér fájlrendszer előkészítése a GNU futtatásához.\n"
 
-#: guix/scripts/system.scm:357
+#: guix/scripts/system.scm:364
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
@@ -972,7 +999,7 @@ msgstr ""
 "\n"
 "      --image-size=MÉRET  a „vm-image”-hez, adott MÉRETŰ lemezkép előállítása"
 
-#: guix/scripts/system.scm:359
+#: guix/scripts/system.scm:366
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
@@ -980,21 +1007,86 @@ msgstr ""
 "\n"
 "      --no-grub          az „init”-hez, ne telepítse a GRUB rendszerbetöltőt"
 
-#: guix/scripts/system.scm:422
+#: guix/scripts/system.scm:368
+msgid ""
+"\n"
+"      --full-boot        for 'vm', make a full boot sequence"
+msgstr ""
+"\n"
+"      --full-boot        „vm” esetén, teljes indítási sorozat készítése"
+
+#: guix/scripts/system.scm:434
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: ismeretlen művelet~%"
 
-#: guix/scripts/system.scm:439
+#: guix/scripts/system.scm:451
 #, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "nem megfelelő számú argumentum a(z) „~a” művelethez~%"
 
-#: guix/scripts/system.scm:459
+#: guix/scripts/system.scm:471
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "nincs beállítófájl megadva~%"
 
+#: guix/scripts/lint.scm:51
+#, scheme-format
+msgid "~a: ~a: ~a~%"
+msgstr "~a: ~a: ~a~%"
+
+#: guix/scripts/lint.scm:72
+#, scheme-format
+msgid "Available checkers:~%"
+msgstr "Elérhető ellenőrzők:~%"
+
+#: guix/scripts/lint.scm:226
+msgid "Validate package descriptions"
+msgstr "Csomagleírások ellenőrzése"
+
+#: guix/scripts/lint.scm:230
+msgid "Identify inputs that should be native inputs"
+msgstr "Bemenetek azonosítása, amelyek natív bemenetek lehetnek"
+
+#: guix/scripts/lint.scm:234
+msgid "Validate filenames of patches"
+msgstr "Javítócsomagok fájlneveinek ellenőrzése"
+
+#: guix/scripts/lint.scm:238
+msgid "Validate package synopsis"
+msgstr "Csomagáttekintés ellenőrzése"
+
+#: guix/scripts/lint.scm:257
+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 ""
+"Használat: guix lint [KAPCSOLÓ]… [CSOMAG]…\n"
+"Számos ellenőrző futtatása a megadott csomagon. Ha semmi sincs megadva, az ellenőrzők futtatása minden csomagon.\n"
+
+#: guix/scripts/lint.scm:259
+msgid ""
+"\n"
+"  -c, --checkers=CHECKER1,CHECKER2...\n"
+"                         only run the specificed checkers"
+msgstr ""
+"\n"
+"  -c, --checkers=ELLENŐRZŐ1,ELLENŐRZŐ2…\n"
+"                         csak a megadott ellenőrzők futtatása"
+
+#: guix/scripts/lint.scm:264
+msgid ""
+"\n"
+"  -l, --list-checkers    display the list of available lint checkers"
+msgstr ""
+"\n"
+"  -l, --list-checkers    az elérhető lint ellenőrzők listájának megjelenítése"
+
+#: guix/scripts/lint.scm:283
+#, scheme-format
+msgid "~a: invalid checker"
+msgstr "~a: érvénytelen ellenőrző"
+
 #: guix/gnu-maintenance.scm:373
 #, scheme-format
 msgid "signature verification failed for `~a'~%"
@@ -1015,12 +1107,12 @@ msgstr "~a: nem található a forrásfájl"
 msgid "~a: ~a: no `version' field in source; skipping~%"
 msgstr "~a: ~a: nincs „version” mező a forrásban; kihagyás~%"
 
-#: guix/ui.scm:131
+#: guix/ui.scm:135
 #, scheme-format
 msgid "failed to install locale: ~a~%"
 msgstr "a területi beállítás telepítése sikertelen: ~a~%"
 
-#: guix/ui.scm:150
+#: guix/ui.scm:154
 msgid ""
 "Copyright (C) 2014 the Guix authors\n"
 "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -1033,7 +1125,7 @@ msgstr ""
 "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n"
 "NINCS GARANCIA, a törvény által engedélyezett mértékig.\n"
 
-#: guix/ui.scm:158
+#: guix/ui.scm:162
 #, scheme-format
 msgid ""
 "\n"
@@ -1042,7 +1134,7 @@ msgstr ""
 "\n"
 "A hibákat ide jelentse: ~a."
 
-#: guix/ui.scm:160
+#: guix/ui.scm:164
 #, scheme-format
 msgid ""
 "\n"
@@ -1051,7 +1143,7 @@ msgstr ""
 "\n"
 "~a honlap: <~a>"
 
-#: guix/ui.scm:162
+#: guix/ui.scm:166
 msgid ""
 "\n"
 "General help using GNU software: <http://www.gnu.org/gethelp/>"
@@ -1059,100 +1151,160 @@ msgstr ""
 "\n"
 "Általános segítség a GNU szoftverek használatához: <http://www.gnu.org/gethelp/>"
 
-#: guix/ui.scm:169
+#: guix/ui.scm:173
 #, scheme-format
 msgid "~a: invalid number~%"
 msgstr "~a: érvénytelen szám~%"
 
-#: guix/ui.scm:186
+#: guix/ui.scm:190
 #, scheme-format
 msgid "invalid number: ~a~%"
 msgstr "érvénytelen szám: ~a~%"
 
-#: guix/ui.scm:201
+#: guix/ui.scm:213
 #, scheme-format
 msgid "unknown unit: ~a~%"
 msgstr "ismeretlen egység: ~a~%"
 
-#: guix/ui.scm:212
+#: guix/ui.scm:224
 #, scheme-format
 msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
 msgstr "~a:~a:~a: a(z) „~a” csomagnak érvénytelen bemenete van: ~s~%"
 
-#: guix/ui.scm:219
+#: guix/ui.scm:231
 #, scheme-format
 msgid "~a: ~a: build system `~a' does not support cross builds~%"
 msgstr "~a: ~a: a(z) „~a” összeállítási rendszer nem támogatja a kereszt összeállításokat~%"
 
-#: guix/ui.scm:224
+#: guix/ui.scm:236
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr "a(z) „~a” profil nem létezik~%"
+
+#: guix/ui.scm:239
+#, scheme-format
+msgid "generation ~a of profile '~a' does not exist~%"
+msgstr "a(z) ~a generáció a(z) „~a” profilhoz nem létezik~%"
+
+#: guix/ui.scm:243
 #, scheme-format
 msgid "failed to connect to `~a': ~a~%"
 msgstr "sikertelen csatlakozás ehhez: „~a”: ~a~%"
 
-#: guix/ui.scm:229
+#: guix/ui.scm:248
 #, scheme-format
 msgid "build failed: ~a~%"
 msgstr "az összeállítás sikertelen: ~a~%"
 
-#: guix/ui.scm:257
+#: guix/ui.scm:277
 #, scheme-format
 msgid "failed to read expression ~s: ~s~%"
 msgstr "a(z) ~s kifejezés olvasása sikertelen: ~s~%"
 
-#: guix/ui.scm:263
+#: guix/ui.scm:283
 #, scheme-format
 msgid "failed to evaluate expression `~a': ~s~%"
 msgstr "a(z) „~a” kifejezés kiértékelése sikertelen: ~s~%"
 
-#: guix/ui.scm:272
+#: guix/ui.scm:292
 #, scheme-format
 msgid "expression ~s does not evaluate to a package~%"
 msgstr "a(z) ~s kifejezés nem értékelhető ki a csomaghoz~%"
 
-#: guix/ui.scm:319
+#: guix/ui.scm:339
 #, scheme-format
 msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
-msgstr "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[A következő származékokat kellene összeállítani:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:324
+#: guix/ui.scm:344
 #, scheme-format
 msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
-msgstr "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[A következő fájlokat kellene letölteni:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:330
+#: guix/ui.scm:350
 #, scheme-format
 msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
-msgstr "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[A következő származékok lesznek összeállítva:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:335
+#: guix/ui.scm:355
 #, scheme-format
 msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
-msgstr "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"
+msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr[0] "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"
+msgstr[1] "~:[A következő fájlok lesznek letöltve:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:407
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
+msgstr[0] "A következő csomagot el kellene távolítani:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagokat el kellene távolítani:~%~{~a~%~}~%"
+
+#: guix/ui.scm:412
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
+msgstr[0] "A következő csomag el lesz távolítva:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagok el lesznek távolítva:~%~{~a~%~}~%"
+
+#: guix/ui.scm:425
+#, scheme-format
+msgid "The following package would be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
+msgstr[0] "A következő csomagot kellene frissíteni:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagokat kellene frissíteni:~%~{~a~%~}~%"
+
+#: guix/ui.scm:430
+#, scheme-format
+msgid "The following package will be upgraded:~%~{~a~%~}~%"
+msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
+msgstr[0] "A következő csomag lesz frissítve:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagok lesznek frissítve:~%~{~a~%~}~%"
+
+#: guix/ui.scm:441
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
+msgstr[0] "A következő csomagot kellene telepíteni:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagokat kellene telepíteni:~%~{~a~%~}~%"
+
+#: guix/ui.scm:446
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
+msgstr[0] "A következő csomag lesz telepítve:~%~{~a~%~}~%"
+msgstr[1] "A következő csomagok lesznek telepítve:~%~{~a~%~}~%"
 
-#: guix/ui.scm:352
+#: guix/ui.scm:463
 msgid "<unknown location>"
 msgstr "<ismeretlen hely>"
 
-#: guix/ui.scm:380
+#: guix/ui.scm:489
 #, scheme-format
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "a(z) „~a” beállítási könyvtár létrehozása sikertelen: ~a~%"
 
-#: guix/ui.scm:475 guix/ui.scm:489
+#: guix/ui.scm:589 guix/ui.scm:603
 msgid "unknown"
 msgstr "ismeretlen"
 
-#: guix/ui.scm:598
+#: guix/ui.scm:712
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "érvénytelen argumentum: ~a~%"
 
-#: guix/ui.scm:603
+#: guix/ui.scm:717
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "További információkért próbálja a „guix --help” parancsot.~%"
 
-#: guix/ui.scm:633
+#: guix/ui.scm:747
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1160,21 +1312,21 @@ msgstr ""
 "Használat: guix PARANCS ARGUMENTUMOK…\n"
 "A PARANCS futtatása ARGUMENTUMOKKAL.\n"
 
-#: guix/ui.scm:636
+#: guix/ui.scm:750
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "A PARANCSNAK a lenti listában lévő alparancsok egyikének kell lennie:\n"
 
-#: guix/ui.scm:656
+#: guix/ui.scm:770
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: a parancs nem található~%"
 
-#: guix/ui.scm:674
+#: guix/ui.scm:788
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: hiányzó parancsnév~%"
 
-#: guix/ui.scm:682
+#: guix/ui.scm:796
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: ismeretlen kapcsoló: „~a”~%"
@@ -1198,80 +1350,71 @@ msgstr "átirányítás követése ide: „~a”…~%"
 msgid "download failed"
 msgstr "letöltés sikertelen"
 
-#: guix/nar.scm:134
-msgid "unexpected executable file marker"
-msgstr "nem várt végrehajtható fájljelölő"
-
-#: guix/nar.scm:141
-msgid "unsupported nar file type"
-msgstr "nem támogatott nar fájltípus"
-
-#: guix/nar.scm:209
-msgid "unsupported file type"
-msgstr "nem támogatott fájltípus"
-
-#: guix/nar.scm:219
-msgid "invalid nar signature"
-msgstr "érvénytelen nar aláírás"
-
-#: guix/nar.scm:230
-msgid "invalid nar end-of-file marker"
-msgstr "érvénytelen nar fájlvége jelölő"
-
-#: guix/nar.scm:244
-msgid "invalid symlink tokens"
-msgstr "érvénytelen szimbolikus link jelsorok"
-
-#: guix/nar.scm:263
-msgid "unexpected directory entry termination"
-msgstr "nem várt könyvtárbejegyzés végződés"
-
-#: guix/nar.scm:272
-msgid "unexpected directory inter-entry marker"
-msgstr "nem várt könyvtár belső-bejegyzés jelölő"
-
-#: guix/nar.scm:277
-msgid "unsupported nar entry type"
-msgstr "nem támogatott nar bejegyzéstípus"
-
-#: guix/nar.scm:376
+#: guix/nar.scm:155
 msgid "signature is not a valid s-expression"
 msgstr "az aláírás nem érvényes s-kifejezés"
 
-#: guix/nar.scm:385
+#: guix/nar.scm:164
 msgid "invalid signature"
 msgstr "érvénytelen aláírás"
 
-#: guix/nar.scm:389
+#: guix/nar.scm:168
 msgid "invalid hash"
 msgstr "érvénytelen hash"
 
-#: guix/nar.scm:397
+#: guix/nar.scm:176
 msgid "unauthorized public key"
 msgstr "jogosulatlan nyilvános kulcs"
 
-#: guix/nar.scm:402
+#: guix/nar.scm:181
 msgid "corrupt signature data"
 msgstr "sérült aláírás adatok"
 
-#: guix/nar.scm:422
+#: guix/nar.scm:201
 msgid "corrupt file set archive"
 msgstr "sérült fájlhalmaz archívum"
 
-#: guix/nar.scm:432
+#: guix/nar.scm:211
 #, scheme-format
 msgid "importing file or directory '~a'...~%"
 msgstr "fájl vagy könyvtár importálása: „~a”…~%"
 
-#: guix/nar.scm:441
+#: guix/nar.scm:220
 #, scheme-format
 msgid "found valid signature for '~a'~%"
 msgstr "érvényes aláírás található ehhez: „~a”~%"
 
-#: guix/nar.scm:448
+#: guix/nar.scm:227
 msgid "imported file lacks a signature"
 msgstr "az importált fájl egy aláírást hiányol"
 
-#: guix/nar.scm:487
+#: guix/nar.scm:266
 msgid "invalid inter-file archive mark"
 msgstr "érvénytelen belső-fájl archívum jelölő"
+
+#~ msgid "unexpected executable file marker"
+#~ msgstr "nem várt végrehajtható fájljelölő"
+
+#~ msgid "unsupported nar file type"
+#~ msgstr "nem támogatott nar fájltípus"
+
+#~ msgid "unsupported file type"
+#~ msgstr "nem támogatott fájltípus"
+
+#~ msgid "invalid nar signature"
+#~ msgstr "érvénytelen nar aláírás"
+
+#~ msgid "invalid nar end-of-file marker"
+#~ msgstr "érvénytelen nar fájlvége jelölő"
+
+#~ msgid "invalid symlink tokens"
+#~ msgstr "érvénytelen szimbolikus link jelsorok"
+
+#~ msgid "unexpected directory entry termination"
+#~ msgstr "nem várt könyvtárbejegyzés végződés"
+
+#~ msgid "unexpected directory inter-entry marker"
+#~ msgstr "nem várt könyvtár belső-bejegyzés jelölő"
+
+#~ msgid "unsupported nar entry type"
+#~ msgstr "nem támogatott nar bejegyzéstípus"
diff --git a/po/packages/LINGUAS b/po/packages/LINGUAS
index 74504b6f07..6ba2fe22cc 100644
--- a/po/packages/LINGUAS
+++ b/po/packages/LINGUAS
@@ -4,6 +4,7 @@ de
 en@boldquot
 en@quot
 eo
+hu
 pt_BR
 sr
 vi
diff --git a/po/packages/hu.po b/po/packages/hu.po
new file mode 100644
index 0000000000..f03c0af959
--- /dev/null
+++ b/po/packages/hu.po
@@ -0,0 +1,1262 @@
+# Hungarian translation for guix-packages.
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the guix package.
+#
+# Balázs Úr <urbalazs@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: guix-packages 0.8\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2014-11-10 15:37+0100\n"
+"PO-Revision-Date: 2014-12-03 21:17+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"Language: hu\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"
+"X-Generator: Lokalize 1.5\n"
+
+#: gnu/packages/aspell.scm:42
+msgid "Spell checker"
+msgstr "Helyesírás-ellenőrző"
+
+#: gnu/packages/aspell.scm:44
+msgid ""
+"Aspell is a spell-checker which can be used either as a library or as\n"
+"a standalone program.  Notable features of Aspell include its full support of\n"
+"documents written in the UTF-8 encoding and its ability to use multiple\n"
+"dictionaries, including personal ones."
+msgstr ""
+
+#: gnu/packages/aspell.scm:84
+msgid "This package provides a dictionary for the GNU Aspell spell checker."
+msgstr "Ez a csomag egy szótárat biztosít a GNU Aspell helyesírás-ellenőrzőhöz."
+
+#: gnu/packages/backup.scm:87
+msgid "Encrypted backup using rsync algorithm"
+msgstr "Titkosított biztonsági mentés az rsync algoritmus használatával"
+
+#: gnu/packages/backup.scm:89
+msgid ""
+"Duplicity backs up directories by producing encrypted tar-format volumes\n"
+"and uploading them to a remote or local file server.  Because duplicity uses\n"
+"librsync, the incremental archives are space efficient and only record the\n"
+"parts of files that have changed since the last backup.  Because duplicity\n"
+"uses GnuPG to encrypt and/or sign these archives, they will be safe from\n"
+"spying and/or modification by the server."
+msgstr ""
+
+#: gnu/packages/backup.scm:123
+msgid "Simple incremental backup tool"
+msgstr "Egyszerű növekményes biztonsági mentés eszköz"
+
+#: gnu/packages/backup.scm:125
+msgid ""
+"Hdup2 is a backup utilty, its aim is to make backup really simple.  The\n"
+"backup scheduling is done by means of a cron job.  It supports an\n"
+"include/exclude mechanism, remote backups, encrypted backups and split\n"
+"backups (called chunks) to allow easy burning to CD/DVD."
+msgstr ""
+
+#: gnu/packages/backup.scm:178
+msgid "Multi-format archive and compression library"
+msgstr ""
+
+#: gnu/packages/backup.scm:180
+msgid ""
+"Libarchive provides a flexible interface for reading and writing\n"
+"archives in various formats such as tar and cpio.  Libarchive also supports\n"
+"reading and writing archives compressed using various compression filters such\n"
+"as gzip and bzip2.  The library is inherently stream-oriented; readers\n"
+"serially iterate through the archive, writers serially add things to the\n"
+"archive.  In particular, note that there is currently no built-in support for\n"
+"random access nor for in-place modification."
+msgstr ""
+
+#: gnu/packages/backup.scm:243
+msgid "Provide a list of files to backup"
+msgstr ""
+
+#: gnu/packages/backup.scm:245
+msgid ""
+"Rdup is a utility inspired by rsync and the plan9 way of doing backups.\n"
+"Rdup itself does not backup anything, it only print a list of absolute\n"
+"filenames to standard output.  Auxiliary scripts are needed that act on this\n"
+"list and implement the backup strategy."
+msgstr ""
+
+#: gnu/packages/backup.scm:275
+msgid "Tar-compatible archiver"
+msgstr "Tar-kompatibilis archiváló"
+
+#: gnu/packages/backup.scm:277
+msgid ""
+"Btar is a tar-compatible archiver which allows arbitrary compression and\n"
+"ciphering, redundancy, differential backup, indexed extraction, multicore\n"
+"compression, input and output serialisation, and tolerance to partial archive\n"
+"errors."
+msgstr ""
+
+#: gnu/packages/backup.scm:305
+msgid "Local/remote mirroring+incremental backup"
+msgstr "Helyi/távoli tükröző + növekményes biztonsági mentés"
+
+#: gnu/packages/backup.scm:307
+msgid ""
+"Rdiff-backup backs up one directory to another, possibly over a network.\n"
+"The target directory ends up a copy of the source directory, but extra reverse\n"
+"diffs are stored in a special subdirectory of that target directory, so you\n"
+"can still recover files lost some time ago.  The idea is to combine the best\n"
+"features of a mirror and an incremental backup.  Rdiff-backup also preserves\n"
+"subdirectories, hard links, dev files, permissions, uid/gid ownership,\n"
+"modification times, extended attributes, acls, and resource forks.  Also,\n"
+"rdiff-backup can operate in a bandwidth efficient manner over a pipe, like\n"
+"rsync.  Thus you can use rdiff-backup and ssh to securely back a hard drive up\n"
+"to a remote location, and only the differences will be transmitted.  Finally,\n"
+"rdiff-backup is easy to use and settings have sensical defaults."
+msgstr ""
+
+#: gnu/packages/base.scm:56
+msgid "Hello, GNU world: An example GNU package"
+msgstr "Helló, GNU világ: egy példa GNU csomag"
+
+#: gnu/packages/base.scm:58
+msgid ""
+"GNU Hello prints the message \"Hello, world!\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on."
+msgstr ""
+"A GNU Helló a „Helló, világ!” üzenetet írja ki, majd kilép. Ez a szabványos\n"
+"GNU kódolási gyakorlatok példájaként szolgál. Mint olyan, támogatja a\n"
+"parancssori argumentumokat, több nyelvet, és így tovább."
+
+#: gnu/packages/base.scm:76
+msgid "Print lines matching a pattern"
+msgstr "Egy mintára illeszkedő sorok kiírása"
+
+#: gnu/packages/base.scm:78
+msgid ""
+"grep is a tool for finding text inside files.  Text is found by\n"
+"matching a pattern provided by the user in one or many files.  The pattern\n"
+"may be provided as a basic or extended regular expression, or as fixed\n"
+"strings.  By default, the matching text is simply printed to the screen,\n"
+"however the output can be greatly customized to include, for example, line\n"
+"numbers.  GNU grep offers many extensions over the standard utility,\n"
+"including, for example, recursive directory searching."
+msgstr ""
+"A grep a fájlokon belüli szöveg keresésére szolgáló eszköz. A szöveg a\n"
+"felhasználó által megadott mintákra illeszkedve található meg egy vagy több\n"
+"fájlban. A minta megadható alap vagy kiterjesztett reguláris kifejezésként,\n"
+"illetve rögzített szövegként. Alapértelmezetten az illeszkedő szöveg\n"
+"egyszerűen kiírásra kerül a képernyőre, viszont a kimenet nagymértékben\n"
+"testre szabható a beágyazáshoz, például sorok számozásához. A GNU grep számos\n"
+"kiterjesztést nyújt a szabványos segédprogramokon túl, beleértve például a\n"
+"rekurzív könyvtárkeresést."
+
+#: gnu/packages/base.scm:100
+msgid "Stream editor"
+msgstr "Folyamszerkesztő"
+
+#: gnu/packages/base.scm:115
+msgid ""
+"Sed is a non-interactive, text stream editor.  It receives a text\n"
+"input from a file or from standard input and it then applies a series of text\n"
+"editing commands to the stream and prints its output to standard output.  It\n"
+"is often used for substituting text patterns in a stream.  The GNU\n"
+"implementation offers several extensions over the standard utility."
+msgstr ""
+"A sed egy nem interaktív szövegfolyam-szerkesztő. Szöveges bemenetet fogad\n"
+"egy fájlból vagy a szabványos bemenetről, majd egy sor szövegszerkesztési\n"
+"parancsot alkalmaz a folyamon, és kiírja a kimenetét a szabványos kimenetre.\n"
+"Gyakran használják szövegminták helyettesítésére egy folyamban. A GNU\n"
+"megvalósítása számos kiterjesztést nyújt a szabványos segédprogramokon túl."
+
+#: gnu/packages/base.scm:135
+msgid "Managing tar archives"
+msgstr "Tar archívumok kezelése"
+
+#: gnu/packages/base.scm:137
+msgid ""
+"Tar provides the ability to create tar archives, as well as the\n"
+"ability to extract, update or list files in an existing archive.  It is\n"
+"useful for combining many files into one larger file, while maintaining\n"
+"directory structure and file information such as permissions and\n"
+"creation/modification dates.  GNU tar offers many extensions over the\n"
+"standard utility."
+msgstr ""
+
+#: gnu/packages/base.scm:161
+msgid "Apply differences to originals, with optional backups"
+msgstr ""
+
+#: gnu/packages/base.scm:163
+msgid ""
+"Patch is a program that applies changes to files based on differences\n"
+"laid out as by the program \"diff\".  The changes may be applied to one or more\n"
+"files depending on the contents of the diff file.  It accepts several\n"
+"different diff formats.  It may also be used to revert previously applied\n"
+"differences."
+msgstr ""
+
+#: gnu/packages/base.scm:183
+msgid "Comparing and merging files"
+msgstr ""
+
+#: gnu/packages/base.scm:185
+msgid ""
+"GNU Diffutils is a package containing tools for finding the\n"
+"differences between files.  The \"diff\" command is used to show how two files\n"
+"differ, while \"cmp\" shows the offsets and line numbers where they differ. \n"
+"\"diff3\" allows you to compare three files.  Finally, \"sdiff\" offers an\n"
+"interactive means to merge two files."
+msgstr ""
+
+#: gnu/packages/base.scm:212
+msgid "Operating on files matching given criteria"
+msgstr ""
+
+#: gnu/packages/base.scm:214
+msgid ""
+"Findutils supplies the basic file directory searching utilities of the\n"
+"GNU system.  It consists of two primary searching utilities: \"find\"\n"
+"recursively searches for files in a directory according to given criteria and\n"
+"\"locate\" lists files in a database that match a query.  Two auxiliary tools\n"
+"are included: \"updatedb\" updates the file name database and \"xargs\" may be\n"
+"used to apply commands with arbitrarily long arguments."
+msgstr ""
+
+#: gnu/packages/base.scm:264
+msgid "Core GNU utilities (file, text, shell)"
+msgstr ""
+
+#: gnu/packages/base.scm:266
+msgid ""
+"GNU Coreutils includes all of the basic command-line tools that are\n"
+"expected in a POSIX system.  These provide the basic file, shell and text\n"
+"manipulation functions of the GNU system.  Most of these tools offer extended\n"
+"functionality beyond that which is outlined in the POSIX standard."
+msgstr ""
+
+#: gnu/packages/base.scm:300
+msgid "Remake files automatically"
+msgstr ""
+
+#: gnu/packages/base.scm:302
+msgid ""
+"Make is a program that is used to control the production of\n"
+"executables or other files from their source files.  The process is\n"
+"controlled from a Makefile, in which the developer specifies how each file is\n"
+"generated from its source.  It has powerful dependency resolution and the\n"
+"ability to determine when files have to be regenerated after their sources\n"
+"change.  GNU make offers many powerful extensions over the standard utility."
+msgstr ""
+
+#: gnu/packages/base.scm:347
+msgid "Binary utilities: bfd gas gprof ld"
+msgstr ""
+
+#: gnu/packages/base.scm:349
+msgid ""
+"GNU Binutils is a collection of tools for working with binary files.\n"
+"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler.\n"
+"Other tools include programs to display binary profiling information, list\n"
+"the strings in a binary file, and utilities for working with archives.  The\n"
+"\"bfd\" library for working with executable and object formats is also\n"
+"included."
+msgstr ""
+
+#: gnu/packages/base.scm:491
+msgid "The GNU C Library"
+msgstr ""
+
+#: gnu/packages/base.scm:493
+msgid ""
+"Any Unix-like operating system needs a C library: the library which\n"
+"defines the \"system calls\" and other basic facilities such as open, malloc,\n"
+"printf, exit...\n"
+"\n"
+"The GNU C library is used as the C library in the GNU system and most systems\n"
+"with the Linux kernel."
+msgstr ""
+
+#: gnu/packages/base.scm:562
+msgid "Database of current and historical time zones"
+msgstr ""
+
+#: gnu/packages/base.scm:563
+msgid ""
+"The Time Zone Database (often called tz or zoneinfo)\n"
+"contains code and data that represent the history of local time for many\n"
+"representative locations around the globe.  It is updated periodically to\n"
+"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n"
+"and daylight-saving rules."
+msgstr ""
+
+#: gnu/packages/databases.scm:83
+msgid "Berkeley database"
+msgstr ""
+
+#: gnu/packages/databases.scm:85
+msgid ""
+"Berkeley DB is an embeddable database allowing developers the choice of\n"
+"SQL, Key/Value, XML/XQuery or Java Object storage for their data model."
+msgstr ""
+
+#: gnu/packages/databases.scm:143
+msgid "Fast, easy to use, and popular database"
+msgstr ""
+
+#: gnu/packages/databases.scm:145
+msgid ""
+"MySQL is a fast, reliable, and easy to use relational database\n"
+"management system that supports the standardized Structured Query\n"
+"Language."
+msgstr ""
+
+#: gnu/packages/databases.scm:166
+msgid "Powerful object-relational database system"
+msgstr ""
+
+#: gnu/packages/databases.scm:168
+msgid ""
+"PostgreSQL is a powerful object-relational database system.  It is fully\n"
+"ACID compliant, has full support for foreign keys, joins, views, triggers, and\n"
+"stored procedures (in multiple languages).  It includes most SQL:2008 data\n"
+"types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and\n"
+"TIMESTAMP.  It also supports storage of binary large objects, including\n"
+"pictures, sounds, or video."
+msgstr ""
+
+#: gnu/packages/databases.scm:203
+msgid "Manipulate plain text files as databases"
+msgstr ""
+
+#: gnu/packages/databases.scm:205
+msgid ""
+"GNU Recutils is a set of tools and libraries for creating and\n"
+"manipulating text-based, human-editable databases.  Despite being text-based,\n"
+"databases created with Recutils carry all of the expected features such as\n"
+"unique fields, primary keys, time stamps and more.  Many different field\n"
+"types are supported, as is encryption."
+msgstr ""
+
+#: gnu/packages/databases.scm:243
+msgid "The SQLite database management system"
+msgstr ""
+
+#: gnu/packages/databases.scm:245
+msgid ""
+"SQLite is a software library that implements a self-contained, serverless,\n"
+"zero-configuration, transactional SQL database engine.  SQLite is the most\n"
+"widely deployed SQL database engine in the world.  The source code for SQLite\n"
+"is in the public domain."
+msgstr ""
+
+#: gnu/packages/databases.scm:280
+msgid "Trivial database"
+msgstr ""
+
+#: gnu/packages/databases.scm:282
+msgid ""
+"TDB is a Trivial Database.  In concept, it is very much like GDBM,\n"
+"and BSD's DB except that it allows multiple simultaneous writers and uses\n"
+"locking internally to keep writers from trampling on each other.  TDB is also\n"
+"extremely small."
+msgstr ""
+
+#: gnu/packages/databases.scm:301
+msgid "Database independent interface for Perl"
+msgstr ""
+
+#: gnu/packages/databases.scm:302
+msgid "This package provides an database interface for Perl."
+msgstr ""
+
+#: gnu/packages/databases.scm:321
+msgid "SQlite interface for Perl"
+msgstr ""
+
+#: gnu/packages/databases.scm:322
+msgid ""
+"DBD::SQLite is a Perl DBI driver for SQLite, that includes\n"
+"the entire thing in the distribution.  So in order to get a fast transaction\n"
+"capable RDBMS working for your Perl project you simply have to install this\n"
+"module, and nothing else."
+msgstr ""
+
+#: gnu/packages/databases.scm:342
+msgid "Data source abstraction library"
+msgstr ""
+
+#: gnu/packages/databases.scm:343
+msgid ""
+"Unixodbc is a library providing an API with which to access\n"
+"data sources.  Data sources include SQL Servers and any software with an ODBC\n"
+"Driver."
+msgstr ""
+
+#: gnu/packages/gcc.scm:254
+msgid "GNU Compiler Collection"
+msgstr ""
+
+#: gnu/packages/gcc.scm:256
+msgid ""
+"GCC is the GNU Compiler Collection.  It provides compiler front-ends\n"
+"for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and\n"
+"Go.  It also includes runtime support libraries for these languages."
+msgstr ""
+
+#: gnu/packages/gcc.scm:340
+msgid "Manipulating sets and relations of integer points bounded by linear constraints"
+msgstr ""
+
+#: gnu/packages/gcc.scm:343
+msgid ""
+"isl is a library for manipulating sets and relations of integer points\n"
+"bounded by linear constraints.  Supported operations on sets include\n"
+"intersection, union, set difference, emptiness check, convex hull, (integer)\n"
+"affine hull, integer projection, computing the lexicographic minimum using\n"
+"parametric integer programming, coalescing and parametric vertex\n"
+"enumeration.  It also includes an ILP solver based on generalized basis\n"
+"reduction, transitive closures on maps (which may encode infinite graphs),\n"
+"dependence analysis and bounds on piecewise step-polynomials."
+msgstr ""
+
+#: gnu/packages/gcc.scm:375
+msgid "Library to generate code for scanning Z-polyhedra"
+msgstr ""
+
+#: gnu/packages/gcc.scm:377
+msgid ""
+"CLooG is a free software library to generate code for scanning\n"
+"Z-polyhedra.  That is, it finds a code (e.g., in C, FORTRAN...) that\n"
+"reaches each integral point of one or more parameterized polyhedra.\n"
+"CLooG has been originally written to solve the code generation problem\n"
+"for optimizing compilers based on the polytope model.  Nevertheless it\n"
+"is used now in various area e.g., to build control automata for\n"
+"high-level synthesis or to find the best polynomial approximation of a\n"
+"function.  CLooG may help in any situation where scanning polyhedra\n"
+"matters.  While the user has full control on generated code quality,\n"
+"CLooG is designed to avoid control overhead and to produce a very\n"
+"effective code."
+msgstr ""
+
+#: gnu/packages/gettext.scm:74
+msgid "Tools and documentation for translation"
+msgstr ""
+
+#: gnu/packages/gettext.scm:76
+msgid ""
+"GNU Gettext is a package providing a framework for translating the\n"
+"textual output of programs into multiple languages.  It provides translators\n"
+"with the means to create message catalogs, as well as an Emacs mode to work\n"
+"with them, and a runtime library to load translated messages from the\n"
+"catalogs.  Nearly all GNU packages use Gettext."
+msgstr ""
+
+#: gnu/packages/guile.scm:100 gnu/packages/guile.scm:163
+msgid "Scheme implementation intended especially for extensions"
+msgstr ""
+
+#: gnu/packages/guile.scm:102 gnu/packages/guile.scm:165
+msgid ""
+"Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n"
+"official extension language of the GNU system.  It is an implementation of\n"
+"the Scheme language which can be easily embedded in other applications to\n"
+"provide a convenient means of extending the functionality of the application\n"
+"without requiring the source code to be rewritten."
+msgstr ""
+
+#: gnu/packages/guile.scm:208
+msgid "Framework for building readers for GNU Guile"
+msgstr ""
+
+#: gnu/packages/guile.scm:210
+msgid ""
+"Guile-Reader is a simple framework for building readers for GNU Guile.\n"
+"\n"
+"The idea is to make it easy to build procedures that extend Guile’s read\n"
+"procedure.  Readers supporting various syntax variants can easily be written,\n"
+"possibly by re-using existing “token readers” of a standard Scheme\n"
+"readers.  For example, it is used to implement Skribilo’s R5RS-derived\n"
+"document syntax.\n"
+"\n"
+"Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n"
+"hopefully more powerful and flexible (for instance, one may instantiate as\n"
+"many readers as needed)."
+msgstr ""
+
+#: gnu/packages/guile.scm:263
+msgid "Guile bindings to ncurses"
+msgstr ""
+
+#: gnu/packages/guile.scm:265
+msgid ""
+"guile-ncurses provides Guile language bindings for the ncurses\n"
+"library."
+msgstr ""
+
+#: gnu/packages/guile.scm:285
+msgid "Run jobs at scheduled times"
+msgstr ""
+
+#: gnu/packages/guile.scm:287
+msgid ""
+"GNU Mcron is a complete replacement for Vixie cron.  It is used to run\n"
+"tasks on a schedule, such as every hour or every Monday.  Mcron is written in\n"
+"Guile, so its configuration can be written in Scheme; the original cron\n"
+"format is also supported."
+msgstr ""
+
+#: gnu/packages/guile.scm:315
+msgid "Collection of useful Guile Scheme modules"
+msgstr ""
+
+#: gnu/packages/guile.scm:317
+msgid ""
+"Guile-Lib is intended as an accumulation place for pure-scheme Guile\n"
+"modules, allowing for people to cooperate integrating their generic Guile\n"
+"modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN\n"
+"for Guile\"."
+msgstr ""
+
+#: gnu/packages/guile.scm:348
+msgid "JSON module for Guile"
+msgstr ""
+
+#: gnu/packages/guile.scm:350
+msgid ""
+"Guile-json supports parsing and building JSON documents according to the\n"
+"http:://json.org specification.  These are the main features:\n"
+"- Strictly complies to http://json.org specification.\n"
+"- Build JSON documents programmatically via macros.\n"
+"- Unicode support for strings.\n"
+"- Allows JSON pretty printing."
+msgstr ""
+
+#: gnu/packages/guile.scm:381
+msgid "Create charts and graphs in Guile"
+msgstr ""
+
+#: gnu/packages/guile.scm:383
+msgid ""
+"Guile-Charting is a Guile Scheme library to create bar charts and graphs\n"
+"using the Cairo drawing library."
+msgstr ""
+
+#: gnu/packages/inkscape.scm:78
+msgid "Vector graphics editor"
+msgstr ""
+
+#: gnu/packages/inkscape.scm:79
+msgid ""
+"Inkscape is a vector graphics editor.  What sets Inkscape\n"
+"apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,\n"
+"as the native format."
+msgstr ""
+
+#: gnu/packages/linux.scm:131
+msgid "GNU Linux-Libre kernel headers"
+msgstr ""
+
+#: gnu/packages/linux.scm:132
+msgid "Headers of the Linux-Libre kernel."
+msgstr ""
+
+#: gnu/packages/linux.scm:163
+msgid "Tools for loading and managing Linux kernel modules"
+msgstr ""
+
+#: gnu/packages/linux.scm:165
+msgid ""
+"Tools for loading and managing Linux kernel modules, such as `modprobe',\n"
+"`insmod', `lsmod', and more."
+msgstr ""
+
+#: gnu/packages/linux.scm:296
+msgid "100% free redistribution of a cleaned Linux kernel"
+msgstr ""
+
+#: gnu/packages/linux.scm:298
+msgid ""
+"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.\n"
+"It has been modified to remove all non-free binary blobs."
+msgstr ""
+
+#: gnu/packages/linux.scm:341
+msgid "Pluggable authentication modules for Linux"
+msgstr ""
+
+#: gnu/packages/linux.scm:343
+msgid ""
+"A *Free* project to implement OSF's RFC 86.0.\n"
+"Pluggable authentication modules are small shared object files that can\n"
+"be used through the PAM API to perform tasks, like authenticating a user\n"
+"at login.  Local and dynamic reconfiguration are its key features"
+msgstr ""
+
+#: gnu/packages/linux.scm:370
+msgid "Small utilities that use the proc filesystem"
+msgstr ""
+
+#: gnu/packages/linux.scm:372
+msgid ""
+"This PSmisc package is a set of some small useful utilities that\n"
+"use the proc filesystem.  We're not about changing the world, but\n"
+"providing the system administrator with some help in common tasks."
+msgstr ""
+
+#: gnu/packages/linux.scm:416
+msgid "Collection of utilities for the Linux kernel"
+msgstr ""
+
+#: gnu/packages/linux.scm:418
+msgid "Util-linux is a random collection of utilities for the Linux kernel."
+msgstr ""
+
+#: gnu/packages/linux.scm:472
+msgid "Utilities that give information about processes"
+msgstr ""
+
+#: gnu/packages/linux.scm:474
+msgid ""
+"Procps is the package that has a bunch of small useful utilities\n"
+"that give information about processes using the Linux /proc file system.\n"
+"The package includes the programs ps, top, vmstat, w, kill, free,\n"
+"slabtop, and skill."
+msgstr ""
+
+#: gnu/packages/linux.scm:499
+msgid "Tools for working with USB devices, such as lsusb"
+msgstr ""
+
+#: gnu/packages/linux.scm:501
+msgid "Tools for working with USB devices, such as lsusb."
+msgstr ""
+
+#: gnu/packages/linux.scm:542
+msgid "Creating and checking ext2/ext3/ext4 file systems"
+msgstr ""
+
+#: gnu/packages/linux.scm:544
+msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems."
+msgstr ""
+
+#: gnu/packages/linux.scm:575
+msgid "Statically-linked fsck.* commands from e2fsprogs"
+msgstr ""
+
+#: gnu/packages/linux.scm:577
+msgid ""
+"This package provides statically-linked command of fsck.ext[234] taken\n"
+"from the e2fsprogs package.  It is meant to be used in initrds."
+msgstr ""
+
+#: gnu/packages/linux.scm:596
+msgid "System call tracer for Linux"
+msgstr ""
+
+#: gnu/packages/linux.scm:598
+msgid ""
+"strace is a system call tracer, i.e. a debugging tool which prints out a\n"
+"trace of all the system calls made by a another process/program."
+msgstr ""
+
+#: gnu/packages/linux.scm:617
+msgid "The Advanced Linux Sound Architecture libraries"
+msgstr ""
+
+#: gnu/packages/linux.scm:619 gnu/packages/linux.scm:661
+msgid ""
+"The Advanced Linux Sound Architecture (ALSA) provides audio and\n"
+"MIDI functionality to the Linux-based operating system."
+msgstr ""
+
+#: gnu/packages/linux.scm:659
+msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)"
+msgstr ""
+
+#: gnu/packages/linux.scm:683
+msgid "Program to configure the Linux IP packet filtering rules"
+msgstr ""
+
+#: gnu/packages/linux.scm:685
+msgid ""
+"iptables is the userspace command line program used to configure the\n"
+"Linux 2.4.x and later IPv4 packet filtering ruleset.  It is targeted towards\n"
+"system administrators.  Since Network Address Translation is also configured\n"
+"from the packet filter ruleset, iptables is used for this, too.  The iptables\n"
+"package also includes ip6tables.  ip6tables is used for configuring the IPv6\n"
+"packet filter."
+msgstr ""
+
+#: gnu/packages/linux.scm:733
+msgid "Utilities for controlling TCP/IP networking and traffic in Linux"
+msgstr ""
+
+#: gnu/packages/linux.scm:735
+msgid ""
+"Iproute2 is a collection of utilities for controlling TCP/IP\n"
+"networking and traffic with the Linux kernel.\n"
+"\n"
+"Most network configuration manuals still refer to ifconfig and route as the\n"
+"primary network configuration tools, but ifconfig is known to behave\n"
+"inadequately in modern network environments.  They should be deprecated, but\n"
+"most distros still include them.  Most network configuration systems make use\n"
+"of ifconfig and thus provide a limited feature set.  The /etc/net project aims\n"
+"to support most modern network technologies, as it doesn't use ifconfig and\n"
+"allows a system administrator to make use of all iproute2 features, including\n"
+"traffic control.\n"
+"\n"
+"iproute2 is usually shipped in a package called iproute or iproute2 and\n"
+"consists of several tools, of which the most important are ip and tc.  ip\n"
+"controls IPv4 and IPv6 configuration and tc stands for traffic control.  Both\n"
+"tools print detailed usage messages and are accompanied by a set of\n"
+"manpages."
+msgstr ""
+
+#: gnu/packages/linux.scm:827
+msgid "Tools for controlling the network subsystem in Linux"
+msgstr ""
+
+#: gnu/packages/linux.scm:829
+msgid ""
+"This package includes the important tools for controlling the network\n"
+"subsystem of the Linux kernel.  This includes arp, hostname, ifconfig,\n"
+"netstat, rarp and route.  Additionally, this package contains utilities\n"
+"relating to particular network hardware types (plipconfig, slattach) and\n"
+"advanced aspects of IP configuration (iptunnel, ipmaddr)."
+msgstr ""
+
+#: gnu/packages/linux.scm:862
+msgid "Library for working with POSIX capabilities"
+msgstr ""
+
+#: gnu/packages/linux.scm:864
+msgid ""
+"Libcap2 provides a programming interface to POSIX capabilities on\n"
+"Linux-based operating systems."
+msgstr ""
+
+#: gnu/packages/linux.scm:896
+msgid "Manipulate Ethernet bridges"
+msgstr ""
+
+#: gnu/packages/linux.scm:898
+msgid ""
+"Utilities for Linux's Ethernet bridging facilities.  A bridge is a way\n"
+"to connect two Ethernet segments together in a protocol independent way.\n"
+"Packets are forwarded based on Ethernet address, rather than IP address (like\n"
+"a router).  Since forwarding is done at Layer 2, all protocols can go\n"
+"transparently through a bridge."
+msgstr ""
+
+#: gnu/packages/linux.scm:920
+msgid "NetLink protocol library suite"
+msgstr ""
+
+#: gnu/packages/linux.scm:922
+msgid ""
+"The libnl suite is a collection of libraries providing APIs to netlink\n"
+"protocol based Linux kernel interfaces.  Netlink is an IPC mechanism primarly\n"
+"between the kernel and user space processes.  It was designed to be a more\n"
+"flexible successor to ioctl to provide mainly networking related kernel\n"
+"configuration and monitoring interfaces."
+msgstr ""
+
+#: gnu/packages/linux.scm:955
+msgid "Analyze power consumption on Intel-based laptops"
+msgstr ""
+
+#: gnu/packages/linux.scm:957
+msgid ""
+"PowerTOP is a Linux tool to diagnose issues with power consumption and\n"
+"power management.  In addition to being a diagnostic tool, PowerTOP also has\n"
+"an interactive mode where the user can experiment various power management\n"
+"settings for cases where the operating system has not enabled these\n"
+"settings."
+msgstr ""
+
+#: gnu/packages/linux.scm:979
+msgid "Audio mixer for X and the console"
+msgstr ""
+
+#: gnu/packages/linux.scm:981
+msgid ""
+"Aumix adjusts an audio mixer from X, the console, a terminal,\n"
+"the command line or a script."
+msgstr ""
+
+#: gnu/packages/linux.scm:1005
+msgid "Displays the IO activity of running processes"
+msgstr ""
+
+#: gnu/packages/linux.scm:1007
+msgid ""
+"Iotop is a Python program with a top like user interface to show the\n"
+"processes currently causing I/O."
+msgstr ""
+
+#: gnu/packages/linux.scm:1058
+msgid "Support file systems implemented in user space"
+msgstr ""
+
+#: gnu/packages/linux.scm:1060
+msgid ""
+"As a consequence of its monolithic design, file system code for Linux\n"
+"normally goes into the kernel itself---which is not only a robustness issue,\n"
+"but also an impediment to system extensibility.  FUSE, for \"file systems in\n"
+"user space\", is a kernel module and user-space library that tries to address\n"
+"part of this problem by allowing users to run file system implementations as\n"
+"user-space processes."
+msgstr ""
+
+#: gnu/packages/linux.scm:1085
+msgid "User-space union file system"
+msgstr ""
+
+#: gnu/packages/linux.scm:1087
+msgid ""
+"UnionFS-FUSE is a flexible union file system implementation in user\n"
+"space, using the FUSE library.  Mounting a union file system allows you to\n"
+"\"aggregate\" the contents of several directories into a single mount point.\n"
+"UnionFS-FUSE additionally supports copy-on-write."
+msgstr ""
+
+#: gnu/packages/linux.scm:1112
+msgid "User-space union file system (statically linked)"
+msgstr ""
+
+#: gnu/packages/linux.scm:1154
+msgid "Mount remote file systems over SSH"
+msgstr ""
+
+#: gnu/packages/linux.scm:1156
+msgid ""
+"This is a file system client based on the SSH File Transfer Protocol.\n"
+"Since most SSH servers already support this protocol it is very easy to set\n"
+"up: on the server side there's nothing to do; on the client side mounting the\n"
+"file system is as easy as logging into the server with an SSH client."
+msgstr ""
+
+#: gnu/packages/linux.scm:1204
+msgid "Tools for non-uniform memory access (NUMA) machines"
+msgstr ""
+
+#: gnu/packages/linux.scm:1206
+msgid ""
+"NUMA stands for Non-Uniform Memory Access, in other words a system whose\n"
+"memory is not all in one place.  The numactl program allows you to run your\n"
+"application program on specific CPU's and memory nodes.  It does this by\n"
+"supplying a NUMA memory policy to the operating system before running your\n"
+"program.\n"
+"\n"
+"The package contains other commands, such as numademo, numastat and memhog.\n"
+"The numademo command provides a quick overview of NUMA performance on your\n"
+"system."
+msgstr ""
+
+#: gnu/packages/linux.scm:1269
+msgid "Linux keyboard utilities and keyboard maps"
+msgstr ""
+
+#: gnu/packages/linux.scm:1271
+msgid ""
+"This package contains keytable files and keyboard utilities compatible\n"
+"for systems using the Linux kernel.  This includes commands such as\n"
+"'loadkeys', 'setfont', 'kbdinfo', and 'chvt'."
+msgstr ""
+
+#: gnu/packages/linux.scm:1290
+msgid "Monitor file accesses"
+msgstr ""
+
+#: gnu/packages/linux.scm:1292
+msgid ""
+"The inotify-tools packages provides a C library and command-line tools\n"
+"to use Linux' inotify mechanism, which allows file accesses to be monitored."
+msgstr ""
+
+#: gnu/packages/linux.scm:1330
+msgid "Kernel module tools"
+msgstr ""
+
+#: gnu/packages/linux.scm:1331
+msgid ""
+"Kmod is a set of tools to handle common tasks with Linux\n"
+"kernel modules like insert, remove, list, check properties, resolve\n"
+"dependencies and aliases.\n"
+"\n"
+"These tools are designed on top of libkmod, a library that is shipped with\n"
+"kmod.  The aim is to be compatible with tools, configurations and indices\n"
+"from the module-init-tools project."
+msgstr ""
+
+#: gnu/packages/linux.scm:1380
+msgid "Userspace device management"
+msgstr ""
+
+#: gnu/packages/linux.scm:1381
+msgid ""
+"Udev is a daemon which dynamically creates and removes\n"
+"device nodes from /dev/, handles hotplug events and loads drivers at boot\n"
+"time."
+msgstr ""
+
+#: gnu/packages/linux.scm:1470
+msgid "Logical volume management for Linux"
+msgstr ""
+
+#: gnu/packages/linux.scm:1472
+msgid ""
+"LVM2 is the logical volume management tool set for Linux-based systems.\n"
+"This package includes the user-space libraries and tools, including the device\n"
+"mapper.  Kernel components are part of Linux-libre."
+msgstr ""
+
+#: gnu/packages/linux.scm:1499
+msgid "Tools for manipulating Linux Wireless Extensions"
+msgstr ""
+
+#: gnu/packages/linux.scm:1500
+msgid ""
+"Wireless Tools are used to manipulate the Linux Wireless\n"
+"Extensions.  The Wireless Extension is an interface allowing you to set\n"
+"Wireless LAN specific parameters and get the specific stats."
+msgstr ""
+
+#: gnu/packages/linux.scm:1572
+msgid "Utilities to read temperature/voltage/fan sensors"
+msgstr ""
+
+#: gnu/packages/linux.scm:1574
+msgid ""
+"Lm-sensors is a hardware health monitoring package for Linux.  It allows\n"
+"you to access information from temperature, voltage, and fan speed sensors.\n"
+"It works with most newer systems."
+msgstr ""
+
+#: gnu/packages/linux.scm:1609
+msgid "Hardware health information viewer"
+msgstr ""
+
+#: gnu/packages/linux.scm:1611
+msgid ""
+"Xsensors reads data from the libsensors library regarding hardware\n"
+"health such as temperature, voltage and fan speed and displays the information\n"
+"in a digital read-out."
+msgstr ""
+
+#: gnu/packages/linux.scm:1654
+msgid "Linux profiling with performance counters"
+msgstr ""
+
+#: gnu/packages/linux.scm:1656
+msgid ""
+"perf is a tool suite for profiling using hardware performance counters,\n"
+"with support in the Linux kernel.  perf can instrument CPU performance\n"
+"counters, tracepoints, kprobes, and uprobes (dynamic tracing).  It is capable\n"
+"of lightweight profiling.  This package contains the user-land tools and in\n"
+"particular the 'perf' command."
+msgstr ""
+
+#: gnu/packages/lout.scm:109
+msgid "Document layout system"
+msgstr ""
+
+#: gnu/packages/lout.scm:111
+msgid ""
+"The Lout document formatting system reads a high-level description of\n"
+"a document similar in style to LaTeX and produces a PostScript or plain text\n"
+"output file.\n"
+"\n"
+"Lout offers an unprecedented range of advanced features, including optimal\n"
+"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n"
+"inclusion and generation, equation formatting, tables, diagrams, rotation and\n"
+"scaling, sorted indexes, bibliographic databases, running headers and\n"
+"odd-even pages, automatic cross referencing, multilingual documents including\n"
+"hyphenation (most European languages are supported), formatting of computer\n"
+"programs, and much more, all ready to use.  Furthermore, Lout is easily\n"
+"extended with definitions which are very much easier to write than troff of\n"
+"TeX macros because Lout is a high-level, purely functional language, the\n"
+"outcome of an eight-year research project that went back to the\n"
+"beginning."
+msgstr ""
+
+#: gnu/packages/mpd.scm:62
+msgid "Music Player Daemon client library"
+msgstr ""
+
+#: gnu/packages/mpd.scm:63
+msgid ""
+"A stable, documented, asynchronous API library for\n"
+"interfacing MPD in the C, C++ & Objective C languages."
+msgstr ""
+
+#: gnu/packages/mpd.scm:121
+msgid "Music Player Daemon"
+msgstr ""
+
+#: gnu/packages/mpd.scm:122
+msgid ""
+"Music Player Daemon (MPD) is a flexible, powerful,\n"
+"server-side application for playing music.  Through plugins and libraries it\n"
+"can play a variety of sound files while being controlled by its network\n"
+"protocol."
+msgstr ""
+
+#: gnu/packages/mpd.scm:147
+msgid "Curses Music Player Daemon client"
+msgstr ""
+
+#: gnu/packages/mpd.scm:148
+msgid ""
+"ncmpc is a fully featured MPD client, which runs in a\n"
+"terminal using ncurses."
+msgstr ""
+
+#: gnu/packages/mpd.scm:169
+msgid "Featureful ncurses based MPD client inspired by ncmpc"
+msgstr ""
+
+#: gnu/packages/mpd.scm:170
+msgid ""
+"Ncmpcpp is an mpd client with a UI very similar to ncmpc,\n"
+"but it provides new useful features such as support for regular expressions\n"
+"for library searches, extended song format, items filtering, the ability to\n"
+"sort playlists, and a local filesystem browser."
+msgstr ""
+
+#: gnu/packages/pdf.scm:79
+msgid "PDF rendering library"
+msgstr ""
+
+#: gnu/packages/pdf.scm:81
+msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
+msgstr ""
+
+#: gnu/packages/pdf.scm:124
+msgid "Viewer for PDF files based on the Motif toolkit"
+msgstr ""
+
+#: gnu/packages/pdf.scm:126
+msgid "Xpdf is a viewer for Portable Document Format (PDF) files"
+msgstr ""
+
+#: gnu/packages/pdf.scm:154
+msgid "Tools to work with the PDF file format"
+msgstr ""
+
+#: gnu/packages/pdf.scm:156
+msgid ""
+"PoDoFo is a C++ library and set of command-line tools to work with the\n"
+"PDF file format.  It can parse PDF files and load them into memory, and makes\n"
+"it easy to modify them and write the changes to disk.  It is primarily useful\n"
+"for applications that wish to do lower level manipulation of PDF, such as\n"
+"extracting content or merging files."
+msgstr ""
+
+#: gnu/packages/pdf.scm:217
+msgid "Lightweight PDF viewer and toolkit"
+msgstr ""
+
+#: gnu/packages/pdf.scm:219
+msgid ""
+"MuPDF is a C library that implements a PDF and XPS parsing and\n"
+"rendering engine.  It is used primarily to render pages into bitmaps,\n"
+"but also provides support for other operations such as searching and\n"
+"listing the table of contents and hyperlinks.\n"
+"\n"
+"The library ships with a rudimentary X11 viewer, and a set of command\n"
+"line tools for batch rendering (pdfdraw), examining the file structure\n"
+"(pdfshow), and rewriting files (pdfclean)."
+msgstr ""
+
+#: gnu/packages/ratpoison.scm:60
+msgid "Simple mouse-free tiling window manager"
+msgstr ""
+
+#: gnu/packages/ratpoison.scm:62
+msgid ""
+"Ratpoison is a simple window manager with no fat library\n"
+"dependencies, no fancy graphics, no window decorations, and no\n"
+"rodent dependence.  It is largely modelled after GNU Screen which\n"
+"has done wonders in the virtual terminal market.\n"
+"\n"
+"The screen can be split into non-overlapping frames.  All windows\n"
+"are kept maximized inside their frames to take full advantage of\n"
+"your precious screen real estate.\n"
+"\n"
+"All interaction with the window manager is done through keystrokes.\n"
+"Ratpoison has a prefix map to minimize the key clobbering that\n"
+"cripples Emacs and other quality pieces of software."
+msgstr ""
+
+#: gnu/packages/scanner.scm:52
+msgid "Raster image scanner library and drivers"
+msgstr ""
+
+#: gnu/packages/scanner.scm:53
+msgid ""
+"SANE stands for \"Scanner Access Now Easy\" and is an API\n"
+"proving access to any raster image scanner hardware (flatbed scanner,\n"
+"hand-held scanner, video- and still-cameras, frame-grabbers, etc.).  The\n"
+"package contains the library and drivers."
+msgstr ""
+
+#: gnu/packages/scheme.scm:126
+msgid "A Scheme implementation with integrated editor and debugger"
+msgstr ""
+
+#: gnu/packages/scheme.scm:128
+msgid ""
+"GNU/MIT Scheme is an implementation of the Scheme programming\n"
+"language.  It provides an interpreter, a compiler and a debugger.  It also\n"
+"features an integrated Emacs-like editor and a large runtime library."
+msgstr ""
+
+#: gnu/packages/scheme.scm:208
+msgid "Efficient Scheme compiler"
+msgstr ""
+
+#: gnu/packages/scheme.scm:210
+msgid ""
+"Bigloo is a Scheme implementation devoted to one goal: enabling\n"
+"Scheme based programming style where C(++) is usually\n"
+"required.  Bigloo attempts to make Scheme practical by offering\n"
+"features usually presented by traditional programming languages\n"
+"but not offered by Scheme and functional programming.  Bigloo\n"
+"compiles Scheme modules.  It delivers small and fast stand alone\n"
+"binary executables.  Bigloo enables full connections between\n"
+"Scheme and C programs and between Scheme and Java programs."
+msgstr ""
+
+#: gnu/packages/scheme.scm:281
+msgid "Multi-tier programming language for the Web 2.0"
+msgstr ""
+
+#: gnu/packages/scheme.scm:283
+msgid ""
+"HOP is a multi-tier programming language for the Web 2.0 and the\n"
+"so-called diffuse Web.  It is designed for programming interactive web\n"
+"applications in many fields such as multimedia (web galleries, music players,\n"
+"...), ubiquitous and house automation (SmartPhones, personal appliance),\n"
+"mashups, office (web agendas, mail clients, ...), etc."
+msgstr ""
+
+#: gnu/packages/scheme.scm:323
+msgid "R5RS Scheme implementation that compiles native code via C"
+msgstr ""
+
+#: gnu/packages/scheme.scm:325
+msgid ""
+"CHICKEN is a compiler for the Scheme programming language.  CHICKEN\n"
+"produces portable and efficient C, supports almost all of the R5RS Scheme\n"
+"language standard, and includes many enhancements and extensions."
+msgstr ""
+
+#: gnu/packages/scheme.scm:344
+msgid "Scheme implementation using a bytecode interpreter"
+msgstr ""
+
+#: gnu/packages/scheme.scm:346
+msgid ""
+"Scheme 48 is an implementation of Scheme based on a byte-code\n"
+"interpreter and is designed to be used as a testbed for experiments in\n"
+"implementation techniques and as an expository tool."
+msgstr ""
+
+#: gnu/packages/scheme.scm:419
+msgid "Implementation of Scheme and related languages"
+msgstr ""
+
+#: gnu/packages/scheme.scm:421
+msgid ""
+"Racket is an implementation of the Scheme programming language (R5RS and\n"
+"R6RS) and related languages, such as Typed Racket.  It features a compiler and\n"
+"a virtual machine with just-in-time native compilation, as well as a large set\n"
+"of libraries."
+msgstr ""
+
+#: gnu/packages/wordnet.scm:79
+msgid "Lexical database for the English language"
+msgstr ""
+
+#: gnu/packages/wordnet.scm:81
+msgid ""
+"WordNet® is a large lexical database of English.  Nouns, verbs,\n"
+"adjectives and adverbs are grouped into sets of cognitive synonyms\n"
+"(synsets), each expressing a distinct concept.  Synsets are interlinked by\n"
+"means of conceptual-semantic and lexical relations.  The resulting network of\n"
+"meaningfully related words and concepts can be navigated with the browser.\n"
+"WordNet is also freely and publicly available for download.  WordNet's\n"
+"structure makes it a useful tool for computational linguistics and natural\n"
+"language processing."
+msgstr ""
+
+#: gnu/packages/zip.scm:56
+msgid "Compression and file packing utility"
+msgstr ""
+
+#: gnu/packages/zip.scm:58
+msgid ""
+"Zip is a compression and file packaging/archive utility.  Zip is useful\n"
+"for packaging a set of files for distribution, for archiving files, and for\n"
+"saving disk space by temporarily compressing unused files or directories.\n"
+"Zip puts one or more compressed files into a single ZIP archive, along with\n"
+"information about the files (name, path, date, time of last modification,\n"
+"protection, and check information to verify file integrity).  An entire\n"
+"directory structure can be packed into a ZIP archive with a single command.\n"
+"\n"
+"Zip has one compression method (deflation) and can also store files without\n"
+"compression.  Zip automatically chooses the better of the two for each file.\n"
+"Compression ratios of 2:1 to 3:1 are common for text files."
+msgstr ""
+
+#: gnu/packages/zip.scm:98
+msgid "Decompression and file extraction utility"
+msgstr ""
+
+#: gnu/packages/zip.scm:100
+msgid ""
+"UnZip is an extraction utility for archives compressed in .zip format,\n"
+"also called \"zipfiles\".\n"
+"\n"
+"UnZip lists, tests, or extracts files from a .zip archive.  The default\n"
+"behaviour (with no options) is to extract into the current directory, and\n"
+"subdirectories below it, all files from the specified zipfile.  UnZip\n"
+"recreates the stored directory structure by default."
+msgstr ""
+
+#: gnu/packages/zip.scm:134
+msgid "Library for accessing zip files"
+msgstr ""
+
+#: gnu/packages/zip.scm:136
+msgid "ZZipLib is a library based on zlib for accessing zip files."
+msgstr ""
+
+#: gnu/packages/zip.scm:154
+msgid "Provides an interface to ZIP archive files"
+msgstr ""
+
+#: gnu/packages/zip.scm:155
+msgid ""
+"The Archive::Zip module allows a Perl program to create,\n"
+"manipulate, read, and write Zip archive files."
+msgstr ""
+
+#: gnu/packages/zsh.scm:63
+msgid "Powerful shell for interactive use and scripting"
+msgstr ""
+
+#: gnu/packages/zsh.scm:64
+msgid ""
+"The Z shell (zsh) is a Unix shell that can be used\n"
+"as an interactive login shell and as a powerful command interpreter\n"
+"for shell scripting.  Zsh can be thought of as an extended Bourne shell\n"
+"with a large number of improvements, including some features of bash,\n"
+"ksh, and tcsh."
+msgstr ""
diff --git a/test-env.in b/test-env.in
index 39b205dc8a..f66a0db555 100644
--- a/test-env.in
+++ b/test-env.in
@@ -99,8 +99,8 @@ unset LANGUAGE
 LC_MESSAGES=C
 export LC_MESSAGES
 
-# Ignore user modules.
-unset GUIX_PACKAGE_PATH
+# Ignore user settings.
+unset GUIX_PACKAGE_PATH GUIX_BUILD_OPTIONS
 
 storedir="@storedir@"
 prefix="@prefix@"
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
index 27b3fdc39e..836c45e776 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -84,3 +84,13 @@ guix build -e "(begin
 # Running a gexp.
 guix build -e '#~(mkdir #$output)' -d
 guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv'
+
+# Using 'GUIX_BUILD_OPTIONS'.
+GUIX_BUILD_OPTIONS="--dry-run"
+export GUIX_BUILD_OPTIONS
+
+guix build emacs
+
+GUIX_BUILD_OPTIONS="--something-completely-crazy"
+if guix build emacs;
+then false; else true; fi
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 3e0e36fa23..f4e091a5a2 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -289,3 +289,16 @@ GUIX_PACKAGE_PATH="$module_dir"
 export GUIX_PACKAGE_PATH
 guix package -A emacs-foo-bar | grep 42
 guix package -i emacs-foo-bar-42 -n
+unset GUIX_PACKAGE_PATH
+
+# Using 'GUIX_BUILD_OPTIONS'.
+
+available="`guix package -A | sort`"
+GUIX_BUILD_OPTIONS="--dry-run"
+export GUIX_BUILD_OPTIONS
+
+# Make sure $GUIX_BUILD_OPTIONS is not simply appended to the command-line,
+# which would break 'guix package -A' and similar.
+available2="`guix package -A | sort`"
+test "$available2" = "$available"
+guix package -I