summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/audio.scm172
-rw-r--r--gnu/packages/fonts.scm56
-rw-r--r--gnu/packages/glib.scm6
-rw-r--r--gnu/packages/gnupg.scm10
-rw-r--r--gnu/packages/gtk.scm8
-rw-r--r--gnu/packages/linux.scm4
-rw-r--r--gnu/packages/lisp.scm49
-rw-r--r--gnu/packages/mail.scm31
-rw-r--r--gnu/packages/man.scm27
-rw-r--r--gnu/packages/mpd.scm62
-rw-r--r--gnu/packages/python.scm51
-rw-r--r--gnu/packages/web.scm7
-rw-r--r--gnu/packages/wget.scm10
-rw-r--r--gnu/packages/xdisorg.scm33
-rw-r--r--gnu/packages/xfce.scm72
-rw-r--r--gnu/services/xorg.scm12
16 files changed, 483 insertions, 127 deletions
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 42449e89c9..91d78b81a5 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -53,6 +53,40 @@
   #:use-module (gnu packages xml)
   #:use-module (srfi srfi-1))
 
+(define-public alsa-modular-synth
+  (package
+    (name "alsa-modular-synth")
+    (version "2.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/alsamodular/ams-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1nb7qzzqlqa2x8h797jbwi18ihnfkxqg9lyi0c4nvf8ybwzxkzd2"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ;; We cannot use zita-alsa-pcmi (the successor of clalsadrv) due to
+       ;; license incompatibility.
+       ("clalsadrv" ,clalsadrv)
+       ("fftw" ,fftw)
+       ("jack" ,jack-1)
+       ("ladspa" ,ladspa)
+       ("liblo" ,liblo)
+       ("qt" ,qt-4)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://alsamodular.sourceforge.net/")
+    (synopsis "Realtime modular synthesizer and effect processor")
+    (description
+     "AlsaModularSynth is a digital implementation of a classical analog
+modular synthesizer system.  It uses virtual control voltages to control the
+parameters of the modules.  The control voltages which control the frequency
+e.g. of the VCO (Voltage Controlled Oscillator) and VCF (Voltage Controlled
+Filter) modules follow the convention of 1V / Octave.")
+    (license license:gpl2)))
+
 (define-public aubio
   (package
     (name "aubio")
@@ -199,6 +233,51 @@ bass section with five drawbars.  A standalone JACK application and LV2
 plugins are provided.")
     (license license:gpl2)))
 
+(define-public clalsadrv
+  (package
+    (name "clalsadrv")
+    (version "2.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://kokkinizita.linuxaudio.org"
+                    "/linuxaudio/downloads/clalsadrv-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "libs/Makefile"
+                  (("/sbin/ldconfig") "true")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (alist-cons-after
+        'unpack
+        'enter-directory
+        (lambda _ (chdir "libs"))
+        (alist-cons-after
+         'install
+         'install-symlink
+         (lambda _
+           (symlink "libclalsadrv.so"
+                    (string-append (assoc-ref %outputs "out")
+                                   "/lib/libclalsadrv.so.2")))
+         ;; no configure script
+         (alist-delete 'configure %standard-phases)))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftw" ,fftw)))
+    (home-page "http://kokkinizita.linuxaudio.org")
+    (synopsis "C++ wrapper around the ALSA API")
+    (description
+     "clalsadrv is a C++ wrapper around the ALSA API simplifying access to
+ALSA PCM devices.")
+    (license license:gpl2+)))
+
 (define-public freepats
   (package
     (name "freepats")
@@ -499,6 +578,52 @@ add functionality to support the needs of increasingly powerful audio
 software.")
     (license license:isc)))
 
+(define-public lv2-mda-piano
+  (package
+    (name "lv2-mda-piano")
+    (version "0.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitorious.org/lv2-synths/lv2-mdametapiano.git")
+                    (commit version)))
+              (sha256
+               (base32
+                "07lywf6lpfpndg3i9w752mmlg2hgn1bwp23h8b0mdj6awh67abqd"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list
+                     "TYPE=mdaPiano"
+                     (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:tests? #f ; no check target
+       #:phases (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("lv2" ,lv2)
+       ("lvtk" ,lvtk)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "LV2_PATH")
+            (files '("lib/lv2")))))
+    (home-page "http://elephly.net/lv2/mdapiano.html")
+    (synopsis "LV2 port of the mda Piano plugin")
+    (description "An LV2 port of the mda Piano VSTi.")
+    (license license:gpl3+)))
+
+(define-public lv2-mda-epiano
+  (package (inherit lv2-mda-piano)
+    (name "lv2-mda-epiano")
+    (arguments
+     `(#:make-flags (list
+                     "TYPE=mdaEPiano"
+                     (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:tests? #f ; no check target
+       #:phases (alist-delete 'configure %standard-phases)))
+    (home-page "http://elephly.net/lv2/mdaepiano.html")
+    (synopsis "LV2 port of the mda EPiano plugin")
+    (description "An LV2 port of the mda EPiano VSTi.")))
+
 (define-public lvtk
   (package
     (name "lvtk")
@@ -895,3 +1020,50 @@ portions of LAME.")
 to record and/or play sound using a callback function or a blocking read/write
 interface.")
     (license license:expat)))
+
+(define-public zita-alsa-pcmi
+  (package
+    (name "zita-alsa-pcmi")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://kokkinizita.linuxaudio.org"
+                    "/linuxaudio/downloads/zita-alsa-pcmi-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* "libs/Makefile"
+                  (("ldconfig") "true")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (alist-cons-after
+        'unpack
+        'enter-directory
+        (lambda _ (chdir "libs"))
+        (alist-cons-after
+         'install
+         'install-symlink
+         (lambda _
+           (symlink "libzita-alsa-pcmi.so"
+                    (string-append (assoc-ref %outputs "out")
+                                   "/lib/libzita-alsa-pcmi.so.0")))
+         ;; no configure script
+         (alist-delete 'configure %standard-phases)))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fftw" ,fftw)))
+    (home-page "http://kokkinizita.linuxaudio.org")
+    (synopsis "C++ wrapper around the ALSA API")
+    (description
+     "Zita-alsa-pcmi is a C++ wrapper around the ALSA API.  It provides easy
+access to ALSA PCM devices, taking care of the many functions required to
+open, initialise and use a hw: device in mmap mode, and providing floating
+point audio data.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 94993f0d08..77abc2b700 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -303,3 +304,58 @@ The Liberation Fonts are sponsored by Red Hat.")
     (description "Terminus Font is a clean, fixed width bitmap font, designed
 for long (8 and more hours per day) work with computers.")
     (license license:silofl1.1)))
+
+(define-public font-adobe-source-han-sans
+  (package
+    (name "font-adobe-source-han-sans")
+    (version "1.001R")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/adobe-fonts/source-han-sans/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append "source-han-sans-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0cwz3d8jancl0a7vbjxhnh1vgwsjba62lahfjya9yrjkp1ndxlap"))))
+    (outputs '("out"                 ; OpenType/CFF Collection (OTC), 119 MiB.
+               "cn" "jp" "kr" "tw")) ; Region-specific Subset OpenType/CFF.
+    (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"))
+               (install-opentype-fonts
+                (lambda (fonts-dir out)
+                  (copy-recursively fonts-dir
+                                    (string-append (assoc-ref %outputs out)
+                                                   "/share/fonts/opentype")))))
+           (setenv "PATH" PATH)
+           (system* tar "xvf" (assoc-ref %build-inputs "source"))
+           (chdir (string-append "source-han-sans-" ,version))
+           (install-opentype-fonts "OTC" "out")
+           (install-opentype-fonts "SubsetOTF/CN" "cn")
+           (install-opentype-fonts "SubsetOTF/JP" "jp")
+           (install-opentype-fonts "SubsetOTF/KR" "kr")
+           (install-opentype-fonts "SubsetOTF/TW" "tw")))))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("tar" ,tar)))
+    (home-page "https://github.com/adobe-fonts/source-han-sans")
+    (synopsis "Pan-CJK fonts")
+    (description
+     "Source Han Sans is a sans serif Pan-CJK font family that is offered in
+seven weights: ExtraLight, Light, Normal, Regular, Medium, Bold, and Heavy.
+And in several OpenType/CFF-based deployment configurations to accommodate
+various system requirements or limitations.  As the name suggests, Pan-CJK
+fonts are intended to support the characters necessary to render or display
+text in Simplified Chinese, Traditional Chinese, Japanese, and Korean.
+")
+    (license license:asl2.0)))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 66ee4fae97..a2c01e6440 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -212,11 +212,11 @@ dynamic loading, and an object system.")
                    "/gobject-introspection-" version ".tar.xz"))
              (sha256
               (base32 "1xwm7wmr9r9wp6xljb3bckx3a4siybavaq39w46ly7gpskxfv8iv"))
-             (patches (list 
+             (patches (list
                        (search-patch "gobject-introspection-cc.patch")
                        (search-patch
                         "gobject-introspection-girepository.patch")
-                       (search-patch 
+                       (search-patch
                         "gobject-introspection-absolute-shlib-path.patch")))))
     (build-system gnu-build-system)
     (inputs
@@ -466,7 +466,7 @@ useful for C++.")
     (inputs
      `(("python" ,python-2)
        ("glib"   ,glib)
-       ("python2-py2cairo" ,python2-py2cairo)
+       ("python2-pycairo" ,python2-pycairo)
        ("gobject-introspection" ,gobject-introspection)))
     (propagated-inputs
      `(("libffi" ,libffi)))             ;mentioned in pygobject-2.0.pc
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 63756a7925..b920f83c93 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
@@ -231,14 +231,14 @@ libskba (working with X.509 certificates and CMS data).")
 
 (define-public gnupg-2.0
   (package (inherit gnupg)
-    (version "2.0.26")
+    (version "2.0.27")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1q5qcl5panrvcvpwvz6nl9gayl5a6vwvfhgdcxqpmbl2qc6y6n3p"))))
+                "1wihx7dphacg9fy5wfj93h236lr1w5gwzh7ir3js37wi9cz6sr2p"))))
     (inputs
      `(("bzip2" ,guix:bzip2)
        ("curl" ,curl)
@@ -261,14 +261,14 @@ libskba (working with X.509 certificates and CMS data).")
 
 (define-public gnupg-1
   (package (inherit gnupg)
-    (version "1.4.18")
+    (version "1.4.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1233bppjvdpbbl425ii6l7xvgy0879ghhnmwrph5b6c4g3dgvddp"))))
+                "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz"))))
     (inputs
      `(("zlib" ,guix:zlib)
        ("bzip2" ,guix:bzip2)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 424b6e0f87..e33bcd5a27 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -533,7 +533,7 @@ graphics library with all of the benefits of Scheme: memory management,
 exceptions, macros, and a dynamic programming environment.")
     (license license:lgpl3+)))
 
-
+
 ;;;
 ;;; C++ bindings.
 ;;;
@@ -706,9 +706,9 @@ extensive documentation, including API reference and a tutorial.")
      "Pycairo is a set of Python bindings for the Cairo graphics library.")
     (license license:lgpl3+)))
 
-(define-public python2-py2cairo
+(define-public python2-pycairo
   (package (inherit python-pycairo)
-    (name "python2-py2cairo")
+    (name "python2-pycairo")
     (version "1.10.0")
     (source
      (origin
@@ -744,7 +744,7 @@ extensive documentation, including API reference and a tutorial.")
      `(("python" ,python-2)
        ("glib"   ,glib)))
     (propagated-inputs
-     `(("python-pycairo"   ,python2-py2cairo)    ;loaded at runtime
+     `(("python-pycairo"   ,python2-pycairo)     ;loaded at runtime
        ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
        ("gtk+"             ,gtk+-2)))
     (arguments
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 4bd3592672..6af90426a7 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "3.18.7")
+  (let* ((version "3.18.8")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "113r2dzmiwlchp5b3hyjyx91jysx5j4hhxjw45gaky5nj9pax2rh"))))
+               "1ai2krm0svq52z4nm0qyw3q3ybfia83zvpv1f38q1wkllwq0gi6j"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 5db3fa98f9..c592fbd83f 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -97,7 +97,7 @@ interface to the Tk widget system.")
 (define-public ecl
   (package
     (name "ecl")
-    (version "13.5.1")
+    (version "15.2.21")
     (source
      (origin
        (method url-fetch)
@@ -105,33 +105,40 @@ interface to the Tk widget system.")
                            (version-major+minor version)
                            "/ecl-" version ".tgz"))
        (sha256
-        (base32 "18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"))))
+        (base32 "05di23v977byf67rq5bdshw8lqbby1ycbscdcl1vca0z6r1s204j"))))
     (build-system gnu-build-system)
+    ;; src/configure uses 'which' to confirm the existence of 'gzip'.
     (native-inputs `(("which" ,which)))
     (inputs `(("gmp" ,gmp)
               ("libatomic-ops" ,libatomic-ops)
               ("libgc" ,libgc)
               ("libffi" ,libffi)))
     (arguments
-     '(#:phases
-       ;; The test-suite seems to assume that ECL is installed.  So re-order
-       ;; the phases, then reference the installed executable.
-       (let* ((check-phase (assq-ref %standard-phases 'check))
-              (rearranged-phases
-               (alist-cons-after 'install 'check check-phase
-                                 (alist-delete 'check %standard-phases))))
-         (alist-cons-before
-          'check 'pre-check
-          (lambda* (#:key outputs #:allow-other-keys)
-            (substitute* '("build/tests/Makefile")
-              (("ECL=ecl")
-               (string-append
-                "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
-          rearranged-phases))
-       ;; Parallel builds explicitly not supported:
-       ;; http://sourceforge.net/p/ecls/bugs/98/
-       #:parallel-build? #f
-       #:parallel-tests? #f))
+     '(#:tests? #f
+       ;; During 'make check', ECL fails to initialize with "protocol not
+       ;; supported", presumably because /etc/protocols is missing in the
+       ;; build environment.  See <http://sourceforge.net/p/ecls/bugs/300/>.
+       ;;
+       ;; Should the test suite be re-enabled, it might be necessary to add
+       ;; '#:parallel-tests #f'.  See the same bug report as above.
+       ;;
+       ;; The following might also be necessary, due to 'make check' assuming
+       ;; ECL is installed.  See <http://sourceforge.net/p/ecls/bugs/299/>.
+       ;;
+       ;; #:phases
+       ;; (let* ((check-phase (assq-ref %standard-phases 'check))
+       ;;        (rearranged-phases
+       ;;         (alist-cons-after 'install 'check check-phase
+       ;;                           (alist-delete 'check %standard-phases))))
+       ;;   (alist-cons-before
+       ;;    'check 'pre-check
+       ;;    (lambda* (#:key outputs #:allow-other-keys)
+       ;;      (substitute* '("build/tests/Makefile")
+       ;;        (("ECL=ecl")
+       ;;         (string-append
+       ;;          "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
+       ;;    rearranged-phases))
+       ))
     (home-page "http://ecls.sourceforge.net/")
     (synopsis "Embeddable Common Lisp")
     (description "ECL is an implementation of the Common Lisp language as
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 0dfc282ea8..33076c1a60 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -305,18 +306,22 @@ repository and Maildir/IMAP as LOCAL repository.")
 (define-public mu
   (package
     (name "mu")
-    (version "0.9.9.5")
+    (version "0.9.11")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://mu0.googlecode.com/files/mu-"
+              (uri (string-append "https://github.com/djcb/mu/archive/v"
                                   version ".tar.gz"))
+              (file-name (string-append "mu-" version ".tar.gz"))
               (sha256
                (base32
-                "1hwkliyb8fjrz5sw9fcisssig0jkdxzhccw0ld0l9a10q1l9mqhp"))))
+                "01n1lzq4pfsm5pn932p948d1z55yqc7kkm1ifjxjchb3k8lr66fh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")             ; for gtester
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
        ("texinfo" ,texinfo)))
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
@@ -327,14 +332,18 @@ repository and Maildir/IMAP as LOCAL repository.")
        ("gmime" ,gmime)
        ("tzdata" ,tzdata)))             ;for mu/test/test-mu-query.c
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'check-tz-setup
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; For mu/test/test-mu-query.c
-                   (setenv "TZDIR"
-                           (string-append (assoc-ref inputs "tzdata")
-                                          "/share/zoneinfo")))
-                 %standard-phases)))
+     '(#:phases (alist-cons-after
+                 'unpack 'autoreconf
+                 (lambda _
+                   (zero? (system* "autoreconf" "-vi")))
+                 (alist-cons-before
+                   'check 'check-tz-setup
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; For mu/test/test-mu-query.c
+                     (setenv "TZDIR"
+                             (string-append (assoc-ref inputs "tzdata")
+                                            "/share/zoneinfo")))
+                   %standard-phases))))
     (home-page "http://www.djcbsoftware.nl/code/mu/")
     (synopsis "Quickly find emails")
     (description
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 712622aee8..3507c0c1fb 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gdbm)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages less)
@@ -176,3 +178,28 @@ Linux kernel and C library interfaces employed by user-space programs.")
 \"--help\" and \"--version\" command-line arguments into a manual page
 automatically.")
     (license gpl3+)))
+
+(define-public txt2man
+  (package
+    (name "txt2man")
+    (version "1.5.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/mvertes/txt2man/archive/txt2man-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0sjq687jknq65wbnjh2siq8hc09ydpnlmrkrnwl66mrhd4n9g7fz"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:phases (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("gawk" ,gawk)))
+    (home-page "https://github.com/mvertes/txt2man")
+    (synopsis "Convert text to man page")
+    (description "Txt2man converts flat ASCII text to man page format.")
+    (license gpl2+)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index a1b427271d..2d7ca6ef37 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +28,8 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages avahi)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages doxygen)
@@ -35,16 +38,13 @@
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages video)
-  #:use-module (gnu packages xiph)
-  #:export (libmpdclient
-            mpd
-            ncmpc
-            ncmpcpp))
+  #:use-module (gnu packages xiph))
 
-(define libmpdclient
+(define-public libmpdclient
   (package
     (name "libmpdclient")
     (version "2.9")
@@ -65,7 +65,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
     (home-page "http://www.musicpd.org/libs/libmpdclient/")
     (license license:bsd-3)))
 
-(define mpd
+(define-public mpd
   (package
     (name "mpd")
     (version "0.18.8")
@@ -126,7 +126,29 @@ protocol.")
     (home-page "http://www.musicpd.org/")
     (license license:gpl2)))
 
-(define ncmpc
+(define-public mpd-mpc
+  (package
+    (name "mpd-mpc")
+    (version "0.26")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "http://www.musicpd.org/download/mpc/"
+                              (car (string-split version #\.))
+                              "/mpc-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0hp2qv6w2v902dhrmck5hg32s1ai6xiv9n61a3n6prfcfdqmywr0"))))
+    (build-system gnu-build-system)
+    (inputs `(("libmpdclient" ,libmpdclient)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (synopsis "Music Player Daemon client")
+    (description "MPC is a minimalist command line interface to MPD, the music
+player daemon.")
+    (home-page "http://www.musicpd.org/clients/mpc/")
+    (license license:gpl2)))
+
+(define-public ncmpc
   (package
     (name "ncmpc")
     (version "0.21")
@@ -150,10 +172,10 @@ terminal using ncurses.")
     (home-page "http://www.musicpd.org/clients/ncmpc/")
     (license license:gpl2)))
 
-(define ncmpcpp
+(define-public ncmpcpp
   (package
     (name "ncmpcpp")
-    (version "0.5.10")
+    (version "0.6.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -161,11 +183,27 @@ terminal using ncurses.")
                               version ".tar.bz2"))
               (sha256
                (base32
-                "1a54g6dary1rirrny9fd0hpxpyyffypni3mpbdpvmjnrl9v56vgz"))))
+                "1mrd6m6ph0fscxp9x96ipxh6ai7w0n1miapcfqrqfy058qx5zbck"))))
     (build-system gnu-build-system)
     (inputs `(("libmpdclient" ,libmpdclient)
+              ("boost"  ,boost)
+              ("readline" ,readline)
               ("ncurses" ,ncurses)))
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("automake" ,automake)
+       ("autoconf" ,autoconf)
+       ("libtool" ,libtool)))
+    (arguments
+     '(#:configure-flags
+       '("BOOST_LIB_SUFFIX=")
+       #:phases
+       (alist-cons-after
+        'unpack 'autogen
+        (lambda _
+          (setenv "NOCONFIGURE" "true")
+          (zero? (system* "sh" "autogen.sh")))
+        %standard-phases)))
     (synopsis "Featureful ncurses based MPD client inspired by ncmpc")
     (description "Ncmpcpp is an mpd client with a UI very similar to ncmpc,
 but it provides new useful features such as support for regular expressions
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index e044e1955b..3cf2c545ed 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -2078,14 +2078,11 @@ capabilities.")
 (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))))))))
