summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/admin.scm52
-rw-r--r--gnu/packages/aspell.scm8
-rw-r--r--gnu/packages/audio.scm157
-rw-r--r--gnu/packages/avr.scm2
-rw-r--r--gnu/packages/base.scm6
-rw-r--r--gnu/packages/bash.scm5
-rw-r--r--gnu/packages/bioinformatics.scm138
-rw-r--r--gnu/packages/boost.scm13
-rw-r--r--gnu/packages/cdrom.scm26
-rw-r--r--gnu/packages/certs.scm9
-rw-r--r--gnu/packages/cflow.scm49
-rw-r--r--gnu/packages/check.scm32
-rw-r--r--gnu/packages/cmake.scm4
-rw-r--r--gnu/packages/code.scm178
-rw-r--r--gnu/packages/complexity.scm50
-rw-r--r--gnu/packages/compression.scm2
-rw-r--r--gnu/packages/curl.scm2
-rw-r--r--gnu/packages/cyrus-sasl.scm4
-rw-r--r--gnu/packages/databases.scm173
-rw-r--r--gnu/packages/debug.scm4
-rw-r--r--gnu/packages/dictionaries.scm47
-rw-r--r--gnu/packages/djvu.scm42
-rw-r--r--gnu/packages/dns.scm (renamed from gnu/packages/dnsmasq.scm)62
-rw-r--r--gnu/packages/ebook.scm107
-rw-r--r--gnu/packages/engineering.scm198
-rw-r--r--gnu/packages/enlightenment.scm38
-rw-r--r--gnu/packages/firmware.scm2
-rw-r--r--gnu/packages/fish.scm6
-rw-r--r--gnu/packages/flex.scm2
-rw-r--r--gnu/packages/fonts.scm47
-rw-r--r--gnu/packages/fontutils.scm2
-rw-r--r--gnu/packages/ftp.scm6
-rw-r--r--gnu/packages/games.scm91
-rw-r--r--gnu/packages/gcc.scm16
-rw-r--r--gnu/packages/gd.scm4
-rw-r--r--gnu/packages/ghostscript.scm2
-rw-r--r--gnu/packages/gl.scm4
-rw-r--r--gnu/packages/global.scm67
-rw-r--r--gnu/packages/gnome.scm40
-rw-r--r--gnu/packages/gnunet.scm26
-rw-r--r--gnu/packages/gnupg.scm38
-rw-r--r--gnu/packages/gnuzilla.scm46
-rw-r--r--gnu/packages/graphics.scm119
-rw-r--r--gnu/packages/grub.scm3
-rw-r--r--gnu/packages/guile.scm38
-rw-r--r--gnu/packages/haskell.scm224
-rw-r--r--gnu/packages/hugs.scm4
-rw-r--r--gnu/packages/image.scm79
-rw-r--r--gnu/packages/javac.in61
-rw-r--r--gnu/packages/key-mon.scm69
-rw-r--r--gnu/packages/language.scm400
-rw-r--r--gnu/packages/libedit.scm50
-rw-r--r--gnu/packages/linux.scm13
-rw-r--r--gnu/packages/lisp.scm19
-rw-r--r--gnu/packages/lxqt.scm58
-rw-r--r--gnu/packages/mail.scm45
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/maths.scm148
-rw-r--r--gnu/packages/mit-krb5.scm2
-rw-r--r--gnu/packages/mpd.scm5
-rw-r--r--gnu/packages/music.scm104
-rw-r--r--gnu/packages/package-management.scm4
-rw-r--r--gnu/packages/patches/agg-am_c_prototype.patch10
-rw-r--r--gnu/packages/patches/bash-completion-directories.patch33
-rw-r--r--gnu/packages/patches/calibre-drop-unrar.patch49
-rw-r--r--gnu/packages/patches/gnunet-fix-scheduler.patch13
-rw-r--r--gnu/packages/patches/gnunet-fix-tests.patch58
-rw-r--r--gnu/packages/patches/grub-freetype.patch24
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0822.patch154
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch33
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch35
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch56
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch32
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch26
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch26
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch27
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch220
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch89
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch25
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch41
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch54
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch53
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch52
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch219
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch104
-rw-r--r--gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch81
-rw-r--r--gnu/packages/patches/nss-pkgconfig.patch3
-rw-r--r--gnu/packages/patches/pavucontrol-sigsegv.patch203
-rw-r--r--gnu/packages/patches/pulseaudio-CVE-2014-3970.patch57
-rw-r--r--gnu/packages/patches/valgrind-glibc-2.21.patch26
-rw-r--r--gnu/packages/patches/zathura-plugindir-environment-variable.patch35
-rw-r--r--gnu/packages/pdf.scm189
-rw-r--r--gnu/packages/perl.scm3524
-rw-r--r--gnu/packages/plotutils.scm68
-rw-r--r--gnu/packages/pulseaudio.scm18
-rw-r--r--gnu/packages/python.scm74
-rw-r--r--gnu/packages/qt.scm4
-rw-r--r--gnu/packages/ratpoison.scm25
-rw-r--r--gnu/packages/rdf.scm34
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/samba.scm6
-rw-r--r--gnu/packages/sdl.scm2
-rw-r--r--gnu/packages/skribilo.scm6
-rw-r--r--gnu/packages/slang.scm3
-rw-r--r--gnu/packages/ssh.scm8
-rw-r--r--gnu/packages/tcl.scm2
-rw-r--r--gnu/packages/texlive.scm246
-rw-r--r--gnu/packages/textutils.scm85
-rw-r--r--gnu/packages/valgrind.scm6
-rw-r--r--gnu/packages/version-control.scm28
-rw-r--r--gnu/packages/video.scm274
-rw-r--r--gnu/packages/vpn.scm7
-rw-r--r--gnu/packages/web.scm1124
-rw-r--r--gnu/packages/wget.scm4
-rw-r--r--gnu/packages/xdisorg.scm72
-rw-r--r--gnu/packages/xiph.scm8
-rw-r--r--gnu/packages/yasm.scm2
-rw-r--r--gnu/packages/zip.scm4
-rw-r--r--gnu/packages/zsh.scm30
-rw-r--r--gnu/services/base.scm43
-rw-r--r--gnu/services/dmd.scm26
-rw-r--r--gnu/services/networking.scm8
-rw-r--r--gnu/services/xorg.scm118
-rw-r--r--gnu/system.scm37
-rw-r--r--gnu/system/linux.scm10
-rw-r--r--gnu/system/os-config.tmpl5
-rw-r--r--gnu/system/shadow.scm16
127 files changed, 8574 insertions, 2640 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 72d8022f9a..95b0c9f007 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -968,6 +969,31 @@ characters can be replaced as well, as can UTF-8 characters.")
 recover lost partitions and/or make non-booting disks bootable again.")
     (license license:gpl2+)))
 
+(define-public tree
+  (package
+    (name "tree")
+    (version "1.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://mama.indstate.edu/users/ice/tree/src/tree-"
+                    version ".tgz"))
+              (sha256
+               (base32 "04kviw799qxly08zb8n5mgxfd96gyis6x69q2qiw86jnh87c4mv9"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-delete 'configure %standard-phases)
+       #:tests? #f                      ; no check target
+       #:make-flags (let ((out (assoc-ref %outputs "out")))
+                               (list (string-append "prefix=" out)))))
+    (synopsis "Recursively list the contents of a directory")
+    (description
+     "Tree is a recursive directory listing command that produces a depth
+indented listing of files, which is colorized ala dircolors if the LS_COLORS
+environment variable is set and output is to tty.")
+    (home-page "http://mama.indstate.edu/users/ice/tree/")
+    (license license:gpl2+)))
+
 (define-public direvent
   (package
     (name "direvent")
@@ -1055,3 +1081,29 @@ Technology System (S.M.A.R.T.) built into most modern ATA and SCSI harddisks.
 In many cases, these utilities will provide advanced warning of disk
 degradation and failure.")
     (license license:gpl2+)))
+
+(define-public fdupes
+  (package
+    (name "fdupes")
+    (version "1.51")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/adrianlopezroche/fdupes/archive/fdupes-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "11j96vxl9vg3jsnxqxskrv3gad6dh7hz2zpyc8n31xzyxka1c7kn"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-delete 'configure %standard-phases)
+       #:tests? #f ; no 'check' target
+       #:make-flags (list (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))))
+    (home-page "https://github.com/adrianlopezroche/fdupes")
+    (synopsis "Identify duplicate files")
+    (description
+     "fdupes is a program for identifying duplicate files residing within
+specified directories.")
+    (license license:expat)))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index bd6a54c7d4..38ed997163 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -114,3 +115,10 @@ dictionaries, including personal ones.")
                      #:sha256
                      (base32
                       "14ffy9mn5jqqpp437kannc3559bfdrpk7r36ljkzjalxa53i0hpr")))
+
+(define-public aspell-dict-ru
+  (aspell-dictionary "ru" "Russian"
+                     #:version "0.99f7-1"
+                     #:sha256
+                     (base32
+                      "0ip6nq43hcr7vvzbv4lwwmlwgfa60hrhsldh9xy3zg2prv6bcaaw")))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 64bde2ea20..58e2b8d76d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -50,6 +50,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages zip)
   #:use-module (srfi srfi-1))
 
 (define-public alsa-modular-synth
@@ -244,20 +245,20 @@ plugins are provided.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))
-              (modules '((guix build utils)))
-              (snippet
-               '(substitute* "libs/Makefile"
-                  (("/sbin/ldconfig") "true")))))
+                "0bsacx3l9065gk8g4137qmz2ij7s9x06aldvacinzlcslw7bd1kq"))))
     (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"))
+        'unpack 'patch-makefile-and-enter-directory
+        (lambda _
+          (substitute* "libs/Makefile"
+            (("/sbin/ldconfig") "true")
+            (("^LIBDIR =.*") "LIBDIR = lib\n"))
+          (chdir "libs")
+          #t)
         (alist-cons-after
          'install
          'install-symlink
@@ -277,6 +278,38 @@ plugins are provided.")
 ALSA PCM devices.")
     (license license:gpl2+)))
 
+(define-public faad2
+  (package
+    (name "faad2")
+    (version "2.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/faac/faad2-" version ".zip"))
+              (sha256
+               (base32
+                "16f3l16c00sg0wkrkm3vzv0gy3g97x309vw788igs0cap2x1ak3z"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("unzip" ,unzip)))
+    (arguments
+     '(#:phases
+       (alist-cons-after
+        'unpack 'bootstrap
+        (lambda _
+          (substitute* "bootstrap" (("\r\n") "\n"))
+          (zero? (system* "sh" "bootstrap")))
+        %standard-phases)))
+    (home-page "http://www.audiocoding.com/faad2.html")
+    (synopsis "MPEG-4 and MPEG-2 AAC decoder")
+    (description
+     "FAAD2 is an MPEG-4 and MPEG-2 AAC decoder supporting LC, Main, LTP, SBR,
+PS, and DAB+.")
+    (license license:gpl2)))
+
 (define-public freepats
   (package
     (name "freepats")
@@ -491,6 +524,29 @@ applications, restoring program state (i.e. loaded patches) and the
 connections between them.")
     (license license:gpl2+)))
 
+(define-public libbs2b
+  (package
+    (name "libbs2b")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/bs2b/libbs2b-" version ".tar.lzma"))
+              (sha256
+               (base32
+                "1mcc4gjkmphczjybnsrip3gq1f974knzys7x49bv197xk3fn8wdr"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("libsndfile" ,libsndfile)))
+    (home-page "http://sourceforge.net/projects/bs2b/")
+    (synopsis "Bauer stereophonic-to-binaural DSP")
+    (description
+     "The Bauer stereophonic-to-binaural DSP (bs2b) library and plugins is
+designed to improve headphone listening of stereo audio records.  Recommended
+for headphone prolonged listening to disable superstereo fatigue without
+essential distortions.")
+    (license license:expat)))
+
 (define-public liblo
   (package
     (name "liblo")
@@ -657,6 +713,35 @@ extensions into easy to use C++ classes.  It is the successor of
 lv2-c++-tools.")
     (license license:gpl3+)))
 
+(define-public openal
+  (package
+    (name "openal")
+    (version "1.15.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://kcat.strangesoft.net/openal-releases/openal-soft-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "0mmhdqiyb3c9dzvxspm8h2v8jibhi8pfjxnf6m0wn744y1ia2a8f"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f)) ; no check target
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("pulseaudio" ,pulseaudio)))
+    (synopsis "3D audio API")
+    (description
+     "OpenAL provides capabilities for playing audio in a virtual 3D
+environment.  Distance attenuation, doppler shift, and directional sound
+emitters are among the features handled by the API.  More advanced effects,
+including air absorption, occlusion, and environmental reverb, are available
+through the EFX extension.  It also facilitates streaming audio, multi-channel
+buffers, and audio capture.")
+    (home-page "http://kcat.strangesoft.net/openal.html")
+    (license license:lgpl2.0+)))
+
 (define-public patchage
   (package
     (name "patchage")
@@ -1020,6 +1105,46 @@ to record and/or play sound using a callback function or a blocking read/write
 interface.")
     (license license:expat)))
 
+(define-public rsound
+  (package
+    (name "rsound")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/Themaister/RSound/archive/v"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1wzs40c0k5zpkmm5ffl6c17xmr399sxli7ys0fbb9ib0fd334knx"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("jack" ,jack-2)
+       ("ao" ,ao)
+       ("libsamplerate" ,libsamplerate)
+       ("openal" ,openal)
+       ("portaudio" ,portaudio)
+       ("pulseaudio" ,pulseaudio)))
+    (arguments
+     '(#:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key outputs #:allow-other-keys)
+          (setenv "CC" "gcc")
+          (zero?
+           (system* "./configure"
+                    (string-append "--prefix=" (assoc-ref outputs "out")))))
+        %standard-phases)
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "http://themaister.net/rsound.html")
+    (synopsis "Networked audio system")
+    (description
+     "RSound allows you to send audio from an application and transfer it
+directly to a different computer on your LAN network.  It is an audio daemon
+with a much different focus than most other audio daemons.")
+    (license license:gpl3+)))
+
 (define-public zita-alsa-pcmi
   (package
     (name "zita-alsa-pcmi")
@@ -1032,20 +1157,20 @@ interface.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))
-              (modules '((guix build utils)))
-              (snippet
-               '(substitute* "libs/Makefile"
-                  (("ldconfig") "true")))))
+                "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
     (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"))
+        'unpack 'patch-makefile-and-enter-directory
+        (lambda _
+          (substitute* "libs/Makefile"
+            (("ldconfig") "true")
+            (("^LIBDIR =.*") "LIBDIR = lib\n"))
+          (chdir "libs")
+          #t)
         (alist-cons-after
          'install
          'install-symlink
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 3f8e827707..d7ca1b1ace 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -48,4 +48,4 @@
     (description
      "AVR Libc is a project whose goal is to provide a high quality C library
 for use with GCC on Atmel AVR microcontrollers.")
-    (license (bsd-style "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
+    (license (non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index c9988a8494..69d1205259 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -388,7 +388,11 @@ included.")
 
    (arguments
     `(#:out-of-source? #t
-      #:parallel-build? #f ; There's at least one race in the build.
+
+      ;; In version 2.21, there a race in the 'elf' directory, see
+      ;; <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00709.html>.
+      #:parallel-build? #f
+
       #:configure-flags
       (list "--enable-add-ons"
             "--sysconfdir=/etc"
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 4f92547da5..d98ef0582b 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -19,6 +19,7 @@
 
 (define-module (gnu packages bash)
   #:use-module (guix licenses)
+  #:use-module (gnu packages)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages bison)
@@ -242,7 +243,9 @@ without modification.")
                     "bash-completion-" version ".tar.bz2"))
               (sha256
                (base32
-                "0kxf8s5bw7y50x0ksb77d3kv0dwadixhybl818w27y6mlw26hq1b"))))
+                "0kxf8s5bw7y50x0ksb77d3kv0dwadixhybl818w27y6mlw26hq1b"))
+              (patches
+               (list (search-patch "bash-completion-directories.patch")))))
     (build-system gnu-build-system)
     (synopsis "Bash completions for common commands")
     (description
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 8ed871003a..1214a0b708 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -237,6 +238,53 @@ gapped, local, and paired-end alignment modes.")
     (supported-systems '("x86_64-linux"))
     (license license:gpl3+)))
 
+(define-public bwa
+  (package
+    (name "bwa")
+    (version "0.7.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/bio-bwa/bwa-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1330dpqncv0px3pbhjzz1gwgg39kkcv2r9qp2xs0sixf8z8wl7bh"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ;no "check" target
+       #:phases
+       (alist-replace
+        'install
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let ((bin (string-append
+                      (assoc-ref outputs "out") "/bin"))
+                (doc (string-append
+                      (assoc-ref outputs "out") "/share/doc/bwa"))
+                (man (string-append
+                      (assoc-ref outputs "out") "/share/man/man1")))
+            (mkdir-p bin)
+            (mkdir-p doc)
+            (mkdir-p man)
+            (copy-file "bwa" (string-append bin "/bwa"))
+            (copy-file "README.md" (string-append doc "/README.md"))
+            (copy-file "bwa.1" (string-append man "/bwa.1"))))
+        ;; no "configure" script
+        (alist-delete 'configure %standard-phases))))
+    (inputs `(("zlib" ,zlib)))
+    (home-page "http://bio-bwa.sourceforge.net/")
+    (synopsis "Burrows-Wheeler sequence aligner")
+    (description
+     "BWA is a software package for mapping low-divergent sequences against a
+large reference genome, such as the human genome.  It consists of three
+algorithms: BWA-backtrack, BWA-SW and BWA-MEM.  The first algorithm is
+designed for Illumina sequence reads up to 100bp, while the rest two for
+longer sequences ranged from 70bp to 1Mbp.  BWA-MEM and BWA-SW share similar
+features such as long-read support and split alignment, but BWA-MEM, which is
+the latest, is generally recommended for high-quality queries as it is faster
+and more accurate.  BWA-MEM also has better performance than BWA-backtrack for
+70-100bp Illumina reads.")
+    (license license:gpl3+)))
+
 (define-public clipper
   (package
     (name "clipper")
@@ -446,6 +494,51 @@ particular, reads spanning multiple exons.")
 from high-throughput sequencing assays.")
     (license license:gpl3+)))
 
+(define-public htsjdk
+  (package
+    (name "htsjdk")
+    (version "1.129")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/samtools/htsjdk/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0asdk9b8jx2ij7yd6apg9qx03li8q7z3ml0qy2r2qczkra79y6fw"))
+              (modules '((guix build utils)))
+              ;; remove build dependency on git
+              (snippet '(substitute* "build.xml"
+                          (("failifexecutionfails=\"true\"")
+                           "failifexecutionfails=\"false\"")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((srfi srfi-1)
+                  (guix build gnu-build-system)
+                  (guix build utils))
+       #:phases (alist-replace
+                 'build
+                 (lambda _
+                   (setenv "JAVA_HOME" (assoc-ref %build-inputs "jdk"))
+                   (zero? (system* "ant" "all"
+                                   (string-append "-Ddist="
+                                                  (assoc-ref %outputs "out")
+                                                  "/share/java/htsjdk/"))))
+                 (fold alist-delete %standard-phases
+                       '(configure install check)))))
+    (native-inputs
+     `(("ant" ,ant)
+       ("jdk" ,icedtea6 "jdk")))
+    (home-page "http://samtools.github.io/htsjdk/")
+    (synopsis "Java API for high-throughput sequencing data (HTS) formats")
+    (description
+     "HTSJDK is an implementation of a unified Java library for accessing
+common file formats, such as SAM and VCF, used for high-throughput
+sequencing (HTS) data.  There are also an number of useful utilities for
+manipulating HTS data.")
+    (license license:expat)))
+
 (define-public macs
   (package
     (name "macs")
@@ -477,6 +570,51 @@ resolution of binding sites through combining the information of both
 sequencing tag position and orientation.")
     (license license:bsd-3)))
 
+(define-public miso
+  (package
+    (name "miso")
+    (version "0.5.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://pypi.python.org/packages/source/m/misopy/misopy-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0x446867az8ir0z8c1vjqffkp0ma37wm4sylixnkhgawllzx8v5w"))
+              (modules '((guix build utils)))
+              ;; use "gcc" instead of "cc" for compilation
+              (snippet
+               '(substitute* "setup.py"
+                  (("^defines")
+                   "cc.set_executables(
+compiler='gcc',
+compiler_so='gcc',
+linker_exe='gcc',
+linker_so='gcc -shared'); defines")))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2 ; only Python 2 is supported
+       #:tests? #f)) ; no "test" target
+    (inputs
+     `(("samtools" ,samtools)
+       ("python-numpy" ,python2-numpy)
+       ("python-pysam" ,python2-pysam)
+       ("python-scipy" ,python2-scipy)
+       ("python-matplotlib" ,python2-matplotlib)))
+    (native-inputs
+     `(("python-setuptools" ,python2-setuptools)))
+    (home-page "http://genes.mit.edu/burgelab/miso/index.html")
+    (synopsis "Mixture of Isoforms model for RNA-Seq isoform quantitation")
+    (description
+     "MISO (Mixture-of-Isoforms) is a probabilistic framework that quantitates
+the expression level of alternatively spliced genes from RNA-Seq data, and
+identifies differentially regulated isoforms or exons across samples.  By
+modeling the generative process by which reads are produced from isoforms in
+RNA-Seq, the MISO model uses Bayesian inference to compute the probability
+that a read originated from a particular isoform.")
+    (license license:gpl2)))
+
 (define-public rseqc
   (package
     (name "rseqc")
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 1767681955..24fc53d0b8 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,7 +32,7 @@
 (define-public boost
   (package
     (name "boost")
-    (version "1.55.0")
+    (version "1.57.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -40,7 +41,7 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "0lkv5dzssbl5fmh2nkaszi8x9qbj80pr4acf9i26sj3rvlih1w7z"))))
+                "0rs94vdmg34bwwj23fllva6mhrml2i7mvmlb11zyrk1k5818q34i"))))
     (build-system gnu-build-system)
     (inputs `(("zlib" ,zlib)))
     (native-inputs
@@ -64,10 +65,10 @@
             (let ((out (assoc-ref outputs "out")))
               (substitute* '("libs/config/configure"
                              "libs/spirit/classic/phoenix/test/runtest.sh"
-                             "tools/build/v2/doc/bjam.qbk"
-                             "tools/build/v2/engine/execunix.c"
-                             "tools/build/v2/engine/Jambase"
-                             "tools/build/v2/engine/jambase.c")
+                             "tools/build/doc/bjam.qbk"
+                             "tools/build/src/engine/execunix.c"
+                             "tools/build/src/engine/Jambase"
+                             "tools/build/src/engine/jambase.c")
                 (("/bin/sh") (which "sh")))
 
               (setenv "SHELL" (which "sh"))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index ac5f64f48f..9af0ea7b09 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -94,9 +95,28 @@ caching facility provided by the library.")
 for CD-ROM and CD image file access.  It allows the developer to add CD
 access to an application without having to worry about the OS- and
 device-dependent properties of CD-ROM or the specific details of CD image
-formats.  It includes pycdio, a Python interface to libcdio, and
-libcdio-paranoia, a library providing jitter-free and error-free audio
-extraction from CDs.")
+formats.")
+    (license gpl3+)))
+
+(define-public libcdio-paranoia
+  (package
+    (name "libcdio-paranoia")
+    (version "10.2+0.93+1")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnu/libcdio/libcdio-paranoia-"
+                                 version ".tar.bz2"))
+             (sha256
+              (base32
+               "14x4b4jk5b0zvcalrg02y4jmbkmmlb07qfmk5hph9k18b8frn7gc"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs `(("libcdio" ,libcdio)))
+    (home-page "http://www.gnu.org/software/libcdio/")
+    (synopsis "Jitter- and error-tolerant CD audio extraction")
+    (description
+     "libcdio-paranoia is an implementation of CD paranoia libraries based on
+libcdio.")
     (license gpl3+)))
 
 (define-public xorriso
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index 7818d48219..db89466328 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -33,10 +33,11 @@
     (name "certdata2pem")
     (version "2013")
     (source
-    (origin
+     (origin
       (method url-fetch)
         (uri
           "http://pkgs.fedoraproject.org/cgit/ca-certificates.git/plain/certdata2pem.py?id=053dde8a2f5901e97028a58bf54e7d0ef8095a54")
+        (file-name "certdata2pem.py")
         (sha256
           (base32
             "0zscrm41gnsf14zvlkxhy00h3dmgidyz645ldpda3y3vabnwv8dx"))))
@@ -107,10 +108,6 @@
                  (system* "certdata2pem.py" "certdata.txt")
                  ;; copy selected .pem files into the output
                  (for-each maybe-install-cert
-                           ;; FIXME: Some of the file names are UTF8 (?) and
-                           ;; cause an error message such as find-files:
-                           ;; ./EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??:2.8.76.175.115.66.28.142.116.2.pem:
-                           ;; No such file or directory
                            (find-files "." ".*\\.pem")))
 
                (with-directory-excursion certsdir
@@ -123,7 +120,7 @@
                  (system* "c_rehash" "."))))
 
            (map (cut assq <> %standard-phases)
-                '(set-paths unpack)))))
+                '(set-paths install-locale unpack)))))
     (synopsis "CA certificates from Mozilla")
     (description
       "This package provides certificates for Certification Authorities (CA)
diff --git a/gnu/packages/cflow.scm b/gnu/packages/cflow.scm
deleted file mode 100644
index 2bb1fefda3..0000000000
--- a/gnu/packages/cflow.scm
+++ /dev/null
@@ -1,49 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 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 cflow)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages emacs))
-
-(define-public cflow
-  (package
-    (name "cflow")
-    (version "1.4")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/cflow/cflow-"
-                                 version ".tar.bz2"))
-             (sha256
-              (base32
-               "1jkbq97ajcf834z68hbn3xfhiz921zhn39gklml1racf0kb3jzh3"))))
-    (build-system gnu-build-system)
-
-    ;; Needed to have cflow-mode.el installed.
-    (native-inputs `(("emacs" ,emacs)))
-
-    (home-page "http://www.gnu.org/software/cflow/")
-    (synopsis "Create a graph of control flow within a program")
-    (description
-     "GNU cflow analyzes C source files and produces a graph charting the
-control flow of the program.  It can output the graph in several styles and
-in either the POSIX format or in an extended GNU format. cflow also includes
-a major mode for Emacs for examining the flowcharts that it produces.")
-   (license gpl3+)))
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index bf2a1c7020..afaf5571e5 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -19,6 +19,7 @@
 
 (define-module (gnu packages check)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -48,6 +49,37 @@ faults or other signals.  The output from unit tests can be used within
 source code editors and IDEs.")
     (license lgpl2.1+)))
 
+(define-public cunit
+  (package
+    (name "cunit")
+    (version "2.1-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/cunit/CUnit/"
+                           version "/CUnit-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "057j82da9vv4li4z5ri3227ybd18nzyq81f6gsvhifs5z0vr3cpm"))))
+    (build-system gnu-build-system)
+    (arguments '(#:phases
+                 (alist-cons-before
+                  'configure 'autoconf
+                  (lambda _
+                    (zero? (system* "autoreconf" "-vfi")))
+                  %standard-phases)))
+    (native-inputs
+     `(("automake" ,automake)
+       ("autoconf" ,autoconf)
+       ("libtool" ,libtool)))
+    (home-page "http://cunit.sourceforge.net/")
+    (synopsis "Automated testing framework for C")
+    (description
+     "CUnit is a lightweight system for writing, administering, and running
+unit tests in C.  It provides C programmers with basic testing functionality
+with a flexible variety of user interfaces.")
+    (license gpl2+)))
+
 (define-public cppunit
   (package
     (name "cppunit")
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index c3ed4ae81f..1fb9241596 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -101,6 +101,10 @@
        ("expat"      ,expat)
        ("bzip2"      ,bzip2)
        ("libarchive" ,libarchive)))
+    (native-search-paths
+     (list (search-path-specification
+             (variable "CMAKE_PREFIX_PATH")
+             (files '("")))))
     (home-page "http://www.cmake.org/")
     (synopsis "Cross-platform build system")
     (description
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
new file mode 100644
index 0000000000..544681212b
--- /dev/null
+++ b/gnu/packages/code.scm
@@ -0,0 +1,178 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;;
+;;; 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 code)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix licenses)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages emacs)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages autogen)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages autotools))
+
+;;; Tools to deal with source code: metrics, cross-references, etc.
+
+(define-public cflow
+  (package
+    (name "cflow")
+    (version "1.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/cflow/cflow-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1jkbq97ajcf834z68hbn3xfhiz921zhn39gklml1racf0kb3jzh3"))))
+    (build-system gnu-build-system)
+
+    ;; Needed to have cflow-mode.el installed.
+    (native-inputs `(("emacs" ,emacs)))
+
+    (home-page "http://www.gnu.org/software/cflow/")
+    (synopsis "Create a graph of control flow within a program")
+    (description
+     "GNU cflow analyzes C source files and produces a graph charting the
+control flow of the program.  It can output the graph in several styles and
+in either the POSIX format or in an extended GNU format. cflow also includes
+a major mode for Emacs for examining the flowcharts that it produces.")
+    (license gpl3+)))
+
+(define-public complexity
+  (package
+    (name "complexity")
+    (version "1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/complexity/complexity-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("autogen" ,autogen)))
+    (home-page "http://www.gnu.org/software/complexity/")
+    (synopsis "Analyze complexity of C functions")
+    (description
+     "GNU complexity provides tools for finding procedures that are
+convoluted, overly long or otherwise difficult to understand.  This
+may help in learning or reviewing unfamiliar code or perhaps
+highlighting your own code that seemed comprehensible when you wrote it.")
+    (license gpl3+)))
+
+(define-public global                             ; a global variable
+  (package
+    (name "global")
+    (version "6.3.4")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnu/global/global-"
+                                 version ".tar.gz"))
+             (sha256
+              (base32
+               "0hcplcayyjf42d8ygzla6142b5dq4ybq4wg3n3cgx3b5yfhvic85"))))
+    (build-system gnu-build-system)
+    (inputs `(("ncurses" ,ncurses)
+              ("libltdl" ,libltdl)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-ncurses="
+                            (assoc-ref %build-inputs "ncurses")))
+
+       #:phases (alist-cons-after
+                 'install 'post-install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; Install the Emacs Lisp file in the right place.
+                   (let* ((out  (assoc-ref outputs "out"))
+                          (data (string-append out "/share/gtags"))
+                          (lisp (string-append out "/share/emacs/site-lisp")))
+                     (mkdir-p lisp)
+                     (copy-file (string-append data "/gtags.el")
+                                (string-append lisp "/gtags.el"))
+                     (delete-file (string-append data "/gtags.el"))
+                     #t))
+                 %standard-phases)))
+    (home-page "http://www.gnu.org/software/global/")
+    (synopsis "Cross-environment source code tag system")
+    (description
+     "GLOBAL is a source code tagging system that functions in the same way
+across a wide array of environments, such as different text editors, shells
+and web browsers.  The resulting tags are useful for quickly moving around in
+a large, deeply nested project.")
+    (license gpl3+)))
+
+(define-public sloccount
+  (package
+    (name "sloccount")
+    (version "2.26")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.dwheeler.com/sloccount/sloccount-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0ayiwfjdh1946asah861ah9269s5xkc8p5fv1wnxs9znyaxs4zzs"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (delete configure)
+                  (add-before build make-dotl-files-older
+                              (lambda _
+                                ;; Make the '.l' files as old as the '.c'
+                                ;; files to avoid triggering the rule that
+                                ;; requires Flex.
+                                (define ref
+                                  (stat "README"))
+
+                                (for-each (lambda (file)
+                                            (set-file-time file ref))
+                                          (find-files "." "\\.[chl]$"))
+                                #t))
+                  (add-before install make-target-directories
+                              (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"))
+                                  (mkdir-p (string-append out
+                                                          "/share/doc")))))
+                  (replace check
+                           (lambda _
+                             (setenv "HOME" (getcwd))
+                             (setenv "PATH"
+                                     (string-append (getcwd) ":"
+                                                    (getenv "PATH")))
+                             (zero? (system* "make" "test")))))
+
+        #:make-flags (list (string-append "PREFIX="
+                                          (assoc-ref %outputs "out")))))
+    (inputs `(("perl" ,perl)))
+    (home-page "http://www.dwheeler.com/sloccount/")
+    (synopsis "Count physical source lines of code (SLOC)")
+    (description
+     "SLOCCount is a set of the programs for counting source lines of
+code (SLOC) in large software systems.  It can automatically identify and
+measure a wide range of programming languages.  It automatically estimates the
+effort, time, and money it would take to develop the software, using the
+COCOMO model or user-provided parameters.")
+    (license gpl2+)))
diff --git a/gnu/packages/complexity.scm b/gnu/packages/complexity.scm
deleted file mode 100644
index f0cd11e245..0000000000
--- a/gnu/packages/complexity.scm
+++ /dev/null
@@ -1,50 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;;
-;;; 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 complexity)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix licenses)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages autogen))
-
-(define-public complexity
-  (package
-    (name "complexity")
-    (version "1.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/complexity/complexity-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d"))))
-    (build-system gnu-build-system)
-    (native-inputs
-     `(("texinfo" ,texinfo)
-       ("autogen" ,autogen)))
-    (home-page "http://www.gnu.org/software/complexity/")
-    (synopsis "Analyze complexity of C functions")
-    (description
-     "GNU complexity provides tools for finding procedures that are
-convoluted, overly long or otherwise difficult to understand.  This
-may help in learning or reviewing unfamiliar code or perhaps
-highlighting your own code that seemed comprehensible when you wrote it.")
-    (license gpl3+)))
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 721fb9e9b1..8b36766200 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -191,7 +191,7 @@ compressor.  It typically compresses files to within 10% to 15% of the best
 available techniques (the PPM family of statistical compressors), whilst
 being around twice as fast at compression and six times faster at
 decompression.")
-      (license (license:bsd-style "file://LICENSE"
+      (license (license:non-copyleft "file://LICENSE"
                                   "See LICENSE in the distribution."))
       (home-page "http://www.bzip.org/"))))
 
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 8792ddceaf..821a957615 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -83,6 +83,6 @@ curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading,
 HTTP form based upload, proxies, cookies, user+password authentication
 (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume,
 proxy tunneling, and so on")
-   (license (license:bsd-style "file://COPYING"
+   (license (license:non-copyleft "file://COPYING"
                        "See COPYING in the distribution."))
    (home-page "http://curl.haxx.se/")))
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 9880ace94f..8677cab1bd 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -61,6 +61,6 @@
 standards-track method for remote computers to authenticate.  The Cyrus SASL
 library makes supporting various SASL mechanisms easy for both client and
 server writers.")
-   (license (license:bsd-style "file://COPYING"
-                       "See COPYING in the distribution."))
+   (license (license:non-copyleft "file://COPYING"
+                                  "See COPYING in the distribution."))
    (home-page "http://cyrusimap.web.cmu.edu/index.php")))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 41fed2a6ac..1e2bece227 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
 (define-module (gnu packages databases)
   #:use-module (gnu packages)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages language)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages compression)
@@ -35,7 +37,7 @@
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages python)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style bsd-style
+                #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
                           public-domain))
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -84,8 +86,8 @@
     (description
      "Berkeley DB is an embeddable database allowing developers the choice of
 SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
-    (license (bsd-style "file://LICENSE"
-                        "See LICENSE in the distribution."))
+    (license (non-copyleft "file://LICENSE"
+                           "See LICENSE in the distribution."))
     (home-page
      "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
 
@@ -306,6 +308,140 @@ extremely small.")
     (home-page "http://search.cpan.org/~timb/DBI-1.631/DBI.pm")
     (license (package-license perl))))
 
+(define-public perl-dbix-class
+  (package
+    (name "perl-dbix-class")
+    (version "0.082810")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+                           "DBIx-Class-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zlsswk8j2k024gwhdhia8ksrmb8065n98dahkk8c0r69wv85n04"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
+       ("perl-file-temp" ,perl-file-temp)
+       ("perl-package-stash" ,perl-package-stash)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-warn" ,perl-test-warn)))
+    (propagated-inputs
+     `(("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
+       ("perl-class-c3-componentised" ,perl-class-c3-componentised)
+       ("perl-class-inspector" ,perl-class-inspector)
+       ("perl-config-any" ,perl-config-any)
+       ("perl-context-preserve" ,perl-context-preserve)
+       ("perl-data-dumper-concise" ,perl-data-dumper-concise)
+       ("perl-data-page" ,perl-data-page)
+       ("perl-dbi" ,perl-dbi)
+       ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
+       ("perl-hash-merge" ,perl-hash-merge)
+       ("perl-module-find" ,perl-module-find)
+       ("perl-moo" ,perl-moo)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-scalar-list-utils" ,perl-scalar-list-utils)
+       ("perl-scope-guard" ,perl-scope-guard)
+       ("perl-sql-abstract" ,perl-sql-abstract)
+       ("perl-sub-name" ,perl-sub-name)
+       ("perl-text-balanced" ,perl-text-balanced)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/DBIx-Class")
+    (synopsis "Extensible and flexible object <-> relational mapper")
+    (description "An SQL to OO mapper with an object API inspired by
+Class::DBI (with a compatibility layer as a springboard for porting) and a
+resultset API that allows abstract encapsulation of database operations.  It
+aims to make representing queries in your code as perl-ish as possible while
+still providing access to as many of the capabilities of the database as
+possible, including retrieving related records from multiple tables in a
+single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",
+\"ORDER BY\" and \"HAVING\" support.")
+    (license (package-license perl))))
+
+(define-public perl-dbix-class-introspectablem2m
+  (package
+    (name "perl-dbix-class-introspectablem2m")
+    (version "0.001001")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
+                           "DBIx-Class-IntrospectableM2M-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0p9zx1yc1f6jg583l206wilsni2v8mlngc2vf2q8yn10pmy4y6wm"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-dbix-class" ,perl-dbix-class)))
+    (home-page "http://search.cpan.org/dist/DBIx-Class-IntrospectableM2M")
+    (synopsis "Introspect many-to-many relationships")
+    (description "Because the many-to-many relationships are not real
+relationships, they can not be introspected with DBIx::Class.  Many-to-many
+relationships are actually just a collection of convenience methods installed
+to bridge two relationships.  This DBIx::Class component can be used to store
+all relevant information about these non-relationships so they can later be
+introspected and examined.")
+    (license (package-license perl))))
+
+(define-public perl-dbix-class-schema-loader
+  (package
+    (name "perl-dbix-class-schema-loader")
+    (version "0.07042")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
+                           "DBIx-Class-Schema-Loader-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0sb48as7azmj6s4acxh98wcvcik7lxm7dcjz1c3wdrkrbmbbz0jf"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-config-any" ,perl-config-any)
+       ("perl-config-general" ,perl-config-general)
+       ("perl-dbd-sqlite" ,perl-dbd-sqlite)
+       ("perl-dbix-class-introspectablem2m" ,perl-dbix-class-introspectablem2m)
+       ("perl-moose" ,perl-moose)
+       ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
+       ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-differences" ,perl-test-differences)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-warn" ,perl-test-warn)))
+    (propagated-inputs
+     `(("perl-class-unload" ,perl-class-unload)
+       ("perl-class-inspector" ,perl-class-inspector)
+       ("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
+       ("perl-class-c3-componentised" ,perl-class-c3-componentised)
+       ("perl-carp-clan" ,perl-carp-clan)
+       ("perl-data-dump" ,perl-data-dump)
+       ("perl-dbix-class" ,perl-dbix-class)
+       ("perl-hash-merge" ,perl-hash-merge)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-lingua-en-inflect-phrase" ,perl-lingua-en-inflect-phrase)
+       ("perl-lingua-en-inflect-number" ,perl-lingua-en-inflect-number)
+       ("perl-lingua-en-tagger" ,perl-lingua-en-tagger)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-scope-guard" ,perl-scope-guard)
+       ("perl-string-camelcase" ,perl-string-camelcase)
+       ("perl-string-toidentifier-en" ,perl-string-toidentifier-en)
+       ("perl-sub-name" ,perl-sub-name)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (arguments `(#:tests? #f))          ;TODO: t/20invocations.t fails
+    (home-page "http://search.cpan.org/dist/DBIx-Class-Schema-Loader")
+    (synopsis "Create a DBIx::Class::Schema based on a database")
+    (description "DBIx::Class::Schema::Loader automates the definition of a
+DBIx::Class::Schema by scanning database table definitions and setting up the
+columns, primary keys, unique constraints and relationships.")
+    (license (package-license perl))))
+
 (define-public perl-dbd-sqlite
   (package
     (name "perl-dbd-sqlite")
@@ -329,6 +465,37 @@ module, and nothing else.")
     (license (package-license perl))
     (home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm")))
 
+(define-public perl-sql-abstract
+  (package
+    (name "perl-sql-abstract")
+    (version "1.81")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+                           "SQL-Abstract-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17sgwq3mvqjhv3b77cnvrq60xgp8harjhlnvpwmxc914rqc5ckaz"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-warn" ,perl-test-warn)))
+    (propagated-inputs
+     `(("perl-hash-merge" ,perl-hash-merge)
+       ("perl-moo" ,perl-moo)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-text-balanced" ,perl-text-balanced)))
+    (home-page "http://search.cpan.org/dist/SQL-Abstract")
+    (synopsis "Generate SQL from Perl data structures")
+    (description "This module was inspired by the excellent DBIx::Abstract.
+While based on the concepts used by DBIx::Abstract, the concepts used have
+been modified to make the SQL easier to generate from Perl data structures.
+The underlying idea is for this module to do what you mean, based on the data
+structures you provide it, so that you don't have to modify your code every
+time your data changes")
+    (license (package-license perl))))
 
 (define-public unixodbc
   (package
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index afa8b8d99b..a661dcef85 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -99,8 +99,8 @@ program to exhibit a bug.")
     (inputs
      `(("astyle"          ,astyle)
        ("delta"           ,delta)
-       ("llvm"            ,llvm)
-       ("clang"           ,clang)
+       ("llvm"            ,llvm-3.5)
+       ("clang"           ,clang-3.5)
        ("flex"            ,flex)
        ("indent"          ,indent)
        ("perl"            ,perl)
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 345d0a26c1..b18e02a77e 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -17,14 +17,18 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages dictionaries)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages base)
-  #:use-module (gnu packages texinfo)
-  #:use-module ((gnu packages compression)
-                #:select (gzip)))
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages texinfo))
 
 (define-public vera
   (package
@@ -75,4 +79,37 @@
     (description
      "V.E.R.A. (Virtual Entity of Relevant Acronyms) is a list of computing
 acronyms distributed as an info document.")
-    (license fdl1.3+)))
+    (license license:fdl1.3+)))
+
+(define-public sdcv
+  (package
+    (name "sdcv")
+    (version "0.5.0-beta4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/project/sdcv/sdcv/sdcv-"
+                           version "-Source.tar.bz2"))
+       (sha256
+        (base32 "1b9v91al2c1499q6yx6q8jggid0714444mfj6myqgz3nvqjyrrqr"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("gettext" ,gnu-gettext)
+       ("readline" ,readline)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f ; no tests implemented
+       #:phases
+       ;; this is known workaround for missing lang files
+       (alist-cons-after 'build 'build-lang
+                         (lambda _ (zero? (system* "make" "lang")))
+                         %standard-phases)))
+    (home-page "http://sdcv.sourceforge.net/")
+    (synopsis "Command line variant of StarDict")
+    (description
+     "Sdcv is command line dictionary utility, which supports StarDict dictinary
+format.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
new file mode 100644
index 0000000000..47a76169f6
--- /dev/null
+++ b/gnu/packages/djvu.scm
@@ -0,0 +1,42 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.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 djvu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu))
+
+(define-public djvulibre
+  (package
+    (name "djvulibre")
+    (version "3.5.27")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/djvu/djvulibre-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0psh3zl9dj4n4r3lx25390nx34xz0bg0ql48zdskhq354ljni5p6"))))
+    (build-system gnu-build-system)
+    (home-page "http://djvu.sourceforge.net/")
+    (synopsis "Implementation of DjVu, the document format")
+    (description "DjVuLibre is an implementation of DjVu,
+including viewers, browser plugins, decoders, simple encoders, and
+utilities.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/dnsmasq.scm b/gnu/packages/dns.scm
index f342f818c4..f0c103ab2d 100644
--- a/gnu/packages/dnsmasq.scm
+++ b/gnu/packages/dns.scm
@@ -16,8 +16,14 @@
 ;;; 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 dnsmasq)
-  #:use-module (guix licenses)
+(define-module (gnu packages dns)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages xml)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu))
@@ -53,4 +59,54 @@ addresses to appear in the DNS with names configured either in each host or in
 a central configuration file.  Dnsmasq supports static and dynamic DHCP leases
 and BOOTP/TFTP for network booting of diskless machines.")
     ;; Source files only say GPL2 and GPL3 are allowed.
-    (license (list gpl2 gpl3))))
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public bind-utils
+  (package
+    (name "bind-utils")
+    (version "9.10.1-P2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "ftp://ftp.isc.org/isc/bind9/" version
+                                  "/bind-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1svzia5vv0s4bv6r04j8bsvlf3klwyigmdz1iwb4fqds00iyvp22"))))
+    (build-system gnu-build-system)
+    (inputs
+     ;; it would be nice to add GeoIP and gssapi once there is package
+     `(("libcap" ,libcap)
+       ("libxml2" ,libxml2)
+       ("mysql" ,mysql)
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("p11-kit" ,p11-kit)))
+    (arguments
+     `(#:tests? #f ; no test phase implemented
+       #:configure-flags
+       (list (string-append "--with-openssl="
+                            (assoc-ref %build-inputs "openssl"))
+             (string-append "--with-dlz-mysql="
+                            (assoc-ref %build-inputs "mysql"))
+             (string-append "--with-pkcs11="
+                            (assoc-ref %build-inputs "p11-kit")))
+       #:phases
+       (alist-replace
+        'build
+        (lambda _
+          (and (zero? (system* "make" "-C" "lib/dns"))
+               (zero? (system* "make" "-C" "lib/isc"))
+               (zero? (system* "make" "-C" "lib/bind9"))
+               (zero? (system* "make" "-C" "lib/isccfg"))
+               (zero? (system* "make" "-C" "lib/lwres"))
+               (zero? (system* "make" "-C" "bin/dig"))))
+        (alist-replace
+         'install
+         (lambda _ (zero? (system* "make" "-C" "bin/dig" "install")))
+         %standard-phases))))
+    (home-page "https://www.isc.org/downloads/bind/")
+    (synopsis "Tools for querying nameservers")
+    (description
+     "These tools, included with ISC BIND, are useful for analysis of DNS
+issues or verification of configuration.")
+    (license (list license:isc))))
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index e4d609aaf2..196cbaeea3 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -17,11 +17,27 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages ebook)
-  #:use-module ((guix licenses) #:select (lgpl2.1+))
+  #:use-module ((guix licenses) #:select (gpl3 lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module (gnu packages))
+  #:use-module (gnu packages)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages ebook)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages libusb)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages xorg))
 
 (define-public chmlib
   (package
@@ -40,3 +56,90 @@
     (synopsis "Library for CHM files")
     (description "CHMLIB is a library for dealing with ITSS/CHM format files.")
     (license lgpl2.1+)))
+
+(define-public calibre
+  (package
+    (name "calibre")
+    (version "2.21.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "http://download.calibre-ebook.com/"
+                            version "/calibre-"
+                            version ".tar.xz"))
+        (sha256
+          (base32
+           "1adig2jxwbmsxcs36jaybhc8zdb8mnkc23kabw0c72izrsg4c5gb"))
+        ;; Remove non-free or doubtful code, see
+        ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
+        (modules '((guix build utils)))
+        (snippet
+          '(begin
+            (delete-file-recursively "src/unrar")
+            (delete-file "src/odf/thumbnail.py")))
+        (patches (list (search-patch "calibre-drop-unrar.patch")))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qt" ,qt) ; for qmake
+       ;; xdg-utils is supposed to be used for desktop integration, but it
+       ;; also creates lots of messages
+       ;; mkdir: cannot create directory '/homeless-shelter': Permission denied
+       ("xdg-utils" ,xdg-utils)))
+    ;; FIXME: The following are missing inputs according to the documentation,
+    ;; but the package can apparently be used without them,
+    ;; They may need to be added if a deficiency is detected.
+    ;; BeautifulSoup >= 3.0.5
+    ;; dnspython >= 1.6.0
+    ;; poppler >= 0.20.2
+    ;; libwmf >= 0.2.8
+    ;; psutil >= 0.6.1
+    ;; python-pygments >= 2.0.1 ; used for ebook editing
+    (inputs
+     `(("chmlib" ,chmlib)
+       ("fontconfig" ,fontconfig)
+       ("glib" ,glib)
+       ("icu4c" ,icu4c)
+       ("imagemagick" ,imagemagick)
+       ("libmtp" ,libmtp)
+       ("libpng" ,libpng)
+       ("libusb" ,libusb)
+       ("libxrender" ,libxrender)
+       ("podofo" ,podofo)
+       ("python" ,python-2)
+       ("python2-apsw" ,python2-apsw)
+       ("python2-cssselect" ,python2-cssselect)
+       ("python2-cssutils" ,python2-cssutils)
+       ("python2-dateutil" ,python2-dateutil)
+       ("python2-dbus" ,python2-dbus)
+       ("python2-lxml" ,python2-lxml)
+       ("python2-mechanize" ,python2-mechanize)
+       ("python2-netifaces" ,python2-netifaces)
+       ("python2-pillow" ,python2-pillow)
+       ("python2-pyqt" ,python2-pyqt)
+       ("python2-sip" ,python2-sip)
+       ("qt" ,qt)
+       ("sqlite" ,sqlite)))
+    (arguments
+     `(#:python ,python-2
+       #:test-target "check"
+       #:tests? #f ; FIXME: enable once flake8 is packaged
+       #:phases
+         (alist-cons-before
+          'build 'configure
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((podofo (assoc-ref inputs "podofo"))
+                  (pyqt (assoc-ref inputs "python2-pyqt")))
+              (substitute* "setup/build_environment.py"
+                (("sys.prefix") (string-append "'" pyqt "'")))
+              (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo"))
+              (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib"))))
+          %standard-phases)))
+    (home-page "http://calibre-ebook.com/")
+    (synopsis "E-book library management software")
+    (description "Calibre is an ebook library manager.  It can view, convert
+and catalog ebooks in most of the major ebook formats.  It can also talk
+to many ebook reader devices.  It can go out to the Internet and fetch
+metadata for books.  It can download newspapers and convert them into
+ebooks for convenient reading.")
+    (license gpl3))) ; some files are under various other licenses, see COPYRIGHT
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
new file mode 100644
index 0000000000..88b462c232
--- /dev/null
+++ b/gnu/packages/engineering.scm
@@ -0,0 +1,198 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 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 engineering)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
+  #:use-module ((gnu packages linux) #:select (eudev)) ; FIXME: for pcb
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages tcl)
+  #:use-module (srfi srfi-1))
+
+(define-public librecad
+  (package
+    (name "librecad")
+    (version "2.0.6-rc")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/LibreCAD/LibreCAD/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version))
+              (sha256
+               (base32
+                "1n1mh8asj6yrl5hi438dvizmrbqk1kni5xkizhi3pdmkg7z3hksm"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (alist-cons-after
+        'unpack
+        'patch-paths
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let ((out (assoc-ref outputs "out")))
+            (substitute* "librecad/src/lib/engine/rs_system.cpp"
+              (("/usr/share") (string-append out "/share")))))
+        (alist-replace
+         'configure
+         (lambda* (#:key inputs #:allow-other-keys)
+           (system* "qmake" (string-append "BOOST_DIR="
+                                           (assoc-ref inputs "boost"))))
+         (alist-replace
+          '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/librecad"))
+              (copy-file "unix/librecad"
+                         (string-append out "/bin/librecad"))
+              (copy-recursively "unix/resources"
+                                (string-append out "/share/librecad"))))
+          %standard-phases)))))
+    (inputs
+     `(("boost" ,boost)
+       ("muparser" ,muparser)
+       ("freetype" ,freetype)
+       ("qt" ,qt-4)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("which" ,which)))
+    (home-page "http://librecad.org/")
+    (synopsis "Computer-aided design (CAD) application")
+    (description
+     "LibreCAD is a 2D Computer-aided design (CAD) application for creating
+plans and designs.")
+    (license license:gpl2)))
+
+(define-public geda-gaf
+  (package
+    (name "geda-gaf")
+    (version "1.8.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://ftp.geda-project.org/geda-gaf/stable/v"
+                    (version-major+minor version) "/"
+                    version "/geda-gaf-" version ".tar.gz"))
+              (sha256
+               (base32
+                "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       ;; tests require a writable HOME
+       (alist-cons-before
+        'check 'set-home
+        (lambda _
+          (setenv "HOME" (getenv "TMPDIR")))
+        %standard-phases)))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk" ,gtk+-2)
+       ("guile" ,guile-2.0)
+       ("desktop-file-utils" ,desktop-file-utils)
+       ("shared-mime-info" ,shared-mime-info)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("perl" ,perl))) ; for tests
+    (home-page "http://geda-project.org/")
+    (synopsis "Schematic capture, netlister, symbols, symbol checker, and utils")
+    (description
+     "gaf stands for “gschem and friends”.  It is a subset of the entire tool
+suite grouped together under the gEDA name.  gEDA/gaf is a collection of tools
+which currently includes: gschem, a schematic capture program; gnetlist, a
+netlist generation program; gsymcheck, a syntax checker for schematic symbols;
+gattrib, a spreadsheet programm that manipulates the properties of symbols of
+a schematic; libgeda, libraries for gschem gnetlist and gsymcheck; gsch2pcb, a
+tool to forward annotation from your schematic to layout using PCB; some minor
+utilities.")
+    (license license:gpl2+)))
+
+(define-public pcb
+  (package
+    (name "pcb")
+    (version "20140316")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://ftp.geda-project.org/pcb/pcb-" version "/pcb-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "0l6944hq79qsyp60i5ai02xwyp8l47q7xdm3js0jfkpf72ag7i42"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (alist-cons-after
+        'unpack 'use-wish8.6
+        (lambda _
+          (substitute* "configure"
+            (("wish85") "wish8.6")))
+        (alist-cons-after
+         'install 'wrap
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           ;; FIXME: Mesa tries to dlopen libudev.so.0 and fails.  Pending a
+           ;; fix of the mesa package we wrap the pcb executable such that
+           ;; Mesa can find libudev.so.0 through LD_LIBRARY_PATH.
+           (let* ((out (assoc-ref outputs "out"))
+                  (path (string-append (assoc-ref inputs "udev") "/lib")))
+             (wrap-program (string-append out "/bin/pcb")
+               `("LD_LIBRARY_PATH" ":" prefix (,path)))))
+         %standard-phases))))
+    (inputs
+     `(("dbus" ,dbus)
+       ("mesa" ,mesa)
+       ("udev" ,eudev) ;FIXME: required by mesa
+       ("glu" ,glu)
+       ("gd" ,gd)
+       ("gtk" ,gtk+-2)
+       ("gtkglext" ,gtkglext)
+       ("desktop-file-utils" ,desktop-file-utils)
+       ("shared-mime-info" ,shared-mime-info)
+       ("tk" ,tk)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("bison" ,bison)
+       ("flex" ,flex)))
+    (home-page "http://pcb.geda-project.org/")
+    (synopsis "Design printed circuit board layouts")
+    (description
+     "GNU PCB is an interactive tool for editing printed circuit board
+layouts.  It features a rats-nest implementation, schematic/netlist import,
+and design rule checking.  It also includes an autorouter and a trace
+optimizer; and it can produce photorealistic and design review images.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 499ea24634..4a59e67ed8 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -28,6 +28,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages game-development)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -234,3 +235,40 @@ based on Enlightenment Foundation Libraries.  It supports multiple tabs, UTF-8,
 URL and local path detection, themes, popup based content viewer for non-text
 contents and more.")
     (license license:bsd-2)))
+
+(define-public enlightenment
+  (package
+    (name "enlightenment")
+    (version "0.19.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "http://download.enlightenment.org/rel/apps/enlightenment/enlightenment-"
+                version ".tar.gz"))
+              (sha256
+               (base32 "01pg3ng4m3vmwzzivlssdmvhf72bsvcmm3xwf45849cibllaib8v"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("dbus" ,dbus)
+       ("freetype" ,freetype)
+       ("gettext" ,gnu-gettext)
+       ("libxcb" ,libxcb)
+       ("libxext" ,libxext)
+       ("linux-pam" ,linux-pam)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)))
+    (propagated-inputs
+     ;; both these inputs are present in pkgconfig file in Require section
+     `(("efl" ,efl) ; enlightenment.pc
+       ("elementary" ,elementary))) ; enlightenment.pc
+    (home-page "http://www.enlightenment.org")
+    (synopsis "Lightweight desktop environment")
+    (description
+     "Enlightenment is resource friendly desktop environment with integrated
+file manager, wide range of configuration options, plugin system allowing to
+unload unused functionality, with support for touchscreen and suitable for
+embedded systems.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 68f4e37849..156f3342d3 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -80,4 +80,4 @@
      "This is the firmware for the Qualcomm Atheros AR7010 and AR9271 USB
 802.11n NICs (aka. Wi-Fi USB dongles.)  It is used by the ath9k driver of
 Linux-libre.")
-    (license (bsd-style "http://directory.fsf.org/wiki/License:ClearBSD"))))
+    (license (non-copyleft "http://directory.fsf.org/wiki/License:ClearBSD"))))
diff --git a/gnu/packages/fish.scm b/gnu/packages/fish.scm
index 9398446a0c..629e5f7b46 100644
--- a/gnu/packages/fish.scm
+++ b/gnu/packages/fish.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public fish
   (package
     (name "fish")
-    (version "2.1.1")
+    (version "2.1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://fishshell.com/files/"
                                   version "/fish-" version ".tar.gz"))
               (sha256
                (base32
-                "096rhi911s3j618cvp8fj9pb4jniy3y6415jvjg8bhszsp1x7r5p"))
+                "1pgnz5lapm4qk48a13k9698jaswybzlbz2nyc621d852ldf0vhn6"))
               (modules '((guix build utils)))
               ;; Don't try to install /etc/fish/config.fish.
               (snippet
diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm
index 0b290857fa..e76535cc17 100644
--- a/gnu/packages/flex.scm
+++ b/gnu/packages/flex.scm
@@ -75,6 +75,6 @@ can be compiled and linked to produce an executable.  When the executable
 is run, it analyzes its input for occurrences of text matching the
 regular expressions for each rule.  Whenever it finds a match, it
 executes the corresponding C code.")
-    (license (bsd-style "file://COPYING"
+    (license (non-copyleft "file://COPYING"
                         "See COPYING in the distribution."))))
 
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 77abc2b700..40b17220b9 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -359,3 +359,50 @@ 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)))
+
+(define-public font-wqy-zenhei
+  (package
+    (name "font-wqy-zenhei")
+    (version "0.9.45")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/wqy/wqy-zenhei-"
+                    version ".tar.gz"))
+              (file-name (string-append "wqy-zenhei-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mkmxq8g2hjcglb3zajfqj20r4r88l78ymsp2xyl5yav8w3f7dz4"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((PATH (string-append (assoc-ref %build-inputs "tar")  "/bin:"
+                                    (assoc-ref %build-inputs "gzip") "/bin"))
+               (font-dir (string-append (assoc-ref %outputs "out")
+                                        "/share/fonts/wenquanyi/")))
+           (setenv "PATH" PATH)
+           (mkdir-p font-dir)
+           (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
+           (chdir "wqy-zenhei")
+           (copy-file "wqy-zenhei.ttc"
+                      (string-append font-dir "wqy-zenhei.ttc"))))))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("tar" ,tar)))
+    (home-page "http://wenq.org/wqy2/")
+    (synopsis "CJK font")
+    (description
+     "WenQuanYi Zen Hei is a Hei-Ti style (sans-serif type) Chinese outline
+font.  It is designed for general purpose text formatting and on-screen
+display of Chinese characters and symbols from many other languages.
+WenQuanYi Zen Hei provides a rather complete coverage to Chinese Hanzi glyphs,
+including both simplified and traditional forms.  The total glyph number in
+this font is over 35,000, including over 21,000 Chinese Hanzi.  This font has
+full coverage to GBK(CP936) charset, CJK Unified Ideographs, as well as the
+code-points needed for zh_cn, zh_sg, zh_tw, zh_hk, zh_mo, ja (Japanese) and
+ko (Korean) locales for fontconfig.")
+    ;; GPLv2 with font embedding exception
+    (license license:gpl2)))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 52e34e516f..c04f24b83c 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -103,7 +103,7 @@ efficiently and quickly find needed fonts among the set of installed fonts;
 be used in concert with the X Render Extension and FreeType to implement
 high quality, anti-aliased and subpixel rendered text on a display.")
    ; The exact license is more X11-style than BSD-style.
-   (license (license:bsd-style "file://COPYING"
+   (license (license:non-copyleft "file://COPYING"
                        "See COPYING in the distribution."))
    (home-page "http://www.freedesktop.org/wiki/Software/fontconfig")))
 
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index f002122bb6..22ea1af965 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,7 +40,10 @@
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1grmp8zg7cjgjinz66mrh53whigkqzl90nlxj05hapnhk3ns3vni"))))
+                "1grmp8zg7cjgjinz66mrh53whigkqzl90nlxj05hapnhk3ns3vni"))
+              (patches
+               (list (search-patch
+                      "lftp-dont-save-unknown-host-fingerprint.patch")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 9c02d88eab..192d0db397 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -33,6 +33,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -250,7 +251,7 @@ level's exit.  The game is presented in a 2D side view.")
      (origin
        (method url-fetch)
        (uri (string-append "http://www.hyperrealm.com/" name "/"
-                           name  "-" version  ".tar.gz")) 
+                           name  "-" version  ".tar.gz"))
        (sha256
         (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
     (build-system gnu-build-system)
@@ -440,21 +441,21 @@ Portable Game Notation.")
      `(#:tests? #f
        #:phases
        (alist-replace
-        'configure 
+        'configure
         (lambda* (#:key outputs #:allow-other-keys)
-          
-          (substitute* "Imakefile" 
+
+          (substitute* "Imakefile"
             (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
              (string-append "XPMINCLUDE = -I" (assoc-ref %build-inputs "libxpm")
                             "/include/X11")))
-          
-          (substitute* "Imakefile" 
+
+          (substitute* "Imakefile"
             (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
-          
+
           ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
-          
-          (zero? (system* "xmkmf" "-a" 
-                          (string-append "-DProjectRoot=" 
+
+          (zero? (system* "xmkmf" "-a"
+                          (string-append "-DProjectRoot="
                                          (assoc-ref outputs "out")))))
         (alist-replace 'install
                        (lambda* (#:key outputs #:allow-other-keys)
@@ -512,35 +513,6 @@ alternative layouts Dvorak and Colemak, as well as for the numpad.  Tutorials
 are primarily in English, however some in other languages are provided.")
     (license license:gpl3+)))
 
-(define-public openal
-  (package
-    (name "openal")
-    (version "1.15.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://kcat.strangesoft.net/openal-releases/openal-soft-"
-                    version ".tar.bz2"))
-              (sha256
-               (base32
-                "0mmhdqiyb3c9dzvxspm8h2v8jibhi8pfjxnf6m0wn744y1ia2a8f"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f)) ; no check target
-    (inputs
-     `(("alsa-lib" ,alsa-lib)
-       ("pulseaudio" ,pulseaudio)))
-    (synopsis "3D audio API")
-    (description
-     "OpenAL provides capabilities for playing audio in a virtual 3D
-environment.  Distance attenuation, doppler shift, and directional sound
-emitters are among the features handled by the API.  More advanced effects,
-including air absorption, occlusion, and environmental reverb, are available
-through the EFX extension.  It also facilitates streaming audio, multi-channel
-buffers, and audio capture.")
-    (home-page "http://kcat.strangesoft.net/openal.html")
-    (license license:lgpl2.0+)))
-
 (define-public irrlicht
   (package
     (name "irrlicht")
@@ -599,7 +571,7 @@ for common mesh file formats, and collision detection.")
 (define minetest-data
   (package
     (name "minetest-data")
-    (version "0.4.11")
+    (version "0.4.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -608,7 +580,7 @@ for common mesh file formats, and collision detection.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0hzb27srv6f2j84dpxx2p0p0aaq9vdp5jvbrfpklb5q5ssdjxvc6"))))
+                "0642vy6r6sv96mz6wbs9qvyr95vd69zj4fxiljdg9801javrmm9p"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("source" ,source)
@@ -640,7 +612,7 @@ for common mesh file formats, and collision detection.")
 (define-public minetest
   (package
     (name "minetest")
-    (version "0.4.11")
+    (version "0.4.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -649,30 +621,19 @@ for common mesh file formats, and collision detection.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0h223svzkvp63b77nqfxy7k8whw4543gahs3kxd3x4myi5ax5z5f"))))
+                "1pqp8hfwg5wkimig8j5jrihzgjjgplxr24w5xisrxvx1hlvnczdk"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:modules ((guix build utils)
-                  (guix build cmake-build-system)
-                  (ice-9 match))
-       #:phases (alist-cons-before
-                 'configure 'set-cpath
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   (use-modules (ice-9 match))
-                   ;; Adjust the CPATH so that cmake can find irrlicht,
-                   ;; openal, and curl headers.
-                   (set-path-environment-variable "CPATH"
-                                                  '("include/AL"
-                                                    "include/irrlicht"
-                                                    "include/curl"
-                                                    "include")
-                                                  (map (match-lambda
-                                                        ((_ . dir) dir))
-                                                       inputs)))
-                 %standard-phases)
-       #:configure-flags '("-DRUN_IN_PLACE=0"
-                           "-DENABLE_FREETYPE=1"
-                           "-DENABLE_GETTEXT=1")
+     '(#:configure-flags
+         (list "-DRUN_IN_PLACE=0"
+               "-DENABLE_FREETYPE=1"
+               "-DENABLE_GETTEXT=1"
+               (string-append "-DIRRLICHT_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "irrlicht")
+                              "/include/irrlicht")
+               (string-append "-DCURL_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "curl")
+                              "/include/curl"))
        #:tests? #f)) ; no check target
     (native-search-paths
      (list (search-path-specification
@@ -683,7 +644,7 @@ for common mesh file formats, and collision detection.")
     (inputs
      `(("irrlicht" ,irrlicht)
        ("libpng" ,libpng)
-       ("libjpeg-8" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("libxxf86vm" ,libxxf86vm)
        ("mesa" ,mesa)
        ("libogg" ,libogg)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 6143f5b335..27e40f2f66 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1,6 +1,8 @@
 ;;; 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 © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -338,14 +340,22 @@ Go.  It also includes runtime support libraries for these languages.")
               ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
               #:separate-lib-output? #f))
 
+(define javac.in
+  (origin
+    (method url-fetch)
+    (uri (string-append "http://sources.gentoo.org/cgi-bin/viewvc.cgi/"
+                        "gentoo-x86/dev-java/gcj-jdk/files/javac.in?revision=1.1"))
+    (file-name "javac.in")
+    (sha256 (base32
+              "1c3dk4z5yfj6ic2fn3lyxs27n6pmn2wy9k0r1s17lnkf1bzkrciv"))))
+
 (define-public gcj-4.8
   (package (inherit gcc-4.8)
     (name "gcj")
     (inputs
      `(("fastjar" ,fastjar)
        ("perl" ,perl)
-       ("javac.in" ,(search-path %load-path
-                                 "gnu/packages/javac.in"))
+       ("javac.in" ,javac.in)
        ("ecj-bootstrap" ,ecj-bootstrap-4.8)
        ,@(package-inputs gcc-4.8)))
     ;; Suppress the separate "lib" output, because otherwise the
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 2d6ccb8d7d..e27103778c 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -26,7 +26,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages pkg-config)
-  #:use-module ((guix licenses) #:select (bsd-style)))
+  #:use-module ((guix licenses) #:select (non-copyleft)))
 
 (define-public gd
   (package
@@ -64,5 +64,5 @@ languages.  GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other
 formats.  GD is commonly used to generate charts, graphics, thumbnails, and
 most anything else, on the fly.  While not restricted to use on the web, the
 most common applications of GD involve website development.")
-    (license (bsd-style "file://COPYING"
+    (license (non-copyleft "file://COPYING"
                         "See COPYING file in the distribution."))))
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index e2d4e618fa..08d1c69a57 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -114,7 +114,7 @@ documents.  Programs included are psnup, for placing out several logical pages
 on a single sheet of paper, psselect, for selecting pages from a document,
 pstops, for general imposition, psbook, for signature generation for booklet
 printing, and psresize, for adjusting page sizes.")
-   (license (license:bsd-style "file://LICENSE"
+   (license (license:non-copyleft "file://LICENSE"
                                 "See LICENSE in the distribution."))
    (home-page "http://knackered.org/angus/psutils/")))
 
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 0eb2d2609e..7d549d38e5 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -82,8 +82,8 @@ as ASCII text.")
 	      ("libxrandr" ,libxrandr)
 	      ("libxxf86vm" ,libxxf86vm)
 	      ("inputproto" ,inputproto)
-	      ("xinput" ,xinput)
-	      ("glu" ,glu)))
+	      ("xinput" ,xinput)))
+    (propagated-inputs `(("glu" ,glu)))
     (home-page "http://freeglut.sourceforge.net/")
     (synopsis "Alternative to the OpenGL Utility Toolkit (GLUT)")
     (description
diff --git a/gnu/packages/global.scm b/gnu/packages/global.scm
deleted file mode 100644
index 99d83f4f9b..0000000000
--- a/gnu/packages/global.scm
+++ /dev/null
@@ -1,67 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2015 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 global)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages))
-
-(define-public global                             ; a global variable
-  (package
-    (name "global")
-    (version "6.3.4")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/global/global-"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "0hcplcayyjf42d8ygzla6142b5dq4ybq4wg3n3cgx3b5yfhvic85"))))
-    (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)
-              ("libltdl" ,libltdl)))
-    (arguments
-     `(#:configure-flags
-       (list (string-append "--with-ncurses="
-                            (assoc-ref %build-inputs "ncurses")))
-
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Install the Emacs Lisp file in the right place.
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (data (string-append out "/share/gtags"))
-                          (lisp (string-append out "/share/emacs/site-lisp")))
-                     (mkdir-p lisp)
-                     (copy-file (string-append data "/gtags.el")
-                                (string-append lisp "/gtags.el"))
-                     (delete-file (string-append data "/gtags.el"))
-                     #t))
-                 %standard-phases)))
-    (home-page "http://www.gnu.org/software/global/")
-    (synopsis "Cross-environment source code tag system")
-    (description
-     "GLOBAL is a source code tagging system that functions in the same way
-across a wide array of environments, such as different text editors, shells
-and web browsers.  The resulting tags are useful for quickly moving around in
-a large, deeply nested project.")
-    (license gpl3+)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 52be520df5..3b70e27816 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1089,7 +1089,14 @@ widgets built in the loading process.")
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "129ka3nn8gx9dlfry17ib79azxk45wzfv5rgqzw6dwx2b5ns8phm"))))
+                "129ka3nn8gx9dlfry17ib79azxk45wzfv5rgqzw6dwx2b5ns8phm"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Adapt to newer freetype. As the package is deprecated, there
+               ;; is no use in creating a patch and reporting it.
+               '(substitute* '("libgnomeprint/gnome-font-face.c"
+                               "libgnomeprint/gnome-rfont.c")
+                  (("freetype/") "freetype2/")))))
     (build-system gnu-build-system)
     (inputs
      `(("popt" ,popt)
@@ -1583,3 +1590,34 @@ Extension known as XKB.  This library is indended to support XFree86 and other
 commercial X servers. It is useful for creating XKB-related software (layout
 indicators etc).")
     (license license:lgpl2.0+)))
+
+(define-public python2-rsvg
+  ;; XXX: This is actually a subset of gnome-python-desktop.
+  (package
+    (name "python2-rsvg")
+    (version "2.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://gnome/sources/gnome-python-desktop/2.32/gnome-python-desktop-"
+             version ".tar.bz2"))
+       (sha256
+        (base32
+         "1s8f9rns9v7qlwjv9qh9lr8crp88dpzfm45hj47zc3ivpy0dbnq9"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python" ,python-2)
+       ("python2-pygtk" ,python2-pygtk)
+       ("librsvg" ,librsvg)))
+    (home-page "http://www.gnome.org")
+    (synopsis "Python bindings to librsvg")
+    (description
+     "This packages provides Python bindings to librsvg, the SVG rendering
+library.")
+
+    ;; This is the license of the rsvg bindings.  The license of each module
+    ;; of gnome-python-desktop is given in 'COPYING'.
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 4158c05112..e50de7cc5d 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -187,32 +187,21 @@ and support for SSL3 and TLS.")
     "Gnurl is a microfork of cURL, a command line tool for transferring data
 with URL syntax.  While cURL supports many crypto backends, libgnurl only
 supports HTTPS, HTTPS and GnuTLS.")
-   (license (license:bsd-style "file://COPYING"
-                       "See COPYING in the distribution."))
+   (license (license:non-copyleft "file://COPYING"
+                                  "See COPYING in the distribution."))
    (home-page "https://gnunet.org/gnurl")))
 
 (define-public gnunet
   (package
    (name "gnunet")
-   (version "0.10.0")
+   (version "0.10.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnunet/gnunet-" version
                           ".tar.gz"))
       (sha256 (base32
-               "0zqpc47kywhjrpphl0palz849khv00ra2gjrfkysp6p0gfsbvd0i"))
-      (patches
-       (list
-        ;; Patch to fix serious bug in scheduler; upstream commit: #31747
-        (search-patch "gnunet-fix-scheduler.patch")
-        ;; Patch to fix bugs in testcases:
-        ;; * Disable peerinfo-tool tests as they depend on reverse DNS lookups
-        ;; * Allow revocation and integration-tests testcases to run on
-        ;;   loopback; upstream: #32130, #32326
-        ;; * Skip GNS testcases requiring DNS lookups; upstream: #32118
-        (search-patch "gnunet-fix-tests.patch")))
-      (patch-flags '("-p0"))))
+               "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
    (build-system gnu-build-system)
    (inputs
     `(("glpk" ,glpk)
@@ -233,13 +222,16 @@ supports HTTPS, HTTPS and GnuTLS.")
     `(("pkg-config" ,pkg-config)
       ("python" ,python-2)))
    (arguments
-    '(#:phases
+    '(#:parallel-tests? #f
+      ;; test_gnunet_service_arm fails; reported upstream
+      #:tests? #f
+      #:phases
         ;; swap check and install phases and set paths to installed binaries
         (alist-cons-before
          'check 'set-path-for-check
          (lambda* (#:key outputs #:allow-other-keys)
           (let ((out (assoc-ref outputs "out")))
-           (setenv "GNUNET_PREFIX" out)
+           (setenv "GNUNET_PREFIX" (string-append out "/lib"))
            (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))))
          (alist-cons-after
           'install 'check
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index b920f83c93..7a16b4161a 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -20,14 +20,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages gnupg)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pth)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
-  #:use-module ((gnu packages compression) #:prefix guix:)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages pkg-config)
@@ -56,7 +56,7 @@
 for all GnuPG components.  Among these are GPG, GPGSM, GPGME,
 GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard
 Daemon and possibly more in the future.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libgcrypt
   (package
@@ -90,7 +90,7 @@ Daemon and possibly more in the future.")
 standard cryptographic building blocks such as symmetric ciphers, hash
 algorithms, public key algorithms, large integer functions and random number
 generation.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libgcrypt-1.5
   (package (inherit libgcrypt)
@@ -127,7 +127,7 @@ generation.")
 protocol.  This protocol is used for IPC between most newer
 GnuPG components.  Both, server and client side functions are
 provided.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libksba
   (package
@@ -160,7 +160,7 @@ provided.")
      "KSBA (pronounced Kasbah) is a library to make X.509 certificates
 as well as the CMS easily accessible by other applications.  Both
 specifications are building blocks of S/MIME and TLS.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public npth
   (package
@@ -185,7 +185,7 @@ threads implementation.
 In contrast to GNU Pth is is based on the system's standard threads
 implementation.  This allows the use of libraries which are not
 compatible to GNU Pth.")
-    (license (list lgpl3+ gpl2+)))) ; dual license
+    (license (list license:lgpl3+ license:gpl2+)))) ; dual license
 
 (define-public gnupg
   (package
@@ -200,7 +200,7 @@ compatible to GNU Pth.")
                 "14k7c5spai3yppz6izf1ggbnffskl54ln87v1wgy9pwism1mlks0"))))
     (build-system gnu-build-system)
     (inputs
-     `(("bzip2" ,guix:bzip2)
+     `(("bzip2" ,bzip2)
        ("curl" ,curl)
        ("libassuan" ,libassuan)
        ("libgcrypt" ,libgcrypt)
@@ -208,7 +208,7 @@ compatible to GNU Pth.")
        ("libksba" ,libksba)
        ("npth" ,npth)
        ("openldap" ,openldap)
-       ("zlib" ,guix:zlib)
+       ("zlib" ,zlib)
        ("readline" ,readline)))
    (arguments
     `(#:phases
@@ -227,7 +227,7 @@ features powerful key management and the ability to access public key
 servers.  It includes several libraries: libassuan (IPC between GnuPG
 components), libgpg-error (centralized GnuPG error values), and
 libskba (working with X.509 certificates and CMS data).")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public gnupg-2.0
   (package (inherit gnupg)
@@ -240,7 +240,7 @@ libskba (working with X.509 certificates and CMS data).")
                (base32
                 "1wihx7dphacg9fy5wfj93h236lr1w5gwzh7ir3js37wi9cz6sr2p"))))
     (inputs
-     `(("bzip2" ,guix:bzip2)
+     `(("bzip2" ,bzip2)
        ("curl" ,curl)
        ("libassuan" ,libassuan)
        ("libgcrypt" ,libgcrypt)
@@ -248,7 +248,7 @@ libskba (working with X.509 certificates and CMS data).")
        ("libksba" ,libksba)
        ("pth" ,pth)
        ("openldap" ,openldap)
-       ("zlib" ,guix:zlib)
+       ("zlib" ,zlib)
        ("readline" ,readline)))
    (arguments
     `(#:phases
@@ -270,8 +270,8 @@ libskba (working with X.509 certificates and CMS data).")
                (base32
                 "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz"))))
     (inputs
-     `(("zlib" ,guix:zlib)
-       ("bzip2" ,guix:bzip2)
+     `(("zlib" ,zlib)
+       ("bzip2" ,bzip2)
        ("curl" ,curl)
        ("readline" ,readline)
        ("libgpg-error" ,libgpg-error)))
@@ -315,7 +315,7 @@ Because the direct use of GnuPG from an application can be a complicated
 programming task, it is suggested that all software should try to use GPGME
 instead.  This way bug fixes or improvements can be done at a central place
 and every application benefits from this.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public pius
   (package
@@ -363,7 +363,7 @@ to the process.
 
 pius-keyring-mgr and pius-party-worksheet help organisers of
 PGP keysigning parties.")
-   (license gpl2)
+   (license license:gpl2)
    (home-page "http://www.phildev.net/pius/index.shtml")))
 
 (define-public signing-party
@@ -463,7 +463,7 @@ including tools for signing keys, keyring analysis, and party preparation.
    ;; gpl2+ for almost all programs, except for keyanalyze: gpl2
    ;; and caff and gpgsigs: bsd-3, see
    ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright
-   (license gpl2)
+   (license license:gpl2)
    (home-page "http://pgp-tools.alioth.debian.org/")))
 
 (define-public pinentry
@@ -489,7 +489,7 @@ including tools for signing keys, keyring analysis, and party preparation.
     (description
      "Pinentry provides a console and a GTK+ GUI that allows users to
 enter a passphrase when `gpg' or `gpg2' is run and needs it.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public paperkey
   (package
@@ -521,4 +521,4 @@ for printing with paper and ink, which have amazingly long retention
 qualities.  To reconstruct a secret key, you re-enter those
 bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
 them to transform your existing public key into a secret key.")
-    (license gpl2+)))
+    (license license:gpl2+)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 335cfd1983..1d450cda64 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -89,7 +89,7 @@ in C/C++.")
 (define-public nspr
   (package
     (name "nspr")
-    (version "4.10.7")
+    (version "4.10.8")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -97,7 +97,7 @@ in C/C++.")
                    version "/src/nspr-" version ".tar.gz"))
              (sha256
               (base32
-               "0f1ri51yzjikigf6z31g03cdv6sgi9gw2c3vvv39psk3m37zb6iq"))))
+               "05aaakz24ba2hdzlqx8qamwrsp7gni1acms8mr6m432wa9yaazjh"))))
     (build-system gnu-build-system)
     (native-inputs
       `(("perl", perl)))
@@ -216,7 +216,7 @@ standards.")
 (define-public icecat
   (package
     (name "icecat")
-    (version "31.4.0")
+    (version "31.5.0")
     (source
      (origin
       (method url-fetch)
@@ -224,29 +224,12 @@ standards.")
                           version "/" name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2"))
-      (patches (map search-patch
-                    '("icecat-CVE-2015-0822.patch"
-                      "icecat-CVE-2015-0827-pt-1.patch"
-                      "icecat-CVE-2015-0827-pt-2.patch"
-                      "icecat-CVE-2015-0827-pt-3.patch"
-                      "icecat-CVE-2015-0831-pt-1.patch"
-                      "icecat-CVE-2015-0831-pt-2.patch"
-                      "icecat-CVE-2015-0836-pt-01.patch"
-                      "icecat-CVE-2015-0836-pt-02.patch"
-                      "icecat-CVE-2015-0836-pt-03.patch"
-                      "icecat-CVE-2015-0836-pt-04.patch"
-                      "icecat-CVE-2015-0836-pt-05.patch"
-                      "icecat-CVE-2015-0836-pt-06.patch"
-                      "icecat-CVE-2015-0836-pt-07.patch"
-                      "icecat-CVE-2015-0836-pt-08.patch"
-                      "icecat-CVE-2015-0836-pt-09.patch"
-                      "icecat-CVE-2015-0836-pt-10.patch"
-                      "icecat-CVE-2015-0836-pt-11.patch")))))
+        "1rr4axghaypdkrf60i1qp6dz4cd29ya02fs3vyffvp4x9kgcq2dd"))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("bzip2" ,bzip2)
+       ("cairo" ,cairo)
        ("dbus" ,dbus)
        ("dbus-glib" ,dbus-glib)
        ("glib" ,glib)
@@ -264,6 +247,8 @@ standards.")
        ("pixman" ,pixman)
        ("pulseaudio" ,pulseaudio)
        ("mesa" ,mesa)
+       ("nspr" ,nspr)
+       ("nss" ,nss)
        ("unzip" ,unzip)
        ("yasm" ,yasm)
        ("zip" ,zip)
@@ -290,19 +275,15 @@ standards.")
                            "--with-system-libevent"
                            "--with-system-libvpx"
                            "--with-system-icu"
+                           "--with-system-nspr"
+                           "--with-system-nss"
                            "--enable-system-pixman"
-
-                           ;; XXX unsure whether to use these.
-                           ;; "--with-system-nspr"
-                           ;; "--with-system-nss"
-
-                           ;; Fails with "configure: error: Library requirements
-                           ;; (cairo-tee >= 1.10) not met".
-                           ;; "--enable-system-cairo"
+                           "--enable-system-cairo"
+                           "--enable-system-ffi"
 
                            ;; Fails with "configure: error: System
                            ;; SQLite library is not compiled with
-                           ;; SQLITE_SECURE_DELETE."
+                           ;; SQLITE_ENABLE_UNLOCK_NOTIFY."
                            ;; "--enable-system-sqlite"
 
                            ;; Fails with "--with-system-png won't work because
@@ -324,8 +305,7 @@ standards.")
                            ;; to accelerate baseline JPEG compression/
                            ;; decompression", so we had better not use it
                            ;; "--with-system-jpeg"
-
-                           "--enable-system-ffi")
+                           )
 
        #:phases
        (alist-replace
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index c5ccfc271b..c92dd1b354 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -18,15 +18,24 @@
 
 (define-module (gnu packages graphics)
   #:use-module (guix download)
+  #:use-module (guix svn-download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages multiprecision)
-  #:use-module (gnu packages boost))
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages xorg))
 
 (define-public cgal
   (package
@@ -151,4 +160,110 @@ output.")
 
     ;; The web site says it's under a BSD-3 license, but the 'LICENSE' file
     ;; and headers use different wording.
-    (license (license:bsd-style "file://LICENSE"))))
+    (license (license:non-copyleft "file://LICENSE"))))
+
+(define-public brdf-explorer
+  (package
+    (name "brdf-explorer")
+    (version "17")                                ;svn revision
+    (source (origin
+              ;; There are no release tarballs, and not even tags in the repo,
+              ;; so use the latest revision.
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url "http://github.com/wdas/brdf")
+                    (revision (string->number version))))
+              (sha256
+               (base32
+                "1458fwsqxramh0gpnp24x7brfpl9afhvr1wqg6c78xqwf32960m5"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace configure
+                           (lambda* (#:key outputs #:allow-other-keys)
+                             (let ((out (assoc-ref outputs "out")))
+                               (chdir "trunk")
+                               (zero? (system* "qmake"
+                                               (string-append
+                                                "prefix=" out))))))
+                  (add-after install wrap-program
+                             (lambda* (#:key outputs #:allow-other-keys)
+                               (let* ((out (assoc-ref outputs "out"))
+                                      (bin (string-append out "/bin"))
+                                      (data (string-append
+                                             out "/share/brdf")))
+                                 (with-directory-excursion bin
+                                   (rename-file "brdf" ".brdf-real")
+                                   (call-with-output-file "brdf"
+                                     (lambda (port)
+                                       (format port "#!/bin/sh
+# Run the thing from its home, otherwise it just bails out.
+cd \"~a\"
+exec -a \"$0\" ~a/.brdf-real~%"
+                                               data bin)))
+                                   (chmod "brdf" #o555))))))))
+    (native-inputs
+     `(("qt" ,qt-4)))                             ;for 'qmake'
+    (inputs
+     `(("qt" ,qt-4)
+       ("mesa" ,mesa)
+       ("glew" ,glew)
+       ("freeglut" ,freeglut)
+       ("zlib" ,zlib)))
+    (home-page "http://www.disneyanimation.com/technology/brdf.html")
+    (synopsis
+     "Analyze bidirectional reflectance distribution functions (BRDFs)")
+    (description
+     "BRDF Explorer is an application that allows the development and analysis
+of bidirectional reflectance distribution functions (BRDFs).  It can load and
+plot analytic BRDF functions (coded as functions in OpenGL's GLSL shader
+language), measured material data from the MERL database, and anisotropic
+measured material data from MIT CSAIL.  Graphs and visualizations update in
+real time as parameters are changed, making it a useful tool for evaluating
+and understanding different BRDFs (and other component functions).")
+    (license license:ms-pl)))
+
+(define-public agg
+  (package
+    (name "agg")
+    (version "2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.antigrain.com/agg-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32 "07wii4i824vy9qsvjsgqxppgqmfdxq0xa87i5yk53fijriadq7mb"))
+              (patches (list (search-patch "agg-am_c_prototype.patch")))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append "--x-includes=" (assoc-ref %build-inputs "libx11")
+                            "/include")
+             (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
+                            "/lib"))
+       #:phases
+       (alist-cons-after
+        'unpack 'autoreconf
+        (lambda _
+          ;; let's call configure from configure phase and not now
+          (substitute* "autogen.sh" (("./configure") "# ./configure"))
+          (zero? (system* "sh" "autogen.sh")))
+        %standard-phases)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("bash" ,bash)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("freetype" ,freetype)
+       ("sdl" ,sdl)))
+    (home-page "http://antigrain.com")
+    (synopsis "High-quality 2D graphics rendering engine for C++")
+    (description
+     "Anti-Grain Geometry is a high quality rendering engine written in C++.
+It supports sub-pixel resolutions and anti-aliasing.  It is also library for
+rendering SVG graphics.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index 5504f38225..b1da394835 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -79,7 +79,8 @@
              (sha256
               (base32
                "0n64hpmsccvicagvr0c6v0kgp2yw0kgnd3jvsyd26cnwgs7c6kkq"))
-             (patches (list (search-patch "grub-gets-undeclared.patch")))))
+             (patches (list (search-patch "grub-gets-undeclared.patch")
+                            (search-patch "grub-freetype.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-werror")
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index ea18bdfdac..c605533fd2 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -198,7 +198,13 @@ without requiring the source code to be rewritten.")
     (native-inputs `(("pkgconfig" ,pkg-config)
                      ("gperf" ,gperf)))
     (inputs `(("guile" ,guile-2.0)))
-    (arguments `(#:configure-flags
+    (arguments `(;; The extract-*.sh scripts really expect to run in the C
+                 ;; locale.  Failing to do that, we end up with a build
+                 ;; failure while extracting doc.  (Fixed in Guile-Reader's
+                 ;; repo.)
+                 #:locale "C"
+
+                 #:configure-flags
                  (let ((out (assoc-ref %outputs "out")))
                    (list (string-append "--with-guilemoduledir="
                                         out "/share/guile/site/2.0")))))
@@ -237,17 +243,25 @@ many readers as needed).")
                                (string-append "--with-guilesitedir="
                                               (assoc-ref %outputs "out")
                                               "/share/guile/site/2.0"))
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let* ((out   (assoc-ref outputs "out"))
-                          (dir   (string-append out "/share/guile/site/"))
-                          (files (find-files dir ".scm")))
-                    (substitute* files
-                      (("\"libguile-ncurses\"")
-                       (format #f "\"~a/lib/libguile-ncurses\""
-                               out)))))
-                 %standard-phases)))
+       #:phases (alist-cons-before
+                 'check 'change-locale
+                 (lambda _
+                   ;; Use the locale that's actually available in the build
+                   ;; environment.
+                   (substitute* "test/f009_form_wide.test"
+                     (("en_US\\.utf8")
+                      "en_US.UTF-8")))
+                 (alist-cons-after
+                  'install 'post-install
+                  (lambda* (#:key outputs #:allow-other-keys)
+                    (let* ((out   (assoc-ref outputs "out"))
+                           (dir   (string-append out "/share/guile/site/"))
+                           (files (find-files dir ".scm")))
+                      (substitute* files
+                        (("\"libguile-ncurses\"")
+                         (format #f "\"~a/lib/libguile-ncurses\""
+                                 out)))))
+                  %standard-phases))))
     (home-page "http://www.gnu.org/software/guile-ncurses/")
     (synopsis "Guile bindings to ncurses")
     (description
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
new file mode 100644
index 0000000000..183d0eb4cb
--- /dev/null
+++ b/gnu/packages/haskell.scm
@@ -0,0 +1,224 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages haskell)
+  #:use-module (ice-9 regex)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages bootstrap)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages libedit)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages python))
+
+;; We use bootstrap binaries with a fix version which can be used to build
+;; more versions of the GHC compiler.
+(define ghc-bootstrap-7.8.4
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://www.haskell.org/ghc/dist/"
+                        "7.8.4/ghc-7.8.4-"
+                        (if (string-match "x86_64" (%current-system))
+                            "x86_64"
+                            "i386")
+                        "-unknown-linux-deb7.tar.xz"))
+    (sha256
+     (base32
+      (if (string-match "x86_64" (%current-system))
+          "13azsl53xgj20mi1hj9x0xb32vvcvs6cpmvwx6znxhas7blh0bpn"
+          "0wj5s435j0zgww70bj1d3f6wvnnpzlxwvwcyh2qv4qjq5z8j64kg")))))
+
+;; 43 tests out of 3965 fail.
+;;
+;; Most of them do not appear to be serious:
+;;
+;; - some tests generate files referring to "/bin/sh" and "/bin/ls". I've not
+;;   figured out how these references are generated.
+;;
+;; - Some tests allocate more memory than expected (ca. 3% above upper limit)
+;;
+;; - Some tests try to load unavailable libriries: Control.Concurrent.STM,
+;;   Data.Vector, Control.Monad.State.
+;;
+;; - Test posix010 tries to check the existence of a user on the system:
+;;   getUserEntryForName: does not exist (no such user)
+(define-public ghc
+  (package
+    (name "ghc")
+    (version "7.8.4")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://www.haskell.org/ghc/dist/"
+                          version "/" name "-" version "-src.tar.xz"))
+      (sha256
+       (base32
+        "1i4254akbb4ym437rf469gc0m40bxm31blp6s1z1g15jmnacs6f3"))))
+    (build-system gnu-build-system)
+    (supported-systems '("i686-linux" "x86_64-linux"))
+    (outputs '("out" "doc"))
+    (inputs
+     `(("gmp" ,gmp)
+       ("ncurses" ,ncurses)
+       ("libffi" ,libffi)
+       ("libedit" ,libedit)
+       ("ghc-testsuite"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://www.haskell.org/ghc/dist/"
+                 version "/" name "-" version "-testsuite.tar.xz"))
+           (sha256
+            (base32
+             "0q95whf87y4mxjzwzy899g7z7l9pazq4si6iciyhxkcdhqq2ycyh"))))))
+    (native-inputs
+     `(("perl" ,perl)
+       ("python" ,python-2)                ; for tests (fails with python-3)
+       ("ghostscript" ,ghostscript)        ; for tests
+       ("patchelf" ,patchelf)
+       ;; GHC is built with GHC. Therefore we need bootstrap binaries.
+       ("ghc-binary" ,ghc-bootstrap-7.8.4)))
+    (arguments
+     `(#:test-target "test"
+       ;; We get a smaller number of test failures by disabling parallel test
+       ;; execution.
+       #:parallel-tests? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build rpath)
+                  (srfi srfi-26)
+                  (srfi srfi-1))
+       #:imported-modules ((guix build gnu-build-system)
+                           (guix build utils)
+                           (guix build rpath))
+       #:configure-flags
+       (list
+        (string-append "--with-gmp-libraries="
+                       (assoc-ref %build-inputs "gmp") "/lib")
+        (string-append "--with-gmp-includes="
+                       (assoc-ref %build-inputs "gmp") "/include")
+        "--with-system-libffi"
+        (string-append "--with-ffi-libraries="
+                       (assoc-ref %build-inputs "libffi") "/lib")
+        (string-append "--with-ffi-includes="
+                       (assoc-ref %build-inputs "libffi") "/include"))
+       ;; FIXME: The user-guide needs dblatex, docbook-xsl and docbook-utils.
+       ;; Currently we do not have the last one.
+       ;; #:make-flags
+       ;; (list "BUILD_DOCBOOK_HTML = YES")
+       #:phases
+       (let* ((ghc-bootstrap-path
+               (string-append (getcwd) "/" ,name "-" ,version "/ghc-bin"))
+              (ghc-bootstrap-prefix
+               (string-append ghc-bootstrap-path "/usr" )))
+         (alist-cons-after
+          'unpack-bin 'unpack-and-fix-testsuite
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (with-directory-excursion ".."
+              (copy-file (assoc-ref inputs "ghc-testsuite")
+                         "ghc-testsuite.tar.xz")
+              (system* "tar" "xvf" "ghc-testsuite.tar.xz"))
+            (substitute*
+                (list "testsuite/timeout/Makefile"
+                      "testsuite/timeout/timeout.py"
+                      "testsuite/timeout/timeout.hs"
+                      "testsuite/tests/rename/prog006/Setup.lhs"
+                      "testsuite/tests/programs/life_space_leak/life.test")
+              (("/bin/sh") (which "sh"))
+              (("/bin/rm") "rm"))
+            #t)
+          (alist-cons-after
+           'unpack 'unpack-bin
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (mkdir-p ghc-bootstrap-prefix)
+             (with-directory-excursion ghc-bootstrap-path
+               (copy-file (assoc-ref inputs "ghc-binary")
+                          "ghc-bin.tar.xz")
+               (zero? (system* "tar" "xvf" "ghc-bin.tar.xz"))))
+           (alist-cons-before
+            'install-bin 'configure-bin
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((binaries
+                      (list
+                       "./utils/ghc-pwd/dist-install/build/tmp/ghc-pwd"
+                       "./utils/hpc/dist-install/build/tmp/hpc"
+                       "./utils/haddock/dist/build/tmp/haddock"
+                       "./utils/hsc2hs/dist-install/build/tmp/hsc2hs"
+                       "./utils/runghc/dist-install/build/tmp/runghc"
+                       "./utils/ghc-cabal/dist-install/build/tmp/ghc-cabal"
+                       "./utils/hp2ps/dist/build/tmp/hp2ps"
+                       "./utils/ghc-pkg/dist-install/build/tmp/ghc-pkg"
+                       "./utils/unlit/dist/build/tmp/unlit"
+                       "./ghc/stage2/build/tmp/ghc-stage2"))
+                     (gmp (assoc-ref inputs "gmp"))
+                     (gmp-lib (string-append gmp "/lib"))
+                     (gmp-include (string-append gmp "/include"))
+                     (ncurses-lib
+                      (string-append (assoc-ref inputs "ncurses") "/lib"))
+                     (ld-so (string-append (assoc-ref inputs "libc")
+                                           ,(glibc-dynamic-linker)))
+                     (libtinfo-dir
+                      (string-append ghc-bootstrap-prefix
+                                     "/lib/ghc-7.8.4/terminfo-0.4.0.0")))
+                (with-directory-excursion
+                    (string-append ghc-bootstrap-path "/" ,name "-" ,version)
+                  (setenv "CONFIG_SHELL" (which "bash"))
+                  (setenv "LD_LIBRARY_PATH" gmp-lib)
+                  ;; The binaries have "/lib64/ld-linux-x86-64.so.2" hardcoded.
+                  (for-each
+                   (cut system* "patchelf" "--set-interpreter" ld-so <>)
+                   binaries)
+                  ;; The binaries include a reference to libtinfo.so.5 which
+                  ;; is a subset of libncurses.so.5.  We create a symlink in a
+                  ;; directory included in the bootstrap binaries rpath.
+                  (mkdir-p libtinfo-dir)
+                  (symlink
+                   (string-append ncurses-lib "/libncursesw.so."
+                                  ,(version-major+minor
+                                    (package-version ncurses)))
+                   (string-append libtinfo-dir "/libtinfo.so.5"))
+                  (setenv "PATH"
+                          (string-append (getenv "PATH") ":"
+                                         ghc-bootstrap-prefix "/bin"))
+                  (system*
+                   (string-append (getcwd) "/configure")
+                   (string-append "--prefix=" ghc-bootstrap-prefix)
+                   (string-append "--with-gmp-libraries=" gmp-lib)
+                   (string-append "--with-gmp-includes=" gmp-include)))))
+            (alist-cons-before
+             'configure 'install-bin
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (with-directory-excursion
+                   (string-append ghc-bootstrap-path "/" ,name "-" ,version)
+                 (zero? (system* "make" "install"))))
+             %standard-phases)))))))
+    (home-page "https://www.haskell.org/ghc")
+    (synopsis "The Glasgow Haskell Compiler")
+    (description
+     "The Glasgow Haskell Compiler (GHC) is a state-of-the-art compiler and
+interactive environment for the functional language Haskell.")
+    (license bsd-3)))
+
+;;; haskell.scm ends here
diff --git a/gnu/packages/hugs.scm b/gnu/packages/hugs.scm
index 0902f3bf77..36be5aee4a 100644
--- a/gnu/packages/hugs.scm
+++ b/gnu/packages/hugs.scm
@@ -76,5 +76,5 @@ Haskell programs.  It provides an almost complete implementation of Haskell
 with support for simple interactive programs, handle-based I/O, and exception
 handling.  Hugs has a nearly complete implementation of the Haskell module
 system and supports a number of advanced extensions.")
-   (license (bsd-style "file://License"
-                       "See License in the distribution."))))
+   (license (non-copyleft "file://License"
+                          "See License in the distribution."))))
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 46b0824c8d..11cb63a895 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1,8 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,13 +23,18 @@
 
 (define-module (gnu packages image)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages doxygen)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages ghostscript)         ;lcms
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages perl)
   #:use-module (gnu packages zip)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -119,8 +126,8 @@ image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.")
 used for storing image data.
 Included are a library, libtiff, for reading and writing TIFF and a small
 collection of tools for doing simple manipulations of TIFF images.")
-   (license (license:bsd-style "file://COPYRIGHT"
-                               "See COPYRIGHT in the distribution."))
+   (license (license:non-copyleft "file://COPYRIGHT"
+                                  "See COPYRIGHT in the distribution."))
    (home-page "http://www.libtiff.org/")))
 
 (define-public libwmf
@@ -294,6 +301,25 @@ compose, and analyze GIF images.")
     (home-page "http://giflib.sourceforge.net/")
     (license license:x11)))
 
+(define-public libungif
+  (package
+    (name "libungif")
+    (version "4.1.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/giflib/libungif-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "0cnksimmmjngdrys302ik1385sg1sj4i0gxivzldhgwd46n7x2kh"))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)))          ;package ships some perl tools
+    (home-page "http://giflib.sourceforge.net/")
+    (synopsis "GIF decompression library")
+    (description
+     "libungif is the old GIF decompression library by the GIFLIB project.")
+    (license license:expat)))
+
 (define-public imlib2
   (package
     (name "imlib2")
@@ -406,3 +432,46 @@ supplies a generic doubly-linked list and some string functions.")
 graphics image formats like PNG, BMP, JPEG, TIFF and others.")
    (license license:gpl2+)
    (home-page "http://freeimage.sourceforge.net")))
+
+(define-public vigra
+  (package
+   (name "vigra")
+   (version "1.10.0")
+   (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hci.iwr.uni-heidelberg.de/vigra/vigra-"
+                           version "-src.tar.gz"))
+       (sha256 (base32
+                 "16d0jvz3k49niljg9qvvlyxxl15yk0300xkymvyznlmvn1hs7m22"))))
+   (build-system cmake-build-system)
+   (inputs
+    `(("boost" ,boost)
+      ("fftw" ,fftw)
+      ("fftwf" ,fftwf)
+      ("hdf5" ,hdf5)
+      ("libjpeg" ,libjpeg)
+      ("libpng" ,libpng)
+      ("libtiff" ,libtiff)
+      ("python" ,python-2) ; print syntax
+      ("python2-numpy" ,python2-numpy)
+      ("zlib" ,zlib)))
+   (native-inputs
+    `(("doxygen" ,doxygen)
+      ("python2-nose" ,python2-nose)
+      ("python2-sphinx" ,python2-sphinx)))
+   (arguments
+    `(#:test-target "check"
+      #:configure-flags
+        (list "-Wno-dev" ; suppress developer mode with lots of warnings
+              (string-append "-DVIGRANUMPY_INSTALL_DIR="
+                             (assoc-ref %outputs "out")
+                             "/lib/python2.7/site-packages"))))
+   (synopsis "Computer vision library")
+   (description
+    "VIGRA stands for Vision with Generic Algorithms.  It is an image
+processing and analysis library that puts its main emphasis on customizable
+algorithms and data structures.  It is particularly strong for
+multi-dimensional image processing.")
+   (license license:expat)
+   (home-page "https://hci.iwr.uni-heidelberg.de/vigra")))
diff --git a/gnu/packages/javac.in b/gnu/packages/javac.in
deleted file mode 100644
index adb4dc1f6c..0000000000
--- a/gnu/packages/javac.in
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/perl -w
-
-# Taken from Gentoo:
-# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-java/gcj-jdk/files/javac.in
-
-use strict;
-use constant NO_DUP_ARGS => qw(-source -target -d -encoding);
-use constant STRIP_ARGS => qw(-Werror -implicit:none -J-Xbootclasspath/p:);
-
-my $ECJ_WARNINGS="-nowarn";
-
-my ( @bcoption, @source15, @target15, @cp );
-push @bcoption, '-bootclasspath', '@RT_JAR@:@TOOLS_JAR@'
-    unless grep {$_ eq '-bootclasspath'} @ARGV;
-push @source15, '-source', '1.5'
-    unless grep {$_ eq '-source'} @ARGV;
-push @target15, '-target', '1.5'
-    unless grep {$_ eq '-target'} @ARGV;  
-push @cp, '-cp', '.'
-    unless grep {$_ =~ '\-c(p|lasspath)'} @ARGV or $ENV{CLASSPATH};
-my @ecj_parms = ($ECJ_WARNINGS, @bcoption, @source15, @target15, @cp);
-
-# Work around ecj's inability to handle duplicate command-line
-# options and unknown javac options.
-sub gen_ecj_opts
-{
-    my @new_args = @{$_[0]};
-
-    for my $opt (NO_DUP_ARGS) 
-    {
-	my @indices = reverse grep {$new_args[$_] eq $opt} 0..$#new_args;
-	if (@indices > 1) {
-	    shift @indices;    # keep last instance only
-	    splice @new_args, $_, 2 for @indices;
-	}
-    }
-
-    for my $opt (STRIP_ARGS) 
-    {
-	my @indices = reverse grep {$new_args[$_] eq $opt} 0..$#new_args;
-	splice @new_args, $_, 1 for @indices;
-    }
-
-    return \@new_args;
-}
-
-sub split_vm_args
-{
-    my @new_args = @{$_[0]};
-
-    my @vm_args = map { substr $_, 2 } grep $_ =~ /^-J/, @new_args;
-    my @javac_args = grep $_ !~ /^-J/, @new_args;
-
-    return (\@vm_args, \@javac_args);
-}
-
-my ($vm_args, $javac_args) = split_vm_args (gen_ecj_opts( \@ARGV ));
-my @CLASSPATH = ('@ECJ_JAR@');
-push @CLASSPATH, split /:/, $ENV{"CLASSPATH"} if exists $ENV{"CLASSPATH"};
-$ENV{"CLASSPATH"} = join ':', @CLASSPATH;
-exec '@JAVA@', @$vm_args, 'org.eclipse.jdt.internal.compiler.batch.Main', @ecj_parms, @$javac_args;
diff --git a/gnu/packages/key-mon.scm b/gnu/packages/key-mon.scm
new file mode 100644
index 0000000000..d29f30258d
--- /dev/null
+++ b/gnu/packages/key-mon.scm
@@ -0,0 +1,69 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 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 key-mon)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome)
+  #:use-module (guix build-system python))
+
+(define-public key-mon
+  (package
+    (name "key-mon")
+    (version "1.17")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://key-mon.googlecode.com/files/key-mon-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1liz0dxcqmchbnl1xhlxkqm3gh76wz9jxdxn9pa7dy77fnrjkl5q"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2                    ;uses the Python 2 'print' syntax
+       #:phases (modify-phases %standard-phases
+                  (add-after install wrap
+                             (lambda* (#:key inputs outputs #:allow-other-keys)
+                               (let* ((out  (assoc-ref outputs "out"))
+                                      (bin  (string-append out "/bin"))
+                                      (rsvg (assoc-ref inputs "librsvg"))
+                                      (pixbuf (find-files
+                                               rsvg "^loaders\\.cache$")))
+                                 ;; Allow key-mon to load SVGs.
+                                 (wrap-program (string-append bin "/key-mon")
+                                   `("GDK_PIXBUF_MODULE_FILE" ":"
+                                     prefix ,pixbuf))))))
+       #:tests? #f))                         ;no tests
+    (native-inputs
+     `(("python2-setuptools" ,python2-setuptools)))
+    (propagated-inputs
+     `(("python2-xlib" ,python2-xlib)
+       ("python2-pygtk" ,python2-pygtk)
+       ("librsvg" ,librsvg)
+       ("python2-rsvg" ,python2-rsvg)))
+    (home-page "http://code.google.com/p/key-mon")
+    (synopsis "Show keyboard and mouse status")
+    (description
+     "The key-mon utility displays the current keyboard and mouse status.
+This is useful for teaching and screencasts.")
+    (license asl2.0)))
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
new file mode 100644
index 0000000000..f2f1fbc162
--- /dev/null
+++ b/gnu/packages/language.scm
@@ -0,0 +1,400 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 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 language)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages web)
+  #:use-module (guix packages)
+  #:use-module (guix build-system perl)
+  #:use-module ((guix licenses) #:select (gpl2 gpl3))
+  #:use-module (guix download))
+
+(define-public perl-lingua-en-findnumber
+  (package
+    (name "perl-lingua-en-findnumber")
+    (version "1.30")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
+                           "Lingua-EN-FindNumber-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0g5h6bwwggizwh3dd3xyx92537s4qy8nspshp1lrm9qlxh3prc28"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-lingua-en-words2nums" ,perl-lingua-en-words2nums)))
+    (home-page "http://search.cpan.org/dist/Lingua-EN-FindNumber")
+    (synopsis "Locate (written) numbers in English text ")
+    (description "This module provides a regular expression for finding
+numbers in English text.  It also provides functions for extracting and
+manipulating such numbers.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-en-inflect
+  (package
+    (name "perl-lingua-en-inflect")
+    (version "1.895")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DC/DCONWAY/"
+                           "Lingua-EN-Inflect-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0drzg9a2dkjxgf00n6jg0jzhd8972bh3j4wdnmdxpqi3zmfqhwcy"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Inflect")
+    (synopsis "Convert singular to plural")
+    (description "Lingua::EN::Inflect provides plural inflections,
+\"a\"/\"an\" selection for English words, and manipulation of numbers as
+words.  Plural forms of all nouns, most verbs, and some adjectives are
+provided.  Where appropriate, \"classical\" variants (for example: \"brother\"
+-> \"brethren\", \"dogma\" -> \"dogmata\", etc.) are also provided.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-en-inflect-number
+  (package
+    (name "perl-lingua-en-inflect-number")
+    (version "1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
+                           "Lingua-EN-Inflect-Number-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rvgrff96ja7fqr79dszmiyv2wz4izw82znah0mx9szkir657gfz"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-lingua-en-inflect" ,perl-lingua-en-inflect)))
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Inflect-Number")
+    (synopsis "Force number of words to singular or plural")
+    (description "This module extends the functionality of Lingua::EN::Inflect
+with three new functions for determining plurality of a word and forcefully
+converting a word to singular or plural.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-en-inflect-phrase
+  (package
+    (name "perl-lingua-en-inflect-phrase")
+    (version "0.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
+                           "Lingua-EN-Inflect-Phrase-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19prg6pkgnznrc82ymdkdi3l9schg815axjig7adca5yqa7mn2i9"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-nowarnings" ,perl-test-nowarnings)))
+    (propagated-inputs
+     `(("perl-lingua-en-findnumber" ,perl-lingua-en-findnumber)
+       ("perl-lingua-en-inflect" ,perl-lingua-en-inflect)
+       ("perl-lingua-en-inflect-number" ,perl-lingua-en-inflect-number)
+       ("perl-lingua-en-number-isordinal" ,perl-lingua-en-number-isordinal)
+       ("perl-lingua-en-tagger" ,perl-lingua-en-tagger)))
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Inflect-Phrase")
+    (synopsis "Inflect short English phrases")
+    (description "This module attempts to pluralize or singularize short
+English phrases.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-en-number-isordinal
+  (package
+    (name "perl-lingua-en-number-isordinal")
+    (version "0.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
+                           "Lingua-EN-Number-IsOrdinal-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1321fm4pyqcamffd0qsjm1gb07ijqndlb29qkcqf22kaibngfm4i"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-try-tiny" ,perl-try-tiny)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-lingua-en-findnumber" ,perl-lingua-en-findnumber)))
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Number-IsOrdinal")
+    (synopsis "Detect if English number is ordinal or cardinal")
+    (description "This module will tell you if a number, either in words or as
+digits, is a cardinal or ordinal number.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-en-tagger
+  (package
+    (name "perl-lingua-en-tagger")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AC/ACOBURN/"
+                           "Lingua-EN-Tagger-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0qksqh1zi8fz76a29s2ll4g6yr8y6agmzgq7ngccvgj3gza5q241"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-memoize-expirelru" ,perl-memoize-expirelru)
+       ("perl-lingua-stem" ,perl-lingua-stem)
+       ("perl-html-parser" ,perl-html-parser)
+       ("perl-html-tagset" ,perl-html-tagset)))
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Tagger")
+    (synopsis "Part-of-speech tagger for English natural language processing")
+    (description "This module is a probability based, corpus-trained tagger
+that assigns part-of-speech tags to English text based on a lookup dictionary
+and a set of probability values.  The tagger assigns appropriate tags based on
+conditional probabilities - it examines the preceding tag to determine the
+appropriate tag for the current word.  Unknown words are classified according
+to word morphology or can be set to be treated as nouns or other parts of
+speech.  The tagger also extracts as many nouns and noun phrases as it can,
+using a set of regular expressions.")
+    (license gpl3)))
+
+(define-public perl-lingua-en-words2nums
+  (package
+    (name "perl-lingua-en-words2nums")
+    (version "0.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JO/JOEY/"
+                           "Lingua-EN-Words2Nums-" version ".tar.gz"))
+       (sha256
+        (base32
+         "118xx8qr1zbx30psv7ic55w65h15mc1vz6zicshfm96jgiwmcrb8"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-EN-Words2Nums")
+    (synopsis "Convert English text to numbers")
+    (description "This module converts English text into numbers.  It supports
+both ordinal and cardinal numbers, negative numbers, and very large numbers.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-pt-stemmer
+  (package
+    (name "perl-lingua-pt-stemmer")
+    (version "0.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/X/XE/XERN/"
+                           "Lingua-PT-Stemmer-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11rqc5pqnkl9c13vy7sihiyas14ci0pj3k6chrgrgjv5sjv2m4a5"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-PT-Stemmer")
+    (synopsis "Portuguese language stemming")
+    (description "This module implements a Portuguese stemming algorithm
+proposed in the paper A Stemming Algorithm for the Portuguese Language by
+Moreira, V. and Huyck, C.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-stem
+  (package
+    (name "perl-lingua-stem")
+    (version "0.84")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SN/SNOWHARE/"
+                           "Lingua-Stem-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12avh2mnnc7llmmshrr5bgb473fvydxnlqrqbl2815mf2dp4pxcg"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-lingua-pt-stemmer" ,perl-lingua-pt-stemmer)
+       ("perl-lingua-stem-fr" ,perl-lingua-stem-fr)
+       ("perl-lingua-stem-it" ,perl-lingua-stem-it)
+       ("perl-lingua-stem-ru" ,perl-lingua-stem-ru)
+       ("perl-lingua-stem-snowball-da" ,perl-lingua-stem-snowball-da)
+       ("perl-snowball-norwegian" ,perl-snowball-norwegian)
+       ("perl-snowball-swedish" ,perl-snowball-swedish)
+       ("perl-text-german" ,perl-text-german)))
+    (home-page "http://search.cpan.org/dist/Lingua-Stem")
+    (synopsis "Stemming of words in various languages")
+    (description "This routine applies stemming algorithms to its parameters,
+returning the stemmed words as appropriate to the selected locale.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-stem-fr
+  (package
+    (name "perl-lingua-stem-fr")
+    (version "0.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SD/SDP/"
+                           "Lingua-Stem-Fr-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vyrspwzaqjxm5mqshf4wvwa3938mkajd1918d9ii2l9m2rn8kwx"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-Stem-Fr")
+    (synopsis "Porter's stemming algorithm for French")
+    (description "This module uses a modified version of the Porter Stemming
+Algorithm to return a stemmed French word.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-stem-it
+  (package
+    (name "perl-lingua-stem-it")
+    (version "0.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AC/ACALPINI/"
+                           "Lingua-Stem-It-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1207r183s5hlh4mfwa6p46vzm0dhvrs2dnss5s41a0gyfkxp7riq"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-Stem-It")
+    (synopsis "Porter's stemming algorithm for Italian")
+    (description "This module applies the Porter Stemming Algorithm to its
+parameters, returning the stemmed Italian word.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-stem-ru
+  (package
+    (name "perl-lingua-stem-ru")
+    (version "0.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AL/ALGDR/"
+                           "Lingua-Stem-Ru-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pqgg442fkf12ayh9fgmpa8q9x0iqx6s96181r52yn7s7pcs61h6"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-Stem-Ru")
+    (synopsis "Porter's stemming algorithm for Russian")
+    (description "This module applies the Porter Stemming Algorithm to its
+parameters, returning the stemmed Russian (KOI8-R only) word.")
+    (license (package-license perl))))
+
+(define-public perl-lingua-stem-snowball-da
+  (package
+    (name "perl-lingua-stem-snowball-da")
+    (version "1.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CI/CINE/"
+                           "Lingua-Stem-Snowball-Da-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0mm0m7glm1s6i9f6a78jslw6wh573208arxhq93yriqmw17bwf9f"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Lingua-Stem-Snowball-Da")
+    (synopsis "Porters stemming algorithm for Danish")
+    (description "Lingua::Stem::Snowball::Da is a perl port of the danish
+stemmer at http://snowball.sourceforge.net, it was originally altered from the
+Lingua::Stem::Snowball::Se.")
+    (license gpl2)))
+
+(define-public perl-snowball-norwegian
+  (package
+    (name "perl-snowball-norwegian")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AS/ASKSH/"
+                           "Snowball-Norwegian-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0675v45bbsh7vr7kpf36xs2q79g02iq1kmfw22h20xdk4rzqvkqx"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Snowball-Norwegian")
+    (synopsis "Porters stemming algorithm for Norwegian")
+    (description "Lingua::Stem::Snowball::No is a perl port of the norwegian
+stemmer at http://snowball.tartarus.org.")
+    (license (package-license perl))))
+
+(define-public perl-snowball-swedish
+  (package
+    (name "perl-snowball-swedish")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AS/ASKSH/"
+                           "Snowball-Swedish-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0agwc12jk5kmabnpsplw3wf4ii5w1zb159cpin44x3srb0sr5apg"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Snowball-Swedish")
+    (synopsis "Porters stemming algorithm for Swedish")
+    (description "Lingua::Stem::Snowball::Se is a perl port of the swedish
+stemmer at http://snowball.sourceforge.net.")
+    (license (package-license perl))))
+
+(define-public perl-string-toidentifier-en
+  (package
+    (name "perl-string-toidentifier-en")
+    (version "0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
+                           "String-ToIdentifier-EN-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bawghkgkkx7j3avnrj5sg3vix1z5564ks6wf9az3jc2knh8s5nh"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-lingua-en-inflect-phrase" ,perl-lingua-en-inflect-phrase)
+       ("perl-text-unidecode" ,perl-text-unidecode)
+       ("perl-namespace-clean" ,perl-namespace-clean)))
+    (home-page "http://search.cpan.org/dist/String-ToIdentifier-EN")
+    (synopsis "Convert strings to english program identifiers")
+    (description "This module provides a utility method, \"to_identifier\" for
+converting an arbitrary string into a readable representation using the ASCII
+subset of \"\\w\" for use as an identifier in a computer program.  The intent
+is to make unique identifier names from which the content of the original
+string can be easily inferred by a human just by reading the identifier.")
+    (license (package-license perl))))
+
+(define-public perl-text-german
+  (package
+    (name "perl-text-german")
+    (version "0.06")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/U/UL/ULPFR/"
+                           "Text-German-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1p87pgap99lw0nv62i3ghvsi7yg90lhn8vsa3yqp75rd04clybcj"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-German")
+    (synopsis "German grundform reduction")
+    (description "This module is a rather incomplete implementaion of work
+done by Gudrun Putze-Meier.")
+    (license (package-license perl))))
diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm
new file mode 100644
index 0000000000..fcf5ab4c74
--- /dev/null
+++ b/gnu/packages/libedit.scm
@@ -0,0 +1,50 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libedit)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages ncurses))
+
+(define-public libedit
+  (package
+    (name "libedit")
+    (version "20141030-3.1")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://thrysoee.dk/editline"
+                          "/" name "-" version ".tar.gz"))
+      (sha256
+       (base32
+        "0h2svwfcdldpbg0fy7fnkld706r2a9k9h1mm0yj7z3zvf1jy20cp"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (home-page "http://thrysoee.dk/editline/")
+    (synopsis "NetBSD Editline library")
+    (description
+     "This is an autotool- and libtoolized port of the NetBSD Editline
+library (libedit). This Berkeley-style licensed command line editor library
+provides generic line editing, history, and tokenization functions, similar to
+those found in GNU Readline.")
+    (license bsd-3)))
+
+;;; libedit.scm ends here
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 621ce69c2d..c95c61692c 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.8")
+  (let* ((version "3.18.9")
          (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
-               "1ai2krm0svq52z4nm0qyw3q3ybfia83zvpv1f38q1wkllwq0gi6j"))))
+               "0n3p9ci8w71hd168df7xlccafxzb3agr8rk3xmvnj7dnbfiddqv6"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
@@ -1891,7 +1891,7 @@ thanks to the use of namespaces.")
     (description
      "Get/set device parameters for Linux SATA/IDE drives.  It's primary use
 is for enabling irq-unmasking and IDE multiplemode.")
-    (license (bsd-style "file://LICENSE.TXT"))))
+    (license (non-copyleft "file://LICENSE.TXT"))))
 
 (define-public acpid
   (package
@@ -1961,6 +1961,13 @@ also contains the libsysfs library.")
            (substitute* "configure"
              (("includedir='(\\$\\{prefix\\}/include)'" all orig)
               (string-append "includedir='" orig "/sysfs'")))))))
+    ;; XXX sysfsutils-1.3.0's config.guess fails on mips64el
+    (arguments `(#:configure-flags
+                 '(,@(if (%current-target-system)
+                         '()
+                         (let ((triplet
+                                (nix-system->gnu-triplet (%current-system))))
+                           (list (string-append "--build=" triplet)))))))
     (synopsis "System utilities based on Linux sysfs (version 1.x)")))
 
 (define-public cpufrequtils
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 76c826cc6e..f0599a95c6 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -231,14 +232,16 @@ an interpreter, a compiler, a debugger, and much more.")
              (define (quoted-path input path)
                (string-append "\"" input path "\""))
              ;; Patch absolute paths in string literals.  Note that this
-             ;; occurs in some .sh files too (which contain Lisp code).
-             (substitute* (find-files "." "\\.(lisp|sh)$")
-               (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
-               (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
-               (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
-               (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
-               (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
-               (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname")))
+             ;; occurs in some .sh files too (which contain Lisp code).  Use
+             ;; ISO-8859-1 because some of the files are ISO-8859-1 encoded.
+             (with-fluids ((%default-port-encoding #f))
+               (substitute* (find-files "." "\\.(lisp|sh)$")
+                 (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
+                 (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
+                 (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
+                 (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
+                 (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
+                 (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname"))))
              ;; This one script has a non-string occurrence of /bin/sh.
              (substitute* '("tests/foreign.test.sh")
                ;; Leave whitespace so we don't match the shebang.
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
new file mode 100644
index 0000000000..cb6cb64e0b
--- /dev/null
+++ b/gnu/packages/lxqt.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; 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 lxqt)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:select (lgpl2.1+))
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt))
+
+(define-public libqtxdg
+  (package
+    (name "libqtxdg")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+         (string-append "https://github.com/lxde/" name "/releases/download/"
+                        version "/" name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "00j0zzb8zn714lv77fawahlalxjznvh06nlhlz47qf0krngri42w"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; handled by configure flag instead
+       #:configure-flags '(;; FIXME: Currently, the tests fail; this is a
+                           ;; known issue, see
+                           ;; https://github.com/lxde/libqtxdg/issues/42
+                           ;; Enable in new release.
+                           "-DBUILD_TESTS=OFF")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("qt" ,qt))) ; according to Qt5Xdg.pc
+    (home-page "https://github.com/lxde/libqtxdg")
+    (synopsis "Qt implementation of freedesktop.org xdg specifications")
+    (description "Libqtxdg implements the freedesktop.org xdg specifications
+in Qt.")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 33076c1a60..f7bb1ee896 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -29,6 +29,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages enchant)
@@ -63,7 +64,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ bsd-style))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ non-copyleft))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -227,14 +228,16 @@ operating systems.")
        (alist-cons-after
         'unpack 'patch-paths-in-tests
         (lambda _
-          ;; The test programs run several programs using 'system'
-          ;; with hard-coded paths.  Here we patch them all.  We also
-          ;; change "gpg" to "gpg2".
-          (substitute* (find-files "tests" "\\.c$")
-            (("(system *\\(\")(/[^ ]*)" all pre prog-path)
-             (let* ((base (basename prog-path))
-                    (prog (which (if (string=? base "gpg") "gpg2" base))))
-              (string-append pre (or prog (error "not found: " base)))))))
+          ;; The test programs run several programs using 'system' with
+          ;; hard-coded paths.  Here we patch them all.  We also change "gpg"
+          ;; to "gpg2".  We use ISO-8859-1 here because test-iconv.c contains
+          ;; raw byte sequences in several different encodings.
+          (with-fluids ((%default-port-encoding #f))
+            (substitute* (find-files "tests" "\\.c$")
+              (("(system *\\(\")(/[^ ]*)" all pre prog-path)
+               (let* ((base (basename prog-path))
+                      (prog (which (if (string=? base "gpg") "gpg2" base))))
+                 (string-append pre (or prog (error "not found: " base))))))))
         %standard-phases)))
     (home-page "http://spruce.sourceforge.net/gmime/")
     (synopsis "MIME message parser and creator library")
@@ -458,7 +461,7 @@ useful features.")
 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"))))
+    (license (non-copyleft "file://COPYING"))))
 
 (define-public claws-mail
   (package
@@ -624,4 +627,26 @@ deal of flexibility in the way mail can be routed, and there are extensive
 facilities for checking incoming mail.")
     (license gpl2+)))
 
+(define-public isync
+  (package
+    (name "isync")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/isync/isync/"
+                           version "/isync-" version ".tar.gz"))
+       (sha256 (base32
+                "1960ah3fmp75cakd06lcx50n5q0yvfsadjh3lffhyvjvj7ava9d2"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bdb" ,bdb)
+       ("openssl" ,openssl)))
+    (home-page "http://isync.sourceforge.net/")
+    (synopsis "Mailbox synchronization program")
+    (description
+     "isync/mbsync is command line tool for two-way synchronization of
+mailboxes.  Currently Maildir and IMAP are supported types.")
+    (license gpl2+)))
+
 ;;; mail.scm ends here
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 3507c0c1fb..f5bd339100 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -153,7 +153,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
 (define-public help2man
   (package
     (name "help2man")
-    (version "1.46.4")
+    (version "1.46.5")
     (source
      (origin
       (method url-fetch)
@@ -161,7 +161,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                           version ".tar.xz"))
       (sha256
        (base32
-        "0csn7jx7nhlrflalw1992p3l5afawlpdyjdff2q5bk5hadgz3rqs"))))
+        "1gqfqgxq3qgwnldjz3i5mxvzyx2w3j042r3fw1wygic3f6327nha"))))
     (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 44f6153011..b6d3ed3680 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
@@ -29,6 +29,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix svn-download)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
@@ -65,7 +66,8 @@
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages zip))
 
 (define-public units
   (package
@@ -236,7 +238,7 @@ be output in text, PostScript, PDF or HTML.")
     (description
      "ARPACK-NG is a collection of Fortran77 subroutines designed to solve
 large scale eigenvalue problems.")
-    (license (license:bsd-style "file://COPYING"
+    (license (license:non-copyleft "file://COPYING"
                                 "See COPYING in the distribution."))))
 
 (define-public lapack
@@ -269,7 +271,7 @@ large scale eigenvalue problems.")
     (description
      "LAPACK is a Fortran 90 library for solving the most commonly occurring
 problems in numerical linear algebra.")
-    (license (license:bsd-style "file://LICENSE"
+    (license (license:non-copyleft "file://LICENSE"
                                 "See LICENSE in the distribution."))))
 
 (define-public gnuplot
@@ -316,6 +318,8 @@ plotting engine by third-party applications like Octave.")
       (sha256
        (base32 "0f9n0v3p3lwc7564791a39c6cn1d3dbrn7d1j3ikqsi27a8hy23d"))))
     (build-system gnu-build-system)
+    (inputs
+     `(("zlib" ,zlib)))
     (arguments
      `(#:phases
         (alist-cons-before
@@ -324,7 +328,6 @@ plotting engine by third-party applications like Octave.")
            (substitute* "configure"
              (("/bin/mv") "mv")))
          %standard-phases)))
-    (outputs '("out" "bin" "lib" "include"))
     (home-page "http://www.hdfgroup.org")
     (synopsis "Management suite for extremely large and complex data")
     (description "HDF5 is a suite that makes possible the management of
@@ -357,8 +360,7 @@ extremely large and complex data collections.")
        ("fltk" ,fltk)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
-       ("hdf5-lib" ,hdf5 "lib")
-       ("hdf5-include" ,hdf5 "include")
+       ("hdf5" ,hdf5)
        ("libxft" ,libxft)
        ("mesa" ,mesa)
        ("zlib" ,zlib)))
@@ -410,8 +412,7 @@ files.")
      `(("fltk" ,fltk)
        ("gfortran" ,gfortran-4.8)
        ("gmp" ,gmp)
-       ("hdf5-lib" ,hdf5 "lib")
-       ("hdf5-include" ,hdf5 "include")
+       ("hdf5" ,hdf5)
        ("lapack" ,lapack)
        ("mesa" ,mesa)
        ("glu" ,glu)
@@ -521,7 +522,7 @@ ASCII text files using Gmsh's own scripting language.")
     (description "PETSc, pronounced PET-see (the S is silent), is a suite of
 data structures and routines for the scalable (parallel) solution of
 scientific applications modeled by partial differential equations.")
-    (license (license:bsd-style
+    (license (license:non-copyleft
               "http://www.mcs.anl.gov/petsc/documentation/copyright.html"))))
 
 (define-public petsc-complex
@@ -965,6 +966,105 @@ point numbers")
     ;; GPLv2 only is therefore the smallest subset.
     (license license:gpl2)))
 
+(define-public muparser
+  (package
+    (name "muparser")
+    (version "2.2.5")
+    (source
+     (origin
+       (method svn-fetch)
+       (uri (svn-reference
+             (url "http://muparser.googlecode.com/svn/trunk/")
+             (revision 34)))
+       (sha256
+        (base32
+         "1d6bdbhx9zj3srwj3m7c9hvr18gnx1fx43h6d25my7q85gicpcwn"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--enable-samples=no")
+       #:tests? #f)) ;no "check" target
+    (home-page "http://muparser.beltoforion.de/")
+    (synopsis "Fast parser library for mathematical expressions")
+    (description
+     "muParser is an extensible high performance math parser library.  It is
+based on transforming an expression into a bytecode and precalculating
+constant parts of it.")
+    (license license:expat)))
+
+(define-public openlibm
+  (package
+    (name "openlibm")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/JuliaLang/openlibm/archive/v"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cwqqqlblj3kzp9aq1wnpfs1fl0qd1wp1xzm5shb09w06i4rh9nn"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       ;; no configure script
+       (alist-delete 'configure %standard-phases)
+       #:tests? #f)) ;the tests are part of the default target
+    (home-page "http://openlibm.org/")
+    (synopsis "Portable C mathematical library (libm)")
+    (description
+     "OpenLibm is an effort to have a high quality, portable, standalone C
+mathematical library (libm).  It can be used standalone in applications and
+programming language implementations.  The project was born out of a need to
+have a good libm for the Julia programming langage that worked consistently
+across compilers and operating systems, and in 32-bit and 64-bit
+environments.")
+    ;; See LICENSE.md for details.
+    (license (list license:expat
+                   license:isc
+                   license:bsd-2
+                   license:public-domain
+                   license:lgpl2.1+))))
+
+(define-public openspecfun
+  (package
+    (name "openspecfun")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/JuliaLang/openspecfun/archive/v"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0nsa3jjmlhcqkw5ba5ypbn3n0c8b6lc22zzlxnmxkxi9shhdx65z"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f  ;no "check" target
+       #:make-flags
+       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       ;; no configure script
+       #:phases (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("fortran" ,gfortran-4.8)))
+    (home-page "https://github.com/JuliaLang/openspecfun")
+    (synopsis "Collection of special mathematical functions")
+    (description
+     "Openspecfun provides AMOS and Faddeeva.  AMOS (from Netlib) is a
+portable package for Bessel Functions of a Complex Argument and Nonnegative
+Order; it contains subroutines for computing Bessel functions and Airy
+functions.  Faddeeva allows computing the various error functions of arbitrary
+complex arguments (Faddeeva function, error function, complementary error
+function, scaled complementary error function, imaginary error function, and
+Dawson function); given these, one can also easily compute Voigt functions,
+Fresnel integrals, and similar related functions as well.")
+    ;; Faddeeva is released under the Expat license; AMOS is included as
+    ;; public domain software.
+    (license (list license:expat license:public-domain))))
+
 (define-public atlas
   (package
     (name "atlas")
@@ -998,7 +1098,7 @@ point numbers")
                   (srfi srfi-1)
                   (guix build gnu-build-system)
                   (guix build utils))
-       #:configure-flags 
+       #:configure-flags
        `(;; Generate position independent code suitable for dynamic libraries
          ;; and use WALL timer to get more accurate timing.
          "-Fa" "alg" "-fPIC" "-D" "c" "-DWALL"
@@ -1025,10 +1125,10 @@ point numbers")
         (alist-cons-after
          'install 'install-doc
          (lambda* (#:key outputs inputs #:allow-other-keys)
-           (let ((doc (string-append (assoc-ref outputs "doc") 
+           (let ((doc (string-append (assoc-ref outputs "doc")
                                      "/share/doc/atlas")))
              (mkdir-p doc)
-             (fold (lambda (file previous) 
+             (fold (lambda (file previous)
                      (and previous (zero? (system* "cp" file doc))))
                    #t (find-files "../ATLAS/doc" ".*"))))
          (alist-cons-after
@@ -1094,3 +1194,25 @@ cpufreq-selector -g performance -c N-1
 where N is the number of cores of your CPU.  Failure to do so will result in a
 library with poor performance.")
     (license license:bsd-3)))
+
+(define-public glm
+  (package
+    (name "glm")
+    (version "0.9.6.3")
+    (source
+     (origin
+       (method url-fetch)
+      (uri (string-append "mirror://sourceforge/ogl-math/glm-"
+                          version ".zip"))
+       (sha256
+        (base32
+         "1cnjmi033a16a95v6xfkr1bvfmkd26hzdjka8j1819hgn5b1nr8l"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "http://glm.g-truc.net")
+    (synopsis "OpenGL Mathematics library")
+    (description "OpenGL Mathematics (GLM) is a header-only C++ mathematics
+library for graphics software based on the OpenGL Shading Language (GLSL)
+specifications.")
+    (license license:expat)))
diff --git a/gnu/packages/mit-krb5.scm b/gnu/packages/mit-krb5.scm
index 0a107a8bec..716d95bcd2 100644
--- a/gnu/packages/mit-krb5.scm
+++ b/gnu/packages/mit-krb5.scm
@@ -82,6 +82,6 @@
      "Massachusetts Institute of Technology implementation of Kerberos.
 Kerberos is a network authentication protocol designed to provide strong
 authentication for client/server applications by using secret-key cryptography.")
-    (license (bsd-style "file://NOTICE"
+    (license (non-copyleft "file://NOTICE"
                         "See NOTICE in the distribution."))
     (home-page "http://web.mit.edu/kerberos/")))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 2313b3049a..f89d3ed377 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -191,7 +191,8 @@ terminal using ncurses.")
     (inputs `(("libmpdclient" ,libmpdclient)
               ("boost"  ,boost)
               ("readline" ,readline)
-              ("ncurses" ,ncurses)))
+              ("ncurses" ,ncurses)
+              ("taglib" ,taglib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("automake" ,automake)
@@ -199,7 +200,7 @@ terminal using ncurses.")
        ("libtool" ,libtool)))
     (arguments
      '(#:configure-flags
-       '("BOOST_LIB_SUFFIX=")
+       '("BOOST_LIB_SUFFIX=" "--with-taglib")
        #:phases
        (alist-cons-after
         'unpack 'autogen
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
new file mode 100644
index 0000000000..c92354248f
--- /dev/null
+++ b/gnu/packages/music.scm
@@ -0,0 +1,104 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 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 music)
+  #:use-module (guix utils)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages rsync)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages zip))
+
+(define-public lilypond
+  (package
+    (name "lilypond")
+    (version "2.18.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://download.linuxaudio.org/lilypond/sources/v"
+                    (version-major+minor version) "/"
+                    name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "01xs9x2wjj7w9appaaqdhk15r1xvvdbz9qwahzhppfmhclvp779j"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(;; Tests fail with this error:
+       ;; Undefined subroutine &main::get_index called at
+       ;; ./lilypond-2.18.2/Documentation/lilypond-texi2html.init line 2127.
+       #:tests? #f
+       #:out-of-source? #t
+       #:phases
+       (alist-cons-before
+        'configure 'prepare-configuration
+        (lambda _
+          (substitute* "configure"
+            (("SHELL=/bin/sh") "SHELL=sh"))
+          (setenv "out" "")
+          #t)
+        %standard-phases)))
+    (inputs
+     `(("guile" ,guile-1.8)
+       ("font-dejavu" ,font-dejavu)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("ghostscript" ,ghostscript)
+       ("pango" ,pango)
+       ("python" ,python-2)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("perl" ,perl)
+       ("flex" ,flex)
+       ("fontforge" ,fontforge)
+       ("dblatex" ,dblatex)
+       ("gettext" ,gnu-gettext)
+       ("imagemagick" ,imagemagick)
+       ("netpbm" ,netpbm) ;for pngtopnm
+       ("texlive" ,texlive) ;metafont and metapost
+       ("texinfo" ,texinfo)
+       ("texi2html" ,texi2html)
+       ("rsync" ,rsync)
+       ("pkg-config" ,pkg-config)
+       ("zip" ,zip)))
+    (home-page "http://www.lilypond.org/")
+    (synopsis "Music typesetting")
+    (description
+     "GNU LilyPond is a music typesetter, which produces high-quality sheet
+music.  Music is input in a text file containing control sequences which are
+interpreted by LilyPond to produce the final document.  It is extendable with
+Guile.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 65b4e9b55b..b20e7d3566 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -142,7 +142,7 @@ the Nix package manager.")
 
 (define guix-devel
   ;; Development version of Guix.
-  (let ((commit "f1082ec"))
+  (let ((commit "07157e8"))
     (package (inherit guix-0.8.1)
       (version (string-append "0.8.1." commit))
       (source (origin
@@ -152,7 +152,7 @@ the Nix package manager.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0mmwmv3wbrgzs49gnxraj11fp1mxfry4r0n222l3p4yga27vzw6d"))))
+                  "0ksfvkkgzsz58h60a8kypg9x24sabl5007hr3a2ddgh05rjckbci"))))
       (arguments
        (substitute-keyword-arguments (package-arguments guix-0.8.1)
          ((#:phases phases)
diff --git a/gnu/packages/patches/agg-am_c_prototype.patch b/gnu/packages/patches/agg-am_c_prototype.patch
new file mode 100644
index 0000000000..3a09dc7be6
--- /dev/null
+++ b/gnu/packages/patches/agg-am_c_prototype.patch
@@ -0,0 +1,10 @@
+--- a/configure.in	2015-03-15 18:59:12.557417149 +0100
++++ b/configure.in	2015-03-15 18:59:29.273416518 +0100
+@@ -8,7 +8,6 @@
+ AC_PROG_CC
+ AC_PROG_CXX
+ AC_ISC_POSIX
+-AM_C_PROTOTYPES
+ if test "x$U" != "x"; then
+   AC_MSG_ERROR(Compiler not ANSI compliant)
+ fi
diff --git a/gnu/packages/patches/bash-completion-directories.patch b/gnu/packages/patches/bash-completion-directories.patch
new file mode 100644
index 0000000000..1a3e2f55c5
--- /dev/null
+++ b/gnu/packages/patches/bash-completion-directories.patch
@@ -0,0 +1,33 @@
+Bash-completion is written with FHS in mind where completion scripts
+all get added to /usr/share/bash-completion/completions and are picked
+up by the dynamic completion loader from there---whether they are
+part of bash-completion or installed by another package.
+
+On Guix systems, we want not only to search within bash-completion's own
+directory, but also in the user's profile and in the system profile.
+This is what this patch does.
+
+--- bash-completion-2.1/bash_completion	2015-03-11 09:45:45.056846446 +0100
++++ bash-completion-2.1/bash_completion	2015-03-11 09:52:43.248159504 +0100
+@@ -1928,9 +1928,20 @@ _completion_loader()
+     local compfile=./completions
+     [[ $BASH_SOURCE == */* ]] && compfile="${BASH_SOURCE%/*}/completions"
+     compfile+="/${1##*/}"
++    local base="${1##*/}"
+ 
++    # Look for completion files in the user and global profiles and
++    # lastly in 'bash-completion' itself.
++    for file in                                                                 \
++        "$HOME/.guix-profile/share/bash-completion/completions/$base"           \
++        "$HOME/.guix-profile/etc/bash_completion.d/$base"                       \
++        "/run/current-system/profile/share/bash-completion/completions/$base"   \
++        "/run/current-system/profile/etc/bash_completion.d/$base"               \
++        "$compfile"
++    do
+     # Avoid trying to source dirs; https://bugzilla.redhat.com/903540
+-    [[ -f "$compfile" ]] && . "$compfile" &>/dev/null && return 124
++        [[ -f "$file" ]] && . "$file" &>/dev/null && return 124
++    done
+ 
+     # Need to define *something*, otherwise there will be no completion at all.
+     complete -F _minimal "$1" && return 124
diff --git a/gnu/packages/patches/calibre-drop-unrar.patch b/gnu/packages/patches/calibre-drop-unrar.patch
new file mode 100644
index 0000000000..6b7a9f454c
--- /dev/null
+++ b/gnu/packages/patches/calibre-drop-unrar.patch
@@ -0,0 +1,49 @@
+Taken from Debian.
+
+Author: Dmitry Shachnev <mitya57@gmail.com>
+Description: do not build unrar extension as we strip unrar from the tarball
+Forwarded: not-needed
+Last-Update: 2013-04-04
+
+Index: calibre/setup/extensions.py
+===================================================================
+--- calibre.orig/setup/extensions.py	2014-02-02 10:42:14.510954007 +0100
++++ calibre/setup/extensions.py	2014-02-02 10:42:14.502954007 +0100
+@@ -209,24 +209,6 @@
+                 sip_files=['calibre/ebooks/pdf/render/qt_hack.sip']
+                 ),
+ 
+-    Extension('unrar',
+-              ['unrar/%s.cpp'%(x.partition('.')[0]) for x in '''
+-               rar.o strlist.o strfn.o pathfn.o savepos.o smallfn.o global.o file.o
+-               filefn.o filcreat.o archive.o arcread.o unicode.o system.o
+-               isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o
+-               timefn.o rdwrfn.o consio.o options.o ulinks.o errhnd.o rarvm.o
+-               secpassword.o rijndael.o getbits.o sha1.o extinfo.o extract.o
+-               volume.o list.o find.o unpack.o cmddata.o filestr.o scantree.o
+-               '''.split()] + ['calibre/utils/unrar.cpp'],
+-              inc_dirs=['unrar'],
+-              cflags=[('/' if iswindows else '-') + x for x in (
+-                  'DSILENT', 'DRARDLL', 'DUNRAR')] + (
+-                  [] if iswindows else ['-D_FILE_OFFSET_BITS=64',
+-                                        '-D_LARGEFILE_SOURCE']),
+-              optimize_level=2,
+-              libraries=['User32', 'Advapi32', 'kernel32', 'Shell32'] if iswindows else []
+-              ),
+-
+     ]
+ 
+ 
+Index: calibre/src/calibre/ebooks/metadata/archive.py
+===================================================================
+--- calibre.orig/src/calibre/ebooks/metadata/archive.py	2014-02-02 10:42:14.510954007 +0100
++++ calibre/src/calibre/ebooks/metadata/archive.py	2014-02-02 10:42:14.502954007 +0100
+@@ -42,7 +42,7 @@
+     description = _('Extract common e-book formats from archives '
+         '(zip/rar) files. Also try to autodetect if they are actually '
+         'cbz/cbr files.')
+-    file_types = set(['zip', 'rar'])
++    file_types = set(['zip'])
+     supported_platforms = ['windows', 'osx', 'linux']
+     on_import = True
+ 
diff --git a/gnu/packages/patches/gnunet-fix-scheduler.patch b/gnu/packages/patches/gnunet-fix-scheduler.patch
deleted file mode 100644
index 1e0aef2a1a..0000000000
--- a/gnu/packages/patches/gnunet-fix-scheduler.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: src/util/scheduler.c
-===================================================================
---- src/util/scheduler.c	(revision 31745)
-+++ src/util/scheduler.c	(working copy)
-@@ -1599,7 +1599,7 @@
-   int real_fd;
- 
-   GNUNET_DISK_internal_file_handle_ (fd, &real_fd, sizeof (int));
--  GNUNET_assert (real_fd > 0);
-+  GNUNET_assert (real_fd >= 0);
-   return add_without_sets (
-       delay, priority,
-       on_read  ? real_fd : -1,
diff --git a/gnu/packages/patches/gnunet-fix-tests.patch b/gnu/packages/patches/gnunet-fix-tests.patch
deleted file mode 100644
index 4276db5a7c..0000000000
--- a/gnu/packages/patches/gnunet-fix-tests.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -ru a/src/peerinfo-tool/Makefile.in b/src/peerinfo-tool/Makefile.in
---- src/peerinfo-tool/Makefile.in	2013-12-24 13:55:04.000000000 +0100
-+++ src/peerinfo-tool/Makefile.in	2014-01-30 13:07:52.275965484 +0100
-@@ -335,9 +335,6 @@
-   $(top_builddir)/src/statistics/libgnunetstatistics.la \
-   $(top_builddir)/src/util/libgnunetutil.la 
- 
--@HAVE_PYTHON_TRUE@check_SCRIPTS = \
--@HAVE_PYTHON_TRUE@ test_gnunet_peerinfo.py 
--
- @ENABLE_TEST_RUN_TRUE@TESTS = $(check_SCRIPTS)
- do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g'
- EXTRA_DIST = \
-diff -ru a/src/revocation/test_revocation.conf b/src/revocation/test_revocation.conf
---- src/revocation/test_revocation.conf	2013-12-21 18:57:06.000000000 +0100
-+++ src/revocation/test_revocation.conf	2014-01-30 15:00:02.841340556 +0100
-@@ -20,6 +20,9 @@
- [transport-udp]
- BROADCAST = NO
- 
-+[nat]
-+RETURN_LOCAL_ADDRESSES = YES
-+
- [peerinfo]
- USE_INCLUDED_HELLOS = NO
- 
-Index: src/gns/test_gns_cname_lookup.sh
-===================================================================
---- src/gns/test_gns_cname_lookup.sh	(revision 32117)
-+++ src/gns/test_gns_cname_lookup.sh	(revision 32118)
-@@ -13,6 +13,15 @@
- 	exit 77
- fi
- 
-+# permissive DNS resolver we will use for the test
-+DNS_RESOLVER="8.8.8.8"
-+if ! nslookup gnunet.org $DNS_RESOLVER &> /dev/null
-+then
-+  echo "Cannot reach DNS, skipping test"
-+  exit 77
-+fi
-+
-+
- rm -rf /tmp/test-gnunet-gns-peer-1/
- 
- TEST_DOMAIN_PLUS="www.gnu"
-Index: src/integration-tests/confs/test_defaults.conf
-===================================================================
---- src/integration-tests/confs/test_defaults.conf	(revision 32320)
-+++ src/integration-tests/confs/test_defaults.conf	(working copy)
-@@ -17,6 +17,7 @@
- EXTERNAL_ADDRESS = 127.0.0.1
- INTERNAL_ADDRESS = 127.0.0.1
- BINDTO = 127.0.0.1
-+RETURN_LOCAL_ADDRESSES = YES
- 
- [hostlist]
- SERVERS =
diff --git a/gnu/packages/patches/grub-freetype.patch b/gnu/packages/patches/grub-freetype.patch
new file mode 100644
index 0000000000..286830ccf8
--- /dev/null
+++ b/gnu/packages/patches/grub-freetype.patch
@@ -0,0 +1,24 @@
+commit fd0df6d098b1e6a4f60275c48a3ec88d15ba1fbb
+Author: Colin Watson <cjwatson@ubuntu.com>
+Date:   Fri Nov 29 12:19:36 2013 +0000
+
+    Fix build with FreeType 2.5.1
+    
+    * util/grub-gen-asciih.c: Include FT_SYNTHESIS_H rather than
+    <freetype/ftsynth.h>, fixing build with FreeType 2.5.1.
+    * util/grub-gen-widthspec.c: Likewise.
+    * util/grub-mkfont.c: Likewise.
+
+diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c
+index 0d8eb78..242dd01 100644
+--- a/util/grub-mkfont.c
++++ b/util/grub-mkfont.c
+@@ -43,7 +43,7 @@
+ #include FT_FREETYPE_H
+ #include FT_TRUETYPE_TAGS_H
+ #include FT_TRUETYPE_TABLES_H
+-#include <freetype/ftsynth.h>
++#include FT_SYNTHESIS_H
+ 
+ #undef __FTERRORS_H__
+ #define FT_ERROR_START_LIST   const char *ft_errmsgs[] = { 
diff --git a/gnu/packages/patches/icecat-CVE-2015-0822.patch b/gnu/packages/patches/icecat-CVE-2015-0822.patch
deleted file mode 100644
index 2625151453..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0822.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From 0922145c255bf2503d3b2dd5f8f1e813338ba990 Mon Sep 17 00:00:00 2001
-From: Mats Palmgren <mats@mozilla.com>
-Date: Sat, 24 Jan 2015 12:37:47 -0500
-Subject: [PATCH] Bug 1110557. r=mak, r=gavin, a=bkerensa
-
----
- .../components/satchel/nsFormFillController.cpp    | 67 +++++++++++++++-------
- toolkit/components/satchel/nsFormFillController.h  |  5 ++
- 2 files changed, 52 insertions(+), 20 deletions(-)
-
-diff --git a/toolkit/components/satchel/nsFormFillController.cpp b/toolkit/components/satchel/nsFormFillController.cpp
-index 315fc68..676ad84 100644
---- a/toolkit/components/satchel/nsFormFillController.cpp
-+++ b/toolkit/components/satchel/nsFormFillController.cpp
-@@ -61,6 +61,7 @@ nsFormFillController::nsFormFillController() :
-   mSuppressOnInput(false)
- {
-   mController = do_GetService("@mozilla.org/autocomplete/controller;1");
-+  MOZ_ASSERT(mController);
- }
- 
- struct PwmgrInputsEnumData
-@@ -104,6 +105,21 @@ nsFormFillController::AttributeChanged(nsIDocument* aDocument,
-                                        int32_t aNameSpaceID,
-                                        nsIAtom* aAttribute, int32_t aModType)
- {
-+  if ((aAttribute == nsGkAtoms::type || aAttribute == nsGkAtoms::readonly ||
-+       aAttribute == nsGkAtoms::autocomplete) &&
-+      aNameSpaceID == kNameSpaceID_None) {
-+    nsCOMPtr<nsIDOMHTMLInputElement> focusedInput(mFocusedInput);
-+    // Reset the current state of the controller, unconditionally.
-+    StopControllingInput();
-+    // Then restart based on the new values.  We have to delay this
-+    // to avoid ending up in an endless loop due to re-registering our
-+    // mutation observer (which would notify us again for *this* event).
-+    nsCOMPtr<nsIRunnable> event =
-+      NS_NewRunnableMethodWithArg<nsCOMPtr<nsIDOMHTMLInputElement>>
-+      (this, &nsFormFillController::MaybeStartControllingInput, focusedInput);
-+    NS_DispatchToCurrentThread(event);
-+  }
-+
-   if (mListNode && mListNode->Contains(aElement)) {
-     RevalidateDataList();
-   }
-@@ -841,28 +857,26 @@ nsFormFillController::RemoveForDocumentEnumerator(const nsINode* aKey,
-   return PL_DHASH_NEXT;
- }
- 
--nsresult
--nsFormFillController::Focus(nsIDOMEvent* aEvent)
-+void
-+nsFormFillController::MaybeStartControllingInput(nsIDOMHTMLInputElement* aInput)
- {
--  nsCOMPtr<nsIDOMHTMLInputElement> input = do_QueryInterface(
--    aEvent->InternalDOMEvent()->GetTarget());
--  nsCOMPtr<nsINode> inputNode = do_QueryInterface(input);
-+  nsCOMPtr<nsINode> inputNode = do_QueryInterface(aInput);
-   if (!inputNode)
--    return NS_OK;
-+    return;
- 
--  nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(input);
-+  nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(aInput);
-   if (!formControl || !formControl->IsSingleLineTextControl(true))
--    return NS_OK;
-+    return;
- 
-   bool isReadOnly = false;
--  input->GetReadOnly(&isReadOnly);
-+  aInput->GetReadOnly(&isReadOnly);
-   if (isReadOnly)
--    return NS_OK;
-+    return;
- 
--  bool autocomplete = nsContentUtils::IsAutocompleteEnabled(input);
-+  bool autocomplete = nsContentUtils::IsAutocompleteEnabled(aInput);
- 
-   nsCOMPtr<nsIDOMHTMLElement> datalist;
--  input->GetList(getter_AddRefs(datalist));
-+  aInput->GetList(getter_AddRefs(datalist));
-   bool hasList = datalist != nullptr;
- 
-   bool dummy;
-@@ -871,9 +885,16 @@ nsFormFillController::Focus(nsIDOMEvent* aEvent)
-       isPwmgrInput = true;
- 
-   if (isPwmgrInput || hasList || autocomplete) {
--    StartControllingInput(input);
-+    StartControllingInput(aInput);
-   }
-+}
- 
-+nsresult
-+nsFormFillController::Focus(nsIDOMEvent* aEvent)
-+{
-+  nsCOMPtr<nsIDOMHTMLInputElement> input = do_QueryInterface(
-+    aEvent->InternalDOMEvent()->GetTarget());
-+  MaybeStartControllingInput(input);
-   return NS_OK;
- }
- 
-@@ -1087,6 +1108,10 @@ nsFormFillController::StartControllingInput(nsIDOMHTMLInputElement *aInput)
-   // Make sure we're not still attached to an input
-   StopControllingInput();
- 
-+  if (!mController) {
-+    return;
-+  }
-+
-   // Find the currently focused docShell
-   nsCOMPtr<nsIDocShell> docShell = GetDocShellForInput(aInput);
-   int32_t index = GetIndexOfDocShell(docShell);
-@@ -1129,13 +1154,15 @@ nsFormFillController::StopControllingInput()
-     mListNode = nullptr;
-   }
- 
--  // Reset the controller's input, but not if it has been switched
--  // to another input already, which might happen if the user switches
--  // focus by clicking another autocomplete textbox
--  nsCOMPtr<nsIAutoCompleteInput> input;
--  mController->GetInput(getter_AddRefs(input));
--  if (input == this)
--    mController->SetInput(nullptr);
-+  if (mController) {
-+    // Reset the controller's input, but not if it has been switched
-+    // to another input already, which might happen if the user switches
-+    // focus by clicking another autocomplete textbox
-+    nsCOMPtr<nsIAutoCompleteInput> input;
-+    mController->GetInput(getter_AddRefs(input));
-+    if (input == this)
-+      mController->SetInput(nullptr);
-+  }
- 
-   if (mFocusedInputNode) {
-     MaybeRemoveMutationObserver(mFocusedInputNode);
-diff --git a/toolkit/components/satchel/nsFormFillController.h b/toolkit/components/satchel/nsFormFillController.h
-index b60d28d..8c3ba26 100644
---- a/toolkit/components/satchel/nsFormFillController.h
-+++ b/toolkit/components/satchel/nsFormFillController.h
-@@ -62,6 +62,11 @@ protected:
- 
-   void StartControllingInput(nsIDOMHTMLInputElement *aInput);
-   void StopControllingInput();
-+  /**
-+   * Checks that aElement is a type of element we want to fill, then calls
-+   * StartControllingInput on it.
-+   */
-+  void MaybeStartControllingInput(nsIDOMHTMLInputElement* aElement);
- 
-   nsresult PerformInputListAutoComplete(nsIAutoCompleteResult* aPreviousResult);
- 
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch
deleted file mode 100644
index c57da755d1..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 28b6204b1421aa57b3c10c43d90cb516910bc80f Mon Sep 17 00:00:00 2001
-From: Markus Stange <mstange@themasta.com>
-Date: Tue, 6 Jan 2015 12:08:39 +0100
-Subject: [PATCH] Bug 1117304 - Also do the checks at the start of CopyRect in
- release builds. r=Bas, a=sledru
-
----
- gfx/2d/FilterNodeSoftware.cpp | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
-index 00d790f..396d0da 100644
---- a/gfx/2d/FilterNodeSoftware.cpp
-+++ b/gfx/2d/FilterNodeSoftware.cpp
-@@ -253,9 +253,12 @@ CopyRect(DataSourceSurface* aSrc, DataSourceSurface* aDest,
-     MOZ_CRASH("we should never be getting invalid rects at this point");
-   }
- 
--  MOZ_ASSERT(aSrc->GetFormat() == aDest->GetFormat(), "different surface formats");
--  MOZ_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect), "source rect too big for source surface");
--  MOZ_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(aSrcRect - aSrcRect.TopLeft() + aDestPoint), "dest surface too small");
-+  MOZ_RELEASE_ASSERT(aSrc->GetFormat() == aDest->GetFormat(),
-+                     "different surface formats");
-+  MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect),
-+                     "source rect too big for source surface");
-+  MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(IntRect(aDestPoint, aSrcRect.Size())),
-+                     "dest surface too small");
- 
-   if (aSrcRect.IsEmpty()) {
-     return;
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch
deleted file mode 100644
index 1ff68f4b4c..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 5ff75fbe51d5760a96b4e614617c9cbf35f1fbaa Mon Sep 17 00:00:00 2001
-From: Markus Stange <mstange@themasta.com>
-Date: Mon, 5 Jan 2015 18:40:27 +0100
-Subject: [PATCH] Bug 1117304 - Make sure the tile filter doesn't call CopyRect
- on surfaces with different formats. r=Bas, a=sledru
-
----
- gfx/2d/FilterNodeSoftware.cpp | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
-index 396d0da..10d92c6 100644
---- a/gfx/2d/FilterNodeSoftware.cpp
-+++ b/gfx/2d/FilterNodeSoftware.cpp
-@@ -1568,7 +1568,16 @@ FilterNodeTileSoftware::Render(const IntRect& aRect)
-           return nullptr;
-         }
-       }
--      MOZ_ASSERT(input->GetFormat() == target->GetFormat(), "different surface formats from the same input?");
-+
-+      if (input->GetFormat() != target->GetFormat()) {
-+        // Different rectangles of the input can have different formats. If
-+        // that happens, just convert everything to B8G8R8A8.
-+        target = FilterProcessing::ConvertToB8G8R8A8(target);
-+        input = FilterProcessing::ConvertToB8G8R8A8(input);
-+        if (MOZ2D_WARN_IF(!target) || MOZ2D_WARN_IF(!input)) {
-+          return nullptr;
-+        }
-+      }
- 
-       CopyRect(input, target, srcRect - srcRect.TopLeft(), destRect.TopLeft() - aRect.TopLeft());
-     }
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch
deleted file mode 100644
index 8d40126849..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From c91087708686ae1c47abee65e19536688e5ec8f2 Mon Sep 17 00:00:00 2001
-From: Ryan VanderMeulen <ryanvm@gmail.com>
-Date: Mon, 26 Jan 2015 17:24:46 -0500
-Subject: [PATCH] Bug 1117304 - Add missing MOZ2D_WARN_IF definition to fix
- bustage. r=milan, a=bustage
-
----
- gfx/2d/FilterNodeSoftware.cpp |  1 +
- gfx/2d/Logging.h              | 19 +++++++++++++++++++
- 2 files changed, 20 insertions(+)
-
-diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
-index 10d92c6..48bf162 100644
---- a/gfx/2d/FilterNodeSoftware.cpp
-+++ b/gfx/2d/FilterNodeSoftware.cpp
-@@ -12,6 +12,7 @@
- #include "Blur.h"
- #include <map>
- #include "FilterProcessing.h"
-+#include "Logging.h"
- #include "mozilla/PodOperations.h"
- #include "mozilla/DebugOnly.h"
- 
-diff --git a/gfx/2d/Logging.h b/gfx/2d/Logging.h
-index 85e788c..d7728bb 100644
---- a/gfx/2d/Logging.h
-+++ b/gfx/2d/Logging.h
-@@ -155,6 +155,25 @@ typedef Log<LOG_WARNING> WarningLog;
- #define gfxWarning if (1) ; else NoLog
- #endif
- 
-+// See nsDebug.h and the NS_WARN_IF macro
-+
-+#ifdef __cplusplus
-+#ifdef DEBUG
-+inline bool MOZ2D_warn_if_impl(bool aCondition, const char* aExpr,
-+                               const char* aFile, int32_t aLine)
-+{
-+  if (MOZ_UNLIKELY(aCondition)) {
-+    gfxWarning() << aExpr << " at " << aFile << ":" << aLine;
-+  }
-+  return aCondition;
-+}
-+#define MOZ2D_WARN_IF(condition) \
-+  MOZ2D_warn_if_impl(condition, #condition, __FILE__, __LINE__)
-+#else
-+#define MOZ2D_WARN_IF(condition) (bool)(condition)
-+#endif
-+#endif
-+
- const int INDENT_PER_LEVEL = 2;
- 
- class TreeLog
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch
deleted file mode 100644
index c04d604923..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From c8437505a63fc2b2552b8af217d60d79abb92ba3 Mon Sep 17 00:00:00 2001
-From: Ben Turner <bent.mozilla@gmail.com>
-Date: Fri, 6 Feb 2015 15:25:33 -0800
-Subject: [PATCH] Bug 1130541. r=janv, a=sledru
-
----
- dom/indexedDB/IDBDatabase.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp
-index 7329cec..c9c7e4f 100644
---- a/dom/indexedDB/IDBDatabase.cpp
-+++ b/dom/indexedDB/IDBDatabase.cpp
-@@ -536,6 +536,7 @@ IDBDatabase::CreateObjectStore(
-   IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction();
- 
-   if (!transaction ||
-+      transaction->Database() != this ||
-       transaction->GetMode() != IDBTransaction::VERSION_CHANGE) {
-     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR);
-     return nullptr;
-@@ -577,6 +578,7 @@ IDBDatabase::DeleteObjectStore(const nsAString& aName, ErrorResult& aRv)
-   IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction();
- 
-   if (!transaction ||
-+      transaction->Database() != this ||
-       transaction->GetMode() != IDBTransaction::VERSION_CHANGE) {
-     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR);
-     return;
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch
deleted file mode 100644
index 9510cd611f..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 4e799e44288c951f8d9acd17e7d8c56c9ee6a7d3 Mon Sep 17 00:00:00 2001
-From: Ben Turner <bent.mozilla@gmail.com>
-Date: Mon, 9 Feb 2015 14:38:26 -0800
-Subject: [PATCH] Bug 1130541 followup a=test-only
-
---HG--
-extra : amend_source : 23d80353f87897fdac9c99048d12ebe4ed390f76
----
- dom/indexedDB/test/browser_quotaPrompt.html | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/dom/indexedDB/test/browser_quotaPrompt.html b/dom/indexedDB/test/browser_quotaPrompt.html
-index c139970..dbeea68 100644
---- a/dom/indexedDB/test/browser_quotaPrompt.html
-+++ b/dom/indexedDB/test/browser_quotaPrompt.html
-@@ -38,6 +38,7 @@
-         let request = indexedDB.open(window.location.pathname, version++);
-         request.onerror = errorHandler;
-         request.onupgradeneeded = function(event) {
-+          let db = event.target.result;
-           db.deleteObjectStore("foo");
-           db.onversionchange = function () { db.close(); };
-           request.transaction.oncomplete = function(event) {
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch
deleted file mode 100644
index f6e2756054..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 4106ffa6ee83b814428bb07948b3595e3fa3847e Mon Sep 17 00:00:00 2001
-From: Jan de Mooij <jdemooij@mozilla.com>
-Date: Tue, 10 Feb 2015 09:40:46 +0100
-Subject: [PATCH] Bug 1128196 - Don't relazify scripts with a TypeScript.
- r=till, a=lmandel
-
----
- js/src/jsscript.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/js/src/jsscript.h b/js/src/jsscript.h
-index 4d548ef..9a0cfbb 100644
---- a/js/src/jsscript.h
-+++ b/js/src/jsscript.h
-@@ -1251,7 +1251,7 @@ class JSScript : public js::gc::BarrieredCell<JSScript>
-     }
- 
-     bool isRelazifiable() const {
--        return (selfHosted() || lazyScript) &&
-+        return (selfHosted() || lazyScript) && !types &&
-                !isGenerator() && !hasBaselineScript() && !hasAnyIonScript() && !hasBeenInlined();
-     }
-     void setLazyScript(js::LazyScript *lazy) {
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch
deleted file mode 100644
index c95cf23a29..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 83c4bfeea2d2203f726e3bfcb7ee6fe56b4d9703 Mon Sep 17 00:00:00 2001
-From: Ryan VanderMeulen <ryanvm@gmail.com>
-Date: Thu, 29 Jan 2015 10:31:25 -0500
-Subject: [PATCH] Bug 1111248. r=Waldo, a=sledru
-
----
- js/src/jsbool.cpp | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/js/src/jsbool.cpp b/js/src/jsbool.cpp
-index 5d88bd5..8d5d672 100644
---- a/js/src/jsbool.cpp
-+++ b/js/src/jsbool.cpp
-@@ -198,7 +198,8 @@ js::ToBooleanSlow(HandleValue v)
- bool
- js::BooleanGetPrimitiveValueSlow(HandleObject wrappedBool)
- {
--    JSObject *obj = wrappedBool->as<ProxyObject>().target();
--    JS_ASSERT(obj);
-+    JSObject *obj = CheckedUnwrap(wrappedBool);
-+    if (!obj || !obj->is<BooleanObject>())
-+        return false;
-     return obj->as<BooleanObject>().unbox();
- }
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch
deleted file mode 100644
index 115cd76201..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-From 4e4e34238e5bb5af83a645a5f4d2097e3b30e9dd Mon Sep 17 00:00:00 2001
-From: Tom Schuster <evilpies@gmail.com>
-Date: Sun, 25 Jan 2015 21:42:10 +0100
-Subject: [PATCH] Bug 1111243 - Implement ES6 proxy behavior for IsArray.
- r=efaust, a=abillings
-
----
- browser/devtools/app-manager/app-projects.js |  2 ++
- js/public/Class.h                            |  5 +++-
- js/src/jsarray.cpp                           |  9 ++++--
- js/src/jsobjinlines.h                        | 15 +++++++++-
- js/src/json.cpp                              | 11 +++----
- js/src/jsproxy.cpp                           | 45 ++++++++++++++++++++++++++++
- 6 files changed, 78 insertions(+), 9 deletions(-)
-
-diff --git a/browser/devtools/app-manager/app-projects.js b/browser/devtools/app-manager/app-projects.js
-index d09f72f..77ca67b 100644
---- a/browser/devtools/app-manager/app-projects.js
-+++ b/browser/devtools/app-manager/app-projects.js
-@@ -61,6 +61,8 @@ const IDB = {
-   add: function(project) {
-     let deferred = promise.defer();
- 
-+    project = JSON.parse(JSON.stringify(project));
-+
-     if (!project.location) {
-       // We need to make sure this object has a `.location` property.
-       deferred.reject("Missing location property on project object.");
-diff --git a/js/public/Class.h b/js/public/Class.h
-index ff864b1..46f7d39 100644
---- a/js/public/Class.h
-+++ b/js/public/Class.h
-@@ -521,7 +521,10 @@ Valueify(const JSClass *c)
-  */
- enum ESClassValue {
-     ESClass_Array, ESClass_Number, ESClass_String, ESClass_Boolean,
--    ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date
-+    ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date,
-+    // Special snowflake for the ES6 IsArray method.
-+    // Please don't use it without calling that function.
-+    ESClass_IsArray
- };
- 
- /*
-diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp
-index 24da176..46f1c20 100644
---- a/js/src/jsarray.cpp
-+++ b/js/src/jsarray.cpp
-@@ -2645,7 +2645,8 @@ js::array_concat(JSContext *cx, unsigned argc, Value *vp)
-         HandleValue v = HandleValue::fromMarkedLocation(&p[i]);
-         if (v.isObject()) {
-             RootedObject obj(cx, &v.toObject());
--            if (ObjectClassIs(obj, ESClass_Array, cx)) {
-+            // This should be IsConcatSpreadable
-+            if (IsArray(obj, cx)) {
-                 uint32_t alength;
-                 if (!GetLengthProperty(cx, obj, &alength))
-                     return false;
-@@ -2870,7 +2871,11 @@ static bool
- array_isArray(JSContext *cx, unsigned argc, Value *vp)
- {
-     CallArgs args = CallArgsFromVp(argc, vp);
--    bool isArray = args.length() > 0 && IsObjectWithClass(args[0], ESClass_Array, cx);
-+    bool isArray = false;
-+    if (args.get(0).isObject()) {
-+        RootedObject obj(cx, &args[0].toObject());
-+        isArray = IsArray(obj, cx);
-+    }
-     args.rval().setBoolean(isArray);
-     return true;
- }
-diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h
-index e848ba7..557dd26 100644
---- a/js/src/jsobjinlines.h
-+++ b/js/src/jsobjinlines.h
-@@ -1032,7 +1032,10 @@ ObjectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx)
-         return Proxy::objectClassIs(obj, classValue, cx);
- 
-     switch (classValue) {
--      case ESClass_Array: return obj->is<ArrayObject>();
-+      case ESClass_Array:
-+      case ESClass_IsArray:
-+        // There difference between those is only relevant for proxies.
-+        return obj->is<ArrayObject>();
-       case ESClass_Number: return obj->is<NumberObject>();
-       case ESClass_String: return obj->is<StringObject>();
-       case ESClass_Boolean: return obj->is<BooleanObject>();
-@@ -1053,6 +1056,16 @@ IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx)
-     return ObjectClassIs(obj, classValue, cx);
- }
- 
-+// ES6 7.2.2
-+inline bool
-+IsArray(HandleObject obj, JSContext *cx)
-+{
-+    if (obj->is<ArrayObject>())
-+        return true;
-+
-+    return ObjectClassIs(obj, ESClass_IsArray, cx);
-+}
-+
- static MOZ_ALWAYS_INLINE bool
- NewObjectMetadata(ExclusiveContext *cxArg, JSObject **pmetadata)
- {
-diff --git a/js/src/json.cpp b/js/src/json.cpp
-index 6e45bfd..81a99a6 100644
---- a/js/src/json.cpp
-+++ b/js/src/json.cpp
-@@ -300,7 +300,7 @@ JO(JSContext *cx, HandleObject obj, StringifyContext *scx)
-     Maybe<AutoIdVector> ids;
-     const AutoIdVector *props;
-     if (scx->replacer && !scx->replacer->isCallable()) {
--        JS_ASSERT(JS_IsArrayObject(cx, scx->replacer));
-+        JS_ASSERT(IsArray(scx->replacer, cx));
-         props = &scx->propertyList;
-     } else {
-         JS_ASSERT_IF(scx->replacer, scx->propertyList.length() == 0);
-@@ -488,7 +488,7 @@ Str(JSContext *cx, const Value &v, StringifyContext *scx)
- 
-     scx->depth++;
-     bool ok;
--    if (ObjectClassIs(obj, ESClass_Array, cx))
-+    if (IsArray(obj, cx))
-         ok = JA(cx, obj, scx);
-     else
-         ok = JO(cx, obj, scx);
-@@ -510,7 +510,7 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp
-     if (replacer) {
-         if (replacer->isCallable()) {
-             /* Step 4a(i): use replacer to transform values.  */
--        } else if (ObjectClassIs(replacer, ESClass_Array, cx)) {
-+        } else if (IsArray(replacer, cx)) {
-             /*
-              * Step 4b: The spec algorithm is unhelpfully vague about the exact
-              * steps taken when the replacer is an array, regarding the exact
-@@ -541,7 +541,8 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp
- 
-             /* Step 4b(ii). */
-             uint32_t len;
--            JS_ALWAYS_TRUE(GetLengthProperty(cx, replacer, &len));
-+            if (!GetLengthProperty(cx, replacer, &len))
-+                return false;
-             if (replacer->is<ArrayObject>() && !replacer->isIndexed())
-                 len = Min(len, replacer->getDenseInitializedLength());
- 
-@@ -678,7 +679,7 @@ Walk(JSContext *cx, HandleObject holder, HandleId name, HandleValue reviver, Mut
-     if (val.isObject()) {
-         RootedObject obj(cx, &val.toObject());
- 
--        if (ObjectClassIs(obj, ESClass_Array, cx)) {
-+        if (IsArray(obj, cx)) {
-             /* Step 2a(ii). */
-             uint32_t length;
-             if (!GetLengthProperty(cx, obj, &length))
-diff --git a/js/src/jsproxy.cpp b/js/src/jsproxy.cpp
-index 7644da1..7453103 100644
---- a/js/src/jsproxy.cpp
-+++ b/js/src/jsproxy.cpp
-@@ -1108,6 +1108,14 @@ class ScriptedDirectProxyHandler : public DirectProxyHandler {
-     virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
- 
-     /* Spidermonkey extensions. */
-+    // A scripted proxy should not be treated as generic in most contexts.
-+    virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
-+                            CallArgs args) MOZ_OVERRIDE;
-+    virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
-+                               JSContext *cx) MOZ_OVERRIDE;
-+    virtual bool regexp_toShared(JSContext *cx, HandleObject proxy,
-+                                 RegExpGuard *g) MOZ_OVERRIDE;
-+
-     virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
-     virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
-     virtual bool isScripted() MOZ_OVERRIDE { return true; }
-@@ -2350,6 +2358,43 @@ ScriptedDirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const C
-     return true;
- }
- 
-+bool
-+ScriptedDirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
-+                                       CallArgs args)
-+{
-+    ReportIncompatible(cx, args);
-+    return false;
-+}
-+
-+bool
-+ScriptedDirectProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue,
-+                                          JSContext *cx)
-+{
-+    // Special case IsArray. In every other instance ES wants to have exactly
-+    // one object type and not a proxy around it, so return false.
-+    if (classValue != ESClass_IsArray)
-+        return false;
-+
-+    // In ES6 IsArray is supposed to poke at the Proxy target, instead we do this here.
-+    // The reason for this is that we have proxies for which looking at the target might
-+    // be impossible. So instead we use our little objectClassIs function that just works
-+    // already across different wrappers.
-+    RootedObject target(cx, proxy->as<ProxyObject>().target());
-+    if (!target)
-+        return false;
-+
-+    return IsArray(target, cx);
-+}
-+
-+bool
-+ScriptedDirectProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
-+                                            RegExpGuard *g)
-+{
-+    MOZ_CRASH("Should not end up in ScriptedDirectProxyHandler::regexp_toShared");
-+    return false;
-+}
-+
-+
- ScriptedDirectProxyHandler ScriptedDirectProxyHandler::singleton;
- 
- #define INVOKE_ON_PROTOTYPE(cx, handler, proxy, protoCall)                   \
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch
deleted file mode 100644
index 58e61d080c..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 97ba04bf95606b409b1b3035504a41c274ecffe2 Mon Sep 17 00:00:00 2001
-From: Shu-yu Guo <shu@rfrn.org>
-Date: Mon, 26 Jan 2015 18:26:25 -0800
-Subject: [PATCH] Bug 1119579 - Don't GC while iterating compartments in
- findAllGlobals. r=sfink, a=abillings
-
----
- js/src/vm/Debugger.cpp | 56 ++++++++++++++++++++++++++++++--------------------
- 1 file changed, 34 insertions(+), 22 deletions(-)
-
-diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp
-index 27e993d..a8decef 100644
---- a/js/src/vm/Debugger.cpp
-+++ b/js/src/vm/Debugger.cpp
-@@ -2825,37 +2825,49 @@ Debugger::findAllGlobals(JSContext *cx, unsigned argc, Value *vp)
- {
-     THIS_DEBUGGER(cx, argc, vp, "findAllGlobals", args, dbg);
- 
--    RootedObject result(cx, NewDenseEmptyArray(cx));
--    if (!result)
--        return false;
-+    AutoObjectVector globals(cx);
- 
--    for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) {
--        if (c->options().invisibleToDebugger())
--            continue;
-+    {
-+        // Accumulate the list of globals before wrapping them, because
-+        // wrapping can GC and collect compartments from under us, while
-+        // iterating.
- 
--        c->zone()->scheduledForDestruction = false;
-+        for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) {
-+            if (c->options().invisibleToDebugger())
-+                continue;
- 
--        GlobalObject *global = c->maybeGlobal();
-+            c->zone()->scheduledForDestruction = false;
- 
--        if (cx->runtime()->isSelfHostingGlobal(global))
--            continue;
-+            GlobalObject *global = c->maybeGlobal();
- 
--        if (global) {
--            /*
--             * We pulled |global| out of nowhere, so it's possible that it was
--             * marked gray by XPConnect. Since we're now exposing it to JS code,
--             * we need to mark it black.
--             */
--            JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT);
-+            if (cx->runtime()->isSelfHostingGlobal(global))
-+                continue;
- 
--            RootedValue globalValue(cx, ObjectValue(*global));
--            if (!dbg->wrapDebuggeeValue(cx, &globalValue))
--                return false;
--            if (!NewbornArrayPush(cx, result, globalValue))
--                return false;
-+            if (global) {
-+                /*
-+                 * We pulled |global| out of nowhere, so it's possible that it was
-+                 * marked gray by XPConnect. Since we're now exposing it to JS code,
-+                 * we need to mark it black.
-+                 */
-+                JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT);
-+                if (!globals.append(global))
-+                    return false;
-+            }
-         }
-     }
- 
-+    RootedObject result(cx, NewDenseEmptyArray(cx));
-+    if (!result)
-+        return false;
-+
-+    for (size_t i = 0; i < globals.length(); i++) {
-+        RootedValue globalValue(cx, ObjectValue(*globals[i]));
-+        if (!dbg->wrapDebuggeeValue(cx, &globalValue))
-+            return false;
-+        if (!NewbornArrayPush(cx, result, globalValue))
-+            return false;
-+    }
-+
-     args.rval().setObject(*result);
-     return true;
- }
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch
deleted file mode 100644
index 3e4ed17598..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 746ddf19ff532b8abc90d3a91322a04b462ebfa8 Mon Sep 17 00:00:00 2001
-From: Brian Hackett <bhackett1024@gmail.com>
-Date: Mon, 26 Jan 2015 13:14:34 -0500
-Subject: [PATCH] Bug 1124018 - Null the allocation site table if
- initialization fails. r=jonco, a=bkerensa
-
----
- js/src/jsinfer.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/js/src/jsinfer.cpp b/js/src/jsinfer.cpp
-index b62ad1f..4019b16 100644
---- a/js/src/jsinfer.cpp
-+++ b/js/src/jsinfer.cpp
-@@ -2035,6 +2035,7 @@ TypeCompartment::addAllocationSiteTypeObject(JSContext *cx, AllocationSiteKey ke
-         allocationSiteTable = cx->new_<AllocationSiteTable>();
-         if (!allocationSiteTable || !allocationSiteTable->init()) {
-             js_delete(allocationSiteTable);
-+            allocationSiteTable = nullptr;
-             return nullptr;
-         }
-     }
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch
deleted file mode 100644
index 181f9243e3..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 0758363d982b0b3e6cf021c164715a028a345b9e Mon Sep 17 00:00:00 2001
-From: "Byron Campen [:bwc]" <docfaraday@gmail.com>
-Date: Wed, 21 Jan 2015 08:56:36 -0800
-Subject: [PATCH] Bug 1123882 - Fix case where offset != 0. r=derf, a=bkerensa
-
----
- content/media/MediaDecoderStateMachine.cpp | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp
-index ce5870f..4ed496c 100644
---- a/content/media/MediaDecoderStateMachine.cpp
-+++ b/content/media/MediaDecoderStateMachine.cpp
-@@ -328,6 +328,8 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio,
-   if (offset >= aAudio->mFrames)
-     return;
- 
-+  size_t framesToWrite = aAudio->mFrames - offset;
-+
-   aAudio->EnsureAudioBuffer();
-   nsRefPtr<SharedBuffer> buffer = aAudio->mAudioBuffer;
-   AudioDataValue* bufferData = static_cast<AudioDataValue*>(buffer->Data());
-@@ -335,10 +337,11 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio,
-   for (uint32_t i = 0; i < aAudio->mChannels; ++i) {
-     channels.AppendElement(bufferData + i*aAudio->mFrames + offset);
-   }
--  aOutput->AppendFrames(buffer.forget(), channels, aAudio->mFrames);
--  VERBOSE_LOG("writing %d frames of data to MediaStream for AudioData at %lld",
--              aAudio->mFrames - int32_t(offset), aAudio->mTime);
--  aStream->mAudioFramesWritten += aAudio->mFrames - int32_t(offset);
-+  aOutput->AppendFrames(buffer.forget(), channels, framesToWrite);
-+  VERBOSE_LOG("writing %u frames of data to MediaStream for AudioData at %lld",
-+              static_cast<unsigned>(framesToWrite),
-+              aAudio->mTime);
-+  aStream->mAudioFramesWritten += framesToWrite;
- }
- 
- static void WriteVideoToMediaStream(layers::Image* aImage,
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch
deleted file mode 100644
index 818d369b26..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 94899f849e50a765bb26420f5c70d49002d6673f Mon Sep 17 00:00:00 2001
-From: Glenn Randers-Pehrson <glennrp+bmo@gmail.com>
-Date: Mon, 26 Jan 2015 16:07:00 -0500
-Subject: [PATCH] Bug 1117406 - Fix handling of out-of-range PNG tRNS values.
- r=jmuizelaar, a=abillings
-
----
- image/decoders/nsPNGDecoder.cpp | 22 ++++++++++++----------
- 1 file changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/image/decoders/nsPNGDecoder.cpp b/image/decoders/nsPNGDecoder.cpp
-index acaa835..8e6bc2d 100644
---- a/image/decoders/nsPNGDecoder.cpp
-+++ b/image/decoders/nsPNGDecoder.cpp
-@@ -528,24 +528,26 @@ nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr)
-     png_set_expand(png_ptr);
- 
-   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
--    int sample_max = (1 << bit_depth);
-     png_color_16p trans_values;
-     png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &trans_values);
-     /* libpng doesn't reject a tRNS chunk with out-of-range samples
-        so we check it here to avoid setting up a useless opacity
--       channel or producing unexpected transparent pixels when using
--       libpng-1.2.19 through 1.2.26 (bug #428045) */
--    if ((color_type == PNG_COLOR_TYPE_GRAY &&
--       (int)trans_values->gray > sample_max) ||
--       (color_type == PNG_COLOR_TYPE_RGB &&
--       ((int)trans_values->red > sample_max ||
--       (int)trans_values->green > sample_max ||
--       (int)trans_values->blue > sample_max)))
-+       channel or producing unexpected transparent pixels (bug #428045) */
-+    if (bit_depth < 16) {
-+      png_uint_16 sample_max = (1 << bit_depth) - 1;
-+      if ((color_type == PNG_COLOR_TYPE_GRAY &&
-+           trans_values->gray > sample_max) ||
-+           (color_type == PNG_COLOR_TYPE_RGB &&
-+           (trans_values->red > sample_max ||
-+           trans_values->green > sample_max ||
-+           trans_values->blue > sample_max)))
-       {
-         /* clear the tRNS valid flag and release tRNS memory */
-         png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
-+        num_trans = 0;
-       }
--    else
-+    }
-+    if (num_trans != 0)
-       png_set_expand(png_ptr);
-   }
- 
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch
deleted file mode 100644
index 685e3a6d43..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 4920c5c447d1153dffa623dd70d8b535b9ca6795 Mon Sep 17 00:00:00 2001
-From: Jan de Mooij <jdemooij@mozilla.com>
-Date: Mon, 26 Jan 2015 12:59:47 +0100
-Subject: [PATCH] Bug 1115776 - Fix LApplyArgsGeneric to always emit the
- has-script check. r=shu, a=sledru
-
----
- js/src/jit/CodeGenerator.cpp | 24 ++++++++----------------
- 1 file changed, 8 insertions(+), 16 deletions(-)
-
-diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
-index ba14f86..0669692 100644
---- a/js/src/jit/CodeGenerator.cpp
-+++ b/js/src/jit/CodeGenerator.cpp
-@@ -2448,27 +2448,19 @@ CodeGenerator::visitApplyArgsGeneric(LApplyArgsGeneric *apply)
- 
-     masm.checkStackAlignment();
- 
--    // If the function is known to be uncompilable, only emit the call to InvokeFunction.
-+    // If the function is native, only emit the call to InvokeFunction.
-     ExecutionMode executionMode = gen->info().executionMode();
--    if (apply->hasSingleTarget()) {
--        JSFunction *target = apply->getSingleTarget();
--        if (target->isNative()) {
--            if (!emitCallInvokeFunction(apply, copyreg))
--                return false;
--            emitPopArguments(apply, copyreg);
--            return true;
--        }
-+    if (apply->hasSingleTarget() && apply->getSingleTarget()->isNative()) {
-+        if (!emitCallInvokeFunction(apply, copyreg))
-+            return false;
-+        emitPopArguments(apply, copyreg);
-+        return true;
-     }
- 
-     Label end, invoke;
- 
--    // Guard that calleereg is an interpreted function with a JSScript:
--    if (!apply->hasSingleTarget()) {
--        masm.branchIfFunctionHasNoScript(calleereg, &invoke);
--    } else {
--        // Native single targets are handled by LCallNative.
--        JS_ASSERT(!apply->getSingleTarget()->isNative());
--    }
-+    // Guard that calleereg is an interpreted function with a JSScript.
-+    masm.branchIfFunctionHasNoScript(calleereg, &invoke);
- 
-     // Knowing that calleereg is a non-native function, load the JSScript.
-     masm.loadPtr(Address(calleereg, JSFunction::offsetOfNativeOrScript()), objreg);
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch
deleted file mode 100644
index d067d8133d..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From f7d24f37425d3d9054a7e5657815440a07166d3f Mon Sep 17 00:00:00 2001
-From: Kartikaya Gupta <kgupta@mozilla.com>
-Date: Tue, 20 Jan 2015 10:33:27 -0500
-Subject: [PATCH] Bug 1107009 - Additional locking needed for esr31 backport.
- r=BenWa a=sledru
-
----
- gfx/layers/ipc/CompositorParent.cpp | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp
-index 97c8693..cb03e71 100644
---- a/gfx/layers/ipc/CompositorParent.cpp
-+++ b/gfx/layers/ipc/CompositorParent.cpp
-@@ -1286,13 +1286,19 @@ CrossProcessCompositorParent::ShadowLayersUpdated(
- {
-   uint64_t id = aLayerTree->GetId();
-   MOZ_ASSERT(id != 0);
-+  const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id);
-+  if (!state) {
-+    return;
-+  }
-+  MOZ_ASSERT(state->mParent);
-+
-   Layer* shadowRoot = aLayerTree->GetRoot();
-   if (shadowRoot) {
-     SetShadowProperties(shadowRoot);
-   }
-   UpdateIndirectTree(id, shadowRoot, aTargetConfig);
- 
--  sIndirectLayerTrees[id].mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite);
-+  state->mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite);
- }
- 
- void
-@@ -1329,7 +1335,12 @@ AsyncCompositionManager*
- CrossProcessCompositorParent::GetCompositionManager(LayerTransactionParent* aLayerTree)
- {
-   uint64_t id = aLayerTree->GetId();
--  return sIndirectLayerTrees[id].mParent->GetCompositionManager(aLayerTree);
-+  const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id);
-+  if (!state) {
-+    return nullptr;
-+  }
-+  MOZ_ASSERT(state->mParent);
-+  return state->mParent->GetCompositionManager(aLayerTree);
- }
- 
- void
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch
deleted file mode 100644
index 9a4668b2dc..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From 66e65b2138c6db20288ef4cf78d15995f382a7e2 Mon Sep 17 00:00:00 2001
-From: Kartikaya Gupta <kgupta@mozilla.com>
-Date: Tue, 13 Jan 2015 13:26:26 -0500
-Subject: [PATCH] Bug 1107009. r=BenWa, a=sledru
-
----
- gfx/layers/ipc/CompositorParent.cpp | 57 ++++++++++++++++++++++++++++++-------
- 1 file changed, 46 insertions(+), 11 deletions(-)
-
-diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp
-index ce50277..cbbb2ef 100644
---- a/gfx/layers/ipc/CompositorParent.cpp
-+++ b/gfx/layers/ipc/CompositorParent.cpp
-@@ -22,6 +22,7 @@
- #include "gfxPrefs.h"                   // for gfxPrefs
- #include "ipc/ShadowLayersManager.h"    // for ShadowLayersManager
- #include "mozilla/AutoRestore.h"        // for AutoRestore
-+#include "mozilla/ClearOnShutdown.h"    // for ClearOnShutdown
- #include "mozilla/DebugOnly.h"          // for DebugOnly
- #include "mozilla/gfx/2D.h"          // for DrawTarget
- #include "mozilla/gfx/Point.h"          // for IntSize
-@@ -70,6 +71,16 @@ CompositorParent::LayerTreeState::LayerTreeState()
- 
- typedef map<uint64_t, CompositorParent::LayerTreeState> LayerTreeMap;
- static LayerTreeMap sIndirectLayerTrees;
-+static StaticAutoPtr<mozilla::Monitor> sIndirectLayerTreesLock;
-+
-+static void EnsureLayerTreeMapReady()
-+{
-+  MOZ_ASSERT(NS_IsMainThread());
-+  if (!sIndirectLayerTreesLock) {
-+    sIndirectLayerTreesLock = new Monitor("IndirectLayerTree");
-+    mozilla::ClearOnShutdown(&sIndirectLayerTreesLock);
-+  }
-+}
- 
- // FIXME/bug 774386: we're assuming that there's only one
- // CompositorParent, but that's not always true.  This assumption only
-@@ -132,6 +143,7 @@ void CompositorParent::StartUp()
-     return;
-   }
-   MOZ_ASSERT(!sCompositorLoop);
-+  EnsureLayerTreeMapReady();
-   CreateCompositorMap();
-   CreateThread();
-   sMainLoop = MessageLoop::current();
-@@ -206,7 +218,11 @@ CompositorParent::CompositorParent(nsIWidget* aWidget,
-                                                           this, &mCompositorID));
- 
-   mRootLayerTreeID = AllocateLayerTreeId();
--  sIndirectLayerTrees[mRootLayerTreeID].mParent = this;
-+
-+  { // scope lock
-+    MonitorAutoLock lock(*sIndirectLayerTreesLock);
-+    sIndirectLayerTrees[mRootLayerTreeID].mParent = this;
-+  }
- 
-   mApzcTreeManager = new APZCTreeManager();
-   ++sCompositorThreadRefCount;
-@@ -249,7 +265,10 @@ CompositorParent::Destroy()
-   mCompositionManager = nullptr;
-   mApzcTreeManager->ClearTree();
-   mApzcTreeManager = nullptr;
--  sIndirectLayerTrees.erase(mRootLayerTreeID);
-+  { // scope lock
-+    MonitorAutoLock lock(*sIndirectLayerTreesLock);
-+    sIndirectLayerTrees.erase(mRootLayerTreeID);
-+  }
- }
- 
- void
-@@ -266,6 +285,7 @@ CompositorParent::RecvWillStop()
- 
-   // Ensure that the layer manager is destroyed before CompositorChild.
-   if (mLayerManager) {
-+    MonitorAutoLock lock(*sIndirectLayerTreesLock);
-     for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin();
-          it != sIndirectLayerTrees.end(); it++)
-     {
-@@ -380,7 +400,10 @@ CompositorParent::ActorDestroy(ActorDestroyReason why)
-   if (mLayerManager) {
-     mLayerManager->Destroy();
-     mLayerManager = nullptr;
--    sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr;
-+    { // scope lock
-+      MonitorAutoLock lock(*sIndirectLayerTreesLock);
-+      sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr;
-+    }
-     mCompositionManager = nullptr;
-     mCompositor = nullptr;
-   }
-@@ -696,6 +719,7 @@ CompositorParent::DidComposite()
- {
-   unused << SendDidComposite(0);
- 
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin();
-        it != sIndirectLayerTrees.end(); it++) {
-     LayerTreeState* lts = &it->second;
-@@ -867,6 +891,7 @@ CompositorParent::InitializeLayerManager(const nsTArray<LayersBackend>& aBackend
-       mLayerManager = layerManager;
-       MOZ_ASSERT(compositor);
-       mCompositor = compositor;
-+      MonitorAutoLock lock(*sIndirectLayerTreesLock);
-       sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager;
-       return;
-     }
-@@ -969,6 +994,7 @@ CompositorParent::RecvNotifyChildCreated(const uint64_t& child)
- void
- CompositorParent::NotifyChildCreated(uint64_t aChild)
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees[aChild].mParent = this;
-   sIndirectLayerTrees[aChild].mLayerManager = mLayerManager;
- }
-@@ -985,6 +1011,7 @@ CompositorParent::AllocateLayerTreeId()
- static void
- EraseLayerState(uint64_t aId)
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees.erase(aId);
- }
- 
-@@ -1001,6 +1028,7 @@ UpdateControllerForLayersId(uint64_t aLayersId,
-                             GeckoContentController* aController)
- {
-   // Adopt ref given to us by SetControllerForLayerTree()
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees[aLayersId].mController =
-     already_AddRefed<GeckoContentController>(aController);
- }
-@@ -1010,12 +1038,15 @@ ScopedLayerTreeRegistration::ScopedLayerTreeRegistration(uint64_t aLayersId,
-                                                          GeckoContentController* aController)
-     : mLayersId(aLayersId)
- {
-+  EnsureLayerTreeMapReady();
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees[aLayersId].mRoot = aRoot;
-   sIndirectLayerTrees[aLayersId].mController = aController;
- }
- 
- ScopedLayerTreeRegistration::~ScopedLayerTreeRegistration()
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees.erase(mLayersId);
- }
- 
-@@ -1175,6 +1206,7 @@ CompositorParent::CloneToplevel(const InfallibleTArray<mozilla::ipc::ProtocolFdM
- static void
- UpdateIndirectTree(uint64_t aId, Layer* aRoot, const TargetConfig& aTargetConfig)
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees[aId].mRoot = aRoot;
-   sIndirectLayerTrees[aId].mTargetConfig = aTargetConfig;
- }
-@@ -1182,6 +1214,7 @@ UpdateIndirectTree(uint64_t aId, Layer* aRoot, const TargetConfig& aTargetConfig
- /* static */ const CompositorParent::LayerTreeState*
- CompositorParent::GetIndirectShadowTree(uint64_t aId)
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   LayerTreeMap::const_iterator cit = sIndirectLayerTrees.find(aId);
-   if (sIndirectLayerTrees.end() == cit) {
-     return nullptr;
-@@ -1189,12 +1222,6 @@ CompositorParent::GetIndirectShadowTree(uint64_t aId)
-   return &cit->second;
- }
- 
--static void
--RemoveIndirectTree(uint64_t aId)
--{
--  sIndirectLayerTrees.erase(aId);
--}
--
- void
- CrossProcessCompositorParent::ActorDestroy(ActorDestroyReason aWhy)
- {
-@@ -1211,6 +1238,8 @@ CrossProcessCompositorParent::AllocPLayerTransactionParent(const nsTArray<Layers
- {
-   MOZ_ASSERT(aId != 0);
- 
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-+
-   if (sIndirectLayerTrees[aId].mLayerManager) {
-     sIndirectLayerTrees[aId].mCrossProcessParent = this;
-     LayerManagerComposite* lm = sIndirectLayerTrees[aId].mLayerManager;
-@@ -1234,7 +1263,7 @@ bool
- CrossProcessCompositorParent::DeallocPLayerTransactionParent(PLayerTransactionParent* aLayers)
- {
-   LayerTransactionParent* slp = static_cast<LayerTransactionParent*>(aLayers);
--  RemoveIndirectTree(slp->GetId());
-+  EraseLayerState(slp->GetId());
-   static_cast<LayerTransactionParent*>(aLayers)->ReleaseIPDLReference();
-   return true;
- }
-@@ -1242,6 +1271,7 @@ CrossProcessCompositorParent::DeallocPLayerTransactionParent(PLayerTransactionPa
- bool
- CrossProcessCompositorParent::RecvNotifyChildCreated(const uint64_t& child)
- {
-+  MonitorAutoLock lock(*sIndirectLayerTreesLock);
-   sIndirectLayerTrees[child].mParent->NotifyChildCreated(child);
-   return true;
- }
-@@ -1269,7 +1299,12 @@ CrossProcessCompositorParent::ForceComposite(LayerTransactionParent* aLayerTree)
- {
-   uint64_t id = aLayerTree->GetId();
-   MOZ_ASSERT(id != 0);
--  sIndirectLayerTrees[id].mParent->ForceComposite(aLayerTree);
-+  CompositorParent* parent;
-+  { // scope lock
-+    MonitorAutoLock lock(*sIndirectLayerTreesLock);
-+    parent = sIndirectLayerTrees[id].mParent;
-+  }
-+  parent->ForceComposite(aLayerTree);
- }
- 
- bool
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch
deleted file mode 100644
index 869feaf7c6..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 3f0f685829445ae82974d61f6017fdb67349c32b Mon Sep 17 00:00:00 2001
-From: Dan Gohman <sunfish@mozilla.com>
-Date: Fri, 9 Jan 2015 09:04:12 -0500
-Subject: [PATCH] Bug 1096138 - IonMonkey: Augment Nops with Mops to avoid
- collisions with fixed live ranges. r=jandem, a=sledru
-
----
- js/src/jit/CodeGenerator.cpp |  6 ++++++
- js/src/jit/CodeGenerator.h   |  1 +
- js/src/jit/LIR-Common.h      |  6 ++++++
- js/src/jit/LOpcodes.h        |  1 +
- js/src/jit/Lowering.cpp      | 12 ++++++++++++
- 5 files changed, 26 insertions(+)
-
-diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
-index 4f07524..ba14f86 100644
---- a/js/src/jit/CodeGenerator.cpp
-+++ b/js/src/jit/CodeGenerator.cpp
-@@ -1077,6 +1077,12 @@ CodeGenerator::visitNop(LNop *lir)
- }
- 
- bool
-+CodeGenerator::visitMop(LMop *lir)
-+{
-+    return true;
-+}
-+
-+bool
- CodeGenerator::visitOsiPoint(LOsiPoint *lir)
- {
-     // Note: markOsiPoint ensures enough space exists between the last
-diff --git a/js/src/jit/CodeGenerator.h b/js/src/jit/CodeGenerator.h
-index 03677a5..dce095d 100644
---- a/js/src/jit/CodeGenerator.h
-+++ b/js/src/jit/CodeGenerator.h
-@@ -58,6 +58,7 @@ class CodeGenerator : public CodeGeneratorSpecific
- 
-     bool visitLabel(LLabel *lir);
-     bool visitNop(LNop *lir);
-+    bool visitMop(LMop *lir);
-     bool visitOsiPoint(LOsiPoint *lir);
-     bool visitGoto(LGoto *lir);
-     bool visitTableSwitch(LTableSwitch *ins);
-diff --git a/js/src/jit/LIR-Common.h b/js/src/jit/LIR-Common.h
-index c90aef9..e7a0e4c 100644
---- a/js/src/jit/LIR-Common.h
-+++ b/js/src/jit/LIR-Common.h
-@@ -42,6 +42,12 @@ class LNop : public LInstructionHelper<0, 0, 0>
-     LIR_HEADER(Nop)
- };
- 
-+class LMop : public LInstructionHelper<0, 0, 0>
-+{
-+  public:
-+    LIR_HEADER(Mop)
-+};
-+
- // An LOsiPoint captures a snapshot after a call and ensures enough space to
- // patch in a call to the invalidation mechanism.
- //
-diff --git a/js/src/jit/LOpcodes.h b/js/src/jit/LOpcodes.h
-index a32d64f..cd7eef8 100644
---- a/js/src/jit/LOpcodes.h
-+++ b/js/src/jit/LOpcodes.h
-@@ -10,6 +10,7 @@
- #define LIR_COMMON_OPCODE_LIST(_)   \
-     _(Label)                        \
-     _(Nop)                          \
-+    _(Mop)                          \
-     _(OsiPoint)                     \
-     _(MoveGroup)                    \
-     _(Integer)                      \
-diff --git a/js/src/jit/Lowering.cpp b/js/src/jit/Lowering.cpp
-index d5f8227..48b7fa9 100644
---- a/js/src/jit/Lowering.cpp
-+++ b/js/src/jit/Lowering.cpp
-@@ -3616,12 +3616,24 @@ LIRGenerator::visitInstruction(MInstruction *ins)
-     ins->setInWorklistUnchecked();
- #endif
- 
-+    // If we added a Nop for this instruction, we'll also add a Mop, so that
-+    // that live-ranges for fixed register defs, which with LSRA extend through
-+    // the Nop so that they can extend through the OsiPoint don't, with their
-+    // one-extra extension, extend into a position where they use the input
-+    // move group for the following instruction.
-+    bool needsMop = !current->instructions().empty() && current->rbegin()->isNop();
-+
-     // If no safepoint was created, there's no need for an OSI point.
-     if (LOsiPoint *osiPoint = popOsiPoint()) {
-         if (!add(osiPoint))
-             return false;
-     }
- 
-+    if (needsMop) {
-+        if (!add(new(alloc()) LMop))
-+            return false;
-+    }
-+
-     return true;
- }
- 
--- 
-2.2.1
-
diff --git a/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch b/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch
new file mode 100644
index 0000000000..e170d11308
--- /dev/null
+++ b/gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch
@@ -0,0 +1,81 @@
+Fixes "saves unknown host's fingerprint in known_hosts without any prompt".
+See:
+
+  https://github.com/lavv17/lftp/issues/116
+  https://bugs.debian.org/774769
+
+From bc7b476e782d77839765f56bbdb4cee9f36b54ec Mon Sep 17 00:00:00 2001
+From: "Alexander V. Lukyanov" <lavv17f@gmail.com>
+Date: Tue, 13 Jan 2015 15:33:54 +0300
+Subject: [PATCH] add settings fish:auto-confirm and sftp:auto-confirm
+
+New host keys are now not confirmed by default, this should improve security.
+Suggested by Marcin Szewczyk <Marcin.Szewczyk@wodny.org>
+---
+ doc/lftp.1        | 8 ++++++++
+ src/SSH_Access.cc | 5 +++--
+ src/resource.cc   | 2 ++
+ 3 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/doc/lftp.1 b/doc/lftp.1
+index cabc1be..ed6c388 100644
+--- a/doc/lftp.1
++++ b/doc/lftp.1
+@@ -1384,6 +1384,10 @@ address family in dns:order.
+ .BR file:charset \ (string)
+ local character set. It is set from current locale initially.
+ .TP
++.BR fish:auto-confirm \ (boolean)
++when true, lftp answers ``yes'' to all ssh questions, in particular to the
++question about a new host key. Otherwise it answers ``no''.
++.TP
+ .BR fish:charset \ (string)
+ the character set used by fish server in requests, replies and file listings.
+ Default is empty which means the same as local.
+@@ -1952,6 +1956,10 @@ minimal chunk size to split the file to.
+ save pget transfer status this often. Set to `never' to disable saving of the status file.
+ The status is saved to a file with suffix \fI.lftp-pget-status\fP.
+ .TP
++.BR sftp:auto-confirm \ (boolean)
++when true, lftp answers ``yes'' to all ssh questions, in particular to the
++question about a new host key. Otherwise it answers ``no''.
++.TP
+ .BR sftp:charset \ (string)
+ the character set used by SFTP server in file names and file listings.
+ Default is empty which means the same as local. This setting is only used
+diff --git a/src/SSH_Access.cc b/src/SSH_Access.cc
+index 706fc6a..17c716d 100644
+--- a/src/SSH_Access.cc
++++ b/src/SSH_Access.cc
+@@ -72,8 +72,9 @@ int SSH_Access::HandleSSHMessage()
+       }
+       if(s>=y_len && !strncasecmp(b+s-y_len,y,y_len))
+       {
+-	 pty_recv_buf->Put("yes\n");
+-	 pty_send_buf->Put("yes\n");
++	 const char *answer=QueryBool("auto-confirm",hostname)?"yes\n":"no\n";
++	 pty_recv_buf->Put(answer);
++	 pty_send_buf->Put(answer);
+ 	 return m;
+       }
+       if(!received_greeting && recv_buf->Size()>0)
+diff --git a/src/resource.cc b/src/resource.cc
+index 91b2e60..3a5e8b9 100644
+--- a/src/resource.cc
++++ b/src/resource.cc
+@@ -339,6 +339,7 @@ static ResType lftp_vars[] = {
+    {"mirror:no-empty-dirs",	 "no",	  ResMgr::BoolValidate,ResMgr::NoClosure},
+    {"mirror:require-source",	 "no",	  ResMgr::BoolValidate,ResMgr::NoClosure},
+ 
++   {"sftp:auto-confirm",	 "no",	  ResMgr::BoolValidate,0},
+    {"sftp:max-packets-in-flight","16",	  ResMgr::UNumberValidate,0},
+    {"sftp:protocol-version",	 "6",	  ResMgr::UNumberValidate,0},
+    {"sftp:size-read",		 "32k",	  ResMgr::UNumberValidate,0},
+@@ -367,6 +368,7 @@ static ResType lftp_vars[] = {
+    {"dns:strict-dnssec",	 "no",	  ResMgr::BoolValidate,0},
+ #endif
+ 
++   {"fish:auto-confirm",	 "no",	  ResMgr::BoolValidate,0},
+    {"fish:shell",		 "/bin/sh",0,0},
+    {"fish:connect-program",	 "ssh -a -x",0,0},
+    {"fish:charset",		 "",	  ResMgr::CharsetValidate,0},
diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
index da5c48979e..80c0c5b009 100644
--- a/gnu/packages/patches/nss-pkgconfig.patch
+++ b/gnu/packages/patches/nss-pkgconfig.patch
@@ -5,6 +5,7 @@ Source: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/nss/fil
 Modifications:
   Change libdir from ${prefix}/lib64 to ${prefix}/lib/nss.
   Remove optional patching in nss/Makefile.
+  Include -L$libdir in output from "nss-config --libs".
 
 --- nss-3.17.1/nss/config/Makefile
 +++ nss-3.17.1/nss/config/Makefile
@@ -181,7 +182,7 @@ Modifications:
 +fi
 +
 +if test "$echo_libs" = "yes"; then
-+      libdirs=""
++      libdirs=-L$libdir
 +      if test -n "$lib_ssl"; then
 +	libdirs="$libdirs -lssl${major_version}"
 +      fi
diff --git a/gnu/packages/patches/pavucontrol-sigsegv.patch b/gnu/packages/patches/pavucontrol-sigsegv.patch
new file mode 100644
index 0000000000..094765b6a0
--- /dev/null
+++ b/gnu/packages/patches/pavucontrol-sigsegv.patch
@@ -0,0 +1,203 @@
+Work around a segmentation fault when starting pavucontrol.
+
+From a98200f2699d453a78c9dfbb85e307bbdb3e3dbf Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Thu, 28 Aug 2014 12:58:05 +0200
+Subject: [PATCH] Reference the widget before returning it from ::create
+ methods
+
+Widgets (unlike Windows and Dialogs) returned by Gtk::Builder::get_widget*
+start owned by the GtkBuilder object, the idea being that they will get
+added to a container before the scope of the GtkBuilder object ends, and it
+thus automatically gets destroyed.
+
+But in the various ::create methods in pavucontrol, a pointer to the widget
+gets returned, so that it can be added to a cointainer by the caller.
+However as soon as the ::create method exits the GtkBuilder object owning
+the widget, and thus also the widget gets destroyed, and we end up returning
+free-ed memory.
+
+This commit fixes this by making all ::create methods take a reference on
+the widget before returning it, and having all the callers unreference the
+widget after adding it to a container.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=83144
+https://bugzilla.redhat.com/show_bug.cgi?id=1133339
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ src/cardwidget.cc         | 1 +
+ src/channelwidget.cc      | 1 +
+ src/devicewidget.cc       | 1 +
+ src/mainwindow.cc         | 6 ++++++
+ src/rolewidget.cc         | 1 +
+ src/sinkinputwidget.cc    | 1 +
+ src/sinkwidget.cc         | 1 +
+ src/sourceoutputwidget.cc | 1 +
+ src/sourcewidget.cc       | 1 +
+ src/streamwidget.cc       | 1 +
+ 10 files changed, 15 insertions(+)
+
+diff --git a/src/cardwidget.cc b/src/cardwidget.cc
+index c79ac6c..28c558d 100644
+--- a/src/cardwidget.cc
++++ b/src/cardwidget.cc
+@@ -45,6 +45,7 @@ CardWidget* CardWidget::create() {
+     CardWidget* w;
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "cardWidget");
+     x->get_widget_derived("cardWidget", w);
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/channelwidget.cc b/src/channelwidget.cc
+index 6f59de2..fe94c11 100644
+--- a/src/channelwidget.cc
++++ b/src/channelwidget.cc
+@@ -53,6 +53,7 @@ ChannelWidget* ChannelWidget::create() {
+     x->add_from_file(GLADE_FILE, "adjustment1");
+     x->add_from_file(GLADE_FILE, "channelWidget");
+     x->get_widget_derived("channelWidget", w);
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/devicewidget.cc b/src/devicewidget.cc
+index 1a148ee..813780f 100644
+--- a/src/devicewidget.cc
++++ b/src/devicewidget.cc
+@@ -89,6 +89,7 @@ void DeviceWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
+         snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
+         cw->channelLabel->set_markup(text);
+         channelsVBox->pack_start(*cw, false, false, 0);
++        cw->unreference();
+     }
+     channelWidgets[m.channels-1]->last = true;
+ 
+diff --git a/src/mainwindow.cc b/src/mainwindow.cc
+index 5a42318..5d205fb 100644
+--- a/src/mainwindow.cc
++++ b/src/mainwindow.cc
+@@ -300,6 +300,7 @@ void MainWindow::updateCard(const pa_card_info &info) {
+     else {
+         cardWidgets[info.index] = w = CardWidget::create();
+         cardsVBox->pack_start(*w, false, false, 0);
++        w->unreference();
+         w->index = info.index;
+         is_new = true;
+     }
+@@ -416,6 +417,7 @@ bool MainWindow::updateSink(const pa_sink_info &info) {
+         sinkWidgets[info.index] = w = SinkWidget::create(this);
+         w->setChannelMap(info.channel_map, !!(info.flags & PA_SINK_DECIBEL_VOLUME));
+         sinksVBox->pack_start(*w, false, false, 0);
++        w->unreference();
+         w->index = info.index;
+         w->monitor_index = info.monitor_source;
+         is_new = true;
+@@ -570,6 +572,7 @@ void MainWindow::updateSource(const pa_source_info &info) {
+         sourceWidgets[info.index] = w = SourceWidget::create(this);
+         w->setChannelMap(info.channel_map, !!(info.flags & PA_SOURCE_DECIBEL_VOLUME));
+         sourcesVBox->pack_start(*w, false, false, 0);
++        w->unreference();
+         w->index = info.index;
+         is_new = true;
+ 
+@@ -686,6 +689,7 @@ void MainWindow::updateSinkInput(const pa_sink_input_info &info) {
+         sinkInputWidgets[info.index] = w = SinkInputWidget::create(this);
+         w->setChannelMap(info.channel_map, true);
+         streamsVBox->pack_start(*w, false, false, 0);
++        w->unreference();
+         w->index = info.index;
+         w->clientIndex = info.client;
+         is_new = true;
+@@ -743,6 +747,7 @@ void MainWindow::updateSourceOutput(const pa_source_output_info &info) {
+         w->setChannelMap(info.channel_map, true);
+ #endif
+         recsVBox->pack_start(*w, false, false, 0);
++        w->unreference();
+         w->index = info.index;
+         w->clientIndex = info.client;
+         is_new = true;
+@@ -838,6 +843,7 @@ bool MainWindow::createEventRoleWidget() {
+ 
+     eventRoleWidget = RoleWidget::create();
+     streamsVBox->pack_start(*eventRoleWidget, false, false, 0);
++    eventRoleWidget->unreference();
+     eventRoleWidget->role = "sink-input-by-media-role:event";
+     eventRoleWidget->setChannelMap(cm, true);
+ 
+diff --git a/src/rolewidget.cc b/src/rolewidget.cc
+index fd3196c..db07f92 100644
+--- a/src/rolewidget.cc
++++ b/src/rolewidget.cc
+@@ -40,6 +40,7 @@ RoleWidget* RoleWidget::create() {
+     RoleWidget* w;
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+     x->get_widget_derived("streamWidget", w);
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/sinkinputwidget.cc b/src/sinkinputwidget.cc
+index b88b718..5a0ba39 100644
+--- a/src/sinkinputwidget.cc
++++ b/src/sinkinputwidget.cc
+@@ -43,6 +43,7 @@ SinkInputWidget* SinkInputWidget::create(MainWindow* mainWindow) {
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+     x->get_widget_derived("streamWidget", w);
+     w->init(mainWindow);
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc
+index 7f4902c..f682cf2 100644
+--- a/src/sinkwidget.cc
++++ b/src/sinkwidget.cc
+@@ -82,6 +82,7 @@ SinkWidget* SinkWidget::create(MainWindow* mainWindow) {
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget");
+     x->get_widget_derived("deviceWidget", w);
+     w->init(mainWindow, "sink");
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/sourceoutputwidget.cc b/src/sourceoutputwidget.cc
+index 827c5a8..4d915b0 100644
+--- a/src/sourceoutputwidget.cc
++++ b/src/sourceoutputwidget.cc
+@@ -49,6 +49,7 @@ SourceOutputWidget* SourceOutputWidget::create(MainWindow* mainWindow) {
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "streamWidget");
+     x->get_widget_derived("streamWidget", w);
+     w->init(mainWindow);
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/sourcewidget.cc b/src/sourcewidget.cc
+index 5e4ecf0..fde5333 100644
+--- a/src/sourcewidget.cc
++++ b/src/sourcewidget.cc
+@@ -35,6 +35,7 @@ SourceWidget* SourceWidget::create(MainWindow* mainWindow) {
+     Glib::RefPtr<Gtk::Builder> x = Gtk::Builder::create_from_file(GLADE_FILE, "deviceWidget");
+     x->get_widget_derived("deviceWidget", w);
+     w->init(mainWindow, "source");
++    w->reference();
+     return w;
+ }
+ 
+diff --git a/src/streamwidget.cc b/src/streamwidget.cc
+index 94363ec..e602cce 100644
+--- a/src/streamwidget.cc
++++ b/src/streamwidget.cc
+@@ -77,6 +77,7 @@ void StreamWidget::setChannelMap(const pa_channel_map &m, bool can_decibel) {
+         snprintf(text, sizeof(text), "<b>%s</b>", pa_channel_position_to_pretty_string(m.map[i]));
+         cw->channelLabel->set_markup(text);
+         channelsVBox->pack_start(*cw, false, false, 0);
++        cw->unreference();
+     }
+     channelWidgets[m.channels-1]->last = true;
+     channelWidgets[m.channels-1]->setBaseVolume(PA_VOLUME_NORM);
+-- 
+2.1.0
+
diff --git a/gnu/packages/patches/pulseaudio-CVE-2014-3970.patch b/gnu/packages/patches/pulseaudio-CVE-2014-3970.patch
deleted file mode 100644
index 073e663112..0000000000
--- a/gnu/packages/patches/pulseaudio-CVE-2014-3970.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 26b9d22dd24c17eb118d0205bf7b02b75d435e3c Mon Sep 17 00:00:00 2001
-From: "Alexander E. Patrakov" <patrakov@gmail.com>
-Date: Thu, 5 Jun 2014 22:29:25 +0600
-Subject: [PATCH] rtp-recv: fix crash on empty UDP packets (CVE-2014-3970)
-
-On FIONREAD returning 0 bytes, we cannot return success, as the caller
-(rtpoll_work_cb in module-rtp-recv.c) would then try to
-pa_memblock_unref(chunk.memblock) and, because memblock is NULL, trigger
-an assertion.
-
-Also we have to read out the possible empty packet from the socket, so
-that the kernel doesn't tell us again and again about it.
-
-Signed-off-by: Alexander E. Patrakov <patrakov@gmail.com>
----
- src/modules/rtp/rtp.c | 25 +++++++++++++++++++++++--
- 1 file changed, 23 insertions(+), 2 deletions(-)
-
-diff --git a/src/modules/rtp/rtp.c b/src/modules/rtp/rtp.c
-index 570737e..7b75e0e 100644
---- a/src/modules/rtp/rtp.c
-+++ b/src/modules/rtp/rtp.c
-@@ -182,8 +182,29 @@ int pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, struct
-         goto fail;
-     }
- 
--    if (size <= 0)
--        return 0;
-+    if (size <= 0) {
-+        /* size can be 0 due to any of the following reasons:
-+         *
-+         * 1. Somebody sent us a perfectly valid zero-length UDP packet.
-+         * 2. Somebody sent us a UDP packet with a bad CRC.
-+         *
-+         * It is unknown whether size can actually be less than zero.
-+         *
-+         * In the first case, the packet has to be read out, otherwise the
-+         * kernel will tell us again and again about it, thus preventing
-+         * reception of any further packets. So let's just read it out
-+         * now and discard it later, when comparing the number of bytes
-+         * received (0) with the number of bytes wanted (1, see below).
-+         *
-+         * In the second case, recvmsg() will fail, thus allowing us to
-+         * return the error.
-+         *
-+         * Just to avoid passing zero-sized memchunks and NULL pointers to
-+         * recvmsg(), let's force allocation of at least one byte by setting
-+         * size to 1.
-+         */
-+        size = 1;
-+    }
- 
-     if (c->memchunk.length < (unsigned) size) {
-         size_t l;
--- 
-2.0.0
-
diff --git a/gnu/packages/patches/valgrind-glibc-2.21.patch b/gnu/packages/patches/valgrind-glibc-2.21.patch
new file mode 100644
index 0000000000..70f809c43f
--- /dev/null
+++ b/gnu/packages/patches/valgrind-glibc-2.21.patch
@@ -0,0 +1,26 @@
+Submitted By: Pierre Labastie <pierre at linuxfromscratch dot org>
+Date: 2015-02-22
+Initial Package Version: 3.10.1
+Upstream Status: Unknown
+Origin: Self
+Description: Allows Valgrind to build with glibc-2.21
+diff -Naur valgrind-3.10.1.old/configure valgrind-3.10.1.new/configure
+--- valgrind-3.10.1.old/configure	2014-11-25 20:42:25.000000000 +0100
++++ valgrind-3.10.1.new/configure	2015-02-22 10:46:06.607826488 +0100
+@@ -6842,6 +6842,16 @@
+ 	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ 	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ 	;;
++     2.21)
++	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.21 family" >&5
++$as_echo "2.21 family" >&6; }
++
++$as_echo "#define GLIBC_2_21 1" >>confdefs.h
++
++	DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++	DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
++	;;
+      darwin)
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
+ $as_echo "Darwin" >&6; }
diff --git a/gnu/packages/patches/zathura-plugindir-environment-variable.patch b/gnu/packages/patches/zathura-plugindir-environment-variable.patch
new file mode 100644
index 0000000000..2e3ea527d0
--- /dev/null
+++ b/gnu/packages/patches/zathura-plugindir-environment-variable.patch
@@ -0,0 +1,35 @@
+From ae8e4cc9ab57ff25d2ba6c4b369e8531ce43a6d2 Mon Sep 17 00:00:00 2001
+From: Paul van der Walt <paul@denknerd.org>
+Date: Mon, 2 Mar 2015 22:15:39 +0100
+Subject: [PATCH] Search path environment variable for Zathura.
+
+Adds a search path environment variable for zathura plugins (for reading
+different file formats) called ZATHURA_PLUGIN_PATH. Command line option
+-p still takes precedence.
+
+Patch by Paul van der Walt <paul@denknerd.org>
+---
+ zathura/zathura.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/zathura/zathura.c b/zathura/zathura.c
+index 589dd28..375ec54 100644
+--- a/zathura/zathura.c
++++ b/zathura/zathura.c
+@@ -413,6 +413,13 @@ zathura_set_plugin_dir(zathura_t* zathura, const char* dir)
+   g_return_if_fail(zathura != NULL);
+   g_return_if_fail(zathura->plugins.manager != NULL);
+ 
++  /* Added for Guix: check if environment variable
++   * is set to specify location of zathura plugins.
++   */
++
++  if (dir == NULL)
++    dir = g_getenv("ZATHURA_PLUGIN_PATH");
++
+   if (dir != NULL) {
+     girara_list_t* paths = girara_split_path_array(dir);
+     GIRARA_LIST_FOREACH(paths, char*, iter, path)
+-- 
+2.3.1
+
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 7b4f2ab055..21fb39562b 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,10 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages djvu)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages lesstif)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
@@ -122,7 +127,11 @@
              ("zlib" ,zlib)))
    (arguments
     `(#:tests? #f ; there is no check target
-      #:parallel-build? #f            ; build fails randomly on 8-way machines
+      #:parallel-build? #f ; build fails randomly on 8-way machines
+      #:configure-flags
+        (list (string-append "--with-freetype2-includes="
+                             (assoc-ref %build-inputs "freetype")
+                             "/include/freetype2"))
       #:phases
        (alist-replace
         'install
@@ -143,6 +152,173 @@
    (license license:gpl3) ; or gpl2, but not gpl2+
    (home-page "http://www.foolabs.com/xpdf/")))
 
+(define-public zathura-cb
+  (package
+    (name "zathura-cb")
+    (version "0.1.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://pwmt.org/projects/zathura-cb/download/zathura-cb-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "09ln4fpjxmhcq6cw1ka7mdkmca36gyd4gzrynbw3waz0ri0b277j"))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs `(("girara" ,girara)))
+    (inputs `(("libarchive" ,libarchive)
+              ("gtk+" ,gtk+)
+              ("zathura" ,zathura)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+          "PLUGINDIR=/lib/zathura" "CC=gcc")
+       #:tests? #f ; Package does not contain tests.
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (home-page "https://pwmt.org/projects/zathura-cb/")
+    (synopsis "Comic book support for zathura (libarchive backend)")
+    (description "The zathura-cb plugin adds comic book support to zathura
+using libarchive.")
+    (license license:zlib)))
+
+(define-public zathura-ps
+  (package
+    (name "zathura-ps")
+    (version "0.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://pwmt.org/projects/zathura-ps/download/zathura-ps-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "1a6ps5v1wk18qvslbkjln6w8wfzzr6fi13ls96vbdc03vdhn4m76"))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs `(("girara" ,girara)))
+    (inputs `(("libspectre" ,libspectre)
+              ("gtk+" ,gtk+)
+              ("zathura" ,zathura)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+          "PLUGINDIR=/lib/zathura" "CC=gcc")
+       #:tests? #f ; Package does not contain tests.
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (home-page "https://pwmt.org/projects/zathura-ps/")
+    (synopsis "PS support for zathura (libspectre backend)")
+    (description "The zathura-ps plugin adds PS support to zathura
+using libspectre.")
+    (license license:zlib)))
+
+(define-public zathura-djvu
+  (package
+    (name "zathura-djvu")
+    (version "0.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://pwmt.org/projects/zathura-djvu/download/zathura-djvu-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "1g1lafmrjbx0xv7fljdmyqxx0k334sq4q6jy4a0q5xfrgz0bh45c"))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs `(("girara" ,girara)))
+    (inputs
+     `(("djvulibre" ,djvulibre)
+       ("gtk+" ,gtk+)
+       ("zathura" ,zathura)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+          "PLUGINDIR=/lib/zathura" "CC=gcc")
+       #:tests? #f ; Package does not contain tests.
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (home-page "https://pwmt.org/projects/zathura-djvu/")
+    (synopsis "DjVu support for zathura (DjVuLibre backend)")
+    (description "The zathura-djvu plugin adds DjVu support to zathura
+using the DjVuLibre library.")
+    (license license:zlib)))
+
+(define-public zathura-pdf-poppler
+  (package
+    (name "zathura-pdf-poppler")
+    (version "0.2.5")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://pwmt.org/projects/zathura-pdf-poppler/download/zathura-pdf-poppler-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "1b0chsds8iwjm4g629p6a67nb6wgra65pw2vvngd7g35dmcjgcv0"))))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (propagated-inputs `(("girara" ,girara)))
+    (inputs
+     `(("poppler" ,poppler)
+       ("gtk+" ,gtk+)
+       ("zathura" ,zathura)
+       ("cairo" ,cairo)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+          "PLUGINDIR=/lib/zathura" "CC=gcc")
+       #:tests? #f ; Package does not include tests.
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
+    (synopsis "PDF support for zathura (poppler backend)")
+    (description "The zathura-pdf-poppler plugin adds PDF support to zathura
+by using the poppler rendering engine.")
+    (license license:zlib)))
+
+(define-public zathura
+  (package
+    (name "zathura")
+    (version "0.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://pwmt.org/projects/zathura/download/zathura-"
+                              version ".tar.gz"))
+              (sha256
+               (base32
+                "1qk5s7cyqp4l673yhma5igk9g24p5jyqyy81fdk7q7xjqlym19px"))
+              (patches
+               (list
+                (search-patch "zathura-plugindir-environment-variable.patch")))))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("gettext" ,gnu-gettext)))
+    (inputs `(("girara" ,girara)
+              ("sqlite" ,sqlite)
+              ("gtk+" ,gtk+)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "ZATHURA_PLUGIN_PATH")
+            (files '("lib/zathura")))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
+         "CC=gcc" "COLOR=0")
+       #:tests? #f ; Tests fail: "Gtk cannot open display".
+       #:test-target "test"
+       #:phases
+       (alist-delete 'configure %standard-phases)))
+    (home-page "https://pwmt.org/projects/zathura/")
+    (synopsis "Lightweight keyboard-driven PDF viewer")
+    (description "Zathura is a customizable document viewer.  It provides a
+minimalistic interface and an interface that mainly focuses on keyboard
+interaction.")
+    (license license:zlib)))
+
 (define-public podofo
   (package
     (name "podofo")
@@ -166,7 +342,16 @@
        ("zlib" ,zlib)))
     (arguments
      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
-                           "-DPODOFO_BUILD_STATIC=ON")))
+                           "-DPODOFO_BUILD_STATIC=ON")
+       #:phases
+         (alist-cons-before
+         'configure 'patch
+         (lambda* (#:key inputs #:allow-other-keys)
+           (let ((freetype (assoc-ref inputs "freetype")))
+             ;; Look for freetype include files in the correct place.
+             (substitute* "cmake/modules/FindFREETYPE.cmake"
+               (("/usr/local") freetype))))
+         %standard-phases)))
     (home-page "http://podofo.sourceforge.net")
     (synopsis "Tools to work with the PDF file format")
     (description
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 214ab3e951..0b3666107e 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +27,11 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl))
 
+;;;
+;;; Please: Try to add new module packages in alphabetic order.
+;;;
+
+
 (define-public perl
   ;; Yeah, Perl...  It is required early in the bootstrap process by Linux.
   (package
@@ -75,73 +81,66 @@
     (home-page "http://www.perl.org/")
     (license gpl1+)))                          ; or "Artistic"
 
-(define-public perl-clone
+(define-public perl-algorithm-c3
   (package
-    (name "perl-clone")
-    (version "0.37")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
-                                  "Clone-" version ".tar.gz"))
-              (sha256
-               (base32
-                "17fdhxpzrq2nwim3zkcrz4m9gjixp0i886yz54ysrshxy3k53wnr"))))
+    (name "perl-algorithm-c3")
+    (version "0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "Algorithm-C3-" version ".tar.gz"))
+       (sha256
+        (base32
+         "01hlcaxndls86bl92rkd3fvf9pfa3inxqaimv88bxs95803kmkss"))))
     (build-system perl-build-system)
-    (synopsis "Recursively copy Perl datatypes")
-    (description
-     "This module provides a clone() method which makes recursive copies of
-nested hash, array, scalar and reference types, including tied variables and
-objects.")
-    (home-page (string-append "http://search.cpan.org/~garu/"
-                              "Clone-" version))
+    (home-page "http://search.cpan.org/dist/Algorithm-C3")
+    (synopsis "Module for merging hierarchies using the C3 algorithm")
+    (description "This module implements the C3 algorithm, which aims to
+provide a sane method resolution order under multiple inheritance.")
     (license (package-license perl))))
 
-(define-public perl-file-list
+(define-public perl-algorithm-diff
   (package
-    (name "perl-file-list")
-    (version "0.3.1")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "mirror://cpan/authors/id/D/DO/DOPACKI/File-List-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "00m5ax4aq59hdvav6yc4g63vhx3a57006rglyypagvrzfxjvm8s8"))))
+    (name "perl-algorithm-diff")
+    (version "1.1903")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TY/TYEMQ/"
+                           "Algorithm-Diff-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0l8pk7ziz72d022hsn4xldhhb9f5649j5cgpjdibch0xng24ms1h"))))
     (build-system perl-build-system)
-    (arguments
-     `(#:phases
-       (alist-cons-after
-        'unpack 'cd
-        (lambda* _
-         (chdir "List"))
-       %standard-phases)))
-    (license (package-license perl))
-    (synopsis "Perl extension for crawling directory trees and compiling
-lists of files")
-    (description
-     "The File::List module crawls the directory tree starting at the
-provided base directory and can return files (and/or directories if desired)
-matching a regular expression.")
-    (home-page "http://search.cpan.org/~dopacki/File-List/")))
+    (home-page "http://search.cpan.org/dist/Algorithm-Diff")
+    (synopsis "Compute differences between two files or lists")
+    (description "This is a module for computing the difference between two
+files, two strings, or any other two lists of things.  It uses an intelligent
+algorithm similar to (or identical to) the one used by the Unix \"diff\"
+program.  It is guaranteed to find the *smallest possible* set of
+differences.")
+    (license (package-license perl))))
 
-(define-public perl-io-tty
+(define-public perl-aliased
   (package
-    (name "perl-io-tty")
-    (version "1.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/T/TO/TODDR/IO-Tty-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "0lgd9xcbi4gf4gw1ka6fj94my3w1f3k1zamb4pfln0qxz45zlxx4"))))
+    (name "perl-aliased")
+    (version "0.34")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "aliased-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1syyqzy462501kn5ma9gl6xbmcahqcn4qpafhsmpz0nd0x2m4l63"))))
     (build-system perl-build-system)
-    (home-page "http://search.cpan.org/~toddr/IO-Tty/")
-    (synopsis "Perl interface to pseudo ttys")
-    (description
-     "This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to
-pseudo ttys.")
+    (home-page "http://search.cpan.org/dist/aliased")
+    (synopsis "Use shorter versions of class names")
+    (description "The alias module loads the class you specify and exports
+into your namespace a subroutine that returns the class name.  You can
+explicitly alias the class to another name or, if you prefer, you can do so
+implicitly.")
     (license (package-license perl))))
 
 (define-public perl-archive-zip
@@ -164,24 +163,49 @@ manipulate, read, and write Zip archive files.")
     (home-page "http://search.cpan.org/~phred/Archive-Zip-1.37/lib/Archive/Zip.pm")
     (license (package-license perl))))
 
-(define-public perl-digest-sha1
+(define-public perl-base
   (package
-    (name "perl-digest-sha1")
-    (version "2.13")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/"
-                                  "Digest-SHA1-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1k23p5pjk42vvzg8xcn4iwdii47i0qm4awdzgbmz08bl331dmhb8"))))
+    (name "perl-base")
+    (version "2.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RG/RGARCIA/"
+                           "base-" version ".tar.gz"))
+       (sha256
+        (base32
+         "01n3l5ifmn2wd0aadpnzya27b75imibj9zdivkfzcpnviqgx5c2m"))))
     (build-system perl-build-system)
-    (synopsis "Perl implementation of the SHA-1 message digest algorithm")
-    (description
-     "This package provides 'Digest::SHA1', an implementation of the NIST
-SHA-1 message digest algorithm for use by Perl programs.")
-    (home-page (string-append "http://search.cpan.org/~gaas/Digest-SHA1-"
-                              version "/SHA1.pm"))
+    (home-page "http://search.cpan.org/dist/base")
+    (synopsis "Establish an ISA relationship with base classes at compile time")
+    (description "Allows you to both load one or more modules, while setting
+up inheritance from those modules at the same time.  Unless you are using the
+fields pragma, consider this module discouraged in favor of the lighter-weight
+parent.")
+    (license (package-license perl))))  ;See README
+
+(define-public perl-b-hooks-endofscope
+  (package
+    (name "perl-b-hooks-endofscope")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "B-Hooks-EndOfScope-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1f5d0lbkwf23dfjn60g6fynmjhy5rxdyxcpdfb07srm73qpg2zpi"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)
+       ("perl-module-implementation" ,perl-module-implementation)
+       ("perl-sub-exporter-progressive" ,perl-sub-exporter-progressive)
+       ("perl-variable-magic" ,perl-variable-magic)))
+    (home-page "http://search.cpan.org/dist/B-Hooks-EndOfScope")
+    (synopsis "Execute code after a scope finished compilation")
+    (description "This module allows you to execute code when perl finished
+compiling the surrounding scope.")
     (license (package-license perl))))
 
 (define-public perl-benchmark-timer
@@ -232,6 +256,560 @@ code or from an external program.  Optionally, output can be teed so that it
 is captured while being passed through to the original file handles.")
     (license asl2.0)))
 
+(define-public perl-carp-clan
+  (package
+    (name "perl-carp-clan")
+    (version "6.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/ST/STBEY/"
+                           "Carp-Clan-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1v71k8s1pi16l5y579gnrg372c6pdvy6qqm6iddm8h1dx7n16bjl"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (home-page "http://search.cpan.org/dist/Carp-Clan")
+    (synopsis "Report errors from a \"clan\" of modules")
+    (description "This module allows errors from a clan (or family) of modules
+to appear to originate from the caller of the clan.  This is necessary in
+cases where the clan modules are not classes derived from each other, and thus
+the Carp.pm module doesn't help.")
+    (license (package-license perl))))
+
+(define-public perl-class-accessor
+  (package
+    (name "perl-class-accessor")
+    (version "0.34")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/K/KA/KASEI/"
+                           "Class-Accessor-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1z6fqg0yz8gay15r1iasslv8f1n1mzjkrhs47fvbj3rqz36y1cfd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-sub-name" ,perl-sub-name)))
+    (propagated-inputs
+     `(("perl-base" ,perl-base)))
+    (home-page "http://search.cpan.org/dist/Class-Accessor")
+    (synopsis "Automated accessor generation")
+    (description "This module automagically generates accessors/mutators for
+your class.")
+    (license (package-license perl))))
+
+(define-public perl-class-accessor-chained
+  (package
+    (name "perl-class-accessor-chained")
+    (version "0.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "Class-Accessor-Chained-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1lilrjy1s0q5hyr0888kf0ifxjyl2iyk4vxil4jsv0sgh39lkgx5"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-class-accessor" ,perl-class-accessor)))
+    (home-page "http://search.cpan.org/dist/Class-Accessor-Chained")
+    (synopsis "Faster, but less expandable, chained accessors")
+    (description "A chained accessor is one that always returns the object
+when called with parameters (to set), and the value of the field when called
+with no arguments.  This module subclasses Class::Accessor in order to provide
+the same mk_accessors interface.")
+    (license (package-license perl))))
+
+(define-public perl-class-accessor-grouped
+  (package
+    (name "perl-class-accessor-grouped")
+    (version "0.10012")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+                           "Class-Accessor-Grouped-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zp74yv023q3macrf4rv3i82z8pkffqyhh7xk9xg8fbr63ikwqf4"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-class-xsaccessor" ,perl-class-xsaccessor)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-sub-name" ,perl-sub-name)))
+    (home-page "http://search.cpan.org/dist/Class-Accessor-Grouped")
+    (synopsis "Build groups of accessors")
+    (description "This class lets you build groups of accessors that will call
+different getters and setters.")
+    (license (package-license perl))))
+
+(define-public perl-class-c3
+  (package
+    (name "perl-class-c3")
+    (version "0.27")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "Class-C3-" version ".tar.gz"))
+       (sha256
+        (base32
+         "185jdpr4applrkvh71ks9ildx5kdymhqr4hilsqxwqny1wr56qss"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-algorithm-c3" ,perl-algorithm-c3)))
+    (home-page "http://search.cpan.org/dist/Class-C3")
+    (synopsis "Pragma to use the C3 method resolution order algorithm")
+    (description "This is pragma to change Perl 5's standard method resolution
+order from depth-first left-to-right (a.k.a - pre-order) to the more
+sophisticated C3 method resolution order.")
+    (license (package-license perl))))
+
+(define-public perl-class-c3-adopt-next
+  (package
+    (name "perl-class-c3-adopt-next")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+                           "Class-C3-Adopt-NEXT-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1rwgbx6dsy4rpas94p8wakzj7hrla1p15jnbm24kwhsv79gp91ld"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Class-C3-Adopt-NEXT")
+    (synopsis "Drop-in replacement for NEXT")
+    (description "This module is intended as a drop-in replacement for NEXT,
+supporting the same interface, but using Class::C3 to do the hard work.")
+    (license (package-license perl))))
+
+(define-public perl-class-c3-componentised
+  (package
+    (name "perl-class-c3-componentised")
+    (version "1.001000")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
+                           "Class-C3-Componentised-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nzav8arxll0rya7r2vp032s3acliihbb9mjlfa13rywhh77bzvl"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-class-c3" ,perl-class-c3)
+       ("perl-class-inspector" ,perl-class-inspector)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Class-C3-Componentised")
+    (synopsis "Load mix-ins or components to your C3-based class")
+    (description "This module will inject base classes to your module using
+the Class::C3 method resolution order.")
+    (license (package-license perl))))
+
+(define-public perl-class-data-inheritable
+  (package
+    (name "perl-class-data-inheritable")
+    (version "0.08")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TM/TMTM/"
+                           "Class-Data-Inheritable-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jpi38wy5xh6p1mg2cbyjjw76vgbccqp46685r27w8hmxb7gwrwr"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Class-Data-Inheritable")
+    (synopsis "Inheritable, overridable class data")
+    (description "Class::Data::Inheritable is for creating accessor/mutators
+to class data.  That is, if you want to store something about your class as a
+whole (instead of about a single object).  This data is then inherited by your
+subclasses and can be overriden.")
+    (license (package-license perl))))
+
+(define-public perl-class-date
+  (package
+    (name "perl-class-date")
+    (version "1.1.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/"
+                           "Class-Date-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0dd707sq8ix2dqbnp7ga77ba69r3vsn0cd6scnkn13s0gm2g4b00"))))
+    (build-system perl-build-system)
+    (arguments `(#:tests? #f))          ;timezone tests in chroot
+    (home-page "http://search.cpan.org/dist/Class-Date")
+    (synopsis "Class for easy date and time manipulation")
+    (description "This module provides a general-purpose date and datetime
+type for perl.")
+    (license (package-license perl))))
+
+(define-public perl-class-inspector
+  (package
+    (name "perl-class-inspector")
+    (version "1.28")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                           "Class-Inspector-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04iij8dbcgaim7g109frpyf7mh4ydsd8zh53r53chk0zxnivg91w"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Class-Inspector")
+    (synopsis "Get information about a class and its structure")
+    (description "Class::Inspector allows you to get information about a
+loaded class.")
+    (license (package-license perl))))
+
+(define-public perl-class-load
+  (package
+    (name "perl-class-load")
+    (version "0.22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Class-Load-" version ".tar.gz"))
+       (sha256
+        (base32
+         "049i285yj8hwgzj7nncjbs2bhxvpdk88wmx1d0nh0rdmh5hdnlmy"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build-tiny" ,perl-module-build-tiny)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-package-stash" ,perl-package-stash)
+       ("perl-data-optlist" ,perl-data-optlist)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-module-implementation" ,perl-module-implementation)))
+    (home-page "http://search.cpan.org/dist/Class-Load")
+    (synopsis "Working (require \"Class::Name\") and more")
+    (description "\"require EXPR\" only accepts Class/Name.pm style module
+names, not Class::Name.  For that, this module provides \"load_class
+'Class::Name'\".")
+    (license (package-license perl))))
+
+(define-public perl-class-load-xs
+  (package
+    (name "perl-class-load-xs")
+    (version "0.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Class-Load-XS-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1aivalms81s3a2cj053ncgnmkpgl7vspna8ajlkqir7rdn8kpv5v"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (inputs `(("perl-class-load" ,perl-class-load)))
+    (home-page "http://search.cpan.org/dist/Class-Load-XS")
+    (synopsis "XS implementation of parts of Class::Load")
+    (description "This module provides an XS implementation for portions of
+Class::Load")
+    (license artistic2.0)))
+
+(define-public perl-class-method-modifiers
+  (package
+    (name "perl-class-method-modifiers")
+    (version "2.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Class-Method-Modifiers-" version ".tar.gz"))
+       (sha256
+        (base32
+         "14nk2gin9cjwpysakli7f0gs4q1w220sn73xzv35rhlspngrggyy"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (home-page "http://search.cpan.org/dist/Class-Method-Modifiers")
+    (synopsis "Moose-like method modifiers")
+    (description "Class::Method::Modifiers provides three modifiers: before,
+around, and after.  before and after are run just before and after the method
+they modify, but can not really affect that original method.  around is run in
+place of the original method, with a hook to easily call that original
+method.")
+    (license (package-license perl))))
+
+(define-public perl-class-tiny
+  (package
+    (name "perl-class-tiny")
+    (version "1.000")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "Class-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jll90byj0nl16hwpf28k54i4n53jidjsj1bnlbx72v0n56qfpb2"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Class-Tiny")
+    (synopsis "Minimalist class construction")
+    (description "This module offers a minimalist class construction kit.  It
+uses no non-core modules for any recent Perl.")
+    (license asl2.0)))
+
+(define-public perl-class-unload
+  (package
+    (name "perl-class-unload")
+    (version "0.08")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
+                           "Class-Unload-" version ".tar.gz"))
+       (sha256
+        (base32
+         "097gr3r2jgnm1175m4lpg4a97hv2mxrn9r0b2c6bn1x9xdhkywgh"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-class-inspector" ,perl-class-inspector)))
+    (home-page "http://search.cpan.org/dist/Class-Unload")
+    (synopsis "Unload a class")
+    (description "Class:Unload unloads a given class by clearing out its
+symbol table and removing it from %INC.")
+    (license (package-license perl))))
+
+(define-public perl-class-xsaccessor
+  (package
+    (name "perl-class-xsaccessor")
+    (version "1.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SM/SMUELLER/"
+                           "Class-XSAccessor-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wm6013il899jnm0vn50a7iv9v6r4nqywbqzj0csyf8jbwwnpicr"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Class-XSAccessor")
+    (synopsis "Generate fast XS accessors without runtime compilation")
+    (description "Class::XSAccessor implements fast read, write, and
+read/write accessors in XS.  Additionally, it can provide predicates such as
+\"has_foo()\" for testing whether the attribute \"foo\" is defined in the
+object.  It only works with objects that are implemented as ordinary hashes.
+Class::XSAccessor::Array implements the same interface for objects that use
+arrays for their internal representation.")
+    (license (package-license perl))))
+
+(define-public perl-clone
+  (package
+    (name "perl-clone")
+    (version "0.37")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
+                                  "Clone-" version ".tar.gz"))
+              (sha256
+               (base32
+                "17fdhxpzrq2nwim3zkcrz4m9gjixp0i886yz54ysrshxy3k53wnr"))))
+    (build-system perl-build-system)
+    (synopsis "Recursively copy Perl datatypes")
+    (description
+     "This module provides a clone() method which makes recursive copies of
+nested hash, array, scalar and reference types, including tied variables and
+objects.")
+    (home-page (string-append "http://search.cpan.org/~garu/"
+                              "Clone-" version))
+    (license (package-license perl))))
+
+(define-public perl-common-sense
+  (package
+    (name "perl-common-sense")
+    (version "3.73")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
+                           "common-sense-" version ".tar.gz"))
+       (sha256
+        (base32
+         "047xwgpn5611zrhk4c8vk9pzcbk1q7n3q0lfiwhhq7k4fbjca441"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/common-sense")
+    (synopsis "Sane defaults for Perl programs")
+    (description "This module implements some sane defaults for Perl programs,
+as defined by two typical specimens of Perl coders.")
+    (license (package-license perl))))
+
+(define-public perl-config-any
+  (package
+    (name "perl-config-any")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
+                           "Config-Any-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06n6jn3q3xhk57icwip0ihzqixxav6sgp6rrb35hahj1z748y3vi"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Config-Any")
+    (synopsis "Load configuration from different file formats")
+    (description "Config::Any provides a facility for Perl applications and
+libraries to load configuration data from multiple different file formats.  It
+supports XML, YAML, JSON, Apache-style configuration, and Perl code.")
+    (license (package-license perl))))
+
+(define-public perl-config-autoconf
+  (package
+    (name "perl-config-autoconf")
+    (version "0.309")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "Config-AutoConf-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nqc7calfny12dwfhz7ylsvx55nf69kirdc5dbyvh3sjsqj8yvdq"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)))
+    (home-page "http://search.cpan.org/dist/Config-AutoConf")
+    (synopsis "Module to implement some AutoConf macros in Perl")
+    (description "Config::AutoConf is intended to provide the same
+opportunities to Perl developers as GNU Autoconf does for Shell developers.")
+    (license (package-license perl))))
+
+(define-public perl-config-general
+  (package
+    (name "perl-config-general")
+    (version "2.56")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TL/TLINDEN/"
+                           "Config-General-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0szxxaihz71pr0r2jp9wvbrfc3hrsxi9xrd9vnyrxlrax8sci5h9"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Config-General")
+    (synopsis "Generic Config Module")
+    (description "This module opens a config file and parses its contents for
+you.  The format of config files supported by Config::General is inspired by
+the well known Apache config format and is 100% compatible with Apache
+configs, but you can also just use simple name/value pairs in your config
+files.  In addition to the capabilities of an Apache config file it supports
+some enhancements such as here-documents, C-style comments, and multiline
+options.")
+    (license (package-license perl))))
+
+(define-public perl-context-preserve
+  (package
+    (name "perl-context-preserve")
+    (version "0.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JR/JROCKWAY/"
+                           "Context-Preserve-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0gssillawjknqks81x7fg7w2x94bnyklgd8ry2pr1k6ifkjhwz46"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)
+       ("perl-test-simple" ,perl-test-simple)))
+    (home-page "http://search.cpan.org/dist/Context-Preserve")
+    (synopsis "Preserve context during subroutine call")
+    (description "This module runs code after a subroutine call, preserving
+the context the subroutine would have seen if it were the last statement in
+the caller.")
+    (license (package-license perl))))
+
+(define-public perl-cpan-meta-check
+  (package
+    (name "perl-cpan-meta-check")
+    (version "0.009")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "CPAN-Meta-Check-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0qbk5dwvhd78qgq5x6nim2n0l78pylvlklpbrm56w9yss6pl6bgb"))))
+    (build-system perl-build-system)
+    (native-inputs `(("perl-test-deep" ,perl-test-deep)))
+    (propagated-inputs `(("perl-cpan-meta" ,perl-cpan-meta)))
+    (home-page "http://search.cpan.org/dist/CPAN-Meta-Check")
+    (synopsis "Verify requirements in a CPAN::Meta object")
+    (description "This module verifies if requirements described in a
+CPAN::Meta object are present.")
+    (license (package-license perl))))
+
+(define-public perl-data-dump
+  (package
+    (name "perl-data-dump")
+    (version "1.22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/"
+                           "Data-Dump-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ciqlwsy1q35s94dry9bjy1pwanbq6b7q4rhxm9z8prgkzbslg2k"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Data-Dump")
+    (synopsis "Pretty printing of data structures")
+    (description "This module provide functions that takes a list of values as
+their argument and produces a string as its result.  The string contains Perl
+code that, when \"eval\"ed, produces a deep copy of the original arguments.")
+    (license (package-license perl))))
+
+(define-public perl-data-dumper-concise
+  (package
+    (name "perl-data-dumper-concise")
+    (version "2.022")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
+                           "Data-Dumper-Concise-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0z7vxgk1f2kw2zpiimdsyf7jq9f4s5dhh3dlimq5yrirypnk03sc"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Data-Dumper-Concise")
+    (synopsis "Concise data dumper")
+    (description "Data::Dumper::Concise provides a dumper with Less
+indentation and newlines plus sub deparsing.")
+    (license (package-license perl))))
+
 (define-public perl-data-optlist
   (package
     (name "perl-data-optlist")
@@ -247,15 +825,334 @@ is captured while being passed through to the original file handles.")
          "1j44rm2spprlq3bc80cxni3dzs3gfjiqv1qc9q7820n1qj0wgmqw"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-sub-install" ,perl-sub-install)))
-    (inputs
-     `(("perl-params-util" ,perl-params-util)))
+     `(("perl-sub-install" ,perl-sub-install)
+       ("perl-params-util" ,perl-params-util)))
     (home-page "http://search.cpan.org/dist/Data-OptList")
     (synopsis "Parse and validate simple name/value option pairs")
     (description
      "Data::OptList provides a simple syntax for name/value option pairs.")
     (license (package-license perl))))
 
+(define-public perl-data-page
+  (package
+    (name "perl-data-page")
+    (version "2.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LB/LBROCARD/"
+                           "Data-Page-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hvi92c4h2angryc6pngw7gbm3ysc2jfmyxk2wh9ia4vdwpbs554"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-class-accessor-chained" ,perl-class-accessor-chained)))
+    (home-page "http://search.cpan.org/dist/Data-Page")
+    (synopsis "Help when paging through sets of results")
+    (description "When searching through large amounts of data, it is often
+the case that a result set is returned that is larger than we want to display
+on one page.  This results in wanting to page through various pages of data.
+The maths behind this is unfortunately fiddly, hence this module.")
+    (license (package-license perl))))
+
+(define-public perl-data-tumbler
+  (package
+    (name "perl-data-tumbler")
+    (version "0.008")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "Data-Tumbler-" version ".tar.gz"))
+       (sha256
+        (base32
+         "13kww2xj30rkk8w9h50h4blypdb689zgils0zyah587kip0z6509"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-most" ,perl-test-most)))
+    (propagated-inputs
+     `(("perl-file-homedir" ,perl-file-homedir)))
+    (home-page "http://search.cpan.org/dist/Data-Tumbler")
+    (synopsis "Dynamic generation of nested combinations of variants")
+    (description "Data::Tumbler - Dynamic generation of nested combinations of
+variants")
+    (license (package-license perl))))
+
+(define-public perl-devel-caller
+  (package
+    (name "perl-devel-caller")
+    (version "2.06")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "Devel-Caller-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pxpimifzmnjnvf4icclx77myc15ahh0k56sj1djad1855mawwva"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-padwalker" ,perl-padwalker)))
+    (home-page "http://search.cpan.org/dist/Devel-Caller")
+    (synopsis "Meatier version of caller")
+    (description "Devel::Caller provides meatier version of caller.")
+    (license (package-license perl))))
+
+(define-public perl-devel-checkbin
+  (package
+    (name "perl-devel-checkbin")
+    (version "0.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TO/TOKUHIROM/"
+                           "Devel-CheckBin-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0g71sma9jy0fjm619hcrcsb9spg2y03vjxx36y8k1xpa2553sr7m"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Devel-CheckBin")
+    (synopsis "Check that a command is available")
+    (description "Devel::CheckBin is a perl module that checks whether a
+particular command is available.")
+    (license (package-license perl))))
+
+(define-public perl-devel-globaldestruction
+  (package
+    (name "perl-devel-globaldestruction")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "Devel-GlobalDestruction-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0qn4iszgylnxjdkb6430f6a3ci7bcx9ih1az6bd5cbij1pf2965j"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sub-exporter-progressive" ,perl-sub-exporter-progressive)))
+    (home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
+    (synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
+    (description "Devel::GlobalDestruction provides a function returning the
+equivalent of \"${^GLOBAL_PHASE} eq 'DESTRUCT'\" for older perls.")
+    (license (package-license perl))))
+
+(define-public perl-devel-lexalias
+  (package
+    (name "perl-devel-lexalias")
+    (version "0.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "Devel-LexAlias-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wpfpjqlrncslnmxa37494sfdy0901510kj2ds2k6q167vadj2jy"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-devel-caller" ,perl-devel-caller)))
+    (home-page "http://search.cpan.org/dist/Devel-LexAlias")
+    (synopsis "Alias lexical variables")
+    (description "Devel::LexAlias provides the ability to alias a lexical
+variable in a subroutines scope to one of your choosing.")
+    (license (package-license perl))))
+
+(define-public perl-devel-overloadinfo
+  (package
+    (name "perl-devel-overloadinfo")
+    (version "0.002")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
+                           "Devel-OverloadInfo-" version ".tar.gz"))
+       (sha256
+        (base32
+         "14gzjlsqhypqp0szqj6152qfn69snzydgk1yk6bji5zimzv86qyy"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-package-stash" ,perl-package-stash)
+       ("perl-sub-identify" ,perl-sub-identify)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Devel-OverloadInfo")
+    (synopsis "Introspect overloaded operators")
+    (description "Devel::OverloadInfo returns information about overloaded
+operators for a given class (or object), including where in the inheritance
+hierarchy the overloads are declared and where the code implementing it is.")
+    (license (package-license perl))))
+
+(define-public perl-devel-partialdump
+  (package
+    (name "perl-devel-partialdump")
+    (version "0.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Devel-PartialDump-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0nr3qa68x4yp219kd17j1ks9c95qc9agfvz7ddnpn8p78f3kgwfn"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build-tiny" ,perl-module-build-tiny)
+       ("perl-test-warn" ,perl-test-warn)
+       ("perl-test-simple" ,perl-test-simple)))
+    (propagated-inputs
+     `(("perl-class-tiny" ,perl-class-tiny)
+       ("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-namespace-clean" ,perl-namespace-clean)))
+    (home-page "http://search.cpan.org/dist/Devel-PartialDump")
+    (synopsis "Partial dumping of data structures")
+    (description "This module is a data dumper optimized for logging of
+arbitrary parameters.")
+    (license (package-license perl))))
+
+(define-public perl-devel-stacktrace
+  (package
+    (name "perl-devel-stacktrace")
+    (version "2.00")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Devel-StackTrace-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1r65iq5i11xh0r0kp3pdycydnd3kxpdmxnp0hq9hx9lr60kygsqx"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Devel-StackTrace")
+    (synopsis "Object representing a stack trace")
+    (description "The Devel::StackTrace module contains two classes,
+Devel::StackTrace and Devel::StackTrace::Frame.  These objects encapsulate the
+information that can be retrieved via Perl's caller() function, as well as
+providing a simple interface to this data.")
+    (license artistic2.0)))
+
+(define-public perl-devel-stacktrace-ashtml
+  (package
+    (name "perl-devel-stacktrace-ashtml")
+    (version "0.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Devel-StackTrace-AsHTML-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0yl296y0qfwybwjgqjzd4j2w2bj5a2nz342qqgxchnf5bqynl1c9"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-devel-stacktrace" ,perl-devel-stacktrace)))
+    (home-page "http://search.cpan.org/dist/Devel-StackTrace-AsHTML")
+    (synopsis "Displays stack trace in HTML")
+    (description "Devel::StackTrace::AsHTML adds as_html method to
+Devel::StackTrace which displays the stack trace in beautiful HTML, with code
+snippet context and function parameters.  If you call it on an instance of
+Devel::StackTrace::WithLexicals, you even get to see the lexical variables of
+each stack frame.")
+    (license (package-license perl))))
+
+(define-public perl-digest-sha1
+  (package
+    (name "perl-digest-sha1")
+    (version "2.13")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/G/GA/GAAS/"
+                                  "Digest-SHA1-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1k23p5pjk42vvzg8xcn4iwdii47i0qm4awdzgbmz08bl331dmhb8"))))
+    (build-system perl-build-system)
+    (synopsis "Perl implementation of the SHA-1 message digest algorithm")
+    (description
+     "This package provides 'Digest::SHA1', an implementation of the NIST
+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-dist-checkconflicts
+  (package
+    (name "perl-dist-checkconflicts")
+    (version "0.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                                  "Dist-CheckConflicts-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1i7dr9jpdiy2nijl2p4q5zg2q2s9ckbj2hs4kmnnckf9hsb4p17a"))))
+    (build-system perl-build-system)
+    (native-inputs `(("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)))
+    (home-page "http://search.cpan.org/dist/Dist-CheckConflicts")
+    (synopsis "Declare version conflicts for your dist")
+    (description "This module allows you to specify conflicting versions of
+modules separately and deal with them after the module is done installing.")
+    (license (package-license perl))))
+
+(define-public perl-eval-closure
+  (package
+    (name "perl-eval-closure")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                           "Eval-Closure-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ssvlgx3y1y28wrrp0lmmffzqxfrwb2lb3p60b8cjvxsf1c3jbfv"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-devel-lexalias" ,perl-devel-lexalias)))
+    (home-page "http://search.cpan.org/dist/Eval-Closure")
+    (synopsis "Safely and cleanly create closures via string eval")
+    (description "String eval is often used for dynamic code generation.  For
+instance, Moose uses it heavily, to generate inlined versions of accessors and
+constructors, which speeds code up at runtime by a significant amount.  String
+eval is not without its issues however - it's difficult to control the scope
+it's used in (which determines which variables are in scope inside the eval),
+and it's easy to miss compilation errors, since eval catches them and sticks
+them in $@ instead.  This module attempts to solve these problems.  It
+provides an eval_closure function, which evals a string in a clean
+environment, other than a fixed list of specified variables.  Compilation
+errors are rethrown automatically.")
+    (license (package-license perl))))
+
+(define-public perl-exception-class
+  (package
+    (name "perl-exception-class")
+    (version "1.39")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Exception-Class-" version ".tar.gz"))
+       (sha256
+        (base32
+         "10r06v6568s33p6h9f9ml0iabc07id86mjkf74gy7ld6d5m7b741"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-class-data-inheritable" ,perl-class-data-inheritable)))
+    (home-page "http://search.cpan.org/dist/Exception-Class")
+    (synopsis "Allows you to declare real exception classes in Perl")
+    (description "Exception::Class allows you to declare exception hierarchies
+in your modules in a \"Java-esque\" manner.")
+    (license (package-license perl))))
+
 (define-public perl-exporter-lite
   (package
     (name "perl-exporter-lite")
@@ -277,6 +1174,1199 @@ import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
                               "Exporter-Lite-" version))
     (license (package-license perl))))
 
+(define-public perl-exporter-tiny
+  (package
+    (name "perl-exporter-tiny")
+    (version "0.042")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/"
+                           "Exporter-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0gq2ia8c6n84gdrlc73vab61djs8gs8zf7fqx8cxbg5zxg2j45lg"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Exporter-Tiny")
+    (synopsis "Exporter with the features of Sub::Exporter but only core dependencies")
+    (description "Exporter::Tiny supports many of Sub::Exporter's
+external-facing features including renaming imported functions with the `-as`,
+`-prefix` and `-suffix` options; explicit destinations with the `into` option;
+and alternative installers with the `installler` option.  But it's written in
+only about 40% as many lines of code and with zero non-core dependencies.")
+    (license (package-license perl))))
+
+(define-public perl-extutils-installpaths
+  (package
+    (name "perl-extutils-installpaths")
+    (version "0.010")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "ExtUtils-InstallPaths-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0mi1px42in7i442jqncg3gmxd5zn7sw5b2s85h690rz433qvyk6i"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-extutils-config" ,perl-extutils-config)))
+    (home-page "http://search.cpan.org/dist/ExtUtils-InstallPaths")
+    (synopsis "Build.PL install path logic made easy")
+    (description "This module tries to make install path resolution as easy as
+possible.")
+    (license (package-license perl))))
+
+(define-public perl-extutils-config
+  (package
+    (name "perl-extutils-config")
+    (version "0.008")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "ExtUtils-Config-" version ".tar.gz"))
+       (sha256
+        (base32
+         "130s5zk4krrymbynqxx62g13jynnb7xi7vdpg65cw3b56kv08ldf"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/ExtUtils-Config")
+    (synopsis "Wrapper for perl's configuration")
+    (description "ExtUtils::Config is an abstraction around the %Config hash.
+By itself it is not a particularly interesting module by any measure, however
+it ties together a family of modern toolchain modules.")
+    (license (package-license perl))))
+
+(define-public perl-extutils-helpers
+  (package
+    (name "perl-extutils-helpers")
+    (version "0.022")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "ExtUtils-Helpers-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15dalfwmpfmifw312i5pwiai8134pxf7b2804shlqhdk1xqczy6k"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/ExtUtils-Helpers")
+    (synopsis "Various portability utilities for module builders")
+    (description "This module provides various portable helper functions for
+module building modules.")
+    (license (package-license perl))))
+
+(define-public perl-file-find-rule
+  (package
+    (name "perl-file-find-rule")
+    (version "0.33")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "File-Find-Rule-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0w73b4jr2fcrd74a1w3b2jryq3mqzc8z5mk7ia9p85xn3qmpa5r4"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-text-glob" ,perl-text-glob)
+       ("perl-number-compare" ,perl-number-compare)))
+    (home-page "http://search.cpan.org/dist/File-Find-Rule")
+    (synopsis "Alternative interface to File::Find")
+    (description "File::Find::Rule is a friendlier interface to File::Find.
+It allows you to build rules which specify the desired files and
+directories.")
+    (license (package-license perl))))
+
+(define-public perl-file-find-rule-perl
+  (package
+    (name "perl-file-find-rule-perl")
+    (version "1.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                           "File-Find-Rule-Perl-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xi4ppqr6r57l5xlkwxpvkvpb9p7dvz053d76v2m9pwdfxqb5v6j"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-find-rule" ,perl-file-find-rule)
+       ("perl-params-util" ,perl-params-util)
+       ("perl-parse-cpan-meta" ,perl-parse-cpan-meta)))
+    (home-page "http://search.cpan.org/dist/File-Find-Rule-Perl")
+    (synopsis "Common rules for searching for Perl things")
+    (description "File::Find::Rule::Perl provides methods for finding various
+types Perl-related files, or replicating search queries run on a distribution
+in various parts of the CPAN ecosystem.")
+    (license (package-license perl))))
+
+(define-public perl-file-homedir
+  (package
+    (name "perl-file-homedir")
+    (version "1.00")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                           "File-HomeDir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hvihydd0y4gdxafi8dpybk9ll8q35bz5ycibfic0gh92cslzfc5"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-which" ,perl-file-which)
+       ("perl-file-temp" ,perl-file-temp)))
+    (arguments `(#:tests? #f))          ;Not appropriate for chroot
+    (home-page "http://search.cpan.org/dist/File-HomeDir")
+    (synopsis "Find your home and other directories on any platform")
+    (description "File::HomeDir is a module for locating the directories that
+are \"owned\" by a user (typicaly your user) and to solve the various issues
+that arise trying to find them consistently across a wide variety of
+platforms.")
+    (license (package-license perl))))
+
+(define-public perl-file-list
+  (package
+    (name "perl-file-list")
+    (version "0.3.1")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://cpan/authors/id/D/DO/DOPACKI/File-List-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "00m5ax4aq59hdvav6yc4g63vhx3a57006rglyypagvrzfxjvm8s8"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (alist-cons-after
+        'unpack 'cd
+        (lambda* _
+         (chdir "List"))
+       %standard-phases)))
+    (license (package-license perl))
+    (synopsis "Perl extension for crawling directory trees and compiling
+lists of files")
+    (description
+     "The File::List module crawls the directory tree starting at the
+provided base directory and can return files (and/or directories if desired)
+matching a regular expression.")
+    (home-page "http://search.cpan.org/~dopacki/File-List/")))
+
+(define-public perl-file-sharedir
+  (package
+    (name "perl-file-sharedir")
+    (version "1.102")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "File-ShareDir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04blqn4cms9zjmhlfvwyx6mrglaaq1mmy4xwv7xqf9c8fjwk8wvw"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-file-sharedir-install" ,perl-file-sharedir-install)))
+    (propagated-inputs
+     `(("perl-class-inspector" ,perl-class-inspector)))
+    (home-page "http://search.cpan.org/dist/File-ShareDir")
+    (synopsis "Locate per-dist and per-module shared files")
+    (description "The intent of File::ShareDir is to provide a companion to
+Class::Inspector and File::HomeDir.  Quite often you want or need your Perl
+module to have access to a large amount of read-only data that is stored on
+the file-system at run-time.  Once the files have been installed to the
+correct directory, you can use File::ShareDir to find your files again after
+the installation.")
+    (license (package-license perl))))
+
+(define-public perl-file-sharedir-install
+  (package
+    (name "perl-file-sharedir-install")
+    (version "0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GW/GWYN/"
+                           "File-ShareDir-Install-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1xz60bi7x8755lq24rx7y1jkyk3icssn7s55z665mysdxhfzg2kh"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/File-ShareDir-Install")
+    (synopsis "Install shared files")
+    (description "File::ShareDir::Install allows you to install read-only data
+files from a distribution.  It is a companion module to File::ShareDir, which
+allows you to locate these files after installation.")
+    (license (package-license perl))))
+
+(define-public perl-file-temp
+  (package
+    (name "perl-file-temp")
+    (version "0.2304")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "File-Temp-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1b11scbw77924awwdf5yw8sk8z0s2hskvpyyxws9yz4gwhim6h8k"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-parent" ,perl-parent)))
+    (home-page "http://search.cpan.org/dist/File-Temp")
+    (synopsis "Return name and handle of a temporary file safely")
+    (description "File::Temp can be used to create and open temporary files in
+a safe way.")
+    (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-long-descriptive
+  (package
+    (name "perl-getopt-long-descriptive")
+    (version "0.098")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Getopt-Long-Descriptive-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08lphvqshcajvvd6z4rvcda6rx5kz8pysrsip4nfv2mbks95p9ma"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-warnings" ,perl-test-warnings)))
+    (propagated-inputs
+     `(("perl-params-validate" ,perl-params-validate)
+       ("perl-sub-exporter" ,perl-sub-exporter)))
+    (home-page "http://search.cpan.org/dist/Getopt-Long-Descriptive")
+    (synopsis "Getopt::Long, but simpler and more powerful")
+    (description "Getopt::Long::Descriptive is yet another Getopt library.
+It's built atop Getopt::Long, and gets a lot of its features, but tries to
+avoid making you think about its huge array of options.  It also provides
+usage (help) messages, data validation, and a few other useful features.")
+    (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-hash-merge
+  (package
+    (name "perl-hash-merge")
+    (version "0.200")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "Hash-Merge-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0r1a2axz85wn6573zrl9rk8mkfl2cvf1gp9vwya5qndp60rz1ya7"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Hash-Merge")
+    (synopsis "Merge arbitrarily deep hashes into a single hash")
+    (description "Hash::Merge merges two arbitrarily deep hashes into a single
+hash.  That is, at any level, it will add non-conflicting key-value pairs from
+one hash to the other, and follows a set of specific rules when there are key
+value conflicts.  The hash is followed recursively, so that deeply nested
+hashes that are at the same level will be merged when the parent hashes are
+merged.")
+    (license (package-license perl))))
+
+(define-public perl-hash-multivalue
+  (package
+    (name "perl-hash-multivalue")
+    (version "0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Hash-MultiValue-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jc37kwpa1fl88va8bd1p95h0vjv1gsvmn7pc2pxj62ga6x0wpc0"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Hash-MultiValue")
+    (synopsis "Store multiple values per key")
+    (description "Hash::MultiValue is an object (and a plain hash reference)
+that may contain multiple values per key, inspired by MultiDict of WebOb.")
+    (license (package-license perl))))
+
+(define-public perl-import-into
+  (package
+    (name "perl-import-into")
+    (version "1.002004")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Import-Into-" version ".tar.gz"))
+       (sha256
+        (base32
+         "110hifk3cj14lxgjq2vaa2qfja21gll4lpn8vbimy0gzqadjbjyy"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)))
+    (home-page "http://search.cpan.org/dist/Import-Into")
+    (synopsis "Import packages into other packages")
+    (description "Writing exporters is a pain.  Some use Exporter, some use
+Sub::Exporter, some use Moose::Exporter, some use Exporter::Declare ... and
+some things are pragmas.  Exporting on someone else's behalf is harder.  The
+exporters don't provide a consistent API for this, and pragmas need to have
+their import method called directly, since they effect the current unit of
+compilation.  Import::Into provides global methods to make this painless.")
+    (license (package-license perl))))
+
+(define-public perl-inc-latest
+  (package
+    (name "perl-inc-latest")
+    (version "0.500")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "inc-latest-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04f6qf6ll2hkdsr9aglykg3wlgsnf0w4f264nzg4i9y6cgrhbafs"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/inc-latest")
+    (synopsis "Use modules in inc/ if newer than installed")
+    (description "The inc::latest module helps bootstrap configure-time
+dependencies for CPAN distributions.  These dependencies get bundled into the
+inc directory within a distribution and are used by Makefile.PL or Build.PL.")
+    (license asl2.0)))
+
+(define-public perl-io-stringy
+  (package
+    (name "perl-io-stringy")
+    (version "2.110")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DS/DSKOLL/"
+                           "IO-stringy-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vh4n0k22hx20rwvf6h7lp25wb7spg0089shrf92d2lkncwg8g3y"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/IO-stringy")
+    (synopsis "IO:: interface for reading/writing an array of lines")
+    (description "This toolkit primarily provides modules for performing both
+traditional and object-oriented i/o) on things *other* than normal
+filehandles; in particular, IO::Scalar, IO::ScalarArray, and IO::Lines.")
+    (license (package-license perl))))
+
+(define-public perl-io-tty
+  (package
+    (name "perl-io-tty")
+    (version "1.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/T/TO/TODDR/IO-Tty-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0lgd9xcbi4gf4gw1ka6fj94my3w1f3k1zamb4pfln0qxz45zlxx4"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/~toddr/IO-Tty/")
+    (synopsis "Perl interface to pseudo ttys")
+    (description
+     "This package provides the 'IO::Pty' and 'IO::Tty' Perl interfaces to
+pseudo ttys.")
+    (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-list-moreutils
+  (package
+    (name "perl-list-moreutils")
+    (version "0.402")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "List-MoreUtils-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1i0k7kqg1m9nf2xvq9l4lyf38fxvi9952vmmvhcdaf3qa95pxb24"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-config-autoconf" ,perl-config-autoconf)
+       ("perl-inc-latest" ,perl-inc-latest)
+       ("perl-test-writevariants" ,perl-test-writevariants)))
+    (propagated-inputs
+     `(("perl-exporter-tiny" ,perl-exporter-tiny)))
+    (home-page "http://search.cpan.org/dist/List-MoreUtils")
+    (synopsis "Provide the stuff missing in List::Util")
+    (description "List::MoreUtils provides some trivial but commonly needed
+functionality on lists which is not going to go into List::Util.")
+    (license (package-license perl))))
+
+(define-public perl-memoize-expirelru
+  (package
+    (name "perl-memoize-expirelru")
+    (version "0.55")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BP/BPOWERS/"
+                           "Memoize-ExpireLRU-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0klk0vj78lr259mnv1rbxib8gzf2cfp4zhkhbcxyhadkkl73myvj"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Memoize-ExpireLRU")
+    (synopsis "Expiry plug-in for Memoize that adds LRU cache expiration")
+    (description "This module implements an expiry policy for Memoize that
+follows LRU semantics, that is, the last n results, where n is specified as
+the argument to the CACHESIZE parameter, will be cached.")
+    (license (package-license perl))))
+
+(define-public perl-module-build-tiny
+  (package
+    (name "perl-module-build-tiny")
+    (version "0.039")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "Module-Build-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "077ijxbvamybph4ymamy1i9q2993xb46vf1npxaybjz0mkv0yn3x"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-extutils-installpaths" ,perl-extutils-installpaths)
+       ("perl-extutils-config" ,perl-extutils-config)
+       ("perl-extutils-helpers" ,perl-extutils-helpers)
+       ("perl-test-harness" ,perl-test-harness)))
+    (propagated-inputs
+     `(("perl-extutils-installpaths" ,perl-extutils-installpaths)
+       ("perl-extutils-config" ,perl-extutils-config)
+       ("perl-extutils-helpers" ,perl-extutils-helpers)
+       ("perl-test-harness" ,perl-test-harness)))
+    (home-page "http://search.cpan.org/dist/Module-Build-Tiny")
+    (synopsis "Tiny replacement for Module::Build")
+    (description "Many Perl distributions use a Build.PL file instead of a
+Makefile.PL file to drive distribution configuration, build, test and
+installation.  Traditionally, Build.PL uses Module::Build as the underlying
+build system.  This module provides a simple, lightweight, drop-in
+replacement.  Whereas Module::Build has over 6,700 lines of code; this module
+has less than 120, yet supports the features needed by most distributions.")
+    (license (package-license perl))))
+
+(define-public perl-module-find
+  (package
+    (name "perl-module-find")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CR/CRENZ/"
+                           "Module-Find-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1lc33jdv4pgmm7nkr9bff0lhwjhhw91kaf6iiy2n7i7mw8dfv47l"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Module-Find")
+    (synopsis "Find and use installed modules in a (sub)category")
+    (description "Module::Find lets you find and use modules in categories.
+This can be useful for auto-detecting driver or plugin modules.  You can
+differentiate between looking in the category itself or in all
+subcategories.")
+    (license (package-license perl))))
+
+(define-public perl-module-implementation
+  (package
+    (name "perl-module-implementation")
+    (version "0.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Module-Implementation-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vfngw4dbryihqhi7g9ks360hyw8wnpy3hpkzyg0q4y2y091lpy1"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/Module-Implementation")
+    (synopsis "Loads alternate underlying implementations for a module")
+    (description "This module abstracts out the process of choosing one of
+several underlying implementations for a module.  This can be used to provide
+XS and pure Perl implementations of a module, or it could be used to load an
+implementation for a given OS or any other case of needing to provide multiple
+implementations.")
+    (license artistic2.0)))
+
+(define-public perl-module-runtime
+  (package
+    (name "perl-module-runtime")
+    (version "0.014")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/Z/ZE/ZEFRAM/"
+                           "Module-Runtime-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19326f094jmjs6mgpwkyisid54k67w34br8yfh0gvaaml87gwi2c"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Module-Runtime")
+    (synopsis "Perl runtime module handling")
+    (description "The functions exported by this module deal with runtime
+handling of Perl modules, which are normally handled at compile time.")
+    (license (package-license perl))))
+
+(define-public perl-module-runtime-conflicts
+  (package
+    (name "perl-module-runtime-conflicts")
+    (version "0.001")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Module-Runtime-Conflicts-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pz23ch78lbpn4kdbm04icgsmbr7jvmxwq1p5m4x2pap8qwd0wqg"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-module-runtime" ,perl-module-runtime)
+       ("perl-dist-checkconflicts" ,perl-dist-checkconflicts)))
+    (home-page "http://search.cpan.org/dist/Module-Runtime-Conflicts")
+    (synopsis "Provide information on conflicts for Module::Runtime")
+    (description "This module provides conflicts checking for Module::Runtime,
+which had a recent release that broke some versions of Moose.  It is called
+from Moose::Conflicts and moose-outdated.")
+    (license (package-license perl))))
+
+(define-public perl-moo
+  (package
+    (name "perl-moo")
+    (version "1.007000")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "Moo-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0y9s6s9jjd519wgal6lwc9id4sadrvfn8gjb51dl602d0kk0l7n5"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-class-method-modifiers" ,perl-class-method-modifiers)
+       ("perl-class-xsaccessor" ,perl-class-xsaccessor)
+       ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
+       ("perl-import-into" ,perl-import-into)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-role-tiny" ,perl-role-tiny)
+       ("perl-strictures" ,perl-strictures)))
+    (home-page "http://search.cpan.org/dist/Moo")
+    (synopsis "Minimalist Object Orientation (with Moose compatibility)")
+    (description "Moo is an extremely light-weight Object Orientation system.
+It allows one to concisely define objects and roles with a convenient syntax
+that avoids the details of Perl's object system.  Moo contains a subset of
+Moose and is optimised for rapid startup.")
+    (license (package-license perl))))
+
+(define-public perl-moose
+  (package
+    (name "perl-moose")
+    (version "2.1403")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                                  "Moose-" version ".tar.gz"))
+              (sha256
+               (base32
+                "16iaazikbnq2jjjac84jrdpfzm4qwqg1nbfgs11jlwn84q4jp1n3"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
+       ("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
+       ("perl-test-cleannamespaces" ,perl-test-cleannamespaces)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-test-warnings" ,perl-test-warnings)))
+    ;; XXX::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+    ;; # === Other Modules ===
+    ;; #
+    ;; #     Module                       Want    Have
+    ;; #     ---------------------------- ---- -------
+    ;; #     Algorithm::C3                 any missing
+    ;; #     DBM::Deep                     any missing
+    ;; #     DateTime                      any missing
+    ;; #     DateTime::Calendar::Mayan     any missing
+    ;; #     DateTime::Format::MySQL       any missing
+    ;; #     Declare::Constraints::Simple  any missing
+    ;; #     Dist::CheckConflicts          any    0.11
+    ;; #     HTTP::Headers                 any missing
+    ;; #     IO::File                      any    1.16
+    ;; #     IO::String                    any missing
+    ;; #     Locale::US                    any missing
+    ;; #     Module::Refresh               any missing
+    ;; #     MooseX::NonMoose              any missing
+    ;; #     Params::Coerce                any missing
+    ;; #     Regexp::Common                any missing
+    ;; #     SUPER                         any missing
+    ;; #     Test::Deep                    any missing
+    ;; #     Test::DependentModules        any missing
+    ;; #     Test::LeakTrace               any missing
+    ;; #     Test::Output                  any missing
+    ;; #     URI                           any missing
+    (propagated-inputs
+     `(("perl-class-load" ,perl-class-load)
+       ("perl-class-load-xs" ,perl-class-load-xs)
+       ("perl-data-optlist" ,perl-data-optlist)
+       ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
+       ("perl-devel-overloadinfo" ,perl-devel-overloadinfo)
+       ("perl-devel-partialdump" ,perl-devel-partialdump)
+       ("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
+       ("perl-eval-closure" ,perl-eval-closure)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-module-runtime-conflicts" ,perl-module-runtime-conflicts)
+       ("perl-mro-compat" ,perl-mro-compat)
+       ("perl-package-deprecationmanager" ,perl-package-deprecationmanager)
+       ("perl-package-stash" ,perl-package-stash)
+       ("perl-package-stash-xs" ,perl-package-stash-xs)
+       ("perl-params-util" ,perl-params-util)
+       ("perl-parent" ,perl-parent)
+       ("perl-scalar-list-utils" ,perl-scalar-list-utils)
+       ("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-sub-name" ,perl-sub-name)
+       ("perl-task-weaken" ,perl-task-weaken)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/Moose")
+    (synopsis "Postmodern object system for Perl 5")
+    (description
+     "Moose is a complete object system for Perl 5.  It provides keywords for
+attribute declaration, object construction, inheritance, and maybe more.  With
+Moose, you define your class declaratively, without needing to know about
+blessed hashrefs, accessor methods, and so on.  You can concentrate on the
+logical structure of your classes, focusing on \"what\" rather than \"how\".
+A class definition with Moose reads like a list of very concise English
+sentences.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-emulate-class-accessor-fast
+  (package
+    (name "perl-moosex-emulate-class-accessor-fast")
+    (version "0.00903")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+                           "MooseX-Emulate-Class-Accessor-Fast-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1lkn1h4sxr1483jicsgsgzclbfw63g2i2c3m4v4j9ar75yrb0kh8"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)))
+    (home-page "http://search.cpan.org/dist/MooseX-Emulate-Class-Accessor-Fast")
+    (synopsis "Emulate Class::Accessor::Fast behavior using Moose attributes")
+    (description "This module attempts to emulate the behavior of
+Class::Accessor::Fast as accurately as possible using the Moose attribute
+system.  The public API of Class::Accessor::Fast is wholly supported, but the
+private methods are not.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-getopt
+  (package
+    (name "perl-moosex-getopt")
+    (version "0.65")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "MooseX-Getopt-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nkzvbsiwldmpn6207ns7rinh860djnw098h6cnvywf429rjnz60"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-test-trap" ,perl-test-trap)
+       ("perl-test-warnings" ,perl-test-warnings)))
+    (propagated-inputs
+     `(("perl-getopt-long-descriptive" ,perl-getopt-long-descriptive)
+       ("perl-moose" ,perl-moose)
+       ("perl-moosex-role-parameterized" ,perl-moosex-role-parameterized)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-Getopt")
+    (synopsis "Moose role for processing command line options")
+    (description "This is a Moose role which provides an alternate constructor
+for creating objects using parameters passed in from the command line.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-markasmethods
+  (package
+    (name "perl-moosex-markasmethods")
+    (version "0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RS/RSRCHBOY/"
+                           "MooseX-MarkAsMethods-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1y3yxwcjjajm66pvca54cv9fax7a6dy36xqr92x7vzyhfqrw3v69"))))
+    (build-system perl-build-system)
+    (inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-MarkAsMethods")
+    (synopsis "Mark overload code symbols as methods")
+    (description "MooseX::MarkAsMethods allows one to easily mark certain
+functions as Moose methods.  This will allow other packages such as
+namespace::autoclean to operate without blowing away your overloads.  After
+using MooseX::MarkAsMethods your overloads will be recognized by Class::MOP as
+being methods, and class extension as well as composition from roles with
+overloads will \"just work\".")
+    (license lgpl2.1)))
+
+(define-public perl-moosex-methodattributes
+  (package
+    (name "perl-moosex-methodattributes")
+    (version "0.29")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "MooseX-MethodAttributes-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pz3i67gadfmgzj87m1xp2ilcg3yhppdylcng2h6c11dy0a06hdk"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build-tiny" ,perl-module-build-tiny)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-moosex-types" ,perl-moosex-types)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-MethodAttributes")
+    (synopsis "Code attribute introspection")
+    (description "This module allows code attributes of methods to be
+introspected using Moose meta method objects.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-nonmoose
+(package
+  (name "perl-moosex-nonmoose")
+  (version "0.26")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                          "MooseX-NonMoose-" version ".tar.gz"))
+      (sha256
+        (base32
+          "0zdaiphc45s5xj0ax5mkijf5d8v6w6yccb3zplgj6f30y7n55gnb"))))
+  (build-system perl-build-system)
+  (native-inputs
+    `(("perl-moose" ,perl-moose)
+      ("perl-test-fatal" ,perl-test-fatal)))
+  (propagated-inputs
+    `(("perl-list-moreutils" ,perl-list-moreutils)
+      ("perl-module-runtime" ,perl-module-runtime)
+      ("perl-moose" ,perl-moose)
+      ("perl-try-tiny" ,perl-try-tiny)))
+  (home-page "http://search.cpan.org/dist/MooseX-NonMoose")
+  (synopsis "Subclassing of non-Moose classes")
+  (description "MooseX::NonMoose allows for easily subclassing non-Moose
+classes with Moose, taking care of the details connected with doing this, such
+as setting up proper inheritance from Moose::Object and installing (and
+inlining, at make_immutable time) a constructor that makes sure things like
+BUILD methods are called.  It tries to be as non-intrusive as possible.")
+  (license (package-license perl))))
+
+(define-public perl-moosex-role-parameterized
+  (package
+    (name "perl-moosex-role-parameterized")
+    (version "1.08")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "MooseX-Role-Parameterized-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12s2nmq13ri126yv02bx9h30j760zpal27i470z85ayw9s7il4jq"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
+       ("perl-moosex-role-withoverloading" ,perl-moosex-role-withoverloading)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-Role-Parameterized")
+    (synopsis "Moose roles with composition parameters")
+    (description "Because Moose roles serve many different masters, they
+usually provide only the least common denominator of functionality.  To
+empower roles further, more configurability than -alias and -excludes is
+required.  Perhaps your role needs to know which method to call when it is
+done processing, or what default value to use for its url attribute.
+Parameterized roles offer a solution to these (and other) kinds of problems.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-role-withoverloading
+  (package
+    (name "perl-moosex-role-withoverloading")
+    (version "0.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "MooseX-Role-WithOverloading-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0kfs203ip44vsxh282kshia8wqkwklz4i7fs2ngsbj6frv00nqdv"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-aliased" ,perl-aliased)
+       ("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-Role-WithOverloading")
+    (synopsis "Roles which support overloading")
+    (description "MooseX::Role::WithOverloading allows you to write a
+Moose::Role which defines overloaded operators and allows those overload
+methods to be composed into the classes/roles/instances it's compiled to,
+where plain Moose::Roles would lose the overloading.")
+    (license (package-license perl))))
+
+(define-public perl-moosex-types
+  (package
+    (name "perl-moosex-types")
+    (version "0.45")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "MooseX-Types-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1iq90s1f0xbmr194q0mhnp9wxqxwwilkbdml040ibqbqvfiz87yh"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-carp-clan" ,perl-carp-clan)
+       ("perl-moose" ,perl-moose)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
+    (home-page "http://search.cpan.org/dist/MooseX-Types")
+    (synopsis "Organise your Moose types in libraries")
+    (description "This package lets you declare types using short names, but
+behind the scenes it namespaces all your type declarations, effectively
+prevent name clashes between packages.")
+    (license (package-license perl))))
+
+(define-public perl-mro-compat
+  (package
+    (name "perl-mro-compat")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
+                           "MRO-Compat-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mhma2g83ih9f8nkmg2k9l0x6izhhbb6k5lli4rpllxad4wbk9dv"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/MRO-Compat")
+    (synopsis "MRO interface compatibility for Perls < 5.9.5")
+    (description "The \"mro\" namespace provides several utilities for dealing
+with method resolution order and method caching in general in Perl 5.9.5 and
+higher.  This module provides those interfaces for earlier versions of
+Perl (back to 5.6.0).")
+    (license (package-license perl))))
+
+(define-public perl-namespace-autoclean
+  (package
+    (name "perl-namespace-autoclean")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "namespace-autoclean-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0msggbg2zbixxjq1fda19h0yygavxndfzc4j4pq11nfghmawjsb0"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-b-hooks-endofscope" ,perl-b-hooks-endofscope)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-sub-identify" ,perl-sub-identify)))
+    (home-page "http://search.cpan.org/dist/namespace-autoclean")
+    (synopsis "Keep imports out of your namespace")
+    (description "The namespace::autoclean pragma will remove all imported
+symbols at the end of the current package's compile cycle.  Functions called
+in the package itself will still be bound by their name, but they won't show
+up as methods on your class or instances.  It is very similar to
+namespace::clean, except it will clean all imported functions, no matter if
+you imported them before or after you used the pragma.  It will also not touch
+anything that looks like a method.")
+    (license (package-license perl))))
+
+(define-public perl-namespace-clean
+  (package
+    (name "perl-namespace-clean")
+    (version "0.25")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+                           "namespace-clean-" version ".tar.gz"))
+       (sha256
+        (base32
+         "016dds70ql1mp18b07chkxiy4drn976ibnbshqc2hmhrh9xjnsll"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-package-stash" ,perl-package-stash)
+       ("perl-b-hooks-endofscope" ,perl-b-hooks-endofscope)))
+    (home-page "http://search.cpan.org/dist/namespace-clean")
+    (synopsis "Keep imports and functions out of your namespace")
+    (description "The namespace::clean pragma will remove all previously
+declared or imported symbols at the end of the current package's compile
+cycle.  Functions called in the package itself will still be bound by their
+name, but they won't show up as methods on your class or instances.")
+    (license (package-license perl))))
+
+(define-public perl-number-compare
+  (package
+    (name "perl-number-compare")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "Number-Compare-" version ".tar.gz"))
+       (sha256
+        (base32
+         "09q8i0mxvr7q9vajwlgawsi0hlpc119gnhq4hc933d03x0vkfac3"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Number-Compare")
+    (synopsis "Numeric comparisons")
+    (description "Number::Compare compiles a simple comparison to an anonymous
+subroutine, which you can call with a value to be tested against.")
+    (license (package-license perl))))
+
+(define-public perl-package-anon
+  (package
+    (name "perl-package-anon")
+    (version "0.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AU/AUGGY/"
+                           "Package-Anon-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fj1fakkfklf2iwzsl64vfgshya3jgm6vhxiphw12wlac9g2il0m"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-params-util" ,perl-params-util)))
+    (home-page "http://search.cpan.org/dist/Package-Anon")
+    (synopsis "Anonymous packages")
+    (description "This module allows for anonymous packages that are
+independent of the main namespace and only available through an object
+instance, not by name.")
+    (license (package-license perl))))
+
+(define-public perl-package-deprecationmanager
+  (package
+    (name "perl-package-deprecationmanager")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Package-DeprecationManager-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fkvq3xxwc3l5hg64dr9sj3l12dl59i44cg407qx9sd6r51j3qfi"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-test-output" ,perl-test-output)))
+    (propagated-inputs
+     `(("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-params-util" ,perl-params-util)
+       ("perl-sub-install" ,perl-sub-install)))
+    (arguments `(#:tests? #f))          ;XXX: Failing for some reason...
+    (home-page "http://search.cpan.org/dist/Package-DeprecationManager")
+    (synopsis "Manage deprecation warnings for your distribution")
+    (description "This module allows you to manage a set of deprecations for
+one or more modules.")
+    (license artistic2.0)))
+
+(define-public perl-package-stash
+  (package
+    (name "perl-package-stash")
+    (version "0.37")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                           "Package-Stash-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0b3vg2nbzmz1m5qla4123rmfzmpfmwxkw78fghvwsc4iiww0baq6"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
+       ("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-package-anon" ,perl-package-anon)))
+    (propagated-inputs
+     `(("perl-module-implementation" ,perl-module-implementation)
+       ("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
+       ("perl-package-stash-xs" ,perl-package-stash-xs)))
+    (home-page "http://search.cpan.org/dist/Package-Stash")
+    (synopsis "Routines for manipulating stashes")
+    (description "Manipulating stashes (Perl's symbol tables) is occasionally
+necessary, but incredibly messy, and easy to get wrong.  This module hides all
+of that behind a simple API.")
+    (license (package-license perl))))
+
+(define-public perl-package-stash-xs
+  (package
+    (name "perl-package-stash-xs")
+    (version "0.28")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                           "Package-Stash-XS-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11nl69n8i56p91pd0ia44ip0vpv2cxwpbfakrv01vvv8az1cbn13"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-package-anon" ,perl-package-anon)))
+    (home-page "http://search.cpan.org/dist/Package-Stash-XS")
+    (synopsis "Faster implementation of the Package::Stash API")
+    (description "This is a backend for Package::Stash, which provides the
+functionality in a way that's less buggy and much faster.  It will be used by
+default if it's installed, and should be preferred in all environments with a
+compiler.")
+    (license (package-license perl))))
+
+(define-public perl-padwalker
+  (package
+    (name "perl-padwalker")
+    (version "2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RO/ROBIN/"
+                           "PadWalker-" version ".tar.gz"))
+       (sha256
+        (base32
+         "058l78rkr6px3rqcv2sdf9sqimdq1nc6py5yb9rrg3wmva7crw84"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/PadWalker")
+    (synopsis "Play with other peoples' lexical variables")
+    (description "PadWalker is a module which allows you to inspect (and even
+change) lexical variables in any subroutine which called you.  It will only
+show those variables which are in scope at the point of the call.  PadWalker
+is particularly useful for debugging.")
+    (license (package-license perl))))
+
 (define-public perl-params-util
   (package
     (name "perl-params-util")
@@ -298,6 +2388,90 @@ import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
 checking parameters easier.")
     (license (package-license perl))))
 
+(define-public perl-params-validate
+  (package
+    (name "perl-params-validate")
+    (version "1.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Params-Validate-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wh23i9kkma6493c0q1kvy6wmahd6spg6xm3xbp2ar1iy1xhks5l"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)
+       ("perl-test-requires" ,perl-test-requires)))
+    (propagated-inputs
+     `(("perl-module-implementation" ,perl-module-implementation)))
+    (home-page "http://search.cpan.org/dist/Params-Validate")
+    (synopsis "Validate method/function parameters")
+    (description "The Params::Validate module allows you to validate method or
+function call parameters to an arbitrary level of specificity.")
+    (license artistic2.0)))
+
+(define-public perl-parent
+  (package
+    (name "perl-parent")
+    (version "0.228")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CO/CORION/"
+                           "parent-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0w0i02y4z8465z050kml57mvhv7c5gl8w8ivplhr3cms0zbaq87b"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/parent")
+    (synopsis "Establish an ISA relationship with base classes at compile time")
+    (description "Allows you to both load one or more modules, while setting
+up inheritance from those modules at the same time.")
+    (license (package-license perl))))
+
+(define-public perl-path-class
+  (package
+    (name "perl-path-class")
+    (version "0.35")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/K/KW/KWILLIAMS/"
+                           "Path-Class-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1viaj8jyshcj135la0kgfgzalaw06xnbsg9h54jx09v1342v69lj"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Path-Class")
+    (synopsis "Path specification manipulation")
+    (description "Path::Class is a module for manipulation of file and
+directory specifications in a cross-platform manner.")
+    (license (package-license perl))))
+
+(define-public perl-posix-strftime-compiler
+  (package
+    (name "perl-posix-strftime-compiler")
+    (version "0.41")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
+                           "POSIX-strftime-Compiler-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0f9p3hx0vqx8zg5v24pz0s4zc8ln100c7c91ks681wq02phqj2v7"))))
+    (build-system perl-build-system)
+    (arguments `(#:tests? #f))          ;TODO: Timezone test failures
+    (home-page "http://search.cpan.org/dist/POSIX-strftime-Compiler")
+    (synopsis "GNU C library compatible strftime for loggers and servers")
+    (description "POSIX::strftime::Compiler provides GNU C library compatible
+strftime(3).  But this module is not affected by the system locale.  This
+feature is useful when you want to write loggers, servers, and portable
+applications.")
+    (license (package-license perl))))
+
 (define-public perl-probe-perl
   (package
     (name "perl-probe-perl")
@@ -319,29 +2493,176 @@ Module::Build project, but has been externalized here for general use.")
                               "Probe-Perl-" version))
     (license (package-license perl))))
 
-(define-public perl-ipc-run3
+(define-public perl-regexp-common
   (package
-    (name "perl-ipc-run3")
-    (version "0.048")
+    (name "perl-regexp-common")
+    (version "2013031301")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
-                                  "IPC-Run3-" version ".tar.gz"))
+              (uri (string-append "mirror://cpan/authors/id/A/AB/ABIGAIL/"
+                                  "Regexp-Common-" version ".tar.gz"))
               (sha256
                (base32
-                "0r9m8q78bg7yycpixd7738jm40yz71p2q7inm766kzsw3g6c709x"))))
+                "112wybsm0vr8yfannx6sdfvgp5vza28gjgr3pgn69ak4sac836kj"))))
     (build-system perl-build-system)
-    (synopsis "Run a subprocess with input/ouput redirection")
+    (synopsis "Provide commonly requested regular expressions")
     (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+))))
+     "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-role-tiny
+  (package
+    (name "perl-role-tiny")
+    (version "1.003004")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "Role-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ak60hakn0ixmsiw403si0lf5pagq5r6wjgl7p0pr979nlcikfmd"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-class-method-modifiers" ,perl-class-method-modifiers)))
+    (home-page "http://search.cpan.org/dist/Role-Tiny")
+    (synopsis "Roles, as a slice of Moose")
+    (description "Role::Tiny is a minimalist role composition tool.")
+    (license (package-license perl))))
+
+(define-public perl-safe-isa
+  (package
+    (name "perl-safe-isa")
+    (version "1.000005")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Safe-Isa-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vib54cp64dy3ic4n73skadp1pl4gn8s9qpxmzvi078dm3mpnbcw"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Safe-Isa")
+    (synopsis "Call isa, can, does, and DOES safely")
+    (description "This module allows you to call isa, can, does, and DOES
+safely on things that may not be objects.")
+    (license (package-license perl))))
+
+(define-public perl-scope-guard
+  (package
+    (name "perl-scope-guard")
+    (version "0.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CH/CHOCOLATE/"
+                           "Scope-Guard-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1lsagnz6pli035zvx5c1x4qm9fabi773vns86yd8lzfpldhfv3sv"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Scope-Guard")
+    (synopsis "Lexically-scoped resource management")
+    (description "This module provides a convenient way to perform cleanup or
+other forms of resource management at the end of a scope.  It is particularly
+useful when dealing with exceptions: the Scope::Guard constructor takes a
+reference to a subroutine that is guaranteed to be called even if the thread
+of execution is aborted prematurely.  This effectively allows lexically-scoped
+\"promises\" to be made that are automatically honoured by perl's garbage
+collector.")
+    (license (package-license perl))))
+
+(define-public perl-stream-buffered
+  (package
+    (name "perl-stream-buffered")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                           "Stream-Buffered-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fs2n9zw6isfkha2kbqrvl9mwg572x1x0jlfaps0qsyynn846bcv"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Stream-Buffered")
+    (synopsis "Temporary buffer to save bytes")
+    (description "Stream::Buffered is a buffer class to store arbitrary length
+of byte strings and then get a seekable filehandle once everything is
+buffered.  It uses PerlIO and/or temporary file to save the buffer depending
+on the length of the size.")
+    (license (package-license perl))))
+
+(define-public perl-strictures
+  (package
+    (name "perl-strictures")
+    (version "1.005005")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
+                           "strictures-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bmpv8wr9jbc1lfj634xhq3y42nm28hh01jfsyzxhqhqf6dkdz59"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/strictures")
+    (synopsis "Turn on strict and make all warnings fatal")
+    (description "Strictures turns on strict and make all warnings fatal when
+run from within a source-controlled directory.")
+    (license (package-license perl))))
+
+(define-public perl-string-camelcase
+  (package
+    (name "perl-string-camelcase")
+    (version "0.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/H/HI/HIO/"
+                           "String-CamelCase-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17kh8nap2z5g5rqcvw0m7mvbai7wr7h0al39w8l827zhqad8ss42"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/String-CamelCase")
+    (synopsis "Camelcase and de-camelcase")
+    (description "This module may be used to convert from under_score text to
+CamelCase and back again.")
+    (license (package-license perl))))
+
+(define-public perl-string-rewriteprefix
+  (package
+    (name "perl-string-rewriteprefix")
+    (version "0.007")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "String-RewritePrefix-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18nxl1vgkcx0r7ifkmbl9fp73f8ihiqhqqf3vq6sj5b3cgawrfsw"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sub-exporter" ,perl-sub-exporter)))
+    (home-page "http://search.cpan.org/dist/String-RewritePrefix")
+    (synopsis "Rewrite strings based on a set of known prefixes")
+    (description "This module allows you to rewrite strings based on a set of
+known pprefixes.")
+    (license (package-license perl))))
 
 (define-public perl-sub-exporter
   (package
@@ -367,6 +2688,49 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.")
 custom-built routines.")
     (license (package-license perl))))
 
+(define-public perl-sub-exporter-progressive
+  (package
+    (name "perl-sub-exporter-progressive")
+    (version "0.001011")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
+                           "Sub-Exporter-Progressive-" version ".tar.gz"))
+       (sha256
+        (base32
+         "01kwzbqwdhvadpphnczid03nlyj0h4cxaq3m3v2401bckkkcc606"))))
+    (build-system perl-build-system)
+    (native-inputs `(("perl-sub-exporter" ,perl-sub-exporter)))
+    (home-page "http://search.cpan.org/dist/Sub-Exporter-Progressive")
+    (synopsis "Only use Sub::Exporter if you need it")
+    (description "Sub::Exporter is an incredibly powerful module, but with
+that power comes great responsibility, as well as some runtime penalties.
+This module is a \"Sub::Exporter\" wrapper that will let your users just use
+Exporter if all they are doing is picking exports, but use \"Sub::Exporter\"
+if your users try to use \"Sub::Exporter\"'s more advanced features, like
+renaming exports, if they try to use them.")
+    (license (package-license perl))))
+
+(define-public perl-sub-identify
+  (package
+    (name "perl-sub-identify")
+    (version "0.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RG/RGARCIA/"
+                           "Sub-Identify-" version ".tar.gz"))
+       (sha256
+        (base32
+         "087fjcg6w576w47i1slj6mjfd3gl1b0airgddmn3prn0nff6nn2m"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Sub-Identify")
+    (synopsis "Retrieve names of code references")
+    (description "Sub::Identify allows you to retrieve the real name of code
+references.")
+    (license (package-license perl))))
+
 (define-public perl-sub-install
   (package
     (name "perl-sub-install")
@@ -389,6 +2753,125 @@ the unsightly mess of C<no strict> or typeglobs lying about where just anyone
 can see them.")
     (license (package-license perl))))
 
+(define-public perl-sub-name
+  (package
+    (name "perl-sub-name")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Sub-Name-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sdlc8pv7vyyc48gzh70hbwzn0hzwl3zbcy2dkmfw8vjzgya5i06"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-devel-checkbin" ,perl-devel-checkbin)))
+    (home-page "http://search.cpan.org/dist/Sub-Name")
+    (synopsis "(Re)name a sub")
+    (description "Assigns a new name to referenced sub.  If package
+specification is omitted in the name, then the current package is used.  The
+return value is the sub.")
+    (license (package-license perl))))
+
+(define-public perl-sub-uplevel
+  (package
+    (name "perl-sub-uplevel")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "Sub-Uplevel-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1yzxqsim8vpavzqm2wfksh8dpmy6qbr9s3hdqqicp38br3lzd4qg"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Sub-Uplevel")
+    (synopsis "Apparently run a function in a higher stack frame")
+    (description "Like Tcl's uplevel() function, but not quite so dangerous.
+The idea is just to fool caller().  All the really naughty bits of Tcl's
+uplevel() are avoided.")
+    (license (package-license perl))))
+
+(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))))
+
+(define-public perl-task-weaken
+  (package
+    (name "perl-task-weaken")
+    (version "1.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                           "Task-Weaken-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1i7kd9v8fjsqyhr4rx4a1jv7n5vfjjm1v4agb24pizh0b72p3qk7"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Task-Weaken")
+    (synopsis "Ensure that a platform has weaken support")
+    (description "One recurring problem in modules that use Scalar::Util's
+weaken function is that it is not present in the pure-perl variant.  If
+Scalar::Util is not available at all, it will issue a normal dependency on the
+module.  However, if Scalar::Util is relatively new ( it is >= 1.19 ) and the
+module does not have weaken, the install will bail out altogether with a long
+error encouraging the user to seek support.")
+    (license (package-license perl))))
+
+(define-public perl-test-cleannamespaces
+  (package
+    (name "perl-test-cleannamespaces")
+    (version "0.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Test-CleanNamespaces-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ynrds515gcq954z34zm03rgcx0dskiaz7qj0k7k5gmrjj1kfycp"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-requires" ,perl-test-requires)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-warnings" ,perl-test-warnings)
+       ("perl-test-tester" ,perl-test-tester)))
+    (propagated-inputs
+     `(("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-package-stash" ,perl-package-stash)
+       ("perl-sub-identify" ,perl-sub-identify)
+       ("perl-sub-exporter" ,perl-sub-exporter)
+       ("perl-file-find-rule" ,perl-file-find-rule)
+       ("perl-file-find-rule-perl" ,perl-file-find-rule-perl)))
+    (home-page "http://search.cpan.org/dist/Test-CleanNamespaces")
+    (synopsis "Check for uncleaned imports")
+    (description "This module lets you check your module's namespaces for
+imported functions you might have forgotten to remove with
+namespace::autoclean or namespace::clean and are therefore available to be
+called as methods, which usually isn't want you want.")
+    (license (package-license perl))))
+
 (define-public perl-test-deep
   (package
     (name "perl-test-deep")
@@ -413,6 +2896,177 @@ structures without getting caught in an infinite loop.")
                               "Test-Deep-" version))
     (license gpl1+)))  ; or "Artistic License"
 
+(define-public perl-test-differences
+  (package
+    (name "perl-test-differences")
+    (version "0.63")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DC/DCANTRELL/"
+                           "Test-Differences-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rhs4q6qn64ji06ns7lwl6iiiw3mggvd9xk9nkiqvx1jihbplrbw"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-text-diff" ,perl-text-diff)
+       ("perl-capture-tiny" ,perl-capture-tiny)))
+    (home-page "http://search.cpan.org/dist/Test-Differences")
+    (synopsis "Test strings and data structures and show differences")
+    (description "This module exports three test functions and four diff-style
+functions")
+    ;; See LICENSE section of Test/Differences.pm, which reads "... GNU public
+    ;; license, any version, ..."
+    (license gpl3+)))
+
+(define-public perl-test-directory
+  (package
+    (name "perl-test-directory")
+    (version "0.041")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SA/SANBEG/"
+                           "Test-Directory-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ncql08cizhicbxwd753b4czns8nlcnlw0zfjcfrbdd41x4j6hqr"))))
+    (build-system perl-build-system)
+    (native-inputs `(("perl-test-exception" ,perl-test-exception)))
+    (home-page "http://search.cpan.org/dist/Test-Directory")
+    (synopsis "Perl extension for maintaining test directories")
+    (description "Testing code can involve making sure that files are created
+and deleted as expected.  Doing this manually can be error prone, as it's easy
+to forget a file, or miss that some unexpected file was added.  This module
+simplifies maintaining test directories by tracking their status as they are
+modified or tested with this API, making it simple to test both individual
+files, as well as to verify that there are no missing or unknown files.")
+    (license (package-license perl))))
+
+(define-public perl-test-exception
+  (package
+    (name "perl-test-exception")
+    (version "0.36")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/"
+                           "Test-Exception-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zpwimspbq11wjrli481qk17aabzxab15cnnryflx45nzn3za2xk"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-sub-uplevel" ,perl-sub-uplevel)))
+    (home-page "http://search.cpan.org/dist/Test-Exception")
+    (synopsis "Test exception based code")
+    (description "This module provides a few convenience methods for testing
+exception based code.  It is built with Test::Builder and plays happily with
+Test::More and friends.")
+    (license (package-license perl))))
+
+(define-public perl-test-fatal
+  (package
+    (name "perl-test-fatal")
+    (version "0.014")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Test-Fatal-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1c6bs68mss4q7cyapkv2c0jn66i21050p0faxf3s3417gdffzp5w"))))
+    (build-system perl-build-system)
+    (propagated-inputs `(("perl-try-tiny" ,perl-try-tiny)))
+    (home-page "http://search.cpan.org/dist/Test-Fatal")
+    (synopsis "Simple helpers for testing code with exceptions")
+    (description "Test::Fatal is an alternative to the popular
+Test::Exception.  It does much less, but should allow greater flexibility in
+testing exception-throwing code with about the same amount of typing.")
+    (license (package-license perl))))
+
+(define-public perl-test-harness
+  (package
+    (name "perl-test-harness")
+    (version "3.35")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "Test-Harness-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06l29y1bpizb9vd9g49lgi0wzj1xy4rsk42ahdj3fpgqnvb9wp05"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases (alist-cons-before
+                 'check 'patch-test
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; This test looks for "#!/usr/bin/perl" in some source.
+                   ;; Patch what the test looks for.
+                   (substitute* "t/source.t"
+                     (("#!/usr/bin/perl")
+                      (string-append "#!" (assoc-ref inputs "perl")
+                                     "/bin/perl"))))
+                 %standard-phases)))
+    (home-page "http://search.cpan.org/dist/Test-Harness")
+    (synopsis "Run Perl standard test scripts with statistics")
+    (description "Simple test harness which allows tests to be run and results
+automatically aggregated and output to STDOUT.")
+    (license (package-license perl))))
+
+(define-public perl-test-mocktime
+  (package
+    (name "perl-test-mocktime")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DD/DDICK/"
+                           "Test-MockTime-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0yrqmjg33akannwz2f99rfm7dvvxpzsdj23lsvlvfi4qslrlqfvw"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Test-MockTime")
+    (synopsis "Replaces actual time with simulated time")
+    (description "This module was created to enable test suites to test code
+at specific points in time.  Specifically it overrides localtime, gmtime and
+time at compile time and then relies on the user supplying a mock time via
+set_relative_time, set_absolute_time or set_fixed_time to alter future calls
+to gmtime,time or localtime.")
+    (license (package-license perl))))
+
+(define-public perl-test-most
+  (package
+    (name "perl-test-most")
+    (version "0.34")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/O/OV/OVID/"
+                           "Test-Most-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0i72aih3pakm8gh73wx1n4dwq8lbx6dvxhla46gsapszws6hr0n2"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-test-differences" ,perl-test-differences)
+       ("perl-test-warn" ,perl-test-warn)
+       ("perl-exception-class" ,perl-exception-class)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)))
+    (home-page "http://search.cpan.org/dist/Test-Most")
+    (synopsis "Most commonly needed test functions and features")
+    (description "This module provides the most commonly used testing
+functions, along with automatically turning on strict and warning and gives a
+bit more fine-grained control over test suites.")
+    (license (package-license perl))))
+
 (define-public perl-test-nowarnings
   (package
     (name "perl-test-nowarnings")
@@ -437,6 +3091,69 @@ including a stack trace of what was going on when it occurred.")
                               "Test-NoWarnings-" version))
     (license lgpl2.1)))
 
+(define-public perl-test-output
+  (package
+    (name "perl-test-output")
+    (version "1.03")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
+                                  "Test-Output-" version ".tar.gz"))
+              (sha256
+               (base32
+                "12991jnzj4cbw9whhprmqvnzd1ayii84g2mh8vxbjngwqrjsy41i"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-test-tester" ,perl-test-tester)
+       ("perl-sub-exporter" ,perl-sub-exporter)))
+    (synopsis "Utilities to test STDOUT and STDERR messages")
+    (description
+     "Test::Output provides a simple interface for testing output sent to
+STDOUT or STDERR.  A number of different utilities are included to try and be
+as flexible as possible to the tester.")
+    (home-page (string-append "http://search.cpan.org/~bdfoy/"
+                              "Test-Output-" version))
+    (license (package-license perl))))
+
+(define-public perl-test-pod
+  (package
+    (name "perl-test-pod")
+    (version "1.48")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DW/DWHEELER/"
+                           "Test-Pod-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hmwwhabyng4jrnll926b4ab73r40w3pfchlrvs0yx6kh6kwwy14"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Test-Pod")
+    (synopsis "Check for POD errors in files")
+    (description "Check POD files for errors or warnings in a test file, using
+Pod::Simple to do the heavy lifting.")
+    (license (package-license perl))))
+
+(define-public perl-test-requires
+  (package
+    (name "perl-test-requires")
+    (version "0.08")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TO/TOKUHIROM/"
+                           "Test-Requires-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08c29m0dn34384mmmpqqlbb899zpbkkc01c2lsp31mch1frv9cg7"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Test-Requires")
+    (synopsis "Checks to see if the module can be loaded")
+    (description "Test::Requires checks to see if the module can be loaded.
+If this fails, then rather than failing tests this skips all tests.")
+    (license (package-license perl))))
+
 (define-public perl-test-script
   (package
     (name "perl-test-script")
@@ -461,17 +3178,38 @@ bin as is also commonly used) paths of your Perl distribution.")
                               "Test-Script-" version))
     (license (package-license perl))))
 
+(define-public perl-test-sharedfork
+  (package
+    (name "perl-test-sharedfork")
+    (version "0.29")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/"
+                           "Test-SharedFork-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vlak10q4gcf0ch0rfcb9lvddav6r8h15iipzbkbgf9mrj47gbv3"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-requires" ,perl-test-requires)))
+    (home-page "http://search.cpan.org/dist/Test-SharedFork")
+    (synopsis "Fork test in Perl")
+    (description "Test::SharedFork is a utility module for Test::Builder.  It
+makes fork(2) safe to use in test cases.")
+    (license (package-license perl))))
+
 (define-public perl-test-simple
   (package
     (name "perl-test-simple")
-    (version "1.001009")
+    (version "1.001014")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/"
                                   "Test-Simple-" version ".tar.gz"))
               (sha256
                (base32
-                "1klxpy658aj1pmrw63j1hc16gilwh5rzhp9rb2d1iydi3hcm8xb5"))))
+                "0szi95shwwdvc4nqykzgx05g2m1001mjhvqqhjg5wypbi771992m"))))
     (build-system perl-build-system)
     (synopsis "Basic utilities for writing tests")
     (description
@@ -480,31 +3218,6 @@ bin as is also commonly used) paths of your Perl distribution.")
                               "Test-Simple-" version))
     (license (package-license perl))))
 
-(define-public perl-test-output
-  (package
-    (name "perl-test-output")
-    (version "1.03")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
-                                  "Test-Output-" version ".tar.gz"))
-              (sha256
-               (base32
-                "12991jnzj4cbw9whhprmqvnzd1ayii84g2mh8vxbjngwqrjsy41i"))))
-    (build-system perl-build-system)
-    (propagated-inputs
-     `(("perl-capture-tiny" ,perl-capture-tiny)
-       ("perl-test-tester" ,perl-test-tester)
-       ("perl-sub-exporter" ,perl-sub-exporter)))
-    (synopsis "Utilities to test STDOUT and STDERR messages")
-    (description
-     "Test::Output provides a simple interface for testing output sent to
-STDOUT or STDERR.  A number of different utilities are included to try and be
-as flexible as possible to the tester.")
-    (home-page (string-append "http://search.cpan.org/~bdfoy/"
-                              "Test-Output-" version))
-    (license (package-license perl))))
-
 (define-public perl-test-tester
   (package
     (name "perl-test-tester")
@@ -526,90 +3239,515 @@ a minimum of effort.")
     ;; "Under the same license as Perl itself"
     (license (package-license perl))))
 
-(define-public perl-file-which
+(define-public perl-test-trap
   (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"))))
+    (name "perl-test-trap")
+    (version "v0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/EB/EBHANSSEN/"
+                           "Test-Trap-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05b4zc4087imwphls4yksg4chzx9yavbri301gaxas9kv1yhx13w"))))
     (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))
+    (propagated-inputs
+     `(("perl-test-tester" ,perl-test-tester)
+       ("perl-data-dump" ,perl-data-dump)))
+    (home-page "http://search.cpan.org/dist/Test-Trap")
+    (synopsis "Trap exit codes, exceptions, output, etc.")
+    (description "This module is primarily (but not exclusively) for use in
+test scripts: A block eval configurable and extensible but by default trapping
+STDOUT, STDERR, warnings, exceptions, would-be exit codes, and return values
+from boxed blocks of test code.")
     (license (package-license perl))))
 
-(define-public perl-getopt-tabular
+(define-public perl-test-warn
   (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"))))
+    (name "perl-test-warn")
+    (version "0.30")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CH/CHORNY/"
+                           "Test-Warn-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0haf2ii7br5z0psmkvlvmx2z2q9qz1c70gx0969r378qjidmb5w1"))))
     (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))
+    (propagated-inputs
+     `(("perl-sub-uplevel" ,perl-sub-uplevel)))
+    (home-page "http://search.cpan.org/dist/Test-Warn")
+    (synopsis "Perl extension to test methods for warnings")
+    (description "This module provides a few convenience methods for testing
+warning based code.")
     (license (package-license perl))))
 
-(define-public perl-regexp-common
+(define-public perl-test-warnings
   (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"))))
+    (name "perl-test-warnings")
+    (version "0.020")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "Test-Warnings-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1x262kybrdnbiiw53m1axp4zyh4lsfb9mm2shmpm8lwf7sp30isi"))))
     (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))))
+    (home-page "http://search.cpan.org/dist/Test-Warnings")
+    (synopsis "Test for warnings and the lack of them")
+    (description "This module is intended to be used as a drop-in replacement
+for Test::NoWarnings.  It also adds an extra test, but runs this test before
+done_testing calculates the test count, rather than after.  It does this by
+hooking into done_testing as well as via an END block.  You can declare a
+plan, or not, and things will still Just Work.")
+    (license (package-license perl))))
 
-(define-public perl-sys-cpu
+(define-public perl-test-without-module
   (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"))))
+    (name "perl-test-without-module")
+    (version "0.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CO/CORION/"
+                           "Test-Without-Module-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0zwc2dk5srd02j4p049w77m89iw5nbff381rmhcbaz8x2w5kdhz2"))))
     (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))
+    (home-page "http://search.cpan.org/dist/Test-Without-Module")
+    (synopsis "Test fallback behaviour in absence of modules")
+    (description "This module allows you to deliberately hide modules from a
+program even though they are installed.  This is mostly useful for testing
+modules that have a fallback when a certain dependency module is not
+installed.")
     (license (package-license perl))))
+
+(define-public perl-test-writevariants
+  (package
+    (name "perl-test-writevariants")
+    (version "0.010")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "Test-WriteVariants-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0kklp05fj98yiq8znyfx9lx1vmjay2ypfb868qdwv3kf93m5zjwr"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-most" ,perl-test-most)
+       ("perl-test-directory" ,perl-test-directory)))
+    (propagated-inputs
+     `(("perl-data-tumbler" ,perl-data-tumbler)
+       ("perl-file-homedir" ,perl-file-homedir)))
+    (home-page "http://search.cpan.org/dist/Test-WriteVariants")
+    (synopsis "Dynamic generation of tests")
+    (description "The Test::WriteVariants module provides for the dynamic
+generation of tests in nested combinations of contexts.")
+    (license (package-license perl))))  ;See LICENSE
+
+(define-public perl-text-balanced
+  (package
+    (name "perl-text-balanced")
+    (version "2.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
+                           "Text-Balanced-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1d3mba2sjpp044h16pkf231cksa34ripaz6rmgxp0ygpl917az57"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-Balanced")
+    (synopsis "Extract delimited text sequences from strings")
+    (description "The Text::Balanced module can be used to extract delimited
+text sequences from strings.")
+    (license (package-license perl))))
+
+(define-public perl-text-diff
+  (package
+    (name "perl-text-diff")
+    (version "1.41")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/O/OV/OVID/"
+                           "Text-Diff-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1ynjsa4sr1yvyh65sdfvahaafglibz70j8b6rj01cg1iisj50zx6"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-algorithm-diff" ,perl-algorithm-diff)))
+    (home-page "http://search.cpan.org/dist/Text-Diff")
+    (synopsis "Perform diffs on files and record sets")
+    (description "Text::Diff provides a basic set of services akin to the GNU
+diff utility.  It is not anywhere near as feature complete as GNU diff, but it
+is better integrated with Perl and available on all platforms.  It is often
+faster than shelling out to a system's diff executable for small files, and
+generally slower on larger files.")
+    (license (package-license perl))))
+
+(define-public perl-text-glob
+  (package
+    (name "perl-text-glob")
+    (version "0.09")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RC/RCLAMP/"
+                           "Text-Glob-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0lr76wrsj8wcxrq4wi8z1640w4dmdbkznp06q744rg3g0bd238d5"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-Glob")
+    (synopsis "Match globbing patterns against text")
+    (description "Text::Glob implements glob(3) style matching that can be
+used to match against text, rather than fetching names from a filesystem.  If
+you want to do full file globbing use the File::Glob module instead.")
+    (license (package-license perl))))
+
+(define-public perl-text-simpletable
+  (package
+    (name "perl-text-simpletable")
+    (version "2.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MR/MRAMBERG/"
+                           "Text-SimpleTable-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15hpry9jwrf1vbjyk21s65rllxrdvp2fdzzv9gsvczggby2yyzfs"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-SimpleTable")
+    (synopsis "Simple ASCII tables")
+    (description "Text::SimpleTable draws simple ASCII tables.")
+    (license artistic2.0)))
+
+(define-public perl-text-unidecode
+  (package
+    (name "perl-text-unidecode")
+    (version "1.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SB/SBURKE/"
+                           "Text-Unidecode-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mnnq57amh0bs6z2ggkmgnn4hz8mqc9lfhr66xv2bsnlvhg7c7fb"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Text-Unidecode")
+    (synopsis "Provide plain ASCII transliterations of Unicode text")
+    (description "Text::Unidecode provides a function, unidecode(...) that
+takes Unicode data and tries to represent it in US-ASCII characters (i.e., the
+universally displayable characters between 0x00 and 0x7F).  The representation
+is almost always an attempt at transliteration-- i.e., conveying, in Roman
+letters, the pronunciation expressed by the text in some other writing
+system.")
+    (license (package-license perl))))
+
+(define-public perl-time-local
+  (package
+    (name "perl-time-local")
+    (version "1.2300")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
+                           "Time-Local-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jgvd6v93hlrcmy56yxbm4yrhzi8yvrq8c3xffpgh28af01wmb5j"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Time-Local")
+    (synopsis "Efficiently compute time from local and GMT time")
+    (description "This module provides functions that are the inverse of
+built-in perl functions localtime() and gmtime().  They accept a date as a
+six-element array, and return the corresponding time(2) value in seconds since
+the system epoch")
+    (license (package-license perl))))
+
+(define-public perl-timedate
+  (package
+    (name "perl-timedate")
+    (version "2.30")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
+                           "TimeDate-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11lf54akr9nbivqkjrhvkmfdgkbhw85sq0q4mak56n6bf542bgbm"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/TimeDate")
+    (synopsis "Date parsing/formating subroutines")
+    (description "This module provides routines for parsing date string into
+time values and formating dates into ASCII strings.")
+    (license (package-license perl))))
+
+(define-public perl-time-mock
+  (package
+    (name "perl-time-mock")
+    (version "v0.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/EW/EWILHELM/"
+                           "Time-Mock-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0bwqyg8z98m8cjw1qcm4wg502n225k33j2fp8ywxkgfjdd1zgllv"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-timedate" ,perl-timedate))) ;For Date::Parse
+    (home-page "http://search.cpan.org/dist/Time-Mock")
+    (synopsis "Shift and scale time")
+    (description "This module allows you to speed up your sleep(), alarm(),
+and time() calls.")
+    (license (package-license perl))))
+
+(define-public perl-tree-simple
+  (package
+    (name "perl-tree-simple")
+    (version "1.25")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RS/RSAVAGE/"
+                           "Tree-Simple-" version ".tgz"))
+       (sha256
+        (base32
+         "1xj1n70v4qbx7m9k01bj9aixk77yssliavgvfds3xj755hcan0nr"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-scalar-list-utils" ,perl-scalar-list-utils)))
+    (home-page "http://search.cpan.org/dist/Tree-Simple")
+    (synopsis "Simple tree object")
+    (description "This module in a fully object-oriented implementation of a
+simple n-ary tree.")
+    (license (package-license perl))))
+
+(define-public perl-tree-simple-visitorfactory
+  (package
+    (name "perl-tree-simple-visitorfactory")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RS/RSAVAGE/"
+                           "Tree-Simple-VisitorFactory-" version ".tgz"))
+       (sha256
+        (base32
+         "1g27xl48q1vr7aikhxg4vvcsj1si8allxz59vmnks61wsw4by7vg"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-tree-simple" ,perl-tree-simple)
+       ("perl-base" ,perl-base)))
+    (home-page "http://search.cpan.org/dist/Tree-Simple-VisitorFactory")
+    (synopsis "Factory object for dispensing Visitor objects")
+    (description "This module is a factory for dispensing
+Tree::Simple::Visitor::* objects.")
+    (license (package-license perl))))
+
+(define-public perl-try-tiny
+  (package
+    (name "perl-try-tiny")
+    (version "0.22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
+                           "Try-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "068vdbpacfawc3lkfs0b82xxl27h3l0gj14iada3vlwk8rps9yv0"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Try-Tiny")
+    (synopsis "Minimal try/catch with proper preservation of $@")
+    (description "This module provides bare bones try/catch/finally statements
+that are designed to minimize common mistakes with eval blocks, and nothing
+else.")
+    (license x11)))
+
+(define-public perl-variable-magic
+  (package
+    (name "perl-variable-magic")
+    (version "0.55")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/V/VP/VPIT/"
+                           "Variable-Magic-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xzh2vy45ph80bp09j5fcjy8ydgn8yaxsa0fj831q6p1spvyniwg"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Variable-Magic")
+    (synopsis "Associate user-defined magic to variables from Perl")
+    (description "Magic is Perl's way of enhancing variables.  This mechanism
+lets the user add extra data to any variable and hook syntactical
+operations (such as access, assignment or destruction) that can be applied to
+it.  With this module, you can add your own magic to any variable without
+having to write a single line of XS.")
+    (license (package-license perl))))
+
+
+;;; Some packaged modules need versions of core modules that are newer than
+;;; those in our perl 5.16.1.
+
+(define-public perl-cpan-meta
+  (package
+    (name "perl-cpan-meta")
+    (version "2.143240")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "CPAN-Meta-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1d80bxphpp5dq7fx5ipxszn7j8q9d85w6fnapdrbym21k1vsmlf6"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cpan-meta-requirements" ,perl-cpan-meta-requirements)
+       ("perl-cpan-meta-yaml" ,perl-cpan-meta-yaml)
+       ("perl-parse-cpan-meta" ,perl-parse-cpan-meta)))
+    (home-page "http://search.cpan.org/dist/CPAN-Meta")
+    (synopsis "Distribution metadata for a CPAN dist")
+    (description "Software distributions released to the CPAN include a
+META.json or, for older distributions, META.yml, which describes the
+distribution, its contents, and the requirements for building and installing
+the distribution.  The data structure stored in the META.json file is
+described in CPAN::Meta::Spec.  CPAN::Meta provides a simple class to
+represent this distribution metadata (or distmeta), along with some helpful
+methods for interrogating that data.")
+    (license (package-license perl))))
+
+(define-public perl-cpan-meta-requirements
+  (package
+    (name "perl-cpan-meta-requirements")
+    (version "2.131")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "CPAN-Meta-Requirements-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12p5s7w3cwcrbpcrxzanvpr0syswhwlqzbaki6m044c45jix2fss"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/CPAN-Meta-Requirements")
+    (synopsis "Set of version requirements for a CPAN dist")
+    (description "A CPAN::Meta::Requirements object models a set of version
+constraints like those specified in the META.yml or META.json files in CPAN
+distributions, and as defined by CPAN::Meta::Spec.  It can be built up by
+adding more and more constraints, and will reduce them to the simplest
+representation.")
+    (license (package-license perl))))
+
+(define-public perl-cpan-meta-yaml
+  (package
+    (name "perl-cpan-meta-yaml")
+    (version "0.012")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "CPAN-Meta-YAML-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0a0d62w8d81kkas4j1h48znk0f0vrpibl31gvz9r8hm77dbqqwkw"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:tests? #f))                    ;Tests require Test::More >= 0.99
+    (home-page "http://search.cpan.org/dist/CPAN-Meta-YAML")
+    (synopsis "Read and write a subset of YAML for CPAN Meta files")
+    (description "This module implements a subset of the YAML specification
+for use in reading and writing CPAN metadata files like META.yml and
+MYMETA.yml.")
+    (license (package-license perl))))
+
+(define-public perl-module-build
+  (package
+    (name "perl-module-build")
+    (version "0.4211")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
+                           "Module-Build-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1c5hfhajr963w4mdjivsc7yz4vf4pz1rrfch5a93fbac1x2mr58h"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cpan-meta" ,perl-cpan-meta)))
+    (home-page "http://search.cpan.org/dist/Module-Build")
+    (synopsis "Build and install Perl modules")
+    (description "\"Module::Build\" is a system for building, testing, and
+installing Perl modules.  It is meant to be an alternative to
+\"ExtUtils::MakeMaker\".  Developers may alter the behavior of the module
+through subclassing in a much more straightforward way than with
+\"MakeMaker\".  It also does not require a \"make\" on your system - most of
+the \"Module::Build\" code is pure-perl and written in a cross-platform way.")
+    (license (package-license perl))))
+
+(define-public perl-parse-cpan-meta
+  (package
+    (name "perl-parse-cpan-meta")
+    (version "1.4414")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "Parse-CPAN-Meta-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06ya2rg599qanqb1fxiyrd489mvmdgzbw4ph23hwjwpv9lahhxnd"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-cpan-meta-yaml" ,perl-cpan-meta-yaml)))
+    (home-page "http://search.cpan.org/dist/Parse-CPAN-Meta")
+    (synopsis "Parse META.yml and META.json CPAN metadata files")
+    (description "Parse::CPAN::Meta is a parser for META.json and META.yml
+files, using JSON::PP and/or CPAN::Meta::YAML.")
+    (license (package-license perl))))
+
+(define-public perl-scalar-list-utils
+  (package
+    (name "perl-scalar-list-utils")
+    (version "1.41")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
+                           "Scalar-List-Utils-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04l1q4hps9n8b1hk9kpgpc1cryim7pl9sfdyb7fz5nq4gmz307j7"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Scalar-List-Utils")
+    (synopsis "Common Scalar and List utility subroutines")
+    (description "This package contains a selection of subroutines that people
+have expressed would be nice to have in the perl core, but the usage would not
+really be high enough to warrant the use of a keyword, and the size so small
+such that being individual extensions would be wasteful.")
+    (license (package-license perl))))
+
+;;; END: Core module overrides
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index da40e28334..245dfe9c67 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -17,7 +17,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages plotutils)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -26,6 +26,7 @@
   #:use-module (gnu packages guile)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages))
 
 (define-public plotutils
@@ -64,7 +65,7 @@ It includes a library, \"libplot\", for C and C++ for exporting 2D vector
 graphics in many file formats.  It also has support for 2D vector graphics
 animations.  The package also contains command-line programs for plotting
 scientific data.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public guile-charting
   (package
@@ -93,4 +94,65 @@ scientific data.")
     (description
      "Guile-Charting is a Guile Scheme library to create bar charts and graphs
 using the Cairo drawing library.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
+
+(define-public ploticus
+  (package
+    (name "ploticus")
+    (version "2.42")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/ploticus/ploticus/"
+                                  version "/ploticus242_src.tar.gz"))
+              (sha256
+               (base32
+                "1c70cvfvgjh83hj1x21130wb9qfr2rc0x47cxy9kl805yjwy8a9z"))
+              (modules '((guix build utils)))
+              (snippet
+               ;; Install binaries in the right place.
+               '(substitute* "src/Makefile"
+                  (("INSTALLBIN =.*$")
+                   (string-append "INSTALLBIN = $(out)/bin"))))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace configure (lambda _ (chdir "src")))
+         (add-before install make-target-directories
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let ((out (assoc-ref outputs "out")))
+                         (mkdir-p (string-append out "/bin"))
+                         #t)))
+         (add-after install install-prefabs
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (dir (string-append out
+                                                 "/share/ploticus/prefabs"))
+                             (bin (string-append out "/bin")))
+                        (mkdir-p dir)
+
+                        ;; Install "prefabs".
+                        (for-each (lambda (file)
+                                    (let ((target
+                                           (string-append dir "/"
+                                                          (basename file))))
+                                      (copy-file file target)))
+                                  (find-files "../prefabs" "."))
+
+                        ;; Allow them to be found.
+                        (wrap-program (string-append bin "/pl")
+                          `("PLOTICUS_PREFABS" ":" = (,dir)))))))))
+    (inputs
+     `(("libpng" ,libpng)
+       ("libx11" ,libx11)
+       ("zlib" ,zlib)))
+    (home-page "http://ploticus.sourceforge.net/")
+    (synopsis "Command-line tool for producing plots and charts")
+    (description
+     "Ploticus is a non-interactive software package for producing plots,
+charts, and graphics from data.  Ploticus is good for automated or
+just-in-time graph generation, handles date and time data nicely, and has
+basic statistical capabilities.  It allows significant user control over
+colors, styles, options and details.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index 1e9fe41b47..d76f74b775 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -112,7 +112,7 @@ rates. ")
 (define pulseaudio
   (package
     (name "pulseaudio")
-    (version "5.0")
+    (version "6.0")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -120,7 +120,7 @@ rates. ")
                    version ".tar.xz"))
              (sha256
               (base32
-               "0fgrr8v7yfh0byhzdv4c87v9lkj8g7gpjm8r9xrbvpa92a5kmhcr"))
+               "1xpnfxa0d8pgf6b4qdgnkcvrvdxbbbjd5ync19h0f5hbp3h401mm"))
              (modules '((guix build utils)))
              (snippet
               ;; Disable console-kit support by default since it's deprecated
@@ -128,12 +128,14 @@ rates. ")
               '(substitute* "src/daemon/default.pa.in"
                  (("load-module module-console-kit" all)
                   (string-append "#" all "\n"))))
-             (patches (list (search-patch "pulseaudio-fix-mult-test.patch")
-                            (search-patch "pulseaudio-CVE-2014-3970.patch")))))
+             (patches (list (search-patch "pulseaudio-fix-mult-test.patch")))))
     (build-system gnu-build-system)
     (arguments
-     `(#:configure-flags '("--localstatedir=/var" ;"--sysconfdir=/etc"
-                           "--disable-oss-output")
+     `(#:configure-flags (list "--localstatedir=/var" ;"--sysconfdir=/etc"
+                               "--disable-oss-output"
+                               (string-append "--with-udev-rules-dir="
+                                              (assoc-ref %outputs "out")
+                                              "/lib/udev/rules.d"))
        #:phases (alist-cons-before
                  'check 'pre-check
                  (lambda _
@@ -160,6 +162,7 @@ rates. ")
        ("libltdl" ,libltdl)
        ("fftwf" ,fftwf)
        ("avahi" ,avahi)
+       ("eudev" ,eudev)           ;for the detection of hardware audio devices
        ("check" ,check)))
     (propagated-inputs
      ;; 'libpulse*.la' contain `-lgdbm' and `-lcap', so propagate them.
@@ -191,7 +194,8 @@ mixing several sounds into one are easily achieved using a sound server. ")
                    ".tar.xz"))
              (sha256
               (base32
-               "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2"))))
+               "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2"))
+             (patches (list (search-patch "pavucontrol-sigsegv.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("libcanberra" ,libcanberra)
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 58132b334a..2fcdbcc211 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -26,7 +26,7 @@
 
 (define-module (gnu packages python)
   #:use-module ((guix licenses)
-                #:select (asl2.0 bsd-3 bsd-2 bsd-style cc0 x11 x11-style
+                #:select (asl2.0 bsd-3 bsd-2 non-copyleft cc0 x11 x11-style
                           gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+
                           psfl public-domain x11-style))
   #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
@@ -723,7 +723,7 @@ Database API 2.0T.")
     (description
      "Mechanize implements stateful programmatic web browsing in Python,
 after Andy Lester’s Perl module WWW::Mechanize.")
-    (license (bsd-style "file://COPYING"
+    (license (non-copyleft "file://COPYING"
                         "See COPYING in the distribution."))))
 
 
@@ -3146,7 +3146,14 @@ libxml2 and libxslt.")
               version ".tar.gz"))
         (sha256
           (base32
-            "04aj80jhfbmxqzvmq40zfi4z3cw6vi01m3wkk6diz3lc971cfnw9"))))
+            "04aj80jhfbmxqzvmq40zfi4z3cw6vi01m3wkk6diz3lc971cfnw9"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Adapt to newer freetype. As the package is unmaintained upstream,
+        ;; there is no use in creating a patch and reporting it.
+        '(substitute* "_imagingft.c"
+           (("freetype/")
+            "freetype2/")))))
     (build-system python-build-system)
     (inputs
       `(("freetype" ,freetype)
@@ -3305,3 +3312,64 @@ interfaces in an easy and portable manner.")
 providing a clean and modern domain specific specification language (DSL) in
 Python style, together with a fast and comfortable execution environment.")
     (license license:expat)))
+
+(define-public python-testlib
+  (package
+    (name "python-testlib")
+    (version "0.6.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://pypi.python.org/packages/source/t/testlib/testlib-"
+             version ".zip"))
+       (sha256
+        (base32 "1mz26cxn4x8bbgv0rn0mvj2z05y31rkc8009nvdlb3lam5b4mj3y"))))
+    (build-system python-build-system)
+    (inputs
+      `(("python-setuptools" ,python-setuptools)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (arguments
+     `(#:phases
+       (alist-replace
+        'unpack
+        (lambda* (#:key inputs outputs #:allow-other-keys)
+          (let ((unzip (string-append (assoc-ref inputs "unzip")
+                                      "/bin/unzip"))
+                (source (assoc-ref inputs "source")))
+            (and (zero? (system* unzip source))
+                 (chdir (string-append "testlib-" ,version)))))
+        %standard-phases)))
+    (synopsis "Python micro test suite harness")
+    (description "A micro unittest suite harness for Python.")
+    (home-page "https://github.com/trentm/testlib")
+    (license license:expat)))
+
+(define-public python2-testlib
+  (package-with-python2 python-testlib))
+
+(define-public python2-xlib
+  (package
+    (name "python2-xlib")
+    (version "0.14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/python-xlib/"
+                                  "python-xlib-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2                         ;Python 2 only
+       #:tests? #f))                              ;no tests
+    (inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (home-page "http://python-xlib.sourceforge.net/")
+    (synopsis "Python X11 client library")
+    (description
+     "The Python X Library is intended to be a fully functional X client
+library for Python programs.  It is useful to implement low-level X clients.
+It is written entirely in Python.")
+    (license gpl2+)))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 31afc8d544..4c750416e5 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -92,7 +92,7 @@ X11 (yet).")
 (define-public qt
   (package
     (name "qt")
-    (version "5.4.0")
+    (version "5.4.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://download.qt-project.org/official_releases/qt/"
@@ -102,7 +102,7 @@ X11 (yet).")
                                  version ".tar.xz"))
              (sha256
               (base32
-               "176351k8ngczb324i8bbkrsz9pby7cvy2qnixfjwybzxp53xzndj"))
+               "0q6qzakq8xihw91xv310qi3vyylq7x2bzdkjgy8sqxii2lgbjzhv"))
              (snippet
               '(begin
                  ;; Remove broken symlinks.
diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm
index 61c68b557f..bde3fccf5d 100644
--- a/gnu/packages/ratpoison.scm
+++ b/gnu/packages/ratpoison.scm
@@ -28,6 +28,17 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages fontutils))
 
+(define ratpoison.desktop
+  (origin
+    (method url-fetch)
+    (uri (string-append "http://sources.gentoo.org/cgi-bin/viewvc.cgi/"
+                        "gentoo-x86/x11-wm/ratpoison/files/ratpoison.desktop"
+                        "?revision=1.1"))
+    (file-name "ratpoison.desktop")
+    (sha256
+     (base32
+      "1rh3f4c3rhn6q2hmkraam0831xqcqyj3qkqf019ahaxsxaan3553"))))
+
 (define-public ratpoison
   (package
     (name "ratpoison")
@@ -41,6 +52,17 @@
                "0v4mh8d3vsh5xbbycfdl3g8zfygi1rkslh1x7k5hi1d05bfq3cdr"))
              (patches (list (search-patch "ratpoison-shell.patch")))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (alist-cons-after
+        'install 'install-xsession
+        (lambda _
+          (let* ((file      (assoc-ref %build-inputs "ratpoison.desktop"))
+                 (xsessions (string-append %output "/share/xsessions"))
+                 (target    (string-append xsessions "/ratpoison.desktop")))
+            (mkdir-p xsessions)
+            (copy-file file target)))
+        %standard-phases)))
     (inputs
      `(("libXi" ,libxi)
        ("readline" ,readline)
@@ -52,7 +74,8 @@
        ("libXpm" ,libxpm)
        ("libXt" ,libxt)
        ("inputproto" ,inputproto)
-       ("libX11" ,libx11)))
+       ("libX11" ,libx11)
+       ("ratpoison.desktop" ,ratpoison.desktop)))
     (native-inputs
       `(("perl" ,perl)
         ("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index a76b2c30ab..96a52fd93a 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -19,7 +19,7 @@
 
 (define-module (gnu packages rdf)
   #:use-module ((guix licenses)
-                #:select (bsd-style isc gpl2 lgpl2.0+ lgpl2.1 lgpl2.1+))
+                #:select (non-copyleft isc gpl2 lgpl2.0+ lgpl2.1 lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
@@ -127,24 +127,24 @@ Java Lucene text search engine API to C++.")
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
-                 'unpack 'remove-out-of-tree-references
+                 'remove-out-of-tree-references 'autoreconf
                  (lambda _
-                   ;; remove symlinks to files in /usr/
-                   (delete-file-recursively "m4")
-                   (for-each delete-file '("config.guess"
-                                           "config.sub"
-                                           "depcomp"
-                                           "install-sh"
-                                           "ltmain.sh"
-                                           "missing"))
-                   ;; remove_test depends on an out-of-tree RDF file
-                   (substitute* "examples/Makefile.am"
-                     (("instances_test remove_test") "instances_test")
-                     (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
+                   (zero? (system* "autoreconf" "-vfi")))
                  (alist-cons-after
-                  'remove-out-of-tree-references 'autoreconf
+                  'unpack 'remove-out-of-tree-references
                   (lambda _
-                    (zero? (system* "autoreconf" "-vfi")))
+                    ;; remove symlinks to files in /usr/
+                    (delete-file-recursively "m4")
+                    (for-each delete-file '("config.guess"
+                                            "config.sub"
+                                            "depcomp"
+                                            "install-sh"
+                                            "ltmain.sh"
+                                            "missing"))
+                    ;; remove_test depends on an out-of-tree RDF file
+                    (substitute* "examples/Makefile.am"
+                      (("instances_test remove_test") "instances_test")
+                      (("\\$\\(TESTS\\) remove_test") "$(TESTS)")))
                   %standard-phases))))
     (inputs
      `(("raptor" ,raptor2)
@@ -338,7 +338,7 @@ system.")
     (description
       "RDFLib is a Python library for working with RDF, a simple yet
 powerful language for representing information.")
-    (license (bsd-style "file://LICENSE"
+    (license (non-copyleft "file://LICENSE"
                         "See LICENSE in the distribution."))))
 
 (define-public python2-rdflib
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 98d100eb60..feb4ec191d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -38,7 +38,7 @@
 (define-public ruby
   (package
     (name "ruby")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
        (method url-fetch)
@@ -47,7 +47,7 @@
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "1jpq7r48pmkll5lfw933013ijv750sr61c63p96v8pzwh3i191w4"))))
+         "1h16lrahp1m57la6sllsad0n3d72g9ccg62n5fxd04nwgz054a1v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index 46b97215ba..c147abcaab 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -114,11 +114,13 @@ anywhere.")
                   (lambda* (#:key outputs #:allow-other-keys)
                     (let* ((out (assoc-ref outputs "out"))
                            (lib (string-append out "/lib")))
-                      ;; Add LIB to the RUNPATH of all the executables.
+                      ;; Add LIB to the RUNPATH of all the executables and
+                      ;; dynamic libraries.
                       (with-directory-excursion out
                         (for-each (cut augment-rpath <> lib)
                                   (append (find-files "bin" ".*")
-                                          (find-files "sbin" ".*"))))))
+                                          (find-files "sbin" ".*")
+                                          (find-files "lib" ".*"))))))
                   %standard-phases))
 
        #:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index c9b82f4b62..03aa56d118 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -111,8 +111,6 @@ joystick, and graphics hardware.")
      ;; unless the right libalsa happens to be in $LD_LIBRARY_PATH.  Pass
      ;; '--disable-dl' to avoid that.
      '(#:configure-flags '("--disable-dl")))
-    (inputs `(("alsa-lib" ,alsa-lib)
-              ("libx11" ,libx11)))
     (synopsis "Library for module sound formats")
     (description
      "MikMod is able to play a wide range of module formats, as well as
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index 8beb54dc3c..a1b3fe7c53 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +23,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages lout)
+  #:use-module (gnu packages plotutils)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages ghostscript))
 
@@ -60,10 +61,11 @@
                  %standard-phases)
 
        #:parallel-build? #f))
-    ;; TODO: Add Ploticus.
+
     (inputs `(("guile" ,guile-2.0)
               ("imagemagick" ,imagemagick)
               ("ghostscript" ,ghostscript)        ; for 'convert'
+              ("ploticus" ,ploticus)
               ("lout" ,lout)))
 
     ;; The 'skribilo' command needs them, and for people using Skribilo as a
diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm
index 8c35c8b43e..577d7aff45 100644
--- a/gnu/packages/slang.scm
+++ b/gnu/packages/slang.scm
@@ -49,7 +49,8 @@
                     (("-ltermcap") ""))))))
     (build-system gnu-build-system)
     (arguments
-     '(#:parallel-tests? #f))
+     '(#:parallel-tests? #f
+       #:parallel-build? #f)) ; there's at least one race
     (inputs
      `(("readline" ,readline)
        ("zlib" ,zlib)
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index f475eeab09..0148b25a16 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -179,22 +179,22 @@ The connection layer multiplexes many different concurrent channels over the
 authenticated connection and allows tunneling of login sessions and
 TCP-forwarding.  It provides a flow control service for these channels.
 Additionally, various channel-specific options can be negotiated.")
-   (license (license:bsd-style "file://LICENSE"
+   (license (license:non-copyleft "file://LICENSE"
                                "See LICENSE in the distribution."))
    (home-page "http://www.openssh.org/")))
 
 (define-public guile-ssh
   (package
     (name "guile-ssh")
-    (version "0.7.1")
+    (version "0.7.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/artyom-poptsov/libguile-ssh.git")
-                    (commit "e216e1d78bf93a9753ea813f930cac5e68e52180")))
+                    (commit (string-append "v" version))))
               (sha256
                (base32
-                "1sbxhmynmpwfjwb3dp6lrc3cxi5kffqmb6klhx7wnkgqxvs61lsw"))))
+                "1wcv10xv7ayrhrg77zyng6flknnlkzhni24nf8x9nic00zha8znk"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 67510eb41f..7c2c3e549b 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -78,7 +78,7 @@
     (home-page "http://www.tcl.tk/")
     (synopsis "The Tcl scripting language")
     (description "The Tcl (Tool Command Language) scripting language.")
-    (license (bsd-style "http://www.tcl.tk/software/tcltk/license.html"
+    (license (non-copyleft "http://www.tcl.tk/software/tcltk/license.html"
                         "Tcl/Tk license"))))
 
 
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index f757350135..56149ab58e 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -23,7 +23,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gd)
@@ -31,6 +33,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -57,54 +60,48 @@
     (sha256 (base32
               "0qsr55ms1278dhmgixs5qqwd4fxhh369ihkki6wgh8xaqm8p48p0"))))
 
-(define-public texlive
+(define-public texlive-bin
   (package
-   (name "texlive")
+   (name "texlive-bin")
    (version "2014")
-   (source (origin
-            (method url-fetch)
-            (uri "ftp://tug.org/historic/systems/texlive/2014/texlive-20140525-source.tar.xz")
-            (sha256 (base32
-                     "1glmaw2jv42grbsn05kay825j66scimjqqc32776bb1356q4xfq8"))))
+   (source
+    (origin
+     (method url-fetch)
+      (uri "ftp://tug.org/historic/systems/texlive/2014/texlive-20140525-source.tar.xz")
+      (sha256 (base32
+               "1glmaw2jv42grbsn05kay825j66scimjqqc32776bb1356q4xfq8"))))
    (build-system gnu-build-system)
-   (inputs `(("texlive-extra-src" ,texlive-extra-src)
-             ("texlive-texmf-src" ,texlive-texmf-src)
-             ("cairo" ,cairo)
-             ("fontconfig" ,fontconfig)
-             ("fontforge" ,fontforge)
-             ("freetype" ,freetype)
-             ("gd" ,gd)
-             ("ghostscript" ,ghostscript)
-             ("graphite2" ,graphite2)
-             ("harfbuzz" ,harfbuzz)
-             ("icu4c" ,icu4c)
-             ("libpaper" ,libpaper)
-             ("libpng" ,libpng)
-             ("libxaw" ,libxaw)
-             ("libxt" ,libxt)
-             ("perl" ,perl)
-             ("pixman" ,pixman)
-             ("poppler" ,poppler)
-             ("potrace" ,potrace)
-             ("python" ,python-2) ; incompatible with Python 3 (print syntax)
-             ("ruby" ,ruby)
-             ("tcsh" ,tcsh)
-             ("teckit" ,teckit)
-             ("zlib" ,zlib)
-             ("zziplib" ,zziplib)))
+   (inputs
+    `(("texlive-extra-src" ,texlive-extra-src)
+      ("cairo" ,cairo)
+      ("fontconfig" ,fontconfig)
+      ("fontforge" ,fontforge)
+      ("freetype" ,freetype)
+      ("gd" ,gd)
+      ("ghostscript" ,ghostscript)
+      ("graphite2" ,graphite2)
+      ("harfbuzz" ,harfbuzz)
+      ("icu4c" ,icu4c)
+      ("libpaper" ,libpaper)
+      ("libpng" ,libpng)
+      ("libxaw" ,libxaw)
+      ("libxt" ,libxt)
+      ("perl" ,perl)
+      ("pixman" ,pixman)
+      ("poppler" ,poppler)
+      ("potrace" ,potrace)
+      ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+      ("ruby" ,ruby)
+      ("tcsh" ,tcsh)
+      ("teckit" ,teckit)
+      ("zlib" ,zlib)
+      ("zziplib" ,zziplib)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
-   (outputs '("out" "data"))
    (arguments
     `(#:out-of-source? #t
       #:configure-flags
        `("--disable-native-texlive-build"
-         ;; Although the texmf-dist data is taken from texlive-texmf,
-         ;; setting datarootdir is still useful:
-         ;; "make install" creates symbolic links to scripts in this place.
-         ,(string-append "--datarootdir=" (assoc-ref %outputs "data"))
-         ,(string-append "--infodir=" (assoc-ref %outputs "out") "/share/info")
-         ,(string-append "--mandir=" (assoc-ref %outputs "out") "/share/man")
          "--with-system-cairo"
          "--with-system-freetype2"
          "--with-system-gd"
@@ -130,64 +127,151 @@
        (alist-cons-after
         'install 'postinst
          (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
-           (let ((texlive-extra (assoc-ref inputs "texlive-extra-src"))
-                 (texlive-texmf (assoc-ref inputs "texlive-texmf-src"))
-                 (out (assoc-ref outputs "out"))
-                 (data (assoc-ref outputs "data"))
-                 (unpack (assoc-ref %standard-phases 'unpack))
-                 (patch-source-shebangs
-                   (assoc-ref %standard-phases 'patch-source-shebangs)))
+           (let* ((out (assoc-ref outputs "out"))
+                  (share (string-append out "/share"))
+                  (texlive-extra (assoc-ref inputs "texlive-extra-src"))
+                  (unpack (assoc-ref %standard-phases 'unpack))
+                  (patch-source-shebangs
+                    (assoc-ref %standard-phases 'patch-source-shebangs)))
              ;; Create symbolic links for the latex variants and their
              ;; man pages.
              (with-directory-excursion (string-append out "/bin/")
                (for-each symlink
                '("pdftex" "pdftex"   "xetex"   "luatex")
                '("latex"  "pdflatex" "xelatex" "lualatex")))
-             (with-directory-excursion (string-append out "/share/man/man1/")
+             (with-directory-excursion (string-append share "/man/man1/")
                (symlink "luatex.1" "lualatex.1"))
-             ;; Delete texmf-dist from "data", since it will be reinstalled
-             ;; from texlive-texmf.
-             (system* "rm" "-r" (string-append data "/texmf-dist"))
              ;; Unpack texlive-extra and install tlpkg.
              (mkdir "texlive-extra")
              (with-directory-excursion "texlive-extra"
                (apply unpack (list #:source texlive-extra))
                (apply patch-source-shebangs (list #:source texlive-extra))
-               (system* "mv" "tlpkg" data)
-               (chdir ".."))
-             ;; Unpack and install texlive-texmf.
-             (mkdir "texlive-texmf")
-             (with-directory-excursion "texlive-texmf"
-               (apply unpack (list #:source texlive-texmf))
-               (apply patch-source-shebangs (list #:source texlive-texmf))
-               ;; Register "data" for kpathsea in texmf.cnf.
-               (substitute* "texmf-dist/web2c/texmf.cnf"
-                 (("TEXMFROOT = \\$SELFAUTOPARENT")
-                 (string-append "TEXMFROOT = " data)))
-               (system* "mv" "texmf-dist" data)
-               (chdir ".."))
-             ;; texmf.cnf must also be placed in "out", since kpsewhich does
-             ;; not know about "data" until it has found this file.
-             (mkdir (string-append out "/share/texmf-dist"))
-             (mkdir (string-append out "/share/texmf-dist/web2c"))
-             (copy-file (string-append data "/texmf-dist/web2c/texmf.cnf")
-               (string-append out "/share/texmf-dist/web2c/texmf.cnf"))))
-       (alist-cons-after 'patch-shebangs 'texconfig
+               (system* "mv" "tlpkg" share))))
+        %standard-phases)))
+   (synopsis "TeX Live, a package of the TeX typesetting system")
+   (description
+    "TeX Live provides a comprehensive TeX document production system.
+It includes all the major TeX-related programs, macro packages, and fonts
+that are free software, including support for many languages around the
+world.
+
+This package contains the binaries.")
+   (license (license:fsf-free "http://tug.org/texlive/copying.html"))
+   (home-page "http://www.tug.org/texlive/")))
+
+(define-public texlive-texmf
+  (package
+   (name "texlive-texmf")
+   (version "2014")
+   (source texlive-texmf-src)
+   (build-system gnu-build-system)
+   (inputs
+    `(("texlive-bin" ,texlive-bin)
+      ("lua" ,lua)
+      ("perl" ,perl)
+      ("python" ,python-2) ; incompatible with Python 3 (print syntax)
+      ("ruby" ,ruby)
+      ("tcsh" ,tcsh)))
+   (arguments
+    `(#:modules ((guix build gnu-build-system)
+                 (guix build utils)
+                 (srfi srfi-26))
+      #:imported-modules ((guix build gnu-build-system)
+                          (guix build utils))
+      #:phases
+        (alist-cons-before
+         'texmf-config 'install
          (lambda* (#:key outputs #:allow-other-keys)
-           (let ((out (assoc-ref outputs "out")))
-             ;; Configure the texlive system; inspired from
-             ;; http://slackbuilds.org/repository/13.37/office/texlive/
-             (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))
-             (system* "updmap-sys" "--nohash" "--syncwithtrees")
-             (system* "mktexlsr")
-             (system* "fmtutil-sys" "--all")))
-       %standard-phases))))
-   (synopsis "Tex Live, a package of the TeX typesetting system")
+           (let ((share (string-append (assoc-ref outputs "out") "/share")))
+             (mkdir-p share)
+             (system* "mv" "texmf-dist" share)))
+         (alist-cons-after
+          'patch-source-shebangs 'texmf-config
+          (lambda* (#:key inputs outputs #:allow-other-keys)
+            (let* ((share (string-append (assoc-ref outputs "out") "/share"))
+                   (texmfroot (string-append share "/texmf-dist/web2c"))
+                   (texmfcnf (string-append texmfroot "/texmf.cnf"))
+                   (texbin (string-append (assoc-ref inputs "texlive-bin")
+                            "/bin")))
+              ;; Register SHARE as TEXMFROOT in texmf.cnf.
+              (substitute* texmfcnf
+                (("TEXMFROOT = \\$SELFAUTOPARENT")
+                (string-append "TEXMFROOT = " share)))
+              ;; Configure the texmf-dist tree; inspired from
+              ;; http://slackbuilds.org/repository/13.37/office/texlive/
+              (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
+              (setenv "TEXMFCNF" texmfroot)
+              (system* "updmap-sys" "--nohash" "--syncwithtrees")
+              (system* "mktexlsr")
+              (system* "fmtutil-sys" "--all")))
+          (map (cut assq <> %standard-phases)
+               '(set-paths unpack patch-source-shebangs))))))
+   (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
 It includes all the major TeX-related programs, macro packages, and fonts
 that are free software, including support for many languages around the
-world.")
+world.
+
+This package contains the complete tree of texmf-dist data.")
+   (license (license:fsf-free "http://tug.org/texlive/copying.html"))
+   (home-page "http://www.tug.org/texlive/")))
+
+(define-public texlive
+  (package
+   (name "texlive")
+   (version "2014")
+   (source #f)
+   (build-system trivial-build-system)
+   (inputs `(("bash" ,bash) ; for wrap-program
+             ("texlive-bin" ,texlive-bin)
+             ("texlive-texmf" ,texlive-texmf)))
+   (arguments
+    `(#:modules ((guix build utils))
+      #:builder
+        ;; Build the union of texlive-bin and texlive-texmf, but take the
+        ;; conflicting subdirectory share/texmf-dist from texlive-texmf.
+        (begin
+          (use-modules (guix build utils))
+          (let ((out (assoc-ref %outputs "out"))
+                (bin (assoc-ref %build-inputs "texlive-bin"))
+                (texmf (assoc-ref %build-inputs "texlive-texmf"))
+                (bash (assoc-ref %build-inputs "bash")))
+               (mkdir out)
+               (with-directory-excursion out
+                 (for-each
+                   (lambda (name)
+                     (symlink (string-append bin "/" name) name))
+                   '("include" "lib"))
+                 (mkdir "bin")
+                 (with-directory-excursion "bin"
+                   (setenv "PATH" (string-append bash "/bin"))
+                   (for-each
+                     (lambda (name)
+                       (symlink name (basename name))
+                       (wrap-program
+                         (basename name)
+                         `("TEXMFCNF" =
+                           (,(string-append texmf "/share/texmf-dist/web2c")))))
+                     (find-files (string-append bin "/bin/") "")))
+                 (mkdir "share")
+                 (with-directory-excursion "share"
+                   (for-each
+                     (lambda (name)
+                       (symlink (string-append bin "/share/" name) name))
+                     '("info" "man" "tlpkg"))
+                   (for-each
+                     (lambda (name)
+                       (symlink (string-append texmf "/share/" name) name))
+                     '("texmf-dist" "texmf-var"))))))))
+   (synopsis "TeX Live, a package of the TeX typesetting system")
+   (description
+    "TeX Live provides a comprehensive TeX document production system.
+It includes all the major TeX-related programs, macro packages, and fonts
+that are free software, including support for many languages around the
+world.
+
+This package contains the complete TeX Live distribution.")
    (license (license:fsf-free "http://tug.org/texlive/copying.html"))
    (home-page "http://www.tug.org/texlive/")))
 
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
new file mode 100644
index 0000000000..5a8f9f09ea
--- /dev/null
+++ b/gnu/packages/textutils.scm
@@ -0,0 +1,85 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@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 textutils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages python))
+
+(define-public recode
+  (package
+    (name "recode")
+    ;; Last beta release (3.7-beta2) is from 2008; last commit from Feb 2014.
+    ;; So we use that commit instead.
+    (version "3.7.0.201402")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pinard/Recode.git")
+             (commit "2d7092a9999194fc0e9449717a8048c8d8e26c18")))
+       (sha256
+        (base32 "1wssv8z6g3ryrw33sksz4rjhlnhgvvdqszw1ggl4rcwks34n86zm"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("python" ,python-2)))
+    (arguments
+     '(#:phases
+       (alist-cons-before
+        'check 'fix-setup-py
+        (lambda _
+          (substitute* "tests/setup.py"
+            (("([[:space:]]*)include_dirs=.*" all space)
+             (string-append all space "library_dirs=['../src/.libs'],\n"))))
+        %standard-phases)))
+    (home-page "https://github.com/pinard/Recode")
+    (synopsis "Text encoding converter")
+    (description "The Recode library converts files between character sets and
+usages.  It recognises or produces over 200 different character sets (or about
+300 if combined with an iconv library) and transliterates files between almost
+any pair.  When exact transliteration are not possible, it gets rid of
+offending characters or falls back on approximations.  The recode program is a
+handy front-end to the library.")
+    (license license:gpl2+)))
+
+(define-public enca
+  (package
+    (name "enca")
+    (version "1.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/nijel/enca/archive/" version ".tar.gz"))
+       (sha256
+        (base32 "1xik00x0yvhswsw2isnclabhv536xk1s42cf5z54gfbpbhc7ni8l"))))
+    (build-system gnu-build-system)
+    (inputs `(("recode" ,recode)))
+
+    ;; Both 'test-convert-64.sh' and 'test-convert-filter.sh' manipulate a
+    ;; 'test.tmp' file, so they have to run in sequence.
+    (arguments '(#:parallel-tests? #f))
+
+    (home-page "https://github.com/nijel/enca")
+    (synopsis "Text encoding detection tool")
+    (description "Enca (Extremely Naive Charset Analyser) consists of libenca,
+an encoding detection library, and enca, a command line frontend, integrating
+libenca and several charset conversion libraries and tools.")
+    (license license:gpl2)))
diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm
index af798be21a..5e5a1d9069 100644
--- a/gnu/packages/valgrind.scm
+++ b/gnu/packages/valgrind.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +29,15 @@
 (define-public valgrind
   (package
     (name "valgrind")
-    (version "3.10.0")
+    (version "3.10.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://valgrind.org/downloads/valgrind-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1jgd42vsx0bcblp91bd61hd5wpy0gghh09wxgm65m666vy17y103"))))
+               "15xrzhfnwwn7n1sfbkwvdbvs6zk0zx718n6zd5i1nrnvdp13s9gs"))
+             (patches (list (search-patch "valgrind-glibc-2.21.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 7434ed97b4..5af2905eaa 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -46,6 +46,7 @@
   #:use-module (gnu packages linux)
 ;;   #:use-module (gnu packages gnutls)
   #:use-module (gnu packages nano)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -154,7 +155,7 @@ as well as the classic centralized workflow.")
              ;; TODO: Install the tcsh and zsh completions in the right place.
              (mkdir-p completions)
              (copy-file "contrib/completion/git-completion.bash"
-                        (string-append completions "/git.sh"))
+                        (string-append completions "/git"))
              #t))
          (alist-cons-after
           'install 'split
@@ -778,3 +779,28 @@ changes back into the master source of the program, with as little disruption
 as possible.  Resolution of contention for source files, a major headache for
 any project with more than one developer, is one of Aegis's major functions.")
     (license gpl3+)))
+
+(define-public tig
+  (package
+    (name "tig")
+    (version "2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://jonas.nitro.dk/tig/releases/tig-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1c1w6w39a1dwx4whrg0ga1mhrlz095hz875z7ajn6xgmhkv8fqih"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (arguments
+     `(#:tests? #f)) ; no tests implemented
+    (home-page "http://jonas.nitro.dk/tig/")
+    (synopsis "Ncurses-based text user interface for Git")
+    (description
+     "Tig is an ncurses text user interface for Git, primarily intended as
+a history browser.  It can also stage hunks for commit, or colorize the
+output of the 'git' command.")
+    (license gpl2+)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 87d98242d0..b1c0c52ee4 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,7 +22,8 @@
 (define-module (gnu packages video)
   #:use-module (ice-9 match)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ bsd-3 public-domain))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 public-domain
+                               fsf-free isc))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
@@ -30,10 +32,12 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages doxygen)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages fribidi)
@@ -48,6 +52,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages mp3)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -56,37 +61,166 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages textutils)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages yasm)
   #:use-module (gnu packages zip))
 
+(define-public liba52
+  (package
+    (name "liba52")
+    (version "0.7.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/liba52/a52dec-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"))))
+    (build-system gnu-build-system)
+    (home-page "http://liba52.sourceforge.net/")
+    (synopsis "ATSC A/52 stream decoder")
+    (description "liba52 is a library for decoding ATSC A/52 streams.  The
+A/52 standard is used in a variety of applications, including digital
+television and DVD.  It is also known as AC-3.")
+    (license gpl2+)))
+
+(define-public libass
+  (package
+    (name "libass")
+    (version "0.12.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/libass/libass/releases/download/"
+                    version "/libass-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1mwj2nk9g6cq6f8m1hf0ijg1299rghhy9naahqq43sc2whblb1l7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
+    (propagated-inputs
+     `(("freetype" ,freetype)
+       ("fribidi" ,fribidi)
+       ("fontconfig" ,fontconfig)
+       ("harfbuzz" ,harfbuzz)
+       ("enca" ,enca)))
+    (home-page "https://github.com/libass/libass")
+    (synopsis "Subtitle rendering library for the ASS/SSA format")
+    (description "libass is a subtitle rendering library for the
+ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
+    (license isc)))
+
+(define-public libcaca
+  (package
+    (name "libcaca")
+    (version "0.99.beta19")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://caca.zoy.org/files/libcaca/libcaca-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("freeglut" ,freeglut)
+       ("ftgl" ,ftgl)
+       ("libx11" ,libx11)
+       ("mesa" ,mesa)
+       ("ncurses" ,ncurses)
+       ("zlib" ,zlib)))
+    (home-page "http://caca.zoy.org/wiki/libcaca")
+    (synopsis "Colour ASCII-art library")
+    (description "libcaca is a graphics library that outputs text instead of
+pixels, so that it can work on older video cards or text terminals.  It
+supports Unicode, 2048 colors, dithering of color images, and advanced text
+canvas operations.")
+    (license (fsf-free "file://COPYING")))) ;WTFPL version 2
+
+(define-public libdca
+  (package
+    (name "libdca")
+    (version "0.0.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://download.videolan.org/pub/videolan/libdca/"
+                    version "/libdca-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.videolan.org/developers/libdca.html")
+    (synopsis "DTS Coherent Acoustics decoder")
+    (description "libdca is a library for decoding DTS Coherent Acoustics
+streams.")
+    (license gpl2+)))
+
+(define-public libdv
+  (package
+    (name "libdv")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/libdv/libdv-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs `(("libxv" ,libxv)))
+    (home-page "http://libdv.sourceforge.net/")
+    (synopsis "DV video (IEC 61834 and SMPTE 314M) codec")
+    (description "The Quasar DV codec (libdv) is a software codec for DV
+video, the encoding format used by most digital camcorders, typically those
+that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface.  Libdv was
+developed according to the official standards for DV video: IEC 61834 and
+SMPTE 314M.")
+    (license lgpl2.1+)))
+
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "2.5.4")
+    (version "2.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "11m2hbhdgphjxjp6hk438cxmipqjg5ixbr1kqnn9mbdhq9kc34fc"))))
+               "14a7zp8pa1rvw6nr9l2rf57xr004n5kwkhn5lglybjnn1p68xhr3"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
        ("opus" ,opus)
+       ("ladspa" ,ladspa)
        ("lame" ,lame)
+       ("libass" ,libass)
+       ("libbluray" ,libbluray)
+       ("libcaca" ,libcaca)
+       ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libquvi" ,libquvi)
        ("libtheora" ,libtheora)
        ("libvorbis" ,libvorbis)
        ("libvpx" ,libvpx)
+       ("openal" ,openal)
        ("patchelf" ,patchelf)
+       ("pulseaudio" ,pulseaudio)
        ("soxr" ,soxr)
        ("speex" ,speex)
        ("twolame" ,twolame)
+       ("xvid" ,xvid)
        ("zlib", zlib)))
     (native-inputs
      `(("bc" ,bc)
@@ -116,16 +250,14 @@
                 (("#! /bin/sh") (string-append "#!" (which "bash"))))
               (setenv "SHELL" (which "bash"))
               (setenv "CONFIG_SHELL" (which "bash"))
+               ;; FIXME: only needed for ffmpeg-2.2.13, but easier to add
+               ;; globally; drop as soon as ffmpeg-2.2.13 is dropped
+              (setenv "LDFLAGS" "-ldl")
 ;; possible additional inputs:
 ;;   --enable-avisynth        enable reading of AviSynth script files [no]
 ;;   --enable-frei0r          enable frei0r video filtering
-;;   --enable-ladspa          enable LADSPA audio filtering
 ;;   --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
-;;   --enable-libass          enable libass subtitles rendering [no]
-;;   --enable-libbluray       enable BluRay reading using libbluray [no]
-;;   --enable-libcaca         enable textual display using libcaca
 ;;   --enable-libcelt         enable CELT decoding via libcelt [no]
-;;   --enable-libcdio         enable audio CD grabbing with libcdio
 ;;   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
 ;;                            and libraw1394 [no]
 ;;   --enable-libfaac         enable AAC encoding via libfaac [no]
@@ -142,8 +274,6 @@
 ;;   --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
 ;;   --enable-libopencv       enable video filtering via libopencv [no]
 ;;   --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
-;;   --enable-libpulse        enable Pulseaudio input via libpulse [no]
-;;   --enable-libquvi         enable quvi input via libquvi [no]
 ;;   --enable-librtmp         enable RTMP[E] support via librtmp [no]
 ;;   --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
 ;;   --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
@@ -158,29 +288,36 @@
 ;;   --enable-libwavpack      enable wavpack encoding via libwavpack [no]
 ;;   --enable-libx264         enable H.264 encoding via x264 [no]
 ;;   --enable-libxavs         enable AVS encoding via xavs [no]
-;;   --enable-libxvid         enable Xvid encoding via xvidcore,
-;;                            native MPEG-4/Xvid encoder exists [no]
 ;;   --enable-libzmq          enable message passing via libzmq [no]
 ;;   --enable-libzvbi         enable teletext support via libzvbi [no]
-;;   --enable-openal          enable OpenAL 1.1 capture support [no]
 ;;   --enable-opencl          enable OpenCL code
 ;;   --enable-x11grab         enable X11 grabbing [no]
               (zero? (system*
                       "./configure"
                       (string-append "--prefix=" out)
+                      "--enable-avresample"
                       "--enable-gpl" ; enable optional gpl licensed parts
                       "--enable-shared"
                       "--enable-fontconfig"
                       ;; "--enable-gnutls" ; causes test failures
+                      "--enable-ladspa"
+                      "--enable-libass"
+                      "--enable-libbluray"
+                      "--enable-libcaca"
+                      "--enable-libcdio"
                       "--enable-libfreetype"
                       "--enable-libmp3lame"
                       "--enable-libopus"
+                      "--enable-libpulse"
+                      "--enable-libquvi"
                       "--enable-libsoxr"
                       "--enable-libspeex"
                       "--enable-libtheora"
                       "--enable-libtwolame"
                       "--enable-libvorbis"
                       "--enable-libvpx"
+                      "--enable-libxvid"
+                      "--enable-openal"
 
                       "--enable-runtime-cpudetect"
 
@@ -223,7 +360,7 @@ audio/video codec library.")
 (define-public vlc
   (package
     (name "vlc")
-    (version "2.2.0")
+    (version "2.1.5")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -231,7 +368,7 @@ audio/video codec library.")
                    version "/vlc-" version ".tar.xz"))
              (sha256
               (base32
-               "05smn9hqdp7iscc1dj4cxp1mrlad7b50lhlnlqisfzf493i2f2jy"))))
+               "0whzbn7ahn5maarcwl1yhk9lq10b0q0y9w5pjl9kh3frdjmncrbg"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("git" ,git) ; needed for a test
@@ -446,6 +583,34 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 YouTube.com and a few more sites.")
     (license public-domain)))
 
+(define-public libbluray
+  (package
+    (name "libbluray")
+    (version "0.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.videolan.org/videolan/"
+                                  name "/" version "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "13dngs4b4cv29f6b825dq14n77mfhvk1kjb42axpq494pfgyp6zp"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("doxygen" ,doxygen)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("libxml2" ,libxml2)
+       ("perl" ,perl)                   ;for doxygen
+       ("texlive" ,texlive)))
+    (home-page "http://www.videolan.org/developers/libbluray.html")
+    (synopsis "Blu-Ray Disc playback library")
+    (description
+     "libbluray is a library designed for Blu-Ray Disc playback for media
+players, like VLC or MPlayer.")
+    (license lgpl2.1+)))
+
 (define-public libdvdread
   (package
     (name "libdvdread")
@@ -501,6 +666,52 @@ DVD virtual machine and internal playback states are completely
 encapsulated.")
     (license gpl2+)))
 
+(define-public libdvdnav-4
+  (package
+    (inherit libdvdnav)
+    (version "4.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "http://download.videolan.org/videolan/libdvdnav/libdvdnav-"
+                version ".tar.xz"))
+              (sha256
+               (base32
+                "0wi3gy408c8xj0ism0hckv5jbfh3lg4pmgxv87gbch9jrhp2gjkz"))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (arguments
+     '(#:phases
+       (alist-cons-after
+        'unpack 'autoreconf
+        (lambda _
+          (zero? (system* "autoreconf" "-vif")))
+        %standard-phases)))))
+
+(define-public libdvdcss
+  (package
+    (name "libdvdcss")
+    (version "1.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.videolan.org/videolan/"
+                                  name "/" version "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "158k9zagmbk5bkbz96l6lwhh7xcgfcnzflkr4vblskhcab6llhbw"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.videolan.org/developers/libdvdcss.html")
+    (synopsis "Library for accessing DVDs as block devices")
+    (description
+     "libdvdcss is a simple library designed for accessing DVDs like a block
+device without having to bother about the decryption.")
+    (license gpl2+)))
+
 (define-public srt2vtt
   (package
     (name "srt2vtt")
@@ -726,3 +937,36 @@ capabilities.")
                   (string-append out "/share/ADM_addons"))))
             (alist-delete 'install
                %standard-phases)))))))))
+
+(define-public xvid
+  (package
+    (name "xvid")
+    (version "1.3.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.xvid.org/downloads/xvidcore-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "0m5g75qvapr7xpywg6a83v5x19kw1nm9l2q48lg7jvvpba0bmqdh"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("yasm" ,yasm)))
+    (arguments
+     '(#:phases
+       (alist-cons-before
+        'configure 'pre-configure
+        (lambda _
+          (chdir "build/generic")
+          (substitute* "configure"
+            (("#! /bin/sh") (string-append "#!" (which "sh")))))
+        %standard-phases)
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "https://www.xvid.com/")
+    (synopsis "MPEG-4 Part 2 Advanced Simple Profile video codec")
+    (description "Xvid is an MPEG-4 Part 2 Advanced Simple Profile (ASP) video
+codec library.  It uses ASP features such as b-frames, global and quarter
+pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG
+and custom quantization matrices.")
+    (license gpl2+)))
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 9ff8b63895..5883f99505 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gnutls)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -95,17 +96,17 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
 (define-public openconnect
   (package
    (name "openconnect")
-   (version "4.99")
+   (version "7.05")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/"
                                 "openconnect-" version ".tar.gz"))
             (sha256 (base32
-                     "1rd8pap455wzkx19i0sy3cqap524b6fwcjvqynxp6lhm01di4bd6"))))
+                     "1i102yr8yp2ny587n6pd966443h1pqxyw5q0n5afq575046jj98g"))))
    (build-system gnu-build-system)
    (inputs
     `(("libxml2" ,libxml2)
-      ("openssl" ,openssl)
+      ("gnutls" ,gnutls)
       ("vpnc" ,vpnc)
       ("zlib" ,zlib)))
    (native-inputs
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 8754ecee8b..62adab3952 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -36,11 +37,14 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages base)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages perl)
@@ -322,25 +326,378 @@ used to validate and fix HTML data.")
     (home-page "http://tidy.sourceforge.net/")
     (license (l:x11-style "file:///include/tidy.h"))))
 
-(define-public perl-html-tagset
+(define-public tinyproxy
   (package
-    (name "perl-html-tagset")
-    (version "3.20")
+    (name "tinyproxy")
+    (version "1.8.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.samba.org/~obnox/" name "/download/"
+                    name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0vl9igw7vm924rs6d6bkib7zfclxnlf9s8rmml1sfwj7xda9nmdy"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        ;; For the log file, etc.
+        "--localstatedir=/var")
+       #:phases
+       (alist-cons-before
+        'build 'pre-build
+        (lambda* (#:key inputs #:allow-other-keys #:rest args)
+          ;; Uncommenting the next two lines may assist in debugging
+          ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
+          ;; (setenv "XML_DEBUG_CATALOG" "1")
+          #t)
+        %standard-phases)))
+    ;; All of the below are used to generate the documentation
+    ;; (Should they be propagated inputs of asciidoc ??)
+    (native-inputs `(("asciidoc" ,asciidoc)
+                     ("libxml2" ,libxml2) 
+                     ("docbook-xml" ,docbook-xml)
+                     ("docbook-xsl" ,docbook-xsl)
+                     ("libxslt" ,libxslt)))
+    (home-page "https://banu.com/tinyproxy/")
+    (synopsis "Light-weight HTTP/HTTPS proxy daemon")
+    (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
+daemon.  Designed from the ground up to be fast and yet small, it is an ideal
+solution for use cases such as embedded deployments where a full featured HTTP
+proxy is required, but the system resources for a larger proxy are
+unavailable.")
+    (license l:gpl2+)))
+
+(define-public polipo
+  (package
+    (name "polipo")
+    (version "1.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
+    (native-inputs `(("texinfo" ,texinfo)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (alist-delete 'configure %standard-phases)
+       #:make-flags (let ((out (assoc-ref %outputs "out")))
+                      (list (string-append "PREFIX=" out)
+                            (string-append "LOCAL_ROOT="
+                                           out "/share/polipo/www")
+                            "CC=gcc"))
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
+    (synopsis "Small caching web proxy")
+    (description
+     "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
+server).  It was primarily designed to be used by one person or a small group
+of people.")
+    (license l:expat)))
+
+(define-public libyaml
+  (package
+    (name "libyaml")
+    (version "0.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://pyyaml.org/download/libyaml/yaml-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1vrv5ly58bkmcyc049ad180f2m8iav6l9h3v8l2fqdmrny7yx1zs"))))
+    (build-system gnu-build-system)
+    (home-page "http://pyyaml.org/wiki/LibYAML")
+    (synopsis "YAML 1.1 parser and emitter written in C")
+    (description
+     "LibYAML is a YAML 1.1 parser and emitter written in C.")
+    (license l:expat)))
+
+(define-public libquvi-scripts
+  (package
+    (name "libquvi-scripts")
+    (version "0.4.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/quvi/libquvi-scripts-" version ".tar.xz"))
+       (sha256
+        (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
+    (build-system gnu-build-system)
+    (home-page "http://quvi.sourceforge.net/")
+    (synopsis "Media stream URL parser")
+    (description "This package contains support scripts called by libquvi to
+parse media stream properties.")
+    (license l:lgpl2.1+)))
+
+(define-public libquvi
+  (package
+    (name "libquvi")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/quvi/libquvi-" version ".tar.xz"))
+       (sha256
+        (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("libquvi-scripts" ,libquvi-scripts)
+       ("lua" ,lua-5.1)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (arguments
+     ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
+     '(#:configure-flags
+       (let ((lua (assoc-ref %build-inputs "lua")))
+         (list
+          (string-append "liblua_CFLAGS=-I" lua "/include")
+          (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
+    (home-page "http://quvi.sourceforge.net/")
+    (synopsis "Media stream URL parser")
+    (description "libquvi is a library with a C API for parsing media stream
+URLs and extracting their actual media files.")
+    (license l:lgpl2.1+)))
+
+(define-public quvi
+  (package
+    (name "quvi")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/quvi/quvi-" version ".tar.xz"))
+       (sha256
+        (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("libquvi" ,libquvi)))
+    (home-page "http://quvi.sourceforge.net/")
+    (synopsis "Media stream URL parser")
+    (description "quvi is a command-line-tool suite to extract media files
+from streaming URLs.  It is a command-line wrapper for the libquvi library.")
+    (license l:lgpl2.1+)))
+
+
+(define-public perl-apache-logformat-compiler
+  (package
+    (name "perl-apache-logformat-compiler")
+    (version "0.32")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
+                           "Apache-LogFormat-Compiler-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0zyx4r2bxc6d48m70fhcq80nw0q9wnfz6qgn1g0r6bigqgdjq4dw"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-http-message" ,perl-http-message)
+       ("perl-test-mocktime" ,perl-test-mocktime)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-uri" ,perl-uri)))
+    (propagated-inputs
+     `(("perl-posix-strftime-compiler" ,perl-posix-strftime-compiler)))
+    (arguments `(#:tests? #f))          ;TODO: Timezone test failures
+    (home-page "http://search.cpan.org/dist/Apache-LogFormat-Compiler")
+    (synopsis "Compile a log format string to perl-code")
+    (description "This module provides methods to compile a log format string
+to perl-code, for faster generation of access_log lines.")
+    (license (package-license perl))))
+
+(define-public perl-catalyst-runtime
+  (package
+    (name "perl-catalyst-runtime")
+    (version "5.90082")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
+                           "Catalyst-Runtime-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1gs70nq4rikpq6siwds9disb1z03vwjzf979xi9kf7saa1drfncs"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-fatal" ,perl-test-fatal)))
+    (propagated-inputs
+     `(("perl-cgi-simple" ,perl-cgi-simple)
+       ("perl-cgi-struct" ,perl-cgi-struct)
+       ("perl-class-c3-adopt-next" ,perl-class-c3-adopt-next)
+       ("perl-class-data-inheritable" ,perl-class-data-inheritable)
+       ("perl-class-date" ,perl-class-date)
+       ("perl-class-load" ,perl-class-load)
+       ("perl-data-dump" ,perl-data-dump)
+       ("perl-http-body" ,perl-http-body)
+       ("perl-http-message" ,perl-http-message)
+       ("perl-http-request-ascgi" ,perl-http-request-ascgi)
+       ("perl-io-stringy" ,perl-io-stringy)
+       ("perl-json-maybexs" ,perl-json-maybexs)
+       ("perl-libwww" ,perl-libwww)
+       ("perl-moose" ,perl-moose)
+       ("perl-moosex-emulate-class-accessor-fast"
+        ,perl-moosex-emulate-class-accessor-fast)
+       ("perl-moosex-getopt" ,perl-moosex-getopt)
+       ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)
+       ("perl-moosex-role-withoverloading" ,perl-moosex-role-withoverloading)
+       ("perl-namespace-autoclean" ,perl-namespace-autoclean)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-plack" ,perl-plack)
+       ("perl-plack-middleware-fixmissingbodyinredirect"
+        ,perl-plack-middleware-fixmissingbodyinredirect)
+       ("perl-plack-middleware-methodoverride"
+        ,perl-plack-middleware-methodoverride)
+       ("perl-plack-middleware-removeredundantbody"
+        ,perl-plack-middleware-removeredundantbody)
+       ("perl-plack-middleware-reverseproxy"
+        ,perl-plack-middleware-reverseproxy)
+       ("perl-plack-test-externalserver" ,perl-plack-test-externalserver)
+       ("perl-safe-isa" ,perl-safe-isa)
+       ("perl-string-rewriteprefix" ,perl-string-rewriteprefix)
+       ("perl-text-simpletable" ,perl-text-simpletable)
+       ("perl-tree-simple" ,perl-tree-simple)
+       ("perl-tree-simple-visitorfactory" ,perl-tree-simple-visitorfactory)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-uri" ,perl-uri)
+       ("perl-uri-ws" ,perl-uri-ws)))
+    (home-page "http://search.cpan.org/dist/Catalyst-Runtime")
+    (synopsis "The Catalyst Framework Runtime")
+    (description "Catalyst is a modern framework for making web applications.
+It is designed to make it easy to manage the various tasks you need to do to
+run an application on the web, either by doing them itself, or by letting you
+\"plug in\" existing Perl modules that do what you need.")
+    (license (package-license perl))))
+
+(define-public perl-cgi-simple
+  (package
+    (name "perl-cgi-simple")
+    (version "1.115")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/"
+                           "CGI-Simple-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nkyb1m1g5r47xykflf68dplanih5p15njv82frbgbsms34kp1sg"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-io-stringy" ,perl-io-stringy))) ;for IO::Scalar
+    (home-page "http://search.cpan.org/dist/CGI-Simple")
+    (synopsis "CGI interface that is CGI.pm compliant")
+    (description "CGI::Simple provides a relatively lightweight drop in
+replacement for CGI.pm.  It shares an identical OO interface to CGI.pm for
+parameter parsing, file upload, cookie handling and header generation.")
+    (license (package-license perl))))
+
+(define-public perl-cgi-struct
+  (package
+    (name "perl-cgi-struct")
+    (version "1.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
+                           "CGI-Struct-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)))
+    (home-page "http://search.cpan.org/dist/CGI-Struct")
+    (synopsis "Build structures from CGI data")
+    (description "This is a module for building structured data from CGI
+inputs, in a manner reminiscent of how PHP does.")
+    (license l:bsd-2)))
+
+(define-public perl-cpanel-json-xs
+  (package
+    (name "perl-cpanel-json-xs")
+    (version "3.0114")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
+                           "Cpanel-JSON-XS-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jhi1v0631x4d14a7cpfnpjqhs34zkygxjn1nwvvr927awx5jx71"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-common-sense" ,perl-common-sense)))
+    (home-page "http://search.cpan.org/dist/Cpanel-JSON-XS")
+    (synopsis "JSON::XS for Cpanel")
+    (description "This module converts Perl data structures to JSON and vice
+versa.")
+    (license (package-license perl))))
+
+(define-public perl-encode-locale
+  (package
+    (name "perl-encode-locale")
+    (version "1.03")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
+               "0m9d1vdphlyzybgmdanipwd9ndfvyjgk3hzw250r299jjgh3fqzp"))))
     (build-system perl-build-system)
     (license (package-license perl))
-    (synopsis "Perl data tables useful in parsing HTML")
+    (synopsis "Perl locale encoding determination")
     (description
-     "The HTML::Tagset module contains several data tables useful in various
-kinds of HTML parsing operations.")
-    (home-page "http://search.cpan.org/dist/HTML-Tagset/")))
+     "The POSIX locale system is used to specify both the language
+conventions requested by the user and the preferred character set to consume
+and output.  The Encode::Locale module looks up the charset and encoding
+(called a CODESET in the locale jargon) and arranges for the Encode module
+to know this encoding under the name \"locale\".  It means bytes obtained
+from the environment can be converted to Unicode strings by calling
+Encode::encode(locale => $bytes) and converted back again with
+Encode::decode(locale => $string).")
+    (home-page "http://search.cpan.org/~gaas/Encode-Locale/")))
+
+(define-public perl-file-listing
+  (package
+    (name "perl-file-listing")
+    (version "6.04")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://cpan/authors/id/G/GA/GAAS/File-Listing-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "1xcwjlnxaiwwpn41a5yi6nz95ywh3szq5chdxiwj36kqsvy5000y"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-http-date" ,perl-http-date)))
+    (license (package-license perl))
+    (synopsis "Perl directory listing parser")
+    (description
+     "The File::Listing module exports a single function called parse_dir(),
+which can be used to parse directory listings.")
+    (home-page "http://search.cpan.org/~gaas/File-Listing/")))
 
 (define-public perl-html-parser
   (package
@@ -366,89 +723,143 @@ kinds of markup and text are recognized, the corresponding event handlers
 are invoked.")
     (home-page "http://search.cpan.org/~gaas/HTML-Parser/")))
 
-(define-public perl-http-date
+(define-public perl-html-tagset
   (package
-    (name "perl-http-date")
-    (version "6.02")
+    (name "perl-html-tagset")
+    (version "3.20")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Date-"
+                   "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "0cz357kafhhzw7w59iyi0wvhw7rlh5g1lh38230ckw7rl0fr9fg8"))))
+               "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
     (build-system perl-build-system)
     (license (package-license perl))
-    (synopsis "Perl date conversion routines")
+    (synopsis "Perl data tables useful in parsing HTML")
     (description
-     "The HTTP::Date module provides functions that deal with date formats
-used by the HTTP protocol (and then some more).")
-    (home-page "http://search.cpan.org/~gaas/HTTP-Date/")))
+     "The HTML::Tagset module contains several data tables useful in various
+kinds of HTML parsing operations.")
+    (home-page "http://search.cpan.org/dist/HTML-Tagset/")))
 
-(define-public perl-uri
+(define-public perl-http-body
   (package
-    (name "perl-uri")
-    (version "1.60")
+    (name "perl-http-body")
+    (version "1.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
+                           "HTTP-Body-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ahhksj0zg6wq6glpjkxdr3byd5riwvq2f5aw21n1jcsl71nll01"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)))
+    (propagated-inputs
+     `(("perl-file-temp" ,perl-file-temp)
+       ("perl-http-message" ,perl-http-message))) ;For HTTP::Headers
+    (home-page "http://search.cpan.org/dist/HTTP-Body")
+    (synopsis "HTTP Body Parser")
+    (description "HTTP::Body parses chunks of HTTP POST data and supports
+application/octet-stream, application/json, application/x-www-form-urlencoded,
+and multipart/form-data.")
+    (license (package-license perl))))
+
+(define-public perl-http-cookiejar
+  (package
+    (name "perl-http-cookiejar")
+    (version "0.006")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "HTTP-CookieJar-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0c7l29ak6ba2j006ca00vnkxpyc1fvpikydjvsb24s50zf1mv7b2"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-time-mock" ,perl-time-mock)))
+    (inputs
+     `(("perl-time-local" ,perl-time-local)
+       ("perl-http-date" ,perl-http-date)))
+    (home-page "http://search.cpan.org/dist/HTTP-CookieJar")
+    (synopsis "Minimalist HTTP user agent cookie jar")
+    (description "This module implements a minimalist HTTP user agent cookie
+jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
+    (license l:asl2.0)))
+
+(define-public perl-http-cookies
+  (package
+    (name "perl-http-cookies")
+    (version "6.01")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/URI-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Cookies-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "0xr31mf7lfrwhyvlx4pzp6p7alls5gi4bj8pk5g89f5cckfd74hz"))))
+               "087bqmg22dg3vj7gssh3pcsh9y1scimkbl5h1kc8jqyfhgisvlzm"))))
     (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-http-message" ,perl-http-message)))
     (license (package-license perl))
-    (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
+    (synopsis "Perl HTTP cookie jars")
     (description
-     "The URI module implements the URI class.  Objects of this class
-represent \"Uniform Resource Identifier references\" as specified in RFC 2396
-(and updated by RFC 2732).")
-    (home-page "http://search.cpan.org/~gaas/URI/")))
+     "The HTTP::Cookies class is for objects that represent a cookie jar,
+that is, a database of all the HTTP cookies that a given LWP::UserAgent
+object knows about.")
+    (home-page "http://search.cpan.org/~gaas/HTTP-Cookies/")))
 
-(define-public perl-lwp-mediatypes
+(define-public perl-http-daemon
   (package
-    (name "perl-lwp-mediatypes")
-    (version "6.02")
+    (name "perl-http-daemon")
+    (version "6.01")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/LWP-MediaTypes-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "0xmnblp962qy02akah30sji8bxrqcyqlff2w95l199ghql60ny8q"))))
+               "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3"))))
     (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-http-message" ,perl-http-message)
+       ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
     (license (package-license perl))
-    (synopsis "Perl module to guess the media type for a file or a URL")
+    (synopsis "Perl simple http server class")
     (description
-     "The LWP::MediaTypes module provides functions for handling media (also
-known as MIME) types and encodings.  The mapping from file extensions to
-media types is defined by the media.types file.  If the ~/.media.types file
-exists it is used instead.")
-    (home-page "http://search.cpan.org/~gaas/LWP-MediaTypes/")))
+     "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
+on a socket for incoming requests.  The HTTP::Daemon is a subclass of
+IO::Socket::INET, so you can perform socket operations directly on it too.")
+    (home-page "http://search.cpan.org/~gaas/HTTP-Daemon/")))
 
-(define-public perl-io-html
+(define-public perl-http-date
   (package
-    (name "perl-io-html")
-    (version "1.00")
+    (name "perl-http-date")
+    (version "6.02")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Date-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
+               "0cz357kafhhzw7w59iyi0wvhw7rlh5g1lh38230ckw7rl0fr9fg8"))))
     (build-system perl-build-system)
     (license (package-license perl))
-    (synopsis "Perl module to open an HTML file with automatic charset detection")
+    (synopsis "Perl date conversion routines")
     (description
-     "IO::HTML provides an easy way to open a file containing HTML while
-automatically determining its encoding.  It uses the HTML5 encoding sniffing
-algorithm specified in section 8.2.2.1 of the draft standard.")
-    (home-page "http://search.cpan.org/~cjm/IO-HTML/")))
+     "The HTTP::Date module provides functions that deal with date formats
+used by the HTTP protocol (and then some more).")
+    (home-page "http://search.cpan.org/~gaas/HTTP-Date/")))
 
 (define-public perl-http-message
   (package
@@ -465,113 +876,230 @@ algorithm specified in section 8.2.2.1 of the draft standard.")
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-date" ,perl-http-date)
+       ("perl-io-html" ,perl-io-html)
+       ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
        ("perl-uri" ,perl-uri)))
-    (inputs
-     `(("perl-io-html" ,perl-io-html)
-       ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
     (license (package-license perl))
     (synopsis "Perl HTTP style message")
     (description
      "An HTTP::Message object contains some headers and a content body.")
     (home-page "http://search.cpan.org/~gaas/HTTP-Message/")))
 
-(define-public perl-http-cookies
+(define-public perl-http-negotiate
   (package
-    (name "perl-http-cookies")
+    (name "perl-http-negotiate")
     (version "6.01")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Cookies-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "087bqmg22dg3vj7gssh3pcsh9y1scimkbl5h1kc8jqyfhgisvlzm"))))
+               "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)))
     (license (package-license perl))
-    (synopsis "Perl HTTP cookie jars")
+    (synopsis "Perl http content negotiation")
     (description
-     "The HTTP::Cookies class is for objects that represent a cookie jar,
-that is, a database of all the HTTP cookies that a given LWP::UserAgent
-object knows about.")
-    (home-page "http://search.cpan.org/~gaas/HTTP-Cookies/")))
+     "The HTTP::Negotiate module provides a complete implementation of the
+HTTP content negotiation algorithm specified in
+draft-ietf-http-v11-spec-00.ps chapter 12.  Content negotiation allows for
+the selection of a preferred content representation based upon attributes
+of the negotiable variants and the value of the various Accept* header
+fields in the request.")
+    (home-page "http://search.cpan.org/~gaas/HTTP-Negotiate/")))
 
-(define-public perl-http-daemon
+(define-public perl-http-request-ascgi
   (package
-    (name "perl-http-daemon")
-    (version "6.01")
+    (name "perl-http-request-ascgi")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+                           "HTTP-Request-AsCGI-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-class-accessor" ,perl-class-accessor)
+       ("perl-http-message" ,perl-http-message)))
+    (home-page "http://search.cpan.org/dist/HTTP-Request-AsCGI")
+    (synopsis "Set up a CGI environment from an HTTP::Request")
+    (description "This module provides a convenient way to set up a CGI
+environment from an HTTP::Request.")
+    (license (package-license perl))))
+
+(define-public perl-http-tiny
+  (package
+    (name "perl-http-tiny")
+    (version "0.053")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
+                           "HTTP-Tiny-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bwy31xrcz5zfx1n3vc50vj1aqvzn5ccr7lgacl8wmi03a6w2af2"))))
+    (build-system perl-build-system)
+    (inputs
+     `(("perl-http-cookiejar" ,perl-http-cookiejar)
+       ("perl-io-socket-ip" ,perl-io-socket-ip)
+       ("perl-io-socket-ssl" ,perl-io-socket-ssl)
+       ("perl-net-ssleay" ,perl-net-ssleay)))
+    (home-page "http://search.cpan.org/dist/HTTP-Tiny")
+    (synopsis "HTTP/1.1 client")
+    (description "This is a very simple HTTP/1.1 client, designed for doing
+simple requests without the overhead of a large framework like LWP::UserAgent.
+It supports proxies and redirection.  It also correctly resumes after EINTR.")
+    (license (package-license perl))))
+
+(define-public perl-io-html
+  (package
+    (name "perl-io-html")
+    (version "1.00")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-"
+                   "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3"))))
+               "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
     (build-system perl-build-system)
-    (propagated-inputs
-     `(("perl-http-message" ,perl-http-message)
-       ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
     (license (package-license perl))
-    (synopsis "Perl simple http server class")
+    (synopsis "Perl module to open an HTML file with automatic charset detection")
     (description
-     "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
-on a socket for incoming requests.  The HTTP::Daemon is a subclass of
-IO::Socket::INET, so you can perform socket operations directly on it too.")
-    (home-page "http://search.cpan.org/~gaas/HTTP-Daemon/")))
+     "IO::HTML provides an easy way to open a file containing HTML while
+automatically determining its encoding.  It uses the HTML5 encoding sniffing
+algorithm specified in section 8.2.2.1 of the draft standard.")
+    (home-page "http://search.cpan.org/~cjm/IO-HTML/")))
 
-(define-public perl-http-negotiate
+(define-public perl-io-socket-ip
   (package
-    (name "perl-http-negotiate")
-    (version "6.01")
+    (name "perl-io-socket-ip")
+    (version "0.36")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
+                           "IO-Socket-IP-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ky20hmln6waipzqikizyw04vpszf70fgpshz7ib8zv8480ri456"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/IO-Socket-IP")
+    (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
+    (description "This module provides a protocol-independent way to use IPv4
+and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
+    (license (package-license perl))))
+
+(define-public perl-io-socket-ssl
+  (package
+    (name "perl-io-socket-ssl")
+    (version "2.002")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
+                                  "IO-Socket-SSL-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1mph52lw6x5v44wf8mw00llzi8pp6k5c4jnrnrvlacrlfv260jb8"))))
+    (build-system perl-build-system)
+    (propagated-inputs `(("perl-net-ssleay" ,perl-net-ssleay)))
+    (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
+    (description
+     "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
+necessary functionality into the familiar IO::Socket interface and providing
+secure defaults whenever possible.  This way existing applications can be made
+SSL-aware without much effort, at least if you do blocking I/O and don't use
+select or poll.")
+    (license (package-license perl))
+    (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
+
+(define-public perl-json-maybexs
+  (package
+    (name "perl-json-maybexs")
+    (version "1.003003")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                           "JSON-MaybeXS-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0q21wzz87drrvblxcm2py8fcvkzwx1hxzfybynz8ln7wv66vbx3f"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-without-module" ,perl-test-without-module)))
+    (inputs
+     `(("perl-cpanel-json-xs" ,perl-cpanel-json-xs)))
+    (home-page "http://search.cpan.org/dist/JSON-MaybeXS")
+    (synopsis "Cpanel::JSON::XS with fallback")
+    (description "This module first checks to see if either Cpanel::JSON::XS
+or JSON::XS is already loaded, in which case it uses that module.  Otherwise
+it tries to load Cpanel::JSON::XS, then JSON::XS, then JSON::PP in order, and
+either uses the first module it finds or throws an error.")
+    (license (package-license perl))))
+
+(define-public perl-libwww
+  (package
+    (name "perl-libwww")
+    (version "6.05")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/libwww-perl-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
+               "08wgwyz7748pv5cyngxia0xl6nragfnhrp4p9s78xhgfyygpj9bv"))))
     (build-system perl-build-system)
     (propagated-inputs
-     `(("perl-http-message" ,perl-http-message)))
+     `(("perl-encode-locale" ,perl-encode-locale)
+       ("perl-file-listing" ,perl-file-listing)
+       ("perl-html-parser" ,perl-html-parser)
+       ("perl-http-cookies" ,perl-http-cookies)
+       ("perl-http-daemon" ,perl-http-daemon)
+       ("perl-http-negotiate" ,perl-http-negotiate)
+       ("perl-net-http" ,perl-net-http)
+       ("perl-www-robotrules" ,perl-www-robotrules)))
     (license (package-license perl))
-    (synopsis "Perl http content negotiation")
+    (synopsis "Perl modules for the WWW")
     (description
-     "The HTTP::Negotiate module provides a complete implementation of the
-HTTP content negotiation algorithm specified in
-draft-ietf-http-v11-spec-00.ps chapter 12.  Content negotiation allows for
-the selection of a preferred content representation based upon attributes
-of the negotiable variants and the value of the various Accept* header
-fields in the request.")
-    (home-page "http://search.cpan.org/~gaas/HTTP-Negotiate/")))
+     "The libwww-perl collection is a set of Perl modules which provides a
+simple and consistent application programming interface to the
+World-Wide Web.  The main focus of the library is to provide classes
+and functions that allow you to write WWW clients.  The library also
+contains modules that are of more general use and even classes that
+help you implement simple HTTP servers.")
+    (home-page "http://search.cpan.org/~gaas/libwww-perl/")))
 
-(define-public perl-www-robotrules
+(define-public perl-lwp-mediatypes
   (package
-    (name "perl-www-robotrules")
+    (name "perl-lwp-mediatypes")
     (version "6.02")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
+                   "mirror://cpan/authors/id/G/GA/GAAS/LWP-MediaTypes-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
+               "0xmnblp962qy02akah30sji8bxrqcyqlff2w95l199ghql60ny8q"))))
     (build-system perl-build-system)
-    (propagated-inputs
-     `(("perl-uri" ,perl-uri)))
     (license (package-license perl))
-    (synopsis "Perl database of robots.txt-derived permissions")
+    (synopsis "Perl module to guess the media type for a file or a URL")
     (description
-     "The WWW::RobotRules module parses /robots.txt files as specified in
-\"A Standard for Robot Exclusion\", at
-<http://www.robotstxt.org/wc/norobots.html>.  Webmasters can use the
-/robots.txt file to forbid conforming robots from accessing parts of
-their web site.")
-    (home-page "http://search.cpan.org/~gaas/WWW-RobotRules/")))
+     "The LWP::MediaTypes module provides functions for handling media (also
+known as MIME) types and encodings.  The mapping from file extensions to
+media types is defined by the media.types file.  If the ~/.media.types file
+exists it is used instead.")
+    (home-page "http://search.cpan.org/~gaas/LWP-MediaTypes/")))
 
 (define-public perl-net-http
   (package
@@ -595,129 +1123,222 @@ is described in RFC 2616.  The Net::HTTP class supports HTTP/1.0 and
 HTTP/1.1.")
     (home-page "http://search.cpan.org/~gaas/Net-HTTP/")))
 
-(define-public perl-file-listing
+(define-public perl-plack
   (package
-    (name "perl-file-listing")
-    (version "6.04")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/File-Listing-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "1xcwjlnxaiwwpn41a5yi6nz95ywh3szq5chdxiwj36kqsvy5000y"))))
+    (name "perl-plack")
+    (version "1.0033")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Plack-" version ".tar.gz"))
+       (sha256
+        (base32
+         "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
     (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-requires" ,perl-test-requires)
+       ("perl-file-sharedir-install" ,perl-file-sharedir-install)))
     (propagated-inputs
-     `(("perl-http-date" ,perl-http-date)))
-    (license (package-license perl))
-    (synopsis "Perl directory listing parser")
-    (description
-     "The File::Listing module exports a single function called parse_dir(),
-which can be used to parse directory listings.")
-    (home-page "http://search.cpan.org/~gaas/File-Listing/")))
+     `(("perl-apache-logformat-compiler" ,perl-apache-logformat-compiler)
+       ("perl-devel-stacktrace" ,perl-devel-stacktrace)
+       ("perl-devel-stacktrace-ashtml" ,perl-devel-stacktrace-ashtml)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-hash-multivalue" ,perl-hash-multivalue)
+       ("perl-http-body" ,perl-http-body)
+       ("perl-http-message" ,perl-http-message)
+       ("perl-http-tiny" ,perl-http-tiny)
+       ("perl-libwww" ,perl-libwww)
+       ("perl-stream-buffered" ,perl-stream-buffered)
+       ("perl-test-tcp" ,perl-test-tcp)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-uri" ,perl-uri)))
+    (home-page "http://search.cpan.org/dist/Plack")
+    (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
+    (description "Plack is a set of tools for using the PSGI stack.  It
+contains middleware components, a reference server, and utilities for Web
+application frameworks.  Plack is like Ruby's Rack or Python's Paste for
+WSGI.")
+    (license (package-license perl))))
 
-(define-public perl-encode-locale
+(define-public perl-plack-middleware-fixmissingbodyinredirect
   (package
-    (name "perl-encode-locale")
-    (version "1.03")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "0m9d1vdphlyzybgmdanipwd9ndfvyjgk3hzw250r299jjgh3fqzp"))))
+    (name "perl-plack-middleware-fixmissingbodyinredirect")
+    (version "0.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
+                           "Plack-Middleware-FixMissingBodyInRedirect-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
     (build-system perl-build-system)
-    (license (package-license perl))
-    (synopsis "Perl locale encoding determination")
-    (description
-     "The POSIX locale system is used to specify both the language
-conventions requested by the user and the preferred character set to consume
-and output.  The Encode::Locale module looks up the charset and encoding
-(called a CODESET in the locale jargon) and arranges for the Encode module
-to know this encoding under the name \"locale\".  It means bytes obtained
-from the environment can be converted to Unicode strings by calling
-Encode::encode(locale => $bytes) and converted back again with
-Encode::decode(locale => $string).")
-    (home-page "http://search.cpan.org/~gaas/Encode-Locale/")))
+    (native-inputs
+     `(("perl-html-parser" ,perl-html-parser) ;for HTML::Entities
+       ("perl-http-message" ,perl-http-message)
+       ("perl-plack" ,perl-plack)))     ;for Plack::Test
+    (home-page
+     "http://search.cpan.org/dist/Plack-Middleware-FixMissingBodyInRedirect")
+    (synopsis "Plack::Middleware which sets body for redirect response")
+    (description "This module sets the body in redirect response, if it's not
+already set.")
+    (license (package-license perl))))
 
-(define-public perl-libwww
+(define-public perl-plack-middleware-methodoverride
   (package
-    (name "perl-libwww")
-    (version "6.05")
+    (name "perl-plack-middleware-methodoverride")
+    (version "0.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DW/DWHEELER/"
+                           "Plack-Middleware-MethodOverride-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1hb8dx7i4vs74n0p737wrvpdnnw6argxrjpr6kj6432zabp8325z"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page "http://search.cpan.org/dist/Plack-Middleware-MethodOverride")
+    (synopsis "Override REST methods to Plack apps via POST")
+    (description "This middleware allows for POST requests that pretend to be
+something else: by adding either a header named X-HTTP-Method-Override to the
+request, or a query parameter named x-tunneled-method to the URI, the client
+can say what method it actually meant.")
+    (license (package-license perl))))
+
+(define-public perl-plack-middleware-removeredundantbody
+  (package
+    (name "perl-plack-middleware-removeredundantbody")
+    (version "0.05")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
+                           "Plack-Middleware-RemoveRedundantBody-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1n3wm0zi8dnk54jx937asl951lslj3jvw0fry4jpzsibg4f6wrx0"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page
+     "http://search.cpan.org/dist/Plack-Middleware-RemoveRedundantBody")
+    (synopsis "Plack::Middleware which removes body for HTTP response")
+    (description "This module removes the body in an HTTP response if it's not
+required.")
+    (license (package-license perl))))
+
+(define-public perl-plack-middleware-reverseproxy
+  (package
+    (name "perl-plack-middleware-reverseproxy")
+    (version "0.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
+                           "Plack-Middleware-ReverseProxy-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1zmsccdy6wr5hxzj07r1nsmaymyibk87p95z0wzknjw10lwmqs9f"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page "http://search.cpan.org/dist/Plack-Middleware-ReverseProxy")
+    (synopsis "Supports app to run as a reverse proxy backend")
+    (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
+which are changed by reverse-proxy.  You can specify the reverse proxy address
+and stop fake requests using 'enable_if' directive in your app.psgi.")
+    (license (package-license perl))))
+
+(define-public perl-plack-test-externalserver
+  (package
+    (name "perl-plack-test-externalserver")
+    (version "0.01")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
+                           "Plack-Test-ExternalServer-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1dbg1p3rgvvbkkpvca5jlc2mzx8iqyiybk88al93pvbca65h1g7h"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-plack" ,perl-plack)))
+    (home-page "http://search.cpan.org/dist/Plack-Test-ExternalServer")
+    (synopsis "Run HTTP tests on external live servers")
+    (description "This module allows your to run your Plack::Test tests
+against an external server instead of just against a local application through
+either mocked HTTP or a locally spawned server.")
+    (license (package-license perl))))
+
+(define-public perl-test-tcp
+  (package
+    (name "perl-test-tcp")
+    (version "2.06")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TO/TOKUHIROM/"
+                           "Test-TCP-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0acjwm21y2an4f3fasci9qa0isakh9cgp74fk0bzcdi506xmcjbi"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-test-sharedfork" ,perl-test-sharedfork)))
+    (arguments `(#:tests? #f))          ;related to signaling in t/05_sigint.t
+    (home-page "http://search.cpan.org/dist/Test-TCP")
+    (synopsis "Testing TCP programs")
+    (description "Test::TCP is test utilities for TCP/IP programs.")
+    (license (package-license perl))))
+
+(define-public perl-uri
+  (package
+    (name "perl-uri")
+    (version "1.67")
     (source (origin
              (method url-fetch)
-             (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/libwww-perl-"
-                   version ".tar.gz"))
+             (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
+                                 "URI-" version ".tar.gz"))
              (sha256
               (base32
-               "08wgwyz7748pv5cyngxia0xl6nragfnhrp4p9s78xhgfyygpj9bv"))))
+               "0ki7i830gs0cwwwjsyv3s6yy1l76ym8pfqp0lp7vw0j9bwyx923h"))))
     (build-system perl-build-system)
-    (propagated-inputs
-     `(("perl-encode-locale" ,perl-encode-locale)
-       ("perl-file-listing" ,perl-file-listing)
-       ("perl-html-parser" ,perl-html-parser)
-       ("perl-http-cookies" ,perl-http-cookies)
-       ("perl-http-daemon" ,perl-http-daemon)
-       ("perl-http-negotiate" ,perl-http-negotiate)
-       ("perl-net-http" ,perl-net-http)
-       ("perl-www-robotrules" ,perl-www-robotrules)))
     (license (package-license perl))
-    (synopsis "Perl modules for the WWW")
+    (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
     (description
-     "The libwww-perl collection is a set of Perl modules which provides a
-simple and consistent application programming interface to the
-World-Wide Web.  The main focus of the library is to provide classes
-and functions that allow you to write WWW clients.  The library also
-contains modules that are of more general use and even classes that
-help you implement simple HTTP servers.")
-    (home-page "http://search.cpan.org/~gaas/libwww-perl/")))
+     "The URI module implements the URI class.  Objects of this class
+represent \"Uniform Resource Identifier references\" as specified in RFC 2396
+and updated by RFC 2732.")
+    (home-page "http://search.cpan.org/dist/URI/")))
 
-(define-public tinyproxy
+(define-public perl-uri-ws
   (package
-    (name "tinyproxy")
-    (version "1.8.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "http://www.samba.org/~obnox/" name "/download/"
-                    name "-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "0vl9igw7vm924rs6d6bkib7zfclxnlf9s8rmml1sfwj7xda9nmdy"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:configure-flags
-       (list
-        ;; For the log file, etc.
-        "--localstatedir=/var")
-       #:phases
-       (alist-cons-before
-        'build 'pre-build
-        (lambda* (#:key inputs #:allow-other-keys #:rest args)
-          ;; Uncommenting the next two lines may assist in debugging
-          ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
-          ;; (setenv "XML_DEBUG_CATALOG" "1")
-          #t)
-        %standard-phases)))
-    ;; All of the below are used to generate the documentation
-    ;; (Should they be propagated inputs of asciidoc ??)
-    (native-inputs `(("asciidoc" ,asciidoc)
-                     ("libxml2" ,libxml2) 
-                     ("docbook-xml" ,docbook-xml)
-                     ("docbook-xsl" ,docbook-xsl)
-                     ("libxslt" ,libxslt)))
-    (home-page "https://banu.com/tinyproxy/")
-    (synopsis "Light-weight HTTP/HTTPS proxy daemon")
-    (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
-daemon.  Designed from the ground up to be fast and yet small, it is an ideal
-solution for use cases such as embedded deployments where a full featured HTTP
-proxy is required, but the system resources for a larger proxy are
-unavailable.")
-    (license l:gpl2+)))
+    (name "perl-uri-ws")
+    (version "0.03")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
+                           "URI-ws-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)))
+    (home-page "http://search.cpan.org/dist/URI-ws")
+    (synopsis "WebSocket support for URI package")
+    (description "With this module, the URI package provides the same set of
+methods for WebSocket URIs as it does for HTTP URIs.")
+    (license (package-license perl))))
 
 (define-public perl-www-curl
   (package
@@ -742,78 +1363,27 @@ library.")
     (license (package-license perl))
     (home-page "http://search.cpan.org/~szbalint/WWW-Curl-4.17/lib/WWW/Curl.pm")))
 
-(define-public perl-io-socket-ssl
+(define-public perl-www-robotrules
   (package
-    (name "perl-io-socket-ssl")
-    (version "2.002")
+    (name "perl-www-robotrules")
+    (version "6.02")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
-                                  "IO-Socket-SSL-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1mph52lw6x5v44wf8mw00llzi8pp6k5c4jnrnrvlacrlfv260jb8"))))
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
     (build-system perl-build-system)
-    (propagated-inputs `(("perl-net-ssleay" ,perl-net-ssleay)))
-    (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
-    (description
-     "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
-necessary functionality into the familiar IO::Socket interface and providing
-secure defaults whenever possible.  This way existing applications can be made
-SSL-aware without much effort, at least if you do blocking I/O and don't use
-select or poll.")
+    (propagated-inputs
+     `(("perl-uri" ,perl-uri)))
     (license (package-license perl))
-    (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
-
-(define-public polipo
-  (package
-    (name "polipo")
-    (version "1.1.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
-    (native-inputs `(("texinfo" ,texinfo)))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (alist-delete 'configure %standard-phases)
-       #:make-flags (let ((out (assoc-ref %outputs "out")))
-                      (list (string-append "PREFIX=" out)
-                            (string-append "LOCAL_ROOT="
-                                           out "/share/polipo/www")
-                            "CC=gcc"))
-       ;; No 'check' target.
-       #:tests? #f))
-    (home-page "http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
-    (synopsis "Small caching web proxy")
-    (description
-     "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
-server).  It was primarily designed to be used by one person or a small group
-of people.")
-    (license l:expat)))
-
-(define-public libyaml
-  (package
-    (name "libyaml")
-    (version "0.1.5")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "http://pyyaml.org/download/libyaml/yaml-"
-             version ".tar.gz"))
-       (sha256
-        (base32
-         "1vrv5ly58bkmcyc049ad180f2m8iav6l9h3v8l2fqdmrny7yx1zs"))))
-    (build-system gnu-build-system)
-    (home-page "http://pyyaml.org/wiki/LibYAML")
-    (synopsis "YAML 1.1 parser and emitter written in C")
+    (synopsis "Perl database of robots.txt-derived permissions")
     (description
-     "LibYAML is a YAML 1.1 parser and emitter written in C.")
-    (license l:expat)))
+     "The WWW::RobotRules module parses /robots.txt files as specified in
+\"A Standard for Robot Exclusion\", at
+<http://www.robotstxt.org/wc/norobots.html>.  Webmasters can use the
+/robots.txt file to forbid conforming robots from accessing parts of
+their web site.")
+    (home-page "http://search.cpan.org/~gaas/WWW-RobotRules/")))
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 3ca297d90c..0cdb4964fa 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -32,7 +32,7 @@
 (define-public wget
   (package
     (name "wget")
-    (version "1.16.2")
+    (version "1.16.3")
     (source
      (origin
       (method url-fetch)
@@ -40,7 +40,7 @@
                           version ".tar.xz"))
       (sha256
        (base32
-        "1mfpvhgzvpvw36wmkwyyds3ilz74s2gn8yjqvynkbc8frcdxxpx7"))))
+        "0dzv5xf9qxc2bp4cyifmaghh3h464wbm73xiwcrvckf1ynqbgxv7"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 67aa34a84b..99e2fce926 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
+;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -78,8 +79,8 @@ avoiding password prompts when X11 forwarding has already been setup.")
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ; Test suite requires a lot of black magic
-       #:phases 
-       (alist-replace 'configure 
+       #:phases
+       (alist-replace 'configure
                       (lambda* (#:key outputs #:allow-other-keys #:rest args)
                         (setenv "PREFIX" (assoc-ref outputs "out"))
                         (setenv "LDFLAGS" (string-append "-Wl,-rpath="
@@ -391,7 +392,7 @@ things less distracting.")
     (description
      "XLockMore is a classic screen locker and screen saver for the
 X Window System.")
-    (license (license:bsd-style #f "See xlock.c.")
+    (license (license:non-copyleft #f "See xlock.c.")
              ;; + GPLv2 in modes/glx/biof.c.
              )))
 
@@ -453,3 +454,68 @@ 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+)))
+
+(define-public rxvt-unicode
+  (package
+    (name "rxvt-unicode")
+    (version "9.21")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "http://dist.schmorp.de/rxvt-unicode/"
+              name "-"
+              version
+              ".tar.bz2"))
+        (sha256
+          (base32
+            "0swmi308v5yxsddrdhvi4cch88k2bbs2nffpl5j5m2f55gbhw9vm"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libXft" ,libxft)
+       ("libX11" ,libx11)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
+    (synopsis "Rxvt clone with XFT and unicode support")
+    (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
+intended as an xterm replacement for users who do not require features such as
+Tektronix 4014 emulation and toolkit-style configurability.  It supports
+unicode, XFT and may be extended with Perl plugins.  It also comes with a
+client/daemon pair that lets you open any number of terminal windows from
+within a single process.")
+    (license license:gpl3+)))
+
+(define-public xcape
+  (package
+    (name "xcape")
+    (version "1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/alols/" name
+                            "/archive/v" version ".tar.gz"))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0jkdiaxc6sryrbibdgi2y1c48n4l9xyazhxr16l6h4ibddx95bk9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases (alist-delete 'configure %standard-phases) ; no configure script
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          "MANDIR=/share/man/man1"
+                          "CC=gcc")))
+    (inputs
+     `(("libxtst" ,libxtst)
+       ("libx11" ,libx11)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://github.com/alols/xcape")
+    (synopsis "Use a modifier key in X.org as another key")
+    (description
+     "This utility for X.org allows to use modifier key as another key when
+pressed and released on its own.  The default behaviour is to generate the
+Escape key when Left Control is pressed and released on its own.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 96171a050d..f182270aea 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -65,7 +65,7 @@ format, which encapsulates raw compressed data and allows the interleaving of
 audio and video data.  In addition to encapsulation and interleaving of
 multiple data streams, ogg provides packet framing, error detection, and
 periodic timestamps for seeking.")
-   (license (license:bsd-style "file://COPYING"
+   (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution."))
    (home-page "http://xiph.org/ogg/")))
 
@@ -91,7 +91,7 @@ a fully open, non-proprietary, patent-and-royalty-free, general-purpose
 compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit,
 polyphonic) audio and music at fixed and variable bitrates from 16 to
 128 kbps/channel.")
-   (license (license:bsd-style "file://COPYING"
+   (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution."))
    (home-page "http://xiph.org/vorbis/")))
 
@@ -141,7 +141,7 @@ for speech.  It is well-adapted to internet applications, such as VoIP.  It
 features compression of different bands in the same bitstream, intensity
 stereo encoding, and voice activity detection.")
     ;; 'src/getopt.c' is under LGPLv2+
-    (license (license:bsd-style "file://COPYING"
+    (license (license:non-copyleft "file://COPYING"
                                 "See COPYING in the distribution."))))
 
 (define ao
@@ -209,7 +209,7 @@ OpenBSD's sndio.")
    (description
 "FLAC stands for Free Lossless Audio Codec, an audio format that is lossless,
 meaning that audio is compressed in FLAC without any loss in quality.")
-   (license (license:bsd-style "file://COPYING"
+   (license (license:non-copyleft "file://COPYING"
                                "See COPYING in the distribution.")) ; and LGPL and GPL
    (home-page "http://xiph.org/flac/")))
 
diff --git a/gnu/packages/yasm.scm b/gnu/packages/yasm.scm
index 8314e22247..abf6663187 100644
--- a/gnu/packages/yasm.scm
+++ b/gnu/packages/yasm.scm
@@ -50,5 +50,5 @@ Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM
 and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit
 Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source
 debugging information in STABS, DWARF 2, and CodeView 8 formats.")
-    (license (license:bsd-style "file://COPYING"
+    (license (license:non-copyleft "file://COPYING"
                                 "See COPYING in the distribution."))))
diff --git a/gnu/packages/zip.scm b/gnu/packages/zip.scm
index f9eeb5c32c..e6f5067295 100644
--- a/gnu/packages/zip.scm
+++ b/gnu/packages/zip.scm
@@ -67,7 +67,7 @@ directory structure can be packed into a ZIP archive with a single command.
 Zip has one compression method (deflation) and can also store files without
 compression.  Zip automatically chooses the better of the two for each file.
 Compression ratios of 2:1 to 3:1 are common for text files.")
-  (license (license:bsd-style "file://LICENSE"
+  (license (license:non-copyleft "file://LICENSE"
                                "See LICENSE in the distribution."))))
 
 (define-public unzip
@@ -108,7 +108,7 @@ UnZip lists, tests, or extracts files from a .zip archive.  The default
 behaviour (with no options) is to extract into the current directory, and
 subdirectories below it, all files from the specified zipfile.  UnZip
 recreates the stored directory structure by default.")
-  (license (license:bsd-style "file://LICENSE"
+  (license (license:non-copyleft "file://LICENSE"
                                "See LICENSE in the distribution."))))
 
 (define-public zziplib
diff --git a/gnu/packages/zsh.scm b/gnu/packages/zsh.scm
index 9e9ee99cc8..3d3d5889d9 100644
--- a/gnu/packages/zsh.scm
+++ b/gnu/packages/zsh.scm
@@ -41,20 +41,22 @@
                  #:phases (alist-cons-before
                            'configure 'fix-sh
                            (lambda _
-                             (substitute*
-                                 '("configure"
-                                   "configure.ac"
-                                   "Src/exec.c"
-                                   "Src/mkmakemod.sh"
-                                   "Config/installfns.sh"
-                                   "Config/defs.mk.in"
-                                   "Test/E01options.ztst"
-                                   "Test/A05execution.ztst"
-                                   "Test/A01grammar.ztst"
-                                   "Test/B02typeset.ztst"
-                                   "Completion/Unix/Command/_init_d"
-                                   "Util/preconfig")
-                               (("/bin/sh") (which "sh"))))
+                             ;; Some of the files are ISO-8859-1 encoded.
+                             (with-fluids ((%default-port-encoding #f))
+                               (substitute*
+                                   '("configure"
+                                     "configure.ac"
+                                     "Src/exec.c"
+                                     "Src/mkmakemod.sh"
+                                     "Config/installfns.sh"
+                                     "Config/defs.mk.in"
+                                     "Test/E01options.ztst"
+                                     "Test/A05execution.ztst"
+                                     "Test/A01grammar.ztst"
+                                     "Test/B02typeset.ztst"
+                                     "Completion/Unix/Command/_init_d"
+                                     "Util/preconfig")
+                                 (("/bin/sh") (which "sh")))))
                            %standard-phases)))
     (native-inputs `(("autoconf", autoconf)))
     (inputs `(("ncurses", ncurses)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 40d4740d46..84bac94d9f 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -568,25 +568,24 @@ given @var{config}---an @code{<nscd-configuration>} object.  Optionally,
                               (shadow shadow))
   "Return a list of COUNT user accounts for Guix build users, with UIDs
 starting at FIRST-UID, and under GID."
-  (with-monad %store-monad
-    (return (unfold (cut > <> count)
-                    (lambda (n)
-                      (user-account
-                       (name (format #f "guixbuilder~2,'0d" n))
-                       (system? #t)
-                       (uid (+ first-uid n -1))
-                       (group group)
-
-                       ;; guix-daemon expects GROUP to be listed as a
-                       ;; supplementary group too:
-                       ;; <http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html>.
-                       (supplementary-groups (list group "kvm"))
-
-                       (comment (format #f "Guix Build User ~2d" n))
-                       (home-directory "/var/empty")
-                       (shell #~(string-append #$shadow "/sbin/nologin"))))
-                    1+
-                    1))))
+  (unfold (cut > <> count)
+          (lambda (n)
+            (user-account
+             (name (format #f "guixbuilder~2,'0d" n))
+             (system? #t)
+             (uid (+ first-uid n -1))
+             (group group)
+
+             ;; guix-daemon expects GROUP to be listed as a
+             ;; supplementary group too:
+             ;; <http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html>.
+             (supplementary-groups (list group "kvm"))
+
+             (comment (format #f "Guix Build User ~2d" n))
+             (home-directory "/var/empty")
+             (shell #~(string-append #$shadow "/sbin/nologin"))))
+          1+
+          1))
 
 (define (hydra-key-authorization guix)
   "Return a gexp with code to register the hydra.gnu.org public key with
@@ -636,8 +635,7 @@ passed to @command{guix-daemon}."
     (and authorize-hydra-key?
          (hydra-key-authorization guix)))
 
-  (mlet %store-monad ((accounts (guix-build-accounts build-accounts
-                                                     #:group builder-group)))
+  (with-monad %store-monad
     (return (service
              (provision '(guix-daemon))
              (requirement '(user-processes))
@@ -650,7 +648,8 @@ passed to @command{guix-daemon}."
                               '("--no-substitutes"))
                        #$@extra-options)))
              (stop #~(make-kill-destructor))
-             (user-accounts accounts)
+             (user-accounts (guix-build-accounts build-accounts
+                                                 #:group builder-group))
              (user-groups (list (user-group
                                  (name builder-group)
                                  (system? #t)
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm
index 4bf76e01ec..618df91c5e 100644
--- a/gnu/services/dmd.scm
+++ b/gnu/services/dmd.scm
@@ -17,6 +17,8 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu services dmd)
+  #:use-module (guix ui)
+  #:use-module (guix sets)
   #:use-module (guix gexp)
   #:use-module (guix store)
   #:use-module (guix monads)
@@ -24,6 +26,8 @@
   #:use-module (gnu services)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:export (dmd-configuration-file))
 
 ;;; Commentary:
@@ -32,6 +36,26 @@
 ;;;
 ;;; Code:
 
+(define (assert-no-duplicates services)
+  "Raise an error if SERVICES provide the same dmd service more than once.
+
+This is a constraint that dmd's 'register-service' verifies but we'd better
+verify it here statically than wait until PID 1 halts with an assertion
+failure."
+  (fold (lambda (service set)
+          (define (assert-unique symbol)
+            (when (set-contains? set symbol)
+              (raise (condition
+                      (&message
+                       (message
+                        (format #f (_ "service '~a' provided more than once")
+                                symbol)))))))
+
+          (for-each assert-unique (service-provision service))
+          (fold set-insert set (service-provision service)))
+        (setq)
+        services))
+
 (define (dmd-configuration-file services)
   "Return the dmd configuration file for SERVICES."
   (define modules
@@ -40,6 +64,8 @@
       (gnu build file-systems)
       (guix build utils)))
 
+  (assert-no-duplicates services)
+
   (mlet %store-monad ((modules  (imported-modules modules))
                       (compiled (compiled-modules modules)))
     (define config
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index a2d8e3a045..af8dd43bd6 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -286,6 +286,14 @@ configuration file."
      (service
       (provision '(bitlbee))
       (requirement '(user-processes loopback))
+      (activate #~(begin
+                    (use-modules (guix build utils))
+
+                    ;; This directory is used to store OTR data.
+                    (mkdir-p "/var/lib/bitlbee")
+                    (let ((user (getpwnam "bitlbee")))
+                      (chown "/var/lib/bitlbee"
+                             (passwd:uid user) (passwd:gid user)))))
       (start #~(make-forkexec-constructor
                 (list (string-append #$bitlbee "/sbin/bitlbee")
                       "-n" "-F" "-u" "bitlbee" "-c" #$conf)))
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 562f57ffa0..c687b46bc2 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,9 +26,7 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages slim)
-  #:use-module (gnu packages ratpoison)
   #:use-module (gnu packages gnustep)
-  #:use-module (gnu packages sawfish)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages bash)
   #:use-module (guix gexp)
@@ -39,14 +38,6 @@
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
   #:export (xorg-start-command
-            %default-xsessions
-            %ratpoison-session-type
-            %windowmaker-session-type
-            %sawfish-session-type
-
-            session-type?
-            session-type-name
-
             %default-slim-theme
             %default-slim-theme-name
             slim-service))
@@ -167,26 +158,26 @@ which should be passed to this script as the first argument.  If not, the
           ;; 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))))
-              ;; 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))))))
-
-        (let ((home (getenv "HOME"))
-              (session (match (command-line)
-                         ((_ x) x)
-                         (_     #$fallback-session))))
-          ;; First, try to run ~/.xsession.
-          (exec-from-login-shell (string-append home "/.xsession"))
-          ;; Then try to start the specified session.
-          (exec-from-login-shell session))))
+                 (shell (passwd:shell pw)))
+            ;; 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)))))
+
+        (let* ((home          (getenv "HOME"))
+               (xsession-file (string-append home "/.xsession"))
+               (session       (match (command-line)
+                                ((_ x) x)
+                                (_     #$fallback-session))))
+          (if (file-exists? xsession-file)
+              ;; Run ~/.xsession when it exists.
+              (exec-from-login-shell xsession-file session)
+              ;; Otherwise, start the specified session.
+              (exec-from-login-shell session)))))
   (gexp->script "xinitrc" builder))
 
 
@@ -194,61 +185,6 @@ which should be passed to this script as the first argument.  If not, the
 ;;; SLiM log-in manager.
 ;;;
 
-(define-record-type* <session-type> session-type make-session-type
-  session-type?
-  (name         session-type-name)                ;string
-  (executable   session-type-executable))         ;string-valued gexp
-
-(define %windowmaker-session-type
-  (session-type
-   (name "WindowMaker")
-   (executable #~(string-append #$windowmaker "/bin/wmaker"))))
-
-(define %ratpoison-session-type
-  (session-type
-   (name "Ratpoison")
-   (executable #~(string-append #$ratpoison "/bin/ratpoison"))))
-
-(define %sawfish-session-type
-  (session-type
-   (name "Sawfish")
-   (executable #~(string-append #$sawfish "/bin/sawfish"))))
-
-(define %default-xsessions
-  ;; Default session types available to the log-in manager.
-  (list %windowmaker-session-type %ratpoison-session-type))
-
-(define (xsessions-directory sessions)
-  "Return a directory containing SESSIONS, a list of <session-type> objects.
-The alphabetical order of the files in that directory match the order of the
-elements in SESSIONS."
-  (define builder
-    #~(begin
-        (use-modules (srfi srfi-1)
-                     (ice-9 format))
-
-        (mkdir #$output)
-        (chdir #$output)
-        (fold (lambda (name executable number)
-                ;; Create file names such that the order of the items in
-                ;; SESSION is respected.  SLiM gets them in lexicographic
-                ;; order and uses the first one as the default session.
-                (let ((file (format #f "~2,'0d-~a.desktop"
-                                    number (string-downcase name))))
-                  (call-with-output-file file
-                    (lambda (port)
-                      (format port "[Desktop Entry]
-Name=~a
-Exec=~a
-Type=Application~%"
-                              name executable)))
-                  (+ 1 number)))
-              1
-              '#$(map session-type-name sessions)
-              (list #$@(map session-type-executable sessions)))))
-
-  (gexp->derivation "xsessions-dir" builder))
-
 (define %default-slim-theme
   ;; Theme based on work by Felipe López.
   #~(string-append #$%artwork-repository "/slim"))
@@ -264,7 +200,6 @@ Type=Application~%"
                        (theme %default-slim-theme)
                        (theme-name %default-slim-theme-name)
                        (xauth xauth) (dmd dmd) (bash bash)
-                       (sessions %default-xsessions)
                        (auto-login-session #~(string-append #$windowmaker
                                                             "/bin/wmaker"))
                        startx)
@@ -279,17 +214,12 @@ password.  When @var{auto-login?} is true, log in automatically as
 If @var{theme} is @code{#f}, the use the default log-in theme; otherwise
 @var{theme} must be a gexp denoting the name of a directory containing the
 theme to use.  In that case, @var{theme-name} specifies the name of the
-theme.
-
-Last, @var{session} is a list of @code{<session-type>} objects denoting the
-available session types that can be chosen from the log-in screen.  The first
-one is chosen by default."
+theme."
 
   (define (slim.cfg)
     (mlet %store-monad ((startx  (or startx (xorg-start-command)))
                         (xinitrc (xinitrc #:fallback-session
-                                          auto-login-session))
-                        (sessiondir (xsessions-directory sessions)))
+                                          auto-login-session)))
       (text-file* "slim.cfg"  "
 default_path /run/current-system/profile/bin
 default_xserver " startx "
@@ -300,7 +230,7 @@ authfile /var/run/slim.auth
 # The login command.  '%session' is replaced by the chosen session name, one
 # of the names specified in the 'sessions' setting: 'wmaker', 'xfce', etc.
 login_cmd  exec " xinitrc " %session
-sessiondir " sessiondir "
+sessiondir /run/current-system/profile/share/xsessions
 session_msg session (F1 to change):
 
 halt_cmd " dmd "/sbin/halt
diff --git a/gnu/system.scm b/gnu/system.scm
index a51b176640..0d510b623b 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -69,7 +69,6 @@
             operating-system-users
             operating-system-groups
             operating-system-issue
-            operating-system-packages
             operating-system-timezone
             operating-system-locale
             operating-system-locale-definitions
@@ -353,6 +352,8 @@ explicitly appear in OS."
 
          e2fsprogs kbd
 
+         bash-completion
+
          ;; The packages below are also in %FINAL-INPUTS, so take them from
          ;; there to avoid duplication.
          (map canonical-package
@@ -416,11 +417,17 @@ settings for 'guix.el' to work out-of-the-box."
       ((pam.d      (pam-services->directory pam-services))
        (sudoers    (text-file "sudoers" sudoers))
        (login.defs (text-file "login.defs" "# Empty for now.\n"))
-       (shells     (text-file "shells"            ; used by xterm and others
+
+       ;; /etc/shells is used by xterm and other programs.   We don't check
+       ;; whether these shells are installed, should be OK.
+       (shells     (text-file "shells"
                               "\
 /bin/sh
 /run/current-system/profile/bin/sh
-/run/current-system/profile/bin/bash\n"))
+/run/current-system/profile/bin/bash
+/run/current-system/profile/bin/fish
+/run/current-system/profile/bin/tcsh
+/run/current-system/profile/bin/zsh\n"))
        (emacs      (emacs-site-directory))
        (issue      (text-file "issue" issue))
        (nsswitch   (text-file "nsswitch.conf"
@@ -458,7 +465,25 @@ export GIT_SSL_CAINFO=\"$SSL_CERT_FILE\"
 
 # Allow Aspell to find dictionaries installed in the user profile.
 export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\"
+
+if [ -n \"$BASH_VERSION\" -a -f /etc/bashrc ]
+then
+  # Load Bash-specific initialization code.
+  source /etc/bashrc
+fi
 "))
+
+       (bashrc    (text-file "bashrc" "\
+# Bash-specific initialization.
+
+# The 'bash-completion' package.
+if [ -f /run/current-system/profile/etc/profile.d/bash_completion.sh ]
+then
+  # Bash-completion sources ~/.bash_completion.  It installs a dynamic
+  # completion loader that searches its own completion files as well
+  # as those in ~/.guix-profile and /run/current-system/profile.
+  source /run/current-system/profile/etc/profile.d/bash_completion.sh
+fi\n"))
        (skel      (skeleton-directory skeletons)))
     (file-union "etc"
                 `(("services" ,#~(string-append #$net-base "/etc/services"))
@@ -472,6 +497,7 @@ export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\"
                   ("skel" ,#~#$skel)
                   ("shells" ,#~#$shells)
                   ("profile" ,#~#$profile)
+                  ("bashrc" ,#~#$bashrc)
                   ("hosts" ,#~#$hosts-file)
                   ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
                                                  #$timezone))
@@ -511,9 +537,8 @@ export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\"
       ((services     (operating-system-services os))
        (pam-services ->
                      ;; Services known to PAM.
-                     (delete-duplicates
-                      (append (operating-system-pam-services os)
-                              (append-map service-pam-services services))))
+                     (append (operating-system-pam-services os)
+                             (append-map service-pam-services services)))
        (profile-drv (operating-system-profile os))
        (skeletons   (operating-system-skeletons os))
        (/etc/hosts  (or (operating-system-hosts-file os)
diff --git a/gnu/system/linux.scm b/gnu/system/linux.scm
index 8cddedf28e..aaaa8c6dee 100644
--- a/gnu/system/linux.scm
+++ b/gnu/system/linux.scm
@@ -100,13 +100,19 @@ dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE."
                              services))))
     (define builder
       #~(begin
-          (use-modules (ice-9 match))
+          (use-modules (ice-9 match)
+                       (srfi srfi-1))
 
           (mkdir #$output)
           (for-each (match-lambda
                      ((name file)
                       (symlink file (string-append #$output "/" name))))
-                    '#$(zip names files))))
+
+                    ;; Since <pam-service> objects cannot be compared with
+                    ;; 'equal?' since they contain gexps, which contain
+                    ;; closures, use 'delete-duplicates' on the build-side
+                    ;; instead.  See <http://bugs.gnu.org/20037>.
+                    (delete-duplicates '#$(zip names files)))))
 
     (gexp->derivation "pam.d" builder)))
 
diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl
index 07b099531e..e14c95733a 100644
--- a/gnu/system/os-config.tmpl
+++ b/gnu/system/os-config.tmpl
@@ -2,7 +2,7 @@
 
 (use-modules (gnu))
 (use-service-modules xorg networking dbus avahi)
-(use-package-modules avahi)
+(use-package-modules xorg avahi)
 
 (operating-system
   (host-name "antelope")
@@ -35,6 +35,9 @@
                                         "audio" "video"))
                 (home-directory "/home/alice"))))
 
+  ;; Globally-installed packages.
+  (packages (cons xterm %base-packages))
+
   ;; Add services to the baseline: the SLiM log-in manager
   ;; for Xorg sessions, a DHCP client, Avahi, and D-Bus.
   (services (cons* (slim-service)
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index 4a9580a672..16b9e4b555 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -120,6 +120,22 @@
 # Honor per-interactive-shell startup file
 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
                       (bashrc (text-file "bashrc" "\
+# Bash initialization for interactive non-login shells and
+# for remote shells (info \"(bash) Bash Startup Files\").
+
+# Export 'SHELL' to child processes.  Programs such as 'screen'
+# honor it and otherwise use /bin/sh.
+export SHELL
+
+if [ -n \"$SSH_CLIENT\" -a -z \"`type -P cat`\" ]
+then
+    # We are being invoked from a non-interactive SSH session
+    # (as in \"ssh host command\") but 'cat' cannot be found
+    # in $PATH.  Source /etc/profile so we get $PATH and other
+    # essential variables.
+    source /etc/profile
+fi
+
 PS1='\\u@\\h \\w\\$ '
 alias ls='ls -p --color'
 alias ll='ls -l'\n"))