gnu: Add wl-clipboard.
[jackhill/guix/guix.git] / gnu / packages / graphics.scm
index 8e3c556..6e184d3 100644 (file)
@@ -3,10 +3,14 @@
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2018 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages graphics)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix packages)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system cmake)
-  #:use-module (guix build-system python)
-  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
-  #:use-module (gnu packages haskell)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages python)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages pulseaudio)  ;libsndfile, libsamplerate
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages multiprecision)
-  #:use-module (gnu packages boost)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
-  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages haskell)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages pdf)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages photo)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pth)
+  #:use-module (gnu packages pulseaudio)  ; libsndfile, libsamplerate
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public blender
   (package
     (name "blender")
-    (version "2.79")
+    (version "2.79b")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.blender.org/source/"
                                   "blender-" version ".tar.gz"))
               (sha256
                (base32
-                "16f84mdzkmwjmqahjj64kbyk4kagdj4mcr8qjazs1952d7kh7pm9"))))
+                "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"))
+              (patches (search-patches "blender-newer-ffmpeg.patch"))))
     (build-system cmake-build-system)
     (arguments
-     `(;; Test files are very large and not included in the release tarball.
-       #:tests? #f
-       #:configure-flags
-       (list "-DWITH_CODEC_FFMPEG=ON"
-             "-DWITH_CODEC_SNDFILE=ON"
-             "-DWITH_CYCLES=ON"
-             "-DWITH_DOC_MANPAGE=ON"
-             "-DWITH_FFTW3=ON"
-             "-DWITH_GAMEENGINE=ON"
-             "-DWITH_IMAGE_OPENJPEG=ON"
-             "-DWITH_INPUT_NDOF=ON"
-             "-DWITH_INSTALL_PORTABLE=OFF"
-             "-DWITH_JACK=ON"
-             "-DWITH_MOD_OCEANSIM=ON"
-             "-DWITH_PLAYER=ON"
-             "-DWITH_PYTHON_INSTALL=OFF"
-             "-DWITH_SYSTEM_OPENJPEG=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-broken-import
-           (lambda _
-             (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
-               (("import encode_bin") "from . import encode_bin"))
-             #t))
-         (add-after 'set-paths 'add-ilmbase-include-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; OpenEXR propagates ilmbase, but its include files do not appear
-             ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
-             ;; the CPATH to satisfy the dependency on "half.h".
-             (setenv "CPATH"
-                     (string-append (assoc-ref inputs "ilmbase")
-                                    "/include/OpenEXR"
-                                    ":" (or (getenv "CPATH") "")))
-             #t)))))
+      (let ((python-version (version-major+minor (package-version python))))
+       `(;; Test files are very large and not included in the release tarball.
+         #:tests? #f
+         #:configure-flags
+         (list "-DWITH_CODEC_FFMPEG=ON"
+               "-DWITH_CODEC_SNDFILE=ON"
+               "-DWITH_CYCLES=ON"
+               "-DWITH_DOC_MANPAGE=ON"
+               "-DWITH_FFTW3=ON"
+               "-DWITH_GAMEENGINE=ON"
+               "-DWITH_IMAGE_OPENJPEG=ON"
+               "-DWITH_INPUT_NDOF=ON"
+               "-DWITH_INSTALL_PORTABLE=OFF"
+               "-DWITH_JACK=ON"
+               "-DWITH_MOD_OCEANSIM=ON"
+               "-DWITH_PLAYER=ON"
+               "-DWITH_PYTHON_INSTALL=OFF"
+               "-DWITH_PYTHON_INSTALL=OFF"
+               "-DWITH_SYSTEM_OPENJPEG=ON"
+               (string-append "-DPYTHON_LIBRARY=python" ,python-version "m")
+               (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
+                              "/lib")
+               (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
+                              "/include/python" ,python-version "m")
+               (string-append "-DPYTHON_VERSION=" ,python-version))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-broken-import
+             (lambda _
+               (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
+                 (("import encode_bin") "from . import encode_bin"))
+               #t))
+           (add-after 'set-paths 'add-ilmbase-include-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; OpenEXR propagates ilmbase, but its include files do not appear
+               ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
+               ;; the CPATH to satisfy the dependency on "half.h".
+               (setenv "CPATH"
+                       (string-append (assoc-ref inputs "ilmbase")
+                                      "/include/OpenEXR"
+                                      ":" (or (getenv "CPATH") "")))
+               #t))))))
     (inputs
      `(("boost" ,boost)
        ("jemalloc" ,jemalloc)
        ("libjpeg" ,libjpeg)
        ("libpng" ,libpng)
        ("libtiff" ,libtiff)
-       ("ffmpeg-2.8" ,ffmpeg-2.8) ;<https://lists.gnu.org/archive/html/guix-devel/2016-04/msg01019.html>
+       ("ffmpeg" ,ffmpeg)
        ("fftw" ,fftw)
        ("jack" ,jack-1)
        ("libsndfile" ,libsndfile)
        ("freetype" ,freetype)
        ("glew" ,glew)
        ("openal" ,openal)
-       ("python" ,python-wrapper)
+       ("python" ,python)
        ("zlib" ,zlib)))
     (home-page "https://blender.org/")
     (synopsis "3D graphics creation suite")
@@ -148,19 +163,20 @@ application can be customized via its API for Python scripting.")
 (define-public assimp
   (package
     (name "assimp")
-    (version "3.3.1")
+    (version "4.1.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/assimp/assimp/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/assimp/assimp.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gy7zlgkf4nmyv8n674p3f30asis0gjz8icyy11i693n13ww71fk"))))
+                "1rhyqfhzifdj7yibyanph3rh13ykw3i98dnn8mz65j780472hw28"))))
     (build-system cmake-build-system)
     (inputs
      `(("zlib" ,zlib)))
-    (home-page "http://assimp.org/")
+    (home-page "http://www.assimp.org/")
     (synopsis "Asset import library")
     (description
      "The Open Asset Import Library loads more than 40 3D file formats into
@@ -213,14 +229,15 @@ many more.")
 (define-public ilmbase
   (package
     (name "ilmbase")
-    (version "2.2.0")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://savannah/openexr/ilmbase-"
+              (uri (string-append "https://github.com/openexr/openexr/releases"
+                                  "/download/v" version "/ilmbase-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c"))
+                "0qiq5bqq9rxhqjiym2k36sx4vq8adgrz6xf6qwizi9bqm78phsa5"))
               (patches (search-patches "ilmbase-fix-tests.patch"))))
     (build-system gnu-build-system)
     (home-page "http://www.openexr.com/")
@@ -236,7 +253,7 @@ exception-handling library.")
 (define-public ogre
   (package
     (name "ogre")
-    (version "1.10.7")
+    (version "1.10.11")
     (source
      (origin
        (method url-fetch)
@@ -244,7 +261,7 @@ exception-handling library.")
                            "/archive/v" version ".tar.gz"))
        (sha256
         (base32
-         "1ab354bmwwryxr4zgxchfkm6h4z38mjgif8yn89x640rsrgw5ipj"))
+         "13bdh9v4026qf8w8rbfln2rmwf0rby1a8fz55zpdvpy105i6cbpz"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (arguments
@@ -304,28 +321,22 @@ graphics.")
 (define-public openexr
   (package
     (name "openexr")
-    (version "2.2.0")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://savannah/openexr/openexr-"
+              (uri (string-append "https://github.com/openexr/openexr/releases"
+                                  "/download/v" version "/openexr-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n"))
+                "19jywbs9qjvsbkvlvzayzi81s976k53wg53vw4xj66lcgylb6v7x"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   (substitute* (find-files "." "tmpDir\\.h")
                     (("\"/var/tmp/\"")
                      "\"/tmp/\""))
-
-                  ;; Install 'ImfStdIO.h'.  Reported at
-                  ;; <https://lists.nongnu.org/archive/html/openexr-devel/2016-06/msg00001.html>
-                  ;; and <https://github.com/openexr/openexr/pull/184>.
-                  (substitute* "IlmImf/Makefile.in"
-                    (("ImfIO\\.h")
-                     "ImfIO.h ImfStdIO.h"))))
-              (patches (search-patches "openexr-missing-samples.patch"))))
+                  #t))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -357,15 +368,16 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
 (define-public openimageio
   (package
     (name "openimageio")
-    (version "1.6.15")
+    (version "1.7.19")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/OpenImageIO/oiio/"
-                                  "archive/Release-" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OpenImageIO/oiio.git")
+                    (commit (string-append "Release-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "144crq0205d0w5aq4iglh2rhzf54a8rv3pksy6d533b75w5d7rq7"))))
+                "0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))
     (build-system cmake-build-system)
     ;; FIXME: To run all tests successfully, test image sets from multiple
     ;; third party sources have to be present.  For details see
@@ -376,7 +388,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
     (inputs
      `(("boost" ,boost)
        ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-8)
+       ("libjpeg" ,libjpeg)
        ("libtiff" ,libtiff)
        ("giflib" ,giflib)
        ("openexr" ,openexr)
@@ -395,38 +407,39 @@ visual effects work for film.")
 (define-public openscenegraph
   (package
     (name "openscenegraph")
-    (version "3.4.0")
+    (version "3.6.3")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "http://trac.openscenegraph.org/downloads/developer_releases/"
-                           "OpenSceneGraph-" version ".zip"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openscenegraph/OpenSceneGraph")
+             (commit (string-append "OpenSceneGraph-" version))))
        (sha256
         (base32
-         "03h4wfqqk7rf3mpz0sa99gy715cwpala7964z2npd8jxfn27swjw"))
-       (patches (search-patches "openscenegraph-ffmpeg3.patch"))
-       (file-name (string-append name "-" version ".zip"))))
+         "0h32z15sa8sbq276j0iib0n707m8bs4p5ji9z2ah411446paad9q"))
+       (file-name (git-file-name name version))))
+    (properties
+     `((upstream-name . "OpenSceneGraph")))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ;; No test target available.
+     `(#:tests? #f ; no test target available
+       ;; Without this flag, 'rd' will be added to the name of the
+       ;; library binaries and break linking with other programs.
+       #:build-type "Release"
        #:configure-flags
        (list (string-append "-DCMAKE_INSTALL_RPATH="
                             (assoc-ref %outputs "out") "/lib:"
-                            (assoc-ref %outputs "out") "/lib64")
-             ;; We need to set this flag or otherwise 'rd' will be added
-             ;; to the name of the library binaries and break linking
-             ;; with other programs.
-             "-DCMAKE_BUILD_TYPE=Release")))
+                            (assoc-ref %outputs "out") "/lib64"))))
     (native-inputs
-     `(("unzip" ,unzip)))
+     `(("pkg-config" ,pkg-config)
+       ("unzip" ,unzip)))
     (inputs
-     `(("giflib", giflib)
-       ("jasper", jasper)
-       ("librsvg", librsvg)
-       ("pth", pth)
-       ("qtbase", qtbase)
-       ("ffmpeg", ffmpeg)
-       ("mesa", mesa)))
+     `(("giflib" ,giflib)
+       ("jasper" ,jasper)
+       ("librsvg" ,librsvg)
+       ("libxrandr" ,libxrandr)
+       ("ffmpeg" ,ffmpeg)
+       ("mesa" ,mesa)))
     (synopsis "High performance real-time graphics toolkit")
     (description
      "The OpenSceneGraph is a high performance 3D graphics toolkit
@@ -437,6 +450,71 @@ virtual reality, scientific visualization and modeling.")
     ;; LGPL 2.1, but with 4 exceptions. This version is called OSGPL.
     (license license:lgpl2.1)))
 
+(define-public povray
+  (package
+    (name "povray")
+    (version "3.7.0.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/POV-Ray/povray")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q114n4m3r7qy3yn954fq7p46rg7ypdax5fazxr9yj1jklf1lh6z"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Delete bundled libraries.
+                  (delete-file-recursively "libraries")
+                  #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("boost" ,boost)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("openexr" ,openexr)
+       ("sdl" ,sdl)
+       ("zlib" ,zlib)))
+    (arguments
+     '(#:configure-flags
+       (list "COMPILED_BY=Guix"
+             (string-append "--with-boost-libdir="
+                            (assoc-ref %build-inputs "boost") "/lib")
+             "CXXFLAGS=-std=c++11"
+             "--disable-optimiz-arch")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'run-prebuild
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (with-directory-excursion "unix"
+               (substitute* "prebuild.sh"
+                 (("/bin/sh") (which "sh")))
+               (invoke "sh" "prebuild.sh"))
+             #t))
+         ;; The bootstrap script is run by the prebuild script in the
+         ;; "run-prebuild" phase.
+         (delete 'bootstrap))))
+    (synopsis "Tool for creating three-dimensional graphics")
+    (description
+     "@code{POV-Ray} is short for the Persistence of Vision Raytracer, a tool
+for producing high-quality computer graphics.  @code{POV-Ray} creates
+three-dimensional, photo-realistic images using a rendering technique called
+ray-tracing.  It reads in a text file containing information describing the
+objects and lighting in a scene and generates an image of that scene from the
+view point of a camera also described in the text file.  Ray-tracing is not a
+fast process by any means, but it produces very high quality images with
+realistic reflections, shading, perspective and other effects.")
+    (home-page "http://www.povray.org/")
+    (license license:agpl3+)))
+
 (define-public rapicorn
   (package
     (name "rapicorn")
@@ -500,7 +578,7 @@ virtual reality, scientific visualization and modeling.")
        ("intltool" ,intltool)
        ("pkg-config" ,pkg-config)
        ("xvfb" ,xorg-server)))
-    (home-page "http://rapicorn.org")
+    (home-page "https://rapicorn.testbit.org/")
     (synopsis "Toolkit for rapid development of user interfaces")
     (description
      "Rapicorn is a toolkit for rapid development of user interfaces in C++
@@ -628,20 +706,20 @@ and understanding different BRDFs (and other component functions).")
        (list (string-append "--x-includes=" (assoc-ref %build-inputs "libx11")
                             "/include")
              (string-append "--x-libraries=" (assoc-ref %build-inputs "libx11")
-                            "/lib"))
+                            "/lib")
+             "--disable-examples")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'autoreconf
+         (replace 'bootstrap
            (lambda _
              ;; let's call configure from configure phase and not now
              (substitute* "autogen.sh" (("./configure") "# ./configure"))
-             (zero? (system* "sh" "autogen.sh")))))))
+             (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libtool" ,libtool)
        ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("bash" ,bash)))
+       ("automake" ,automake)))
     (inputs
      `(("libx11" ,libx11)
        ("freetype" ,freetype)
@@ -685,3 +763,86 @@ your terminal.  It comes bundled with predefined styles:
 
 (define-public python2-pastel
   (package-with-python2 python-pastel))
+
+(define-public fgallery
+  (package
+    (name "fgallery")
+    (version "1.8.2")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "http://www.thregr.org/~wavexx/software/fgallery/releases/"
+                "fgallery-" version ".zip"))
+              (sha256
+               (base32
+                "18wlvqbxcng8pawimbc8f2422s8fnk840hfr6946lzsxr0ijakvf"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (bin    (string-append out "/bin/"))
+                    (share  (string-append out "/share/fgallery"))
+                    (man    (string-append out "/share/man/man1"))
+                    (perl5lib (getenv "PERL5LIB"))
+                    (script (string-append share "/fgallery")))
+               (define (bin-directory input-name)
+                 (string-append (assoc-ref inputs input-name) "/bin"))
+
+               (mkdir-p man)
+               (copy-file "fgallery.1" (string-append man "/fgallery.1"))
+
+               (mkdir-p share)
+               (copy-recursively "." share)
+
+               ;; fgallery copies files from store when it is run. The
+               ;; read-only permissions from the store directories will cause
+               ;; fgallery to fail. Do not preserve file attributes when
+               ;; copying files to prevent it.
+               (substitute* script
+                 (("'cp'")
+                  "'cp', '--no-preserve=all'"))
+
+               (mkdir-p bin)
+               (symlink script (string-append out "/bin/fgallery"))
+
+               (wrap-program script
+                 `("PATH" ":" prefix
+                   ,(map bin-directory '("imagemagick"
+                                         "lcms"
+                                         "fbida"
+                                         "libjpeg"
+                                         "zip"
+                                         "jpegoptim"
+                                         "pngcrush"
+                                         "p7zip")))
+                 `("PERL5LIB" ":" prefix (,perl5lib)))
+               #t))))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    ;; TODO: Add missing optional dependency: facedetect.
+    (inputs
+     `(("imagemagick" ,imagemagick)
+       ("lcms" ,lcms)
+       ("fbida" ,fbida)
+       ("libjpeg" ,libjpeg)
+       ("zip" ,zip)
+       ("perl" ,perl)
+       ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
+       ("perl-image-exiftool" ,perl-image-exiftool)
+       ("jpegoptim" ,jpegoptim)
+       ("pngcrush" ,pngcrush)
+       ("p7zip" ,p7zip)))
+    (home-page "http://www.thregr.org/~wavexx/software/fgallery/")
+    (synopsis "Static photo gallery generator")
+    (description
+     "FGallery is a static, JavaScript photo gallery generator with minimalist
+look.  The result can be uploaded on any web server without additional
+requirements.")
+    (license license:gpl2+)))