+      ;; Make sure we use exactly PYTHON2-MATPLOTLIB, which is customized for
+      ;; Python 2.
+      (inputs `(("python2-matplotlib" ,python2-matplotlib)
+                ,@(alist-delete "python-matplotlib"
+                                (package-inputs numpy)))))))
 
 (define-public python-pyparsing
   (package
@@ -2147,7 +2144,15 @@ that client code uses to construct the grammar directly in Python code.")
              version ".tar.gz"))
        (sha256
         (base32
-         "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))))
+         "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Drop a test requiring matplotlib, which we cannot add as an
+           ;; input since it would create a circular dependency: Extend the
+           ;; test for Python 3, where it is already dropped, to Python 2.
+           (substitute* "numpydoc/tests/test_plot_directive.py"
+             (("3") "2"))))))
     (build-system python-build-system)
     (inputs
      `(("python-setuptools" ,python-setuptools)
@@ -2162,13 +2167,7 @@ that client code uses to construct the grammar directly in Python code.")
     (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))))
+  (package-with-python2 python-numpydoc))
 
 (define-public python-matplotlib
   (package
@@ -2281,19 +2280,15 @@ toolkits.")
 (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.
+      ;; Make sure to use special packages for Python 2 instead
+      ;; of those automatically rewritten by package-with-python2.
       (propagated-inputs
-       `(("python2-py2cairo" ,python2-py2cairo)
+       `(("python2-pycairo" ,python2-pycairo)
          ("python2-pygobject-2" ,python2-pygobject-2)
          ,@(alist-delete "python-pycairo"
                          (alist-delete "python-pygobject"
                                        (package-propagated-inputs
-                                        matplotlib)))))
-      (inputs
-       `(("python2-numpydoc" ,python2-numpydoc)
-         ,@(alist-delete "python-numpydoc"
-                         (package-inputs matplotlib)))))))
+                                        matplotlib))))))))
 
 (define-public python-scipy
   (package
@@ -2806,11 +2801,9 @@ computing.")
     (package (inherit ipython)
       ;; Make sure we use custom python2-NAME packages.
       (inputs
-       `(("python2-numpydoc" ,python2-numpydoc)
-         ("python2-matplotlib" ,python2-matplotlib)
-         ,@(alist-delete "python-numpydoc"
-                         (alist-delete "python-matplotlib"
-                                       (package-inputs ipython))))))))
+       `(("python2-matplotlib" ,python2-matplotlib)
+         ,@(alist-delete "python-matplotlib"
+                         (package-inputs ipython)))))))
 
 (define-public python-isodate
   (package
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index f0f974661b..5f917511f9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -248,7 +248,12 @@ for efficient socket-like bidirectional reliable communication channels.")
               (sha256
                (base32
                 "10s7xxxx6pp4ydp3san69sa6q379ih3pv92fyi565ggmlw8igv7a"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Believe it or not, the .pc is invalid.  Fix it.
+               '(substitute* "libpsl.pc.in"
+                  (("-llibpsl") "-lpsl")))))
     (build-system gnu-build-system)
     (inputs `(("icu4c" ,icu4c)))
     ;; The release tarball lacks the generated files.
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 8debe4baea..3ca297d90c 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +24,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages pkg-config)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu))
@@ -31,7 +32,7 @@
 (define-public wget
   (package
     (name "wget")
-    (version "1.16.1")
+    (version "1.16.2")
     (source
      (origin
       (method url-fetch)
@@ -39,14 +40,15 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "0csdw41hixa4kd0m19r7p41sip1hlnkp5y62bdzq9zhmxq3wg5ib"))))
+        "1mfpvhgzvpvw36wmkwyyds3ilz74s2gn8yjqvynkbc8frcdxxpx7"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
        ("libidn" ,libidn)
        ("libpsl" ,libpsl)))
     (native-inputs
-     `(("perl" ,perl)
+     `(("pkg-config" ,pkg-config)
+       ("perl" ,perl)
        ("python" ,python)               ;for testenv suite
        ("perl-http-daemon" ,perl-http-daemon)
        ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index d0c983dc78..67aa34a84b 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages xorg))
 
 ;; packages outside the x.org system proper
