1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
4 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
5 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
6 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
7 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
8 ;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
9 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
10 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
11 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
12 ;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
13 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
14 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
15 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
16 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
18 ;;; This file is part of GNU Guix.
20 ;;; GNU Guix is free software; you can redistribute it and/or modify it
21 ;;; under the terms of the GNU General Public License as published by
22 ;;; the Free Software Foundation; either version 3 of the License, or (at
23 ;;; your option) any later version.
25 ;;; GNU Guix is distributed in the hope that it will be useful, but
26 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 ;;; GNU General Public License for more details.
30 ;;; You should have received a copy of the GNU General Public License
31 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33 (define-module (gnu packages games)
34 #:use-module ((guix licenses) #:prefix license:)
35 #:use-module (guix utils)
36 #:use-module (guix packages)
37 #:use-module (guix download)
38 #:use-module (guix git-download)
39 #:use-module (guix svn-download)
40 #:use-module (gnu packages)
41 #:use-module (gnu packages autotools)
42 #:use-module (gnu packages backup)
43 #:use-module (gnu packages base)
44 #:use-module (gnu packages admin)
45 #:use-module (gnu packages audio)
46 #:use-module (gnu packages boost)
47 #:use-module (gnu packages fribidi)
48 #:use-module (gnu packages game-development)
49 #:use-module (gnu packages gettext)
50 #:use-module (gnu packages gl)
51 #:use-module (gnu packages glib)
52 #:use-module (gnu packages gnome)
53 #:use-module (gnu packages gtk)
54 #:use-module (gnu packages guile)
55 #:use-module (gnu packages libcanberra)
56 #:use-module (gnu packages libunwind)
57 #:use-module (gnu packages haskell)
58 #:use-module (gnu packages mp3)
59 #:use-module (gnu packages image)
60 #:use-module (gnu packages ncurses)
61 #:use-module (gnu packages python)
62 #:use-module (gnu packages readline)
63 #:use-module (gnu packages xorg)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages databases)
66 #:use-module (gnu packages sdl)
67 #:use-module (gnu packages texinfo)
68 #:use-module (gnu packages check)
69 #:use-module (gnu packages fontutils)
70 #:use-module (gnu packages gstreamer)
71 #:use-module (gnu packages bash)
72 #:use-module (gnu packages perl)
73 #:use-module (gnu packages qt)
74 #:use-module (gnu packages compression)
75 #:use-module (gnu packages pulseaudio)
76 #:use-module (gnu packages linux)
77 #:use-module (gnu packages zip)
78 #:use-module (gnu packages xiph)
79 #:use-module (gnu packages curl)
80 #:use-module (gnu packages lua)
81 #:use-module (gnu packages video)
82 #:use-module (gnu packages xml)
83 #:use-module (gnu packages tcl)
84 #:use-module (gnu packages fribidi)
85 #:use-module (guix build-system trivial)
86 #:use-module (guix build-system gnu)
87 #:use-module (guix build-system haskell)
88 #:use-module (guix build-system cmake)
89 #:use-module (guix build-system trivial))
98 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
99 version ".000-sources." "tar.gz"))
102 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
103 (build-system gnu-build-system)
104 (inputs `(("glib" ,glib)
105 ("readline" ,readline)
109 ("gtkglext" ,gtkglext)
111 ("libcanberra" ,libcanberra)))
112 (native-inputs `(("python-2" ,python-2)
113 ("pkg-config" ,pkg-config)))
114 (home-page "http://gnubg.org")
115 (synopsis "Backgammon game")
116 (description "The GNU backgammon application can be used for playing, analyzing and
117 teaching the game. It has an advanced evaluation engine based on artificial
118 neural networks suitable for both beginners and advanced players. In
119 addition to a command-line interface, it also features an attractive, 3D
120 representation of the playing board.")
121 (license license:gpl3+)))
123 (define-public gnubik
130 (uri (string-append "mirror://gnu/gnubik/gnubik-"
134 "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5"))))
135 (build-system gnu-build-system)
136 (inputs `(("gtk+" ,gtk+-2)
141 ("gtkglext" ,gtkglext)))
142 (native-inputs `(("gettext" ,gnu-gettext)
143 ("pkg-config" ,pkg-config)))
144 (home-page "https://www.gnu.org/software/gnubik/")
145 (synopsis "3d Rubik's cube game")
147 "GNUbik is a puzzle game in which you must manipulate a cube to make
148 each of its faces have a uniform color. The game is customizable, allowing
149 you to set the size of the cube (the default is 3x3) or to change the colors.
150 You may even apply photos to the faces instead of colors. The game is
151 scriptable with Guile.")
152 (license license:gpl3+)))
154 (define-public abbaye
161 (uri (string-append "http://abbaye-for-linux.googlecode.com/files/abbaye-for-linux-src-"
165 "1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk"))))
166 (build-system gnu-build-system)
168 '(#:modules ((ice-9 match)
169 (guix build gnu-build-system)
171 #:phases (modify-phases %standard-phases
172 (add-after 'set-paths 'set-sdl-paths
173 (lambda* (#:key inputs #:allow-other-keys)
175 (string-append (assoc-ref inputs "sdl-union")
177 (add-after 'patch-source-shebangs 'patch-makefile
178 (lambda* (#:key outputs #:allow-other-keys)
179 ;; Replace /usr with package output directory.
180 (for-each (lambda (file)
182 (("/usr") (assoc-ref outputs "out"))))
183 '("makefile" "src/pantallas.c" "src/comun.h"))))
184 (add-before 'install 'make-install-dirs
185 (lambda* (#:key outputs #:allow-other-keys)
186 (let ((prefix (assoc-ref outputs "out")))
187 ;; Create directories that the makefile assumes exist.
188 (mkdir-p (string-append prefix "/bin"))
189 (mkdir-p (string-append prefix "/share/applications"))
190 (mkdir-p (string-append prefix "/share/pixmaps")))))
191 ;; No configure script.
193 #:tests? #f)) ;; No check target.
194 (native-inputs `(("pkg-config" ,pkg-config)))
195 (inputs `(("sdl-union" ,(sdl-union))))
196 (home-page "http://code.google.com/p/abbaye-for-linux/")
197 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
198 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
199 France. The Cathars, who preach about good Christian beliefs, were being
200 expelled by the Catholic Church out of the Languedoc region in France. One of
201 them, called Jean Raymond, found an old church in which to hide, not knowing
202 that beneath its ruins lay buried an ancient evil.")
203 (license license:gpl3+)))
205 (define-public pingus
212 (uri (string-append "http://pingus.googlecode.com/files/pingus-"
216 "0q34d2k6anzqvb0mf67x85q92lfx9jr71ry13dlp47jx0x9i573m"))
217 (patches (list (search-patch "pingus-sdl-libs-config.patch")))))
218 (build-system gnu-build-system)
219 (native-inputs `(("pkg-config" ,pkg-config)
221 (inputs `(("sdl" ,sdl)
222 ("sdl-image" ,sdl-image)
223 ("sdl-mixer" ,sdl-mixer)
229 '(#:tests? #f ;no check target
235 (lambda* (#:key outputs #:allow-other-keys)
236 (zero? (system* "make" "install"
237 (string-append "PREFIX="
238 (assoc-ref outputs "out")))))
240 (home-page "http://pingus.seul.org/welcome.html")
241 (synopsis "Lemmings clone")
243 "Pingus is a free Lemmings-like puzzle game in which the player takes
244 command of a bunch of small animals and has to guide them through levels.
245 Since the animals walk on their own, the player can only influence them by
246 giving them commands, like build a bridge, dig a hole, or redirect all animals
247 in the other direction. Multiple such commands are necessary to reach the
248 level's exit. The game is presented in a 2D side view.")
249 ;; Some source files are under bsd-3 and gpl2+ licenses.
250 (license license:gpl3+)))
252 (define-public talkfilters
259 (uri (string-append "http://www.hyperrealm.com/" name "/"
260 name "-" version ".tar.gz"))
262 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
263 (build-system gnu-build-system)
264 (home-page "http://www.gnu.org/software/talkfilters")
265 (synopsis "Convert English text to humorous dialects")
266 (description "The GNU Talk Filters are programs that convert English text
267 into stereotyped or otherwise humorous dialects. The filters are provided as
268 a C library, so they can easily be integrated into other programs.")
269 (license license:gpl2+)))
271 (define-public cmatrix
278 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
282 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
283 (build-system gnu-build-system)
286 (alist-replace 'configure
287 (lambda* (#:key outputs #:allow-other-keys)
288 ;; This old `configure' script doesn't support
289 ;; variables passed as arguments.
290 (let ((out (assoc-ref outputs "out")))
291 (setenv "CONFIG_SHELL" (which "bash"))
293 (system* "./configure"
294 (string-append "--prefix=" out)))))
296 (inputs `(("ncurses" ,ncurses)))
297 (home-page "http://www.asty.org/cmatrix")
298 (synopsis "Simulate the display from \"The Matrix\"")
299 (description "CMatrix simulates the display from \"The Matrix\" and is
300 based on the screensaver from the movie's website. It works with terminal
301 settings up to 132x300 and can scroll lines all at the same rate or
302 asynchronously and at a user-defined speed.")
303 (license license:gpl2+)))
312 (uri (string-append "mirror://gnu/chess/gnuchess-" version
316 "1a41ag03q66pwy3pjrmbxxjpzi9fcaiiaiywd7m9v25mxqac2xkp"))))
317 (build-system gnu-build-system)
318 (home-page "http://www.gnu.org/software/chess")
319 (synopsis "Full chess implementation")
320 (description "GNU Chess is a chess engine. It allows you to compete
321 against the computer in a game of chess, either through the default terminal
322 interface or via an external visual interface such as GNU XBoard.")
323 (license license:gpl3+)))
325 (define freedink-engine
327 (name "freedink-engine")
331 (uri (string-append "mirror://gnu/freedink/freedink-" version
335 "08c51imfjfcydm7h0va09z8qfw5nc837bi2x754ni2z737hb5kw2"))))
336 (build-system gnu-build-system)
337 (arguments `(#:configure-flags '("--disable-embedded-resources")))
338 (native-inputs `(("gettext" ,gnu-gettext)
339 ("pkg-config" ,pkg-config)))
340 (inputs `(("sdl" ,sdl)
341 ("sdl-image" ,sdl-image)
342 ("sdl-mixer" ,sdl-mixer)
345 ("fontconfig" ,fontconfig)
347 (home-page "http://www.gnu.org/software/freedink/")
348 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
350 "GNU FreeDink is a free and portable re-implementation of the engine
351 for the role-playing game Dink Smallwood. It supports not only the original
352 game data files but it also supports user-produced game mods or \"D-Mods\".
353 To that extent, it also includes a front-end for managing all of your D-Mods.")
354 (license license:gpl3+)))
356 (define freedink-data
358 (name "freedink-data")
359 (version "1.08.20140901")
362 (uri (string-append "mirror://gnu/freedink/freedink-data-"
366 "04f1aa8gfz30qkgv7chjz5n1s8v5hbqs01h2113cq1ylm3isd5sp"))))
367 (build-system gnu-build-system)
369 `(#:phases (alist-delete 'configure (alist-delete 'check %standard-phases))
370 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
371 (home-page "http://www.gnu.org/software/freedink/")
372 (synopsis "Game data for GNU Freedink")
374 "This package contains the game data of GNU Freedink.")
375 (license license:gpl3+)))
377 ;; TODO: Add freedink-dfarc when there's a wxWidgets package.
379 (define-public freedink
380 ;; This is a wrapper that tells the engine where to find the data.
381 (package (inherit freedink-engine)
383 (build-system trivial-build-system)
386 (use-modules (guix build utils))
388 (let* ((output (assoc-ref %outputs "out"))
389 (bin (string-append output "/bin"))
390 (executable (string-append bin "/freedink")))
392 (call-with-output-file executable
394 (format port "#!~a/bin/sh
395 exec ~a/bin/freedink -refdir ~a/share/dink\n"
396 (assoc-ref %build-inputs "bash")
397 (assoc-ref %build-inputs "engine")
398 (assoc-ref %build-inputs "data"))
399 (chmod port #o777)))))
400 #:modules ((guix build utils))))
401 (inputs `(("engine" ,freedink-engine)
402 ("data" ,freedink-data)
404 (native-inputs '())))
406 (define-public xboard
413 (uri (string-append "mirror://gnu/xboard/xboard-" version
417 "05rdj0nyirc4g1qi5hhrjy45y52ihp1j3ldq2c5bwrz0gzy4i3y8"))))
418 (build-system gnu-build-system)
419 (inputs `(("cairo" ,cairo)
423 (native-inputs `(("texinfo" ,texinfo)
424 ("pkg-config" ,pkg-config)))
425 (home-page "http://www.gnu.org/software/xboard")
426 (synopsis "Graphical user interface for chess programs")
427 (description "GNU XBoard is a graphical board for all varieties of chess,
428 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
429 and Makruk. Several lesser-known variants are also supported. It presents a
430 fully interactive graphical interface and it can load and save games in the
431 Portable Game Notation.")
432 (license license:gpl3+)))
435 (define-public xboing
442 (uri (string-append "http://www.techrescue.org/xboing/xboing"
445 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))))
451 (lambda* (#:key outputs #:allow-other-keys)
453 (substitute* "Imakefile"
454 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
455 (string-append "XPMINCLUDE = -I" (assoc-ref %build-inputs "libxpm")
458 (substitute* "Imakefile"
459 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
461 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
463 (zero? (system* "xmkmf" "-a"
464 (string-append "-DProjectRoot="
465 (assoc-ref outputs "out")))))
466 (alist-replace 'install
467 (lambda* (#:key outputs #:allow-other-keys)
469 (zero? (system* "make" "install.man"))
470 (zero? (system* "make" "install"))))
472 (inputs `(("libx11" ,libx11)
475 (native-inputs `(("imake" ,imake)
476 ("inetutils" ,inetutils)
477 ("makedepend" ,makedepend)))
478 (build-system gnu-build-system)
479 (home-page "http://www.techrescue.org/xboing")
480 (synopsis "Ball and paddle game")
481 (description "XBoing is a blockout type game where you have a paddle which
482 you control to bounce a ball around the game zone destroying blocks with a
483 proton ball. Each block carries a different point value. The more blocks you
484 destroy, the better your score. The person with the highest score wins.")
485 (license (license:x11-style "file://COPYING"
486 "Very similar to the X11 licence."))))
488 (define-public gtypist
494 (uri (string-append "mirror://gnu/gtypist/gtypist-"
498 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
499 (modules '((guix build utils)))
501 ;; We do not provide `ncurses.h' within an `ncursesw'
502 ;; sub-directory, so patch the source accordingly. See
503 ;; <http://bugs.gnu.org/19018>.
504 '(for-each (lambda (file)
506 (("ncursesw/ncurses.h")
508 (find-files "." "configure$|\\.c$")))))
509 (build-system gnu-build-system)
510 (inputs `(("ncurses" ,ncurses)
512 (home-page "http://www.gnu.org/software/gtypist/")
513 (synopsis "Typing tutor")
515 "GNU Typist is a universal typing tutor. It can be used to learn and
516 practice touch-typing. Several tutorials are included; in addition to
517 tutorials for the standard QWERTY layout, there are also tutorials for the
518 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
519 are primarily in English, however some in other languages are provided.")
520 (license license:gpl3+)))
522 (define-public irrlicht
529 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
530 (version-major+minor version)
531 "/" version "/irrlicht-" version ".zip"))
534 "0yz9lvsc8aqk8wj4rnpanxrw90gqpwn9w5hxp94r8hnm2q0vjjw1"))))
535 (build-system gnu-build-system)
537 '(#:phases (alist-cons-after
538 'unpack 'fix-build-env
539 (lambda* (#:key outputs #:allow-other-keys)
540 (let ((out (assoc-ref outputs "out")))
541 (substitute* "Makefile"
542 (("INSTALL_DIR = /usr/local/lib")
543 (string-append "INSTALL_DIR = " out "/lib")))
544 ;; The Makefile assumes these directories exist.
545 (mkdir-p (string-append out "/lib"))
546 (mkdir-p (string-append out "/include"))))
549 (lambda* (#:key source #:allow-other-keys)
550 (and (zero? (system* "unzip" source))
551 ;; The actual source is buried a few directories deep.
552 (chdir "irrlicht-1.8.1/source/Irrlicht/")))
554 'unpack 'apply-patch/mesa-10-fix
555 (lambda* (#:key inputs #:allow-other-keys)
556 (zero? (system* "patch" "--force" "-p3" "-i"
557 (assoc-ref inputs "patch/mesa-10-fix"))))
558 ;; No configure script
559 (alist-delete 'configure %standard-phases))))
560 #:tests? #f ; no check target
561 #:make-flags '("CC=gcc" "sharedlib")))
563 `(("patch/mesa-10-fix" ,(search-patch "irrlicht-mesa-10.patch"))
568 (synopsis "3D game engine written in C++")
570 "The Irrlicht Engine is a high performance realtime 3D engine written in
571 C++. Features include an OpenGL renderer, extensible materials, scene graph
572 management, character animation, particle and other special effects, support
573 for common mesh file formats, and collision detection.")
574 (home-page "http://irrlicht.sourceforge.net/")
575 (license license:zlib)))
578 ;; The latest release on SourceForge relies on an unreleased version of SFML
579 ;; with a different API, so we take the latest version from the official
580 ;; repository on Github.
581 (let ((commit "c855d04409")
585 (version (string-append "0.7.5." revision "." commit ))
589 (url "https://github.com/thelaui/M.A.R.S..git")
591 (file-name (string-append name "-" version))
594 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
595 (patches (list (search-patch "mars-sfml-2.3.patch")
596 (search-patch "mars-install.patch")))))
597 (build-system cmake-build-system)
599 `(#:tests? #f ; There are no tests
601 (modify-phases %standard-phases
602 (add-after 'unpack 'fix-install-path
604 (substitute* "src/CMakeLists.txt"
605 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
606 "${CMAKE_INSTALL_PREFIX}/bin"))
608 (add-after 'unpack 'fix-data-path
609 (lambda* (#:key outputs #:allow-other-keys)
610 (substitute* "src/System/settings.cpp"
611 (("C_dataPath = \"./data/\";")
612 (string-append "C_dataPath = \""
613 (assoc-ref outputs "out")
614 "/share/games/marsshooter/\";")))
621 (home-page "http://marsshooter.org")
622 (synopsis "2D space shooter")
624 "M.A.R.S. is a 2D space shooter with pretty visual effects and
625 attractive physics. Players can battle each other or computer controlled
626 enemies in different game modes such as space ball, death match, team death
627 match, cannon keep, and grave-itation pit.")
628 (license license:gpl3+))))
630 (define minetest-data
632 (name "minetest-data")
637 "https://github.com/minetest/minetest_game/archive/"
639 (file-name (string-append name "-" version ".tar.gz"))
642 "04xnyfap75v3p818kpqb07xshqwqzpws5xjvw5m96qnd9x4725ld"))))
643 (build-system trivial-build-system)
647 ("gzip" ,(@ (gnu packages compression) gzip))))
649 `(#:modules ((guix build utils))
651 (use-modules (guix build utils))
652 (let ((tar (string-append (assoc-ref %build-inputs "tar")
654 (install-dir (string-append
656 "/share/minetest/games/minetest_game"))
657 (path (string-append (assoc-ref %build-inputs
661 (system* tar "xvf" (assoc-ref %build-inputs "source"))
662 (chdir (string-append "minetest_game-" ,version))
663 (mkdir-p install-dir)
664 (copy-recursively "." install-dir)))))
665 (synopsis "Main game data for the Minetest game engine")
667 "Game data for the Minetest infinite-world block sandox game.")
668 (home-page "http://minetest.net")
669 (license license:lgpl2.1+)))
671 (define-public minetest
678 "https://github.com/minetest/minetest/archive/"
680 (file-name (string-append name "-" version ".tar.gz"))
683 "1xzrvsg0fpbj5p4pz6lls11m3ab4y2bnjlsm4gnw68x9006ffznp"))))
684 (build-system cmake-build-system)
687 (list "-DRUN_IN_PLACE=0"
688 "-DENABLE_FREETYPE=1"
690 (string-append "-DIRRLICHT_INCLUDE_DIR="
691 (assoc-ref %build-inputs "irrlicht")
693 (string-append "-DCURL_INCLUDE_DIR="
694 (assoc-ref %build-inputs "curl")
696 #:tests? #f)) ; no check target
698 (list (search-path-specification
699 (variable "MINETEST_SUBGAME_PATH")
700 (files '("share/minetest/games")))))
702 `(("pkg-config" ,pkg-config)))
704 `(("irrlicht" ,irrlicht)
707 ("libxxf86vm" ,libxxf86vm)
710 ("libvorbis" ,libvorbis)
712 ("freetype" ,(@ (gnu packages fontutils) freetype))
715 ("gettext" ,gnu-gettext)
718 `(("minetest-data" ,minetest-data)))
719 (synopsis "Infinite-world block sandbox game")
721 "Minetest is a sandbox construction game. Players can create and destroy
722 various types of blocks in a three-dimensional open world. This allows
723 forming structures in every possible creation, on multiplayer servers or as a
724 single player. Mods and texture packs allow players to personalize the game
726 (home-page "http://minetest.net")
727 (license license:lgpl2.1+)))
736 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
737 "glk/implementations/glkterm-104.tar.gz"))
740 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
741 (build-system gnu-build-system)
742 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
744 '(#:tests? #f ; no check target
748 (lambda* (#:key outputs #:allow-other-keys)
749 (let* ((out (assoc-ref outputs "out"))
750 (inc (string-append out "/include")))
754 (copy-file file (string-append inc "/" file)))
755 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
756 (mkdir (string-append out "/lib"))
757 (copy-file "libglkterm.a" (string-append out "/lib/libglkterm.a"))))
758 (alist-delete 'configure %standard-phases))))
759 (home-page "http://www.eblong.com/zarf/glk/")
760 (synopsis "Curses Implementation of the Glk API")
762 "Glk defines a portable API for applications with text UIs. It was
763 primarily designed for interactive fiction, but it should be suitable for many
764 interactive text utilities, particularly those based on a command line.
765 This is an implementation of the Glk library which runs in a terminal window,
766 using the curses.h library for screen control.")
767 (license (license:fsf-free "file://README"))))
769 (define-public glulxe
776 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
777 "glulx/interpreters/glulxe/glulxe-052.tar.gz"))
780 "19iw6kl8ncqcy9pv4gsqfh3xsa1n94zd234rqavvmxccnf3nj19g"))))
781 (build-system gnu-build-system)
782 (inputs `(("glk" ,glkterm)))
784 '(#:tests? #f ; no check target
786 (let* ((glk (assoc-ref %build-inputs "glk")))
787 (list (string-append "GLKINCLUDEDIR=" glk "/include")
788 (string-append "GLKLIBDIR=" glk "/lib")
789 (string-append "GLKMAKEFILE=" "Make.glkterm")))
793 (lambda* (#:key outputs #:allow-other-keys)
794 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
796 (copy-file "glulxe" (string-append bin "/glulxe"))))
797 (alist-delete 'configure %standard-phases))))
798 (home-page "http://www.eblong.com/zarf/glulx/")
799 (synopsis "Interpreter for Glulx VM")
801 "Glulx is a 32-bit portable virtual machine intended for writing and
802 playing interactive fiction. It was designed by Andrew Plotkin to relieve
803 some of the restrictions in the venerable Z-machine format. This is the
804 reference interpreter, using Glk API.")
805 (license (license:fsf-free "file://README"))))
813 (uri (string-append "https://christoph-ender.de/fizmo/source/"
814 name "-" version ".tar.gz"))
817 "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
818 (build-system gnu-build-system)
821 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
822 (ncurses (assoc-ref %build-inputs "ncurses")))
823 (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
824 (string-append "jpeg_LIBS=-ljpeg")
825 (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
826 (string-append "ncursesw_LIBS=-lncursesw")))))
828 `(("pkg-config" ,pkg-config)))
830 `(("libjpeg" ,libjpeg)
832 ("libsndfile" ,libsndfile)
836 (home-page "https://christoph-ender.de/fizmo/")
837 (synopsis "Z-machine interpreter")
839 "Fizmo is a console-based Z-machine interpreter. It is used to play
840 interactive fiction, also known as text adventures, which were implemented
841 either by Infocom or created using the Inform compiler.")
842 (license license:bsd-3)))
844 (define-public retroarch
851 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
853 (file-name (string-append name "-" version ".tar.gz"))
855 (base32 "1bxr8yhk3ad4df544qljsfjfhxa8zy1grq7rn1s02yfvdmgzf4qi"))))
856 (build-system gnu-build-system)
858 '(#:tests? #f ; no tests
863 (substitute* "qb/qb.libs.sh"
864 (("/bin/true") (which "true")))
867 (string-append "--prefix=" %output)
868 (string-append "--global-config-dir=" %output "/etc"))))
871 `(("alsa-lib" ,alsa-lib)
873 ("freetype" ,freetype)
874 ("libxinerama" ,libxinerama)
875 ("libxkbcommon" ,libxkbcommon)
880 ("pulseaudio" ,pulseaudio)
886 `(("pkg-config" ,pkg-config)
888 (home-page "http://www.libretro.com/")
889 (synopsis "Reference frontend for the libretro API")
891 "Libretro is a simple but powerful development interface that allows for
892 the easy creation of emulators, games and multimedia applications that can plug
893 straight into any libretro-compatible frontend. RetroArch is the official
894 reference frontend for the libretro API, currently used by most as a modular
895 multi-system game/emulator system.")
896 (license license:gpl3+)))
904 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
908 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
909 (build-system gnu-build-system)
910 (inputs `(("readline" ,readline)))
911 (synopsis "Play the game of Go")
913 "GNU Go is a program that plays the game of Go, in which players
914 place stones on a grid to form territory or capture other stones. While
915 it can be played directly from the terminal, rendered in ASCII characters,
916 it is also possible to play GNU Go with 3rd party graphical interfaces or
917 even in Emacs. It supports the standard game storage format (SGF, Smart
918 Game Format) and inter-process communication format (GMP, Go Modem
920 (home-page "http://www.gnu.org/software/gnugo/")
921 (license license:gpl3+)))
923 (define-public extremetuxracer
925 (name "extremetuxracer")
930 "http://downloads.sourceforge.net/project/extremetuxracer/releases/"
931 version "/etr-" version ".tar.xz"))
934 "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4"))))
935 (build-system gnu-build-system)
937 `(("pkg-config" ,pkg-config)))
939 `(("freetype" ,freetype)
945 ("sdl-mixer" ,sdl-mixer)
946 ("sdl-image" ,sdl-image)
948 ("libunwind" ,libunwind)
958 (modify-phases %standard-phases
959 (add-after 'configure 'patch-makefile
961 (substitute* "Makefile"
962 (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}")))))))
963 (synopsis "High speed arctic racing game based on Tux Racer")
964 ;; Snarfed straight from Debian
965 (description "Extreme Tux Racer, or etracer as it is called for short, is
966 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
967 game is to slide down a snow- and ice-covered mountain as quickly as possible,
968 avoiding the trees and rocks that will slow you down.
970 Collect herrings and other goodies while sliding down the hill, but avoid fish
973 This game is based on the GPL version of the famous game TuxRacer.")
974 (home-page "http://sourceforge.net/projects/extremetuxracer/")
975 (license license:gpl2+)))
977 (define-public gnujump
983 (uri (string-append "mirror://gnu/gnujump/gnujump-"
987 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
988 (build-system gnu-build-system)
991 (modify-phases %standard-phases
993 'configure 'link-libm
994 (lambda _ (setenv "LIBS" "-lm"))))))
999 ("sdl-image" ,sdl-image)
1000 ("sdl-mixer" ,sdl-mixer)))
1001 (home-page "http://gnujump.es.gnu.org/")
1003 "Game of jumping to the next floor, trying not to fall")
1005 "GNUjump is a simple, yet addictive game in which you must jump from
1006 platform to platform to avoid falling, while the platforms drop at faster rates
1007 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
1008 falling, themeable graphics and sounds, and replays.")
1009 (license license:gpl3+)))
1011 (define-public wesnoth
1017 (uri (string-append "mirror://sourceforge/wesnoth/"
1018 name "-" version ".tar.bz2"))
1021 "19qyylylaljhk45lk2ja0xp7cx9iy4hx07l65zkg20a2v9h50lmz"))))
1022 (build-system cmake-build-system)
1024 '(#:tests? #f ; no check target
1026 ;; XXX: Failed to compile with '-Werror=old-style-cast'.
1027 ;; boost/mpl/assert.hpp:313:58: error:
1028 ;; use of old-style cast [-Werror=old-style-cast]
1030 ;; cc1plus: all warnings being treated as errors
1031 '("-DENABLE_STRICT_COMPILATION=OFF")))
1033 `(("gettext" ,gnu-gettext)
1034 ("pkg-config" ,pkg-config)))
1038 ("fribidi" ,fribidi)
1039 ("libvorbis" ,libvorbis)
1041 ("sdl-image" ,sdl-image)
1042 ("sdl-mixer" ,sdl-mixer)
1043 ("sdl-net" ,sdl-net)
1044 ("sdl-ttf" ,sdl-ttf)))
1045 (home-page "http://www.wesnoth.org/")
1046 (synopsis "Turn-based strategy game")
1048 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
1049 with several single player campaigns, and multiplayer games (both networked and
1052 Battle for control on a range of maps, using variety of units which have
1053 advantages and disadvantages against different types of attacks. Units gain
1054 experience and advance levels, and are carried over from one scenario to the
1056 (license license:gpl2+)))
1058 (define-public dosbox
1061 (version "0.74.svn3947")
1065 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1067 (file-name (string-append name "-" version "-checkout"))
1068 ;; Use SVN head, since the last release (2010) is incompatible
1069 ;; with GCC 4.8+ (see
1070 ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
1073 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1074 (build-system gnu-build-system)
1076 `(#:phases (modify-phases %standard-phases
1080 (zero? (system* "sh" "autogen.sh")))))))
1082 `(("autoconf" ,autoconf)
1083 ("automake" ,automake)))
1088 ("alsa-lib" ,alsa-lib)
1091 (home-page "http://www.dosbox.com")
1092 (synopsis "x86 emulator with CGA/EGA/VGA/etc. graphics and sound")
1093 (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
1094 also emulates CPU:286/386 realmode/protected mode, Directory
1095 FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
1096 SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
1098 (license license:gpl2+)))
1100 (define-public gamine
1106 (uri (string-append "mirror://sourceforge/gamine-game/"
1107 "gamine-" version ".tar.gz"))
1110 "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
1111 (build-system gnu-build-system)
1113 `(("pkg-config" ,pkg-config)
1114 ("intltool" ,intltool)))
1116 `(("gstreamer" ,gstreamer)
1117 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1118 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1123 (let ((out (assoc-ref %outputs "out")))
1124 (list (string-append "PREFIX=" out)
1125 (string-append "SYSCONFDIR=" out "/etc")))
1127 (modify-phases %standard-phases
1130 'install 'wrap-gamine
1131 (lambda* (#:key outputs #:allow-other-keys)
1132 (let ((out (assoc-ref outputs "out"))
1133 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1134 (wrap-program (string-append out "/bin/gamine")
1135 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
1137 (home-page "http://gamine-game.sourceforge.net/")
1138 (synopsis "Mouse and keyboard discovery for children")
1140 "Gamine is a game designed for young children who are learning to use the
1141 mouse and keyboard. The child uses the mouse to draw colored dots and lines
1142 on the screen and keyboard to display letters.")
1143 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
1144 (license license:gpl3)))
1146 (define-public raincat
1154 "http://hackage.haskell.org/package/Raincat/Raincat-"
1159 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
1160 (build-system haskell-build-system)
1162 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
1163 ("ghc-mtl" ,ghc-mtl)
1164 ("ghc-random" ,ghc-random)
1165 ("ghc-glut" ,ghc-glut)
1166 ("ghc-opengl" ,ghc-opengl)
1167 ("ghc-sdl" ,ghc-sdl)
1168 ("ghc-sdl-image" ,ghc-sdl-image)
1169 ("ghc-sdl-mixer" ,ghc-sdl-mixer)))
1170 (home-page "http://raincat.bysusanlin.com/")
1171 (synopsis "Puzzle game with a cat in lead role")
1172 (description "Project Raincat is a game developed by Carnegie Mellon
1173 students through GCS during the Fall 2008 semester. Raincat features game
1174 play inspired from classics Lemmings and The Incredible Machine. The project
1175 proved to be an excellent learning experience for the programmers. Everything
1176 is programmed in Haskell.")
1177 (license license:bsd-3)))
1179 (define-public manaplus
1182 (version "1.5.10.24")
1186 "http://repo.manaplus.org/manaplus/download/"
1187 version "/manaplus-" version ".tar.xz"))
1190 "1bjxdyicli1pq65a6l4m84ksqwn9i90xa7yly9sfcrwq5mm1zimb"))))
1191 (build-system gnu-build-system)
1194 (list (string-append "CPPFLAGS=-I"
1195 (assoc-ref %build-inputs "sdl-union")
1198 `(("pkg-config" ,pkg-config)))
1202 ("libxml2" ,libxml2)
1205 ("sdl-union" ,(sdl-union))))
1206 (home-page "http://manaplus.org")
1207 (synopsis "Client for 'The Mana World' and similar games")
1209 "ManaPlus is a 2D MMORPG client for game servers. It is the only
1210 fully supported client for @uref{http://www.themanaworld.org, The mana
1211 world}, @uref{http://evolonline.org, Evol Online} and
1212 @uref{http://landoffire.org, Land of fire}.")
1213 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
1214 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
1215 ;; The rest is under GPL2+.
1216 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
1218 (define-public mupen64plus-core
1220 (name "mupen64plus-core")
1226 "https://github.com/mupen64plus/mupen64plus-core/archive/"
1228 (file-name (string-append name "-" version ".tar.gz"))
1230 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
1231 (build-system gnu-build-system)
1233 `(("pkg-config" ,pkg-config)
1236 `(("freetype" ,freetype)
1244 (modify-phases %standard-phases
1245 ;; The mupen64plus build system has no configure phase.
1247 ;; Makefile is in a subdirectory.
1249 'build 'cd-to-project-dir
1251 (chdir "projects/unix"))))
1252 #:make-flags (let ((out (assoc-ref %outputs "out")))
1253 (list "all" (string-append "PREFIX=" out)))
1254 ;; There are no tests.
1256 ;; As per the Makefile (in projects/unix/Makefile):
1257 (supported-systems '("i686-linux" "x86_64-linux"))
1258 (home-page "http://www.mupen64plus.org/")
1259 (synopsis "Nintendo 64 emulator core library")
1261 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1262 which is capable of accurately playing many games. This package contains the
1264 (license license:gpl2+)))
1266 (define-public mupen64plus-audio-sdl
1268 (name "mupen64plus-audio-sdl")
1274 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
1276 (file-name (string-append name "-" version ".tar.gz"))
1278 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
1279 (build-system gnu-build-system)
1281 `(("pkg-config" ,pkg-config)
1284 `(("mupen64plus-core" ,mupen64plus-core)
1288 (modify-phases %standard-phases
1289 ;; The mupen64plus build system has no configure phase.
1291 ;; Makefile is in a subdirectory.
1293 'build 'cd-to-project-dir
1295 (chdir "projects/unix"))))
1297 (let ((out (assoc-ref %outputs "out"))
1298 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1300 (string-append "PREFIX=" out)
1301 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1302 ;; There are no tests.
1304 (home-page "http://www.mupen64plus.org/")
1305 (synopsis "Mupen64Plus SDL input plugin")
1307 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1308 which is capable of accurately playing many games. This package contains the
1310 (license license:gpl2+)))
1312 (define-public mupen64plus-input-sdl
1314 (name "mupen64plus-input-sdl")
1320 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
1322 (file-name (string-append name "-" version ".tar.gz"))
1324 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
1325 (build-system gnu-build-system)
1327 `(("which" ,which)))
1329 `(("mupen64plus-core" ,mupen64plus-core)
1333 (modify-phases %standard-phases
1334 ;; The mupen64plus build system has no configure phase.
1336 ;; Makefile is in a subdirectory.
1338 'build 'cd-to-project-dir
1340 (chdir "projects/unix"))))
1342 (let ((out (assoc-ref %outputs "out"))
1343 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1345 (string-append "PREFIX=" out)
1346 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1347 ;; There are no tests.
1349 (home-page "http://www.mupen64plus.org/")
1350 (synopsis "Mupen64Plus SDL input plugin")
1352 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1353 which is capable of accurately playing many games. This package contains the
1355 (license license:gpl2+)))
1357 (define-public mupen64plus-rsp-hle
1359 (name "mupen64plus-rsp-hle")
1365 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
1367 (file-name (string-append name "-" version ".tar.gz"))
1369 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
1370 (build-system gnu-build-system)
1372 `(("mupen64plus-core" ,mupen64plus-core)))
1375 (modify-phases %standard-phases
1376 ;; The mupen64plus build system has no configure phase.
1378 ;; Makefile is in a subdirectory.
1380 'build 'cd-to-project-dir
1382 (chdir "projects/unix"))))
1384 (let ((out (assoc-ref %outputs "out"))
1385 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1387 (string-append "PREFIX=" out)
1388 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1389 ;; There are no tests.
1391 (home-page "http://www.mupen64plus.org/")
1392 (synopsis "Mupen64Plus SDL input plugin")
1394 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1395 which is capable of accurately playing many games. This package contains the
1396 high-level emulation (HLE) RSP processor plugin.")
1397 (license license:gpl2+)))
1399 (define-public mupen64plus-rsp-z64
1401 (name "mupen64plus-rsp-z64")
1407 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
1409 (file-name (string-append name "-" version ".tar.gz"))
1411 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
1412 (build-system gnu-build-system)
1414 `(("mupen64plus-core" ,mupen64plus-core)))
1417 (modify-phases %standard-phases
1418 ;; The mupen64plus build system has no configure phase.
1420 ;; Makefile is in a subdirectory.
1422 'build 'cd-to-project-dir
1424 (chdir "projects/unix"))))
1426 (let ((out (assoc-ref %outputs "out"))
1427 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1429 (string-append "PREFIX=" out)
1430 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1431 ;; There are no tests.
1433 (home-page "http://www.mupen64plus.org/")
1434 (synopsis "Mupen64Plus SDL input plugin")
1436 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1437 which is capable of accurately playing many games. This package contains the
1438 Z64 RSP processor plugin.")
1439 (license license:gpl2+)))
1441 (define-public mupen64plus-video-arachnoid
1443 (name "mupen64plus-video-arachnoid")
1449 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
1451 (file-name (string-append name "-" version ".tar.gz"))
1453 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
1454 (build-system gnu-build-system)
1456 `(("pkg-config" ,pkg-config)
1460 ("mupen64plus-core" ,mupen64plus-core)))
1463 (modify-phases %standard-phases
1464 ;; The mupen64plus build system has no configure phase.
1466 ;; Makefile is in a subdirectory.
1468 'build 'cd-to-project-dir
1470 (chdir "projects/unix"))))
1472 (let ((out (assoc-ref %outputs "out"))
1473 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1475 (string-append "PREFIX=" out)
1476 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1477 ;; There are no tests.
1479 (home-page "http://www.mupen64plus.org/")
1480 (synopsis "Mupen64Plus Rice Video plugin")
1482 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1483 which is capable of accurately playing many games. This package contains the
1484 Arachnoid video plugin.")
1485 (license license:gpl2+)))
1487 (define-public mupen64plus-video-glide64
1489 (name "mupen64plus-video-glide64")
1495 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
1497 (file-name (string-append name "-" version ".tar.gz"))
1499 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
1500 (build-system gnu-build-system)
1502 `(("pkg-config" ,pkg-config)
1506 ("mupen64plus-core" ,mupen64plus-core)
1510 (modify-phases %standard-phases
1511 ;; The mupen64plus build system has no configure phase.
1513 ;; Makefile is in a subdirectory.
1515 'build 'cd-to-project-dir
1517 (chdir "projects/unix")))
1518 ;; XXX Should be unnecessary with the next release.
1522 (substitute* "Makefile"
1523 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1524 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1526 (let ((out (assoc-ref %outputs "out"))
1527 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1529 (string-append "PREFIX=" out)
1530 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1531 ;; There are no tests.
1533 (home-page "http://www.mupen64plus.org/")
1534 (synopsis "Mupen64Plus Rice Video plugin")
1536 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1537 which is capable of accurately playing many games. This package contains the
1538 Glide64 video plugin.")
1539 (license license:gpl2+)))
1541 (define-public mupen64plus-video-glide64mk2
1543 (name "mupen64plus-video-glide64mk2")
1549 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
1551 (file-name (string-append name "-" version ".tar.gz"))
1553 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
1554 (build-system gnu-build-system)
1556 `(("pkg-config" ,pkg-config)
1562 ("mupen64plus-core" ,mupen64plus-core)
1567 (modify-phases %standard-phases
1568 ;; The mupen64plus build system has no configure phase.
1570 ;; Makefile is in a subdirectory.
1572 'build 'cd-to-project-dir
1574 (chdir "projects/unix"))))
1576 (let ((out (assoc-ref %outputs "out"))
1577 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1579 (string-append "PREFIX=" out)
1580 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1581 ;; There are no tests.
1583 (home-page "http://www.mupen64plus.org/")
1584 (synopsis "Mupen64Plus Rice Video plugin")
1586 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1587 which is capable of accurately playing many games. This package contains the
1588 Glide64MK2 video plugin.")
1589 (license license:gpl2+)))
1591 (define-public mupen64plus-video-rice
1593 (name "mupen64plus-video-rice")
1599 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
1601 (file-name (string-append name "-" version ".tar.gz"))
1603 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
1604 (build-system gnu-build-system)
1606 `(("pkg-config" ,pkg-config)
1609 `(("libpng" ,libpng)
1611 ("mupen64plus-core" ,mupen64plus-core)
1615 (modify-phases %standard-phases
1616 ;; The mupen64plus build system has no configure phase.
1618 ;; Makefile is in a subdirectory.
1620 'build 'cd-to-project-dir
1622 (chdir "projects/unix"))))
1624 (let ((out (assoc-ref %outputs "out"))
1625 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1627 (string-append "PREFIX=" out)
1628 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1629 ;; There are no tests.
1631 (home-page "http://www.mupen64plus.org/")
1632 (synopsis "Mupen64Plus Rice Video plugin")
1634 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1635 which is capable of accurately playing many games. This package contains the
1636 Rice Video plugin.")
1637 (license license:gpl2+)))
1639 (define-public mupen64plus-video-z64
1641 (name "mupen64plus-video-z64")
1647 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
1649 (file-name (string-append name "-" version ".tar.gz"))
1651 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
1652 (build-system gnu-build-system)
1654 `(("pkg-config" ,pkg-config)
1658 ("mupen64plus-core" ,mupen64plus-core)
1662 (modify-phases %standard-phases
1663 ;; The mupen64plus build system has no configure phase.
1665 ;; Makefile is in a subdirectory.
1667 'build 'cd-to-project-dir
1669 (chdir "projects/unix")))
1670 ;; XXX Should be unnecessary with the next release.
1674 (substitute* "Makefile"
1675 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1676 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1678 (let ((out (assoc-ref %outputs "out"))
1679 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1681 (string-append "PREFIX=" out)
1682 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1683 ;; There are no tests.
1685 (home-page "http://www.mupen64plus.org/")
1686 (synopsis "Mupen64Plus Z64 video plugin")
1688 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1689 which is capable of accurately playing many games. This package contains the
1691 (license license:gpl2+)))
1693 (define-public mupen64plus-ui-console
1695 (name "mupen64plus-ui-console")
1701 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
1703 (file-name (string-append name "-" version ".tar.gz"))
1705 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
1707 (list (search-patch "mupen64plus-ui-console-notice.patch")))))
1708 (build-system gnu-build-system)
1710 `(("pkg-config" ,pkg-config)
1714 ;; Mupen64Plus supports a single data directory and a single plugin
1715 ;; directory in its configuration, yet we need data and plugin files from
1716 ;; a variety of packages. The best way to deal with this is to install
1717 ;; all packages from which data and plugin files are needed into one's
1718 ;; profile, and point the configuration there. Hence, propagate the most
1719 ;; important packages here to save the user from the bother. The patch
1720 ;; mupen64plus-ui-console-notice also gives users instructions on what
1721 ;; they need to do in order to point the configuration to their profile.
1723 `(("mupen64plus-core" ,mupen64plus-core)
1724 ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
1725 ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
1726 ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
1727 ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
1728 ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
1729 ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
1732 (modify-phases %standard-phases
1733 ;; The mupen64plus build system has no configure phase.
1735 ;; Makefile is in a subdirectory.
1737 'build 'cd-to-project-dir
1739 (chdir "projects/unix"))))
1741 (let ((out (assoc-ref %outputs "out"))
1742 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1744 (string-append "PREFIX=" out)
1745 (string-append "APIDIR=" m64p "/include/mupen64plus")
1746 ;; Trailing slash matters here.
1747 (string-append "COREDIR=" m64p "/lib/")))
1748 ;; There are no tests.
1750 (home-page "http://www.mupen64plus.org/")
1751 (synopsis "Mupen64Plus SDL input plugin")
1753 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1754 which is capable of accurately playing many games. This package contains the
1755 command line user interface. Installing this package is the easiest way
1756 towards a working Mupen64Plus for casual users.")
1757 (license license:gpl2+)))
1759 (define-public nestopia-ue
1761 (name "nestopia-ue")
1766 "https://github.com/rdanbrook/nestopia/archive/"
1768 (file-name (string-append name "-" version ".tar.gz"))
1771 "07h49xwvg61dx20rk5p4r3ax2ar5y0ppvm60cqwqljyi9rdfbh7p"))
1772 (modules '((guix build utils)))
1775 ;; We don't need libretro for the GNU/Linux build.
1776 (delete-file-recursively "libretro")
1778 (delete-file-recursively "source/zlib")
1779 (substitute* "source/core/NstZlib.cpp"
1780 (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
1781 (build-system gnu-build-system)
1783 `(("pkg-config" ,pkg-config)))
1788 ("libarchive" ,libarchive)
1794 (modify-phases %standard-phases
1795 ;; The Nestopia build system consists solely of a Makefile.
1797 ;; XXX Should be unnecessary with the next release.
1799 'build 'patch-makefile
1801 (substitute* "Makefile"
1802 (("@mkdir \\$@") "@mkdir -p $@")
1804 (("CXX =") "CXX ?=")
1805 (("PREFIX =") "PREFIX ?=")
1806 (("^install:\n$") "install:\n\tmkdir -p $(BINDIR)\n"))))
1808 'build 'remove-xdg-desktop-menu-call
1810 (substitute* "Makefile"
1811 (("xdg-desktop-menu install .*") "")))))
1812 #:make-flags (let ((out (assoc-ref %outputs "out")))
1813 (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
1814 ;; There are no tests.
1816 (home-page "http://0ldsk00l.ca/nestopia/")
1817 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
1819 "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
1820 System (NES/Famicom) emulator Nestopia, with enhancements from members of the
1821 emulation community. It provides highly accurate emulation.")
1822 (license license:gpl2+)))