gnu: Add emacs-helm-flycheck.
[guix.git] / gnu / packages / emulators.scm
blob8fbb804e57502771856f5381330f81c39da263d8
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
3 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
4 ;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
5 ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
6 ;;; Copyright © 2015, 2018 David Thompson <dthompson2@worcester.edu>
7 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
8 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
10 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
12 ;;;
13 ;;; This file is part of GNU Guix.
14 ;;;
15 ;;; GNU Guix is free software; you can redistribute it and/or modify it
16 ;;; under the terms of the GNU General Public License as published by
17 ;;; the Free Software Foundation; either version 3 of the License, or (at
18 ;;; your option) any later version.
19 ;;;
20 ;;; GNU Guix is distributed in the hope that it will be useful, but
21 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23 ;;; GNU General Public License for more details.
24 ;;;
25 ;;; You should have received a copy of the GNU General Public License
26 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
28 (define-module (gnu packages emulators)
29   #:use-module ((guix licenses) #:prefix license:)
30   #:use-module (guix packages)
31   #:use-module (guix download)
32   #:use-module (guix git-download)
33   #:use-module (guix svn-download)
34   #:use-module (gnu packages)
35   #:use-module (gnu packages algebra)
36   #:use-module (gnu packages assembly)
37   #:use-module (gnu packages audio)
38   #:use-module (gnu packages autotools)
39   #:use-module (gnu packages base)
40   #:use-module (gnu packages boost)
41   #:use-module (gnu packages backup)
42   #:use-module (gnu packages compression)
43   #:use-module (gnu packages curl)
44   #:use-module (gnu packages databases)
45   #:use-module (gnu packages fonts)
46   #:use-module (gnu packages fontutils)
47   #:use-module (gnu packages freedesktop)
48   #:use-module (gnu packages game-development)
49   #:use-module (gnu packages gcc)
50   #:use-module (gnu packages gettext)
51   #:use-module (gnu packages gl)
52   #:use-module (gnu packages glib)
53   #:use-module (gnu packages gtk)
54   #:use-module (gnu packages image)
55   #:use-module (gnu packages imagemagick)
56   #:use-module (gnu packages libedit)
57   #:use-module (gnu packages libusb)
58   #:use-module (gnu packages linux)
59   #:use-module (gnu packages mp3)
60   #:use-module (gnu packages ncurses)
61   #:use-module (gnu packages pkg-config)
62   #:use-module (gnu packages pulseaudio)
63   #:use-module (gnu packages python)
64   #:use-module (gnu packages qt)
65   #:use-module (gnu packages sdl)
66   #:use-module (gnu packages tls)
67   #:use-module (gnu packages upnp)
68   #:use-module (gnu packages video)
69   #:use-module (gnu packages vulkan)
70   #:use-module (gnu packages wxwidgets)
71   #:use-module (gnu packages xdisorg)
72   #:use-module (gnu packages xiph)
73   #:use-module (gnu packages xml)
74   #:use-module (gnu packages xorg)
75   #:use-module (guix build-system cmake)
76   #:use-module (guix build-system gnu))
78 (define-public desmume
79   (package
80     (name "desmume")
81     (version "0.9.11")
82     (source
83      (origin
84        (method url-fetch)
85        (uri (string-append
86              "mirror://sourceforge/desmume/desmume/"
87              version "/desmume-" version ".tar.gz"))
88        (sha256
89         (base32
90          "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
91     (build-system gnu-build-system)
92     (arguments
93      ;; Enable support for WiFi and microphone.
94      `(#:configure-flags '("--enable-wifi"
95                            "--enable-openal")))
96     (native-inputs
97      `(("pkg-config" ,pkg-config)
98        ("intltool" ,intltool)))
99     (inputs
100      `(("zlib" ,zlib)
101        ("sdl" ,sdl)
102        ("glib" ,glib)
103        ("gtk+" ,gtk+-2)
104        ("glu" ,glu)))
105     (home-page "http://desmume.org/")
106     (synopsis "Nintendo DS emulator")
107     (description
108      "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
109     (license license:gpl2)))
111 ;; Building from recent Git because the official 5.0 release no longer builds.
112 (define-public dolphin-emu
113   (let ((commit "47fd8c6eff4cdea7660d0fa78040f98d1d4fa136")
114         (revision "1"))
115     (package
116       (name "dolphin-emu")
117       (version (git-version "5.0" revision commit))
118       (source
119        (origin
120          (method git-fetch)
121          (uri (git-reference
122                (url "https://github.com/dolphin-emu/dolphin.git")
123                (commit commit)))
124          (file-name (git-file-name name version))
125          (modules '((guix build utils)))
126          (snippet
127           '(begin
128              ;; Remove external stuff we don't need.
129              (for-each (lambda (dir)
130                          (delete-file-recursively
131                            (string-append "Externals/" dir)))
132                        '("LZO" "OpenAL" "Qt" "SFML" "SOIL" "curl" "ffmpeg"
133                          "gettext" "hidapi" "libpng" "libusb" "mbedtls"
134                          "miniupnpc" "wxWidgets3" "zlib"))
135              ;; Clean up source.
136              (for-each delete-file (find-files "." ".*\\.(bin|dsy|exe|jar|rar)$"))
137              #t))
138          (sha256
139           (base32
140            "1gp2sshnr0dswdawxd5ix96nksp435b52bqvpjx8pmn523k29zsw"))))
141       (build-system cmake-build-system)
142       (arguments
143        '(#:tests? #f
144          ;; The FindGTK2 cmake script only checks hardcoded directories for
145          ;; glib/gtk headers.
147          #:phases
148          (modify-phases %standard-phases
149            (add-before 'configure 'fixgcc7
150              (lambda _
151                (unsetenv "C_INCLUDE_PATH")
152                (unsetenv "CPLUS_INCLUDE_PATH")))
153            (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
154              (lambda* (#:key inputs outputs #:allow-other-keys)
155                (let ((fontfile
156                       (string-append (assoc-ref inputs "font-wqy-microhei")
157                                      "/share/fonts/truetype/wqy-microhei.ttc"))
158                      (libvulkan
159                       (string-append (assoc-ref inputs "vulkan-loader")
160                                      "/lib/libvulkan.so")))
161                  (chdir "docs")
162                  (invoke "bash" "-c" "g++ -O2 -std=c++11 $(freetype-config \
163 --cflags --libs) gc-font-tool.cpp -o gc-font-tool")
164                  (invoke "./gc-font-tool" "a" fontfile "font_western.bin")
165                  (invoke "./gc-font-tool" "s" fontfile "font_japanese.bin")
166                  (copy-file "font_japanese.bin" "../Data/Sys/GC/font_japanese.bin")
167                  (copy-file "font_western.bin" "../Data/Sys/GC/font_western.bin")
168                  (chdir "..")
169                  (substitute* "Source/Core/VideoBackends/Vulkan/VulkanLoader.cpp"
170                               (("libvulkan.so") libvulkan))
171                  #t))))
173          #:configure-flags
174          (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
175                               (assoc-ref %build-inputs "gtk+")
176                               "/lib/gtk-2.0/include")
177                (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
178                               (assoc-ref %build-inputs "glib")
179                               "/lib/glib-2.0/include")
180                (string-append "-DX11_INCLUDE_DIR="
181                               (assoc-ref %build-inputs "libx11")
182                               "/include")
183                (string-append "-DX11_LIBRARIES="
184                               (assoc-ref %build-inputs "libx11")
185                               "/lib/libX11.so")
186                "-DX11_FOUND=1")))
187       (native-inputs
188        `(("pkg-config" ,pkg-config)
189          ("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore.
190          ("gettext" ,gnu-gettext)))
191       (inputs
192        `(("alsa-lib" ,alsa-lib)
193          ("ao" ,ao)
194          ("bluez" ,bluez)
195          ("curl" ,curl)
196          ("eudev" ,eudev)
197          ("ffmpeg" ,ffmpeg-3.4)
198          ("font-wqy-microhei" ,font-wqy-microhei)
199          ("freetype" ,freetype)
200          ("glew" ,glew)
201          ("glib" ,glib)
202          ("glu" ,glu)
203          ("gtk+" ,gtk+-2)
204          ("hidapi" ,hidapi)
205          ("libevdev" ,libevdev)
206          ("libpng" ,libpng)
207          ("libusb" ,libusb)
208          ("libx11" ,libx11)
209          ("libxi" ,libxi)
210          ("libxrandr" ,libxrandr)
211          ("lzo" ,lzo)
212          ("mbedtls-apache" ,mbedtls-apache)
213          ("mesa" ,mesa)
214          ("miniupnpc" ,miniupnpc)
215          ("openal" ,openal)
216          ("pulseaudio" ,pulseaudio)
217          ("qtbase" ,qtbase)
218          ("sdl2" ,sdl2)
219          ("sfml" ,sfml)
220          ("soil" ,soil)
221          ("soundtouch" ,soundtouch)
222          ("vulkan-loader" ,vulkan-loader)
223          ("wxwidgets" ,wxwidgets-gtk2-3.1)
224          ("zlib" ,zlib)))
225       (home-page "https://dolphin-emu.org/")
226       (synopsis "Nintendo Wii and GameCube emulator")
227       (description
228        "Dolphin is an emulator for two Nintendo video game consoles: the
229 GameCube and the Wii.  It provides compatibility with all PC controllers,
230 turbo speed, networked multiplayer, and graphical enhancements.")
231       (supported-systems '("x86_64-linux" "aarch64-linux"))
232       ; dolphin/Data/Sys/GC/font_*.bin: Licensed under ASL2.0.
233       (license (list license:gpl2+ license:asl2.0 license:fdl1.2+)))))
235 (define-public dosbox
236   (package
237     (name "dosbox")
238     (version "0.74.svn3947")
239     (source (origin
240               (method svn-fetch)
241               (uri (svn-reference
242                     (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
243                     (revision 3947)))
244               (file-name (string-append name "-" version "-checkout"))
245               ;; Use SVN head, since the last release (2010) is incompatible
246               ;; with GCC 4.8+ (see
247               ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
248               (sha256
249                (base32
250                 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
251     (build-system gnu-build-system)
252     (arguments
253      `(#:phases (modify-phases %standard-phases
254                   (add-after
255                    'unpack 'autogen.sh
256                    (lambda _
257                      (zero? (system* "sh" "autogen.sh")))))))
258     (native-inputs
259      `(("autoconf" ,autoconf)
260        ("automake" ,automake)))
261     (inputs
262      `(("sdl" ,sdl)
263        ("libpng" ,libpng)
264        ("zlib" ,zlib)
265        ("alsa-lib" ,alsa-lib)
266        ("glu" ,glu)
267        ("mesa" ,mesa)))
268     (home-page "http://www.dosbox.com")
269     (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
270     (description "DOSBox is a DOS-emulator that uses the SDL library.  DOSBox
271 also emulates CPU:286/386 realmode/protected mode, Directory
272 FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
273 SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
274 older games.")
275     (license license:gpl2+)))
277 (define-public emulation-station
278   (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
279     (package
280       (name "emulation-station")
281       (version "2.0.1")
282       (source (origin
283                 (method git-fetch) ; no tarball available
284                 (uri (git-reference
285                       (url "https://github.com/Aloshi/EmulationStation.git")
286                       (commit commit))) ; no version tag
287                 (file-name (string-append name "-" version "-checkout"))
288                 (sha256
289                  (base32
290                   "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
291       (build-system cmake-build-system)
292       (arguments
293        '(#:tests? #f)) ; no tests
294       (inputs
295        `(("alsa-lib" ,alsa-lib)
296          ("boost" ,boost)
297          ("curl" ,curl)
298          ("eigin" ,eigen)
299          ("freeimage" ,freeimage)
300          ("freetype" ,freetype)
301          ("mesa" ,mesa)
302          ("sdl2" ,sdl2)))
303       (synopsis "Video game console emulator front-end")
304       (description "EmulationStation provides a graphical front-end to a large
305 number of video game console emulators.  It features an interface that is
306 usable with any game controller that has at least 4 buttons, theming support,
307 and a game metadata scraper.")
308       (home-page "http://www.emulationstation.org")
309       (license license:expat))))
311 (define-public higan
312   (package
313     (name "higan")
314     (version "106")
315     (source
316      (origin
317        (method url-fetch)
318        (uri (string-append
319              "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
320              version))
321        (file-name (string-append name "-" version ".tar.gz"))
322        (sha256
323         (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw"))
324        (patches (search-patches "higan-remove-march-native-flag.patch"))))
325     (build-system gnu-build-system)
326     (native-inputs
327      `(("pkg-config" ,pkg-config)))
328     (inputs
329      `(("alsa-lib" ,alsa-lib)
330        ("ao" ,ao)
331        ("eudev" ,eudev)
332        ("gtk+" ,gtk+-2)
333        ("gtksourceview-2" ,gtksourceview-2)
334        ("libxv" ,libxv)
335        ("mesa" ,mesa)
336        ("openal" ,openal)
337        ("pulseaudio" ,pulseaudio)
338        ("sdl" ,sdl)))
339     (arguments
340      '(#:phases
341        (let ((build-phase (assoc-ref %standard-phases 'build))
342              (install-phase (assoc-ref %standard-phases 'install)))
343          (modify-phases %standard-phases
344            ;; The higan build system has no configure phase.
345            (delete 'configure)
346            (add-before 'build 'chdir-to-higan
347              (lambda _
348                (chdir "higan")))
349            (add-before 'install 'create-/share/applications
350              (lambda* (#:key outputs #:allow-other-keys)
351                (let ((out (assoc-ref outputs "out")))
352                  ;; It seems the author forgot to do this in the Makefile.
353                  (mkdir-p (string-append out "/share/applications")))))
354            (add-after 'install 'chdir-to-icarus
355              (lambda _
356                (chdir "../icarus")))
357            (add-after 'chdir-to-icarus 'build-icarus build-phase)
358            (add-after 'build-icarus 'install-icarus install-phase)
359            (add-after 'install-icarus 'wrap-higan-executable
360              (lambda* (#:key inputs outputs #:allow-other-keys)
361                (let* ((out (assoc-ref outputs "out"))
362                       (bin (string-append out "/bin"))
363                       (higan (string-append bin "/higan"))
364                       (higan-original (string-append higan "-original"))
365                       (bash (string-append (assoc-ref inputs "bash")
366                                            "/bin/bash"))
367                       (coreutils (assoc-ref inputs "coreutils"))
368                       (mkdir (string-append coreutils "/bin/mkdir"))
369                       (cp (string-append coreutils "/bin/cp"))
370                       (cp-r (string-append cp " -r --no-preserve=mode")))
371                  ;; First, have the executable make sure ~/.local/share/higan
372                  ;; contains up to date files.  Higan insists on looking there
373                  ;; for these data files.
374                  (rename-file higan higan-original)
375                  (with-output-to-file higan
376                    (lambda ()
377                      (display
378                       (string-append
379                        "#!" bash "\n"
380                        ;; higan doesn't respect $XDG_DATA_HOME
381                        mkdir " -p ~/.local/share\n"
382                        cp-r " " out "/share/higan ~/.local/share\n"
383                        "exec " higan-original))))
384                  (chmod higan #o555)
385                  ;; Second, make sure higan will find icarus in PATH.
386                  (wrap-program higan
387                    `("PATH" ":" prefix (,bin))))))))
388        #:make-flags
389        (list "compiler=g++"
390              (string-append "prefix=" (assoc-ref %outputs "out")))
391        ;; There is no test suite.
392        #:tests? #f))
393     (home-page "http://byuu.org/emulation/higan/")
394     (synopsis "Nintendo multi-system emulator")
395     (description
396      "higan (formerly bsnes) is an emulator for multiple Nintendo video game
397 consoles, including the Nintendo Entertainment System (NES/Famicom), Super
398 Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy
399 Color (GBC), and Game Boy Advance (GBA).  It also supports the subsystems
400 Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
401     ;; As noted in these files among more:
402     ;; - icarus/icarus.cpp
403     ;; - higan/emulator/emulator.hpp
404     (license license:gpl3)))
406 (define-public mgba
407   (package
408     (name "mgba")
409     (version "0.6.3")
410     (source (origin
411               (method url-fetch)
412               (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
413                                   version ".tar.gz"))
414               (file-name (string-append name "-" version ".tar.gz"))
415               (sha256
416                (base32
417                 "16hgs6r5iym3lp2cjcnv9955333976yc5sgy2kkxlsi005n91j1m"))
418               (modules '((guix build utils)))
419               (snippet
420                ;; Make sure we don't use the bundled software.
421                '(begin
422                   (for-each
423                    (lambda (subdir)
424                      (let ((lib-subdir (string-append "src/third-party/" subdir)))
425                        (delete-file-recursively lib-subdir)))
426                    '("libpng" "lzma" "sqlite3" "zlib"))
427                   #t))))
428     (build-system cmake-build-system)
429     (arguments
430      `(#:tests? #f                      ;no "test" target
431        #:configure-flags
432        (list "-DUSE_LZMA=OFF"           ;do not use bundled LZMA
433              "-DUSE_LIBZIP=OFF"         ;use "zlib" instead
434              (string-append "-DCMAKE_INSTALL_LIBDIR="
435                             (assoc-ref %outputs "out") "/lib"))))
436     (native-inputs `(("pkg-config" ,pkg-config)))
437     (inputs `(("ffmpeg" ,ffmpeg)
438               ("imagemagick" ,imagemagick)
439               ("libedit" ,libedit)
440               ("libepoxy" ,libepoxy)
441               ("libpng" ,libpng)
442               ("mesa" ,mesa)
443               ("minizip" ,minizip)
444               ("ncurses" ,ncurses)
445               ("qtbase" ,qtbase)
446               ("qtmultimedia" ,qtmultimedia)
447               ("qttools" ,qttools)
448               ("sdl2" ,sdl2)
449               ("sqlite" ,sqlite)
450               ("zlib" ,zlib)))
451     (home-page "https://mgba.io")
452     (synopsis "Game Boy Advance emulator")
453     (description
454      "mGBA is an emulator for running Game Boy Advance games.  It aims to be
455 faster and more accurate than many existing Game Boy Advance emulators, as
456 well as adding features that other emulators lack.  It also supports Game Boy
457 and Game Boy Color games.")
458     ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is
459     ;; BSD-3.
460     (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
462 (define-public mupen64plus-core
463   (package
464     (name "mupen64plus-core")
465     (version "2.5")
466     (source
467      (origin
468        (method url-fetch)
469        (uri (string-append
470              "https://github.com/mupen64plus/mupen64plus-core/archive/"
471              version ".tar.gz"))
472        (file-name (string-append name "-" version ".tar.gz"))
473        (sha256
474         (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
475     (build-system gnu-build-system)
476     (native-inputs
477      `(("pkg-config" ,pkg-config)
478        ("which" ,which)))
479     (inputs
480      `(("freetype" ,freetype)
481        ("glu" ,glu)
482        ("libpng" ,libpng)
483        ("mesa" ,mesa)
484        ("sdl2" ,sdl2)
485        ("zlib" ,zlib)))
486     (arguments
487      '(#:phases
488        (modify-phases %standard-phases
489          ;; The mupen64plus build system has no configure phase.
490          (delete 'configure)
491          ;; Makefile is in a subdirectory.
492          (add-before
493           'build 'cd-to-project-dir
494           (lambda _
495             (chdir "projects/unix"))))
496        #:make-flags (let ((out (assoc-ref %outputs "out")))
497                       (list "all" (string-append "PREFIX=" out)))
498        ;; There are no tests.
499        #:tests? #f))
500     ;; As per the Makefile (in projects/unix/Makefile):
501     (supported-systems '("i686-linux" "x86_64-linux"))
502     (home-page "http://www.mupen64plus.org/")
503     (synopsis "Nintendo 64 emulator core library")
504     (description
505      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
506 which is capable of accurately playing many games.  This package contains the
507 core library.")
508     (license license:gpl2+)))
510 (define-public mupen64plus-audio-sdl
511   (package
512     (name "mupen64plus-audio-sdl")
513     (version "2.5")
514     (source
515      (origin
516        (method url-fetch)
517        (uri (string-append
518              "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
519              version ".tar.gz"))
520        (file-name (string-append name "-" version ".tar.gz"))
521        (sha256
522         (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
523     (build-system gnu-build-system)
524     (native-inputs
525      `(("pkg-config" ,pkg-config)
526        ("which" ,which)))
527     (inputs
528      `(("mupen64plus-core" ,mupen64plus-core)
529        ("sdl2" ,sdl2)))
530     (arguments
531      '(#:phases
532        (modify-phases %standard-phases
533          ;; The mupen64plus build system has no configure phase.
534          (delete 'configure)
535          ;; Makefile is in a subdirectory.
536          (add-before
537           'build 'cd-to-project-dir
538           (lambda _
539             (chdir "projects/unix"))))
540        #:make-flags
541        (let ((out (assoc-ref %outputs "out"))
542              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
543          (list "all"
544                (string-append "PREFIX=" out)
545                (string-append "APIDIR=" m64p "/include/mupen64plus")))
546        ;; There are no tests.
547        #:tests? #f))
548     (home-page "http://www.mupen64plus.org/")
549     (synopsis "Mupen64Plus SDL input plugin")
550     (description
551      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
552 which is capable of accurately playing many games.  This package contains the
553 SDL audio plugin.")
554     (license license:gpl2+)))
556 (define-public mupen64plus-input-sdl
557   (package
558     (name "mupen64plus-input-sdl")
559     (version "2.5")
560     (source
561      (origin
562        (method url-fetch)
563        (uri (string-append
564              "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
565              version ".tar.gz"))
566        (file-name (string-append name "-" version ".tar.gz"))
567        (sha256
568         (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
569     (build-system gnu-build-system)
570     (native-inputs
571      `(("which" ,which)))
572     (inputs
573      `(("mupen64plus-core" ,mupen64plus-core)
574        ("sdl2" ,sdl2)))
575     (arguments
576      '(#:phases
577        (modify-phases %standard-phases
578          ;; The mupen64plus build system has no configure phase.
579          (delete 'configure)
580          ;; Makefile is in a subdirectory.
581          (add-before
582           'build 'cd-to-project-dir
583           (lambda _
584             (chdir "projects/unix"))))
585        #:make-flags
586        (let ((out (assoc-ref %outputs "out"))
587              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
588          (list "all"
589                (string-append "PREFIX=" out)
590                (string-append "APIDIR=" m64p "/include/mupen64plus")))
591        ;; There are no tests.
592        #:tests? #f))
593     (home-page "http://www.mupen64plus.org/")
594     (synopsis "Mupen64Plus SDL input plugin")
595     (description
596      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
597 which is capable of accurately playing many games.  This package contains the
598 SDL input plugin.")
599     (license license:gpl2+)))
601 (define-public mupen64plus-rsp-hle
602   (package
603     (name "mupen64plus-rsp-hle")
604     (version "2.5")
605     (source
606      (origin
607        (method url-fetch)
608        (uri (string-append
609              "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
610              version ".tar.gz"))
611        (file-name (string-append name "-" version ".tar.gz"))
612        (sha256
613         (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
614     (build-system gnu-build-system)
615     (inputs
616      `(("mupen64plus-core" ,mupen64plus-core)))
617     (arguments
618      '(#:phases
619        (modify-phases %standard-phases
620          ;; The mupen64plus build system has no configure phase.
621          (delete 'configure)
622          ;; Makefile is in a subdirectory.
623          (add-before
624           'build 'cd-to-project-dir
625           (lambda _
626             (chdir "projects/unix"))))
627        #:make-flags
628        (let ((out (assoc-ref %outputs "out"))
629              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
630          (list "all"
631                (string-append "PREFIX=" out)
632                (string-append "APIDIR=" m64p "/include/mupen64plus")))
633        ;; There are no tests.
634        #:tests? #f))
635     (home-page "http://www.mupen64plus.org/")
636     (synopsis "Mupen64Plus SDL input plugin")
637     (description
638      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
639 which is capable of accurately playing many games.  This package contains the
640 high-level emulation (HLE) RSP processor plugin.")
641     (license license:gpl2+)))
643 (define-public mupen64plus-rsp-z64
644   (package
645     (name "mupen64plus-rsp-z64")
646     (version "2.0.0")
647     (source
648      (origin
649        (method url-fetch)
650        (uri (string-append
651              "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
652              version ".tar.gz"))
653        (file-name (string-append name "-" version ".tar.gz"))
654        (sha256
655         (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
656     (build-system gnu-build-system)
657     (inputs
658      `(("mupen64plus-core" ,mupen64plus-core)))
659     (arguments
660      '(#:phases
661        (modify-phases %standard-phases
662          ;; The mupen64plus build system has no configure phase.
663          (delete 'configure)
664          ;; Makefile is in a subdirectory.
665          (add-before
666           'build 'cd-to-project-dir
667           (lambda _
668             (chdir "projects/unix"))))
669        #:make-flags
670        (let ((out (assoc-ref %outputs "out"))
671              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
672          (list "all"
673                (string-append "PREFIX=" out)
674                (string-append "APIDIR=" m64p "/include/mupen64plus")))
675        ;; There are no tests.
676        #:tests? #f))
677     (home-page "http://www.mupen64plus.org/")
678     (synopsis "Mupen64Plus SDL input plugin")
679     (description
680      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
681 which is capable of accurately playing many games.  This package contains the
682 Z64 RSP processor plugin.")
683     (license license:gpl2+)))
685 (define-public mupen64plus-video-arachnoid
686   (package
687     (name "mupen64plus-video-arachnoid")
688     (version "2.0.0")
689     (source
690      (origin
691        (method url-fetch)
692        (uri (string-append
693              "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
694              version ".tar.gz"))
695        (file-name (string-append name "-" version ".tar.gz"))
696        (sha256
697         (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
698     (build-system gnu-build-system)
699     (native-inputs
700      `(("pkg-config" ,pkg-config)
701        ("which" ,which)))
702     (inputs
703      `(("mesa" ,mesa)
704        ("mupen64plus-core" ,mupen64plus-core)))
705     (arguments
706      '(#:phases
707        (modify-phases %standard-phases
708          ;; The mupen64plus build system has no configure phase.
709          (delete 'configure)
710          ;; Makefile is in a subdirectory.
711          (add-before
712           'build 'cd-to-project-dir
713           (lambda _
714             (chdir "projects/unix"))))
715        #:make-flags
716        (let ((out (assoc-ref %outputs "out"))
717              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
718          (list "all"
719                (string-append "PREFIX=" out)
720                (string-append "APIDIR=" m64p "/include/mupen64plus")))
721        ;; There are no tests.
722        #:tests? #f))
723     (home-page "http://www.mupen64plus.org/")
724     (synopsis "Mupen64Plus Rice Video plugin")
725     (description
726      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
727 which is capable of accurately playing many games.  This package contains the
728 Arachnoid video plugin.")
729     (license license:gpl2+)))
731 (define-public mupen64plus-video-glide64
732   (package
733     (name "mupen64plus-video-glide64")
734     (version "2.0.0")
735     (source
736      (origin
737        (method url-fetch)
738        (uri (string-append
739              "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
740              version ".tar.gz"))
741        (file-name (string-append name "-" version ".tar.gz"))
742        (sha256
743         (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
744     (build-system gnu-build-system)
745     (native-inputs
746      `(("pkg-config" ,pkg-config)
747        ("which" ,which)))
748     (inputs
749      `(("mesa" ,mesa)
750        ("mupen64plus-core" ,mupen64plus-core)
751        ("sdl2" ,sdl2)))
752     (arguments
753      '(#:phases
754        (modify-phases %standard-phases
755          ;; The mupen64plus build system has no configure phase.
756          (delete 'configure)
757          ;; Makefile is in a subdirectory.
758          (add-before
759           'build 'cd-to-project-dir
760           (lambda _
761             (chdir "projects/unix")))
762          ;; XXX Should be unnecessary with the next release.
763          (add-before
764           'build 'use-sdl2
765           (lambda _
766             (substitute* "Makefile"
767               (("SDL_CONFIG = (.*)sdl-config" all prefix)
768                (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
769        #:make-flags
770        (let ((out (assoc-ref %outputs "out"))
771              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
772          (list "all"
773                (string-append "PREFIX=" out)
774                (string-append "APIDIR=" m64p "/include/mupen64plus")))
775        ;; There are no tests.
776        #:tests? #f))
777     (home-page "http://www.mupen64plus.org/")
778     (synopsis "Mupen64Plus Rice Video plugin")
779     (description
780      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
781 which is capable of accurately playing many games.  This package contains the
782 Glide64 video plugin.")
783     (license license:gpl2+)))
785 (define-public mupen64plus-video-glide64mk2
786   (package
787     (name "mupen64plus-video-glide64mk2")
788     (version "2.5")
789     (source
790      (origin
791        (method url-fetch)
792        (uri (string-append
793              "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
794              version ".tar.gz"))
795        (file-name (string-append name "-" version ".tar.gz"))
796        (sha256
797         (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
798     (build-system gnu-build-system)
799     (native-inputs
800      `(("pkg-config" ,pkg-config)
801        ("which" ,which)))
802     (inputs
803      `(("boost" ,boost)
804        ("libpng" ,libpng)
805        ("mesa" ,mesa)
806        ("mupen64plus-core" ,mupen64plus-core)
807        ("sdl2" ,sdl2)
808        ("zlib" ,zlib)))
809     (arguments
810      '(#:phases
811        (modify-phases %standard-phases
812          ;; The mupen64plus build system has no configure phase.
813          (delete 'configure)
814          ;; Makefile is in a subdirectory.
815          (add-before
816           'build 'cd-to-project-dir
817           (lambda _
818             (chdir "projects/unix"))))
819        #:make-flags
820        (let ((out (assoc-ref %outputs "out"))
821              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
822          (list "all"
823                (string-append "PREFIX=" out)
824                (string-append "APIDIR=" m64p "/include/mupen64plus")))
825        ;; There are no tests.
826        #:tests? #f))
827     (home-page "http://www.mupen64plus.org/")
828     (synopsis "Mupen64Plus Rice Video plugin")
829     (description
830      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
831 which is capable of accurately playing many games.  This package contains the
832 Glide64MK2 video plugin.")
833     (license license:gpl2+)))
835 (define-public mupen64plus-video-rice
836   (package
837     (name "mupen64plus-video-rice")
838     (version "2.5")
839     (source
840      (origin
841        (method url-fetch)
842        (uri (string-append
843              "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
844              version ".tar.gz"))
845        (file-name (string-append name "-" version ".tar.gz"))
846        (sha256
847         (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
848     (build-system gnu-build-system)
849     (native-inputs
850      `(("pkg-config" ,pkg-config)
851        ("which" ,which)))
852     (inputs
853      `(("libpng" ,libpng)
854        ("mesa" ,mesa)
855        ("mupen64plus-core" ,mupen64plus-core)
856        ("sdl2" ,sdl2)))
857     (arguments
858      '(#:phases
859        (modify-phases %standard-phases
860          ;; The mupen64plus build system has no configure phase.
861          (delete 'configure)
862          ;; Makefile is in a subdirectory.
863          (add-before
864           'build 'cd-to-project-dir
865           (lambda _
866             (chdir "projects/unix"))))
867        #:make-flags
868        (let ((out (assoc-ref %outputs "out"))
869              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
870          (list "all"
871                (string-append "PREFIX=" out)
872                (string-append "APIDIR=" m64p "/include/mupen64plus")))
873        ;; There are no tests.
874        #:tests? #f))
875     (home-page "http://www.mupen64plus.org/")
876     (synopsis "Mupen64Plus Rice Video plugin")
877     (description
878      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
879 which is capable of accurately playing many games.  This package contains the
880 Rice Video plugin.")
881     (license license:gpl2+)))
883 (define-public mupen64plus-video-z64
884   (package
885     (name "mupen64plus-video-z64")
886     (version "2.0.0")
887     (source
888      (origin
889        (method url-fetch)
890        (uri (string-append
891              "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
892              version ".tar.gz"))
893        (file-name (string-append name "-" version ".tar.gz"))
894        (sha256
895         (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))
896        (patches (search-patches "mupen64plus-video-z64-glew-correct-path.patch"))))
897     (build-system gnu-build-system)
898     (native-inputs
899      `(("pkg-config" ,pkg-config)
900        ("which" ,which)))
901     (inputs
902      `(("glew" ,glew)
903        ("mupen64plus-core" ,mupen64plus-core)
904        ("sdl2" ,sdl2)))
905     (arguments
906      '(#:phases
907        (modify-phases %standard-phases
908          ;; The mupen64plus build system has no configure phase.
909          (delete 'configure)
910          ;; Makefile is in a subdirectory.
911          (add-before
912           'build 'cd-to-project-dir
913           (lambda _
914             (chdir "projects/unix")))
915          ;; XXX Should be unnecessary with the next release.
916          (add-before
917           'build 'use-sdl2
918           (lambda _
919             (substitute* "Makefile"
920               (("SDL_CONFIG = (.*)sdl-config" all prefix)
921                (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
922        #:make-flags
923        (let ((out (assoc-ref %outputs "out"))
924              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
925          (list "all"
926                (string-append "PREFIX=" out)
927                (string-append "APIDIR=" m64p "/include/mupen64plus")))
928        ;; There are no tests.
929        #:tests? #f))
930     (home-page "http://www.mupen64plus.org/")
931     (synopsis "Mupen64Plus Z64 video plugin")
932     (description
933      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
934 which is capable of accurately playing many games.  This package contains the
935 Z64 video plugin.")
936     (license license:gpl2+)))
938 (define-public mupen64plus-ui-console
939   (package
940     (name "mupen64plus-ui-console")
941     (version "2.5")
942     (source
943      (origin
944        (method url-fetch)
945        (uri (string-append
946              "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
947              version ".tar.gz"))
948        (file-name (string-append name "-" version ".tar.gz"))
949        (sha256
950         (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
951        (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
952     (build-system gnu-build-system)
953     (native-inputs
954      `(("pkg-config" ,pkg-config)
955        ("which" ,which)))
956     (inputs
957      `(("sdl2" ,sdl2)))
958     ;; Mupen64Plus supports a single data directory and a single plugin
959     ;; directory in its configuration, yet we need data and plugin files from
960     ;; a variety of packages.  The best way to deal with this is to install
961     ;; all packages from which data and plugin files are needed into one's
962     ;; profile, and point the configuration there.  Hence, propagate the most
963     ;; important packages here to save the user from the bother.  The patch
964     ;; mupen64plus-ui-console-notice also gives users instructions on what
965     ;; they need to do in order to point the configuration to their profile.
966     (propagated-inputs
967      `(("mupen64plus-core" ,mupen64plus-core)
968        ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
969        ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
970        ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
971        ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
972        ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
973        ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
974     (arguments
975      '(#:phases
976        (modify-phases %standard-phases
977          ;; The mupen64plus build system has no configure phase.
978          (delete 'configure)
979          ;; Makefile is in a subdirectory.
980          (add-before
981           'build 'cd-to-project-dir
982           (lambda _
983             (chdir "projects/unix"))))
984        #:make-flags
985        (let ((out (assoc-ref %outputs "out"))
986              (m64p (assoc-ref %build-inputs "mupen64plus-core")))
987          (list "all"
988                (string-append "PREFIX=" out)
989                (string-append "APIDIR=" m64p "/include/mupen64plus")
990                ;; Trailing slash matters here.
991                (string-append "COREDIR=" m64p "/lib/")))
992        ;; There are no tests.
993        #:tests? #f))
994     (home-page "http://www.mupen64plus.org/")
995     (synopsis "Mupen64Plus SDL input plugin")
996     (description
997      "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
998 which is capable of accurately playing many games.  This package contains the
999 command line user interface.  Installing this package is the easiest way
1000 towards a working Mupen64Plus for casual users.")
1001     (license license:gpl2+)))
1003 (define-public nestopia-ue
1004   (package
1005     (name "nestopia-ue")
1006     (version "1.48")
1007     (source (origin
1008               (method url-fetch)
1009               (uri (string-append
1010                     "https://github.com/rdanbrook/nestopia/archive/"
1011                     version ".tar.gz"))
1012               (file-name (string-append name "-" version ".tar.gz"))
1013               (sha256
1014                (base32
1015                 "184y05z4k4a4m4022niy625kan0rklh8gcxyynxli1fss2sjjrpv"))
1016               (modules '((guix build utils)))
1017               (snippet
1018                '(begin
1019                   ;; We don't need libretro for the GNU/Linux build.
1020                   (delete-file-recursively "libretro")
1021                   #t))))
1022     (build-system cmake-build-system)
1023     (native-inputs
1024      `(("pkg-config" ,pkg-config)))
1025     (inputs
1026      `(("ao" ,ao)
1027        ("gtk+" ,gtk+)
1028        ("libarchive" ,libarchive)
1029        ("libepoxy" ,libepoxy)
1030        ("sdl2" ,sdl2)
1031        ("zlib" ,zlib)))
1032     (arguments
1033      '(#:phases
1034        (modify-phases %standard-phases
1035          ;; This fixes the file chooser crash that happens with GTK 3.
1036          (add-after 'install 'wrap-program
1037            (lambda* (#:key inputs outputs #:allow-other-keys)
1038              (let* ((out (assoc-ref outputs "out"))
1039                     (nestopia (string-append out "/bin/nestopia"))
1040                     (gtk (assoc-ref inputs "gtk+"))
1041                     (gtk-share (string-append gtk "/share")))
1042                (wrap-program nestopia
1043                  `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))
1044        ;; There are no tests.
1045        #:tests? #f))
1046     (home-page "http://0ldsk00l.ca/nestopia/")
1047     (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
1048     (description
1049      "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
1050 System (NES/Famicom) emulator Nestopia, with enhancements from members of the
1051 emulation community.  It provides highly accurate emulation.")
1052     (license license:gpl2+)))
1054 (define-public retroarch
1055   (package
1056     (name "retroarch")
1057     (version "1.7.3")
1058     (source
1059      (origin
1060        (method url-fetch)
1061        (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
1062                            version ".tar.gz"))
1063        (file-name (string-append name "-" version ".tar.gz"))
1064        (sha256
1065         (base32 "1si78dbwbsq4i0r42q94nmlpaxdyqch113nxavdprf4vc1224356"))))
1066     (build-system gnu-build-system)
1067     (arguments
1068      '(#:tests? #f                      ; no tests
1069        #:phases
1070        (modify-phases %standard-phases
1071          (replace 'configure
1072            (lambda* (#:key inputs outputs #:allow-other-keys)
1073              (let* ((out (assoc-ref outputs "out"))
1074                     (etc (string-append out "/etc"))
1075                     (vulkan (assoc-ref inputs "vulkan-loader")))
1076                ;; Hard-code the path to libvulkan.so.
1077                (substitute* "gfx/common/vulkan_common.c"
1078                  (("libvulkan.so") (string-append vulkan "/lib/libvulkan.so")))
1079                (substitute* "qb/qb.libs.sh"
1080                  (("/bin/true") (which "true")))
1081                ;; The configure script does not yet accept the extra arguments
1082                ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
1083                (zero? (system*
1084                        "./configure"
1085                        (string-append "--prefix=" out)
1086                        (string-append "--global-config-dir=" etc)))))))))
1087     (inputs
1088      `(("alsa-lib" ,alsa-lib)
1089        ("ffmpeg" ,ffmpeg)
1090        ("freetype" ,freetype)
1091        ("libxinerama" ,libxinerama)
1092        ("libxkbcommon" ,libxkbcommon)
1093        ("libxml2" ,libxml2)
1094        ("libxv" ,libxv)
1095        ("mesa" ,mesa)
1096        ("openal" ,openal)
1097        ("pulseaudio" ,pulseaudio)
1098        ("python" ,python)
1099        ("qtbase" ,qtbase)
1100        ("sdl" ,sdl2)
1101        ("udev" ,eudev)
1102        ("vulkan-loader" ,vulkan-loader)
1103        ("wayland" ,wayland)
1104        ("zlib" ,zlib)))
1105     (native-inputs
1106      `(("pkg-config" ,pkg-config)
1107        ("which" ,which)))
1108     (home-page "https://www.libretro.com/")
1109     (synopsis "Reference frontend for the libretro API")
1110     (description
1111      "Libretro is a simple but powerful development interface that allows for
1112 the easy creation of emulators, games and multimedia applications that can plug
1113 straight into any libretro-compatible frontend.  RetroArch is the official
1114 reference frontend for the libretro API, currently used by most as a modular
1115 multi-system game/emulator system.")
1116     (license license:gpl3+)))
1118 (define-public scummvm
1119   (package
1120     (name "scummvm")
1121     (version "2.0.0")
1122     (source
1123      (origin
1124        (method url-fetch)
1125        (uri (string-append "http://www.scummvm.org/frs/scummvm/" version
1126                            "/scummvm-" version ".tar.xz"))
1127        (sha256
1128         (base32
1129          "0q6aiw97wsrf8cjw9vjilzhqqsr2rw2lll99s8i5i9svan6l314p"))))
1130     (build-system gnu-build-system)
1131     (arguments
1132      `(#:tests? #f                      ;require "git"
1133        #:configure-flags (list "--enable-release") ;for optimizations
1134        #:phases
1135        (modify-phases %standard-phases
1136          (replace 'configure
1137            ;; configure does not work followed by both "SHELL=..." and
1138            ;; "CONFIG_SHELL=..."; set environment variables instead
1139            (lambda* (#:key outputs configure-flags #:allow-other-keys)
1140              (let* ((out (assoc-ref outputs "out"))
1141                     (bash (which "bash"))
1142                     (flags `(,(string-append "--prefix=" out)
1143                              ,@configure-flags)))
1144                (setenv "SHELL" bash)
1145                (setenv "CONFIG_SHELL" bash)
1146                (apply invoke "./configure" flags)))))))
1147     (native-inputs
1148      `(("pkg-config" ,pkg-config)))
1149     (inputs
1150      `(("alsa-lib" ,alsa-lib)
1151        ("faad2" ,faad2)
1152        ("fluidsynth" ,fluidsynth)
1153        ("freetype" ,freetype)
1154        ("libflac" ,flac)
1155        ("libjpeg-turbo" ,libjpeg-turbo)
1156        ("libmad" ,libmad)
1157        ("libmpeg2" ,libmpeg2)
1158        ("libogg" ,libogg)
1159        ("libpng" ,libpng)
1160        ("libtheora" ,libtheora)
1161        ("libvorbis" ,libvorbis)
1162        ("nasm" ,nasm)
1163        ("sdl2" ,sdl2)
1164        ("zlib" ,zlib)))
1165     (home-page "https://www.scummvm.org/")
1166     (synopsis "Engine for several graphical adventure games")
1167     (description "ScummVM is a program which allows you to run certain
1168 classic graphical point-and-click adventure games, provided you
1169 already have their data files.  The clever part about this: ScummVM
1170 just replaces the executables shipped with the games, allowing you to
1171 play them on systems for which they were never designed!")
1172     (license license:gpl2+)))