@@ -420,3 +422,34 @@ X Window System.")
      "XOSD provides a C library and a simple utility (osd_cat) for displaying
 transparent text on your screen.")
     (license license:gpl2+)))
+
+(define-public xbindkeys
+  (package
+    (name "xbindkeys")
+    (version "1.8.6")
+    (source (origin
+              (method url-fetch)
+              ;; Download from the savannah mirror list fails
+              (uri (string-append
+                    "http://www.nongnu.org/xbindkeys/xbindkeys-"
+                    version
+                    ".tar.gz"))
+              (sha256
+               (base32
+                "060df6d8y727jp1inp7blp44cs8a7jig7vcm8ndsn6gw36z1h3bc"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("guile" ,guile-2.0)))
+    (home-page "http://www.nongnu.org/xbindkeys/")
+    (synopsis "Associate a combination of keys with a shell command")
+    (description
+     "XBindKeys is a program that allows you to launch shell commands with
+your keyboard or your mouse under the X Window System.  It links commands to
+keys or mouse buttons, using a configuration file.  It's independent of the
+window manager and can capture all keyboard keys (ex: Power, Wake...).  It
+optionally supports a Guile-based configuration file layout, which enables you
+to access all XBindKeys internals, so you can have key combinations, double
+clicks or timed double clicks take actions.  Also all functions that work in
+Guile will work for XBindKeys.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index fb5427c94d..3ec081133a 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -65,7 +65,7 @@
 (define-public libxfce4util
   (package
     (name "libxfce4util")
-    (version "4.10.0")
+    (version "4.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -73,7 +73,7 @@
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89"))))
+                "07c8r3xwx5is298zk77m3r784gmr5y4mh8bbca5zdjqk5vxdwsw7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -120,7 +120,7 @@ storage system.")
 (define-public libxfce4ui
   (package
     (name "libxfce4ui")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -128,7 +128,7 @@ storage system.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2"))))
+                "11rrhqxnfwx5jls3nlg9s2x8saag9f2zqk9cdm6hr3bs6cr9a781"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -151,14 +151,14 @@ to share commonly used Xfce widgets amoung the Xfce applications.")
 (define-public exo
   (package
     (name "exo")
-    (version "0.8.0")
+    (version "0.10.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1c05pbagw14djv5zmqg34qfj40jav8sd10w2zi2wpzrad4qal8bf"))))
+                "1g9651ra395v2fmzb943l68b9pg0rfxc19x97a62crchxwa4nw4m"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -182,21 +182,21 @@ development.")
 (define-public garcon
   (package
     (name "garcon")
-    (version "0.2.0")
+    (version "0.4.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2"))))
+                "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq"))))
     (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)))
+    (propagated-inputs
+     `(("libxfce4ui" ,libxfce4ui))) ; required by garcon-gtk2-1.pc
     (home-page "http://www.xfce.org/")
     (synopsis "Implementation of the freedesktop.org menu specification")
     (description
@@ -209,14 +209,14 @@ merging features essential for loading menus modified with menu editors.")
 (define-public tumbler
   (package
     (name "tumbler")
-    (version "0.1.30")
+    (version "0.1.31")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/xfce/tumbler/0.1/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "013kacqyy1vya7kp6jgc1almp3cbbvq96a3r7f5myiihr1whvhp7"))))
+                "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -244,7 +244,7 @@ management D-Bus specification.")
 (define-public xfce4-panel
   (package
     (name "xfce4-panel")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -252,7 +252,7 @@ management D-Bus specification.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k"))
+                "1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih"))
               (patches (list (search-patch "xfce4-panel-plugins.patch")))))
     (build-system gnu-build-system)
     (native-inputs
@@ -309,7 +309,7 @@ applications menu, workspace switcher and more.")
 (define-public xfce4-appfinder
   (package
     (name "xfce4-appfinder")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -317,7 +317,7 @@ applications menu, workspace switcher and more.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0falckrziw8m1a72nxd7fqq84r3xfbrb6lv35flsca346rzawah4"))))
+                "0ry5hin8xhgnkmm9vs7jq8blk1cnbyr0s18nm1j6nsm7360abm1a"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -335,7 +335,7 @@ your system in categories, so you can quickly find and launch them.")
 (define-public xfce4-session
   (package
     (name "xfce4-session")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -343,7 +343,7 @@ your system in categories, so you can quickly find and launch them.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv"))))
+                "01kvbd09c06j20n155hracsgrq06rlmfgdywffjsvlwpn19m9j38"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -366,7 +366,7 @@ allows you to shutdown the computer from Xfce.")
 (define-public xfce4-settings
   (package
     (name "xfce4-settings")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -374,7 +374,7 @@ allows you to shutdown the computer from Xfce.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8"))))
+                "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -397,14 +397,14 @@ like appearance, display, keyboard and mouse settings.")
 (define-public thunar
   (package
     (name "thunar")
-    (version "1.4.0")
+    (version "1.6.6")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
                                   "Thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "1fn8wjzkfvnx2giv3rrg2cyrr2c96f9mskgvcji0ixyfcjga249c"))))
+                "1cl9v3rdzipyyxml3pyrzspxfmmssz5h5snpj18irq4an42539dr"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -428,14 +428,14 @@ fast.")
 (define-public thunar-volman
   (package
     (name "thunar-volman")
-    (version "0.8.0")
+    (version "0.8.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
+              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1sxw09fwyn5sr6ipxk7r8gqjyf41c2v7vkgl0l6mhy5mcb48f27z"))))
+                "1gf259n1v3y23n1zlkhyr6r0i8j59rnl1cmxvxj6la9cwdfbn22s"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -458,7 +458,7 @@ and import the new pictures from your camera.")
 (define-public xfwm4
   (package
     (name "xfwm4")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -466,16 +466,18 @@ and import the new pictures from your camera.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9"))))
+                "0fnc2ps4k733n9qfpxrz047h1myyqjzxczl7fmkjmqwshvicpx19"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
     (inputs
-     `(("libwnck", libwnck-1)
+     `(("libdrm" ,libdrm)
+       ("libwnck" ,libwnck-1)
+       ("libxcomposite" ,libxcomposite)
+       ("libxdamage" ,libxdamage)
        ("libxfce4ui" ,libxfce4ui)
-       ("libxrandr" ,libxrandr)
-       ("libxcomposite" ,libxcomposite)))
+       ("libxrandr" ,libxrandr)))
     (home-page "http://www.xfce.org/")
     (synopsis "Xfce window manager")
     (description
@@ -486,7 +488,7 @@ on the screen.")
 (define-public xfdesktop
   (package
     (name "xfdesktop")
-    (version "4.10.0")
+    (version "4.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/xfce/"
@@ -494,7 +496,7 @@ on the screen.")
                                   "/src/" name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"))))
+                "1ivzgg4792nid6wcgd1nq5vc3z0y5ip6ymq7ci5j2qkp663qnykf"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 69a89584e0..bc1774840b 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -155,6 +155,13 @@ which should be passed to this script as the first argument.  If not, the
     #~(begin
         (use-modules (ice-9 match))
 
+        (define (close-all-fdes)
+          ;; Close all the open file descriptors.
+          (let loop ((fd 0))
+            (when (< fd 4096)               ;FIXME: use sysconf + _SC_OPEN_MAX
+              (false-if-exception (close-fdes fd))
+              (loop (+ 1 fd)))))
+
         (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
@@ -163,6 +170,11 @@ which should be passed to this script as the first argument.  If not, the
                  (shell (passwd:shell pw))
                  (st    (stat command #f)))
             (when (and st (not (zero? (logand (stat:mode st) #o100))))
+              ;; Close any open file descriptors.  This is all the more
+              ;; important that SLiM itself exec's us directly without closing
+              ;; its own file descriptors!
+              (close-all-fdes)
+
               ;; The '--login' option is supported at least by Bash and zsh.
               (execl shell shell "--login" "-c"
                      (string-join (cons command args))))))