summary refs log tree commit diff
path: root/gnu
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 /gnu
parent2ed11b3a3e05549ed6ef8a604464f424c0eeae1c (diff)
parent45c5b47b96a238c764c2d32966267f7f897bcc3d (diff)
downloadguix-c4a1b6c2ba479c6abcd22cab6a1fcd560469e986.tar.gz
Merge branch 'master' into 'core-updates'.
Diffstat (limited to 'gnu')
-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
82 files changed, 4674 insertions, 618 deletions
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"))