gnu: eudev: Update home-page URL.
[jackhill/guix/guix.git] / gnu / packages / linux.scm
index d261933..1fc3c4e 100644 (file)
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,8 +23,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages linux)
-  #:use-module ((guix licenses)
-                #:hide (zlib))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
@@ -57,6 +57,7 @@
   #:use-module (gnu packages asciidoc)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages calendar)
+  #:use-module (gnu packages tls)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
        #:tests? #f))
     (synopsis "GNU Linux-Libre kernel headers")
     (description "Headers of the Linux-Libre kernel.")
-    (license gpl2)
+    (license license:gpl2)
     (home-page "http://www.gnu.org/software/linux-libre/"))))
 
 (define-public module-init-tools
     (description
      "Tools for loading and managing Linux kernel modules, such as `modprobe',
 `insmod', `lsmod', and more.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define %boot-logo-patch
   ;; Linux-Libre boot logo featuring Freedo and a gnu.
@@ -210,7 +211,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "4.2.1")
+  (let* ((version "4.3.3")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -220,6 +221,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (let ((arch (car (string-split system #\-))))
                (setenv "ARCH"
                        (cond ((string=? arch "i686") "i386")
+                             ((string=? arch "mips64el") "mips")
                              (else arch)))
                (format #t "`ARCH' set to `~a'~%" (getenv "ARCH")))
 
@@ -266,7 +268,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
                (for-each (lambda (file)
                            (copy-file file
                                       (string-append out "/" (basename file))))
-                         (find-files "." "^(bzImage|System\\.map)$"))
+                         (find-files "." "^(bzImage|vmlinuz|System\\.map)$"))
                (copy-file ".config" (string-append out "/config"))
                (zero? (system* "make"
                                (string-append "DEPMOD=" mit "/sbin/depmod")
@@ -283,10 +285,12 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "140cqnk1hyhavfra572wwzwz7pddczc78j8anbxyciw35kh8z2hl"))))
+               "1z43kzs1pzwq5mkyh7zk8nq38sxlswp65824v54dzwngyc252a18"))))
     (build-system gnu-build-system)
+    (supported-systems '("x86_64-linux" "i686-linux"))
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
+                     ("openssl" ,openssl)
                      ("module-init-tools" ,module-init-tools)
                      ("patch/freedo+gnu" ,%boot-logo-patch)
 
@@ -310,7 +314,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
     (description
      "GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.
 It has been modified to remove all non-free binary blobs.")
-    (license gpl2)
+    (license license:gpl2)
     (home-page "http://www.gnu.org/software/linux-libre/"))))
 
 \f
@@ -357,7 +361,7 @@ It has been modified to remove all non-free binary blobs.")
 Pluggable authentication modules are small shared object files that can
 be used through the PAM API to perform tasks, like authenticating a user
 at login.  Local and dynamic reconfiguration are its key features.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 
 ;;;
@@ -385,7 +389,7 @@ at login.  Local and dynamic reconfiguration are its key features.")
      "This PSmisc package is a set of some small useful utilities that
 use the proc filesystem.  We're not about changing the world, but
 providing the system administrator with some help in common tasks.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public util-linux
   (package
@@ -445,14 +449,15 @@ providing the system administrator with some help in common tasks.")
        ("net-base" ,net-base)))                   ;for tests
     (home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
     (synopsis "Collection of utilities for the Linux kernel")
-    (description
-     "Util-linux is a random collection of utilities for the Linux kernel.")
+    (description "Util-linux is a diverse collection of Linux kernel
+utilities.  It provides dmesg and includes tools for working with filesystems,
+block devices, UUIDs, TTYs, and many other tools.")
 
     ;; Note that util-linux doesn't use the same license for all the
     ;; code.  GPLv2+ is the default license for a code without an
     ;; explicitly defined license.
-    (license (list gpl3+ gpl2+ gpl2 lgpl2.0+
-                   bsd-4 public-domain))))
+    (license (list license:gpl3+ license:gpl2+ license:gpl2 license:lgpl2.0+
+                   license:bsd-4 license:public-domain))))
 
 (define-public procps
   (package
@@ -519,7 +524,7 @@ providing the system administrator with some help in common tasks.")
 that give information about processes using the Linux /proc file system.
 The package includes the programs ps, top, vmstat, w, kill, free,
 slabtop, and skill.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public usbutils
   (package
@@ -543,7 +548,7 @@ slabtop, and skill.")
      "Tools for working with USB devices, such as lsusb")
     (description
      "Tools for working with USB devices, such as lsusb.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public e2fsprogs
   (package
@@ -570,7 +575,7 @@ slabtop, and skill.")
     (arguments
      '(;; util-linux is not the preferred source for some of the libraries and
        ;; commands, so disable them (see, e.g.,
-       ;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b336339909c90559b7db40b455f172>.)
+       ;; <http://git.buildroot.net/buildroot/commit/?id=e1ffc2f791b33633>.)
        #:configure-flags '("--disable-libblkid"
                            "--disable-libuuid" "--disable-uuidd"
                            "--disable-fsck"
@@ -619,9 +624,9 @@ slabtop, and skill.")
     (synopsis "Creating and checking ext2/ext3/ext4 file systems")
     (description
      "This package provides tools for manipulating ext2/ext3/ext4 file systems.")
-    (license (list gpl2                           ; programs
-                   lgpl2.0                        ; libext2fs
-                   x11))))                        ; libuuid
+    (license (list license:gpl2                   ;programs
+                   license:lgpl2.0                ;libext2fs
+                   license:x11))))                ;libuuid
 
 (define e2fsprogs/static
   (static-package
@@ -685,7 +690,7 @@ from the e2fsprogs package.  It is meant to be used in initrds.")
     (description
      "Extundelete is a set of tools that can recover deleted files from an
 ext3 or ext4 partition.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public zerofree
   (package
@@ -720,7 +725,7 @@ ext3 or ext4 partition.")
      "The zerofree command scans the free blocks in an ext2 file system and
 fills any non-zero blocks with zeroes.  This is a useful way to make disk
 images more compressible.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public strace
   (package
@@ -740,7 +745,7 @@ images more compressible.")
     (description
      "strace is a system call tracer, i.e. a debugging tool which prints out a
 trace of all the system calls made by a another process/program.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public ltrace
   (package
@@ -764,7 +769,7 @@ trace of all the system calls made by a another process/program.")
      "ltrace intercepts and records dynamic library calls which are called by
 an executed process and the signals received by that process.  It can also
 intercept and print the system calls executed by the program.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public alsa-lib
   (package
@@ -785,7 +790,7 @@ intercept and print the system calls executed by the program.")
     (description
      "The Advanced Linux Sound Architecture (ALSA) provides audio and
 MIDI functionality to the Linux-based operating system.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public alsa-utils
   (package
@@ -830,7 +835,7 @@ MIDI functionality to the Linux-based operating system.")
 
     ;; This is mostly GPLv2+ but a few files such as 'alsactl.c' are
     ;; GPLv2-only.
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public iptables
   (package
@@ -858,7 +863,7 @@ system administrators.  Since Network Address Translation is also configured
 from the packet filter ruleset, iptables is used for this, too.  The iptables
 package also includes ip6tables.  ip6tables is used for configuring the IPv6
 packet filter.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public iproute
   (package
@@ -919,7 +924,7 @@ consists of several tools, of which the most important are ip and tc.  ip
 controls IPv4 and IPv6 configuration and tc stands for traffic control.  Both
 tools print detailed usage messages and are accompanied by a set of
 manpages.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public net-tools
   ;; XXX: This package is basically unmaintained, but it provides a few
@@ -1017,7 +1022,7 @@ subsystem of the Linux kernel.  This includes arp, hostname, ifconfig,
 netstat, rarp and route.  Additionally, this package contains utilities
 relating to particular network hardware types (plipconfig, slattach) and
 advanced aspects of IP configuration (iptunnel, ipmaddr).")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libcap
   (package
@@ -1055,7 +1060,7 @@ advanced aspects of IP configuration (iptunnel, ipmaddr).")
 Linux-based operating systems.")
 
     ;; License is BSD-3 or GPLv2, at the user's choice.
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public bridge-utils
   (package
@@ -1101,7 +1106,7 @@ to connect two Ethernet segments together in a protocol independent way.
 Packets are forwarded based on Ethernet address, rather than IP address (like
 a router).  Since forwarding is done at Layer 2, all protocols can go
 transparently through a bridge.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libnl
   (package
@@ -1128,7 +1133,7 @@ configuration and monitoring interfaces.")
 
     ;; Most files are LGPLv2.1-only, but some are GPLv2-only (like
     ;; 'nl-addr-add.c'), so the result is GPLv2-only.
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public iw
   (package
@@ -1154,30 +1159,29 @@ configuration and monitoring interfaces.")
     (description
      "iw is a new nl80211 based CLI configuration utility for wireless
 devices.  It replaces 'iwconfig', which is deprecated.")
-    (license isc)))
+    (license license:isc)))
 
 (define-public powertop
   (package
     (name "powertop")
-    (version "2.5")
+    (version "2.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "https://01.org/powertop/sites/default/files/downloads/powertop-"
+             "https://01.org/sites/default/files/downloads/powertop/powertop-"
              version ".tar.gz"))
        (sha256
         (base32
-         "02rwqbpasdayl201v0549gbp2f82rd0hqiv3i111r7npanjhhb4b"))))
+         "0nlwazxbnn0k6q5f5b09wdhw0f194lpzkp3l7vxansqhfczmcyx8"))))
     (build-system gnu-build-system)
     (inputs
-     ;; TODO: Add pciutils.
      `(("zlib" ,zlib)
-       ;; ("pciutils" ,pciutils)
+       ("pciutils" ,pciutils)
        ("ncurses" ,ncurses)
        ("libnl" ,libnl)))
     (native-inputs
-       `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://01.org/powertop/")
     (synopsis "Analyze power consumption on Intel-based laptops")
     (description
@@ -1186,7 +1190,7 @@ power management.  In addition to being a diagnostic tool, PowerTOP also has
 an interactive mode where the user can experiment various power management
 settings for cases where the operating system has not enabled these
 settings.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public aumix
   (package
@@ -1207,7 +1211,7 @@ settings.")
     (description
      "Aumix adjusts an audio mixer from X, the console, a terminal,
 the command line or a script.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public iotop
   (package
@@ -1233,7 +1237,7 @@ the command line or a script.")
     (description
      "Iotop is a Python program with a top like user interface to show the
 processes currently causing I/O.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public fuse
   (package
@@ -1291,8 +1295,8 @@ but also an impediment to system extensibility.  FUSE, for \"file systems in
 user space\", is a kernel module and user-space library that tries to address
 part of this problem by allowing users to run file system implementations as
 user-space processes.")
-    (license (list lgpl2.1                        ; library
-                   gpl2+))))                      ; command-line utilities
+    (license (list license:lgpl2.1                ;library
+                   license:gpl2+))))              ;command-line utilities
 
 (define-public unionfs-fuse
   (package
@@ -1316,7 +1320,7 @@ user-space processes.")
 space, using the FUSE library.  Mounting a union file system allows you to
 \"aggregate\" the contents of several directories into a single mount point.
 UnionFS-FUSE additionally supports copy-on-write.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define fuse-static
   (package (inherit fuse)
@@ -1385,12 +1389,12 @@ UnionFS-FUSE additionally supports copy-on-write.")
 Since most SSH servers already support this protocol it is very easy to set
 up: on the server side there's nothing to do; on the client side mounting the
 file system is as easy as logging into the server with an SSH client.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public numactl
   (package
     (name "numactl")
-    (version "2.0.9")
+    (version "2.0.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1399,35 +1403,13 @@ file system is as easy as logging into the server with an SSH client.")
                     ".tar.gz"))
               (sha256
                (base32
-                "073myxlyyhgxh1w3r757ajixb7s2k69czc3r0g12c3scq7k3784w"))))
+                "0qbqa9gac2vlahrngi553hws2mqgqdwv2lc69a3yx4gq6l90j325"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; There's no 'configure' script, just a raw makefile.
-                   (substitute* "Makefile"
-                     (("^prefix := .*$")
-                      (string-append "prefix := " (assoc-ref outputs "out")
-                                     "\n"))
-                     (("^libdir := .*$")
-                      ;; By default the thing tries to install under
-                      ;; $prefix/lib64 when on a 64-bit platform.
-                      (string-append "libdir := $(prefix)/lib\n"))))
-                 %standard-phases)
-
-       #:make-flags (list
-                     ;; By default the thing tries to use 'cc'.
-                     "CC=gcc"
-
-                     ;; Make sure programs have an RPATH so they can find
-                     ;; libnuma.so.
-                     (string-append "LDLIBS=-Wl,-rpath="
-                                    (assoc-ref %outputs "out") "/lib"))
-
-       ;; There's a 'test' target, but it requires NUMA support in the kernel
+     '(;; There's a 'test' target, but it requires NUMA support in the kernel
        ;; to run, which we can't assume to have.
        #:tests? #f))
+
     (home-page "http://oss.sgi.com/projects/libnuma/")
     (synopsis "Tools for non-uniform memory access (NUMA) machines")
     (description
@@ -1440,8 +1422,8 @@ program.
 The package contains other commands, such as numademo, numastat and memhog.
 The numademo command provides a quick overview of NUMA performance on your
 system.")
-    (license (list gpl2                           ; programs
-                   lgpl2.1))))                    ; library
+    (license (list license:gpl2                   ;programs
+                   license:lgpl2.1))))            ;library
 
 (define-public kbd
   (package
@@ -1499,7 +1481,7 @@ system.")
      "This package contains keytable files and keyboard utilities compatible
 for systems using the Linux kernel.  This includes commands such as
 'loadkeys', 'setfont', 'kbdinfo', and 'chvt'.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public inotify-tools
   (package
@@ -1519,7 +1501,7 @@ for systems using the Linux kernel.  This includes commands such as
     (description
      "The inotify-tools packages provides a C library and command-line tools
 to use Linux' inotify mechanism, which allows file accesses to be monitored.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public kmod
   (package
@@ -1563,13 +1545,13 @@ dependencies and aliases.
 These tools are designed on top of libkmod, a library that is shipped with
 kmod.  The aim is to be compatible with tools, configurations and indices
 from the module-init-tools project.")
-    (license gpl2+))) ; library under lgpl2.1+
+    (license license:gpl2+))) ; library under lgpl2.1+
 
 (define-public eudev
   ;; The post-systemd fork, maintained by Gentoo.
   (package
     (name "eudev")
-    (version "2.1.1")
+    (version "3.1.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1577,61 +1559,21 @@ from the module-init-tools project.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0shf5vqiz9fdxl95aa1a8vh0xjxwim3psc39wr2xr8lnahf11vva"))
-              (patches (list (search-patch "eudev-rules-directory.patch")))
-              (modules '((guix build utils)))
-              (snippet
-               ;; 'configure' checks uses <linux/btrfs.h> as an indication of
-               ;; whether Linux headers are available, but it doesn't actually
-               ;; use it, and our 'linux-libre-headers' package doesn't
-               ;; provide it.  So just remove that.
-               '(substitute* "configure"
-                  (("linux/btrfs\\.h")
-                   "")))))
+                "0akg9gcc3c2p56xbhlvbybqavcprly5q0bvk655zwl6d62j8an7p"))
+              (patches (list (search-patch "eudev-rules-directory.patch")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("gperf" ,gperf)
-       ("glib" ,glib "bin")                       ; glib-genmarshal, etc.
-       ("perl" ,perl)                             ; for the tests
-       ("python" ,python-2)))                     ; ditto
+       ("perl" ,perl)
+       ("gperf" ,gperf)))
     (inputs
-     `(("kmod" ,kmod)
-       ("pciutils" ,pciutils)
-       ("usbutils" ,usbutils)
-       ("util-linux" ,util-linux)
-       ("glib" ,glib)
-       ("gobject-introspection" ,gobject-introspection)))
-    (arguments
-     `(#:configure-flags (list "--enable-libkmod"
-
-                               (string-append
-                                "--with-pci-ids-path="
-                                (assoc-ref %build-inputs "pciutils")
-                                "/share/pci.ids.gz")
-
-                               "--with-firmware-path=/no/firmware"
-
-                               ;; Work around undefined reference to
-                               ;; 'mq_getattr' in sc-daemon.c.
-                               "LDFLAGS=-lrt")
-       #:phases
-       (alist-cons-before
-        'build 'pre-build
-        ;; The program 'g-ir-scanner' (part of the package
-        ;; 'gobject-introspection'), to generate .gir files, makes some
-        ;; library pre-processing.  During that phase it looks for the C
-        ;; compiler as either 'cc' or as defined by the environment variable
-        ;; 'CC' (with code in 'giscanner/dumper.py').
-        (lambda* _
-          (setenv "CC" "gcc"))
-        %standard-phases)))
-    (home-page "http://www.gentoo.org/proj/en/eudev/")
+     `(("kmod" ,kmod)))
+    (home-page "https://wiki.gentoo.org/wiki/Project:Eudev")
     (synopsis "Userspace device management")
     (description "Udev is a daemon which dynamically creates and removes
 device nodes from /dev/, handles hotplug events and loads drivers at boot
 time.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public lvm2
   (package
@@ -1696,7 +1638,7 @@ mapper.  Kernel components are part of Linux-libre.")
 
     ;; Libraries (liblvm2, libdevmapper) are LGPLv2.1.
     ;; Command-line tools are GPLv2.
-    (license (list gpl2 lgpl2.1))))
+    (license (list license:gpl2 license:lgpl2.1))))
 
 (define-public wireless-tools
   (package
@@ -1735,7 +1677,7 @@ interface.")
     (home-page "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html")
     ;; wireless.21.h and wireless.22.h are distributed under lgpl2.1+, the
     ;; other files are distributed under gpl2.
-    (license (list gpl2 lgpl2.1+))))
+    (license (list license:gpl2 license:lgpl2.1+))))
 
 (define-public crda
   (package
@@ -1804,7 +1746,7 @@ interface.")
      "The Central Regulatory Domain Agent (CRDA) acts as the udev helper for
 communication between the kernel Linux and user space for regulatory
 compliance.")
-    (license copyleft-next)))
+    (license license:copyleft-next)))
 
 (define-public wireless-regdb
   (package
@@ -1817,11 +1759,21 @@ compliance.")
                     "wireless-regdb-" version ".tar.xz"))
               (sha256
                (base32
-                "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc"))))
+                "0czi83k311fp27z42hxjm8vi88fsbc23mhavv96lkb4pmari0jjc"))
+
+              ;; We're building 'regulatory.bin' by ourselves.
+              (snippet '(delete-file "regulatory.bin"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
                   (delete 'configure))
+
+       ;; The 'all' target of the makefile depends on $(REGDB_CHANGED), which
+       ;; is computed and can be equal to 'maintainer-clean'; when that
+       ;; happens, we can end up deleting the 'regulatory.bin' file that we
+       ;; just built.  Thus, build things sequentially.
+       #:parallel-build? #f
+
        #:tests? #f                                ;no tests
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list (string-append "PREFIX=" out)
@@ -1842,7 +1794,7 @@ compliance.")
      "This package contains the wireless regulatory database Central
 Regulatory Database Agent (CRDA) daemon.  The database contains information on
 country-specific regulations for the wireless spectrum.")
-    (license isc)))
+    (license license:isc)))
 
 (define-public lm-sensors
   (package
@@ -1915,7 +1867,7 @@ country-specific regulations for the wireless spectrum.")
      "Lm-sensors is a hardware health monitoring package for Linux.  It allows
 you to access information from temperature, voltage, and fan speed sensors.
 It works with most newer systems.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public i2c-tools
   (package
@@ -1945,7 +1897,7 @@ It works with most newer systems.")
 Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,
 EEPROM decoding scripts, EEPROM programming tools, and a python module for
 SMBus access.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public xsensors
   (package
@@ -1982,7 +1934,7 @@ SMBus access.")
      "Xsensors reads data from the libsensors library regarding hardware
 health such as temperature, voltage and fan speed and displays the information
 in a digital read-out.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public perf
   (package
@@ -2058,7 +2010,7 @@ containers.  It can be used for running a command or even booting an OS inside
 an isolated container, created with the help of Linux namespaces.  It is
 similar in functionality to chroot, although pflask provides better isolation
 thanks to the use of namespaces.")
-    (license bsd-2)))
+    (license license:bsd-2)))
 
 (define-public hdparm
   (package
@@ -2084,7 +2036,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 multiple-mode.")
-    (license (non-copyleft "file://LICENSE.TXT"))))
+    (license (license:non-copyleft "file://LICENSE.TXT"))))
 
 (define-public rfkill
   (package
@@ -2110,8 +2062,8 @@ is for enabling irq-unmasking and IDE multiple-mode.")
      "rfkill is a simple tool for accessing the rfkill device interface,
 which is used to enable and disable wireless networking devices, typically
 WLAN, Bluetooth and mobile broadband.")
-    (license (non-copyleft "file://COPYING"
-                           "See COPYING in the distribution."))))
+    (license (license:non-copyleft "file://COPYING"
+                                   "See COPYING in the distribution."))))
 
 (define-public acpid
   (package
@@ -2133,7 +2085,7 @@ Configuration and Power Interface (ACPI) events.  acpid should be started
 during the system boot, and will run as a background process.  When an ACPI
 event is received from the kernel, acpid will examine the list of rules
 specified in /etc/acpi/events and execute the rules that match the event.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public sysfsutils
   (package
@@ -2157,7 +2109,7 @@ Linux kernel versions 2.5+ that exposes a system's device tree.  The package
 also contains the libsysfs library.")
     ;; The library is under lgpl2.1+ (all files say "or any later version").
     ;; The rest is mostly gpl2, with a few files indicating gpl2+.
-    (license (list gpl2 gpl2+ lgpl2.1+))))
+    (license (list license:gpl2 license:gpl2+ license:lgpl2.1+))))
 
 (define-public sysfsutils-1
   (package
@@ -2209,7 +2161,7 @@ also contains the libsysfs library.")
      "The cpufrequtils suite contains utilities to retrieve CPU frequency
 information, and set the CPU frequency if supported, using the cpufreq
 capabilities of the Linux kernel.")
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public libraw1394
   (package
@@ -2232,7 +2184,7 @@ the Linux IEEE-1394 subsystem, which provides direct access to the connected
 1394 buses to user space.  Through libraw1394/raw1394, applications can directly
 send to and receive from other nodes without requiring a kernel driver for the
 protocol in question.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libavc1394
   (package
@@ -2255,7 +2207,7 @@ protocol in question.")
     (description
      "Libavc1394 is a programming interface to the AV/C specification from
 the 1394 Trade Association.  AV/C stands for Audio/Video Control.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public libiec61883
   (package
@@ -2279,7 +2231,7 @@ the 1394 Trade Association.  AV/C stands for Audio/Video Control.")
     (description
      "The libiec61883 library provides a higher level API for streaming DV,
 MPEG-2 and audio over Linux IEEE 1394.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public mdadm
   (package
@@ -2322,7 +2274,7 @@ MPEG-2 and audio over Linux IEEE 1394.")
      "mdadm is a tool for managing Linux Software RAID arrays.  It can create,
 assemble, report on, and monitor arrays.  It can also move spares between raid
 arrays when needed.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public libaio
   (package
@@ -2351,12 +2303,12 @@ arrays when needed.")
      "This library enables userspace to use Linux kernel asynchronous I/O
 system calls, important for the performance of databases and other advanced
 applications.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
 
 (define-public bluez
   (package
     (name "bluez")
-    (version "5.30")
+    (version "5.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2364,7 +2316,7 @@ applications.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "0b1qbnq1xzcdw5rajg9yyg31bf21jnff0n6gnf1snz89bbdllfhy"))))
+                "1wkqwmi5krr37mxcqqlp5m2xnw7vw70v3ww7j09vvlskxcdflhx3"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2388,7 +2340,7 @@ applications.")
     (description
      "BlueZ provides support for the core Bluetooth layers and protocols.  It
 is flexible, efficient and uses a modular implementation.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public fuse-exfat
   (package
@@ -2446,4 +2398,47 @@ id=0B7CLI-REKbE3VTdaa0EzTkhYdU0")
     (description
      "This package provides a FUSE-based file system that provides read and
 write access to exFAT devices.")
-    (license gpl2+)))
+    (license license:gpl2+)))
+
+(define-public gpm
+  (package
+    (name "gpm")
+    (version "1.20.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.nico.schottelius.org/software/gpm/archives/gpm-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "13d426a8h403ckpc8zyf7s2p5rql0lqbg2bv0454x0pvgbfbf4gh"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'bootstrap
+                    (lambda _
+                      ;; The tarball was not generated with 'make dist' so we
+                      ;; need to bootstrap things ourselves.
+                      (and (zero? (system* "./autogen.sh"))
+                           (begin
+                             (patch-makefile-SHELL "Makefile.include.in")
+                             #t)))))
+
+       ;; Make sure programs find libgpm.so.
+       #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib"))))
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("bison" ,bison)
+       ("flex" ,flex)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (home-page "http://www.nico.schottelius.org/software/gpm/")
+    (synopsis "Mouse support for the Linux console")
+    (description
+     "The GPM (general-purpose mouse) daemon is a mouse server for
+applications running on the Linux console.  It allows users to select items
+and copy/paste text in the console and in xterm.")
+    (license license:gpl2+)))