gnu: red-eclipse: Update to 1.5.5.
[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, 2015, 2016 David Thompson <dthompson2@worcester.edu>
4 ;;; Copyright © 2014, 2015, 2016 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, 2016 Sou Bunnbu <iyzsong@gmail.com>
9 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
10 ;;; Copyright © 2015, 2016 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, 2016 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 ;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
18 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
19 ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
20 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
21 ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
22 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
23 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
24 ;;;
25 ;;; This file is part of GNU Guix.
26 ;;;
27 ;;; GNU Guix is free software; you can redistribute it and/or modify it
28 ;;; under the terms of the GNU General Public License as published by
29 ;;; the Free Software Foundation; either version 3 of the License, or (at
30 ;;; your option) any later version.
31 ;;;
32 ;;; GNU Guix is distributed in the hope that it will be useful, but
33 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 ;;; GNU General Public License for more details.
36 ;;;
37 ;;; You should have received a copy of the GNU General Public License
38 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40 (define-module (gnu packages games)
41 #:use-module (ice-9 match)
42 #:use-module ((guix licenses) #:prefix license:)
43 #:use-module (guix utils)
44 #:use-module (guix packages)
45 #:use-module (guix download)
46 #:use-module (guix git-download)
47 #:use-module (guix svn-download)
48 #:use-module (gnu packages)
49 #:use-module (gnu packages algebra)
50 #:use-module (gnu packages autotools)
51 #:use-module (gnu packages backup)
52 #:use-module (gnu packages base)
53 #:use-module (gnu packages admin)
54 #:use-module (gnu packages audio)
55 #:use-module (gnu packages avahi)
56 #:use-module (gnu packages boost)
57 #:use-module (gnu packages fltk)
58 #:use-module (gnu packages fribidi)
59 #:use-module (gnu packages game-development)
60 #:use-module (gnu packages gettext)
61 #:use-module (gnu packages ghostscript)
62 #:use-module (gnu packages gl)
63 #:use-module (gnu packages glib)
64 #:use-module (gnu packages gnome)
65 #:use-module (gnu packages gperf)
66 #:use-module (gnu packages gtk)
67 #:use-module (gnu packages guile)
68 #:use-module (gnu packages libcanberra)
69 #:use-module (gnu packages libunwind)
70 #:use-module (gnu packages haskell)
71 #:use-module (gnu packages mp3)
72 #:use-module (gnu packages icu4c)
73 #:use-module (gnu packages image)
74 #:use-module (gnu packages ncurses)
75 #:use-module (gnu packages netpbm)
76 #:use-module (gnu packages python)
77 #:use-module (gnu packages readline)
78 #:use-module (gnu packages xorg)
79 #:use-module (gnu packages pkg-config)
80 #:use-module (gnu packages databases)
81 #:use-module (gnu packages sdl)
82 #:use-module (gnu packages texinfo)
83 #:use-module (gnu packages check)
84 #:use-module (gnu packages fonts)
85 #:use-module (gnu packages fontutils)
86 #:use-module (gnu packages gstreamer)
87 #:use-module (gnu packages bash)
88 #:use-module (gnu packages perl)
89 #:use-module (gnu packages qt)
90 #:use-module (gnu packages compression)
91 #:use-module (gnu packages pulseaudio)
92 #:use-module (gnu packages linux)
93 #:use-module (gnu packages zip)
94 #:use-module (gnu packages xiph)
95 #:use-module (gnu packages curl)
96 #:use-module (gnu packages lua)
97 #:use-module (gnu packages video)
98 #:use-module (gnu packages xml)
99 #:use-module (gnu packages tcl)
100 #:use-module (gnu packages xdisorg)
101 #:use-module (guix build-system gnu)
102 #:use-module (guix build-system haskell)
103 #:use-module (guix build-system cmake)
104 #:use-module (guix build-system trivial))
105
106 (define-public gnubg
107 (package
108 (name "gnubg")
109 (version "1.02")
110 (source
111 (origin
112 (method url-fetch)
113 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
114 version ".000-sources." "tar.gz"))
115 (sha256
116 (base32
117 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
118 (build-system gnu-build-system)
119 (inputs `(("glib" ,glib)
120 ("readline" ,readline)
121 ("gtk+" ,gtk+-2)
122 ("mesa" ,mesa)
123 ("glu" ,glu)
124 ("gtkglext" ,gtkglext)
125 ("sqlite" ,sqlite)
126 ("libcanberra" ,libcanberra)))
127 (native-inputs `(("python-2" ,python-2)
128 ("pkg-config" ,pkg-config)))
129 (home-page "http://gnubg.org")
130 (synopsis "Backgammon game")
131 (description "The GNU backgammon application can be used for playing, analyzing and
132 teaching the game. It has an advanced evaluation engine based on artificial
133 neural networks suitable for both beginners and advanced players. In
134 addition to a command-line interface, it also features an attractive, 3D
135 representation of the playing board.")
136 (license license:gpl3+)))
137
138 (define-public gnubik
139 (package
140 (name "gnubik")
141 (version "2.4.2")
142 (source
143 (origin
144 (method url-fetch)
145 (uri (string-append "mirror://gnu/gnubik/gnubik-"
146 version ".tar.gz"))
147 (sha256
148 (base32
149 "0mhpfnxzbns0wfrsjv5vafqr34770rbvkmdzxk0x0aq67hb3zyl5"))))
150 (build-system gnu-build-system)
151 (inputs `(("gtk+" ,gtk+-2)
152 ("mesa" ,mesa)
153 ("glu" ,glu)
154 ("libx11" ,libx11)
155 ("guile" ,guile-2.0)
156 ("gtkglext" ,gtkglext)))
157 (native-inputs `(("gettext" ,gnu-gettext)
158 ("pkg-config" ,pkg-config)))
159 (home-page "https://www.gnu.org/software/gnubik/")
160 (synopsis "3d Rubik's cube game")
161 (description
162 "GNUbik is a puzzle game in which you must manipulate a cube to make
163 each of its faces have a uniform color. The game is customizable, allowing
164 you to set the size of the cube (the default is 3x3) or to change the colors.
165 You may even apply photos to the faces instead of colors. The game is
166 scriptable with Guile.")
167 (license license:gpl3+)))
168
169 (define-public abbaye
170 (package
171 (name "abbaye")
172 (version "1.13")
173 (source
174 (origin
175 (method url-fetch)
176 (uri (string-append "http://abbaye-for-linux.googlecode.com/files/"
177 "abbaye-for-linux-src-" version ".tar.gz"))
178 (sha256
179 (base32
180 "1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk"))))
181 (build-system gnu-build-system)
182 (arguments
183 '(#:modules ((ice-9 match)
184 (guix build gnu-build-system)
185 (guix build utils))
186 #:phases (modify-phases %standard-phases
187 (add-after 'set-paths 'set-sdl-paths
188 (lambda* (#:key inputs #:allow-other-keys)
189 (setenv "CPATH"
190 (string-append (assoc-ref inputs "sdl-union")
191 "/include/SDL"))))
192 (add-after 'patch-source-shebangs 'patch-makefile
193 (lambda* (#:key outputs #:allow-other-keys)
194 ;; Replace /usr with package output directory.
195 (for-each (lambda (file)
196 (substitute* file
197 (("/usr") (assoc-ref outputs "out"))))
198 '("makefile" "src/pantallas.c" "src/comun.h"))))
199 (add-before 'install 'make-install-dirs
200 (lambda* (#:key outputs #:allow-other-keys)
201 (let ((prefix (assoc-ref outputs "out")))
202 ;; Create directories that the makefile assumes exist.
203 (mkdir-p (string-append prefix "/bin"))
204 (mkdir-p (string-append prefix "/share/applications"))
205 (mkdir-p (string-append prefix "/share/pixmaps")))))
206 ;; No configure script.
207 (delete 'configure))
208 #:tests? #f)) ;; No check target.
209 (native-inputs `(("pkg-config" ,pkg-config)))
210 (inputs `(("sdl-union" ,(sdl-union))))
211 (home-page "http://code.google.com/p/abbaye-for-linux/")
212 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
213 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
214 France. The Cathars, who preach about good Christian beliefs, were being
215 expelled by the Catholic Church out of the Languedoc region in France. One of
216 them, called Jean Raymond, found an old church in which to hide, not knowing
217 that beneath its ruins lay buried an ancient evil.")
218 (license license:gpl3+)))
219
220 (define-public pingus
221 (package
222 (name "pingus")
223 (version "0.7.6")
224 (source
225 (origin
226 (method url-fetch)
227 (uri (string-append "http://pingus.googlecode.com/files/pingus-"
228 version ".tar.bz2"))
229 (sha256
230 (base32
231 "0q34d2k6anzqvb0mf67x85q92lfx9jr71ry13dlp47jx0x9i573m"))
232 (patches (search-patches "pingus-sdl-libs-config.patch"))))
233 (build-system gnu-build-system)
234 (native-inputs `(("pkg-config" ,pkg-config)
235 ("scons" ,scons)))
236 (inputs `(("sdl" ,sdl)
237 ("sdl-image" ,sdl-image)
238 ("sdl-mixer" ,sdl-mixer)
239 ("mesa" ,mesa)
240 ("glu" ,glu)
241 ("libpng" ,libpng)
242 ("boost" ,boost)))
243 (arguments
244 '(#:tests? #f ;no check target
245 #:phases
246 (alist-delete
247 'configure
248 (alist-replace
249 'install
250 (lambda* (#:key outputs #:allow-other-keys)
251 (zero? (system* "make" "install"
252 (string-append "PREFIX="
253 (assoc-ref outputs "out")))))
254 %standard-phases))))
255 (home-page "http://pingus.seul.org/welcome.html")
256 (synopsis "Lemmings clone")
257 (description
258 "Pingus is a free Lemmings-like puzzle game in which the player takes
259 command of a bunch of small animals and has to guide them through levels.
260 Since the animals walk on their own, the player can only influence them by
261 giving them commands, like build a bridge, dig a hole, or redirect all animals
262 in the other direction. Multiple such commands are necessary to reach the
263 level's exit. The game is presented in a 2D side view.")
264 ;; Some source files are under bsd-3 and gpl2+ licenses.
265 (license license:gpl3+)))
266
267 (define-public talkfilters
268 (package
269 (name "talkfilters")
270 (version "2.3.8")
271 (source
272 (origin
273 (method url-fetch)
274 (uri (string-append "http://www.hyperrealm.com/" name "/"
275 name "-" version ".tar.gz"))
276 (sha256
277 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
278 (build-system gnu-build-system)
279 (home-page "http://www.gnu.org/software/talkfilters")
280 (synopsis "Convert English text to humorous dialects")
281 (description "The GNU Talk Filters are programs that convert English text
282 into stereotyped or otherwise humorous dialects. The filters are provided as
283 a C library, so they can easily be integrated into other programs.")
284 (license license:gpl2+)))
285
286 (define-public cmatrix
287 (package
288 (name "cmatrix")
289 (version "1.2a")
290 (source
291 (origin
292 (method url-fetch)
293 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
294 ".tar.gz"))
295 (sha256
296 (base32
297 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
298 (build-system gnu-build-system)
299 (arguments
300 '(#:phases
301 (alist-replace 'configure
302 (lambda* (#:key outputs #:allow-other-keys)
303 ;; This old `configure' script doesn't support
304 ;; variables passed as arguments.
305 (let ((out (assoc-ref outputs "out")))
306 (setenv "CONFIG_SHELL" (which "bash"))
307 (zero?
308 (system* "./configure"
309 (string-append "--prefix=" out)))))
310 %standard-phases)))
311 (inputs `(("ncurses" ,ncurses)))
312 (home-page "http://www.asty.org/cmatrix")
313 (synopsis "Simulate the display from \"The Matrix\"")
314 (description "CMatrix simulates the display from \"The Matrix\" and is
315 based on the screensaver from the movie's website. It works with terminal
316 settings up to 132x300 and can scroll lines all at the same rate or
317 asynchronously and at a user-defined speed.")
318 (license license:gpl2+)))
319
320 (define-public chess
321 (package
322 (name "chess")
323 (version "6.2.2")
324 (source
325 (origin
326 (method url-fetch)
327 (uri (string-append "mirror://gnu/chess/gnuchess-" version
328 ".tar.gz"))
329 (sha256
330 (base32
331 "1a41ag03q66pwy3pjrmbxxjpzi9fcaiiaiywd7m9v25mxqac2xkp"))))
332 (build-system gnu-build-system)
333 (home-page "http://www.gnu.org/software/chess")
334 (synopsis "Full chess implementation")
335 (description "GNU Chess is a chess engine. It allows you to compete
336 against the computer in a game of chess, either through the default terminal
337 interface or via an external visual interface such as GNU XBoard.")
338 (license license:gpl3+)))
339
340 (define freedink-engine
341 (package
342 (name "freedink-engine")
343 (version "108.4")
344 (source (origin
345 (method url-fetch)
346 (uri (string-append "mirror://gnu/freedink/freedink-" version
347 ".tar.gz"))
348 (sha256
349 (base32
350 "08c51imfjfcydm7h0va09z8qfw5nc837bi2x754ni2z737hb5kw2"))))
351 (build-system gnu-build-system)
352 (arguments `(#:configure-flags '("--disable-embedded-resources")))
353 (native-inputs `(("gettext" ,gnu-gettext)
354 ("pkg-config" ,pkg-config)))
355 (inputs `(("sdl" ,sdl)
356 ("sdl-image" ,sdl-image)
357 ("sdl-mixer" ,sdl-mixer)
358 ("sdl-ttf" ,sdl-ttf)
359 ("sdl-gfx" ,sdl-gfx)
360 ("fontconfig" ,fontconfig)
361 ("check" ,check)))
362 (home-page "http://www.gnu.org/software/freedink/")
363 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
364 (description
365 "GNU FreeDink is a free and portable re-implementation of the engine
366 for the role-playing game Dink Smallwood. It supports not only the original
367 game data files but it also supports user-produced game mods or \"D-Mods\".
368 To that extent, it also includes a front-end for managing all of your D-Mods.")
369 (license license:gpl3+)))
370
371 (define freedink-data
372 (package
373 (name "freedink-data")
374 (version "1.08.20140901")
375 (source (origin
376 (method url-fetch)
377 (uri (string-append "mirror://gnu/freedink/freedink-data-"
378 version ".tar.gz"))
379 (sha256
380 (base32
381 "04f1aa8gfz30qkgv7chjz5n1s8v5hbqs01h2113cq1ylm3isd5sp"))))
382 (build-system gnu-build-system)
383 (arguments
384 `(#:phases (alist-delete 'configure (alist-delete 'check %standard-phases))
385 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
386 (home-page "http://www.gnu.org/software/freedink/")
387 (synopsis "Game data for GNU Freedink")
388 (description
389 "This package contains the game data of GNU Freedink.")
390 (license license:gpl3+)))
391
392 ;; TODO: Add freedink-dfarc when there's a wxWidgets package.
393
394 (define-public freedink
395 ;; This is a wrapper that tells the engine where to find the data.
396 (package (inherit freedink-engine)
397 (name "freedink")
398 (build-system trivial-build-system)
399 (arguments
400 '(#:builder (begin
401 (use-modules (guix build utils))
402
403 (let* ((output (assoc-ref %outputs "out"))
404 (bin (string-append output "/bin"))
405 (executable (string-append bin "/freedink")))
406 (mkdir-p bin)
407 (call-with-output-file executable
408 (lambda (port)
409 (format port "#!~a/bin/sh
410 exec ~a/bin/freedink -refdir ~a/share/dink\n"
411 (assoc-ref %build-inputs "bash")
412 (assoc-ref %build-inputs "engine")
413 (assoc-ref %build-inputs "data"))
414 (chmod port #o777)))))
415 #:modules ((guix build utils))))
416 (inputs `(("engine" ,freedink-engine)
417 ("data" ,freedink-data)
418 ("bash" ,bash)))
419 (native-inputs '())))
420
421 (define-public xboard
422 (package
423 (name "xboard")
424 (version "4.9.0")
425 (source
426 (origin
427 (method url-fetch)
428 (uri (string-append "mirror://gnu/xboard/xboard-" version
429 ".tar.gz"))
430 (sha256
431 (base32
432 "1av6r3s5vyclwf3c9i1pkr2442ryrf4ixhhf2i44a4j1xyhlp5jb"))))
433 (build-system gnu-build-system)
434 (inputs
435 `(("gtk+" ,gtk+-2)
436 ("librsvg" ,librsvg)))
437 (native-inputs `(("texinfo" ,texinfo)
438 ("pkg-config" ,pkg-config)))
439 (home-page "http://www.gnu.org/software/xboard")
440 (synopsis "Graphical user interface for chess programs")
441 (description "GNU XBoard is a graphical board for all varieties of chess,
442 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
443 and Makruk. Several lesser-known variants are also supported. It presents a
444 fully interactive graphical interface and it can load and save games in the
445 Portable Game Notation.")
446 (license license:gpl3+)))
447
448
449 (define-public xboing
450 (package
451 (name "xboing")
452 (version "2.4")
453 (source
454 (origin
455 (method url-fetch)
456 (uri (string-append "http://www.techrescue.org/xboing/xboing"
457 version ".tar.gz"))
458 (sha256
459 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))))
460 (arguments
461 `(#:tests? #f
462 #:phases
463 (alist-replace
464 'configure
465 (lambda* (#:key outputs #:allow-other-keys)
466
467 (substitute* "Imakefile"
468 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
469 (string-append "XPMINCLUDE = -I" (assoc-ref %build-inputs "libxpm")
470 "/include/X11")))
471
472 (substitute* "Imakefile"
473 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
474
475 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
476
477 (zero? (system* "xmkmf" "-a"
478 (string-append "-DProjectRoot="
479 (assoc-ref outputs "out")))))
480 (alist-replace 'install
481 (lambda* (#:key outputs #:allow-other-keys)
482 (and
483 (zero? (system* "make" "install.man"))
484 (zero? (system* "make" "install"))))
485 %standard-phases))))
486 (inputs `(("libx11" ,libx11)
487 ("libxext" ,libxext)
488 ("libxpm" ,libxpm)))
489 (native-inputs `(("imake" ,imake)
490 ("inetutils" ,inetutils)
491 ("makedepend" ,makedepend)))
492 (build-system gnu-build-system)
493 (home-page "http://www.techrescue.org/xboing")
494 (synopsis "Ball and paddle game")
495 (description "XBoing is a blockout type game where you have a paddle which
496 you control to bounce a ball around the game zone destroying blocks with a
497 proton ball. Each block carries a different point value. The more blocks you
498 destroy, the better your score. The person with the highest score wins.")
499 (license (license:x11-style "file://COPYING"
500 "Very similar to the X11 licence."))))
501
502 (define-public gtypist
503 (package
504 (name "gtypist")
505 (version "2.9.5")
506 (source (origin
507 (method url-fetch)
508 (uri (string-append "mirror://gnu/gtypist/gtypist-"
509 version ".tar.xz"))
510 (sha256
511 (base32
512 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
513 (modules '((guix build utils)))
514 (snippet
515 ;; We do not provide `ncurses.h' within an `ncursesw'
516 ;; sub-directory, so patch the source accordingly. See
517 ;; <http://bugs.gnu.org/19018>.
518 '(for-each (lambda (file)
519 (substitute* file
520 (("ncursesw/ncurses.h")
521 "ncurses.h")))
522 (find-files "." "configure$|\\.c$")))))
523 (build-system gnu-build-system)
524 (inputs `(("ncurses" ,ncurses)
525 ("perl" ,perl)))
526 (home-page "http://www.gnu.org/software/gtypist/")
527 (synopsis "Typing tutor")
528 (description
529 "GNU Typist is a universal typing tutor. It can be used to learn and
530 practice touch-typing. Several tutorials are included; in addition to
531 tutorials for the standard QWERTY layout, there are also tutorials for the
532 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
533 are primarily in English, however some in other languages are provided.")
534 (license license:gpl3+)))
535
536 (define-public irrlicht
537 (package
538 (name "irrlicht")
539 (version "1.8.1")
540 (source (origin
541 (method url-fetch)
542 (uri (string-append
543 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
544 (version-major+minor version)
545 "/" version "/irrlicht-" version ".zip"))
546 (sha256
547 (base32
548 "0yz9lvsc8aqk8wj4rnpanxrw90gqpwn9w5hxp94r8hnm2q0vjjw1"))))
549 (build-system gnu-build-system)
550 (arguments
551 '(#:phases (alist-cons-after
552 'unpack 'fix-build-env
553 (lambda* (#:key outputs #:allow-other-keys)
554 (let ((out (assoc-ref outputs "out")))
555 (substitute* "Makefile"
556 (("INSTALL_DIR = /usr/local/lib")
557 (string-append "INSTALL_DIR = " out "/lib")))
558 ;; The Makefile assumes these directories exist.
559 (mkdir-p (string-append out "/lib"))
560 (mkdir-p (string-append out "/include"))))
561 (alist-replace
562 'unpack
563 (lambda* (#:key source #:allow-other-keys)
564 (and (zero? (system* "unzip" source))
565 ;; The actual source is buried a few directories deep.
566 (chdir "irrlicht-1.8.1/source/Irrlicht/")))
567 (alist-cons-after
568 'unpack 'apply-patch/mesa-10-fix
569 (lambda* (#:key inputs #:allow-other-keys)
570 (zero? (system* "patch" "--force" "-p3" "-i"
571 (assoc-ref inputs "patch/mesa-10-fix"))))
572 ;; No configure script
573 (alist-delete 'configure %standard-phases))))
574 #:tests? #f ; no check target
575 #:make-flags '("CC=gcc" "sharedlib")))
576 (native-inputs
577 `(("patch/mesa-10-fix" ,(search-patch "irrlicht-mesa-10.patch"))
578 ("unzip" ,unzip)))
579 (inputs
580 `(("mesa" ,mesa)
581 ("glu" ,glu)))
582 (synopsis "3D game engine written in C++")
583 (description
584 "The Irrlicht Engine is a high performance realtime 3D engine written in
585 C++. Features include an OpenGL renderer, extensible materials, scene graph
586 management, character animation, particle and other special effects, support
587 for common mesh file formats, and collision detection.")
588 (home-page "http://irrlicht.sourceforge.net/")
589 (license license:zlib)))
590
591 (define-public mars
592 ;; The latest release on SourceForge relies on an unreleased version of SFML
593 ;; with a different API, so we take the latest version from the official
594 ;; repository on Github.
595 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
596 (revision "1"))
597 (package
598 (name "mars")
599 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
600 (source (origin
601 (method git-fetch)
602 (uri (git-reference
603 (url "https://github.com/thelaui/M.A.R.S..git")
604 (commit commit)))
605 (file-name (string-append name "-" version))
606 (sha256
607 (base32
608 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
609 (patches (search-patches "mars-sfml-2.3.patch"
610 "mars-install.patch"))))
611 (build-system cmake-build-system)
612 (arguments
613 `(#:tests? #f ; There are no tests
614 #:phases
615 (modify-phases %standard-phases
616 (add-after 'unpack 'fix-install-path
617 (lambda _
618 (substitute* "src/CMakeLists.txt"
619 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
620 "${CMAKE_INSTALL_PREFIX}/bin"))
621 #t))
622 (add-after 'unpack 'fix-data-path
623 (lambda* (#:key outputs #:allow-other-keys)
624 (substitute* "src/System/settings.cpp"
625 (("C_dataPath = \"./data/\";")
626 (string-append "C_dataPath = \""
627 (assoc-ref outputs "out")
628 "/share/games/marsshooter/\";")))
629 #t)))))
630 (inputs
631 `(("mesa" ,mesa)
632 ("fribidi" ,fribidi)
633 ("taglib" ,taglib)
634 ("sfml" ,sfml)))
635 (home-page "http://marsshooter.org")
636 (synopsis "2D space shooter")
637 (description
638 "M.A.R.S. is a 2D space shooter with pretty visual effects and
639 attractive physics. Players can battle each other or computer controlled
640 enemies in different game modes such as space ball, death match, team death
641 match, cannon keep, and grave-itation pit.")
642 (license license:gpl3+))))
643
644 (define minetest-data
645 (package
646 (name "minetest-data")
647 (version "0.4.14")
648 (source (origin
649 (method url-fetch)
650 (uri (string-append
651 "https://github.com/minetest/minetest_game/archive/"
652 version ".tar.gz"))
653 (file-name (string-append name "-" version ".tar.gz"))
654 (sha256
655 (base32
656 "11fzdh4icx2yvjfz1skdql0d0wxpzdr006k993v33x72s0q2ig7f"))))
657 (build-system trivial-build-system)
658 (native-inputs
659 `(("source" ,source)
660 ("tar" ,tar)
661 ("gzip" ,(@ (gnu packages compression) gzip))))
662 (arguments
663 `(#:modules ((guix build utils))
664 #:builder (begin
665 (use-modules (guix build utils))
666 (let ((tar (string-append (assoc-ref %build-inputs "tar")
667 "/bin/tar"))
668 (install-dir (string-append
669 %output
670 "/share/minetest/games/minetest_game"))
671 (path (string-append (assoc-ref %build-inputs
672 "gzip")
673 "/bin")))
674 (setenv "PATH" path)
675 (system* tar "xvf" (assoc-ref %build-inputs "source"))
676 (chdir (string-append "minetest_game-" ,version))
677 (mkdir-p install-dir)
678 (copy-recursively "." install-dir)))))
679 (synopsis "Main game data for the Minetest game engine")
680 (description
681 "Game data for the Minetest infinite-world block sandox game.")
682 (home-page "http://minetest.net")
683 (license license:lgpl2.1+)))
684
685 (define-public minetest
686 (package
687 (name "minetest")
688 (version "0.4.14")
689 (source (origin
690 (method url-fetch)
691 (uri (string-append
692 "https://github.com/minetest/minetest/archive/"
693 version ".tar.gz"))
694 (file-name (string-append name "-" version ".tar.gz"))
695 (sha256
696 (base32
697 "0m3hhk5icx4y4gd970z7ya2013fq4vvqbjljmck62ik03baf8g90"))))
698 (build-system cmake-build-system)
699 (arguments
700 '(#:configure-flags
701 (list "-DRUN_IN_PLACE=0"
702 "-DENABLE_FREETYPE=1"
703 "-DENABLE_GETTEXT=1"
704 (string-append "-DIRRLICHT_INCLUDE_DIR="
705 (assoc-ref %build-inputs "irrlicht")
706 "/include/irrlicht")
707 (string-append "-DCURL_INCLUDE_DIR="
708 (assoc-ref %build-inputs "curl")
709 "/include/curl"))
710 #:tests? #f)) ; no check target
711 (native-search-paths
712 (list (search-path-specification
713 (variable "MINETEST_SUBGAME_PATH")
714 (files '("share/minetest/games")))))
715 (native-inputs
716 `(("pkg-config" ,pkg-config)))
717 (inputs
718 `(("irrlicht" ,irrlicht)
719 ("libpng" ,libpng)
720 ("libjpeg" ,libjpeg)
721 ("libxxf86vm" ,libxxf86vm)
722 ("mesa" ,mesa)
723 ("libogg" ,libogg)
724 ("libvorbis" ,libvorbis)
725 ("openal" ,openal)
726 ("freetype" ,(@ (gnu packages fontutils) freetype))
727 ("curl" ,curl)
728 ("luajit" ,luajit)
729 ("gettext" ,gnu-gettext)
730 ("sqlite" ,sqlite)))
731 (propagated-inputs
732 `(("minetest-data" ,minetest-data)))
733 (synopsis "Infinite-world block sandbox game")
734 (description
735 "Minetest is a sandbox construction game. Players can create and destroy
736 various types of blocks in a three-dimensional open world. This allows
737 forming structures in every possible creation, on multiplayer servers or as a
738 single player. Mods and texture packs allow players to personalize the game
739 in different ways.")
740 (home-page "http://minetest.net")
741 (license license:lgpl2.1+)))
742
743 (define glkterm
744 (package
745 (name "glkterm")
746 (version "1.0.4")
747 (source
748 (origin
749 (method url-fetch)
750 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
751 "glk/implementations/glkterm-104.tar.gz"))
752 (sha256
753 (base32
754 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
755 (build-system gnu-build-system)
756 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
757 (arguments
758 '(#:tests? #f ; no check target
759 #:phases
760 (alist-replace
761 'install
762 (lambda* (#:key outputs #:allow-other-keys)
763 (let* ((out (assoc-ref outputs "out"))
764 (inc (string-append out "/include")))
765 (mkdir-p inc)
766 (for-each
767 (lambda (file)
768 (copy-file file (string-append inc "/" file)))
769 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
770 (mkdir (string-append out "/lib"))
771 (copy-file "libglkterm.a" (string-append out "/lib/libglkterm.a"))))
772 (alist-delete 'configure %standard-phases))))
773 (home-page "http://www.eblong.com/zarf/glk/")
774 (synopsis "Curses Implementation of the Glk API")
775 (description
776 "Glk defines a portable API for applications with text UIs. It was
777 primarily designed for interactive fiction, but it should be suitable for many
778 interactive text utilities, particularly those based on a command line.
779 This is an implementation of the Glk library which runs in a terminal window,
780 using the curses.h library for screen control.")
781 (license (license:fsf-free "file://README"))))
782
783 (define-public glulxe
784 (package
785 (name "glulxe")
786 (version "0.5.2")
787 (source
788 (origin
789 (method url-fetch)
790 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
791 "glulx/interpreters/glulxe/glulxe-052.tar.gz"))
792 (sha256
793 (base32
794 "19iw6kl8ncqcy9pv4gsqfh3xsa1n94zd234rqavvmxccnf3nj19g"))))
795 (build-system gnu-build-system)
796 (inputs `(("glk" ,glkterm)))
797 (arguments
798 '(#:tests? #f ; no check target
799 #:make-flags
800 (let* ((glk (assoc-ref %build-inputs "glk")))
801 (list (string-append "GLKINCLUDEDIR=" glk "/include")
802 (string-append "GLKLIBDIR=" glk "/lib")
803 (string-append "GLKMAKEFILE=" "Make.glkterm")))
804 #:phases
805 (alist-replace
806 'install
807 (lambda* (#:key outputs #:allow-other-keys)
808 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
809 (mkdir-p bin)
810 (copy-file "glulxe" (string-append bin "/glulxe"))))
811 (alist-delete 'configure %standard-phases))))
812 (home-page "http://www.eblong.com/zarf/glulx/")
813 (synopsis "Interpreter for Glulx VM")
814 (description
815 "Glulx is a 32-bit portable virtual machine intended for writing and
816 playing interactive fiction. It was designed by Andrew Plotkin to relieve
817 some of the restrictions in the venerable Z-machine format. This is the
818 reference interpreter, using Glk API.")
819 (license (license:fsf-free "file://README"))))
820
821 (define-public fizmo
822 (package
823 (name "fizmo")
824 (version "0.7.9")
825 (source (origin
826 (method url-fetch)
827 (uri (string-append "https://christoph-ender.de/fizmo/source/"
828 name "-" version ".tar.gz"))
829 (sha256
830 (base32
831 "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
832 (build-system gnu-build-system)
833 (arguments
834 '(#:configure-flags
835 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
836 (ncurses (assoc-ref %build-inputs "ncurses")))
837 (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
838 (string-append "jpeg_LIBS=-ljpeg")
839 (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
840 (string-append "ncursesw_LIBS=-lncursesw")))))
841 (native-inputs
842 `(("pkg-config" ,pkg-config)))
843 (inputs
844 `(("libjpeg" ,libjpeg)
845 ("libpng" ,libpng)
846 ("libsndfile" ,libsndfile)
847 ("libxml2" ,libxml2)
848 ("ncurses" ,ncurses)
849 ("sdl" ,sdl)))
850 (home-page "https://christoph-ender.de/fizmo/")
851 (synopsis "Z-machine interpreter")
852 (description
853 "Fizmo is a console-based Z-machine interpreter. It is used to play
854 interactive fiction, also known as text adventures, which were implemented
855 either by Infocom or created using the Inform compiler.")
856 (license license:bsd-3)))
857
858 (define-public retroarch
859 (package
860 (name "retroarch")
861 (version "1.3.4")
862 (source
863 (origin
864 (method url-fetch)
865 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
866 version ".tar.gz"))
867 (file-name (string-append name "-" version ".tar.gz"))
868 (sha256
869 (base32 "077v1sj000y3csjw9vradba3k2aknvg5k8521z8aya6q987klwx5"))))
870 (build-system gnu-build-system)
871 (arguments
872 '(#:tests? #f ; no tests
873 #:phases
874 (alist-replace
875 'configure
876 (lambda _
877 (substitute* "qb/qb.libs.sh"
878 (("/bin/true") (which "true")))
879 (zero? (system*
880 "./configure"
881 (string-append "--prefix=" %output)
882 (string-append "--global-config-dir=" %output "/etc"))))
883 %standard-phases)))
884 (inputs
885 `(("alsa-lib" ,alsa-lib)
886 ("ffmpeg" ,ffmpeg)
887 ("freetype" ,freetype)
888 ("libxinerama" ,libxinerama)
889 ("libxkbcommon" ,libxkbcommon)
890 ("libxml2" ,libxml2)
891 ("libxv" ,libxv)
892 ("mesa" ,mesa)
893 ("openal" ,openal)
894 ("pulseaudio" ,pulseaudio)
895 ("python" ,python)
896 ("sdl" ,sdl2)
897 ("udev" ,eudev)
898 ("zlib" ,zlib)))
899 (native-inputs
900 `(("pkg-config" ,pkg-config)
901 ("which" ,which)))
902 (home-page "http://www.libretro.com/")
903 (synopsis "Reference frontend for the libretro API")
904 (description
905 "Libretro is a simple but powerful development interface that allows for
906 the easy creation of emulators, games and multimedia applications that can plug
907 straight into any libretro-compatible frontend. RetroArch is the official
908 reference frontend for the libretro API, currently used by most as a modular
909 multi-system game/emulator system.")
910 (license license:gpl3+)))
911
912 (define-public gnugo
913 (package
914 (name "gnugo")
915 (version "3.8")
916 (source (origin
917 (method url-fetch)
918 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
919 ".tar.gz"))
920 (sha256
921 (base32
922 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
923 (build-system gnu-build-system)
924 (inputs `(("readline" ,readline)))
925 (synopsis "Play the game of Go")
926 (description
927 "GNU Go is a program that plays the game of Go, in which players
928 place stones on a grid to form territory or capture other stones. While
929 it can be played directly from the terminal, rendered in ASCII characters,
930 it is also possible to play GNU Go with 3rd party graphical interfaces or
931 even in Emacs. It supports the standard game storage format (SGF, Smart
932 Game Format) and inter-process communication format (GMP, Go Modem
933 Protocol).")
934 (home-page "http://www.gnu.org/software/gnugo/")
935 (license license:gpl3+)))
936
937 (define-public extremetuxracer
938 (package
939 (name "extremetuxracer")
940 (version "0.6.0")
941 (source (origin
942 (method url-fetch)
943 (uri (string-append
944 "http://downloads.sourceforge.net/project/extremetuxracer/releases/"
945 version "/etr-" version ".tar.xz"))
946 (sha256
947 (base32
948 "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4"))))
949 (build-system gnu-build-system)
950 (native-inputs
951 `(("pkg-config" ,pkg-config)))
952 (inputs
953 `(("freetype" ,freetype)
954 ("mesa" ,mesa)
955 ("glu" ,glu)
956 ("libice" ,libice)
957 ("libpng" ,libpng)
958 ("sdl" ,sdl)
959 ("sdl-mixer" ,sdl-mixer)
960 ("sdl-image" ,sdl-image)
961 ("libsm" ,libsm)
962 ("libunwind" ,libunwind)
963 ("libx11" ,libx11)
964 ("libxext" ,libxext)
965 ("libxi" ,libxi)
966 ("libxmu" ,libxmu)
967 ("libxt" ,libxt)
968 ("tcl" ,tcl)
969 ("zlib" ,zlib)))
970 (arguments
971 '(#:phases
972 (modify-phases %standard-phases
973 (add-after 'configure 'patch-makefile
974 (lambda _
975 (substitute* "Makefile"
976 (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}")))))))
977 (synopsis "High speed arctic racing game based on Tux Racer")
978 ;; Snarfed straight from Debian
979 (description "Extreme Tux Racer, or etracer as it is called for short, is
980 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
981 game is to slide down a snow- and ice-covered mountain as quickly as possible,
982 avoiding the trees and rocks that will slow you down.
983
984 Collect herrings and other goodies while sliding down the hill, but avoid fish
985 bones.
986
987 This game is based on the GPL version of the famous game TuxRacer.")
988 (home-page "http://sourceforge.net/projects/extremetuxracer/")
989 (license license:gpl2+)))
990
991 (define-public gnujump
992 (package
993 (name "gnujump")
994 (version "1.0.8")
995 (source (origin
996 (method url-fetch)
997 (uri (string-append "mirror://gnu/gnujump/gnujump-"
998 version ".tar.gz"))
999 (sha256
1000 (base32
1001 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
1002 (build-system gnu-build-system)
1003 (arguments
1004 '(#:phases
1005 (modify-phases %standard-phases
1006 (add-before
1007 'configure 'link-libm
1008 (lambda _ (setenv "LIBS" "-lm"))))))
1009 (inputs
1010 `(("glu" ,glu)
1011 ("mesa" ,mesa)
1012 ("sdl" ,sdl)
1013 ("sdl-image" ,sdl-image)
1014 ("sdl-mixer" ,sdl-mixer)))
1015 (home-page "http://gnujump.es.gnu.org/")
1016 (synopsis
1017 "Game of jumping to the next floor, trying not to fall")
1018 (description
1019 "GNUjump is a simple, yet addictive game in which you must jump from
1020 platform to platform to avoid falling, while the platforms drop at faster rates
1021 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
1022 falling, themeable graphics and sounds, and replays.")
1023 (license license:gpl3+)))
1024
1025 (define-public wesnoth
1026 (package
1027 (name "wesnoth")
1028 (version "1.12.6")
1029 (source (origin
1030 (method url-fetch)
1031 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
1032 (version-major+minor version) "/wesnoth-"
1033 version "/"
1034 name "-" version ".tar.bz2"))
1035 (sha256
1036 (base32
1037 "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
1038 (build-system cmake-build-system)
1039 (arguments
1040 '(#:tests? #f ; no check target
1041 #:configure-flags
1042 ;; XXX: Failed to compile with '-Werror=old-style-cast'.
1043 ;; boost/mpl/assert.hpp:313:58: error:
1044 ;; use of old-style cast [-Werror=old-style-cast]
1045 ;; [...]
1046 ;; cc1plus: all warnings being treated as errors
1047 '("-DENABLE_STRICT_COMPILATION=OFF")))
1048 (native-inputs
1049 `(("gettext" ,gnu-gettext)
1050 ("pkg-config" ,pkg-config)))
1051 (inputs
1052 `(("boost" ,boost)
1053 ("dbus" ,dbus)
1054 ("fribidi" ,fribidi)
1055 ("libvorbis" ,libvorbis)
1056 ("pango" ,pango)
1057 ("sdl-image" ,sdl-image)
1058 ("sdl-mixer" ,sdl-mixer)
1059 ("sdl-net" ,sdl-net)
1060 ("sdl-ttf" ,sdl-ttf)))
1061 (home-page "http://www.wesnoth.org/")
1062 (synopsis "Turn-based strategy game")
1063 (description
1064 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
1065 with several single player campaigns, and multiplayer games (both networked and
1066 local).
1067
1068 Battle for control on a range of maps, using variety of units which have
1069 advantages and disadvantages against different types of attacks. Units gain
1070 experience and advance levels, and are carried over from one scenario to the
1071 next campaign.")
1072 (license license:gpl2+)))
1073
1074 (define-public dosbox
1075 (package
1076 (name "dosbox")
1077 (version "0.74.svn3947")
1078 (source (origin
1079 (method svn-fetch)
1080 (uri (svn-reference
1081 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1082 (revision 3947)))
1083 (file-name (string-append name "-" version "-checkout"))
1084 ;; Use SVN head, since the last release (2010) is incompatible
1085 ;; with GCC 4.8+ (see
1086 ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
1087 (sha256
1088 (base32
1089 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1090 (build-system gnu-build-system)
1091 (arguments
1092 `(#:phases (modify-phases %standard-phases
1093 (add-after
1094 'unpack 'autogen.sh
1095 (lambda _
1096 (zero? (system* "sh" "autogen.sh")))))))
1097 (native-inputs
1098 `(("autoconf" ,autoconf)
1099 ("automake" ,automake)))
1100 (inputs
1101 `(("sdl" ,sdl)
1102 ("libpng" ,libpng)
1103 ("zlib" ,zlib)
1104 ("alsa-lib" ,alsa-lib)
1105 ("glu" ,glu)
1106 ("mesa" ,mesa)))
1107 (home-page "http://www.dosbox.com")
1108 (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
1109 (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
1110 also emulates CPU:286/386 realmode/protected mode, Directory
1111 FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
1112 SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
1113 older games.")
1114 (license license:gpl2+)))
1115
1116 (define-public gamine
1117 (package
1118 (name "gamine")
1119 (version "1.4")
1120 (source (origin
1121 (method url-fetch)
1122 (uri (string-append "mirror://sourceforge/gamine-game/"
1123 "gamine-" version ".tar.gz"))
1124 (sha256
1125 (base32
1126 "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
1127 (build-system gnu-build-system)
1128 (native-inputs
1129 `(("pkg-config" ,pkg-config)
1130 ("intltool" ,intltool)))
1131 (inputs
1132 `(("gstreamer" ,gstreamer)
1133 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1134 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1135 ("gtk+" ,gtk+)))
1136 (arguments
1137 `(#:tests? #f
1138 #:make-flags
1139 (let ((out (assoc-ref %outputs "out")))
1140 (list (string-append "PREFIX=" out)
1141 (string-append "SYSCONFDIR=" out "/etc")))
1142 #:phases
1143 (modify-phases %standard-phases
1144 (delete 'configure)
1145 (add-after
1146 'install 'wrap-gamine
1147 (lambda* (#:key outputs #:allow-other-keys)
1148 (let ((out (assoc-ref outputs "out"))
1149 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1150 (wrap-program (string-append out "/bin/gamine")
1151 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
1152 #t)))))
1153 (home-page "http://gamine-game.sourceforge.net/")
1154 (synopsis "Mouse and keyboard discovery for children")
1155 (description
1156 "Gamine is a game designed for young children who are learning to use the
1157 mouse and keyboard. The child uses the mouse to draw colored dots and lines
1158 on the screen and keyboard to display letters.")
1159 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
1160 (license license:gpl3)))
1161
1162 (define-public raincat
1163 (package
1164 (name "raincat")
1165 (version "1.1.1.3")
1166 (source
1167 (origin
1168 (method url-fetch)
1169 (uri (string-append
1170 "http://hackage.haskell.org/package/Raincat/Raincat-"
1171 version
1172 ".tar.gz"))
1173 (sha256
1174 (base32
1175 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
1176 (build-system haskell-build-system)
1177 (inputs
1178 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
1179 ("ghc-mtl" ,ghc-mtl)
1180 ("ghc-random" ,ghc-random)
1181 ("ghc-glut" ,ghc-glut)
1182 ("ghc-opengl" ,ghc-opengl)
1183 ("ghc-sdl" ,ghc-sdl)
1184 ("ghc-sdl-image" ,ghc-sdl-image)
1185 ("ghc-sdl-mixer" ,ghc-sdl-mixer)))
1186 (home-page "http://raincat.bysusanlin.com/")
1187 (synopsis "Puzzle game with a cat in lead role")
1188 (description "Project Raincat is a game developed by Carnegie Mellon
1189 students through GCS during the Fall 2008 semester. Raincat features game
1190 play inspired from classics Lemmings and The Incredible Machine. The project
1191 proved to be an excellent learning experience for the programmers. Everything
1192 is programmed in Haskell.")
1193 (license license:bsd-3)))
1194
1195 (define-public manaplus
1196 (package
1197 (name "manaplus")
1198 (version "1.6.6.4")
1199 (source (origin
1200 (method url-fetch)
1201 (uri (string-append
1202 "http://repo.manaplus.org/manaplus/download/"
1203 version "/manaplus-" version ".tar.xz"))
1204 (sha256
1205 (base32
1206 "00sdw2mspdhrqvz0vl6jbnhiclj7vmvyjih9qf8dbkfw2s921ybc"))))
1207 (build-system gnu-build-system)
1208 (arguments
1209 '(#:configure-flags
1210 (list (string-append "CPPFLAGS=-I"
1211 (assoc-ref %build-inputs "sdl-union")
1212 "/include/SDL"))))
1213 (native-inputs
1214 `(("pkg-config" ,pkg-config)))
1215 (inputs
1216 `(("glu" ,glu)
1217 ("curl" ,curl)
1218 ("libxml2" ,libxml2)
1219 ("mesa" ,mesa)
1220 ("physfs" ,physfs)
1221 ("sdl-union" ,(sdl-union))))
1222 (home-page "http://manaplus.org")
1223 (synopsis "Client for 'The Mana World' and similar games")
1224 (description
1225 "ManaPlus is a 2D MMORPG client for game servers. It is the only
1226 fully supported client for @uref{http://www.themanaworld.org, The mana
1227 world}, @uref{http://evolonline.org, Evol Online} and
1228 @uref{http://landoffire.org, Land of fire}.")
1229 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
1230 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
1231 ;; The rest is under GPL2+.
1232 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
1233
1234 (define-public mupen64plus-core
1235 (package
1236 (name "mupen64plus-core")
1237 (version "2.5")
1238 (source
1239 (origin
1240 (method url-fetch)
1241 (uri (string-append
1242 "https://github.com/mupen64plus/mupen64plus-core/archive/"
1243 version ".tar.gz"))
1244 (file-name (string-append name "-" version ".tar.gz"))
1245 (sha256
1246 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
1247 (build-system gnu-build-system)
1248 (native-inputs
1249 `(("pkg-config" ,pkg-config)
1250 ("which" ,which)))
1251 (inputs
1252 `(("freetype" ,freetype)
1253 ("glu" ,glu)
1254 ("libpng" ,libpng)
1255 ("mesa" ,mesa)
1256 ("sdl2" ,sdl2)
1257 ("zlib" ,zlib)))
1258 (arguments
1259 '(#:phases
1260 (modify-phases %standard-phases
1261 ;; The mupen64plus build system has no configure phase.
1262 (delete 'configure)
1263 ;; Makefile is in a subdirectory.
1264 (add-before
1265 'build 'cd-to-project-dir
1266 (lambda _
1267 (chdir "projects/unix"))))
1268 #:make-flags (let ((out (assoc-ref %outputs "out")))
1269 (list "all" (string-append "PREFIX=" out)))
1270 ;; There are no tests.
1271 #:tests? #f))
1272 ;; As per the Makefile (in projects/unix/Makefile):
1273 (supported-systems '("i686-linux" "x86_64-linux"))
1274 (home-page "http://www.mupen64plus.org/")
1275 (synopsis "Nintendo 64 emulator core library")
1276 (description
1277 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1278 which is capable of accurately playing many games. This package contains the
1279 core library.")
1280 (license license:gpl2+)))
1281
1282 (define-public mupen64plus-audio-sdl
1283 (package
1284 (name "mupen64plus-audio-sdl")
1285 (version "2.5")
1286 (source
1287 (origin
1288 (method url-fetch)
1289 (uri (string-append
1290 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
1291 version ".tar.gz"))
1292 (file-name (string-append name "-" version ".tar.gz"))
1293 (sha256
1294 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
1295 (build-system gnu-build-system)
1296 (native-inputs
1297 `(("pkg-config" ,pkg-config)
1298 ("which" ,which)))
1299 (inputs
1300 `(("mupen64plus-core" ,mupen64plus-core)
1301 ("sdl2" ,sdl2)))
1302 (arguments
1303 '(#:phases
1304 (modify-phases %standard-phases
1305 ;; The mupen64plus build system has no configure phase.
1306 (delete 'configure)
1307 ;; Makefile is in a subdirectory.
1308 (add-before
1309 'build 'cd-to-project-dir
1310 (lambda _
1311 (chdir "projects/unix"))))
1312 #:make-flags
1313 (let ((out (assoc-ref %outputs "out"))
1314 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1315 (list "all"
1316 (string-append "PREFIX=" out)
1317 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1318 ;; There are no tests.
1319 #:tests? #f))
1320 (home-page "http://www.mupen64plus.org/")
1321 (synopsis "Mupen64Plus SDL input plugin")
1322 (description
1323 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1324 which is capable of accurately playing many games. This package contains the
1325 SDL audio plugin.")
1326 (license license:gpl2+)))
1327
1328 (define-public mupen64plus-input-sdl
1329 (package
1330 (name "mupen64plus-input-sdl")
1331 (version "2.5")
1332 (source
1333 (origin
1334 (method url-fetch)
1335 (uri (string-append
1336 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
1337 version ".tar.gz"))
1338 (file-name (string-append name "-" version ".tar.gz"))
1339 (sha256
1340 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
1341 (build-system gnu-build-system)
1342 (native-inputs
1343 `(("which" ,which)))
1344 (inputs
1345 `(("mupen64plus-core" ,mupen64plus-core)
1346 ("sdl2" ,sdl2)))
1347 (arguments
1348 '(#:phases
1349 (modify-phases %standard-phases
1350 ;; The mupen64plus build system has no configure phase.
1351 (delete 'configure)
1352 ;; Makefile is in a subdirectory.
1353 (add-before
1354 'build 'cd-to-project-dir
1355 (lambda _
1356 (chdir "projects/unix"))))
1357 #:make-flags
1358 (let ((out (assoc-ref %outputs "out"))
1359 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1360 (list "all"
1361 (string-append "PREFIX=" out)
1362 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1363 ;; There are no tests.
1364 #:tests? #f))
1365 (home-page "http://www.mupen64plus.org/")
1366 (synopsis "Mupen64Plus SDL input plugin")
1367 (description
1368 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1369 which is capable of accurately playing many games. This package contains the
1370 SDL input plugin.")
1371 (license license:gpl2+)))
1372
1373 (define-public mupen64plus-rsp-hle
1374 (package
1375 (name "mupen64plus-rsp-hle")
1376 (version "2.5")
1377 (source
1378 (origin
1379 (method url-fetch)
1380 (uri (string-append
1381 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
1382 version ".tar.gz"))
1383 (file-name (string-append name "-" version ".tar.gz"))
1384 (sha256
1385 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
1386 (build-system gnu-build-system)
1387 (inputs
1388 `(("mupen64plus-core" ,mupen64plus-core)))
1389 (arguments
1390 '(#:phases
1391 (modify-phases %standard-phases
1392 ;; The mupen64plus build system has no configure phase.
1393 (delete 'configure)
1394 ;; Makefile is in a subdirectory.
1395 (add-before
1396 'build 'cd-to-project-dir
1397 (lambda _
1398 (chdir "projects/unix"))))
1399 #:make-flags
1400 (let ((out (assoc-ref %outputs "out"))
1401 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1402 (list "all"
1403 (string-append "PREFIX=" out)
1404 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1405 ;; There are no tests.
1406 #:tests? #f))
1407 (home-page "http://www.mupen64plus.org/")
1408 (synopsis "Mupen64Plus SDL input plugin")
1409 (description
1410 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1411 which is capable of accurately playing many games. This package contains the
1412 high-level emulation (HLE) RSP processor plugin.")
1413 (license license:gpl2+)))
1414
1415 (define-public mupen64plus-rsp-z64
1416 (package
1417 (name "mupen64plus-rsp-z64")
1418 (version "2.0.0")
1419 (source
1420 (origin
1421 (method url-fetch)
1422 (uri (string-append
1423 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
1424 version ".tar.gz"))
1425 (file-name (string-append name "-" version ".tar.gz"))
1426 (sha256
1427 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
1428 (build-system gnu-build-system)
1429 (inputs
1430 `(("mupen64plus-core" ,mupen64plus-core)))
1431 (arguments
1432 '(#:phases
1433 (modify-phases %standard-phases
1434 ;; The mupen64plus build system has no configure phase.
1435 (delete 'configure)
1436 ;; Makefile is in a subdirectory.
1437 (add-before
1438 'build 'cd-to-project-dir
1439 (lambda _
1440 (chdir "projects/unix"))))
1441 #:make-flags
1442 (let ((out (assoc-ref %outputs "out"))
1443 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1444 (list "all"
1445 (string-append "PREFIX=" out)
1446 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1447 ;; There are no tests.
1448 #:tests? #f))
1449 (home-page "http://www.mupen64plus.org/")
1450 (synopsis "Mupen64Plus SDL input plugin")
1451 (description
1452 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1453 which is capable of accurately playing many games. This package contains the
1454 Z64 RSP processor plugin.")
1455 (license license:gpl2+)))
1456
1457 (define-public mupen64plus-video-arachnoid
1458 (package
1459 (name "mupen64plus-video-arachnoid")
1460 (version "2.0.0")
1461 (source
1462 (origin
1463 (method url-fetch)
1464 (uri (string-append
1465 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
1466 version ".tar.gz"))
1467 (file-name (string-append name "-" version ".tar.gz"))
1468 (sha256
1469 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
1470 (build-system gnu-build-system)
1471 (native-inputs
1472 `(("pkg-config" ,pkg-config)
1473 ("which" ,which)))
1474 (inputs
1475 `(("mesa" ,mesa)
1476 ("mupen64plus-core" ,mupen64plus-core)))
1477 (arguments
1478 '(#:phases
1479 (modify-phases %standard-phases
1480 ;; The mupen64plus build system has no configure phase.
1481 (delete 'configure)
1482 ;; Makefile is in a subdirectory.
1483 (add-before
1484 'build 'cd-to-project-dir
1485 (lambda _
1486 (chdir "projects/unix"))))
1487 #:make-flags
1488 (let ((out (assoc-ref %outputs "out"))
1489 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1490 (list "all"
1491 (string-append "PREFIX=" out)
1492 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1493 ;; There are no tests.
1494 #:tests? #f))
1495 (home-page "http://www.mupen64plus.org/")
1496 (synopsis "Mupen64Plus Rice Video plugin")
1497 (description
1498 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1499 which is capable of accurately playing many games. This package contains the
1500 Arachnoid video plugin.")
1501 (license license:gpl2+)))
1502
1503 (define-public mupen64plus-video-glide64
1504 (package
1505 (name "mupen64plus-video-glide64")
1506 (version "2.0.0")
1507 (source
1508 (origin
1509 (method url-fetch)
1510 (uri (string-append
1511 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
1512 version ".tar.gz"))
1513 (file-name (string-append name "-" version ".tar.gz"))
1514 (sha256
1515 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
1516 (build-system gnu-build-system)
1517 (native-inputs
1518 `(("pkg-config" ,pkg-config)
1519 ("which" ,which)))
1520 (inputs
1521 `(("mesa" ,mesa)
1522 ("mupen64plus-core" ,mupen64plus-core)
1523 ("sdl2" ,sdl2)))
1524 (arguments
1525 '(#:phases
1526 (modify-phases %standard-phases
1527 ;; The mupen64plus build system has no configure phase.
1528 (delete 'configure)
1529 ;; Makefile is in a subdirectory.
1530 (add-before
1531 'build 'cd-to-project-dir
1532 (lambda _
1533 (chdir "projects/unix")))
1534 ;; XXX Should be unnecessary with the next release.
1535 (add-before
1536 'build 'use-sdl2
1537 (lambda _
1538 (substitute* "Makefile"
1539 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1540 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1541 #:make-flags
1542 (let ((out (assoc-ref %outputs "out"))
1543 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1544 (list "all"
1545 (string-append "PREFIX=" out)
1546 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1547 ;; There are no tests.
1548 #:tests? #f))
1549 (home-page "http://www.mupen64plus.org/")
1550 (synopsis "Mupen64Plus Rice Video plugin")
1551 (description
1552 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1553 which is capable of accurately playing many games. This package contains the
1554 Glide64 video plugin.")
1555 (license license:gpl2+)))
1556
1557 (define-public mupen64plus-video-glide64mk2
1558 (package
1559 (name "mupen64plus-video-glide64mk2")
1560 (version "2.5")
1561 (source
1562 (origin
1563 (method url-fetch)
1564 (uri (string-append
1565 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
1566 version ".tar.gz"))
1567 (file-name (string-append name "-" version ".tar.gz"))
1568 (sha256
1569 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
1570 (build-system gnu-build-system)
1571 (native-inputs
1572 `(("pkg-config" ,pkg-config)
1573 ("which" ,which)))
1574 (inputs
1575 `(("boost" ,boost)
1576 ("libpng" ,libpng)
1577 ("mesa" ,mesa)
1578 ("mupen64plus-core" ,mupen64plus-core)
1579 ("sdl2" ,sdl2)
1580 ("zlib" ,zlib)))
1581 (arguments
1582 '(#:phases
1583 (modify-phases %standard-phases
1584 ;; The mupen64plus build system has no configure phase.
1585 (delete 'configure)
1586 ;; Makefile is in a subdirectory.
1587 (add-before
1588 'build 'cd-to-project-dir
1589 (lambda _
1590 (chdir "projects/unix"))))
1591 #:make-flags
1592 (let ((out (assoc-ref %outputs "out"))
1593 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1594 (list "all"
1595 (string-append "PREFIX=" out)
1596 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1597 ;; There are no tests.
1598 #:tests? #f))
1599 (home-page "http://www.mupen64plus.org/")
1600 (synopsis "Mupen64Plus Rice Video plugin")
1601 (description
1602 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1603 which is capable of accurately playing many games. This package contains the
1604 Glide64MK2 video plugin.")
1605 (license license:gpl2+)))
1606
1607 (define-public mupen64plus-video-rice
1608 (package
1609 (name "mupen64plus-video-rice")
1610 (version "2.5")
1611 (source
1612 (origin
1613 (method url-fetch)
1614 (uri (string-append
1615 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
1616 version ".tar.gz"))
1617 (file-name (string-append name "-" version ".tar.gz"))
1618 (sha256
1619 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
1620 (build-system gnu-build-system)
1621 (native-inputs
1622 `(("pkg-config" ,pkg-config)
1623 ("which" ,which)))
1624 (inputs
1625 `(("libpng" ,libpng)
1626 ("mesa" ,mesa)
1627 ("mupen64plus-core" ,mupen64plus-core)
1628 ("sdl2" ,sdl2)))
1629 (arguments
1630 '(#:phases
1631 (modify-phases %standard-phases
1632 ;; The mupen64plus build system has no configure phase.
1633 (delete 'configure)
1634 ;; Makefile is in a subdirectory.
1635 (add-before
1636 'build 'cd-to-project-dir
1637 (lambda _
1638 (chdir "projects/unix"))))
1639 #:make-flags
1640 (let ((out (assoc-ref %outputs "out"))
1641 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1642 (list "all"
1643 (string-append "PREFIX=" out)
1644 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1645 ;; There are no tests.
1646 #:tests? #f))
1647 (home-page "http://www.mupen64plus.org/")
1648 (synopsis "Mupen64Plus Rice Video plugin")
1649 (description
1650 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1651 which is capable of accurately playing many games. This package contains the
1652 Rice Video plugin.")
1653 (license license:gpl2+)))
1654
1655 (define-public mupen64plus-video-z64
1656 (package
1657 (name "mupen64plus-video-z64")
1658 (version "2.0.0")
1659 (source
1660 (origin
1661 (method url-fetch)
1662 (uri (string-append
1663 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
1664 version ".tar.gz"))
1665 (file-name (string-append name "-" version ".tar.gz"))
1666 (sha256
1667 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
1668 (build-system gnu-build-system)
1669 (native-inputs
1670 `(("pkg-config" ,pkg-config)
1671 ("which" ,which)))
1672 (inputs
1673 `(("glew" ,glew)
1674 ("mupen64plus-core" ,mupen64plus-core)
1675 ("sdl2" ,sdl2)))
1676 (arguments
1677 '(#:phases
1678 (modify-phases %standard-phases
1679 ;; The mupen64plus build system has no configure phase.
1680 (delete 'configure)
1681 ;; Makefile is in a subdirectory.
1682 (add-before
1683 'build 'cd-to-project-dir
1684 (lambda _
1685 (chdir "projects/unix")))
1686 ;; XXX Should be unnecessary with the next release.
1687 (add-before
1688 'build 'use-sdl2
1689 (lambda _
1690 (substitute* "Makefile"
1691 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1692 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1693 #:make-flags
1694 (let ((out (assoc-ref %outputs "out"))
1695 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1696 (list "all"
1697 (string-append "PREFIX=" out)
1698 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1699 ;; There are no tests.
1700 #:tests? #f))
1701 (home-page "http://www.mupen64plus.org/")
1702 (synopsis "Mupen64Plus Z64 video plugin")
1703 (description
1704 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1705 which is capable of accurately playing many games. This package contains the
1706 Z64 video plugin.")
1707 (license license:gpl2+)))
1708
1709 (define-public mupen64plus-ui-console
1710 (package
1711 (name "mupen64plus-ui-console")
1712 (version "2.5")
1713 (source
1714 (origin
1715 (method url-fetch)
1716 (uri (string-append
1717 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
1718 version ".tar.gz"))
1719 (file-name (string-append name "-" version ".tar.gz"))
1720 (sha256
1721 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
1722 (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
1723 (build-system gnu-build-system)
1724 (native-inputs
1725 `(("pkg-config" ,pkg-config)
1726 ("which" ,which)))
1727 (inputs
1728 `(("sdl2" ,sdl2)))
1729 ;; Mupen64Plus supports a single data directory and a single plugin
1730 ;; directory in its configuration, yet we need data and plugin files from
1731 ;; a variety of packages. The best way to deal with this is to install
1732 ;; all packages from which data and plugin files are needed into one's
1733 ;; profile, and point the configuration there. Hence, propagate the most
1734 ;; important packages here to save the user from the bother. The patch
1735 ;; mupen64plus-ui-console-notice also gives users instructions on what
1736 ;; they need to do in order to point the configuration to their profile.
1737 (propagated-inputs
1738 `(("mupen64plus-core" ,mupen64plus-core)
1739 ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
1740 ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
1741 ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
1742 ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
1743 ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
1744 ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
1745 (arguments
1746 '(#:phases
1747 (modify-phases %standard-phases
1748 ;; The mupen64plus build system has no configure phase.
1749 (delete 'configure)
1750 ;; Makefile is in a subdirectory.
1751 (add-before
1752 'build 'cd-to-project-dir
1753 (lambda _
1754 (chdir "projects/unix"))))
1755 #:make-flags
1756 (let ((out (assoc-ref %outputs "out"))
1757 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1758 (list "all"
1759 (string-append "PREFIX=" out)
1760 (string-append "APIDIR=" m64p "/include/mupen64plus")
1761 ;; Trailing slash matters here.
1762 (string-append "COREDIR=" m64p "/lib/")))
1763 ;; There are no tests.
1764 #:tests? #f))
1765 (home-page "http://www.mupen64plus.org/")
1766 (synopsis "Mupen64Plus SDL input plugin")
1767 (description
1768 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1769 which is capable of accurately playing many games. This package contains the
1770 command line user interface. Installing this package is the easiest way
1771 towards a working Mupen64Plus for casual users.")
1772 (license license:gpl2+)))
1773
1774 (define-public nestopia-ue
1775 (package
1776 (name "nestopia-ue")
1777 (version "1.46.2")
1778 (source (origin
1779 (method url-fetch)
1780 (uri (string-append
1781 "https://github.com/rdanbrook/nestopia/archive/"
1782 version ".tar.gz"))
1783 (file-name (string-append name "-" version ".tar.gz"))
1784 (sha256
1785 (base32
1786 "07h49xwvg61dx20rk5p4r3ax2ar5y0ppvm60cqwqljyi9rdfbh7p"))
1787 (modules '((guix build utils)))
1788 (snippet
1789 '(begin
1790 ;; We don't need libretro for the GNU/Linux build.
1791 (delete-file-recursively "libretro")
1792 ;; Use system zlib.
1793 (delete-file-recursively "source/zlib")
1794 (substitute* "source/core/NstZlib.cpp"
1795 (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
1796 (build-system gnu-build-system)
1797 (native-inputs
1798 `(("pkg-config" ,pkg-config)))
1799 (inputs
1800 `(("ao" ,ao)
1801 ("glu" ,glu)
1802 ("gtk+" ,gtk+)
1803 ("libarchive" ,libarchive)
1804 ("mesa" ,mesa)
1805 ("sdl2" ,sdl2)
1806 ("zlib" ,zlib)))
1807 (arguments
1808 '(#:phases
1809 (modify-phases %standard-phases
1810 ;; The Nestopia build system consists solely of a Makefile.
1811 (delete 'configure)
1812 ;; XXX Should be unnecessary with the next release.
1813 (add-before
1814 'build 'patch-makefile
1815 (lambda _
1816 (substitute* "Makefile"
1817 (("@mkdir \\$@") "@mkdir -p $@")
1818 (("CC =") "CC ?=")
1819 (("CXX =") "CXX ?=")
1820 (("PREFIX =") "PREFIX ?=")
1821 (("^install:\n$") "install:\n\tmkdir -p $(BINDIR)\n"))))
1822 (add-before
1823 'build 'remove-xdg-desktop-menu-call
1824 (lambda _
1825 (substitute* "Makefile"
1826 (("xdg-desktop-menu install .*") "")))))
1827 #:make-flags (let ((out (assoc-ref %outputs "out")))
1828 (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
1829 ;; There are no tests.
1830 #:tests? #f))
1831 (home-page "http://0ldsk00l.ca/nestopia/")
1832 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
1833 (description
1834 "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
1835 System (NES/Famicom) emulator Nestopia, with enhancements from members of the
1836 emulation community. It provides highly accurate emulation.")
1837 (license license:gpl2+)))
1838
1839 (define-public emulation-station
1840 (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
1841 (package
1842 (name "emulation-station")
1843 (version "2.0.1")
1844 (source (origin
1845 (method git-fetch) ; no tarball available
1846 (uri (git-reference
1847 (url "https://github.com/Aloshi/EmulationStation.git")
1848 (commit commit))) ; no version tag
1849 (sha256
1850 (base32
1851 "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
1852 (build-system cmake-build-system)
1853 (arguments
1854 '(#:tests? #f)) ; no tests
1855 (inputs
1856 `(("alsa-lib" ,alsa-lib)
1857 ("boost" ,boost)
1858 ("curl" ,curl)
1859 ("eigin" ,eigen)
1860 ("freeimage" ,freeimage)
1861 ("freetype" ,freetype)
1862 ("mesa" ,mesa)
1863 ("sdl2" ,sdl2)))
1864 (synopsis "Video game console emulator front-end")
1865 (description "EmulationStation provides a graphical front-end to a large
1866 number of video game console emulators. It features an interface that is
1867 usable with any game controller that has at least 4 buttons, theming support,
1868 and a game metadata scraper.")
1869 (home-page "http://www.emulationstation.org")
1870 (license license:expat))))
1871
1872 (define openttd-engine
1873 (package
1874 (name "openttd-engine")
1875 (version "1.6.1")
1876 (source
1877 (origin (method url-fetch)
1878 (uri (string-append "http://binaries.openttd.org/releases/"
1879 version "/openttd-" version "-source.tar.xz"))
1880 (sha256
1881 (base32
1882 "1ak32fj5xkk2fvmm3g8i7wzmk4bh2ijsp8fzvvw5wj6365p9j24v"))
1883 (modules '((guix build utils)))
1884 (snippet
1885 ;; The DOS port contains proprietary software.
1886 '(delete-file-recursively "os/dos"))))
1887 (build-system gnu-build-system)
1888 (arguments
1889 `(#:tests? #f ; no "check" target
1890 #:phases
1891 (modify-phases %standard-phases
1892 ;; The build process fails if the configure script is passed the
1893 ;; option "--enable-fast-install".
1894 (replace 'configure
1895 (lambda* (#:key inputs outputs #:allow-other-keys)
1896 (let ((out (assoc-ref outputs "out"))
1897 (lzo (assoc-ref inputs "lzo")))
1898 (zero?
1899 (system* "./configure"
1900 (string-append "--prefix=" out)
1901 ;; Provide the "lzo" path.
1902 (string-append "--with-liblzo2="
1903 lzo "/lib/liblzo2.a")
1904 ;; Put the binary in 'bin' instead of 'games'.
1905 "--binary-dir=bin"))))))))
1906 (native-inputs `(("pkg-config" ,pkg-config)))
1907 (inputs
1908 `(("allegro" ,allegro-4)
1909 ("fontconfig" ,fontconfig)
1910 ("freetype" ,freetype)
1911 ("icu4c" ,icu4c)
1912 ("libpng" ,libpng)
1913 ("lzo" ,lzo)
1914 ("sdl" ,sdl)
1915 ("xz" ,xz)
1916 ("zlib" ,zlib)))
1917 (synopsis "Transportation economics simulator")
1918 (description "OpenTTD is a game in which you transport goods and
1919 passengers by land, water and air. It is a re-implementation of Transport
1920 Tycoon Deluxe with many enhancements including multiplayer mode,
1921 internationalization support, conditional orders and the ability to clone,
1922 autoreplace and autoupdate vehicles. This package only includes the game engine. When you start
1923 it you will be prompted to download a graphics set.")
1924 (home-page "http://openttd.org/")
1925 ;; This package is GPLv2, except for a few files located in
1926 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
1927 ;; licenses. In addition, this software contains an in-game downloader
1928 ;; from which the user may find non-functional data licensed under
1929 ;; different terms.
1930 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
1931
1932 ;; TODO Add 'openttd-opengfx' and 'openttd-openmsx' packages and make
1933 ;; 'openttd' a wrapper around them. The engine is playable by itself,
1934 ;; but it asks a user to download graphics if it's not found.
1935
1936 (define-public openttd
1937 (package
1938 (inherit openttd-engine)
1939 (name "openttd")))
1940
1941 (define-public pinball
1942 (package
1943 (name "pinball")
1944 (version "0.3.1")
1945 (source
1946 (origin (method url-fetch)
1947 (uri (string-append "mirror://sourceforge/pinball/pinball/"
1948 "pinball-" version "/"
1949 "pinball-" version ".tar.gz"))
1950 (sha256
1951 (base32
1952 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
1953 (patches (search-patches "pinball-const-fix.patch"
1954 "pinball-cstddef.patch"
1955 "pinball-missing-separators.patch"
1956 "pinball-src-deps.patch"
1957 "pinball-system-ltdl.patch"))))
1958 (build-system gnu-build-system)
1959 (inputs
1960 `(("glu" ,glu)
1961 ("mesa" ,mesa)
1962 ("sdl" ,sdl)
1963 ("sdl-image" ,sdl-image)
1964 ("sdl-mixer" ,sdl-mixer)))
1965 (arguments
1966 '(#:configure-flags
1967 (list (string-append "CPPFLAGS=-I"
1968 (assoc-ref %build-inputs "sdl-image")
1969 "/include/SDL -I"
1970 (assoc-ref %build-inputs "sdl-mixer")
1971 "/include/SDL"))))
1972 (home-page "http://pinball.sourceforge.net")
1973 (synopsis "Pinball simulator")
1974 (description "The Emilia Pinball Project is a pinball simulator. There
1975 are only two levels to play with, but they are very addictive.")
1976 (license license:gpl2)))
1977
1978 (define-public pioneers
1979 (package
1980 (name "pioneers")
1981 (version "15.3")
1982 (source (origin
1983 (method url-fetch)
1984 (uri (string-append "http://downloads.sourceforge.net/pio/"
1985 "pioneers-" version ".tar.gz"))
1986 (sha256
1987 (base32
1988 "128s718nnraiznbg2rajjqb7cfkdg24hy6spdd9narb4f4dsbbv9"))))
1989 (build-system gnu-build-system)
1990 (inputs `(("gtk+" ,gtk+)
1991 ("librsvg" ,librsvg)
1992 ("avahi" ,avahi)))
1993 (native-inputs `(("intltool" ,intltool)
1994 ("pkg-config" ,pkg-config)))
1995 (synopsis "Board game inspired by The Settlers of Catan")
1996 (description "Pioneers is an emulation of the board game The Settlers of
1997 Catan. It can be played on a local network, on the internet, and with AI
1998 players.")
1999 (home-page "http://pio.sourceforge.net/")
2000 (license license:gpl2+)))
2001
2002 (define-public desmume
2003 (package
2004 (name "desmume")
2005 (version "0.9.11")
2006 (source
2007 (origin
2008 (method url-fetch)
2009 (uri (string-append
2010 "mirror://sourceforge/desmume/desmume/"
2011 version "/desmume-" version ".tar.gz"))
2012 (sha256
2013 (base32
2014 "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
2015 (build-system gnu-build-system)
2016 (arguments
2017 ;; Enable support for WiFi and microphone.
2018 `(#:configure-flags '("--enable-wifi"
2019 "--enable-openal")))
2020 (native-inputs
2021 `(("pkg-config" ,pkg-config)
2022 ("intltool" ,intltool)))
2023 (inputs
2024 `(("zlib" ,zlib)
2025 ("sdl" ,sdl)
2026 ("glib" ,glib)
2027 ("gtk+" ,gtk+-2)
2028 ("glu" ,glu)))
2029 (home-page "http://desmume.org/")
2030 (synopsis "Nintendo DS emulator")
2031 (description
2032 "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
2033 (license license:gpl2)))
2034
2035 (define-public einstein
2036 (package
2037 (name "einstein")
2038 (version "2.0")
2039 (source (origin
2040 (method url-fetch)
2041 (uri (string-append "http://http.debian.net/debian/pool/main/e/"
2042 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
2043 (sha256
2044 (base32
2045 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
2046 (patches (search-patches "einstein-build.patch"))))
2047 (build-system gnu-build-system)
2048 (inputs
2049 `(("freetype" ,freetype)
2050 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
2051 ("zlib" ,zlib)))
2052 (native-inputs
2053 `(("font-dejavu" ,font-dejavu)))
2054 (arguments
2055 `(#:tests? #f ; no check target
2056 #:phases
2057 (modify-phases %standard-phases
2058 (replace 'configure
2059 (lambda* (#:key outputs inputs #:allow-other-keys)
2060 (let ((out (assoc-ref outputs "out"))
2061 (dejavu (string-append (assoc-ref inputs "font-dejavu")
2062 "/share/fonts/truetype/DejaVuSans.ttf")))
2063 (substitute* "Makefile"
2064 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
2065 ;; The patch above registers a free font for use by the binary,
2066 ;; but the font is copied during the compile phase into a
2067 ;; resources file, so we need to make the ttf file available.
2068 (symlink dejavu "res/DejaVuSans.ttf")
2069 #t))))))
2070 (synopsis "Logic puzzle game")
2071 (description "The goal of this logic game is to open all cards in a 6x6
2072 grid, using a number of hints as to their relative position. The game idea
2073 is attributed to Albert Einstein.")
2074 ;; The original home page has disappeared.
2075 (home-page (string-append "http://web.archive.org/web/20120521062745/"
2076 "http://games.flowix.com/en/index.html"))
2077 ;; License according to
2078 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
2079 ;; The source code is a DFSG-sanitized tarball and does not contain any
2080 ;; license information.
2081 (license license:gpl3+)))
2082
2083 (define-public powwow
2084 (package
2085 (name "powwow")
2086 (version "1.2.17")
2087 (source (origin
2088 (method url-fetch)
2089 (uri (string-append
2090 "http://www.hoopajoo.net/static/projects/powwow-"
2091 version ".tar.gz"))
2092 (file-name (string-append name "-" version ".tar.gz"))
2093 (sha256
2094 (base32
2095 "1xmsg2y7qcvj67i9ilnih0mvfxcpni7fzrz343x9rdfnkkzf3pp8"))))
2096 (inputs
2097 `(("ncurses" ,ncurses)))
2098 (build-system gnu-build-system)
2099 (home-page "http://www.hoopajoo.net/projects/powwow.html")
2100 (synopsis "MUD and telnet client")
2101 (description
2102 "POWWOW is a client software which can be used for telnet as well as for
2103 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
2104 the chat server psyced with the specific config located at
2105 http://lavachat.symlynx.com/unix/")
2106 (license license:gpl2+)))
2107
2108 (define-public red-eclipse
2109 (let ((data-sources
2110 '(("acerspyro" "0s6q56i5marpm67lx70g5109lir5d6r45y45i8kbz6arc1spa7pp")
2111 ("actors" "0jclmciz64i81ngxwbag8x5m8wvxkhraa9c7plix566y6rh28fv1")
2112 ("appleflap" "1iz5igzdksamldhy0zh4vdjkxqhmg5c0n5g64pd3kan6h8vlbkq4")
2113 ("blendbrush" "1hz3x5npp25dixcadp020xyahmd1i3ihs4cdf77iy84i9njbp7bv")
2114 ("caustics" "05sbj46lrc6lkf7j6ls6jwc21n0qzxvfhfy9j7hdw482p9gvz54h")
2115 ("crosshairs" "05vfxc6vm91dyf1kzig550fglgydp9szl9135q677lk4g60w5dfh")
2116 ("elyvisions" "0fzdbxc40ggqmv4v1llx6sys2gjc6l1nxsbi5scpxqvm86dbddi9")
2117 ("fonts" "0sbvnd96aip49dy1ja01s36p8fwwczibpic7myfw1frs110m0zgr")
2118 ("freezurbern" "0k60dzzq42mfq360qf7bsf4alhy6k5gjfaidg2i1wsz5zssgmqwn")
2119 ("john" "1ln9v8vfm0ggavvdyl438cy4mizzm1i87r9msx1sbja30q8f57c1")
2120 ("jojo" "0cdgl82s4bm6qlv07fsq5l7anbywvvw13d0mng831yn6scf0hxb1")
2121 ("jwin" "0yg5vriffyckgfjmi4487sw07hsp44b3gfw90f0v4jsgbjjm2v20")
2122 ("luckystrike" "0f82caq09znsr9m08qnlbh3jl9j5w0ysga0b7d5ayqr5lpqxfk9k")
2123 ("maps" "14m23h3mip12anhx7i9k5xlapwkjbw4n0l7lj1b7dfcimf71gjll")
2124 ("mayhem" "0dxrr6craqi7ag724qfj9y0lb0pmwyrfpap02cndmjbbacdya0ra")
2125 ("mikeplus64" "040giyrk3hdd26sxhdx37q4mk923g5v3jbrinq1fw2yfvsl6n1cs")
2126 ("misc" "07xfs9hngshg27rl2vf65nyxilgnak3534h8msaan0fjgmzvlk0q")
2127 ("nobiax" "1n3nghi5426r2zav4rsfih8gn37sfa85absvhdwhir8wycsvbkh6")
2128 ("particles" "0yj0nykal3fgxx50278xl2zn2bfz09wbrjcvng56aa6hhfiwp8gd")
2129 ("philipk" "1m3krkxq9hsknbmxg1g5sgnpcv7c8c2q7zpbizw2wb3dir8snvcj")
2130 ("projectiles" "05swvalja7vzqc3dlk136n5b5kdzn3a8il6bg1h12alcaa0k9rba")
2131 ("props" "1cqi6gw5s4z5pj06x6kiiilh4if0hm1yrbqys5dln23mcvw8f0ny")
2132 ("skyboxes" "1mm6xl89b0l98l2h3qn99id7svmpwr940bydgjbcrvlx21yqdric")
2133 ("sounds" "03q7jazf0chszyiaa9cxirbwdnckcp5fl812sj42lv0z4sqz222l")
2134 ("textures" "1caqyxa9xkrwpyhac65akdv1l7nqychgz7zfivasnskk2yy6jani")
2135 ("torley" "1hp8lkzqmdqyq3jn9rains32diw11gg1w3dxxlln5pc041cd7vil")
2136 ("trak" "0wlczjax33q0hz75lgc4qnxlm592pcxgnbkin5qrglv59nrxzxyr")
2137 ("ulukai" "0dkn7qxf92sidhsy4sm4v5z54n449a2z2w9qax5cfgzs78kb5c34")
2138 ("unnamed" "0p9mmfp0vplmswyxh8qab33phcl8lzmzh3mms4f7i587hppdg6db")
2139 ("vanities" "1w23853lmvj4kx5cbxvb5dk598jiqz7ml2bm0qiy7idkf5mcd2lv")
2140 ("vegetation" "0jw1ljhmv62fzvklid6i8syiacmrs075cp7r3gc069bg4fg47cpn")
2141 ("weapons" "1p64ry1s4y7hkgm6i2rdk2x78368359wvx8v81gg179p3sjnjkww")
2142 ("wicked" "1kmpy2n15lyh50rqjspyfg3qrc72jf0n3dx2y3ian7pjfp6ldxd9"))))
2143 (package
2144 (name "red-eclipse")
2145 (version "1.5.5")
2146 (source (origin
2147 (method url-fetch)
2148 (uri (string-append "https://github.com/red-eclipse/base"
2149 "/archive/v" version ".tar.gz"))
2150 (file-name (string-append name "-" version ".tar.gz"))
2151 (sha256
2152 (base32
2153 "0xl3655876i8j5nixy0yp73s0yw9nwysj68fyhqs2agmvshryy96"))))
2154 (build-system gnu-build-system)
2155 (arguments
2156 `(#:tests? #f ; no check target
2157 #:make-flags (list "CC=gcc" "-Csrc"
2158 (string-append "INSTDIR="
2159 (assoc-ref %outputs "out") "/bin"))
2160 #:phases
2161 (modify-phases %standard-phases
2162 (add-after 'unpack 'unpack-data
2163 (lambda* (#:key inputs #:allow-other-keys)
2164 (delete-file-recursively "data")
2165 (mkdir "data")
2166 (for-each (lambda (name)
2167 (system* "tar" "-xvf"
2168 (assoc-ref inputs name)
2169 "-Cdata"
2170 "--transform"
2171 (string-append "s/"
2172 name "-1.5.3/"
2173 name "/")))
2174 (list ,@(map car data-sources)))
2175 #t))
2176 (delete 'configure) ; no configure script
2177 (add-after 'set-paths 'set-sdl-paths
2178 (lambda* (#:key inputs #:allow-other-keys)
2179 (setenv "CPATH"
2180 (string-append (assoc-ref inputs "sdl-union")
2181 "/include/SDL2"))
2182 #t))
2183 (add-after 'install 'copy-data
2184 (lambda* (#:key outputs #:allow-other-keys)
2185 (let ((out (assoc-ref outputs "out")))
2186 (copy-recursively "config"
2187 (string-append out "/config"))
2188 (copy-recursively "data"
2189 (string-append out "/data")))
2190 #t))
2191 (add-after 'copy-data 'wrap-program
2192 (lambda* (#:key inputs outputs #:allow-other-keys)
2193 (let* ((out (assoc-ref outputs "out"))
2194 (bin (string-append out "/bin")))
2195 (with-directory-excursion bin
2196 (rename-file "redeclipse_linux"
2197 ".redeclipse_linux-real")
2198 (rename-file "redeclipse_server_linux"
2199 ".redeclipse_server_linux-real")
2200 (call-with-output-file "redeclipse_linux"
2201 (lambda (port)
2202 (format port "#!~a/bin/sh
2203 # Run the thing from its home, otherwise it just bails out.
2204 cd \"~a\"
2205 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
2206 (assoc-ref inputs "bash") ;implicit input
2207 (string-append out)
2208 (string-append bin))))
2209 (call-with-output-file "redeclipse_server_linux"
2210 (lambda (port)
2211 (format port "#!~a/bin/sh
2212 # Run the thing from its home, otherwise it just bails out.
2213 cd \"~a\"
2214 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
2215 (assoc-ref inputs "bash") ;implicit input
2216 (string-append out)
2217 (string-append bin))))
2218 (chmod "redeclipse_linux" #o555)
2219 (chmod "redeclipse_server_linux" #o555)))
2220 #t)))))
2221 (native-inputs `(("pkg-config" ,pkg-config)))
2222 (inputs
2223 `(("curl" ,curl)
2224 ("glu" ,glu)
2225 ("sdl-union" ,(sdl-union (list sdl2
2226 sdl2-image
2227 sdl2-mixer)))
2228 ;; Create origin records for the many separate data packages.
2229 ,@(map (match-lambda
2230 ((name hash)
2231 (list name
2232 (origin
2233 (method url-fetch)
2234 (uri (string-append
2235 "https://github.com/red-eclipse/"
2236 name "/archive/v" version ".tar.gz"))
2237 (sha256 (base32 hash))
2238 (file-name (string-append name "-" version
2239 ".tar.gz"))))))
2240 data-sources)))
2241 (home-page "http://redeclipse.net/")
2242 (synopsis "Arena shooter derived from the Cube 2 engine")
2243 (description
2244 "Red Eclipse is an arena shooter, created from the Cube2 engine.
2245 Offering an innovative parkour system and distinct but all potent weapons,
2246 Red Eclipse provides fast paced and accessible gameplay.")
2247 ;; The engine is under Zlib; data files are covered by the other
2248 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
2249 (license (list license:expat
2250 license:zlib
2251 license:cc-by-sa3.0
2252 license:cc-by3.0
2253 license:cc0)))))
2254
2255 (define-public higan
2256 (package
2257 (name "higan")
2258 (version "099")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (string-append
2263 "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
2264 version))
2265 (file-name (string-append name "-" version ".tar.gz"))
2266 (sha256
2267 (base32 "0xlzjqrd308hmg6yjzjkmxkkr9p3w387kf6yxyplb47jcbx2sq4n"))
2268 (patches (search-patches "higan-remove-march-native-flag.patch"))))
2269 (build-system gnu-build-system)
2270 (native-inputs
2271 `(("pkg-config" ,pkg-config)))
2272 (inputs
2273 `(("alsa-lib" ,alsa-lib)
2274 ("ao" ,ao)
2275 ("eudev" ,eudev)
2276 ("gtk+" ,gtk+-2)
2277 ("gtksourceview-2" ,gtksourceview-2)
2278 ("libxv" ,libxv)
2279 ("mesa" ,mesa)
2280 ("openal" ,openal)
2281 ("pulseaudio" ,pulseaudio)
2282 ("sdl" ,sdl)))
2283 (arguments
2284 '(#:phases
2285 (let ((build-phase (assoc-ref %standard-phases 'build))
2286 (install-phase (assoc-ref %standard-phases 'install)))
2287 (modify-phases %standard-phases
2288 ;; The higan build system has no configure phase.
2289 (delete 'configure)
2290 (add-before 'build 'chdir-to-higan
2291 (lambda _
2292 (chdir "higan")))
2293 (add-before 'install 'create-/share/applications
2294 (lambda* (#:key outputs #:allow-other-keys)
2295 (let ((out (assoc-ref outputs "out")))
2296 ;; It seems the author forgot to do this in the Makefile.
2297 (mkdir-p (string-append out "/share/applications")))))
2298 (add-after 'install 'chdir-to-icarus
2299 (lambda _
2300 (chdir "../icarus")))
2301 (add-after 'chdir-to-icarus 'build-icarus build-phase)
2302 (add-after 'build-icarus 'install-icarus install-phase)
2303 (add-after 'install-icarus 'wrap-higan-executable
2304 (lambda* (#:key inputs outputs #:allow-other-keys)
2305 (let* ((out (assoc-ref outputs "out"))
2306 (bin (string-append out "/bin"))
2307 (higan (string-append bin "/higan"))
2308 (higan-original (string-append higan "-original"))
2309 (bash (string-append (assoc-ref inputs "bash")
2310 "/bin/bash"))
2311 (coreutils (assoc-ref inputs "coreutils"))
2312 (mkdir (string-append coreutils "/bin/mkdir"))
2313 (cp (string-append coreutils "/bin/cp"))
2314 (cp-r (string-append cp " -r --no-preserve=mode")))
2315 ;; First, have the executable make sure ~/.local/share/higan
2316 ;; contains up to date files. Higan insists on looking there
2317 ;; for these data files.
2318 (rename-file higan higan-original)
2319 (with-output-to-file higan
2320 (lambda ()
2321 (display
2322 (string-append
2323 "#!" bash "\n"
2324 ;; higan doesn't respect $XDG_DATA_HOME
2325 mkdir " -p ~/.local/share\n"
2326 cp-r " " out "/share/higan ~/.local/share\n"
2327 "exec " higan-original))))
2328 (chmod higan #o555)
2329 ;; Second, make sure higan will find icarus in PATH.
2330 (wrap-program higan
2331 `("PATH" ":" prefix (,bin))))))))
2332 #:make-flags
2333 (list "compiler=g++"
2334 (string-append "prefix=" (assoc-ref %outputs "out")))
2335 ;; There is no test suite.
2336 #:tests? #f))
2337 (home-page "http://byuu.org/emulation/higan/")
2338 (synopsis "Nintendo multi-system emulator")
2339 (description
2340 "higan (formerly bsnes) is an emulator for multiple Nintendo video game
2341 consoles, including the Nintendo Entertainment System (NES/Famicom), Super
2342 Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy
2343 Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems
2344 Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
2345 ;; As noted in these files among more:
2346 ;; - icarus/icarus.cpp
2347 ;; - higan/emulator/emulator.hpp
2348 (license license:gpl3)))
2349
2350 (define-public grue-hunter
2351 (package
2352 (name "grue-hunter")
2353 (version "1.0")
2354 (source (origin
2355 (method url-fetch)
2356 (uri (string-append "https://jxself.org/" name ".tar.gz"))
2357 (sha256
2358 (base32
2359 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
2360 (build-system trivial-build-system) ; no Makefile.PL
2361 (arguments `(#:modules ((guix build utils))
2362 #:builder
2363 (begin
2364 (use-modules (guix build utils))
2365 (use-modules (srfi srfi-1))
2366
2367 (let* ((tarball (assoc-ref %build-inputs "tarball"))
2368 (perl (string-append (assoc-ref %build-inputs
2369 "perl")
2370 "/bin"))
2371 (gunzip (string-append (assoc-ref %build-inputs
2372 "gzip")
2373 "/bin/gunzip"))
2374 (tar (string-append (assoc-ref %build-inputs
2375 "tar")
2376 "/bin/tar"))
2377 (out (assoc-ref %outputs "out"))
2378 (bin (string-append out "/bin"))
2379 (doc (string-append out "/share/doc")))
2380 (begin
2381 (mkdir out)
2382 (copy-file tarball "grue-hunter.tar.gz")
2383 (zero? (system* gunzip "grue-hunter.tar.gz"))
2384 (zero? (system* tar "xvf" "grue-hunter.tar"))
2385
2386 (mkdir-p bin)
2387 (copy-file "grue-hunter/gh.pl"
2388 (string-append bin "/grue-hunter"))
2389 (patch-shebang (string-append bin "/grue-hunter")
2390 (list perl))
2391
2392 (mkdir-p doc)
2393 (copy-file "grue-hunter/AGPLv3.txt"
2394 (string-append doc "/grue-hunter")))))))
2395 (inputs `(("perl" ,perl)
2396 ("tar" ,tar)
2397 ("gzip" ,gzip)
2398 ("tarball" ,source)))
2399 (home-page "http://jxself.org/grue-hunter.shtml")
2400 (synopsis "Text adventure game")
2401 (description
2402 "Grue Hunter is a text adventure game written in Perl. You must make
2403 your way through an underground cave system in search of the Grue. Can you
2404 capture it and get out alive?")
2405 (license license:agpl3+)))
2406
2407 (define-public warzone2100
2408 (package
2409 (name "warzone2100")
2410 (version "3.1.5")
2411 (source (origin
2412 (method url-fetch)
2413 (uri (string-append "mirror://sourceforge/" name
2414 "/releases/" version "/" name "-" version
2415 ".tar.xz"))
2416 (sha256
2417 (base32
2418 "0hm49i2knvvg3wlnryv7h4m84s3qa7jfyym5yy6365sx8wzcrai1"))))
2419 (build-system gnu-build-system)
2420 (arguments
2421 `(#:phases (modify-phases %standard-phases
2422 (add-after 'set-paths 'set-sdl-paths
2423 (lambda* (#:key inputs #:allow-other-keys)
2424 (setenv "CPATH"
2425 (string-append (assoc-ref inputs "sdl-union")
2426 "/include/SDL"))
2427 #t)))))
2428 (native-inputs `(("pkg-config" ,pkg-config)
2429 ("unzip" ,unzip)
2430 ("zip" ,zip)))
2431 (inputs `(("fontconfig" ,fontconfig)
2432 ("freetype" ,freetype)
2433 ("fribidi" ,fribidi)
2434 ("glew" ,glew)
2435 ("libtheora" ,libtheora)
2436 ("libvorbis" ,libvorbis)
2437 ("libxrandr" ,libxrandr)
2438 ("openal" ,openal)
2439 ("physfs" ,physfs)
2440 ("qt", qt-4)
2441 ("quesoglc" ,quesoglc)
2442 ("sdl-union" ,(sdl-union))))
2443 (home-page "http://wz2100.net")
2444 (synopsis "3D Real-time strategy and real-time tactics game")
2445 (description
2446 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
2447 modes. An extensive tech tree with over 400 different technologies, combined
2448 with the unit design system, allows for a wide variety of possible units and
2449 tactics.")
2450 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
2451 (license (list license:bsd-3
2452 license:cc0
2453 license:cc-by-sa3.0
2454 license:expat
2455 license:gpl2+
2456 license:lgpl2.1+))))
2457
2458 (define-public starfighter
2459 (package
2460 (name "starfighter")
2461 (version "1.5.1.1")
2462 (source (origin
2463 (method url-fetch)
2464 (uri (string-append
2465 "mirror://savannah/starfighter/"
2466 (version-major+minor version) "/"
2467 name "-" version "-src.tar.gz"))
2468 (sha256
2469 (base32
2470 "1qc0hhw9m8sy3n9fips52c7aph3w8a8pdl4n45yaasgxzbvpn9xg"))))
2471 (build-system gnu-build-system)
2472 (arguments
2473 '(#:tests? #f ; no check target
2474 #:make-flags
2475 (let ((out (assoc-ref %outputs "out")))
2476 (list (string-append "PREFIX=" out)
2477 (string-append "BINDIR=" out "/bin/")))
2478 #:phases
2479 (modify-phases %standard-phases
2480 ;; no configure script
2481 (delete 'configure))))
2482 (native-inputs
2483 `(("pkg-config" ,pkg-config)))
2484 (inputs
2485 `(("sdl2" ,sdl2)
2486 ("sdl2-image" ,sdl2-image)
2487 ("sdl2-mixer" ,sdl2-mixer)))
2488 (home-page "http://starfighter.nongnu.org/")
2489 (synopsis "2D scrolling shooter game")
2490 (description
2491 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
2492 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
2493 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
2494 way, you will encounter new foes, make new allies, and assist local rebels
2495 in strikes against the evil corporation.")
2496 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
2497 (license (list license:gpl3+
2498 license:cc-by3.0
2499 license:cc-by-sa3.0
2500 license:cc0
2501 license:public-domain))))
2502
2503 (define-public chromium-bsu
2504 (package
2505 (name "chromium-bsu")
2506 (version "0.9.15.1")
2507 (source (origin
2508 (method url-fetch)
2509 (uri (string-append "mirror://sourceforge/" name
2510 "/Chromium B.S.U. source code/"
2511 name "-" version ".tar.gz"))
2512 (sha256
2513 (base32
2514 "01c4mki0rpz6wrqbf18fj4vd7axln5v0xqm80cyksbv63g04s6w6"))))
2515 (build-system gnu-build-system)
2516 (arguments
2517 `(#:phases (modify-phases %standard-phases
2518 (add-after 'set-paths 'set-sdl-paths
2519 (lambda* (#:key inputs #:allow-other-keys)
2520 (setenv "CPATH"
2521 (string-append (assoc-ref inputs "sdl-union")
2522 "/include/SDL"))
2523 #t)))))
2524 (native-inputs `(("pkg-config" ,pkg-config)))
2525 (inputs `(("glu" ,glu)
2526 ("quesoglc" ,quesoglc)
2527 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
2528 (home-page "http://chromium-bsu.sourceforge.net/")
2529 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
2530 (description
2531 "In this game you are the captain of the cargo ship Chromium B.S.U. and
2532 are responsible for delivering supplies to the troops on the front line. Your
2533 ship has a small fleet of robotic fighters which you control from the relative
2534 safety of the Chromium vessel.")
2535 ;; Clarified Artistic License for everything but sound, which is covered
2536 ;; by the Expat License.
2537 (license (list license:clarified-artistic license:expat))))
2538
2539 (define-public tuxpaint
2540 (package
2541 (name "tuxpaint")
2542 (version "0.9.22") ;keep VER_DATE below in sync
2543 (source
2544 (origin
2545 (method url-fetch)
2546 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
2547 version "/tuxpaint-" version ".tar.gz"))
2548 (sha256
2549 (base32
2550 "1qrbrdck9yxpcg3si6jb9i11w8lw9h4hqad0pfaxgyiniqpr7gca"))
2551 (modules '((guix build utils)))
2552 (snippet
2553 '(begin
2554 ;; Remove win32 directory which contains binary dll's and the
2555 ;; deprecated visualc directory.
2556 (for-each delete-file-recursively '("win32" "visualc"))
2557 (substitute* "Makefile"
2558 ;; Do not rely on $(GPERF) being an absolute file name
2559 (("\\[ -x \\$\\(GPERF\\) \\]")
2560 "$(GPERF) --version >/dev/null 2>&1"))))
2561 (patches (search-patches "tuxpaint-stamps-path.patch"))))
2562 (build-system gnu-build-system)
2563 (native-inputs
2564 `(("gperf" ,gperf)
2565 ("pkg-config" ,pkg-config)))
2566 (inputs
2567 `(("cairo" ,cairo)
2568 ("fribidi" ,fribidi)
2569 ("gettext" ,gnu-gettext)
2570 ("libpng" ,libpng)
2571 ("librsvg" ,librsvg)
2572 ("libpaper" ,libpaper)
2573 ("netpbm" ,netpbm)
2574 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
2575 ;; TODO: Use system fonts rather than those in data/fonts
2576 (arguments
2577 `(#:make-flags `("VER_DATE=2014-08-23"
2578 "GPERF=gperf" "CC=gcc"
2579 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
2580 ,(string-append "PREFIX=" %output)
2581 "GNOME_PREFIX=$(PREFIX)"
2582 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
2583 #:tests? #f ;No tests
2584 #:phases (modify-phases %standard-phases
2585 (delete 'configure) ;no configure phase
2586 (add-after 'install 'fix-import
2587 (lambda* (#:key inputs outputs #:allow-other-keys)
2588 (let* ((out (assoc-ref outputs "out"))
2589 (net (assoc-ref inputs "netpbm"))
2590 (tpi (string-append out "/bin/tuxpaint-import")))
2591 (substitute* tpi
2592 ;; Point to installation prefix so that the default
2593 ;; configure file is found.
2594 (("/usr/local") out))
2595 ;; tuxpaint-import uses a bunch of programs from
2596 ;; netpbm, so make sure it knows where those are
2597 (wrap-program tpi
2598 `("PATH" ":" prefix
2599 (,(string-append net "/bin"))))))))))
2600 (native-search-paths
2601 (list (search-path-specification
2602 (variable "TUXPAINT_STAMPS_PATH")
2603 (files '("share/tuxpaint/stamps")))))
2604 (home-page "http://www.tuxpaint.org")
2605 (synopsis "Drawing software for children")
2606 (description
2607 "Tux Paint is a free drawing program designed for young children (kids
2608 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
2609 and an encouraging cartoon mascot who helps guide children as they use the
2610 program. It provides a blank canvas and a variety of drawing tools to help
2611 your child be creative.")
2612 (license license:gpl2+)))
2613
2614 (define-public tuxpaint-stamps
2615 (package
2616 (name "tuxpaint-stamps")
2617 (version "2014.08.23")
2618 (source
2619 (origin
2620 (method url-fetch)
2621 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
2622 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
2623 "/tuxpaint-stamps-" version ".tar.gz"))
2624 (sha256
2625 (base32
2626 "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q"))))
2627 (build-system trivial-build-system)
2628 (native-inputs
2629 `(("tar" ,tar)
2630 ("gzip" ,gzip)))
2631 (arguments
2632 `(#:modules ((guix build utils))
2633 #:builder (begin
2634 (use-modules (guix build utils))
2635 (setenv "PATH"
2636 (string-append
2637 (assoc-ref %build-inputs "tar") "/bin" ":"
2638 (assoc-ref %build-inputs "gzip") "/bin"))
2639 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
2640 (chdir (string-append ,name "-" ,version))
2641 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
2642 (mkdir-p dir)
2643 (copy-recursively "stamps" dir)))))
2644 (home-page (package-home-page tuxpaint))
2645 (synopsis "Stamp images for Tux Paint")
2646 (description
2647 "This package contains a set of \"Rubber Stamp\" images which can be used
2648 with the \"Stamp\" tool within Tux Paint.")
2649 (license license:gpl2+)))
2650
2651 (define-public tuxpaint-config
2652 (package
2653 (name "tuxpaint-config")
2654 (version "0.0.13") ;keep VER_DATE below in sync
2655 (source
2656 (origin
2657 (method url-fetch)
2658 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
2659 version "/tuxpaint-config-" version ".tar.gz"))
2660 (sha256
2661 (base32
2662 "1z12s46mvy87qs3vgq9m0ki9pp21zqc52mmgphahpihw3s7haf6v"))))
2663 (build-system gnu-build-system)
2664 (native-inputs
2665 `(("gettext" ,gnu-gettext)))
2666 (inputs
2667 `(("fltk" ,fltk)
2668 ("libpaper" ,libpaper)
2669 ;; TODO: Should the following be propagated by fltk?
2670 ("libx11" ,libx11)
2671 ("libxft" ,libxft)
2672 ("mesa" ,mesa)))
2673 (arguments
2674 `(#:make-flags `("VER_DATE=2014-08-23"
2675 "CONFDIR=/etc/tuxpaint" ;don't write to store
2676 ,(string-append "PREFIX=" %output)
2677 "GNOME_PREFIX=$(PREFIX)")
2678 #:tests? #f ;no tests
2679 #:phases (modify-phases %standard-phases
2680 (delete 'configure) ;no configure phase
2681 (add-before 'install 'gzip-no-name
2682 (lambda* _
2683 (substitute* "Makefile"
2684 ;; tuxpaint-config compresses its own documentation;
2685 ;; make sure it uses flags for reproducibility.
2686 (("gzip") "gzip --no-name"))))
2687 (add-before 'install 'make-install-dirs
2688 (lambda* (#:key outputs #:allow-other-keys)
2689 (let ((out (assoc-ref outputs "out")))
2690 (mkdir-p (string-append out "/bin"))
2691 #t))))))
2692 (home-page (package-home-page tuxpaint))
2693 (synopsis "Configure Tux Paint")
2694 (description
2695 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
2696 (license license:gpl2))) ;no "or later" present