gnu: Adjust formatting as recommended by 'guix lint'.
[jackhill/guix/guix.git] / gnu / packages / games.scm
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>
17 ;;;
18 ;;; This file is part of GNU Guix.
19 ;;;
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.
24 ;;;
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.
29 ;;;
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/>.
32
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))
90
91 (define-public gnubg
92 (package
93 (name "gnubg")
94 (version "1.02")
95 (source
96 (origin
97 (method url-fetch)
98 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
99 version ".000-sources." "tar.gz"))
100 (sha256
101 (base32
102 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
103 (build-system gnu-build-system)
104 (inputs `(("glib" ,glib)
105 ("readline" ,readline)
106 ("gtk+" ,gtk+-2)
107 ("mesa" ,mesa)
108 ("glu" ,glu)
109 ("gtkglext" ,gtkglext)
110 ("sqlite" ,sqlite)
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+)))
122
123 (define-public gnubik
124 (package
125 (name "gnubik")
126 (version "2.4.2")
127 (source
128 (origin
129 (method url-fetch)
130 (uri (string-append "mirror://gnu/gnubik/gnubik-"
131 version ".tar.gz"))
132 (sha256
133 (base32
134 "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5"))))
135 (build-system gnu-build-system)
136 (inputs `(("gtk+" ,gtk+-2)
137 ("mesa" ,mesa)
138 ("glu" ,glu)
139 ("libx11" ,libx11)
140 ("guile" ,guile-2.0)
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")
146 (description
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+)))
153
154 (define-public abbaye
155 (package
156 (name "abbaye")
157 (version "1.13")
158 (source
159 (origin
160 (method url-fetch)
161 (uri (string-append "http://abbaye-for-linux.googlecode.com/files/"
162 "abbaye-for-linux-src-" version ".tar.gz"))
163 (sha256
164 (base32
165 "1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk"))))
166 (build-system gnu-build-system)
167 (arguments
168 '(#:modules ((ice-9 match)
169 (guix build gnu-build-system)
170 (guix build utils))
171 #:phases (modify-phases %standard-phases
172 (add-after 'set-paths 'set-sdl-paths
173 (lambda* (#:key inputs #:allow-other-keys)
174 (setenv "CPATH"
175 (string-append (assoc-ref inputs "sdl-union")
176 "/include/SDL"))))
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)
181 (substitute* 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.
192 (delete 'configure))
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+)))
204
205 (define-public pingus
206 (package
207 (name "pingus")
208 (version "0.7.6")
209 (source
210 (origin
211 (method url-fetch)
212 (uri (string-append "http://pingus.googlecode.com/files/pingus-"
213 version ".tar.bz2"))
214 (sha256
215 (base32
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)
220 ("scons" ,scons)))
221 (inputs `(("sdl" ,sdl)
222 ("sdl-image" ,sdl-image)
223 ("sdl-mixer" ,sdl-mixer)
224 ("mesa" ,mesa)
225 ("glu" ,glu)
226 ("libpng" ,libpng)
227 ("boost" ,boost)))
228 (arguments
229 '(#:tests? #f ;no check target
230 #:phases
231 (alist-delete
232 'configure
233 (alist-replace
234 'install
235 (lambda* (#:key outputs #:allow-other-keys)
236 (zero? (system* "make" "install"
237 (string-append "PREFIX="
238 (assoc-ref outputs "out")))))
239 %standard-phases))))
240 (home-page "http://pingus.seul.org/welcome.html")
241 (synopsis "Lemmings clone")
242 (description
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+)))
251
252 (define-public talkfilters
253 (package
254 (name "talkfilters")
255 (version "2.3.8")
256 (source
257 (origin
258 (method url-fetch)
259 (uri (string-append "http://www.hyperrealm.com/" name "/"
260 name "-" version ".tar.gz"))
261 (sha256
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+)))
270
271 (define-public cmatrix
272 (package
273 (name "cmatrix")
274 (version "1.2a")
275 (source
276 (origin
277 (method url-fetch)
278 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
279 ".tar.gz"))
280 (sha256
281 (base32
282 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
283 (build-system gnu-build-system)
284 (arguments
285 '(#:phases
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"))
292 (zero?
293 (system* "./configure"
294 (string-append "--prefix=" out)))))
295 %standard-phases)))
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+)))
304
305 (define-public chess
306 (package
307 (name "chess")
308 (version "6.2.2")
309 (source
310 (origin
311 (method url-fetch)
312 (uri (string-append "mirror://gnu/chess/gnuchess-" version
313 ".tar.gz"))
314 (sha256
315 (base32
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+)))
324
325 (define freedink-engine
326 (package
327 (name "freedink-engine")
328 (version "108.4")
329 (source (origin
330 (method url-fetch)
331 (uri (string-append "mirror://gnu/freedink/freedink-" version
332 ".tar.gz"))
333 (sha256
334 (base32
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)
343 ("sdl-ttf" ,sdl-ttf)
344 ("sdl-gfx" ,sdl-gfx)
345 ("fontconfig" ,fontconfig)
346 ("check" ,check)))
347 (home-page "http://www.gnu.org/software/freedink/")
348 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
349 (description
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+)))
355
356 (define freedink-data
357 (package
358 (name "freedink-data")
359 (version "1.08.20140901")
360 (source (origin
361 (method url-fetch)
362 (uri (string-append "mirror://gnu/freedink/freedink-data-"
363 version ".tar.gz"))
364 (sha256
365 (base32
366 "04f1aa8gfz30qkgv7chjz5n1s8v5hbqs01h2113cq1ylm3isd5sp"))))
367 (build-system gnu-build-system)
368 (arguments
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")
373 (description
374 "This package contains the game data of GNU Freedink.")
375 (license license:gpl3+)))
376
377 ;; TODO: Add freedink-dfarc when there's a wxWidgets package.
378
379 (define-public freedink
380 ;; This is a wrapper that tells the engine where to find the data.
381 (package (inherit freedink-engine)
382 (name "freedink")
383 (build-system trivial-build-system)
384 (arguments
385 '(#:builder (begin
386 (use-modules (guix build utils))
387
388 (let* ((output (assoc-ref %outputs "out"))
389 (bin (string-append output "/bin"))
390 (executable (string-append bin "/freedink")))
391 (mkdir-p bin)
392 (call-with-output-file executable
393 (lambda (port)
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)
403 ("bash" ,bash)))
404 (native-inputs '())))
405
406 (define-public xboard
407 (package
408 (name "xboard")
409 (version "4.8.0")
410 (source
411 (origin
412 (method url-fetch)
413 (uri (string-append "mirror://gnu/xboard/xboard-" version
414 ".tar.gz"))
415 (sha256
416 (base32
417 "05rdj0nyirc4g1qi5hhrjy45y52ihp1j3ldq2c5bwrz0gzy4i3y8"))))
418 (build-system gnu-build-system)
419 (inputs `(("cairo" ,cairo)
420 ("librsvg" ,librsvg)
421 ("libxt" ,libxt)
422 ("libxaw" ,libxaw)))
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+)))
433
434
435 (define-public xboing
436 (package
437 (name "xboing")
438 (version "2.4")
439 (source
440 (origin
441 (method url-fetch)
442 (uri (string-append "http://www.techrescue.org/xboing/xboing"
443 version ".tar.gz"))
444 (sha256
445 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))))
446 (arguments
447 `(#:tests? #f
448 #:phases
449 (alist-replace
450 'configure
451 (lambda* (#:key outputs #:allow-other-keys)
452
453 (substitute* "Imakefile"
454 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
455 (string-append "XPMINCLUDE = -I" (assoc-ref %build-inputs "libxpm")
456 "/include/X11")))
457
458 (substitute* "Imakefile"
459 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
460
461 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
462
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)
468 (and
469 (zero? (system* "make" "install.man"))
470 (zero? (system* "make" "install"))))
471 %standard-phases))))
472 (inputs `(("libx11" ,libx11)
473 ("libxext" ,libxext)
474 ("libxpm" ,libxpm)))
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."))))
487
488 (define-public gtypist
489 (package
490 (name "gtypist")
491 (version "2.9.5")
492 (source (origin
493 (method url-fetch)
494 (uri (string-append "mirror://gnu/gtypist/gtypist-"
495 version ".tar.xz"))
496 (sha256
497 (base32
498 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
499 (modules '((guix build utils)))
500 (snippet
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)
505 (substitute* file
506 (("ncursesw/ncurses.h")
507 "ncurses.h")))
508 (find-files "." "configure$|\\.c$")))))
509 (build-system gnu-build-system)
510 (inputs `(("ncurses" ,ncurses)
511 ("perl" ,perl)))
512 (home-page "http://www.gnu.org/software/gtypist/")
513 (synopsis "Typing tutor")
514 (description
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+)))
521
522 (define-public irrlicht
523 (package
524 (name "irrlicht")
525 (version "1.8.1")
526 (source (origin
527 (method url-fetch)
528 (uri (string-append
529 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
530 (version-major+minor version)
531 "/" version "/irrlicht-" version ".zip"))
532 (sha256
533 (base32
534 "0yz9lvsc8aqk8wj4rnpanxrw90gqpwn9w5hxp94r8hnm2q0vjjw1"))))
535 (build-system gnu-build-system)
536 (arguments
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"))))
547 (alist-replace
548 'unpack
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/")))
553 (alist-cons-after
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")))
562 (native-inputs
563 `(("patch/mesa-10-fix" ,(search-patch "irrlicht-mesa-10.patch"))
564 ("unzip" ,unzip)))
565 (inputs
566 `(("mesa" ,mesa)
567 ("glu" ,glu)))
568 (synopsis "3D game engine written in C++")
569 (description
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)))
576
577 (define-public mars
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")
582 (revision "1"))
583 (package
584 (name "mars")
585 (version (string-append "0.7.5." revision "." commit ))
586 (source (origin
587 (method git-fetch)
588 (uri (git-reference
589 (url "https://github.com/thelaui/M.A.R.S..git")
590 (commit commit)))
591 (file-name (string-append name "-" version))
592 (sha256
593 (base32
594 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
595 (patches (list (search-patch "mars-sfml-2.3.patch")
596 (search-patch "mars-install.patch")))))
597 (build-system cmake-build-system)
598 (arguments
599 `(#:tests? #f ; There are no tests
600 #:phases
601 (modify-phases %standard-phases
602 (add-after 'unpack 'fix-install-path
603 (lambda _
604 (substitute* "src/CMakeLists.txt"
605 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
606 "${CMAKE_INSTALL_PREFIX}/bin"))
607 #t))
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/\";")))
615 #t)))))
616 (inputs
617 `(("mesa" ,mesa)
618 ("fribidi" ,fribidi)
619 ("taglib" ,taglib)
620 ("sfml" ,sfml)))
621 (home-page "http://marsshooter.org")
622 (synopsis "2D space shooter")
623 (description
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+))))
629
630 (define minetest-data
631 (package
632 (name "minetest-data")
633 (version "0.4.13")
634 (source (origin
635 (method url-fetch)
636 (uri (string-append
637 "https://github.com/minetest/minetest_game/archive/"
638 version ".tar.gz"))
639 (file-name (string-append name "-" version ".tar.gz"))
640 (sha256
641 (base32
642 "04xnyfap75v3p818kpqb07xshqwqzpws5xjvw5m96qnd9x4725ld"))))
643 (build-system trivial-build-system)
644 (native-inputs
645 `(("source" ,source)
646 ("tar" ,tar)
647 ("gzip" ,(@ (gnu packages compression) gzip))))
648 (arguments
649 `(#:modules ((guix build utils))
650 #:builder (begin
651 (use-modules (guix build utils))
652 (let ((tar (string-append (assoc-ref %build-inputs "tar")
653 "/bin/tar"))
654 (install-dir (string-append
655 %output
656 "/share/minetest/games/minetest_game"))
657 (path (string-append (assoc-ref %build-inputs
658 "gzip")
659 "/bin")))
660 (setenv "PATH" path)
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")
666 (description
667 "Game data for the Minetest infinite-world block sandox game.")
668 (home-page "http://minetest.net")
669 (license license:lgpl2.1+)))
670
671 (define-public minetest
672 (package
673 (name "minetest")
674 (version "0.4.13")
675 (source (origin
676 (method url-fetch)
677 (uri (string-append
678 "https://github.com/minetest/minetest/archive/"
679 version ".tar.gz"))
680 (file-name (string-append name "-" version ".tar.gz"))
681 (sha256
682 (base32
683 "1xzrvsg0fpbj5p4pz6lls11m3ab4y2bnjlsm4gnw68x9006ffznp"))))
684 (build-system cmake-build-system)
685 (arguments
686 '(#:configure-flags
687 (list "-DRUN_IN_PLACE=0"
688 "-DENABLE_FREETYPE=1"
689 "-DENABLE_GETTEXT=1"
690 (string-append "-DIRRLICHT_INCLUDE_DIR="
691 (assoc-ref %build-inputs "irrlicht")
692 "/include/irrlicht")
693 (string-append "-DCURL_INCLUDE_DIR="
694 (assoc-ref %build-inputs "curl")
695 "/include/curl"))
696 #:tests? #f)) ; no check target
697 (native-search-paths
698 (list (search-path-specification
699 (variable "MINETEST_SUBGAME_PATH")
700 (files '("share/minetest/games")))))
701 (native-inputs
702 `(("pkg-config" ,pkg-config)))
703 (inputs
704 `(("irrlicht" ,irrlicht)
705 ("libpng" ,libpng)
706 ("libjpeg" ,libjpeg)
707 ("libxxf86vm" ,libxxf86vm)
708 ("mesa" ,mesa)
709 ("libogg" ,libogg)
710 ("libvorbis" ,libvorbis)
711 ("openal" ,openal)
712 ("freetype" ,(@ (gnu packages fontutils) freetype))
713 ("curl" ,curl)
714 ("luajit" ,luajit)
715 ("gettext" ,gnu-gettext)
716 ("sqlite" ,sqlite)))
717 (propagated-inputs
718 `(("minetest-data" ,minetest-data)))
719 (synopsis "Infinite-world block sandbox game")
720 (description
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
725 in different ways.")
726 (home-page "http://minetest.net")
727 (license license:lgpl2.1+)))
728
729 (define glkterm
730 (package
731 (name "glkterm")
732 (version "1.0.4")
733 (source
734 (origin
735 (method url-fetch)
736 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
737 "glk/implementations/glkterm-104.tar.gz"))
738 (sha256
739 (base32
740 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
741 (build-system gnu-build-system)
742 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
743 (arguments
744 '(#:tests? #f ; no check target
745 #:phases
746 (alist-replace
747 'install
748 (lambda* (#:key outputs #:allow-other-keys)
749 (let* ((out (assoc-ref outputs "out"))
750 (inc (string-append out "/include")))
751 (mkdir-p inc)
752 (for-each
753 (lambda (file)
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")
761 (description
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"))))
768
769 (define-public glulxe
770 (package
771 (name "glulxe")
772 (version "0.5.2")
773 (source
774 (origin
775 (method url-fetch)
776 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
777 "glulx/interpreters/glulxe/glulxe-052.tar.gz"))
778 (sha256
779 (base32
780 "19iw6kl8ncqcy9pv4gsqfh3xsa1n94zd234rqavvmxccnf3nj19g"))))
781 (build-system gnu-build-system)
782 (inputs `(("glk" ,glkterm)))
783 (arguments
784 '(#:tests? #f ; no check target
785 #:make-flags
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")))
790 #:phases
791 (alist-replace
792 'install
793 (lambda* (#:key outputs #:allow-other-keys)
794 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
795 (mkdir-p 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")
800 (description
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"))))
806
807 (define-public fizmo
808 (package
809 (name "fizmo")
810 (version "0.7.9")
811 (source (origin
812 (method url-fetch)
813 (uri (string-append "https://christoph-ender.de/fizmo/source/"
814 name "-" version ".tar.gz"))
815 (sha256
816 (base32
817 "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
818 (build-system gnu-build-system)
819 (arguments
820 '(#:configure-flags
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")))))
827 (native-inputs
828 `(("pkg-config" ,pkg-config)))
829 (inputs
830 `(("libjpeg" ,libjpeg)
831 ("libpng" ,libpng)
832 ("libsndfile" ,libsndfile)
833 ("libxml2" ,libxml2)
834 ("ncurses" ,ncurses)
835 ("sdl" ,sdl)))
836 (home-page "https://christoph-ender.de/fizmo/")
837 (synopsis "Z-machine interpreter")
838 (description
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)))
843
844 (define-public retroarch
845 (package
846 (name "retroarch")
847 (version "1.2.2")
848 (source
849 (origin
850 (method url-fetch)
851 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
852 version ".tar.gz"))
853 (file-name (string-append name "-" version ".tar.gz"))
854 (sha256
855 (base32 "1bxr8yhk3ad4df544qljsfjfhxa8zy1grq7rn1s02yfvdmgzf4qi"))))
856 (build-system gnu-build-system)
857 (arguments
858 '(#:tests? #f ; no tests
859 #:phases
860 (alist-replace
861 'configure
862 (lambda _
863 (substitute* "qb/qb.libs.sh"
864 (("/bin/true") (which "true")))
865 (zero? (system*
866 "./configure"
867 (string-append "--prefix=" %output)
868 (string-append "--global-config-dir=" %output "/etc"))))
869 %standard-phases)))
870 (inputs
871 `(("alsa-lib" ,alsa-lib)
872 ("ffmpeg" ,ffmpeg)
873 ("freetype" ,freetype)
874 ("libxinerama" ,libxinerama)
875 ("libxkbcommon" ,libxkbcommon)
876 ("libxml2" ,libxml2)
877 ("libxv" ,libxv)
878 ("mesa" ,mesa)
879 ("openal" ,openal)
880 ("pulseaudio" ,pulseaudio)
881 ("python" ,python)
882 ("sdl" ,sdl2)
883 ("udev" ,eudev)
884 ("zlib" ,zlib)))
885 (native-inputs
886 `(("pkg-config" ,pkg-config)
887 ("which" ,which)))
888 (home-page "http://www.libretro.com/")
889 (synopsis "Reference frontend for the libretro API")
890 (description
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+)))
897
898 (define-public gnugo
899 (package
900 (name "gnugo")
901 (version "3.8")
902 (source (origin
903 (method url-fetch)
904 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
905 ".tar.gz"))
906 (sha256
907 (base32
908 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
909 (build-system gnu-build-system)
910 (inputs `(("readline" ,readline)))
911 (synopsis "Play the game of Go")
912 (description
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
919 Protocol).")
920 (home-page "http://www.gnu.org/software/gnugo/")
921 (license license:gpl3+)))
922
923 (define-public extremetuxracer
924 (package
925 (name "extremetuxracer")
926 (version "0.6.0")
927 (source (origin
928 (method url-fetch)
929 (uri (string-append
930 "http://downloads.sourceforge.net/project/extremetuxracer/releases/"
931 version "/etr-" version ".tar.xz"))
932 (sha256
933 (base32
934 "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4"))))
935 (build-system gnu-build-system)
936 (native-inputs
937 `(("pkg-config" ,pkg-config)))
938 (inputs
939 `(("freetype" ,freetype)
940 ("mesa" ,mesa)
941 ("glu" ,glu)
942 ("libice" ,libice)
943 ("libpng" ,libpng)
944 ("sdl" ,sdl)
945 ("sdl-mixer" ,sdl-mixer)
946 ("sdl-image" ,sdl-image)
947 ("libsm" ,libsm)
948 ("libunwind" ,libunwind)
949 ("libx11" ,libx11)
950 ("libxext" ,libxext)
951 ("libxi" ,libxi)
952 ("libxmu" ,libxmu)
953 ("libxt" ,libxt)
954 ("tcl" ,tcl)
955 ("zlib" ,zlib)))
956 (arguments
957 '(#:phases
958 (modify-phases %standard-phases
959 (add-after 'configure 'patch-makefile
960 (lambda _
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.
969
970 Collect herrings and other goodies while sliding down the hill, but avoid fish
971 bones.
972
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+)))
976
977 (define-public gnujump
978 (package
979 (name "gnujump")
980 (version "1.0.8")
981 (source (origin
982 (method url-fetch)
983 (uri (string-append "mirror://gnu/gnujump/gnujump-"
984 version ".tar.gz"))
985 (sha256
986 (base32
987 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
988 (build-system gnu-build-system)
989 (arguments
990 '(#:phases
991 (modify-phases %standard-phases
992 (add-before
993 'configure 'link-libm
994 (lambda _ (setenv "LIBS" "-lm"))))))
995 (inputs
996 `(("glu" ,glu)
997 ("mesa", mesa)
998 ("sdl" ,sdl)
999 ("sdl-image" ,sdl-image)
1000 ("sdl-mixer" ,sdl-mixer)))
1001 (home-page "http://gnujump.es.gnu.org/")
1002 (synopsis
1003 "Game of jumping to the next floor, trying not to fall")
1004 (description
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+)))
1010
1011 (define-public wesnoth
1012 (package
1013 (name "wesnoth")
1014 (version "1.12.4")
1015 (source (origin
1016 (method url-fetch)
1017 (uri (string-append "mirror://sourceforge/wesnoth/"
1018 name "-" version ".tar.bz2"))
1019 (sha256
1020 (base32
1021 "19qyylylaljhk45lk2ja0xp7cx9iy4hx07l65zkg20a2v9h50lmz"))))
1022 (build-system cmake-build-system)
1023 (arguments
1024 '(#:tests? #f ; no check target
1025 #:configure-flags
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]
1029 ;; [...]
1030 ;; cc1plus: all warnings being treated as errors
1031 '("-DENABLE_STRICT_COMPILATION=OFF")))
1032 (native-inputs
1033 `(("gettext" ,gnu-gettext)
1034 ("pkg-config" ,pkg-config)))
1035 (inputs
1036 `(("boost" ,boost)
1037 ("dbus" ,dbus)
1038 ("fribidi" ,fribidi)
1039 ("libvorbis" ,libvorbis)
1040 ("pango" ,pango)
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")
1047 (description
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
1050 local).
1051
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
1055 next campaign.")
1056 (license license:gpl2+)))
1057
1058 (define-public dosbox
1059 (package
1060 (name "dosbox")
1061 (version "0.74.svn3947")
1062 (source (origin
1063 (method svn-fetch)
1064 (uri (svn-reference
1065 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1066 (revision 3947)))
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>).
1071 (sha256
1072 (base32
1073 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1074 (build-system gnu-build-system)
1075 (arguments
1076 `(#:phases (modify-phases %standard-phases
1077 (add-after
1078 'unpack 'autogen.sh
1079 (lambda _
1080 (zero? (system* "sh" "autogen.sh")))))))
1081 (native-inputs
1082 `(("autoconf" ,autoconf)
1083 ("automake" ,automake)))
1084 (inputs
1085 `(("sdl" ,sdl)
1086 ("libpng" ,libpng)
1087 ("zlib" ,zlib)
1088 ("alsa-lib" ,alsa-lib)
1089 ("glu" ,glu)
1090 ("mesa" ,mesa)))
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
1097 older games.")
1098 (license license:gpl2+)))
1099
1100 (define-public gamine
1101 (package
1102 (name "gamine")
1103 (version "1.4")
1104 (source (origin
1105 (method url-fetch)
1106 (uri (string-append "mirror://sourceforge/gamine-game/"
1107 "gamine-" version ".tar.gz"))
1108 (sha256
1109 (base32
1110 "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
1111 (build-system gnu-build-system)
1112 (native-inputs
1113 `(("pkg-config" ,pkg-config)
1114 ("intltool" ,intltool)))
1115 (inputs
1116 `(("gstreamer" ,gstreamer)
1117 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1118 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1119 ("gtk+" ,gtk+)))
1120 (arguments
1121 `(#:tests? #f
1122 #:make-flags
1123 (let ((out (assoc-ref %outputs "out")))
1124 (list (string-append "PREFIX=" out)
1125 (string-append "SYSCONFDIR=" out "/etc")))
1126 #:phases
1127 (modify-phases %standard-phases
1128 (delete 'configure)
1129 (add-after
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))))
1136 #t)))))
1137 (home-page "http://gamine-game.sourceforge.net/")
1138 (synopsis "Mouse and keyboard discovery for children")
1139 (description
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)))
1145
1146 (define-public raincat
1147 (package
1148 (name "raincat")
1149 (version "1.1.1.3")
1150 (source
1151 (origin
1152 (method url-fetch)
1153 (uri (string-append
1154 "http://hackage.haskell.org/package/Raincat/Raincat-"
1155 version
1156 ".tar.gz"))
1157 (sha256
1158 (base32
1159 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
1160 (build-system haskell-build-system)
1161 (inputs
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)))
1178
1179 (define-public manaplus
1180 (package
1181 (name "manaplus")
1182 (version "1.5.10.24")
1183 (source (origin
1184 (method url-fetch)
1185 (uri (string-append
1186 "http://repo.manaplus.org/manaplus/download/"
1187 version "/manaplus-" version ".tar.xz"))
1188 (sha256
1189 (base32
1190 "1bjxdyicli1pq65a6l4m84ksqwn9i90xa7yly9sfcrwq5mm1zimb"))))
1191 (build-system gnu-build-system)
1192 (arguments
1193 '(#:configure-flags
1194 (list (string-append "CPPFLAGS=-I"
1195 (assoc-ref %build-inputs "sdl-union")
1196 "/include/SDL"))))
1197 (native-inputs
1198 `(("pkg-config" ,pkg-config)))
1199 (inputs
1200 `(("glu" ,glu)
1201 ("curl" ,curl)
1202 ("libxml2" ,libxml2)
1203 ("mesa" ,mesa)
1204 ("physfs" ,physfs)
1205 ("sdl-union" ,(sdl-union))))
1206 (home-page "http://manaplus.org")
1207 (synopsis "Client for 'The Mana World' and similar games")
1208 (description
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))))
1217
1218 (define-public mupen64plus-core
1219 (package
1220 (name "mupen64plus-core")
1221 (version "2.5")
1222 (source
1223 (origin
1224 (method url-fetch)
1225 (uri (string-append
1226 "https://github.com/mupen64plus/mupen64plus-core/archive/"
1227 version ".tar.gz"))
1228 (file-name (string-append name "-" version ".tar.gz"))
1229 (sha256
1230 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
1231 (build-system gnu-build-system)
1232 (native-inputs
1233 `(("pkg-config" ,pkg-config)
1234 ("which" ,which)))
1235 (inputs
1236 `(("freetype" ,freetype)
1237 ("glu" ,glu)
1238 ("libpng" ,libpng)
1239 ("mesa" ,mesa)
1240 ("sdl2" ,sdl2)
1241 ("zlib" ,zlib)))
1242 (arguments
1243 '(#:phases
1244 (modify-phases %standard-phases
1245 ;; The mupen64plus build system has no configure phase.
1246 (delete 'configure)
1247 ;; Makefile is in a subdirectory.
1248 (add-before
1249 'build 'cd-to-project-dir
1250 (lambda _
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.
1255 #:tests? #f))
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")
1260 (description
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
1263 core library.")
1264 (license license:gpl2+)))
1265
1266 (define-public mupen64plus-audio-sdl
1267 (package
1268 (name "mupen64plus-audio-sdl")
1269 (version "2.5")
1270 (source
1271 (origin
1272 (method url-fetch)
1273 (uri (string-append
1274 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
1275 version ".tar.gz"))
1276 (file-name (string-append name "-" version ".tar.gz"))
1277 (sha256
1278 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
1279 (build-system gnu-build-system)
1280 (native-inputs
1281 `(("pkg-config" ,pkg-config)
1282 ("which" ,which)))
1283 (inputs
1284 `(("mupen64plus-core" ,mupen64plus-core)
1285 ("sdl2" ,sdl2)))
1286 (arguments
1287 '(#:phases
1288 (modify-phases %standard-phases
1289 ;; The mupen64plus build system has no configure phase.
1290 (delete 'configure)
1291 ;; Makefile is in a subdirectory.
1292 (add-before
1293 'build 'cd-to-project-dir
1294 (lambda _
1295 (chdir "projects/unix"))))
1296 #:make-flags
1297 (let ((out (assoc-ref %outputs "out"))
1298 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1299 (list "all"
1300 (string-append "PREFIX=" out)
1301 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1302 ;; There are no tests.
1303 #:tests? #f))
1304 (home-page "http://www.mupen64plus.org/")
1305 (synopsis "Mupen64Plus SDL input plugin")
1306 (description
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
1309 SDL audio plugin.")
1310 (license license:gpl2+)))
1311
1312 (define-public mupen64plus-input-sdl
1313 (package
1314 (name "mupen64plus-input-sdl")
1315 (version "2.5")
1316 (source
1317 (origin
1318 (method url-fetch)
1319 (uri (string-append
1320 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
1321 version ".tar.gz"))
1322 (file-name (string-append name "-" version ".tar.gz"))
1323 (sha256
1324 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
1325 (build-system gnu-build-system)
1326 (native-inputs
1327 `(("which" ,which)))
1328 (inputs
1329 `(("mupen64plus-core" ,mupen64plus-core)
1330 ("sdl2" ,sdl2)))
1331 (arguments
1332 '(#:phases
1333 (modify-phases %standard-phases
1334 ;; The mupen64plus build system has no configure phase.
1335 (delete 'configure)
1336 ;; Makefile is in a subdirectory.
1337 (add-before
1338 'build 'cd-to-project-dir
1339 (lambda _
1340 (chdir "projects/unix"))))
1341 #:make-flags
1342 (let ((out (assoc-ref %outputs "out"))
1343 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1344 (list "all"
1345 (string-append "PREFIX=" out)
1346 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1347 ;; There are no tests.
1348 #:tests? #f))
1349 (home-page "http://www.mupen64plus.org/")
1350 (synopsis "Mupen64Plus SDL input plugin")
1351 (description
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
1354 SDL input plugin.")
1355 (license license:gpl2+)))
1356
1357 (define-public mupen64plus-rsp-hle
1358 (package
1359 (name "mupen64plus-rsp-hle")
1360 (version "2.5")
1361 (source
1362 (origin
1363 (method url-fetch)
1364 (uri (string-append
1365 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
1366 version ".tar.gz"))
1367 (file-name (string-append name "-" version ".tar.gz"))
1368 (sha256
1369 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
1370 (build-system gnu-build-system)
1371 (inputs
1372 `(("mupen64plus-core" ,mupen64plus-core)))
1373 (arguments
1374 '(#:phases
1375 (modify-phases %standard-phases
1376 ;; The mupen64plus build system has no configure phase.
1377 (delete 'configure)
1378 ;; Makefile is in a subdirectory.
1379 (add-before
1380 'build 'cd-to-project-dir
1381 (lambda _
1382 (chdir "projects/unix"))))
1383 #:make-flags
1384 (let ((out (assoc-ref %outputs "out"))
1385 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1386 (list "all"
1387 (string-append "PREFIX=" out)
1388 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1389 ;; There are no tests.
1390 #:tests? #f))
1391 (home-page "http://www.mupen64plus.org/")
1392 (synopsis "Mupen64Plus SDL input plugin")
1393 (description
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+)))
1398
1399 (define-public mupen64plus-rsp-z64
1400 (package
1401 (name "mupen64plus-rsp-z64")
1402 (version "2.0.0")
1403 (source
1404 (origin
1405 (method url-fetch)
1406 (uri (string-append
1407 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
1408 version ".tar.gz"))
1409 (file-name (string-append name "-" version ".tar.gz"))
1410 (sha256
1411 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
1412 (build-system gnu-build-system)
1413 (inputs
1414 `(("mupen64plus-core" ,mupen64plus-core)))
1415 (arguments
1416 '(#:phases
1417 (modify-phases %standard-phases
1418 ;; The mupen64plus build system has no configure phase.
1419 (delete 'configure)
1420 ;; Makefile is in a subdirectory.
1421 (add-before
1422 'build 'cd-to-project-dir
1423 (lambda _
1424 (chdir "projects/unix"))))
1425 #:make-flags
1426 (let ((out (assoc-ref %outputs "out"))
1427 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1428 (list "all"
1429 (string-append "PREFIX=" out)
1430 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1431 ;; There are no tests.
1432 #:tests? #f))
1433 (home-page "http://www.mupen64plus.org/")
1434 (synopsis "Mupen64Plus SDL input plugin")
1435 (description
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+)))
1440
1441 (define-public mupen64plus-video-arachnoid
1442 (package
1443 (name "mupen64plus-video-arachnoid")
1444 (version "2.0.0")
1445 (source
1446 (origin
1447 (method url-fetch)
1448 (uri (string-append
1449 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
1450 version ".tar.gz"))
1451 (file-name (string-append name "-" version ".tar.gz"))
1452 (sha256
1453 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
1454 (build-system gnu-build-system)
1455 (native-inputs
1456 `(("pkg-config" ,pkg-config)
1457 ("which" ,which)))
1458 (inputs
1459 `(("mesa" ,mesa)
1460 ("mupen64plus-core" ,mupen64plus-core)))
1461 (arguments
1462 '(#:phases
1463 (modify-phases %standard-phases
1464 ;; The mupen64plus build system has no configure phase.
1465 (delete 'configure)
1466 ;; Makefile is in a subdirectory.
1467 (add-before
1468 'build 'cd-to-project-dir
1469 (lambda _
1470 (chdir "projects/unix"))))
1471 #:make-flags
1472 (let ((out (assoc-ref %outputs "out"))
1473 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1474 (list "all"
1475 (string-append "PREFIX=" out)
1476 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1477 ;; There are no tests.
1478 #:tests? #f))
1479 (home-page "http://www.mupen64plus.org/")
1480 (synopsis "Mupen64Plus Rice Video plugin")
1481 (description
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+)))
1486
1487 (define-public mupen64plus-video-glide64
1488 (package
1489 (name "mupen64plus-video-glide64")
1490 (version "2.0.0")
1491 (source
1492 (origin
1493 (method url-fetch)
1494 (uri (string-append
1495 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
1496 version ".tar.gz"))
1497 (file-name (string-append name "-" version ".tar.gz"))
1498 (sha256
1499 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
1500 (build-system gnu-build-system)
1501 (native-inputs
1502 `(("pkg-config" ,pkg-config)
1503 ("which" ,which)))
1504 (inputs
1505 `(("mesa" ,mesa)
1506 ("mupen64plus-core" ,mupen64plus-core)
1507 ("sdl2" ,sdl2)))
1508 (arguments
1509 '(#:phases
1510 (modify-phases %standard-phases
1511 ;; The mupen64plus build system has no configure phase.
1512 (delete 'configure)
1513 ;; Makefile is in a subdirectory.
1514 (add-before
1515 'build 'cd-to-project-dir
1516 (lambda _
1517 (chdir "projects/unix")))
1518 ;; XXX Should be unnecessary with the next release.
1519 (add-before
1520 'build 'use-sdl2
1521 (lambda _
1522 (substitute* "Makefile"
1523 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1524 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1525 #:make-flags
1526 (let ((out (assoc-ref %outputs "out"))
1527 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1528 (list "all"
1529 (string-append "PREFIX=" out)
1530 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1531 ;; There are no tests.
1532 #:tests? #f))
1533 (home-page "http://www.mupen64plus.org/")
1534 (synopsis "Mupen64Plus Rice Video plugin")
1535 (description
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+)))
1540
1541 (define-public mupen64plus-video-glide64mk2
1542 (package
1543 (name "mupen64plus-video-glide64mk2")
1544 (version "2.5")
1545 (source
1546 (origin
1547 (method url-fetch)
1548 (uri (string-append
1549 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
1550 version ".tar.gz"))
1551 (file-name (string-append name "-" version ".tar.gz"))
1552 (sha256
1553 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
1554 (build-system gnu-build-system)
1555 (native-inputs
1556 `(("pkg-config" ,pkg-config)
1557 ("which" ,which)))
1558 (inputs
1559 `(("boost" ,boost)
1560 ("libpng" ,libpng)
1561 ("mesa" ,mesa)
1562 ("mupen64plus-core" ,mupen64plus-core)
1563 ("sdl2" ,sdl2)
1564 ("zlib" ,zlib)))
1565 (arguments
1566 '(#:phases
1567 (modify-phases %standard-phases
1568 ;; The mupen64plus build system has no configure phase.
1569 (delete 'configure)
1570 ;; Makefile is in a subdirectory.
1571 (add-before
1572 'build 'cd-to-project-dir
1573 (lambda _
1574 (chdir "projects/unix"))))
1575 #:make-flags
1576 (let ((out (assoc-ref %outputs "out"))
1577 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1578 (list "all"
1579 (string-append "PREFIX=" out)
1580 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1581 ;; There are no tests.
1582 #:tests? #f))
1583 (home-page "http://www.mupen64plus.org/")
1584 (synopsis "Mupen64Plus Rice Video plugin")
1585 (description
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+)))
1590
1591 (define-public mupen64plus-video-rice
1592 (package
1593 (name "mupen64plus-video-rice")
1594 (version "2.5")
1595 (source
1596 (origin
1597 (method url-fetch)
1598 (uri (string-append
1599 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
1600 version ".tar.gz"))
1601 (file-name (string-append name "-" version ".tar.gz"))
1602 (sha256
1603 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
1604 (build-system gnu-build-system)
1605 (native-inputs
1606 `(("pkg-config" ,pkg-config)
1607 ("which" ,which)))
1608 (inputs
1609 `(("libpng" ,libpng)
1610 ("mesa" ,mesa)
1611 ("mupen64plus-core" ,mupen64plus-core)
1612 ("sdl2" ,sdl2)))
1613 (arguments
1614 '(#:phases
1615 (modify-phases %standard-phases
1616 ;; The mupen64plus build system has no configure phase.
1617 (delete 'configure)
1618 ;; Makefile is in a subdirectory.
1619 (add-before
1620 'build 'cd-to-project-dir
1621 (lambda _
1622 (chdir "projects/unix"))))
1623 #:make-flags
1624 (let ((out (assoc-ref %outputs "out"))
1625 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1626 (list "all"
1627 (string-append "PREFIX=" out)
1628 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1629 ;; There are no tests.
1630 #:tests? #f))
1631 (home-page "http://www.mupen64plus.org/")
1632 (synopsis "Mupen64Plus Rice Video plugin")
1633 (description
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+)))
1638
1639 (define-public mupen64plus-video-z64
1640 (package
1641 (name "mupen64plus-video-z64")
1642 (version "2.0.0")
1643 (source
1644 (origin
1645 (method url-fetch)
1646 (uri (string-append
1647 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
1648 version ".tar.gz"))
1649 (file-name (string-append name "-" version ".tar.gz"))
1650 (sha256
1651 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
1652 (build-system gnu-build-system)
1653 (native-inputs
1654 `(("pkg-config" ,pkg-config)
1655 ("which" ,which)))
1656 (inputs
1657 `(("glew" ,glew)
1658 ("mupen64plus-core" ,mupen64plus-core)
1659 ("sdl2" ,sdl2)))
1660 (arguments
1661 '(#:phases
1662 (modify-phases %standard-phases
1663 ;; The mupen64plus build system has no configure phase.
1664 (delete 'configure)
1665 ;; Makefile is in a subdirectory.
1666 (add-before
1667 'build 'cd-to-project-dir
1668 (lambda _
1669 (chdir "projects/unix")))
1670 ;; XXX Should be unnecessary with the next release.
1671 (add-before
1672 'build 'use-sdl2
1673 (lambda _
1674 (substitute* "Makefile"
1675 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1676 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1677 #:make-flags
1678 (let ((out (assoc-ref %outputs "out"))
1679 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1680 (list "all"
1681 (string-append "PREFIX=" out)
1682 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1683 ;; There are no tests.
1684 #:tests? #f))
1685 (home-page "http://www.mupen64plus.org/")
1686 (synopsis "Mupen64Plus Z64 video plugin")
1687 (description
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
1690 Z64 video plugin.")
1691 (license license:gpl2+)))
1692
1693 (define-public mupen64plus-ui-console
1694 (package
1695 (name "mupen64plus-ui-console")
1696 (version "2.5")
1697 (source
1698 (origin
1699 (method url-fetch)
1700 (uri (string-append
1701 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
1702 version ".tar.gz"))
1703 (file-name (string-append name "-" version ".tar.gz"))
1704 (sha256
1705 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
1706 (patches
1707 (list (search-patch "mupen64plus-ui-console-notice.patch")))))
1708 (build-system gnu-build-system)
1709 (native-inputs
1710 `(("pkg-config" ,pkg-config)
1711 ("which" ,which)))
1712 (inputs
1713 `(("sdl2" ,sdl2)))
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.
1722 (propagated-inputs
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)))
1730 (arguments
1731 '(#:phases
1732 (modify-phases %standard-phases
1733 ;; The mupen64plus build system has no configure phase.
1734 (delete 'configure)
1735 ;; Makefile is in a subdirectory.
1736 (add-before
1737 'build 'cd-to-project-dir
1738 (lambda _
1739 (chdir "projects/unix"))))
1740 #:make-flags
1741 (let ((out (assoc-ref %outputs "out"))
1742 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1743 (list "all"
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.
1749 #:tests? #f))
1750 (home-page "http://www.mupen64plus.org/")
1751 (synopsis "Mupen64Plus SDL input plugin")
1752 (description
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+)))
1758
1759 (define-public nestopia-ue
1760 (package
1761 (name "nestopia-ue")
1762 (version "1.46.2")
1763 (source (origin
1764 (method url-fetch)
1765 (uri (string-append
1766 "https://github.com/rdanbrook/nestopia/archive/"
1767 version ".tar.gz"))
1768 (file-name (string-append name "-" version ".tar.gz"))
1769 (sha256
1770 (base32
1771 "07h49xwvg61dx20rk5p4r3ax2ar5y0ppvm60cqwqljyi9rdfbh7p"))
1772 (modules '((guix build utils)))
1773 (snippet
1774 '(begin
1775 ;; We don't need libretro for the GNU/Linux build.
1776 (delete-file-recursively "libretro")
1777 ;; Use system zlib.
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)
1782 (native-inputs
1783 `(("pkg-config" ,pkg-config)))
1784 (inputs
1785 `(("ao" ,ao)
1786 ("glu" ,glu)
1787 ("gtk+" ,gtk+)
1788 ("libarchive" ,libarchive)
1789 ("mesa" ,mesa)
1790 ("sdl2" ,sdl2)
1791 ("zlib" ,zlib)))
1792 (arguments
1793 '(#:phases
1794 (modify-phases %standard-phases
1795 ;; The Nestopia build system consists solely of a Makefile.
1796 (delete 'configure)
1797 ;; XXX Should be unnecessary with the next release.
1798 (add-before
1799 'build 'patch-makefile
1800 (lambda _
1801 (substitute* "Makefile"
1802 (("@mkdir \\$@") "@mkdir -p $@")
1803 (("CC =") "CC ?=")
1804 (("CXX =") "CXX ?=")
1805 (("PREFIX =") "PREFIX ?=")
1806 (("^install:\n$") "install:\n\tmkdir -p $(BINDIR)\n"))))
1807 (add-before
1808 'build 'remove-xdg-desktop-menu-call
1809 (lambda _
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.
1815 #:tests? #f))
1816 (home-page "http://0ldsk00l.ca/nestopia/")
1817 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
1818 (description
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+)))