summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--emacs/guix-main.scm20
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/bioinformatics.scm4
-rw-r--r--gnu/packages/education.scm4
-rw-r--r--gnu/packages/game-development.scm103
-rw-r--r--gnu/packages/games.scm172
-rw-r--r--gnu/packages/gnome.scm30
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/golang.scm154
-rw-r--r--gnu/packages/imagemagick.scm4
-rw-r--r--gnu/packages/linux.scm11
-rw-r--r--gnu/packages/mail.scm4
-rw-r--r--gnu/packages/maths.scm4
-rw-r--r--gnu/packages/music.scm11
-rw-r--r--gnu/packages/patches/beets-image-test-failure.patch46
-rw-r--r--gnu/packages/patches/tuxpaint-stamps-path.patch24
-rw-r--r--gnu/packages/protobuf.scm4
-rw-r--r--gnu/packages/skarnet.scm107
-rw-r--r--gnu/packages/video.scm38
-rw-r--r--guix/scripts.scm9
20 files changed, 667 insertions, 88 deletions
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index cbf7cdc474..040932f307 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -46,6 +46,7 @@
  (guix)
  (guix combinators)
  (guix git-download)
+ (guix grafts)
  (guix packages)
  (guix profiles)
  (guix licenses)
@@ -930,15 +931,16 @@ OUTPUTS is a list of package outputs (may be an empty list)."
          (new-manifest (manifest-perform-transaction
                         manifest transaction)))
     (unless (and (null? install) (null? remove))
-      (with-store store
-        (set-build-options store
-                           #:print-build-trace #f
-                           #:use-substitutes? use-substitutes?)
-        (show-manifest-transaction store manifest transaction
-                                   #:dry-run? dry-run?)
-        (build-and-use-profile store profile new-manifest
-                               #:use-substitutes? use-substitutes?
-                               #:dry-run? dry-run?)))))
+      (parameterize ((%graft? (not dry-run?)))
+        (with-store store
+          (set-build-options store
+                             #:print-build-trace #f
+                             #:use-substitutes? use-substitutes?)
+          (show-manifest-transaction store manifest transaction
+                                     #:dry-run? dry-run?)
+          (build-and-use-profile store profile new-manifest
+                                 #:use-substitutes? use-substitutes?
+                                 #:dry-run? dry-run?))))))
 
 (define (delete-generations* profile generations)
   "Delete GENERATIONS from PROFILE.
diff --git a/gnu/local.mk b/gnu/local.mk
index b91a925def..0428cd3a66 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -446,7 +446,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/avidemux-install-to-lib.patch		\
   %D%/packages/patches/awesome-reproducible-png.patch		\
   %D%/packages/patches/bash-completion-directories.patch	\
-  %D%/packages/patches/beets-image-test-failure.patch		\
   %D%/packages/patches/bigloo-gc-shebangs.patch			\
   %D%/packages/patches/binutils-ld-new-dtags.patch		\
   %D%/packages/patches/binutils-loongson-workaround.patch	\
@@ -791,6 +790,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tophat-build-with-later-seqan.patch	\
   %D%/packages/patches/torsocks-dns-test.patch			\
   %D%/packages/patches/totem-debug-format-fix.patch		\
+  %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
   %D%/packages/patches/unzip-CVE-2014-8141.patch		\
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 29fb3be0db..9cdc692d07 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1568,7 +1568,7 @@ identify enrichments with functional annotations of the genome.")
 (define-public diamond
   (package
     (name "diamond")
-    (version "0.8.16")
+    (version "0.8.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1577,7 +1577,7 @@ identify enrichments with functional annotations of the genome.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "10p4lm88fk2gy2mqxhfllyfig8zyd2l7hwmqkhlilrv9h76bm71n"))))
+                "1479sz0phddv40kx4xv95g2q7m3wy52smjb4apn0xpn2gqgj4nrx"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 834cd6baf6..fde1e1b342 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -65,5 +65,7 @@
     (home-page "http://www.stellarium.org/")
     (synopsis "3D sky viewer")
     (description "Stellarium is a planetarium.  It shows a realistic sky in
-3D, just like what you see with the naked eye, binoculars, or a telescope.")
+3D, just like what you see with the naked eye, binoculars, or a telescope.  It
+can be used to control telescopes over a serial port for tracking celestial
+objects.")
     (license license:gpl2+)))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 7067a714e7..0bfd0c5d30 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -31,6 +31,7 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
@@ -41,8 +42,11 @@
   #:use-module (gnu packages gnunet)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages music)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages zip)
   #:use-module (gnu packages gl)
@@ -512,3 +516,102 @@ It offers the following features:
 OpenGL programs with character rendering services via an application programming
 interface (API).")
     (license (list license:expat license:lgpl2.1+))))
+
+(define-public python-pygame
+  (package
+    (name "python-pygame")
+    (version "1.9.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://pygame.org/ftp/pygame-"
+                                  version "release.tar.gz"))
+              (sha256
+               (base32
+                "0cyl0ww4fjlf289pjxa53q4klyn55ajvkgymw0qrdgp4593raq52"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f ; Tests require pygame to be installed first.
+       #:phases
+       (modify-phases %standard-phases
+         ;; Set the paths to the dependencies manually because
+         ;; the configure script does not allow passing them as
+         ;; parameters.  This also means we can skip the configure
+         ;; phase.
+         (add-before 'build 'set-library-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((sdl-ref   (assoc-ref inputs "sdl"))
+                   (font-ref  (assoc-ref inputs "sdl-ttf"))
+                   (image-ref (assoc-ref inputs "sdl-image"))
+                   (mixer-ref (assoc-ref inputs "sdl-mixer"))
+                   (smpeg-ref (assoc-ref inputs "libsmpeg"))
+                   (png-ref   (assoc-ref inputs "libpng"))
+                   (jpeg-ref  (assoc-ref inputs "libjpeg"))
+                   (v4l-ref   (assoc-ref inputs "v4l-utils"))
+                   (out-ref   (assoc-ref outputs "out")))
+               (substitute* "Setup.in"
+                 (("SDL = -I/usr/include/SDL")
+                  (string-append "SDL = -I" sdl-ref "/include/SDL -I.")))
+               (substitute* "Setup.in"
+                 (("FONT = -lSDL_ttf")
+                  (string-append "FONT = -I" font-ref "/include/SDL -L"
+                                             font-ref "/lib -lSDL_ttf")))
+               (substitute* "Setup.in"
+                 (("IMAGE = -lSDL_image")
+                  (string-append "IMAGE = -I" image-ref "/include/SDL -L"
+                                              image-ref "/lib -lSDL_image")))
+               (substitute* "Setup.in"
+                 (("MIXER = -lSDL_mixer")
+                  (string-append "MIXER = -I" mixer-ref "/include/SDL -L"
+                                              mixer-ref "/lib -lSDL_mixer")))
+               (substitute* "Setup.in"
+                 (("SMPEG = -lsmpeg")
+                  (string-append "SMPEG = -I" smpeg-ref "/include/smpeg -L"
+                                              smpeg-ref "/lib -lsmpeg")))
+               (substitute* "Setup.in"
+                 (("PNG = -lpng")
+                  (string-append "PNG = -I" png-ref "/include -L"
+                                            png-ref "/lib -lpng")))
+               (substitute* "Setup.in"
+                 (("JPEG = -ljpeg")
+                  (string-append "JPEG = -I" jpeg-ref "/include -L"
+                                 jpeg-ref "/lib -ljpeg")))
+               (substitute* "Setup.in"
+                 (("^pypm") "#pypm"))
+               (substitute* "src/movie.c")
+               ;; Create a path to a header file provided by v4l-utils.
+               (system* "mkdir" "linux")
+               (system* "ln" "--symbolic"
+                        (string-append v4l-ref "/include/libv4l1-videodev.h")
+                        "linux/videodev.h")
+               (system* "ln" "--symbolic" "Setup.in" "Setup")))))))
+    (native-inputs
+     `(("python-setuptools" ,python-setuptools)))
+    (inputs
+     `(("sdl" ,sdl)
+       ("sdl-image" ,sdl-image)
+       ("sdl-mixer" ,sdl-mixer)
+       ("sdl-ttf" ,sdl-ttf)
+       ("sdl-gfx" ,sdl-gfx)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libX11" ,libx11)
+       ("libsmpeg" ,libsmpeg)
+       ("portmidi" ,portmidi)
+       ("v4l-utils" ,v4l-utils)))
+    (home-page "http://www.pygame.org")
+    (synopsis "SDL wrapper for Python")
+    (description "Pygame is a set of Python modules designed for writing games.
+Pygame adds functionality on top of the excellent SDL library. This allows you
+to create fully featured games and multimedia programs in the python language.")
+    (license (list license:bsd-2
+                   ;; python numeric license as listed by Debian looks like
+                   ;; an Expat-style license with a warranty disclaimer for
+                   ;; the U.S. government and the University of California.
+                   license:expat
+                   license:lgpl2.0+
+                   license:lgpl2.1+
+                   license:gpl3+
+                   license:psfl
+                   license:public-domain
+                   license:lgpl2.1+))))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 3b193eb21c..07a419a8ca 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -55,12 +55,15 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages fltk)
   #: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)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages libcanberra)
@@ -70,6 +73,7 @@
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages netpbm)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages xorg)
@@ -94,9 +98,7 @@
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages tcl)
-  #:use-module (gnu packages fribidi)
   #:use-module (gnu packages xdisorg)
-  #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system haskell)
   #:use-module (guix build-system cmake)
@@ -1871,14 +1873,14 @@ and a game metadata scraper.")
 (define openttd-engine
   (package
     (name "openttd-engine")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin (method url-fetch)
              (uri (string-append "http://binaries.openttd.org/releases/"
                                  version "/openttd-" version "-source.tar.xz"))
              (sha256
               (base32
-               "1cjf9gz7d0sn7893wv9d00q724sxv3d81bgb0c5f5ppz2ssyc4jc"))
+               "1ak32fj5xkk2fvmm3g8i7wzmk4bh2ijsp8fzvvw5wj6365p9j24v"))
              (modules '((guix build utils)))
              (snippet
               ;; The DOS port contains proprietary software.
@@ -1918,7 +1920,8 @@ and a game metadata scraper.")
 passengers by land, water and air.  It is a re-implementation of Transport
 Tycoon Deluxe with many enhancements including multiplayer mode,
 internationalization support, conditional orders and the ability to clone,
-autoreplace and autoupdate vehicles.")
+autoreplace and autoupdate vehicles.  This package only includes the game engine.  When you start
+it you will be prompted to download a graphics set.")
     (home-page "http://openttd.org/")
     ;; This package is GPLv2, except for a few files located in
     ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
@@ -2531,3 +2534,162 @@ safety of the Chromium vessel.")
     ;; Clarified Artistic License for everything but sound, which is covered
     ;; by the Expat License.
     (license (list license:clarified-artistic license:expat))))
+
+(define-public tuxpaint
+  (package
+    (name "tuxpaint")
+    (version "0.9.22")                  ;keep VER_DATE below in sync
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
+                           version "/tuxpaint-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1qrbrdck9yxpcg3si6jb9i11w8lw9h4hqad0pfaxgyiniqpr7gca"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove win32 directory which contains binary dll's and the
+           ;; deprecated visualc directory.
+           (for-each delete-file-recursively '("win32" "visualc"))
+           (substitute* "Makefile"
+             ;; Do not rely on $(GPERF) being an absolute file name
+             (("\\[ -x \\$\\(GPERF\\) \\]")
+              "$(GPERF) --version >/dev/null 2>&1"))))
+       (patches (search-patches "tuxpaint-stamps-path.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gperf" ,gperf)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("fribidi" ,fribidi)
+       ("gettext" ,gnu-gettext)
+       ("libpng" ,libpng)
+       ("librsvg" ,librsvg)
+       ("libpaper" ,libpaper)
+       ("netpbm" ,netpbm)
+       ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
+    ;; TODO: Use system fonts rather than those in data/fonts
+    (arguments
+     `(#:make-flags `("VER_DATE=2014-08-23"
+                      "GPERF=gperf" "CC=gcc"
+                      "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
+                      ,(string-append "PREFIX=" %output)
+                      "GNOME_PREFIX=$(PREFIX)"
+                      "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
+       #:tests? #f                      ;No tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)   ;no configure phase
+                  (add-after 'install 'fix-import
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (net (assoc-ref inputs "netpbm"))
+                             (tpi (string-append out "/bin/tuxpaint-import")))
+                        (substitute* tpi
+                          ;; Point to installation prefix so that the default
+                          ;; configure file is found.
+                          (("/usr/local") out))
+                        ;; tuxpaint-import uses a bunch of programs from
+                        ;; netpbm, so make sure it knows where those are
+                        (wrap-program tpi
+                          `("PATH" ":" prefix
+                            (,(string-append net "/bin"))))))))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "TUXPAINT_STAMPS_PATH")
+            (files '("share/tuxpaint/stamps")))))
+    (home-page "http://www.tuxpaint.org")
+    (synopsis "Drawing software for children")
+    (description
+     "Tux Paint is a free drawing program designed for young children (kids
+ages 3 and up).  It has a simple, easy-to-use interface; fun sound effects;
+and an encouraging cartoon mascot who helps guide children as they use the
+program.  It provides a blank canvas and a variety of drawing tools to help
+your child be creative.")
+    (license license:gpl2+)))
+
+(define-public tuxpaint-stamps
+  (package
+    (name "tuxpaint-stamps")
+    (version "2014.08.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
+                           (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
+                           "/tuxpaint-stamps-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q"))))
+    (build-system trivial-build-system)
+    (native-inputs
+     `(("tar" ,tar)
+       ("gzip" ,gzip)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (setenv "PATH"
+                           (string-append
+                            (assoc-ref %build-inputs "tar") "/bin" ":"
+                            (assoc-ref %build-inputs "gzip") "/bin"))
+                   (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
+                   (chdir (string-append ,name "-" ,version))
+                   (let ((dir (string-append %output "/share/tuxpaint/stamps")))
+                     (mkdir-p dir)
+                     (copy-recursively "stamps" dir)))))
+    (home-page (package-home-page tuxpaint))
+    (synopsis "Stamp images for Tux Paint")
+    (description
+     "This package contains a set of \"Rubber Stamp\" images which can be used
+with the \"Stamp\" tool within Tux Paint.")
+    (license license:gpl2+)))
+
+(define-public tuxpaint-config
+  (package
+    (name "tuxpaint-config")
+    (version "0.0.13")                  ;keep VER_DATE below in sync
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
+                           version "/tuxpaint-config-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1z12s46mvy87qs3vgq9m0ki9pp21zqc52mmgphahpihw3s7haf6v"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("gettext" ,gnu-gettext)))
+    (inputs
+     `(("fltk" ,fltk)
+       ("libpaper" ,libpaper)
+       ;; TODO: Should the following be propagated by fltk?
+       ("libx11" ,libx11)
+       ("libxft" ,libxft)
+       ("mesa" ,mesa)))
+    (arguments
+     `(#:make-flags `("VER_DATE=2014-08-23"
+                      "CONFDIR=/etc/tuxpaint" ;don't write to store
+                      ,(string-append "PREFIX=" %output)
+                      "GNOME_PREFIX=$(PREFIX)")
+       #:tests? #f                      ;no tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)   ;no configure phase
+                  (add-before 'install 'gzip-no-name
+                    (lambda* _
+                      (substitute* "Makefile"
+                        ;; tuxpaint-config compresses its own documentation;
+                        ;; make sure it uses flags for reproducibility.
+                        (("gzip") "gzip --no-name"))))
+                  (add-before 'install 'make-install-dirs
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (mkdir-p (string-append out "/bin"))
+                        #t))))))
+    (home-page (package-home-page tuxpaint))
+    (synopsis "Configure Tux Paint")
+    (description
+     "Tux Paint Config is a graphical configuration editor for Tux Paint.")
+    (license license:gpl2)))            ;no "or later" present
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b2f46959e6..445e94a67e 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5388,3 +5389,32 @@ compiled.")
 GLib/GObject code.")
     (home-page "https://wiki.gnome.org/Projects/GFBGraph")
     (license license:lgpl2.1+)))
+
+(define-public libgnomekbd
+  (package
+    (name "libgnomekbd")
+    (version "3.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "02bahnl3vaqyqyr99r9kwka84sxj8qdrz7x0bf97192dysqaa7n4"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")
+       ("intltool" ,intltool)))
+    (propagated-inputs
+     ;; Referred to in .h files and .pc.
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("libxklavier" ,libxklavier)))
+    (home-page "https://www.gnome.org")
+    (synopsis "GNOME keyboard configuration library")
+    (description
+     "Libgnomekbd is a keyboard configuration library for the GNOME desktop
+environment, which can notably display keyboard layouts.")
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 67b04375e8..4d888bdb2a 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -316,7 +316,9 @@ services.")
     (arguments
      `(#:configure-flags
        (list "--without-libunique"
-             "--with-qrencode")))
+             "--with-qrencode"
+             (string-append "--with-gnunet="
+                            (assoc-ref %build-inputs "gnunet")))))
     (inputs
      `(("gnunet" ,gnunet)
        ("libgcrypt" ,libgcrypt)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index cc1b66f0ae..09d962dd1d 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is an addendum GNU Guix.
 ;;;
@@ -183,3 +184,156 @@ compiled, statically typed language in the tradition of C and C++, with
 garbage collection, various safety features and in the style of communicating
 sequential processes (CSP) concurrent programming features added.")
     (license license:bsd-3)))
+
+(define-public go-1.6
+  (package
+    (inherit go-1.4)
+    (name "go")
+    (version "1.6.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://storage.googleapis.com/golang/"
+                           name version ".src.tar.gz"))
+       (sha256
+        (base32
+         "002v6irgfd63zp9iza8nski5by0lar033j3ddpqiikw6bznsw9k3"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-1.4)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'prebuild
+             ;; TODO: Most of this could be factorized with Go 1.4.
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+                      (ld (string-append (assoc-ref inputs "libc") "/lib"))
+                      (loader (car (find-files ld "^ld-linux.+")))
+                      (net-base (assoc-ref inputs "net-base"))
+                      (tzdata-path
+                       (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+                      (output (assoc-ref outputs "out")))
+
+                 ;; Removing net/ tests, which fail when attempting to access
+                 ;; network resources not present in the build container.
+                 (for-each delete-file
+                           '("net/listen_test.go" "net/parse_test.go"))
+
+                 (substitute* "os/os_test.go"
+                   (("/usr/bin") (getcwd))
+                   (("/bin/pwd") (which "pwd")))
+
+                 ;; Add libgcc to runpath
+                 (substitute* "cmd/link/internal/ld/lib.go"
+                   (("!rpath.set") "true"))
+                 (substitute* "cmd/go/build.go"
+                   (("cgoldflags := \\[\\]string\\{\\}")
+                    (string-append "cgoldflags := []string{"
+                                   "\"-rpath=" gcclib "\""
+                                   "}"))
+                   (("ldflags = setextld\\(ldflags, compiler\\)")
+                    (string-append
+                     "ldflags = setextld(ldflags, compiler)\n"
+                     "ldflags = append(ldflags, \"-r\")\n"
+                     "ldflags = append(ldflags, \"" gcclib "\")\n"))
+                   (("\"-lgcc_s\", ")
+                    (string-append
+                     "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
+
+                 ;; Disable failing tests: these tests attempt to access
+                 ;; commands or network resources which are neither available or
+                 ;; necessary for the build to succeed.
+                 (for-each
+                  (match-lambda
+                    ((file regex)
+                     (substitute* file
+                       ((regex all before test_name)
+                        (string-append before "Disabled" test_name)))))
+                  '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+                    ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+                    ("os/os_test.go" "(.+)(TestHostname.+)")
+                    ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
+                    ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
+                    ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
+                    ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
+                    ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
+                    ("syscall/exec_linux_test.go"
+                     "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
+
+                 (substitute* "../misc/cgo/testsanitizers/test.bash"
+                   (("(CC=)cc" all var) (string-append var "gcc")))
+
+                 ;; fix shebang for testar script
+                 ;; note the target script is generated at build time.
+                 (substitute* "../misc/cgo/testcarchive/test.bash"
+                   (("#!/usr/bin/env") (string-append "#!" (which "env"))))
+
+                 (substitute* "net/lookup_unix.go"
+                   (("/etc/protocols") (string-append net-base "/etc/protocols")))
+                 (substitute* "net/port_unix.go"
+                   (("/etc/services") (string-append net-base "/etc/services")))
+                 (substitute* "time/zoneinfo_unix.go"
+                   (("/usr/share/zoneinfo/") tzdata-path))
+                 (substitute* (find-files "cmd" "asm.c")
+                   (("/lib/ld-linux.*\\.so\\.[0-9]") loader))
+                 #t)))
+           (add-before 'build 'set-bootstrap-variables
+             (lambda* (#:key outputs inputs #:allow-other-keys)
+               ;; Tell the build system where to find the bootstrap Go.
+               (let ((go  (assoc-ref inputs "go"))
+                     (out (assoc-ref outputs "out")))
+                 (setenv "GOROOT_BOOTSTRAP" go)
+                 (setenv "PATH"
+                         (string-append out "/bin:"
+                                        (dirname (getcwd)) "/bin:"
+                                        (getenv "PATH")))
+
+                 ;; XXX: The following variables seem unrelated.
+                 (setenv "GOGC" "400")
+                 (setenv "GO_TEST_TIMEOUT_SCALE" "9999")
+                 #t)))
+           (replace 'install
+             ;; TODO: Most of this could be factorized with Go 1.4.
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((output (assoc-ref outputs "out"))
+                      (doc_out (assoc-ref outputs "doc"))
+                      (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+                      (src (string-append
+                            (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
+                 (delete-file-recursively "../pkg/bootstrap")
+
+                 (mkdir-p src)
+                 (copy-recursively "../test" (string-append src "/test"))
+                 (delete-file-recursively "../test")
+                 (mkdir-p docs)
+                 (copy-recursively "../api" (string-append docs "/api"))
+                 (delete-file-recursively "../api")
+                 (copy-recursively "../doc" (string-append docs "/doc"))
+                 (delete-file-recursively "../doc")
+
+                 (for-each
+                  (lambda (file)
+                    (let* ((filein (string-append "../" file))
+                           (fileout (string-append docs "/" file)))
+                      (copy-file filein fileout)
+                      (delete-file filein)))
+                  ;; Note the slightly different file names compared to 1.4.
+                  '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+                    "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
+
+                 (copy-recursively "../" output))))))))
+    (native-inputs
+     `(("go" ,go-1.4)
+       ,@(package-native-inputs go-1.4)))))
+
+(define-public go go-1.6)
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index e78d4e19f4..549c92b457 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -41,14 +41,14 @@
 (define-public imagemagick
   (package
     (name "imagemagick")
-    (version "6.9.5-3")
+    (version "6.9.5-4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1v5lbmyd8w6rxrzcwcv61f7cd4iqdylbpcry2j64nhxp7d4rzv3g"))))
+               "1n7fjbjh6s6rblkga8lkdqcd2b3vjgcm5jcx1r8vnww6b2w9ym00"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths")
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 68ca5fceee..e65327c61d 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -358,13 +358,13 @@ It has been modified to remove all non-free binary blobs.")
 (define-public linux-libre-4.1
   (package
     (inherit linux-libre)
-    (version "4.1.28")
+    (version "4.1.29")
     (source (origin
               (method url-fetch)
               (uri (linux-libre-urls version))
               (sha256
                (base32
-                "02b7hq32cyx3h04k7l3mfzhh09snh5x4pxiwxllwchw94a6lkxl8"))))
+                "1ygd89x5plkpxisafhnrnfbw69a257sza2gw15wj9jkzxs36a1jp"))))
     (native-inputs
      (let ((conf (kernel-config (or (%current-target-system)
                                     (%current-system))
@@ -2590,7 +2590,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "4.5.3")
+    (version "4.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -2598,7 +2598,7 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "1lzbw275xgv69v4z8hmsf3jnip38116hxhkpv0madk8wv049drz6"))))
+                "06c9l6m3w29dndk17jrlpgr01wykl10h34zva8zc2c571z6mrlaf"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of binaries in "out" (~16MiB!)
@@ -2628,7 +2628,8 @@ and copy/paste text in the console and in xterm.")
                      ;; For building documentation
                      ("libxml2" ,libxml2)
                      ("docbook-xml" ,docbook-xml)
-                     ("docbook-xsl" ,docbook-xsl)))
+                     ("docbook-xsl" ,docbook-xsl)
+                     ("which" ,which)))
     (home-page "https://btrfs.wiki.kernel.org/")
     (synopsis "Create and manage btrfs copy-on-write file systems")
     (description "Btrfs is a copy-on-write (CoW) filesystem for Linux aimed at
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a043baa549..28978a8ba5 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -180,14 +180,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.6.1")
+    (version "1.6.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "087dz1y9qhl4ikhsnnb4xmyvs82w6kx480w8zj130wdiqvn6rclq"))
+               "13hxmji7v9m2agmvzrs7gzx8s3c9jiwrv7pbkr7z1kc6ckq2xl65"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index e57eaa0536..ea7575abb2 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -115,13 +115,13 @@ interactive dialogs to guide them.")
 (define-public units
   (package
    (name "units")
-   (version "2.12")
+   (version "2.13")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/units/units-" version
                                 ".tar.gz"))
             (sha256 (base32
-                     "1jxvjknz2jhq773jrwx9gc1df3gfy73yqmkjkygqxzpi318yls3q"))))
+                     "1awhjw9zjlfb8s5g3yyx63f7ddfcr1sanlbxpqifmrgq24ql198b"))))
    (build-system gnu-build-system)
    (synopsis "Conversion between thousands of scales")
    (description
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 75da9dad20..8dbdf2ca29 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
+;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1518,17 +1519,13 @@ websites such as Libre.fm.")
 (define-public beets
   (package
     (name "beets")
-    (version "1.3.18")
+    (version "1.3.19")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                     "https://pypi.python.org/packages/"
-                     "14/6f/c9c79c5339ab3ecced265ca18adbf5bae3d4058bae737b6164d738fb4d2c/"
-                     name "-" version ".tar.gz"))
-              (patches (search-patches "beets-image-test-failure.patch"))
+              (uri (pypi-uri "beets" version))
               (sha256
                (base32
-                "09pgyywa5llbc36y0lrr21ywgsp8m2zx6p8ncf8hxik28knd5kld"))))
+                "1vi1dh3fr554bnm8y9pjy09hblw18v6cl2jppzwlp72afri1w93b"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2 ; only Python 2 is supported
diff --git a/gnu/packages/patches/beets-image-test-failure.patch b/gnu/packages/patches/beets-image-test-failure.patch
deleted file mode 100644
index 360d7d3ed4..0000000000
--- a/gnu/packages/patches/beets-image-test-failure.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Fix test failure due to missing image library backend.
-
-Cherry-picked from upstream:
-https://github.com/beetbox/beets/commit/07c95a1bf16bf86c640436208dda828cc7df0181
-
-From 07c95a1bf16bf86c640436208dda828cc7df0181 Mon Sep 17 00:00:00 2001
-From: Adrian Sampson <adrian@radbox.org>
-Date: Thu, 2 Jun 2016 11:39:05 -0700
-Subject: [PATCH] Require an imaging backend for fuzzy ratio tests
-
-These fail outright if we don't have a way to get image sizes (e.g.,
-ImageMagick).
----
- test/test_art.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/test/test_art.py b/test/test_art.py
-index 02d26f4..1b12b76 100644
---- a/test/test_art.py
-+++ b/test/test_art.py
-@@ -561,21 +561,25 @@ def test_respect_enforce_ratio_no(self):
-         self._assertImageIsValidArt(self.IMG_500x490, True)
- 
-     def test_respect_enforce_ratio_px_above(self):
-+        self._require_backend()
-         self.plugin.enforce_ratio = True
-         self.plugin.margin_px = 5
-         self._assertImageIsValidArt(self.IMG_500x490, False)
- 
-     def test_respect_enforce_ratio_px_below(self):
-+        self._require_backend()
-         self.plugin.enforce_ratio = True
-         self.plugin.margin_px = 15
-         self._assertImageIsValidArt(self.IMG_500x490, True)
- 
-     def test_respect_enforce_ratio_percent_above(self):
-+        self._require_backend()
-         self.plugin.enforce_ratio = True
-         self.plugin.margin_percent = (500 - 490) / 500 * 0.5
-         self._assertImageIsValidArt(self.IMG_500x490, False)
- 
-     def test_respect_enforce_ratio_percent_below(self):
-+        self._require_backend()
-         self.plugin.enforce_ratio = True
-         self.plugin.margin_percent = (500 - 490) / 500 * 1.5
-         self._assertImageIsValidArt(self.IMG_500x490, True)
diff --git a/gnu/packages/patches/tuxpaint-stamps-path.patch b/gnu/packages/patches/tuxpaint-stamps-path.patch
new file mode 100644
index 0000000000..599a33c458
--- /dev/null
+++ b/gnu/packages/patches/tuxpaint-stamps-path.patch
@@ -0,0 +1,24 @@
+--- tuxpaint-0.9.22/src/tuxpaint.c
++++ tuxpaint-0.9.22/src/tuxpaint.c
+@@ -7474,11 +7474,21 @@
+ static void load_stamps(SDL_Surface * screen)
+ {
+   char *homedirdir = get_fname("stamps", DIR_DATA);
++  char *stamps_path = getenv("TUXPAINT_STAMPS_PATH");
+ 
+   default_stamp_size = compute_default_scale_factor(1.0);
+ 
+   load_stamp_dir(screen, homedirdir);
+   load_stamp_dir(screen, DATA_PREFIX "stamps");
++  /* Load any stamps in TUXPAINT_STAMPS_PATH */
++  if (stamps_path) {
++    char *token;
++    token = strtok(stamps_path, ":");
++    while (token != NULL) {
++      load_stamp_dir(screen, token);
++      token = strtok(NULL, ":");
++    }
++  }
+ #ifdef __APPLE__
+   load_stamp_dir(screen, "/Library/Application Support/TuxPaint/stamps");
+ #endif
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index e1a3d8a6f1..49be54c2b1 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -54,14 +54,14 @@ internal RPC protocols and file formats.")
 (define-public python-protobuf
   (package
     (name "python-protobuf")
-    (version "3.0.0b4")
+    (version "3.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "protobuf" version))
        (sha256
         (base32
-         "18zvvn8cgbcwi85ws2ny0k4qp33wd525spsb8sxvrj325mbx9cpk"))))
+         "1xbgbfg4g43bihkyw1a2giqa2gxmqc5wkh0fzqcb90qi1z1hpi7c"))))
     (build-system python-build-system)
     (inputs
      `(("python-six" ,python-six)))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index 57fc12d1a3..37e09d8642 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -204,3 +204,110 @@ as an alternative to the BIND, djbdns or other DNS clients.")))
 It includes command-line client and server management, TCP access control,
 privilege escalation across UNIX domain sockets, IDENT protocol management and
 clock synchronization.")))
+
+(define-public s6-rc
+  (package
+   (name "s6-rc")
+   (version "0.0.3.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append "http://skarnet.org/software/s6-rc/s6-rc-"
+                         version ".tar.gz"))
+     (sha256
+      (base32
+       "0bl94lbaphbpaaj4wbb86xqgp5bcgrf3m7p80mimw1qsjrvlxfay"))))
+    (build-system gnu-build-system)
+    (inputs `(("skalibs" ,skalibs)
+              ("execline" ,execline)
+              ("s6" ,s6)))
+    (arguments
+     '(#:configure-flags (list
+                          (string-append "--with-lib="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs")
+                          (string-append "--with-lib="
+                                         (assoc-ref %build-inputs "execline")
+                                         "/lib/execline")
+                          (string-append "--with-lib="
+                                         (assoc-ref %build-inputs "s6")
+                                         "/lib/s6")
+                          (string-append "--with-sysdeps="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs/sysdeps"))
+       #:tests? #f))
+    (home-page "http://skarnet.org/software/s6-rc")
+    (license isc)
+    (synopsis "Service manager for s6-based systems")
+    (description
+     "s6-rc is a service manager for s6-based systems, i.e. a suite of
+programs that can start and stop services, both long-running daemons and
+one-time initialization scripts, in the proper order according to a dependency
+tree.  It ensures that long-running daemons are supervised by the s6
+infrastructure, and that one-time scripts are also run in a controlled
+environment.")))
+
+(define-public s6-portable-utils
+  (package
+   (name "s6-portable-utils")
+   (version "2.0.6.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "http://skarnet.org/software/s6-portable-utils/s6-portable-utils-"
+           version ".tar.gz"))
+     (sha256
+      (base32
+       "0jwxj0ma4zd1h6i3i98nsp0miidr54phap7dqwf6c8vafq9psfr3"))))
+    (build-system gnu-build-system)
+    (inputs `(("skalibs" ,skalibs)))
+    (arguments
+     '(#:configure-flags (list
+                          (string-append "--with-lib="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs")
+                          (string-append "--with-sysdeps="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs/sysdeps"))
+       #:tests? #f))
+    (home-page "http://skarnet.org/software/s6-portable-utils")
+    (license isc)
+    (synopsis "Tiny command-line Unix utilities")
+    (description
+     "s6-portable-utils is a set of tiny general Unix utilities, often
+performing well-known tasks such as @command{cut} and @command{grep}, but
+optimized for simplicity and small size.  They were designed for embedded
+systems and other constrained environments, but they work everywhere.")))
+
+(define-public s6-linux-utils
+  (package
+   (name "s6-linux-utils")
+   (version "2.1.0.0")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "http://skarnet.org/software/s6-linux-utils/s6-linux-utils-"
+           version ".tar.gz"))
+     (sha256
+      (base32
+       "1bby751blynb7p8wd3npjm71lf10ysmfvqrd3dqrhhajpa2bl8rm"))))
+    (build-system gnu-build-system)
+    (inputs `(("skalibs" ,skalibs)))
+    (arguments
+     '(#:configure-flags (list
+                          (string-append "--with-lib="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs")
+                          (string-append "--with-sysdeps="
+                                         (assoc-ref %build-inputs "skalibs")
+                                         "/lib/skalibs/sysdeps"))
+       #:tests? #f))
+    (home-page "http://skarnet.org/software/s6-linux-utils")
+    (license isc)
+    (synopsis "Set of minimalistic Linux-specific system utilities")
+    (description
+     "s6-linux-utils is a set of minimalistic Linux-specific system utilities,
+such as @command{mount}, @command{umount}, and @command{chroot} commands,
+Linux uevent listeners, a @command{devd} device hotplug daemon, and more.")))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 06f7496b71..e3da8f1b46 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix svn-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
@@ -1524,3 +1526,39 @@ implementation.")
 your graphical desktop and encodes it as a video.  This is a useful tool for
 making @dfn{screencasts}.")
     (license license:gpl2+)))
+
+(define-public libsmpeg
+  (package
+    (name "libsmpeg")
+    (version "0.4.5")
+    (source (origin
+              (method svn-fetch)
+              (uri (svn-reference
+                    (url "svn://svn.icculus.org/smpeg/trunk/")
+                    (revision 401))) ; last revision before smpeg2 (for SDL 2.0)
+              (sha256
+               (base32
+                "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'autogen.sh
+                    (lambda _
+                      (zero? (system* "sh" "autogen.sh")))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("sdl" ,sdl2)))
+    (home-page "http://icculus.org/smpeg/")
+    (synopsis "SDL MPEG decoding library")
+    (description
+     "SMPEG (SDL MPEG Player Library) is a free MPEG1 video player library
+with sound support.  Video playback is based on the ubiquitous Berkeley MPEG
+player, mpeg_play v2.2.  Audio is played through a slightly modified mpegsound
+library, part of splay v0.8.2.  SMPEG supports MPEG audio (MP3), MPEG-1 video,
+and MPEG system streams.")
+    (license (list license:expat
+                   license:lgpl2.1
+                   license:lgpl2.1+
+                   license:gpl2))))
diff --git a/guix/scripts.scm b/guix/scripts.scm
index d84375f570..bbee50bc3d 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
-;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +19,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (guix scripts)
+  #:use-module (guix grafts)
   #:use-module (guix utils)
   #:use-module (guix ui)
   #:use-module (guix store)
@@ -105,11 +106,13 @@ true."
                         #:rest build-options)
   "Build PACKAGE using BUILD-OPTIONS acceptable by 'set-build-options'.
 Show what and how will/would be built."
-  (mbegin %store-monad
+  (mlet %store-monad ((grafting? ((lift0 %graft? %store-monad))))
     (apply set-build-options*
            #:use-substitutes? use-substitutes?
            (strip-keyword-arguments '(#:dry-run?) build-options))
-    (mlet %store-monad ((derivation (package->derivation package)))
+    (mlet %store-monad ((derivation (package->derivation
+                                     package #:graft? (and (not dry-run?)
+                                                           grafting?))))
       (mbegin %store-monad
         (maybe-build (list derivation)
                      #:use-substitutes? use-substitutes?