gnu: retroarch: Update to 1.6.8.
[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 © 2013 Nikita Karetnikov <nikita@karetnikov.org>
4 ;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu>
5 ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
6 ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
7 ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
8 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
9 ;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
10 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
11 ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
12 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
13 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
14 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
16 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
17 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
18 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
19 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
20 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
21 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
22 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
23 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
24 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
25 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
26 ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
27 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
28 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
29 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
30 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
31 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
32 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
33 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
34 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
35 ;;;
36 ;;; This file is part of GNU Guix.
37 ;;;
38 ;;; GNU Guix is free software; you can redistribute it and/or modify it
39 ;;; under the terms of the GNU General Public License as published by
40 ;;; the Free Software Foundation; either version 3 of the License, or (at
41 ;;; your option) any later version.
42 ;;;
43 ;;; GNU Guix is distributed in the hope that it will be useful, but
44 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
45 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46 ;;; GNU General Public License for more details.
47 ;;;
48 ;;; You should have received a copy of the GNU General Public License
49 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
50
51 (define-module (gnu packages games)
52 #:use-module (ice-9 match)
53 #:use-module ((guix licenses) #:prefix license:)
54 #:use-module (guix utils)
55 #:use-module (guix packages)
56 #:use-module (guix download)
57 #:use-module (guix git-download)
58 #:use-module (guix svn-download)
59 #:use-module (guix gexp)
60 #:use-module (gnu packages)
61 #:use-module (gnu packages algebra)
62 #:use-module (gnu packages autotools)
63 #:use-module (gnu packages backup)
64 #:use-module (gnu packages base)
65 #:use-module (gnu packages build-tools)
66 #:use-module (gnu packages admin)
67 #:use-module (gnu packages audio)
68 #:use-module (gnu packages avahi)
69 #:use-module (gnu packages boost)
70 #:use-module (gnu packages documentation)
71 #:use-module (gnu packages docbook)
72 #:use-module (gnu packages fltk)
73 #:use-module (gnu packages freedesktop)
74 #:use-module (gnu packages fribidi)
75 #:use-module (gnu packages game-development)
76 #:use-module (gnu packages gettext)
77 #:use-module (gnu packages ghostscript)
78 #:use-module (gnu packages gimp)
79 #:use-module (gnu packages gl)
80 #:use-module (gnu packages glib)
81 #:use-module (gnu packages gnome)
82 #:use-module (gnu packages gperf)
83 #:use-module (gnu packages gtk)
84 #:use-module (gnu packages guile)
85 #:use-module (gnu packages imagemagick)
86 #:use-module (gnu packages libcanberra)
87 #:use-module (gnu packages libedit)
88 #:use-module (gnu packages libunwind)
89 #:use-module (gnu packages haskell)
90 #:use-module (gnu packages mp3)
91 #:use-module (gnu packages music)
92 #:use-module (gnu packages icu4c)
93 #:use-module (gnu packages image)
94 #:use-module (gnu packages ncurses)
95 #:use-module (gnu packages netpbm)
96 #:use-module (gnu packages networking)
97 #:use-module (gnu packages ocaml)
98 #:use-module (gnu packages python)
99 #:use-module (gnu packages readline)
100 #:use-module (gnu packages textutils)
101 #:use-module (gnu packages xorg)
102 #:use-module (gnu packages pkg-config)
103 #:use-module (gnu packages databases)
104 #:use-module (gnu packages shells)
105 #:use-module (gnu packages sdl)
106 #:use-module (gnu packages swig)
107 #:use-module (gnu packages texinfo)
108 #:use-module (gnu packages check)
109 #:use-module (gnu packages fonts)
110 #:use-module (gnu packages fontutils)
111 #:use-module (gnu packages gstreamer)
112 #:use-module (gnu packages bash)
113 #:use-module (gnu packages perl)
114 #:use-module (gnu packages qt)
115 #:use-module (gnu packages compression)
116 #:use-module (gnu packages pulseaudio)
117 #:use-module (gnu packages linux)
118 #:use-module (gnu packages xiph)
119 #:use-module (gnu packages curl)
120 #:use-module (gnu packages lua)
121 #:use-module (gnu packages video)
122 #:use-module (gnu packages xml)
123 #:use-module (gnu packages tcl)
124 #:use-module (gnu packages xdisorg)
125 #:use-module (gnu packages tls)
126 #:use-module (gnu packages pcre)
127 #:use-module (gnu packages cyrus-sasl)
128 #:use-module (gnu packages messaging)
129 #:use-module (gnu packages upnp)
130 #:use-module (gnu packages wxwidgets)
131 #:use-module (gnu packages bison)
132 #:use-module (gnu packages flex)
133 #:use-module (gnu packages cmake)
134 #:use-module (gnu packages gnuzilla)
135 #:use-module (gnu packages icu4c)
136 #:use-module (gnu packages networking)
137 #:use-module (gnu packages web)
138 #:use-module (guix build-system gnu)
139 #:use-module (guix build-system haskell)
140 #:use-module (guix build-system python)
141 #:use-module (guix build-system cmake)
142 #:use-module (guix build-system trivial))
143
144 (define-public armagetronad
145 (package
146 (name "armagetronad")
147 (version "0.2.8.3.4")
148 (source (origin
149 (method url-fetch)
150 (uri (string-append "mirror://sourceforge/" name "/stable/"
151 version "/" name "-" version ".src.tar.gz"))
152 (sha256
153 (base32
154 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
155 (build-system gnu-build-system)
156 (inputs
157 `(("libxml2" ,libxml2)
158 ("sdl" ,sdl)
159 ("sdl-image" ,sdl-image)
160 ("freeglut" ,freeglut)
161 ("libpng" ,libpng)
162 ("libjpeg-turbo" ,libjpeg-turbo)))
163 (home-page "http://www.armagetronad.org")
164 (synopsis "Tron clone in 3D")
165 (description "Armagetron is a multiplayer game in 3d that attempts to
166 emulate and expand on the lightcycle sequence from the movie Tron. It's
167 an old school arcade game slung into the 21st century. Highlights include
168 a customizable playing arena, HUD, unique graphics, and AI bots. For the
169 more advanced player there are new game modes and a wide variety of physics
170 settings to tweak as well.")
171 (license license:gpl2+)))
172
173 (define-public cataclysm-dda
174 (package
175 (name "cataclysm-dda")
176 (version "0.C")
177 (source (origin
178 (method url-fetch)
179 (uri (string-append "https://github.com/CleverRaven/Cataclysm-DDA/"
180 "archive/" version ".tar.gz"))
181 (file-name (string-append name "-" version ".tar.gz"))
182 (sha256
183 (base32
184 "1xlajmgl9cviqyjpp5g5q4rbljy9gqc49v54bi8gpzr68s14gsb9"))
185 (modules '((guix build utils)))
186 (snippet
187 ;; Import cmath header for the std::pow function.
188 '(for-each (lambda (file)
189 (substitute* file
190 (("#include <math.h>")
191 "#include <cmath>")))
192 (find-files "src")))))
193 (build-system gnu-build-system)
194 (arguments
195 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
196 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1")
197 #:phases
198 (modify-phases %standard-phases
199 (replace 'configure
200 (lambda _
201 (substitute* "Makefile"
202 (("ncursesw5-config") "ncursesw6-config")
203 (("RELEASE_FLAGS = -Werror") "RELEASE_FLAGS ="))
204 #t))
205 (add-after 'build 'build-tiles
206 (lambda* (#:key make-flags outputs #:allow-other-keys)
207 ;; Change prefix directory and enable tile graphics and sound.
208 (zero?
209 (apply system* "make" "TILES=1" "SOUND=1"
210 (string-append "PREFIX="
211 (assoc-ref outputs "tiles"))
212 (cdr make-flags)))))
213 (add-after 'install 'install-tiles
214 (lambda* (#:key make-flags outputs #:allow-other-keys)
215 (zero?
216 (apply system* "make" "install" "TILES=1" "SOUND=1"
217 (string-append "PREFIX="
218 (assoc-ref outputs "tiles"))
219 (cdr make-flags))))))
220 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
221 ;; input in order to support tests.
222 #:tests? #f))
223 (outputs '("out"
224 "tiles")) ; For tile graphics and sound support.
225 (native-inputs
226 `(("gettext" ,gettext-minimal)
227 ("pkg-config" ,pkg-config)))
228 (inputs
229 `(("freetype" ,freetype)
230 ("libogg" ,libogg)
231 ("libvorbis" ,libvorbis)
232 ("ncurses" ,ncurses)
233 ("sdl2" ,sdl2)
234 ("sdl2-image", sdl2-image)
235 ("sdl2-ttf" ,sdl2-ttf)
236 ("sdl2-mixer" ,sdl2-mixer)))
237 (home-page "http://en.cataclysmdda.com/")
238 (synopsis "Survival horror roguelike video game")
239 (description
240 "Cataclysm: Dark Days Ahead is a roguelike set in a post-apocalyptic world.
241 Struggle to survive in a harsh, persistent, procedurally generated world.
242 Scavenge the remnants of a dead civilization for food, equipment, or, if you are
243 lucky, a vehicle with a full tank of gas to get you out of Dodge. Fight to
244 defeat or escape from a wide variety of powerful monstrosities, from zombies to
245 giant insects to killer robots and things far stranger and deadlier, and against
246 the others like yourself, that want what you have.")
247 (license license:cc-by-sa3.0)))
248
249 (define-public cowsay
250 (package
251 (name "cowsay")
252 (version "3.04")
253 (source (origin
254 (method url-fetch)
255 (uri (string-append "https://github.com/tnalpgge/"
256 "rank-amateur-cowsay/archive/"
257 name "-" version ".tar.gz"))
258 (sha256
259 (base32
260 "12w7apbf6a9qffk92r32b16w22na2fjcqbl32rn0n7zw5hrp3f6q"))))
261 (build-system gnu-build-system)
262 (arguments
263 `(#:phases
264 (modify-phases %standard-phases
265 (delete 'configure) ; no configure script
266 (delete 'build) ; nothing to be built
267 (replace 'install
268 (lambda* (#:key outputs #:allow-other-keys)
269 (zero? (system* "sh" "install.sh"
270 (assoc-ref outputs "out")))))
271 (delete 'check)
272 (add-after 'install 'check
273 (lambda* (#:key outputs #:allow-other-keys)
274 (zero? (system* (string-append (assoc-ref outputs "out")
275 "/bin/cowsay")
276 "We're done!")))))))
277 (inputs
278 `(("perl" ,perl)))
279 (home-page (string-append "https://web.archive.org/web/20071026043648/"
280 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
281 (synopsis "Speaking cow text filter")
282 (description "Cowsay is basically a text filter. Send some text into it,
283 and you get a cow saying your text. If you think a talking cow isn't enough,
284 cows can think too: all you have to do is run @command{cowthink}. If you're
285 tired of cows, a variety of other ASCII-art messengers are available.")
286 (license license:gpl3+)))
287
288 (define-public freedoom
289 (package
290 (name "freedoom")
291 (version "0.11.3")
292 (source (origin
293 (method url-fetch)
294 (uri (string-append "https://github.com/" name "/" name
295 "/archive/v" version ".tar.gz"))
296 (file-name (string-append name "-" version ".tar.gz"))
297 (sha256
298 (base32
299 "1bjijdfqhpazyifx1qda7scj7dry1azhjrnl8h8zn2vqfgdmlh0q"))))
300 (build-system gnu-build-system)
301 (arguments
302 '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out")))
303 #:parallel-build? #f
304 #:tests? #f ; no check target
305 #:phases
306 (modify-phases %standard-phases
307 (replace 'configure
308 (lambda* (#:key inputs outputs #:allow-other-keys)
309 (let* ((dejavu (assoc-ref inputs "font-dejavu"))
310 (freedoom (assoc-ref outputs "out"))
311 (wad-dir (string-append freedoom "/share/games/doom")))
312 ;; Replace the font-searching function in a shell
313 ;; script with a direct path to the required font.
314 ;; This is necessary because ImageMagick can only find the
315 ;; most basic fonts while in the build environment.
316 (substitute* "graphics/titlepic/create_caption"
317 (("font=\\$\\(find_font.*$")
318 (string-append
319 "font=" dejavu
320 "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n")))
321 ;; Make icon creation reproducible.
322 (substitute* "dist/Makefile"
323 (("freedm.png")
324 "-define png:exclude-chunks=date freedm.png")
325 (("freedoom1.png")
326 "-define png:exclude-chunks=date freedoom1.png")
327 (("freedoom2.png")
328 "-define png:exclude-chunks=date freedoom2.png"))
329 ;; Make sure that the install scripts know where to find
330 ;; the appropriate WAD files.
331 (substitute* "dist/freedoom"
332 (("IWAD=freedm.wad")
333 (string-append "IWAD=" wad-dir "/freedm.wad"))
334 (("IWAD=freedoom1.wad")
335 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
336 (("IWAD=freedoom2.wad")
337 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
338 #t))))))
339 (native-inputs
340 `(("asciidoc" ,asciidoc)
341 ("deutex" ,deutex)
342 ("font-dejavu" ,font-dejavu)
343 ("imagemagick" ,imagemagick)
344 ("python" ,python-2)))
345 (inputs
346 `(("prboom-plus" ,prboom-plus)))
347 (home-page "https://freedoom.github.io/")
348 (synopsis "Free content game based on the Doom engine")
349 (description
350 "The Freedoom project aims to create a complete free content first person
351 shooter game. Freedoom by itself is just the raw material for a game: it must
352 be paired with a compatible game engine (such as @code{prboom-plus}) to be
353 played. Freedoom complements the Doom engine with free levels, artwork, sound
354 effects and music to make a completely free game.")
355 (license license:bsd-3)))
356
357 (define-public gnubg
358 (package
359 (name "gnubg")
360 (version "1.02")
361 (source
362 (origin
363 (method url-fetch)
364 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
365 version ".000-sources." "tar.gz"))
366 (sha256
367 (base32
368 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
369 (build-system gnu-build-system)
370 (inputs `(("glib" ,glib)
371 ("readline" ,readline)
372 ("gtk+" ,gtk+-2)
373 ("mesa" ,mesa)
374 ("glu" ,glu)
375 ("gtkglext" ,gtkglext)
376 ("sqlite" ,sqlite)
377 ("libcanberra" ,libcanberra)))
378 (native-inputs `(("python-2" ,python-2)
379 ("pkg-config" ,pkg-config)))
380 (home-page "http://gnubg.org")
381 (synopsis "Backgammon game")
382 (description "The GNU backgammon application can be used for playing, analyzing and
383 teaching the game. It has an advanced evaluation engine based on artificial
384 neural networks suitable for both beginners and advanced players. In
385 addition to a command-line interface, it also features an attractive, 3D
386 representation of the playing board.")
387 (license license:gpl3+)))
388
389 (define-public gnubik
390 (package
391 (name "gnubik")
392 (version "2.4.3")
393 (source
394 (origin
395 (method url-fetch)
396 (uri (string-append "mirror://gnu/gnubik/gnubik-"
397 version ".tar.gz"))
398 (sha256
399 (base32
400 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
401 (build-system gnu-build-system)
402 (inputs `(("gtk+" ,gtk+-2)
403 ("mesa" ,mesa)
404 ("glu" ,glu)
405 ("libx11" ,libx11)
406 ("guile" ,guile-2.0)
407 ("gtkglext" ,gtkglext)))
408 (native-inputs `(("gettext" ,gettext-minimal)
409 ("pkg-config" ,pkg-config)))
410 (home-page "https://www.gnu.org/software/gnubik/")
411 (synopsis "3d Rubik's cube game")
412 (description
413 "GNUbik is a puzzle game in which you must manipulate a cube to make
414 each of its faces have a uniform color. The game is customizable, allowing
415 you to set the size of the cube (the default is 3x3) or to change the colors.
416 You may even apply photos to the faces instead of colors. The game is
417 scriptable with Guile.")
418 (license license:gpl3+)))
419
420 (define-public gnushogi
421 (package
422 (name "gnushogi")
423 (version "1.4.2")
424 (source
425 (origin
426 (method url-fetch)
427 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
428 version ".tar.gz"))
429 (sha256
430 (base32
431 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
432 (arguments `(#:tests? #f)) ;; No check target.
433 (build-system gnu-build-system)
434 (home-page "https://www.gnu.org/software/gnushogi/")
435 (synopsis "The game of Shogi (Japanese chess)")
436 (description "GNU Shogi is a program that plays the game Shogi (Japanese
437 Chess). It is similar to standard chess but this variant is far more complicated.")
438 (license license:gpl3+)))
439
440 (define-public ltris
441 (package
442 (name "ltris")
443 (version "1.0.19")
444 (source
445 (origin
446 (method url-fetch)
447 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
448 name "-" version ".tar.gz"))
449 (sha256
450 (base32
451 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
452 (build-system gnu-build-system)
453 (arguments
454 '(;; The code in LTris uses traditional GNU semantics for inline functions
455 #:configure-flags '("CFLAGS=-fgnu89-inline")
456 #:phases
457 (modify-phases %standard-phases
458 (add-after 'set-paths 'set-sdl-paths
459 (lambda* (#:key inputs #:allow-other-keys)
460 (setenv "CPATH"
461 (string-append (assoc-ref inputs "sdl-union")
462 "/include/SDL"))
463 #t)))))
464 (inputs
465 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
466 (home-page "http://lgames.sourceforge.net/LTris/")
467 (synopsis "Tetris clone based on the SDL library")
468 (description
469 "LTris is a tetris clone: differently shaped blocks are falling down the
470 rectangular playing field and can be moved sideways or rotated by 90 degree
471 units with the aim of building lines without gaps which then disappear (causing
472 any block above the deleted line to fall down). LTris has three game modes: In
473 Classic you play until the stack of blocks reaches the top of the playing field
474 and no new blocks can enter. In Figures the playing field is reset to a new
475 figure each level and later on tiles and lines suddenly appear. In Multiplayer
476 up to three players (either human or CPU) compete with each other sending
477 removed lines to all opponents. There is also a Demo mode in which you can
478 watch your CPU playing while enjoying a cup of tea!")
479 (license license:gpl2+)))
480
481 (define-public prboom-plus
482 (package
483 (name "prboom-plus")
484 (version "2.5.1.4")
485 (source (origin
486 (method url-fetch)
487 (uri (string-append "mirror://sourceforge/" name "/" name "/"
488 version "/" name "-" version ".tar.gz"))
489 (sha256
490 (base32
491 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
492 (modules '((guix build utils)))
493 (snippet
494 '(substitute* "src/version.c"
495 (("__DATE__") "")
496 (("__TIME__") "")))))
497 (build-system gnu-build-system)
498 (arguments
499 '(#:configure-flags '("--disable-cpu-opt")
500 #:make-flags `(,(string-append "gamesdir="
501 (assoc-ref %outputs "out") "/bin"))
502 #:phases
503 (modify-phases %standard-phases
504 (add-after 'set-paths 'set-sdl'paths
505 (lambda* (#:key inputs #:allow-other-keys)
506 (setenv "CPATH"
507 (string-append (assoc-ref inputs "sdl-union")
508 "/include/SDL"))
509 #t)))))
510 (inputs
511 `(("fluidsynth" ,fluidsynth)
512 ("glu" ,glu)
513 ("libmad" ,libmad)
514 ("libpng" ,libpng)
515 ("libvorbis" ,libvorbis)
516 ("pcre" ,pcre)
517 ("portmidi" ,portmidi)
518 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
519 (home-page "http://prboom-plus.sourceforge.net/")
520 (synopsis "Version of the classic 3D shoot'em'up game Doom")
521 (description
522 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
523 (license license:gpl2+)))
524
525 (define-public retux
526 (package
527 (name "retux")
528 (version "1.3.5")
529 (source (origin
530 (method url-fetch)
531 (uri (string-append "mirror://savannah/retux/"
532 (version-major+minor version) "/retux-"
533 version "-src.tar.gz"))
534 (sha256
535 (base32
536 "1pcrh3z16fl412r3k7xccrgika19ahb1xh90jihgl8yy7zza2i6p"))))
537 (build-system python-build-system)
538 (arguments
539 `(#:tests? #f ; no check target
540 #:phases
541 (modify-phases %standard-phases
542 ;; no setup.py script
543 (delete 'build)
544 (replace 'install
545 (lambda* (#:key outputs #:allow-other-keys)
546 (let* ((out (assoc-ref outputs "out"))
547 (bin (string-append out "/bin"))
548 (data (string-append out "/share/retux"))
549 (doc (string-append out "/share/doc/retux")))
550 (mkdir-p bin)
551
552 (substitute* "retux.py"
553 ;; Use the correct data directory.
554 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
555 (string-append "\"" data "\","))
556 ;; Use Python 3 so the patch-shebangs phase works properly.
557 ((".*python2.*") "#!/usr/bin/python3"))
558
559 (copy-file "retux.py" (string-append bin "/retux"))
560
561 (copy-recursively "data" data)
562
563 (install-file "COPYING" doc)))))))
564 (inputs
565 `(("python-sge-pygame" ,python-sge-pygame)
566 ("python-six" ,python-six)
567 ("python-xsge" ,python-xsge)))
568 (home-page "http://retux.nongnu.org")
569 (synopsis "Action platformer game")
570 (description
571 "ReTux is an action platformer loosely inspired by the Mario games,
572 utilizing the art assets from the @code{SuperTux} project.")
573 ;; GPL version 3 or later is the license for the code and some art.
574 ;; The rest of the licenses are for the art exclusively, as listed in
575 ;; data/LICENSES.
576 (license (list license:cc0
577 license:cc-by3.0
578 license:cc-by-sa3.0
579 license:cc-by-sa4.0
580 license:gpl2+
581 license:gpl3+))))
582
583 (define-public xshogi
584 (package
585 (name "xshogi")
586 (version "1.4.2")
587 (source
588 (origin
589 (method url-fetch)
590 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
591 version ".tar.gz"))
592 (sha256
593 (base32
594 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
595 (build-system gnu-build-system)
596 (inputs
597 `(("libxaw" ,libxaw)
598 ("libxt" ,libxt)))
599 (home-page "https://www.gnu.org/software/gnushogi/")
600 (synopsis "User interface for gnushogi")
601 (description "A graphical user interface for the package @code{gnushogi}.")
602 ;; Contains a copy of GPLv3 but the licence notices simply
603 ;; state "GNU General Public Licence" without specifying a version.
604 (license license:gpl1+)))
605
606 (define-public abbaye
607 (package
608 (name "abbaye")
609 (version "2.0.1")
610 (source
611 (origin
612 (method url-fetch)
613 (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/"
614 "archive/v" version ".tar.gz"))
615 (file-name (string-append name "-" version ".tar.gz"))
616 (sha256
617 (base32
618 "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3"))
619 (modules '((guix build utils)))
620 (snippet
621 ;; Unbundle fonts.
622 '(delete-file-recursively "fonts"))))
623 (build-system gnu-build-system)
624 (arguments
625 '(#:make-flags '("CC=gcc")
626 #:phases (modify-phases %standard-phases
627 (add-after 'set-paths 'set-sdl-paths
628 (lambda* (#:key inputs #:allow-other-keys)
629 (setenv "CPATH"
630 (string-append (assoc-ref inputs "sdl-union")
631 "/include/SDL"))))
632 (add-after 'patch-source-shebangs 'patch-makefile
633 (lambda* (#:key outputs #:allow-other-keys)
634 ;; Replace /usr with package output directory.
635 (substitute* "Makefile"
636 (("/usr") (assoc-ref outputs "out")))))
637 (add-before 'install 'make-install-dirs
638 (lambda* (#:key outputs #:allow-other-keys)
639 (let ((prefix (assoc-ref outputs "out")))
640 ;; Create directories that the makefile assumes exist.
641 (mkdir-p (string-append prefix "/bin"))
642 (mkdir-p (string-append prefix "/share/applications"))
643 (mkdir-p (string-append prefix "/share/pixmaps")))))
644 ;; No configure script.
645 (delete 'configure))
646 #:tests? #f)) ;; No check target.
647 (native-inputs `(("pkg-config" ,pkg-config)))
648 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
649 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
650 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
651 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
652 France. The Cathars, who preach about good Christian beliefs, were being
653 expelled by the Catholic Church out of the Languedoc region in France. One of
654 them, called Jean Raymond, found an old church in which to hide, not knowing
655 that beneath its ruins lay buried an ancient evil.")
656 (license license:gpl3)))
657
658 (define-public angband
659 (package
660 (name "angband")
661 (version "4.0.5")
662 (source
663 (origin
664 (method url-fetch)
665 (uri (string-append "http://rephial.org/downloads/4.0/"
666 "angband-" version ".tar.gz"))
667 (sha256
668 (base32
669 "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd"))
670 (modules '((guix build utils)))
671 (snippet
672 ;; So, some of the sounds/graphics/tilesets are under different
673 ;; licenses... some of them even nonfree! This is a console-only
674 ;; version of this package so we just remove them.
675 ;; In the future, if someone tries to make a graphical variant of
676 ;; this package, they can deal with that mess themselves. :)
677 '(begin
678 (for-each
679 (lambda (subdir)
680 (let ((lib-subdir (string-append "lib/" subdir)))
681 (delete-file-recursively lib-subdir)))
682 '("fonts" "icons" "sounds" "tiles"))
683 (substitute* "lib/Makefile"
684 ;; And don't try to invoke makefiles in the directories we removed
685 (("gamedata customize help screens fonts tiles sounds icons user")
686 "gamedata customize help screens user"))))))
687 (build-system gnu-build-system)
688 (arguments
689 `(#:tests? #f ;no check target
690 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
691 #:phases
692 (modify-phases %standard-phases
693 (add-after 'unpack 'autogen.sh
694 (lambda _
695 (substitute* "acinclude.m4"
696 (("ncursesw5-config") "ncursesw6-config"))
697 (zero? (system* "sh" "autogen.sh")))))))
698 (native-inputs
699 `(("autoconf" ,autoconf)
700 ("automake" ,automake)))
701 (inputs `(("ncurses" ,ncurses)))
702 (home-page "http://rephial.org/")
703 (synopsis "Dungeon exploration roguelike")
704 (description "Angband is a Classic dungeon exploration roguelike. Explore
705 the depths below Angband, seeking riches, fighting monsters, and preparing to
706 fight Morgoth, the Lord of Darkness.")
707 (license license:gpl2)))
708
709 (define-public pingus
710 (package
711 (name "pingus")
712 (version "0.7.6")
713 (source
714 (origin
715 (method url-fetch)
716 (uri (string-append "https://github.com/Pingus/pingus/archive/v"
717 version ".tar.gz"))
718 (file-name (string-append name "-" version ".tar.gz"))
719 (sha256
720 (base32
721 "0r9v6as5vi7skvvy7b0fcaimhdlzmik64pyy68plgljhsghqkkf4"))
722 (patches (search-patches "pingus-sdl-libs-config.patch"))))
723 (build-system gnu-build-system)
724 (native-inputs `(("pkg-config" ,pkg-config)
725 ("scons" ,scons)))
726 (inputs `(("sdl" ,sdl)
727 ("sdl-image" ,sdl-image)
728 ("sdl-mixer" ,sdl-mixer)
729 ("mesa" ,mesa)
730 ("glu" ,glu)
731 ("libpng" ,libpng)
732 ("boost" ,boost)))
733 (arguments
734 '(#:tests? #f ; no check target
735 #:phases
736 (modify-phases %standard-phases
737 (delete 'configure) ; no configure script
738 (replace 'install
739 (lambda* (#:key outputs #:allow-other-keys)
740 (zero? (system* "make" "install"
741 (string-append "PREFIX="
742 (assoc-ref outputs "out")))))))))
743 (home-page "http://pingus.seul.org/welcome.html")
744 (synopsis "Lemmings clone")
745 (description
746 "Pingus is a free Lemmings-like puzzle game in which the player takes
747 command of a bunch of small animals and has to guide them through levels.
748 Since the animals walk on their own, the player can only influence them by
749 giving them commands, like build a bridge, dig a hole, or redirect all animals
750 in the other direction. Multiple such commands are necessary to reach the
751 level's exit. The game is presented in a 2D side view.")
752 ;; Some source files are under bsd-3 and gpl2+ licenses.
753 (license license:gpl3+)))
754
755 (define-public talkfilters
756 (package
757 (name "talkfilters")
758 (version "2.3.8")
759 (source
760 (origin
761 (method url-fetch)
762 (uri (string-append "http://www.hyperrealm.com/" name "/"
763 name "-" version ".tar.gz"))
764 (sha256
765 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
766 (build-system gnu-build-system)
767 (home-page "https://www.gnu.org/software/talkfilters/")
768 (synopsis "Convert English text to humorous dialects")
769 (description "The GNU Talk Filters are programs that convert English text
770 into stereotyped or otherwise humorous dialects. The filters are provided as
771 a C library, so they can easily be integrated into other programs.")
772 (license license:gpl2+)))
773
774 (define-public cmatrix
775 (package
776 (name "cmatrix")
777 (version "1.2a")
778 (source
779 (origin
780 (method url-fetch)
781 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
782 ".tar.gz"))
783 (sha256
784 (base32
785 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
786 (build-system gnu-build-system)
787 (arguments
788 '(#:phases
789 (modify-phases %standard-phases
790 (replace 'configure
791 (lambda* (#:key outputs #:allow-other-keys)
792 ;; This old ‘configure’ script doesn't support
793 ;; variables passed as arguments.
794 (let ((out (assoc-ref outputs "out")))
795 (setenv "CONFIG_SHELL" (which "bash"))
796 (zero?
797 (system* "./configure"
798 (string-append "--prefix=" out)))))))))
799 (inputs `(("ncurses" ,ncurses)))
800 (home-page "http://www.asty.org/cmatrix")
801 (synopsis "Simulate the display from \"The Matrix\"")
802 (description "CMatrix simulates the display from \"The Matrix\" and is
803 based on the screensaver from the movie's website. It works with terminal
804 settings up to 132x300 and can scroll lines all at the same rate or
805 asynchronously and at a user-defined speed.")
806 (license license:gpl2+)))
807
808 (define-public chess
809 (package
810 (name "chess")
811 (version "6.2.5")
812 (source
813 (origin
814 (method url-fetch)
815 (uri (string-append "mirror://gnu/chess/gnuchess-" version
816 ".tar.gz"))
817 (sha256
818 (base32
819 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
820 (build-system gnu-build-system)
821 (home-page "https://www.gnu.org/software/chess/")
822 (synopsis "Full chess implementation")
823 (description "GNU Chess is a chess engine. It allows you to compete
824 against the computer in a game of chess, either through the default terminal
825 interface or via an external visual interface such as GNU XBoard.")
826 (license license:gpl3+)))
827
828 (define freedink-engine
829 (package
830 (name "freedink-engine")
831 (version "108.4")
832 (source (origin
833 (method url-fetch)
834 (uri (string-append "mirror://gnu/freedink/freedink-" version
835 ".tar.gz"))
836 (sha256
837 (base32
838 "08c51imfjfcydm7h0va09z8qfw5nc837bi2x754ni2z737hb5kw2"))))
839 (build-system gnu-build-system)
840 (arguments `(#:configure-flags '("--disable-embedded-resources")))
841 (native-inputs `(("gettext" ,gettext-minimal)
842 ("pkg-config" ,pkg-config)))
843 (inputs `(("sdl" ,sdl)
844 ("sdl-image" ,sdl-image)
845 ("sdl-mixer" ,sdl-mixer)
846 ("sdl-ttf" ,sdl-ttf)
847 ("sdl-gfx" ,sdl-gfx)
848 ("fontconfig" ,fontconfig)
849 ("check" ,check)))
850 (home-page "https://www.gnu.org/software/freedink/")
851 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
852 (description
853 "GNU FreeDink is a free and portable re-implementation of the engine
854 for the role-playing game Dink Smallwood. It supports not only the original
855 game data files but it also supports user-produced game mods or \"D-Mods\".
856 To that extent, it also includes a front-end for managing all of your D-Mods.")
857 (license license:gpl3+)))
858
859 (define freedink-data
860 (package
861 (name "freedink-data")
862 (version "1.08.20170401")
863 (source (origin
864 (method url-fetch)
865 (uri (string-append "mirror://gnu/freedink/freedink-data-"
866 version ".tar.xz"))
867 (sha256
868 (base32
869 "1zx7qywibhznj7bnz217404scr8dfh0xj24xjihnda5iapzz7lz8"))))
870 (build-system gnu-build-system)
871 (arguments
872 `(#:phases
873 (modify-phases %standard-phases
874 (delete 'configure) ; no configure script
875 (delete 'check)) ; no tests
876 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
877 (home-page "https://www.gnu.org/software/freedink/")
878 (synopsis "Game data for GNU Freedink")
879 (description
880 "This package contains the game data of GNU Freedink.")
881 (license license:gpl3+)))
882
883 ;; TODO: Add freedink-dfarc when there's a wxWidgets package.
884
885 (define-public freedink
886 ;; This is a wrapper that tells the engine where to find the data.
887 (package (inherit freedink-engine)
888 (name "freedink")
889 (build-system trivial-build-system)
890 (arguments
891 '(#:builder (begin
892 (use-modules (guix build utils))
893
894 (let* ((output (assoc-ref %outputs "out"))
895 (bin (string-append output "/bin"))
896 (executable (string-append bin "/freedink")))
897 (mkdir-p bin)
898 (call-with-output-file executable
899 (lambda (port)
900 (format port "#!~a/bin/sh
901 exec ~a/bin/freedink -refdir ~a/share/dink\n"
902 (assoc-ref %build-inputs "bash")
903 (assoc-ref %build-inputs "engine")
904 (assoc-ref %build-inputs "data"))
905 (chmod port #o777)))))
906 #:modules ((guix build utils))))
907 (inputs `(("engine" ,freedink-engine)
908 ("data" ,freedink-data)
909 ("bash" ,bash)))
910 (native-inputs '())))
911
912 (define-public xboard
913 (package
914 (name "xboard")
915 (version "4.9.1")
916 (source
917 (origin
918 (method url-fetch)
919 (uri (string-append "mirror://gnu/xboard/xboard-" version
920 ".tar.gz"))
921 (sha256
922 (base32
923 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
924 (build-system gnu-build-system)
925 (inputs
926 `(("gtk+" ,gtk+-2)
927 ("librsvg" ,librsvg)))
928 (native-inputs
929 `(("texinfo" ,texinfo)
930 ("pkg-config" ,pkg-config)))
931 (home-page "https://www.gnu.org/software/xboard/")
932 (synopsis "Graphical user interface for chess programs")
933 (description "GNU XBoard is a graphical board for all varieties of chess,
934 including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
935 and Makruk. Several lesser-known variants are also supported. It presents a
936 fully interactive graphical interface and it can load and save games in the
937 Portable Game Notation.")
938 (license license:gpl3+)))
939
940
941 (define-public xboing
942 (package
943 (name "xboing")
944 (version "2.4")
945 (source
946 (origin
947 (method url-fetch)
948 (uri (string-append "http://www.techrescue.org/xboing/xboing"
949 version ".tar.gz"))
950 (sha256
951 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))))
952 (arguments
953 `(#:tests? #f
954 #:phases
955 (modify-phases %standard-phases
956 (replace 'configure
957 (lambda* (#:key outputs #:allow-other-keys)
958
959 (substitute* "Imakefile"
960 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
961 (string-append "XPMINCLUDE = -I"
962 (assoc-ref %build-inputs "libxpm")
963 "/include/X11")))
964
965 (substitute* "Imakefile"
966 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
967
968 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
969
970 (zero? (system* "xmkmf" "-a"
971 (string-append "-DProjectRoot="
972 (assoc-ref outputs "out"))))))
973 (replace 'install
974 (lambda* (#:key outputs #:allow-other-keys)
975 (and
976 (zero? (system* "make" "install.man"))
977 (zero? (system* "make" "install"))))))))
978 (inputs `(("libx11" ,libx11)
979 ("libxext" ,libxext)
980 ("libxpm" ,libxpm)))
981 (native-inputs `(("imake" ,imake)
982 ("inetutils" ,inetutils)
983 ("makedepend" ,makedepend)))
984 (build-system gnu-build-system)
985 (home-page "http://www.techrescue.org/xboing")
986 (synopsis "Ball and paddle game")
987 (description "XBoing is a blockout type game where you have a paddle which
988 you control to bounce a ball around the game zone destroying blocks with a
989 proton ball. Each block carries a different point value. The more blocks you
990 destroy, the better your score. The person with the highest score wins.")
991 (license (license:x11-style "file://COPYING"
992 "Very similar to the X11 licence."))))
993
994 (define-public gtypist
995 (package
996 (name "gtypist")
997 (version "2.9.5")
998 (source (origin
999 (method url-fetch)
1000 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1001 version ".tar.xz"))
1002 (sha256
1003 (base32
1004 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1005 (modules '((guix build utils)))
1006 (snippet
1007 ;; We do not provide `ncurses.h' within an `ncursesw'
1008 ;; sub-directory, so patch the source accordingly. See
1009 ;; <http://bugs.gnu.org/19018>.
1010 '(for-each (lambda (file)
1011 (substitute* file
1012 (("ncursesw/ncurses.h")
1013 "ncurses.h")))
1014 (find-files "." "configure$|\\.c$")))))
1015 (build-system gnu-build-system)
1016 (inputs `(("ncurses" ,ncurses)
1017 ("perl" ,perl)))
1018 (home-page "https://www.gnu.org/software/gtypist/")
1019 (synopsis "Typing tutor")
1020 (description
1021 "GNU Typist is a universal typing tutor. It can be used to learn and
1022 practice touch-typing. Several tutorials are included; in addition to
1023 tutorials for the standard QWERTY layout, there are also tutorials for the
1024 alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1025 are primarily in English, however some in other languages are provided.")
1026 (license license:gpl3+)))
1027
1028 (define-public irrlicht
1029 (package
1030 (name "irrlicht")
1031 (version "1.8.4")
1032 (source (origin
1033 (method url-fetch)
1034 (uri (string-append
1035 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1036 (version-major+minor version)
1037 "/" version "/irrlicht-" version ".zip"))
1038 (sha256
1039 (base32
1040 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))))
1041 (build-system gnu-build-system)
1042 (arguments
1043 `(#:phases
1044 (modify-phases %standard-phases
1045 (add-after 'unpack 'fix-build-env
1046 (lambda* (#:key outputs #:allow-other-keys)
1047 (let ((out (assoc-ref outputs "out")))
1048 (substitute* "Makefile"
1049 (("INSTALL_DIR = /usr/local/lib")
1050 (string-append "INSTALL_DIR = " out "/lib")))
1051 ;; The Makefile assumes these directories exist.
1052 (mkdir-p (string-append out "/lib"))
1053 (mkdir-p (string-append out "/include")))))
1054 (replace 'unpack
1055 (lambda* (#:key source #:allow-other-keys)
1056 (and (zero? (system* "unzip" source))
1057 ;; The actual source is buried a few directories deep.
1058 (chdir (string-append "irrlicht-" ,version
1059 "/source/Irrlicht/")))))
1060 (delete 'configure)) ; no configure script
1061 #:tests? #f ; no check target
1062 #:make-flags '("CC=gcc" "sharedlib")))
1063 (native-inputs
1064 `(("unzip" ,unzip)))
1065 (inputs
1066 `(("mesa" ,mesa)
1067 ("glu" ,glu)))
1068 (synopsis "3D game engine written in C++")
1069 (description
1070 "The Irrlicht Engine is a high performance realtime 3D engine written in
1071 C++. Features include an OpenGL renderer, extensible materials, scene graph
1072 management, character animation, particle and other special effects, support
1073 for common mesh file formats, and collision detection.")
1074 (home-page "http://irrlicht.sourceforge.net/")
1075 (license license:zlib)))
1076
1077 (define-public mars
1078 ;; The latest release on SourceForge relies on an unreleased version of SFML
1079 ;; with a different API, so we take the latest version from the official
1080 ;; repository on Github.
1081 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
1082 (revision "1"))
1083 (package
1084 (name "mars")
1085 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
1086 (source (origin
1087 (method git-fetch)
1088 (uri (git-reference
1089 (url "https://github.com/thelaui/M.A.R.S..git")
1090 (commit commit)))
1091 (file-name (string-append name "-" version))
1092 (sha256
1093 (base32
1094 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
1095 (patches (search-patches "mars-sfml-2.3.patch"
1096 "mars-install.patch"))))
1097 (build-system cmake-build-system)
1098 (arguments
1099 `(#:tests? #f ; There are no tests
1100 #:phases
1101 (modify-phases %standard-phases
1102 (add-after 'unpack 'fix-install-path
1103 (lambda _
1104 (substitute* "src/CMakeLists.txt"
1105 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
1106 "${CMAKE_INSTALL_PREFIX}/bin"))
1107 #t))
1108 (add-after 'unpack 'fix-data-path
1109 (lambda* (#:key outputs #:allow-other-keys)
1110 (substitute* "src/System/settings.cpp"
1111 (("C_dataPath = \"./data/\";")
1112 (string-append "C_dataPath = \""
1113 (assoc-ref outputs "out")
1114 "/share/games/marsshooter/\";")))
1115 #t)))))
1116 (inputs
1117 `(("mesa" ,mesa)
1118 ("fribidi" ,fribidi)
1119 ("taglib" ,taglib)
1120 ("sfml" ,sfml)))
1121 (home-page "http://marsshooter.org")
1122 (synopsis "2D space shooter")
1123 (description
1124 "M.A.R.S. is a 2D space shooter with pretty visual effects and
1125 attractive physics. Players can battle each other or computer controlled
1126 enemies in different game modes such as space ball, death match, team death
1127 match, cannon keep, and grave-itation pit.")
1128 (license license:gpl3+))))
1129
1130 (define minetest-data
1131 (package
1132 (name "minetest-data")
1133 (version "0.4.16")
1134 (source (origin
1135 (method url-fetch)
1136 (uri (string-append
1137 "https://github.com/minetest/minetest_game/archive/"
1138 version ".tar.gz"))
1139 (file-name (string-append name "-" version ".tar.gz"))
1140 (sha256
1141 (base32
1142 "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga"))))
1143 (build-system trivial-build-system)
1144 (native-inputs
1145 `(("source" ,source)
1146 ("tar" ,tar)
1147 ("gzip" ,(@ (gnu packages compression) gzip))))
1148 (arguments
1149 `(#:modules ((guix build utils))
1150 #:builder (begin
1151 (use-modules (guix build utils))
1152 (let ((tar (string-append (assoc-ref %build-inputs "tar")
1153 "/bin/tar"))
1154 (install-dir (string-append
1155 %output
1156 "/share/minetest/games/minetest_game"))
1157 (path (string-append (assoc-ref %build-inputs
1158 "gzip")
1159 "/bin")))
1160 (setenv "PATH" path)
1161 (system* tar "xvf" (assoc-ref %build-inputs "source"))
1162 (chdir (string-append "minetest_game-" ,version))
1163 (mkdir-p install-dir)
1164 (copy-recursively "." install-dir)))))
1165 (synopsis "Main game data for the Minetest game engine")
1166 (description
1167 "Game data for the Minetest infinite-world block sandox game.")
1168 (home-page "http://minetest.net")
1169 (license license:lgpl2.1+)))
1170
1171 (define-public minetest
1172 (package
1173 (name "minetest")
1174 (version "0.4.16")
1175 (source (origin
1176 (method url-fetch)
1177 (uri (string-append
1178 "https://github.com/minetest/minetest/archive/"
1179 version ".tar.gz"))
1180 (file-name (string-append name "-" version ".tar.gz"))
1181 (sha256
1182 (base32
1183 "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf"))))
1184 (build-system cmake-build-system)
1185 (arguments
1186 '(#:configure-flags
1187 (list "-DRUN_IN_PLACE=0"
1188 "-DENABLE_FREETYPE=1"
1189 "-DENABLE_GETTEXT=1"
1190 (string-append "-DIRRLICHT_INCLUDE_DIR="
1191 (assoc-ref %build-inputs "irrlicht")
1192 "/include/irrlicht")
1193 (string-append "-DCURL_INCLUDE_DIR="
1194 (assoc-ref %build-inputs "curl")
1195 "/include/curl"))
1196 #:tests? #f)) ; no check target
1197 (native-search-paths
1198 (list (search-path-specification
1199 (variable "MINETEST_SUBGAME_PATH")
1200 (files '("share/minetest/games")))))
1201 (native-inputs
1202 `(("pkg-config" ,pkg-config)))
1203 (inputs
1204 `(("irrlicht" ,irrlicht)
1205 ("libpng" ,libpng)
1206 ("libjpeg" ,libjpeg)
1207 ("libxxf86vm" ,libxxf86vm)
1208 ("mesa" ,mesa)
1209 ("libogg" ,libogg)
1210 ("libvorbis" ,libvorbis)
1211 ("openal" ,openal)
1212 ("freetype" ,(@ (gnu packages fontutils) freetype))
1213 ("curl" ,curl)
1214 ("luajit" ,luajit)
1215 ("gettext" ,gettext-minimal)
1216 ("sqlite" ,sqlite)))
1217 (propagated-inputs
1218 `(("minetest-data" ,minetest-data)))
1219 (synopsis "Infinite-world block sandbox game")
1220 (description
1221 "Minetest is a sandbox construction game. Players can create and destroy
1222 various types of blocks in a three-dimensional open world. This allows
1223 forming structures in every possible creation, on multiplayer servers or as a
1224 single player. Mods and texture packs allow players to personalize the game
1225 in different ways.")
1226 (home-page "http://minetest.net")
1227 (license license:lgpl2.1+)))
1228
1229 (define glkterm
1230 (package
1231 (name "glkterm")
1232 (version "1.0.4")
1233 (source
1234 (origin
1235 (method url-fetch)
1236 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
1237 "glk/implementations/glkterm-104.tar.gz"))
1238 (sha256
1239 (base32
1240 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
1241 (build-system gnu-build-system)
1242 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
1243 (arguments
1244 '(#:tests? #f ; no check target
1245 #:phases
1246 (modify-phases %standard-phases
1247 (replace 'install
1248 (lambda* (#:key outputs #:allow-other-keys)
1249 (let* ((out (assoc-ref outputs "out"))
1250 (inc (string-append out "/include"))
1251 (lib (string-append out "/lib")))
1252 (for-each
1253 (lambda (file)
1254 (install-file file inc))
1255 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
1256 (install-file "libglkterm.a" lib))
1257 #t))
1258 (delete 'configure)))) ; no configure script
1259 (home-page "http://www.eblong.com/zarf/glk/")
1260 (synopsis "Curses Implementation of the Glk API")
1261 (description
1262 "Glk defines a portable API for applications with text UIs. It was
1263 primarily designed for interactive fiction, but it should be suitable for many
1264 interactive text utilities, particularly those based on a command line.
1265 This is an implementation of the Glk library which runs in a terminal window,
1266 using the @code{curses.h} library for screen control.")
1267 (license (license:fsf-free "file://README"))))
1268
1269 (define-public glulxe
1270 (package
1271 (name "glulxe")
1272 (version "0.5.4")
1273 (source
1274 (origin
1275 (method url-fetch)
1276 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
1277 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
1278 (sha256
1279 (base32
1280 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
1281 (build-system gnu-build-system)
1282 (inputs `(("glk" ,glkterm)))
1283 (arguments
1284 '(#:tests? #f ; no check target
1285 #:make-flags
1286 (let* ((glk (assoc-ref %build-inputs "glk")))
1287 (list (string-append "GLKINCLUDEDIR=" glk "/include")
1288 (string-append "GLKLIBDIR=" glk "/lib")
1289 (string-append "GLKMAKEFILE=" "Make.glkterm")))
1290 #:phases
1291 (modify-phases %standard-phases
1292 (replace 'install
1293 (lambda* (#:key outputs #:allow-other-keys)
1294 (let* ((out (assoc-ref outputs "out"))
1295 (bin (string-append out "/bin")))
1296 (install-file "glulxe" bin))
1297 #t))
1298 (delete 'configure)))) ; no configure script
1299 (home-page "http://www.eblong.com/zarf/glulx/")
1300 (synopsis "Interpreter for Glulx VM")
1301 (description
1302 "Glulx is a 32-bit portable virtual machine intended for writing and
1303 playing interactive fiction. It was designed by Andrew Plotkin to relieve
1304 some of the restrictions in the venerable Z-machine format. This is the
1305 reference interpreter, using the Glk API.")
1306 (license license:expat)))
1307
1308 (define-public fizmo
1309 (package
1310 (name "fizmo")
1311 (version "0.8.4")
1312 (source (origin
1313 (method url-fetch)
1314 (uri (string-append "https://christoph-ender.de/fizmo/source/"
1315 name "-" version ".tar.gz"))
1316 (sha256
1317 (base32
1318 "1sd988db2302r7cbfcfghbmg8ck43c6hvnlnlpb0rqxb7pm9cwyy"))))
1319 (build-system gnu-build-system)
1320 (arguments
1321 '(#:configure-flags
1322 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
1323 (ncurses (assoc-ref %build-inputs "ncurses")))
1324 (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
1325 (string-append "jpeg_LIBS=-ljpeg")
1326 (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
1327 (string-append "ncursesw_LIBS=-lncursesw")))))
1328 (native-inputs
1329 `(("pkg-config" ,pkg-config)))
1330 (inputs
1331 `(("freetype" ,freetype)
1332 ("libjpeg" ,libjpeg)
1333 ("libpng" ,libpng)
1334 ("libsndfile" ,libsndfile)
1335 ("libxml2" ,libxml2)
1336 ("ncurses" ,ncurses)
1337 ("sdl2" ,sdl2)))
1338 (home-page "https://christoph-ender.de/fizmo/")
1339 (synopsis "Z-machine interpreter")
1340 (description
1341 "Fizmo is a console-based Z-machine interpreter. It is used to play
1342 interactive fiction, also known as text adventures, which were implemented
1343 either by Infocom or created using the Inform compiler.")
1344 (license license:bsd-3)))
1345
1346 (define-public retroarch
1347 (package
1348 (name "retroarch")
1349 (version "1.6.8")
1350 (source
1351 (origin
1352 (method url-fetch)
1353 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
1354 version ".tar.gz"))
1355 (file-name (string-append name "-" version ".tar.gz"))
1356 (sha256
1357 (base32 "129w73jz2c2jwm8cxv8q9d0jacdsam5x91gvydlcy8asd2dyhpn5"))))
1358 (build-system gnu-build-system)
1359 (arguments
1360 '(#:tests? #f ; no tests
1361 #:phases
1362 (modify-phases %standard-phases
1363 (replace 'configure
1364 (lambda* (#:key outputs #:allow-other-keys)
1365 (let* ((out (assoc-ref outputs "out"))
1366 (etc (string-append out "/etc")))
1367 (substitute* "qb/qb.libs.sh"
1368 (("/bin/true") (which "true")))
1369 ;; The configure script does not yet accept the extra arguments
1370 ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
1371 (zero? (system*
1372 "./configure"
1373 (string-append "--prefix=" out)
1374 (string-append "--global-config-dir=" etc)))))))))
1375 (inputs
1376 `(("alsa-lib" ,alsa-lib)
1377 ("ffmpeg" ,ffmpeg)
1378 ("freetype" ,freetype)
1379 ("libxinerama" ,libxinerama)
1380 ("libxkbcommon" ,libxkbcommon)
1381 ("libxml2" ,libxml2)
1382 ("libxv" ,libxv)
1383 ("mesa" ,mesa)
1384 ("openal" ,openal)
1385 ("pulseaudio" ,pulseaudio)
1386 ("python" ,python)
1387 ("sdl" ,sdl2)
1388 ("udev" ,eudev)
1389 ("wayland", wayland)
1390 ("zlib" ,zlib)))
1391 (native-inputs
1392 `(("pkg-config" ,pkg-config)
1393 ("which" ,which)))
1394 (home-page "https://www.libretro.com/")
1395 (synopsis "Reference frontend for the libretro API")
1396 (description
1397 "Libretro is a simple but powerful development interface that allows for
1398 the easy creation of emulators, games and multimedia applications that can plug
1399 straight into any libretro-compatible frontend. RetroArch is the official
1400 reference frontend for the libretro API, currently used by most as a modular
1401 multi-system game/emulator system.")
1402 (license license:gpl3+)))
1403
1404 (define-public gnugo
1405 (package
1406 (name "gnugo")
1407 (version "3.8")
1408 (source (origin
1409 (method url-fetch)
1410 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
1411 ".tar.gz"))
1412 (sha256
1413 (base32
1414 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
1415 (build-system gnu-build-system)
1416 (inputs `(("readline" ,readline)))
1417 (synopsis "Play the game of Go")
1418 (description
1419 "GNU Go is a program that plays the game of Go, in which players
1420 place stones on a grid to form territory or capture other stones. While
1421 it can be played directly from the terminal, rendered in ASCII characters,
1422 it is also possible to play GNU Go with 3rd party graphical interfaces or
1423 even in Emacs. It supports the standard game storage format (SGF, Smart
1424 Game Format) and inter-process communication format (GMP, Go Modem
1425 Protocol).")
1426 (home-page "https://www.gnu.org/software/gnugo/")
1427 (license license:gpl3+)))
1428
1429 (define-public extremetuxracer
1430 (package
1431 (name "extremetuxracer")
1432 (version "0.7.4")
1433 (source (origin
1434 (method url-fetch)
1435 (uri (string-append
1436 "mirror://sourceforge/extremetuxracer/releases/"
1437 version "/etr-" version ".tar.xz"))
1438 (sha256
1439 (base32
1440 "0d2j4ybdjmimg67v2fndgahgq4fvgz3fpfb3a4l1ar75n6hy776s"))))
1441 (build-system gnu-build-system)
1442 (native-inputs
1443 `(("pkg-config" ,pkg-config)))
1444 (inputs
1445 `(("glu" ,glu)
1446 ("sfml" ,sfml)))
1447 (synopsis "High speed arctic racing game based on Tux Racer")
1448 ;; Snarfed straight from Debian
1449 (description "Extreme Tux Racer, or etracer as it is called for short, is
1450 a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
1451 game is to slide down a snow- and ice-covered mountain as quickly as possible,
1452 avoiding the trees and rocks that will slow you down.
1453
1454 Collect herrings and other goodies while sliding down the hill, but avoid fish
1455 bones.
1456
1457 This game is based on the GPL version of the famous game TuxRacer.")
1458 (home-page "https://sourceforge.net/projects/extremetuxracer/")
1459 (license license:gpl2+)))
1460
1461 (define-public supertuxkart
1462 (package
1463 (name "supertuxkart")
1464 (version "0.9.2")
1465 (source
1466 (origin
1467 (method url-fetch)
1468 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
1469 version "/supertuxkart-" version "-src.tar.xz"))
1470 (sha256
1471 (base32
1472 "10l2ljmd7mv8f9ylarqmxxryicdnph2qkm3g5maxnsm2k2q0n20b"))
1473 (patches (search-patches "supertuxkart-angelscript-ftbfs.patch"))
1474 (modules '((guix build utils)))
1475 (snippet
1476 ;; Delete bundled library sources
1477 '(begin
1478 ;; FIXME: try to unbundle enet, and angelscript
1479 (for-each delete-file-recursively
1480 '("lib/zlib"
1481 "lib/libpng"
1482 "lib/jpeglib"
1483 "lib/glew"
1484 "lib/wiiuse"))
1485 (substitute* "CMakeLists.txt"
1486 ;; Supertuxkart uses modified versions of the Irrlicht engine
1487 ;; and the bullet library. The developers gave an explanation here:
1488 ;; http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
1489 (("add_subdirectory\\(.*/(glew|zlib)\"\\)") ""))
1490 #t))))
1491 (build-system cmake-build-system)
1492 (arguments
1493 `(#:tests? #f ; no check target
1494 #:configure-flags
1495 (list "-DUSE_WIIUSE=0"
1496 ;; Do not use the bundled zlib
1497 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
1498 ;; Irrlicht returns an integer instead of a boolean
1499 "-DCMAKE_C_FLAGS=-fpermissive")
1500 #:phases
1501 (modify-phases %standard-phases
1502 (add-after 'unpack 'unbundle
1503 (lambda* (#:key inputs #:allow-other-keys)
1504 (substitute* "CMakeLists.txt"
1505 (("glew")
1506 (string-append (assoc-ref inputs "glew")
1507 "/lib/libGLEW.a"))
1508 (("include_directories\\(\"\\$\\{PROJECT_SOURCE_DIR\\}/lib/glew/include\"\\)")
1509 (string-append "include_directories(\""
1510 (assoc-ref inputs "glew")
1511 "/include\")")))
1512 #t)))))
1513 (inputs
1514 `(("glew" ,glew)
1515 ("zlib" ,zlib)
1516 ("openal" ,openal)
1517 ("libvorbis" ,libvorbis)
1518 ("freetype" ,freetype)
1519 ("fribidi" ,fribidi)
1520 ("mesa" ,mesa)
1521 ("libx11" ,libx11)
1522 ("libxrandr" ,libxrandr)
1523 ("curl" ,curl)
1524 ;; The following input is needed to build the bundled and modified
1525 ;; version of irrlicht.
1526 ("libjpeg" ,libjpeg)))
1527 (native-inputs
1528 `(("pkg-config" ,pkg-config)))
1529 (home-page "http://supertuxkart.net")
1530 (synopsis "3D kart racing game")
1531 (description "SuperTuxKart is a 3D kart racing game, with a focus on
1532 having fun over realism. You can play with up to 4 friends on one PC, racing
1533 against each other or just trying to beat the computer; single-player mode is
1534 also available.")
1535 (license license:gpl3+)))
1536
1537 (define-public gnujump
1538 (package
1539 (name "gnujump")
1540 (version "1.0.8")
1541 (source (origin
1542 (method url-fetch)
1543 (uri (string-append "mirror://gnu/gnujump/gnujump-"
1544 version ".tar.gz"))
1545 (sha256
1546 (base32
1547 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
1548 (build-system gnu-build-system)
1549 (arguments
1550 '(#:phases
1551 (modify-phases %standard-phases
1552 (add-before
1553 'configure 'link-libm
1554 (lambda _ (setenv "LIBS" "-lm"))))))
1555 (inputs
1556 `(("glu" ,glu)
1557 ("mesa" ,mesa)
1558 ("sdl" ,sdl)
1559 ("sdl-image" ,sdl-image)
1560 ("sdl-mixer" ,sdl-mixer)))
1561 (home-page "http://gnujump.es.gnu.org/")
1562 (synopsis
1563 "Game of jumping to the next floor, trying not to fall")
1564 (description
1565 "GNUjump is a simple, yet addictive game in which you must jump from
1566 platform to platform to avoid falling, while the platforms drop at faster rates
1567 the higher you go. The game features multiplayer, unlimited FPS, smooth floor
1568 falling, themeable graphics and sounds, and replays.")
1569 (license license:gpl3+)))
1570
1571 (define-public wesnoth
1572 (package
1573 (name "wesnoth")
1574 (version "1.12.6")
1575 (source (origin
1576 (method url-fetch)
1577 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
1578 (version-major+minor version) "/wesnoth-"
1579 version "/"
1580 name "-" version ".tar.bz2"))
1581 (sha256
1582 (base32
1583 "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
1584 (build-system cmake-build-system)
1585 (arguments
1586 '(#:tests? #f ; no check target
1587 #:configure-flags
1588 ;; XXX: Failed to compile with '-Werror=old-style-cast'.
1589 ;; boost/mpl/assert.hpp:313:58: error:
1590 ;; use of old-style cast [-Werror=old-style-cast]
1591 ;; [...]
1592 ;; cc1plus: all warnings being treated as errors
1593 '("-DENABLE_STRICT_COMPILATION=OFF")))
1594 (native-inputs
1595 `(("gettext" ,gettext-minimal)
1596 ("pkg-config" ,pkg-config)))
1597 (inputs
1598 `(("boost" ,boost)
1599 ("dbus" ,dbus)
1600 ("fribidi" ,fribidi)
1601 ("libvorbis" ,libvorbis)
1602 ("pango" ,pango)
1603 ("sdl-image" ,sdl-image)
1604 ("sdl-mixer" ,sdl-mixer)
1605 ("sdl-net" ,sdl-net)
1606 ("sdl-ttf" ,sdl-ttf)))
1607 (home-page "http://www.wesnoth.org/")
1608 (synopsis "Turn-based strategy game")
1609 (description
1610 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
1611 with several single player campaigns, and multiplayer games (both networked and
1612 local).
1613
1614 Battle for control on a range of maps, using variety of units which have
1615 advantages and disadvantages against different types of attacks. Units gain
1616 experience and advance levels, and are carried over from one scenario to the
1617 next campaign.")
1618 (license license:gpl2+)))
1619
1620 (define-public dosbox
1621 (package
1622 (name "dosbox")
1623 (version "0.74.svn3947")
1624 (source (origin
1625 (method svn-fetch)
1626 (uri (svn-reference
1627 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1628 (revision 3947)))
1629 (file-name (string-append name "-" version "-checkout"))
1630 ;; Use SVN head, since the last release (2010) is incompatible
1631 ;; with GCC 4.8+ (see
1632 ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
1633 (sha256
1634 (base32
1635 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1636 (build-system gnu-build-system)
1637 (arguments
1638 `(#:phases (modify-phases %standard-phases
1639 (add-after
1640 'unpack 'autogen.sh
1641 (lambda _
1642 (zero? (system* "sh" "autogen.sh")))))))
1643 (native-inputs
1644 `(("autoconf" ,autoconf)
1645 ("automake" ,automake)))
1646 (inputs
1647 `(("sdl" ,sdl)
1648 ("libpng" ,libpng)
1649 ("zlib" ,zlib)
1650 ("alsa-lib" ,alsa-lib)
1651 ("glu" ,glu)
1652 ("mesa" ,mesa)))
1653 (home-page "http://www.dosbox.com")
1654 (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
1655 (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
1656 also emulates CPU:286/386 realmode/protected mode, Directory
1657 FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
1658 SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
1659 older games.")
1660 (license license:gpl2+)))
1661
1662 (define-public gamine
1663 (package
1664 (name "gamine")
1665 (version "1.5")
1666 (source (origin
1667 (method url-fetch)
1668 (uri (string-append "mirror://sourceforge/gamine-game/"
1669 "gamine-" version ".tar.gz"))
1670 (sha256
1671 (base32
1672 "08wnk7w84c2413hwny89j2cn89cvfdf67bfc6wl0bf475if0mf4h"))))
1673 (build-system gnu-build-system)
1674 (native-inputs
1675 `(("pkg-config" ,pkg-config)
1676 ("intltool" ,intltool)))
1677 (inputs
1678 `(("gstreamer" ,gstreamer)
1679 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1680 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1681 ("gtk+" ,gtk+)))
1682 (arguments
1683 `(#:tests? #f
1684 #:make-flags
1685 (let ((out (assoc-ref %outputs "out")))
1686 (list (string-append "PREFIX=" out)
1687 (string-append "SYSCONFDIR=" out "/etc")))
1688 #:phases
1689 (modify-phases %standard-phases
1690 (delete 'configure)
1691 (add-after
1692 'install 'wrap-gamine
1693 (lambda* (#:key outputs #:allow-other-keys)
1694 (let ((out (assoc-ref outputs "out"))
1695 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1696 (wrap-program (string-append out "/bin/gamine")
1697 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
1698 #t)))))
1699 (home-page "http://gamine-game.sourceforge.net/")
1700 (synopsis "Mouse and keyboard discovery for children")
1701 (description
1702 "Gamine is a game designed for young children who are learning to use the
1703 mouse and keyboard. The child uses the mouse to draw colored dots and lines
1704 on the screen and keyboard to display letters.")
1705 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
1706 (license license:gpl3)))
1707
1708 (define-public raincat
1709 (package
1710 (name "raincat")
1711 (version "1.1.1.3")
1712 (source
1713 (origin
1714 (method url-fetch)
1715 (uri (string-append
1716 "http://hackage.haskell.org/package/Raincat/Raincat-"
1717 version
1718 ".tar.gz"))
1719 (sha256
1720 (base32
1721 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
1722 (build-system haskell-build-system)
1723 (inputs
1724 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
1725 ("ghc-mtl" ,ghc-mtl)
1726 ("ghc-random" ,ghc-random)
1727 ("ghc-glut" ,ghc-glut)
1728 ("freeglut" ,freeglut)
1729 ("ghc-opengl" ,ghc-opengl)
1730 ("ghc-sdl" ,ghc-sdl)
1731 ("ghc-sdl-image" ,ghc-sdl-image)
1732 ("ghc-sdl-mixer" ,ghc-sdl-mixer)))
1733 (home-page "http://www.bysusanlin.com/raincat/")
1734 (synopsis "Puzzle game with a cat in lead role")
1735 (description "Project Raincat is a game developed by Carnegie Mellon
1736 students through GCS during the Fall 2008 semester. Raincat features game
1737 play inspired from classics Lemmings and The Incredible Machine. The project
1738 proved to be an excellent learning experience for the programmers. Everything
1739 is programmed in Haskell.")
1740 (license license:bsd-3)))
1741
1742 (define-public manaplus
1743 (package
1744 (name "manaplus")
1745 (version "1.7.6.10")
1746 (source (origin
1747 (method url-fetch)
1748 (uri (string-append
1749 "http://repo.manaplus.org/manaplus/download/"
1750 version "/manaplus-" version ".tar.xz"))
1751 (sha256
1752 (base32
1753 "0l7swvpzq20am4w2rsjpp6fsvbjv07il6wbfy45a7h9zsdihmqhl"))))
1754 (build-system gnu-build-system)
1755 (arguments
1756 '(#:configure-flags
1757 (list (string-append "CPPFLAGS=-I"
1758 (assoc-ref %build-inputs "sdl-union")
1759 "/include/SDL"))))
1760 (native-inputs
1761 `(("pkg-config" ,pkg-config)))
1762 (inputs
1763 `(("glu" ,glu)
1764 ("curl" ,curl)
1765 ("libxml2" ,libxml2)
1766 ("mesa" ,mesa)
1767 ("sdl-union" ,(sdl-union))))
1768 (home-page "http://manaplus.org")
1769 (synopsis "Client for 'The Mana World' and similar games")
1770 (description
1771 "ManaPlus is a 2D MMORPG client for game servers. It is the only
1772 fully supported client for @uref{http://www.themanaworld.org, The mana
1773 world}, @uref{http://evolonline.org, Evol Online} and
1774 @uref{http://landoffire.org, Land of fire}.")
1775 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
1776 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
1777 ;; The rest is under GPL2+.
1778 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
1779
1780 (define-public mupen64plus-core
1781 (package
1782 (name "mupen64plus-core")
1783 (version "2.5")
1784 (source
1785 (origin
1786 (method url-fetch)
1787 (uri (string-append
1788 "https://github.com/mupen64plus/mupen64plus-core/archive/"
1789 version ".tar.gz"))
1790 (file-name (string-append name "-" version ".tar.gz"))
1791 (sha256
1792 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
1793 (build-system gnu-build-system)
1794 (native-inputs
1795 `(("pkg-config" ,pkg-config)
1796 ("which" ,which)))
1797 (inputs
1798 `(("freetype" ,freetype)
1799 ("glu" ,glu)
1800 ("libpng" ,libpng)
1801 ("mesa" ,mesa)
1802 ("sdl2" ,sdl2)
1803 ("zlib" ,zlib)))
1804 (arguments
1805 '(#:phases
1806 (modify-phases %standard-phases
1807 ;; The mupen64plus build system has no configure phase.
1808 (delete 'configure)
1809 ;; Makefile is in a subdirectory.
1810 (add-before
1811 'build 'cd-to-project-dir
1812 (lambda _
1813 (chdir "projects/unix"))))
1814 #:make-flags (let ((out (assoc-ref %outputs "out")))
1815 (list "all" (string-append "PREFIX=" out)))
1816 ;; There are no tests.
1817 #:tests? #f))
1818 ;; As per the Makefile (in projects/unix/Makefile):
1819 (supported-systems '("i686-linux" "x86_64-linux"))
1820 (home-page "http://www.mupen64plus.org/")
1821 (synopsis "Nintendo 64 emulator core library")
1822 (description
1823 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1824 which is capable of accurately playing many games. This package contains the
1825 core library.")
1826 (license license:gpl2+)))
1827
1828 (define-public mupen64plus-audio-sdl
1829 (package
1830 (name "mupen64plus-audio-sdl")
1831 (version "2.5")
1832 (source
1833 (origin
1834 (method url-fetch)
1835 (uri (string-append
1836 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
1837 version ".tar.gz"))
1838 (file-name (string-append name "-" version ".tar.gz"))
1839 (sha256
1840 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
1841 (build-system gnu-build-system)
1842 (native-inputs
1843 `(("pkg-config" ,pkg-config)
1844 ("which" ,which)))
1845 (inputs
1846 `(("mupen64plus-core" ,mupen64plus-core)
1847 ("sdl2" ,sdl2)))
1848 (arguments
1849 '(#:phases
1850 (modify-phases %standard-phases
1851 ;; The mupen64plus build system has no configure phase.
1852 (delete 'configure)
1853 ;; Makefile is in a subdirectory.
1854 (add-before
1855 'build 'cd-to-project-dir
1856 (lambda _
1857 (chdir "projects/unix"))))
1858 #:make-flags
1859 (let ((out (assoc-ref %outputs "out"))
1860 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1861 (list "all"
1862 (string-append "PREFIX=" out)
1863 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1864 ;; There are no tests.
1865 #:tests? #f))
1866 (home-page "http://www.mupen64plus.org/")
1867 (synopsis "Mupen64Plus SDL input plugin")
1868 (description
1869 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1870 which is capable of accurately playing many games. This package contains the
1871 SDL audio plugin.")
1872 (license license:gpl2+)))
1873
1874 (define-public mupen64plus-input-sdl
1875 (package
1876 (name "mupen64plus-input-sdl")
1877 (version "2.5")
1878 (source
1879 (origin
1880 (method url-fetch)
1881 (uri (string-append
1882 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
1883 version ".tar.gz"))
1884 (file-name (string-append name "-" version ".tar.gz"))
1885 (sha256
1886 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
1887 (build-system gnu-build-system)
1888 (native-inputs
1889 `(("which" ,which)))
1890 (inputs
1891 `(("mupen64plus-core" ,mupen64plus-core)
1892 ("sdl2" ,sdl2)))
1893 (arguments
1894 '(#:phases
1895 (modify-phases %standard-phases
1896 ;; The mupen64plus build system has no configure phase.
1897 (delete 'configure)
1898 ;; Makefile is in a subdirectory.
1899 (add-before
1900 'build 'cd-to-project-dir
1901 (lambda _
1902 (chdir "projects/unix"))))
1903 #:make-flags
1904 (let ((out (assoc-ref %outputs "out"))
1905 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1906 (list "all"
1907 (string-append "PREFIX=" out)
1908 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1909 ;; There are no tests.
1910 #:tests? #f))
1911 (home-page "http://www.mupen64plus.org/")
1912 (synopsis "Mupen64Plus SDL input plugin")
1913 (description
1914 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1915 which is capable of accurately playing many games. This package contains the
1916 SDL input plugin.")
1917 (license license:gpl2+)))
1918
1919 (define-public mupen64plus-rsp-hle
1920 (package
1921 (name "mupen64plus-rsp-hle")
1922 (version "2.5")
1923 (source
1924 (origin
1925 (method url-fetch)
1926 (uri (string-append
1927 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
1928 version ".tar.gz"))
1929 (file-name (string-append name "-" version ".tar.gz"))
1930 (sha256
1931 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
1932 (build-system gnu-build-system)
1933 (inputs
1934 `(("mupen64plus-core" ,mupen64plus-core)))
1935 (arguments
1936 '(#:phases
1937 (modify-phases %standard-phases
1938 ;; The mupen64plus build system has no configure phase.
1939 (delete 'configure)
1940 ;; Makefile is in a subdirectory.
1941 (add-before
1942 'build 'cd-to-project-dir
1943 (lambda _
1944 (chdir "projects/unix"))))
1945 #:make-flags
1946 (let ((out (assoc-ref %outputs "out"))
1947 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1948 (list "all"
1949 (string-append "PREFIX=" out)
1950 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1951 ;; There are no tests.
1952 #:tests? #f))
1953 (home-page "http://www.mupen64plus.org/")
1954 (synopsis "Mupen64Plus SDL input plugin")
1955 (description
1956 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1957 which is capable of accurately playing many games. This package contains the
1958 high-level emulation (HLE) RSP processor plugin.")
1959 (license license:gpl2+)))
1960
1961 (define-public mupen64plus-rsp-z64
1962 (package
1963 (name "mupen64plus-rsp-z64")
1964 (version "2.0.0")
1965 (source
1966 (origin
1967 (method url-fetch)
1968 (uri (string-append
1969 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
1970 version ".tar.gz"))
1971 (file-name (string-append name "-" version ".tar.gz"))
1972 (sha256
1973 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
1974 (build-system gnu-build-system)
1975 (inputs
1976 `(("mupen64plus-core" ,mupen64plus-core)))
1977 (arguments
1978 '(#:phases
1979 (modify-phases %standard-phases
1980 ;; The mupen64plus build system has no configure phase.
1981 (delete 'configure)
1982 ;; Makefile is in a subdirectory.
1983 (add-before
1984 'build 'cd-to-project-dir
1985 (lambda _
1986 (chdir "projects/unix"))))
1987 #:make-flags
1988 (let ((out (assoc-ref %outputs "out"))
1989 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1990 (list "all"
1991 (string-append "PREFIX=" out)
1992 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1993 ;; There are no tests.
1994 #:tests? #f))
1995 (home-page "http://www.mupen64plus.org/")
1996 (synopsis "Mupen64Plus SDL input plugin")
1997 (description
1998 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1999 which is capable of accurately playing many games. This package contains the
2000 Z64 RSP processor plugin.")
2001 (license license:gpl2+)))
2002
2003 (define-public mupen64plus-video-arachnoid
2004 (package
2005 (name "mupen64plus-video-arachnoid")
2006 (version "2.0.0")
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (string-append
2011 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
2012 version ".tar.gz"))
2013 (file-name (string-append name "-" version ".tar.gz"))
2014 (sha256
2015 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
2016 (build-system gnu-build-system)
2017 (native-inputs
2018 `(("pkg-config" ,pkg-config)
2019 ("which" ,which)))
2020 (inputs
2021 `(("mesa" ,mesa)
2022 ("mupen64plus-core" ,mupen64plus-core)))
2023 (arguments
2024 '(#:phases
2025 (modify-phases %standard-phases
2026 ;; The mupen64plus build system has no configure phase.
2027 (delete 'configure)
2028 ;; Makefile is in a subdirectory.
2029 (add-before
2030 'build 'cd-to-project-dir
2031 (lambda _
2032 (chdir "projects/unix"))))
2033 #:make-flags
2034 (let ((out (assoc-ref %outputs "out"))
2035 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2036 (list "all"
2037 (string-append "PREFIX=" out)
2038 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2039 ;; There are no tests.
2040 #:tests? #f))
2041 (home-page "http://www.mupen64plus.org/")
2042 (synopsis "Mupen64Plus Rice Video plugin")
2043 (description
2044 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2045 which is capable of accurately playing many games. This package contains the
2046 Arachnoid video plugin.")
2047 (license license:gpl2+)))
2048
2049 (define-public mupen64plus-video-glide64
2050 (package
2051 (name "mupen64plus-video-glide64")
2052 (version "2.0.0")
2053 (source
2054 (origin
2055 (method url-fetch)
2056 (uri (string-append
2057 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
2058 version ".tar.gz"))
2059 (file-name (string-append name "-" version ".tar.gz"))
2060 (sha256
2061 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
2062 (build-system gnu-build-system)
2063 (native-inputs
2064 `(("pkg-config" ,pkg-config)
2065 ("which" ,which)))
2066 (inputs
2067 `(("mesa" ,mesa)
2068 ("mupen64plus-core" ,mupen64plus-core)
2069 ("sdl2" ,sdl2)))
2070 (arguments
2071 '(#:phases
2072 (modify-phases %standard-phases
2073 ;; The mupen64plus build system has no configure phase.
2074 (delete 'configure)
2075 ;; Makefile is in a subdirectory.
2076 (add-before
2077 'build 'cd-to-project-dir
2078 (lambda _
2079 (chdir "projects/unix")))
2080 ;; XXX Should be unnecessary with the next release.
2081 (add-before
2082 'build 'use-sdl2
2083 (lambda _
2084 (substitute* "Makefile"
2085 (("SDL_CONFIG = (.*)sdl-config" all prefix)
2086 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
2087 #:make-flags
2088 (let ((out (assoc-ref %outputs "out"))
2089 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2090 (list "all"
2091 (string-append "PREFIX=" out)
2092 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2093 ;; There are no tests.
2094 #:tests? #f))
2095 (home-page "http://www.mupen64plus.org/")
2096 (synopsis "Mupen64Plus Rice Video plugin")
2097 (description
2098 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2099 which is capable of accurately playing many games. This package contains the
2100 Glide64 video plugin.")
2101 (license license:gpl2+)))
2102
2103 (define-public mupen64plus-video-glide64mk2
2104 (package
2105 (name "mupen64plus-video-glide64mk2")
2106 (version "2.5")
2107 (source
2108 (origin
2109 (method url-fetch)
2110 (uri (string-append
2111 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
2112 version ".tar.gz"))
2113 (file-name (string-append name "-" version ".tar.gz"))
2114 (sha256
2115 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
2116 (build-system gnu-build-system)
2117 (native-inputs
2118 `(("pkg-config" ,pkg-config)
2119 ("which" ,which)))
2120 (inputs
2121 `(("boost" ,boost)
2122 ("libpng" ,libpng)
2123 ("mesa" ,mesa)
2124 ("mupen64plus-core" ,mupen64plus-core)
2125 ("sdl2" ,sdl2)
2126 ("zlib" ,zlib)))
2127 (arguments
2128 '(#:phases
2129 (modify-phases %standard-phases
2130 ;; The mupen64plus build system has no configure phase.
2131 (delete 'configure)
2132 ;; Makefile is in a subdirectory.
2133 (add-before
2134 'build 'cd-to-project-dir
2135 (lambda _
2136 (chdir "projects/unix"))))
2137 #:make-flags
2138 (let ((out (assoc-ref %outputs "out"))
2139 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2140 (list "all"
2141 (string-append "PREFIX=" out)
2142 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2143 ;; There are no tests.
2144 #:tests? #f))
2145 (home-page "http://www.mupen64plus.org/")
2146 (synopsis "Mupen64Plus Rice Video plugin")
2147 (description
2148 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2149 which is capable of accurately playing many games. This package contains the
2150 Glide64MK2 video plugin.")
2151 (license license:gpl2+)))
2152
2153 (define-public mupen64plus-video-rice
2154 (package
2155 (name "mupen64plus-video-rice")
2156 (version "2.5")
2157 (source
2158 (origin
2159 (method url-fetch)
2160 (uri (string-append
2161 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
2162 version ".tar.gz"))
2163 (file-name (string-append name "-" version ".tar.gz"))
2164 (sha256
2165 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
2166 (build-system gnu-build-system)
2167 (native-inputs
2168 `(("pkg-config" ,pkg-config)
2169 ("which" ,which)))
2170 (inputs
2171 `(("libpng" ,libpng)
2172 ("mesa" ,mesa)
2173 ("mupen64plus-core" ,mupen64plus-core)
2174 ("sdl2" ,sdl2)))
2175 (arguments
2176 '(#:phases
2177 (modify-phases %standard-phases
2178 ;; The mupen64plus build system has no configure phase.
2179 (delete 'configure)
2180 ;; Makefile is in a subdirectory.
2181 (add-before
2182 'build 'cd-to-project-dir
2183 (lambda _
2184 (chdir "projects/unix"))))
2185 #:make-flags
2186 (let ((out (assoc-ref %outputs "out"))
2187 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2188 (list "all"
2189 (string-append "PREFIX=" out)
2190 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2191 ;; There are no tests.
2192 #:tests? #f))
2193 (home-page "http://www.mupen64plus.org/")
2194 (synopsis "Mupen64Plus Rice Video plugin")
2195 (description
2196 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2197 which is capable of accurately playing many games. This package contains the
2198 Rice Video plugin.")
2199 (license license:gpl2+)))
2200
2201 (define-public mupen64plus-video-z64
2202 (package
2203 (name "mupen64plus-video-z64")
2204 (version "2.0.0")
2205 (source
2206 (origin
2207 (method url-fetch)
2208 (uri (string-append
2209 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
2210 version ".tar.gz"))
2211 (file-name (string-append name "-" version ".tar.gz"))
2212 (sha256
2213 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
2214 (build-system gnu-build-system)
2215 (native-inputs
2216 `(("pkg-config" ,pkg-config)
2217 ("which" ,which)))
2218 (inputs
2219 `(("glew" ,glew)
2220 ("mupen64plus-core" ,mupen64plus-core)
2221 ("sdl2" ,sdl2)))
2222 (arguments
2223 '(#:phases
2224 (modify-phases %standard-phases
2225 ;; The mupen64plus build system has no configure phase.
2226 (delete 'configure)
2227 ;; Makefile is in a subdirectory.
2228 (add-before
2229 'build 'cd-to-project-dir
2230 (lambda _
2231 (chdir "projects/unix")))
2232 ;; XXX Should be unnecessary with the next release.
2233 (add-before
2234 'build 'use-sdl2
2235 (lambda _
2236 (substitute* "Makefile"
2237 (("SDL_CONFIG = (.*)sdl-config" all prefix)
2238 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
2239 #:make-flags
2240 (let ((out (assoc-ref %outputs "out"))
2241 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2242 (list "all"
2243 (string-append "PREFIX=" out)
2244 (string-append "APIDIR=" m64p "/include/mupen64plus")))
2245 ;; There are no tests.
2246 #:tests? #f))
2247 (home-page "http://www.mupen64plus.org/")
2248 (synopsis "Mupen64Plus Z64 video plugin")
2249 (description
2250 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2251 which is capable of accurately playing many games. This package contains the
2252 Z64 video plugin.")
2253 (license license:gpl2+)))
2254
2255 (define-public mupen64plus-ui-console
2256 (package
2257 (name "mupen64plus-ui-console")
2258 (version "2.5")
2259 (source
2260 (origin
2261 (method url-fetch)
2262 (uri (string-append
2263 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
2264 version ".tar.gz"))
2265 (file-name (string-append name "-" version ".tar.gz"))
2266 (sha256
2267 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
2268 (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
2269 (build-system gnu-build-system)
2270 (native-inputs
2271 `(("pkg-config" ,pkg-config)
2272 ("which" ,which)))
2273 (inputs
2274 `(("sdl2" ,sdl2)))
2275 ;; Mupen64Plus supports a single data directory and a single plugin
2276 ;; directory in its configuration, yet we need data and plugin files from
2277 ;; a variety of packages. The best way to deal with this is to install
2278 ;; all packages from which data and plugin files are needed into one's
2279 ;; profile, and point the configuration there. Hence, propagate the most
2280 ;; important packages here to save the user from the bother. The patch
2281 ;; mupen64plus-ui-console-notice also gives users instructions on what
2282 ;; they need to do in order to point the configuration to their profile.
2283 (propagated-inputs
2284 `(("mupen64plus-core" ,mupen64plus-core)
2285 ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
2286 ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
2287 ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
2288 ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
2289 ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
2290 ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
2291 (arguments
2292 '(#:phases
2293 (modify-phases %standard-phases
2294 ;; The mupen64plus build system has no configure phase.
2295 (delete 'configure)
2296 ;; Makefile is in a subdirectory.
2297 (add-before
2298 'build 'cd-to-project-dir
2299 (lambda _
2300 (chdir "projects/unix"))))
2301 #:make-flags
2302 (let ((out (assoc-ref %outputs "out"))
2303 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2304 (list "all"
2305 (string-append "PREFIX=" out)
2306 (string-append "APIDIR=" m64p "/include/mupen64plus")
2307 ;; Trailing slash matters here.
2308 (string-append "COREDIR=" m64p "/lib/")))
2309 ;; There are no tests.
2310 #:tests? #f))
2311 (home-page "http://www.mupen64plus.org/")
2312 (synopsis "Mupen64Plus SDL input plugin")
2313 (description
2314 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2315 which is capable of accurately playing many games. This package contains the
2316 command line user interface. Installing this package is the easiest way
2317 towards a working Mupen64Plus for casual users.")
2318 (license license:gpl2+)))
2319
2320 (define-public nestopia-ue
2321 (package
2322 (name "nestopia-ue")
2323 (version "1.47")
2324 (source (origin
2325 (method url-fetch)
2326 (uri (string-append
2327 "https://github.com/rdanbrook/nestopia/archive/"
2328 version ".tar.gz"))
2329 (file-name (string-append name "-" version ".tar.gz"))
2330 (sha256
2331 (base32
2332 "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci"))
2333 (modules '((guix build utils)))
2334 (snippet
2335 '(begin
2336 ;; We don't need libretro for the GNU/Linux build.
2337 (delete-file-recursively "libretro")
2338 ;; Use system zlib.
2339 (delete-file-recursively "source/zlib")
2340 (substitute* "source/core/NstZlib.cpp"
2341 (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
2342 (build-system gnu-build-system)
2343 (native-inputs
2344 `(("pkg-config" ,pkg-config)))
2345 (inputs
2346 `(("ao" ,ao)
2347 ("glu" ,glu)
2348 ("gtk+" ,gtk+)
2349 ("libarchive" ,libarchive)
2350 ("mesa" ,mesa)
2351 ("sdl2" ,sdl2)
2352 ("zlib" ,zlib)))
2353 (arguments
2354 '(#:phases
2355 (modify-phases %standard-phases
2356 ;; The Nestopia build system consists solely of a Makefile.
2357 (delete 'configure)
2358 (add-before 'build 'remove-xdg-desktop-menu-call
2359 (lambda _
2360 (substitute* "Makefile"
2361 (("xdg-desktop-menu install .*") ""))))
2362 (add-before 'build 'remove-gdkwayland-include
2363 (lambda _
2364 (substitute* "source/unix/gtkui/gtkui.h"
2365 (("#include <gdk/gdkwayland\\.h>") "")))))
2366 #:make-flags (let ((out (assoc-ref %outputs "out")))
2367 (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
2368 ;; There are no tests.
2369 #:tests? #f))
2370 (home-page "http://0ldsk00l.ca/nestopia/")
2371 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
2372 (description
2373 "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
2374 System (NES/Famicom) emulator Nestopia, with enhancements from members of the
2375 emulation community. It provides highly accurate emulation.")
2376 (license license:gpl2+)))
2377
2378 (define-public emulation-station
2379 (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
2380 (package
2381 (name "emulation-station")
2382 (version "2.0.1")
2383 (source (origin
2384 (method git-fetch) ; no tarball available
2385 (uri (git-reference
2386 (url "https://github.com/Aloshi/EmulationStation.git")
2387 (commit commit))) ; no version tag
2388 (sha256
2389 (base32
2390 "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
2391 (build-system cmake-build-system)
2392 (arguments
2393 '(#:tests? #f)) ; no tests
2394 (inputs
2395 `(("alsa-lib" ,alsa-lib)
2396 ("boost" ,boost)
2397 ("curl" ,curl)
2398 ("eigin" ,eigen)
2399 ("freeimage" ,freeimage)
2400 ("freetype" ,freetype)
2401 ("mesa" ,mesa)
2402 ("sdl2" ,sdl2)))
2403 (synopsis "Video game console emulator front-end")
2404 (description "EmulationStation provides a graphical front-end to a large
2405 number of video game console emulators. It features an interface that is
2406 usable with any game controller that has at least 4 buttons, theming support,
2407 and a game metadata scraper.")
2408 (home-page "http://www.emulationstation.org")
2409 (license license:expat))))
2410
2411 (define openttd-engine
2412 (package
2413 (name "openttd-engine")
2414 (version "1.7.1")
2415 (source
2416 (origin (method url-fetch)
2417 (uri (string-append "http://binaries.openttd.org/releases/"
2418 version "/openttd-" version "-source.tar.xz"))
2419 (sha256
2420 (base32
2421 "0dhv5bbbg1dmmq7fi3xss0a9jq2rqgb5sf9fsqzlsjcdm590j6b1"))
2422 (modules '((guix build utils)))
2423 (snippet
2424 ;; The DOS port contains proprietary software.
2425 '(delete-file-recursively "os/dos"))))
2426 (build-system gnu-build-system)
2427 (arguments
2428 `(#:tests? #f ; no "check" target
2429 #:phases
2430 (modify-phases %standard-phases
2431 ;; The build process fails if the configure script is passed the
2432 ;; option "--enable-fast-install".
2433 (replace 'configure
2434 (lambda* (#:key inputs outputs (configure-flags '())
2435 #:allow-other-keys)
2436 (let ((out (assoc-ref outputs "out"))
2437 (lzo (assoc-ref inputs "lzo")))
2438 (zero?
2439 (apply system* "./configure"
2440 (string-append "--prefix=" out)
2441 ;; Provide the "lzo" path.
2442 (string-append "--with-liblzo2="
2443 lzo "/lib/liblzo2.a")
2444 ;; Put the binary in 'bin' instead of 'games'.
2445 "--binary-dir=bin"
2446 configure-flags))))))))
2447 (native-inputs `(("pkg-config" ,pkg-config)))
2448 (inputs
2449 `(("allegro" ,allegro-4)
2450 ("fontconfig" ,fontconfig)
2451 ("freetype" ,freetype)
2452 ("icu4c" ,icu4c)
2453 ("libpng" ,libpng)
2454 ("lzo" ,lzo)
2455 ("sdl" ,sdl)
2456 ("xz" ,xz)
2457 ("zlib" ,zlib)))
2458 (synopsis "Transportation economics simulator")
2459 (description "OpenTTD is a game in which you transport goods and
2460 passengers by land, water and air. It is a re-implementation of Transport
2461 Tycoon Deluxe with many enhancements including multiplayer mode,
2462 internationalization support, conditional orders and the ability to clone,
2463 autoreplace and autoupdate vehicles. This package only includes the game
2464 engine. When you start it you will be prompted to download a graphics set.")
2465 (home-page "http://openttd.org/")
2466 ;; This package is GPLv2, except for a few files located in
2467 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2468 ;; licenses. In addition, this software contains an in-game downloader
2469 ;; from which the user may find non-functional data licensed under
2470 ;; different terms.
2471 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2472
2473 (define openttd-opengfx
2474 (package
2475 (name "openttd-opengfx")
2476 (version "0.5.2")
2477 (source
2478 (origin
2479 (method url-fetch)
2480 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2481 version "/opengfx-" version "-source.tar.xz"))
2482 (sha256
2483 (base32
2484 "0iz66q7p1mf00njfjbc4vibh3jaybki7armkl18iz7p6x4chp9zv"))))
2485 (build-system gnu-build-system)
2486 (arguments
2487 '(#:make-flags (list "CC=gcc"
2488 (string-append "INSTALL_DIR="
2489 (assoc-ref %outputs "out")
2490 "/share/games/openttd/baseset/opengfx"))
2491 #:phases
2492 (modify-phases %standard-phases
2493 (replace 'configure
2494 (lambda _
2495 ;; Make sure HOME is writable for GIMP.
2496 (setenv "HOME" (getcwd))
2497
2498 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2499 ;; dos2unix from receiving its version information as a flag.
2500 (substitute* "Makefile"
2501 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2502 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2503 ;; The check phase for this package only checks the md5sums of the built
2504 ;; GRF files against the md5sums of the release versions. Because we use
2505 ;; different software versions than upstream does, some of the md5sums
2506 ;; are different. However, the package is still reproducible, it's safe
2507 ;; to disable this test.
2508 #:tests? #f
2509 #:parallel-build? #f))
2510 (native-inputs `(("dos2unix" ,dos2unix)
2511 ("gimp" ,gimp)
2512 ("grfcodec" ,grfcodec)
2513 ("nml" ,nml)
2514 ("python" ,python-2)))
2515 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2516 (synopsis "Base graphics set for OpenTTD")
2517 (description
2518 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2519 set that aims to ensure the best possible out-of-the-box experience.
2520
2521 OpenGFX provides you with...
2522 @enumerate
2523 @item All graphics you need to enjoy OpenTTD.
2524 @item Uniquely drawn rail vehicles for every climate.
2525 @item Completely snow-aware rivers.
2526 @item Different river and sea water.
2527 @item Snow-aware buoys.
2528 @end enumerate")
2529 (license license:gpl2)))
2530
2531 (define openttd-opensfx
2532 (package
2533 (name "openttd-opensfx")
2534 (version "0.2.3")
2535 (source
2536 (origin
2537 (method url-fetch)
2538 (uri (string-append
2539 "https://binaries.openttd.org/extra/opensfx/"
2540 version "/opensfx-" version "-source.tar.gz"))
2541 (sha256
2542 (base32
2543 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2544 (build-system gnu-build-system)
2545 (native-inputs
2546 `(("catcodec" ,catcodec)
2547 ("python" ,python2-minimal)))
2548 (arguments
2549 `(#:make-flags
2550 (list (string-append "INSTALL_DIR=" %output
2551 "/share/games/openttd/baseset/opensfx"))
2552 #:phases
2553 (modify-phases %standard-phases
2554 (add-after 'unpack 'make-reproducible
2555 (lambda _
2556 ;; Remove the time dependency of the installed tarball by setting
2557 ;; the modification times if its members to 0.
2558 (substitute* "scripts/Makefile.def"
2559 (("-cf") " --mtime=@0 -cf"))
2560 #t))
2561 (delete 'configure))))
2562 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2563 (synopsis "Base sounds for OpenTTD")
2564 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2565 it possible to play OpenTTD without requiring the proprietary sound files from
2566 the original Transport Tycoon Deluxe.")
2567 (license license:cc-sampling-plus-1.0)))
2568
2569 (define openttd-openmsx
2570 (package
2571 (name "openttd-openmsx")
2572 (version "0.3.1")
2573 (source
2574 (origin
2575 (method url-fetch)
2576 (uri (string-append
2577 "https://binaries.openttd.org/extra/openmsx/"
2578 version "/openmsx-" version "-source.tar.gz"))
2579 (sha256
2580 (base32
2581 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2582 (build-system gnu-build-system)
2583 (native-inputs
2584 `(("python" ,python2-minimal)))
2585 (arguments
2586 `(#:make-flags
2587 (list (string-append "INSTALL_DIR=" %output
2588 "/share/games/openttd/baseset"))
2589 #:phases
2590 (modify-phases %standard-phases
2591 (delete 'configure)
2592 (add-after 'install 'post-install
2593 ;; Rename openmsx-version to openmsx
2594 (lambda* (#:key outputs #:allow-other-keys)
2595 (let ((install-directory (string-append (assoc-ref outputs "out")
2596 "/share/games/openttd/baseset")))
2597 (rename-file (string-append install-directory "/openmsx-" ,version)
2598 (string-append install-directory "/openmsx"))
2599 #t))))))
2600 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2601 (synopsis "Music set for OpenTTD")
2602 (description "OpenMSX is a music set for OpenTTD which makes it possible
2603 to play OpenTTD without requiring the proprietary music from the original
2604 Transport Tycoon Deluxe.")
2605 (license license:gpl2)))
2606
2607 (define-public openttd
2608 (package
2609 (inherit openttd-engine)
2610 (name "openttd")
2611 (arguments
2612 `(#:configure-flags
2613 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
2614 "/bin/timidity"))
2615 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
2616 ((#:phases phases)
2617 `(modify-phases ,phases
2618 (add-after 'install 'install-data
2619 (lambda* (#:key inputs outputs #:allow-other-keys)
2620 (for-each
2621 (lambda (input)
2622 (copy-recursively (assoc-ref inputs input)
2623 (assoc-ref outputs "out")))
2624 (list "opengfx" "openmsx" "opensfx"))
2625 #t)))))))
2626 (inputs
2627 `(("timidity++" ,timidity++)
2628 ,@(package-inputs openttd-engine)))
2629 (native-inputs
2630 `(("opengfx" ,openttd-opengfx)
2631 ("openmsx" ,openttd-openmsx)
2632 ("opensfx" ,openttd-opensfx)
2633 ,@(package-native-inputs openttd-engine)))))
2634
2635 (define-public openrct2
2636 (package
2637 (name "openrct2")
2638 (version "0.1.1")
2639 (source
2640 (origin
2641 (method url-fetch)
2642 (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v"
2643 version ".tar.gz"))
2644 (sha256
2645 (base32
2646 "1bahkzlf9k92cc4zs4nk4wy59323kiw8d3wm0vjps3kp7iznqyjx"))
2647 (file-name (string-append name "-" version ".tar.gz"))))
2648 (build-system cmake-build-system)
2649 (arguments
2650 `(#:tests? #f ;; no tests available
2651 #:phases
2652 (modify-phases %standard-phases
2653 (add-after 'unpack 'fix-usr-share-paths
2654 (lambda* (#:key make-flags outputs #:allow-other-keys)
2655 ;; Fix some references to /usr/share.
2656 (substitute* "src/openrct2/platform/linux.c"
2657 (("/usr/share")
2658 (string-append (assoc-ref %outputs "out") "/share")))))
2659 (add-after 'build 'fix-cmake-install-file
2660 (lambda _
2661 ;; The build system tries to download a file and compare hashes.
2662 ;; Since we have no network, remove this so the install doesn't fail.
2663 (substitute* "cmake_install.cmake"
2664 (("EXPECTED_HASH SHA1=b587d83de508d0b104d14c599b76f8565900fce0")
2665 "")))))))
2666 (inputs `(("curl", curl)
2667 ("fontconfig", fontconfig)
2668 ("freetype", freetype)
2669 ("jansson", jansson)
2670 ("libpng", libpng)
2671 ("libzip", libzip)
2672 ("mesa", mesa)
2673 ("openssl", openssl)
2674 ("sdl2", sdl2)
2675 ("speexdsp", speexdsp)
2676 ("zlib", zlib)))
2677 (native-inputs
2678 `(("pkg-config", pkg-config)))
2679 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2680 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
2681 (description "OpenRCT2 is a free software re-implementation of
2682 RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
2683 maintaining an amusement park containing attractions, shops and facilities.
2684
2685 Note that this package does @emph{not} provide the game assets (sounds,
2686 images, etc.)")
2687 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
2688 ;; regarding assets.
2689 (license license:gpl3+)))
2690
2691 (define-public pinball
2692 (package
2693 (name "pinball")
2694 (version "0.3.1")
2695 (source
2696 (origin (method url-fetch)
2697 (uri (string-append "mirror://sourceforge/pinball/pinball/"
2698 "pinball-" version "/"
2699 "pinball-" version ".tar.gz"))
2700 (sha256
2701 (base32
2702 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
2703 (patches (search-patches "pinball-const-fix.patch"
2704 "pinball-cstddef.patch"
2705 "pinball-missing-separators.patch"
2706 "pinball-src-deps.patch"
2707 "pinball-system-ltdl.patch"))))
2708 (build-system gnu-build-system)
2709 (inputs
2710 `(("glu" ,glu)
2711 ("mesa" ,mesa)
2712 ("sdl" ,sdl)
2713 ("sdl-image" ,sdl-image)
2714 ("sdl-mixer" ,sdl-mixer)))
2715 (arguments
2716 '(#:configure-flags
2717 (list (string-append "CPPFLAGS=-I"
2718 (assoc-ref %build-inputs "sdl-image")
2719 "/include/SDL -I"
2720 (assoc-ref %build-inputs "sdl-mixer")
2721 "/include/SDL"))))
2722 (home-page "http://pinball.sourceforge.net")
2723 (synopsis "Pinball simulator")
2724 (description "The Emilia Pinball Project is a pinball simulator. There
2725 are only two levels to play with, but they are very addictive.")
2726 (license license:gpl2)))
2727
2728 (define-public pioneers
2729 (package
2730 (name "pioneers")
2731 (version "15.4")
2732 (source (origin
2733 (method url-fetch)
2734 (uri (string-append "http://downloads.sourceforge.net/pio/"
2735 "pioneers-" version ".tar.gz"))
2736 (sha256
2737 (base32
2738 "1p1d18hrfmqcnghip3shkzcs5qkz6j99jvkdkqfi7pqdvjc323cs"))))
2739 (build-system gnu-build-system)
2740 (inputs `(("gtk+" ,gtk+)
2741 ("librsvg" ,librsvg)
2742 ("avahi" ,avahi)))
2743 (native-inputs `(("intltool" ,intltool)
2744 ("pkg-config" ,pkg-config)))
2745 (synopsis "Board game inspired by The Settlers of Catan")
2746 (description "Pioneers is an emulation of the board game The Settlers of
2747 Catan. It can be played on a local network, on the internet, and with AI
2748 players.")
2749 (home-page "http://pio.sourceforge.net/")
2750 (license license:gpl2+)))
2751
2752 (define-public desmume
2753 (package
2754 (name "desmume")
2755 (version "0.9.11")
2756 (source
2757 (origin
2758 (method url-fetch)
2759 (uri (string-append
2760 "mirror://sourceforge/desmume/desmume/"
2761 version "/desmume-" version ".tar.gz"))
2762 (sha256
2763 (base32
2764 "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
2765 (build-system gnu-build-system)
2766 (arguments
2767 ;; Enable support for WiFi and microphone.
2768 `(#:configure-flags '("--enable-wifi"
2769 "--enable-openal")))
2770 (native-inputs
2771 `(("pkg-config" ,pkg-config)
2772 ("intltool" ,intltool)))
2773 (inputs
2774 `(("zlib" ,zlib)
2775 ("sdl" ,sdl)
2776 ("glib" ,glib)
2777 ("gtk+" ,gtk+-2)
2778 ("glu" ,glu)))
2779 (home-page "http://desmume.org/")
2780 (synopsis "Nintendo DS emulator")
2781 (description
2782 "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
2783 (license license:gpl2)))
2784
2785 (define-public einstein
2786 (package
2787 (name "einstein")
2788 (version "2.0")
2789 (source (origin
2790 (method url-fetch)
2791 (uri (string-append "http://http.debian.net/debian/pool/main/e/"
2792 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
2793 (sha256
2794 (base32
2795 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
2796 (patches (search-patches "einstein-build.patch"))))
2797 (build-system gnu-build-system)
2798 (inputs
2799 `(("freetype" ,freetype)
2800 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
2801 ("zlib" ,zlib)))
2802 (native-inputs
2803 `(("font-dejavu" ,font-dejavu)))
2804 (arguments
2805 `(#:tests? #f ; no check target
2806 #:phases
2807 (modify-phases %standard-phases
2808 (replace 'configure
2809 (lambda* (#:key outputs inputs #:allow-other-keys)
2810 (let ((out (assoc-ref outputs "out"))
2811 (dejavu (string-append (assoc-ref inputs "font-dejavu")
2812 "/share/fonts/truetype/DejaVuSans.ttf")))
2813 (substitute* "Makefile"
2814 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
2815 ;; The patch above registers a free font for use by the binary,
2816 ;; but the font is copied during the compile phase into a
2817 ;; resources file, so we need to make the ttf file available.
2818 (symlink dejavu "res/DejaVuSans.ttf")
2819 #t))))))
2820 (synopsis "Logic puzzle game")
2821 (description "The goal of this logic game is to open all cards in a 6x6
2822 grid, using a number of hints as to their relative position. The game idea
2823 is attributed to Albert Einstein.")
2824 ;; The original home page has disappeared.
2825 (home-page (string-append "http://web.archive.org/web/20120521062745/"
2826 "http://games.flowix.com/en/index.html"))
2827 ;; License according to
2828 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
2829 ;; The source code is a DFSG-sanitized tarball and does not contain any
2830 ;; license information.
2831 (license license:gpl3+)))
2832
2833 (define-public powwow
2834 (package
2835 (name "powwow")
2836 (version "1.2.17")
2837 (source (origin
2838 (method url-fetch)
2839 (uri (string-append
2840 "https://www.hoopajoo.net/static/projects/powwow-"
2841 version ".tar.gz"))
2842 (file-name (string-append name "-" version ".tar.gz"))
2843 (sha256
2844 (base32
2845 "1xmsg2y7qcvj67i9ilnih0mvfxcpni7fzrz343x9rdfnkkzf3pp8"))))
2846 (inputs
2847 `(("ncurses" ,ncurses)))
2848 (build-system gnu-build-system)
2849 (home-page "http://www.hoopajoo.net/projects/powwow.html")
2850 (synopsis "MUD and telnet client")
2851 (description
2852 "POWWOW is a client software which can be used for telnet as well as for
2853 @dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
2854 the chat server psyced with the specific config located at
2855 http://lavachat.symlynx.com/unix/")
2856 (license license:gpl2+)))
2857
2858 (define-public red-eclipse
2859 (let ((release "1.5.8")
2860 (revision 2)
2861 (data-sources
2862 '(("acerspyro" "0zmg78scrfdv33h7vszqvzylcqjwg7d5b0j2riav3rjfh326j8xx")
2863 ("actors" "0l00rsvppqzdpsikm5qpj38jiygirszxlzay2nxp4g4n2qjq0m4a")
2864 ("appleflap" "0jhfr7f13hk3nswwxqc4jajriipr6zz6j63v955nv4sgxs7lzbjd")
2865 ("blendbrush" "1nk0zaisbqf2khrivq8ls6z2lnh6d51m133m2ppxk7k4c9gq1imq")
2866 ("caustics" "1hq08k476wayi0kmk4ps8h6jr75yinq04f1r2p8r79xsdpxq9my5")
2867 ("crosshairs" "1gmrmjm7i7n9py0qrzamk7ygi63yx1mr2pp6iwz2vwngprl03n8m")
2868 ("dziq" "0gr36ydrv8syjxv7w9dw3ix8waaq201fzxr0klkqp260p8xp215s")
2869 ("elyvisions" "05syxlpsap6nfwxnnd0ls7qj1p4vhw2jxi41pi5inwpfifapfphz")
2870 ("fonts" "184syks602xc657q08973w5ji50x5zssvd4vp2q2ig8m68iyr51c")
2871 ("freezurbern" "020gpgcpy4rqjd9d18npfm96j8f02jcjnccbxcgzk1yb58y687ya")
2872 ("john" "0hj5kwlb2gb0gsnl9bk7dkqlk8r7vxcw8gxpgrb3kfn8d9cwcb7k")
2873 ("jojo" "0fij06040r7s5p7jksxm7wxi9jqwkhhm8iywys0dagk8j2wcbvsz")
2874 ("jwin" "0ysfynjvypc8dszf7rsvk02jgw8fmsli49vy2xpm83zpkrqpddgf")
2875 ("luckystrike" "1bm0xdqjv35ry5xwbzw3a3v1xf2gj1jwfg29nyl6w3ch0h6crr11")
2876 ("maps" "0c9d1zxmpnngwhchzw6xb6cf84cx8xyycmdqcvyhamrd95d96qma")
2877 ("mayhem" "133pdql7ari159skd9qdmw0p1m73x32d1v6jswkz0xwk8vgxmkil")
2878 ("mikeplus64" "1d5npn9wlw0mviz9vhzzcsj98jvfh1wbvlh1nyqfj4ws5nfxhs7x")
2879 ("misc" "19x2ps6yxnfrz0xdhqdwncaq25ds7i4w2l8sdfi95yh2r7c5k1qn")
2880 ("nieb" "15029nipl92cb0jbh46z00k51hf3jk4v05pwx266b6b11bapdz0c")
2881 ("nobiax" "0k9apim5z4ihd5ajmnbq4gyh24w872dv0mr5v8wqn31a8gxzahhp")
2882 ("particles" "06827r9pnhzjil381xiwcbc93v9nxin7qlr59yrvk9gdzxmklk9m")
2883 ("philipk" "1l6fhl6qz471vjn05hvk29bm8dhwnzqbmi2hdylpa9k998nzkfc1")
2884 ("projectiles" "03ay8ik52n3vx723swqlnl5gpkzf1v1gadwj3zcnh43ch7nd2bqh")
2885 ("props" "1yxz7gfmb79sqqrkyfdzp4ar9rf5f1kpfij4nrkk1l8vbw9liksc")
2886 ("skyboxes" "1mm98mhb6yhb006p1hlic91jcwjxhq79mblxciwbqqa9c5g4yki6")
2887 ("snipergoth" "1vlpmwlg71g6l5b706gp82bc07i5bbw2zphzynm2fx49za0zdi44")
2888 ("sounds" "156g5wh8cvdh6zr33haqm566sd28ylnzdf2h4pqzpxbb2i19vbfg")
2889 ("textures" "0wkhl5cgymr9kslzhksi83hs15rb0q01xvax5khi6b4dcl3mrmsh")
2890 ("torley" "1xlag6ndjyqafl984n6d9zi96dv9aif7vrc2nvikc3iwgjwlbxav")
2891 ("trak" "12x9ix8zkqn9svy56qmdgj4x2814qh25f4srplgq691lqn9qjhvd")
2892 ("ulukai" "0gz1hd8hca2biskc85hw4jjacpsmqg9x4w6cwrka8x987xmc92k5")
2893 ("unnamed" "09v8fjy6jqypm1i121kilg3z6zpw7dm0i4gxhd9b7ihprvzvy8r7")
2894 ("vanities" "0m3vfq9l71pbb80qz4s3k8r5azmm158chqbw8snch09ymxm6h462")
2895 ("vegetation" "07yzm9lbzr624j4i652ny5p762p83gadg40c1k8gwff4y7yk55gn")
2896 ("weapons" "05fsp17gdrhjqdwia7rwdw9gcijaqwcnny8lf6krms43xmn8cj0x")
2897 ("wicked" "0jjgwzdibr5my369gwvmvbklpjlwq939zgf643rv0168xc087xb2"))))
2898 (package
2899 (name "red-eclipse")
2900 (version (if (zero? revision)
2901 release
2902 (string-append release "-"
2903 (number->string revision))))
2904 (source (origin
2905 (method url-fetch)
2906 (uri (string-append "https://github.com/red-eclipse/base"
2907 "/archive/v" release ".tar.gz"))
2908 (file-name (string-append name "-" version ".tar.gz"))
2909 (sha256
2910 (base32
2911 "0r66rsqxvd7hxrhb0fahqqmf3r0cw2drhv5vndbswcq90l1bxfmf"))))
2912 (build-system gnu-build-system)
2913 (arguments
2914 `(#:tests? #f ; no check target
2915 #:make-flags (list "CC=gcc" "-Csrc"
2916 (string-append "INSTDIR="
2917 (assoc-ref %outputs "out") "/bin")
2918 (string-append "prefix="
2919 (assoc-ref %outputs "out")))
2920 #:phases
2921 (modify-phases %standard-phases
2922 (add-after 'unpack 'unpack-data
2923 (lambda* (#:key inputs #:allow-other-keys)
2924 (delete-file-recursively "data")
2925 (mkdir "data")
2926 (for-each (lambda (name)
2927 (system* "tar" "-xvf"
2928 (assoc-ref inputs name)
2929 "-Cdata"
2930 "--transform"
2931 (string-append "s/"
2932 name "-" ,release "/"
2933 name "/")))
2934 (list ,@(map car data-sources)))
2935 #t))
2936 (add-after 'unpack-data 'add-store-data-package-path-as-default
2937 (lambda* (#:key outputs #:allow-other-keys)
2938 (substitute* "src/engine/server.cpp"
2939 (("(else[[:space:]]*)((addpackagedir\\()\"data\"(\\);))" _ else_part addpackagedir_original addpackagedir_open addpackagedir_close)
2940 (string-append else_part
2941 "{ "
2942 addpackagedir_open
2943 "\""
2944 (assoc-ref outputs "out")
2945 "/share/redeclipse/data\""
2946 addpackagedir_close
2947 " "
2948 addpackagedir_original
2949 " }")))
2950 #t))
2951 (delete 'configure) ; no configure script
2952 (add-after 'set-paths 'set-sdl-paths
2953 (lambda* (#:key inputs #:allow-other-keys)
2954 (setenv "CPATH"
2955 (string-append (assoc-ref inputs "sdl-union")
2956 "/include/SDL2"))
2957 #t))
2958 (add-after 'install 'copy-data
2959 (lambda* (#:key outputs #:allow-other-keys)
2960 (let ((out (assoc-ref outputs "out")))
2961 (copy-recursively "config"
2962 (string-append out "/config"))
2963 (copy-file "doc/examples/servinit.cfg"
2964 (string-append out "/config/servinit.cfg"))
2965 (copy-recursively "data"
2966 (string-append out "/share/redeclipse/data"))
2967 (mkdir-p (string-append out "/lib/redeclipse"))
2968 (symlink (string-append out "/share/redeclipse/data")
2969 (string-append out "/lib/redeclipse/data")))
2970 #t))
2971 (add-after 'copy-data 'wrap-program
2972 (lambda* (#:key inputs outputs #:allow-other-keys)
2973 (let* ((out (assoc-ref outputs "out"))
2974 (bin (string-append out "/bin")))
2975 (with-directory-excursion bin
2976 (rename-file "redeclipse_linux"
2977 ".redeclipse_linux-real")
2978 (rename-file "redeclipse_server_linux"
2979 ".redeclipse_server_linux-real")
2980 (call-with-output-file "redeclipse_linux"
2981 (lambda (port)
2982 (format port "#!~a/bin/sh
2983 # Run the thing from its home, otherwise it just bails out.
2984 cd \"~a\"
2985 exec -a \"$0\" ~a/.redeclipse_linux-real~%"
2986 (assoc-ref inputs "bash") ;implicit input
2987 (string-append out)
2988 (string-append bin))))
2989 (call-with-output-file "redeclipse_server_linux"
2990 (lambda (port)
2991 (format port "#!~a/bin/sh
2992 # Run the thing from its home, otherwise it just bails out.
2993 cd \"~a\"
2994 exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
2995 (assoc-ref inputs "bash") ;implicit input
2996 (string-append out)
2997 (string-append bin))))
2998 (chmod "redeclipse_linux" #o555)
2999 (chmod "redeclipse_server_linux" #o555)))
3000 #t)))))
3001 (native-inputs `(("pkg-config" ,pkg-config)))
3002 (inputs
3003 `(("curl" ,curl)
3004 ("glu" ,glu)
3005 ("sdl-union" ,(sdl-union (list sdl2
3006 sdl2-image
3007 sdl2-mixer)))
3008 ;; Create origin records for the many separate data packages.
3009 ,@(map (match-lambda
3010 ((name hash)
3011 (list name
3012 (origin
3013 (method url-fetch)
3014 (uri (string-append
3015 "https://github.com/red-eclipse/"
3016 name "/archive/v" release ".tar.gz"))
3017 (sha256 (base32 hash))
3018 (file-name (string-append name "-" version
3019 ".tar.gz"))))))
3020 data-sources)))
3021 (home-page "http://redeclipse.net/")
3022 (synopsis "Arena shooter derived from the Cube 2 engine")
3023 (description
3024 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3025 Offering an innovative parkour system and distinct but all potent weapons,
3026 Red Eclipse provides fast paced and accessible gameplay.")
3027 ;; The engine is under Zlib; data files are covered by the other
3028 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
3029 (license (list license:expat
3030 license:zlib
3031 license:cc-by-sa3.0
3032 license:cc-by3.0
3033 license:cc0)))))
3034
3035 (define-public higan
3036 (package
3037 (name "higan")
3038 (version "104")
3039 (source
3040 (origin
3041 (method url-fetch)
3042 (uri (string-append
3043 "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
3044 version))
3045 (file-name (string-append name "-" version ".tar.gz"))
3046 (sha256
3047 (base32 "18by01ir2mvdi9hq571in1hk18gw2bd0ynq4avfs1qj0qra35fqb"))
3048 (patches (search-patches "higan-remove-march-native-flag.patch"))))
3049 (build-system gnu-build-system)
3050 (native-inputs
3051 `(("pkg-config" ,pkg-config)))
3052 (inputs
3053 `(("alsa-lib" ,alsa-lib)
3054 ("ao" ,ao)
3055 ("eudev" ,eudev)
3056 ("gtk+" ,gtk+-2)
3057 ("gtksourceview-2" ,gtksourceview-2)
3058 ("libxv" ,libxv)
3059 ("mesa" ,mesa)
3060 ("openal" ,openal)
3061 ("pulseaudio" ,pulseaudio)
3062 ("sdl" ,sdl)))
3063 (arguments
3064 '(#:phases
3065 (let ((build-phase (assoc-ref %standard-phases 'build))
3066 (install-phase (assoc-ref %standard-phases 'install)))
3067 (modify-phases %standard-phases
3068 ;; The higan build system has no configure phase.
3069 (delete 'configure)
3070 (add-before 'build 'chdir-to-higan
3071 (lambda _
3072 (chdir "higan")))
3073 (add-before 'install 'create-/share/applications
3074 (lambda* (#:key outputs #:allow-other-keys)
3075 (let ((out (assoc-ref outputs "out")))
3076 ;; It seems the author forgot to do this in the Makefile.
3077 (mkdir-p (string-append out "/share/applications")))))
3078 (add-after 'install 'chdir-to-icarus
3079 (lambda _
3080 (chdir "../icarus")))
3081 (add-after 'chdir-to-icarus 'build-icarus build-phase)
3082 (add-after 'build-icarus 'install-icarus install-phase)
3083 (add-after 'install-icarus 'wrap-higan-executable
3084 (lambda* (#:key inputs outputs #:allow-other-keys)
3085 (let* ((out (assoc-ref outputs "out"))
3086 (bin (string-append out "/bin"))
3087 (higan (string-append bin "/higan"))
3088 (higan-original (string-append higan "-original"))
3089 (bash (string-append (assoc-ref inputs "bash")
3090 "/bin/bash"))
3091 (coreutils (assoc-ref inputs "coreutils"))
3092 (mkdir (string-append coreutils "/bin/mkdir"))
3093 (cp (string-append coreutils "/bin/cp"))
3094 (cp-r (string-append cp " -r --no-preserve=mode")))
3095 ;; First, have the executable make sure ~/.local/share/higan
3096 ;; contains up to date files. Higan insists on looking there
3097 ;; for these data files.
3098 (rename-file higan higan-original)
3099 (with-output-to-file higan
3100 (lambda ()
3101 (display
3102 (string-append
3103 "#!" bash "\n"
3104 ;; higan doesn't respect $XDG_DATA_HOME
3105 mkdir " -p ~/.local/share\n"
3106 cp-r " " out "/share/higan ~/.local/share\n"
3107 "exec " higan-original))))
3108 (chmod higan #o555)
3109 ;; Second, make sure higan will find icarus in PATH.
3110 (wrap-program higan
3111 `("PATH" ":" prefix (,bin))))))))
3112 #:make-flags
3113 (list "compiler=g++"
3114 (string-append "prefix=" (assoc-ref %outputs "out")))
3115 ;; There is no test suite.
3116 #:tests? #f))
3117 (home-page "http://byuu.org/emulation/higan/")
3118 (synopsis "Nintendo multi-system emulator")
3119 (description
3120 "higan (formerly bsnes) is an emulator for multiple Nintendo video game
3121 consoles, including the Nintendo Entertainment System (NES/Famicom), Super
3122 Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy
3123 Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems
3124 Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
3125 ;; As noted in these files among more:
3126 ;; - icarus/icarus.cpp
3127 ;; - higan/emulator/emulator.hpp
3128 (license license:gpl3)))
3129
3130 (define-public mgba
3131 (package
3132 (name "mgba")
3133 (version "0.6.1")
3134 (source (origin
3135 (method url-fetch)
3136 (uri (string-append "https://github.com/mgba-emu/mgba/archive/"
3137 version ".tar.gz"))
3138 (file-name (string-append name "-" version ".tar.gz"))
3139 (sha256
3140 (base32
3141 "0xmq1q1j71hnpd49wm91cqq8w5zdhb921cm17jchp4qjmaqgwy3w"))
3142 (modules '((guix build utils)))
3143 (snippet
3144 ;; Make sure we don't use the bundled software.
3145 '(for-each
3146 (lambda (subdir)
3147 (let ((lib-subdir (string-append "src/third-party/" subdir)))
3148 (delete-file-recursively lib-subdir)))
3149 '("libpng" "lzma" "sqlite3" "zlib")))))
3150 (build-system cmake-build-system)
3151 (arguments
3152 `(#:tests? #f ;no "test" target
3153 #:configure-flags
3154 (list "-DUSE_LZMA=OFF" ;do not use bundled LZMA
3155 "-DUSE_LIBZIP=OFF" ;use "zlib" instead
3156 ;; Validate RUNPATH phase fails ("error: depends on
3157 ;; 'libmgba.so.0.6', which cannot be found in RUNPATH") without
3158 ;; the following S-exp.
3159 (string-append "-DCMAKE_INSTALL_LIBDIR="
3160 (assoc-ref %outputs "out")
3161 "/lib"))))
3162 (native-inputs `(("pkg-config" ,pkg-config)))
3163 (inputs `(("ffmpeg" ,ffmpeg)
3164 ("imagemagick" ,imagemagick)
3165 ("libedit" ,libedit)
3166 ("libepoxy" ,libepoxy)
3167 ("libpng" ,libpng)
3168 ("mesa" ,mesa)
3169 ("minizip" ,minizip)
3170 ("ncurses" ,ncurses)
3171 ("qtbase" ,qtbase)
3172 ("qtmultimedia" ,qtmultimedia)
3173 ("qttools" ,qttools)
3174 ("sdl2" ,sdl2)
3175 ("sqlite" ,sqlite)
3176 ("zlib" ,zlib)))
3177 (home-page "https://mgba.io")
3178 (synopsis "Game Boy Advance emulator")
3179 (description
3180 "mGBA is an emulator for running Game Boy Advance games. It aims to be
3181 faster and more accurate than many existing Game Boy Advance emulators, as
3182 well as adding features that other emulators lack. It also supports Game Boy
3183 and Game Boy Color games.")
3184 ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is
3185 ;; BSD-3.
3186 (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
3187
3188 (define-public grue-hunter
3189 (package
3190 (name "grue-hunter")
3191 (version "1.0")
3192 (source (origin
3193 (method url-fetch)
3194 (uri (string-append "https://jxself.org/" name ".tar.gz"))
3195 (sha256
3196 (base32
3197 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3198 (build-system trivial-build-system) ; no Makefile.PL
3199 (arguments `(#:modules ((guix build utils))
3200 #:builder
3201 (begin
3202 (use-modules (guix build utils))
3203 (use-modules (srfi srfi-1))
3204
3205 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3206 (perl (string-append (assoc-ref %build-inputs
3207 "perl")
3208 "/bin"))
3209 (gzip (string-append (assoc-ref %build-inputs
3210 "gzip")
3211 "/bin/gzip"))
3212 (tar (string-append (assoc-ref %build-inputs
3213 "tar")
3214 "/bin/tar"))
3215 (out (assoc-ref %outputs "out"))
3216 (bin (string-append out "/bin"))
3217 (doc (string-append out
3218 "/share/doc/grue-hunter")))
3219 (begin
3220 (copy-file tarball "grue-hunter.tar.gz")
3221 (zero? (system* gzip "-d" "grue-hunter.tar.gz"))
3222 (zero? (system* tar "xvf" "grue-hunter.tar"))
3223
3224 (mkdir-p bin)
3225 (copy-file "grue-hunter/gh.pl"
3226 (string-append bin "/grue-hunter"))
3227 (patch-shebang (string-append bin "/grue-hunter")
3228 (list perl))
3229
3230 (install-file "grue-hunter/AGPLv3.txt" doc))))))
3231 (inputs `(("perl" ,perl)
3232 ("tar" ,tar)
3233 ("gzip" ,gzip)
3234 ("tarball" ,source)))
3235 (home-page "http://jxself.org/grue-hunter.shtml")
3236 (synopsis "Text adventure game")
3237 (description
3238 "Grue Hunter is a text adventure game written in Perl. You must make
3239 your way through an underground cave system in search of the Grue. Can you
3240 capture it and get out alive?")
3241 (license license:agpl3+)))
3242
3243 (define-public lierolibre
3244 (package
3245 (name "lierolibre")
3246 (version "0.5")
3247 (source (origin
3248 (method url-fetch)
3249 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3250 version "/+download/lierolibre-"
3251 version ".tar.xz"))
3252 (sha256
3253 (base32
3254 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3255 (patches
3256 (search-patches "lierolibre-check-unaligned-access.patch"
3257 "lierolibre-try-building-other-arch.patch"
3258 "lierolibre-remove-arch-warning.patch"
3259 "lierolibre-newer-libconfig.patch"
3260 "lierolibre-is-free-software.patch"))
3261 (modules '((guix build utils)))
3262 (snippet
3263 '(begin
3264 ;; Delete pre-compiled files.
3265 (delete-file "data/LIERO.CHR")
3266 (delete-file "data/LIERO.SND")
3267 #t))))
3268 (build-system gnu-build-system)
3269 (native-inputs
3270 `(("imagemagick" ,imagemagick)
3271 ("pkg-config" ,pkg-config)
3272 ("util-linux" ,util-linux)
3273 ("sox" ,sox)))
3274 (inputs
3275 `(("boost" ,boost)
3276 ("libconfig" ,libconfig)
3277 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3278 ("zlib" ,zlib)))
3279 (home-page "https://gitlab.com/lierolibre/lierolibre")
3280 (synopsis "Old-school earthworm action game")
3281 (description
3282 "lierolibre is an earthworm action game where you fight another player
3283 (or the computer) underground using a wide array of weapons.
3284
3285 Features:
3286 @itemize
3287 @item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3288 and Game of Tag, plus AI-players without true intelligence!
3289 @item Dat nostalgia.
3290 @item Extensions via a hidden F1 menu:
3291 @itemize
3292 @item Replays
3293 @item Game controller support
3294 @item Powerlevel palettes
3295 @end itemize
3296 @item Ability to write game variables to plain text files.
3297 @item Ability to load game variables from both EXE and plain text files.
3298 @item Scripts to extract and repack graphics, sounds and levels.
3299 @end itemize
3300
3301 To switch between different window sizes, use F6, F7 and F8, to switch to
3302 fullscreen, use F5 or Alt+Enter.")
3303 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3304 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3305
3306 (define-public warzone2100
3307 (package
3308 (name "warzone2100")
3309 (version "3.2.1")
3310 (source (origin
3311 (method url-fetch)
3312 (uri (string-append "mirror://sourceforge/" name
3313 "/releases/" version "/" name "-" version
3314 ".tar.xz"))
3315 (sha256
3316 (base32
3317 "1nd609s0g4sya3r4amhkz3f4dpdmm94vsd2ii76ap665a1nbfrhg"))))
3318 (build-system gnu-build-system)
3319 (arguments
3320 `(#:phases
3321 (modify-phases %standard-phases
3322 (add-after 'unpack 'link-tests-with-qt
3323 (lambda _
3324 (substitute* "tests/Makefile.in"
3325 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3326 (string-append prefix "$(QT5_LIBS) ")))
3327 #t))
3328 (add-after 'unpack 'remove-reference-to-missing-file
3329 (lambda _
3330 (substitute* "icons/Makefile.in"
3331 (("\\$\\(INSTALL_DATA\\) \\$\\(srcdir\\)/warzone2100.appdata.xml.*") ""))
3332 #t))
3333 (add-after 'unpack 'patch-for-qt5.8
3334 (lambda _
3335 (substitute* "lib/widget/editbox.cpp"
3336 (("== '\\\\0'")
3337 "== QChar('\\0')"))
3338 #t)))))
3339 (native-inputs `(("pkg-config" ,pkg-config)
3340 ("unzip" ,unzip)
3341 ("zip" ,zip)))
3342 (inputs `(("fontconfig" ,fontconfig)
3343 ("freetype" ,freetype)
3344 ("fribidi" ,fribidi)
3345 ("glew" ,glew)
3346 ("libtheora" ,libtheora)
3347 ("libvorbis" ,libvorbis)
3348 ("libxrandr" ,libxrandr)
3349 ("openal" ,openal)
3350 ("physfs" ,physfs)
3351 ("qtbase" ,qtbase)
3352 ("qtscript" ,qtscript)
3353 ("openssl" ,openssl)
3354 ("quesoglc" ,quesoglc)
3355 ("sdl2" ,sdl2)))
3356 (home-page "http://wz2100.net")
3357 (synopsis "3D Real-time strategy and real-time tactics game")
3358 (description
3359 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3360 modes. An extensive tech tree with over 400 different technologies, combined
3361 with the unit design system, allows for a wide variety of possible units and
3362 tactics.")
3363 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3364 (license (list license:bsd-3
3365 license:cc0
3366 license:cc-by-sa3.0
3367 license:expat
3368 license:gpl2+
3369 license:lgpl2.1+))))
3370
3371 (define-public starfighter
3372 (package
3373 (name "starfighter")
3374 (version "1.7")
3375 (source (origin
3376 (method url-fetch)
3377 (uri (string-append
3378 "mirror://savannah/starfighter/"
3379 (version-major+minor version) "/"
3380 name "-" version "-src.tar.gz"))
3381 (sha256
3382 (base32
3383 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v"))))
3384 (build-system gnu-build-system)
3385 (native-inputs
3386 `(("pkg-config" ,pkg-config)))
3387 (inputs
3388 `(("sdl2" ,sdl2)
3389 ("sdl2-image" ,sdl2-image)
3390 ("sdl2-mixer" ,sdl2-mixer)))
3391 (home-page "http://starfighter.nongnu.org/")
3392 (synopsis "2D scrolling shooter game")
3393 (description
3394 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3395 dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3396 their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3397 way, you will encounter new foes, make new allies, and assist local rebels
3398 in strikes against the evil corporation.")
3399 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3400 (license (list license:gpl3+
3401 license:cc-by3.0
3402 license:cc-by-sa3.0
3403 license:cc0
3404 license:public-domain))))
3405
3406 (define-public chromium-bsu
3407 (package
3408 (name "chromium-bsu")
3409 (version "0.9.16.1")
3410 (source (origin
3411 (method url-fetch)
3412 (uri (string-append "mirror://sourceforge/" name
3413 "/Chromium B.S.U. source code/"
3414 name "-" version ".tar.gz"))
3415 (sha256
3416 (base32
3417 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
3418 (build-system gnu-build-system)
3419 (native-inputs `(("pkg-config" ,pkg-config)))
3420 (inputs `(("gettext" ,gettext-minimal)
3421 ("glu" ,glu)
3422 ("quesoglc" ,quesoglc)
3423 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3424 (home-page "http://chromium-bsu.sourceforge.net/")
3425 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3426 (description
3427 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3428 are responsible for delivering supplies to the troops on the front line. Your
3429 ship has a small fleet of robotic fighters which you control from the relative
3430 safety of the Chromium vessel.")
3431 ;; Clarified Artistic License for everything but sound, which is covered
3432 ;; by the Expat License.
3433 (license (list license:clarified-artistic license:expat))))
3434
3435 (define-public tuxpaint
3436 (package
3437 (name "tuxpaint")
3438 (version "0.9.22") ;keep VER_DATE below in sync
3439 (source
3440 (origin
3441 (method url-fetch)
3442 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3443 version "/tuxpaint-" version ".tar.gz"))
3444 (sha256
3445 (base32
3446 "1qrbrdck9yxpcg3si6jb9i11w8lw9h4hqad0pfaxgyiniqpr7gca"))
3447 (modules '((guix build utils)))
3448 (snippet
3449 '(begin
3450 ;; Remove win32 directory which contains binary dll's and the
3451 ;; deprecated visualc directory.
3452 (for-each delete-file-recursively '("win32" "visualc"))
3453 (substitute* "Makefile"
3454 ;; Do not rely on $(GPERF) being an absolute file name
3455 (("\\[ -x \\$\\(GPERF\\) \\]")
3456 "$(GPERF) --version >/dev/null 2>&1"))))
3457 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3458 (build-system gnu-build-system)
3459 (native-inputs
3460 `(("gperf" ,gperf)
3461 ("pkg-config" ,pkg-config)))
3462 (inputs
3463 `(("cairo" ,cairo)
3464 ("fribidi" ,fribidi)
3465 ("gettext" ,gettext-minimal)
3466 ("libpng" ,libpng)
3467 ("librsvg" ,librsvg)
3468 ("libpaper" ,libpaper)
3469 ("netpbm" ,netpbm)
3470 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3471 ;; TODO: Use system fonts rather than those in data/fonts
3472 (arguments
3473 `(#:make-flags `("VER_DATE=2014-08-23"
3474 "GPERF=gperf" "CC=gcc"
3475 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3476 ,(string-append "PREFIX=" %output)
3477 "GNOME_PREFIX=$(PREFIX)"
3478 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
3479 #:parallel-build? #f ;fails on some systems
3480 #:tests? #f ;No tests
3481 #:phases (modify-phases %standard-phases
3482 (delete 'configure) ;no configure phase
3483 (add-after 'install 'fix-import
3484 (lambda* (#:key inputs outputs #:allow-other-keys)
3485 (let* ((out (assoc-ref outputs "out"))
3486 (net (assoc-ref inputs "netpbm"))
3487 (tpi (string-append out "/bin/tuxpaint-import")))
3488 (substitute* tpi
3489 ;; Point to installation prefix so that the default
3490 ;; configure file is found.
3491 (("/usr/local") out))
3492 ;; tuxpaint-import uses a bunch of programs from
3493 ;; netpbm, so make sure it knows where those are
3494 (wrap-program tpi
3495 `("PATH" ":" prefix
3496 (,(string-append net "/bin"))))))))))
3497 (native-search-paths
3498 (list (search-path-specification
3499 (variable "TUXPAINT_STAMPS_PATH")
3500 (files '("share/tuxpaint/stamps")))))
3501 (home-page "http://www.tuxpaint.org")
3502 (synopsis "Drawing software for children")
3503 (description
3504 "Tux Paint is a free drawing program designed for young children (kids
3505 ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3506 and an encouraging cartoon mascot who helps guide children as they use the
3507 program. It provides a blank canvas and a variety of drawing tools to help
3508 your child be creative.")
3509 (license license:gpl2+)))
3510
3511 (define-public tuxpaint-stamps
3512 (package
3513 (name "tuxpaint-stamps")
3514 (version "2014.08.23")
3515 (source
3516 (origin
3517 (method url-fetch)
3518 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3519 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3520 "/tuxpaint-stamps-" version ".tar.gz"))
3521 (sha256
3522 (base32
3523 "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q"))))
3524 (build-system trivial-build-system)
3525 (native-inputs
3526 `(("tar" ,tar)
3527 ("gzip" ,gzip)))
3528 (arguments
3529 `(#:modules ((guix build utils))
3530 #:builder (begin
3531 (use-modules (guix build utils))
3532 (setenv "PATH"
3533 (string-append
3534 (assoc-ref %build-inputs "tar") "/bin" ":"
3535 (assoc-ref %build-inputs "gzip") "/bin"))
3536 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
3537 (chdir (string-append ,name "-" ,version))
3538 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3539 (mkdir-p dir)
3540 (copy-recursively "stamps" dir)))))
3541 (home-page (package-home-page tuxpaint))
3542 (synopsis "Stamp images for Tux Paint")
3543 (description
3544 "This package contains a set of \"Rubber Stamp\" images which can be used
3545 with the \"Stamp\" tool within Tux Paint.")
3546 (license license:gpl2+)))
3547
3548 (define-public tuxpaint-config
3549 (package
3550 (name "tuxpaint-config")
3551 (version "0.0.13") ;keep VER_DATE below in sync
3552 (source
3553 (origin
3554 (method url-fetch)
3555 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3556 version "/tuxpaint-config-" version ".tar.gz"))
3557 (sha256
3558 (base32
3559 "1z12s46mvy87qs3vgq9m0ki9pp21zqc52mmgphahpihw3s7haf6v"))))
3560 (build-system gnu-build-system)
3561 (native-inputs
3562 `(("gettext" ,gettext-minimal)))
3563 (inputs
3564 `(("fltk" ,fltk)
3565 ("libpaper" ,libpaper)
3566 ;; TODO: Should the following be propagated by fltk?
3567 ("libx11" ,libx11)
3568 ("libxft" ,libxft)
3569 ("mesa" ,mesa)))
3570 (arguments
3571 `(#:make-flags `("VER_DATE=2014-08-23"
3572 "CONFDIR=/etc/tuxpaint" ;don't write to store
3573 ,(string-append "PREFIX=" %output)
3574 "GNOME_PREFIX=$(PREFIX)")
3575 #:parallel-build? #f ;race conditions
3576 #:tests? #f ;no tests
3577 #:phases (modify-phases %standard-phases
3578 (delete 'configure) ;no configure phase
3579 (add-before 'install 'gzip-no-name
3580 (lambda* _
3581 (substitute* "Makefile"
3582 ;; tuxpaint-config compresses its own documentation;
3583 ;; make sure it uses flags for reproducibility.
3584 (("gzip") "gzip --no-name"))))
3585 (add-before 'install 'make-install-dirs
3586 (lambda* (#:key outputs #:allow-other-keys)
3587 (let ((out (assoc-ref outputs "out")))
3588 (mkdir-p (string-append out "/bin"))
3589 #t))))))
3590 (home-page (package-home-page tuxpaint))
3591 (synopsis "Configure Tux Paint")
3592 (description
3593 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3594 (license license:gpl2))) ;no "or later" present
3595
3596 (define-public supertux
3597 (package
3598 (name "supertux")
3599 (version "0.5.1")
3600 (source (origin
3601 (method url-fetch)
3602 (uri (string-append "https://github.com/SuperTux/supertux/"
3603 "releases/download/v" version "/SuperTux-v"
3604 version "-Source.tar.gz"))
3605 (sha256
3606 (base32
3607 "1i8avad7w7ikj870z519j383ldy29r6f956bs38cbr8wk513pp69"))))
3608 (arguments
3609 '(#:tests? #f
3610 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
3611 "-DENABLE_BOOST_STATIC_LIBS=OFF")))
3612 (build-system cmake-build-system)
3613 (inputs `(("sdl2" ,sdl2)
3614 ("sdl2-image" ,sdl2-image)
3615 ("sdl2-mixer" ,sdl2-mixer)
3616 ("openal" ,openal)
3617 ("mesa" ,mesa)
3618 ("glew" ,glew)
3619 ("libvorbis" ,libvorbis)
3620 ("libogg" ,libogg)
3621 ("physfs" ,physfs)
3622 ("curl" ,curl)
3623 ("boost" ,boost)))
3624 (native-inputs `(("pkg-config" ,pkg-config)))
3625 (synopsis "2D platformer game")
3626 (description "SuperTux is a free classic 2D jump'n run sidescroller game
3627 in a style similar to the original Super Mario games covered under
3628 the GNU GPL.")
3629 (home-page "https://supertuxproject.org/")
3630 (license license:gpl3+)))
3631
3632 (define-public tintin++
3633 (package
3634 (name "tintin++")
3635 (version "2.01.2")
3636 (source (origin
3637 (method url-fetch)
3638 (uri (string-append "mirror://sourceforge/tintin"
3639 "/TinTin++ Source Code/" version
3640 "/tintin" "-" version ".tar.gz"))
3641 (sha256
3642 (base32
3643 "13h39agyhlhm17zyqlb56bmbbxpimikyf5pana3gd3ylvqy1xq81"))))
3644 (inputs
3645 `(("gnutls" ,gnutls)
3646 ("pcre" ,pcre)
3647 ("readline" ,readline)
3648 ("zlib" ,zlib)))
3649 (arguments
3650 '(#:tests? #f ; no test suite
3651 #:phases
3652 (modify-phases %standard-phases
3653 ;; The source is in tt/src.
3654 (add-before 'configure 'chdir
3655 (lambda _
3656 (chdir "src")
3657 #t)))))
3658 (build-system gnu-build-system)
3659 (home-page "http://tintin.sourceforge.net/")
3660 (synopsis "MUD client")
3661 (description
3662 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression Protocol),
3663 MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET options used by MUDs,
3664 as well as those required to login via telnet on Linux / Mac OS X servers, and an
3665 auto mapper with a VT100 map display.")
3666 (license license:gpl2+)))
3667
3668 (define-public laby
3669 (package
3670 (name "laby")
3671 (version "0.6.4")
3672 (source
3673 (origin (method url-fetch)
3674 (uri (string-append
3675 "https://github.com/sgimenez/laby/archive/"
3676 name "-" version ".tar.gz"))
3677 (sha256
3678 (base32
3679 "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf"))
3680 (patches (search-patches "laby-make-install.patch"))))
3681 (build-system gnu-build-system)
3682 (inputs
3683 `(("lablgtk" ,lablgtk)
3684 ("ocaml" ,ocaml)
3685 ("ocaml-findlib" ,ocaml-findlib)))
3686 (arguments
3687 '(#:phases
3688 (modify-phases %standard-phases
3689 (delete 'configure)
3690 (add-before 'build 'setenv
3691 (lambda* (#:key inputs #:allow-other-keys)
3692 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3693 (setenv "LD_LIBRARY_PATH"
3694 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3695 #:tests? #f ; no 'check' target
3696 #:make-flags
3697 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3698 (home-page "https://sgimenez.github.io/laby/")
3699 (synopsis "Programming game")
3700 (description "Learn programming, playing with ants and spider webs ;-)
3701 Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3702 Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3703 programmers may also add their own favorite language.")
3704 (license license:gpl3+)))
3705
3706 (define-public bambam
3707 (package
3708 (name "bambam")
3709 (version "0.5")
3710 (source
3711 (origin
3712 (method url-fetch)
3713 (uri (string-append "https://github.com/porridge/bambam/archive/"
3714 version ".tar.gz"))
3715 (file-name (string-append name "-" version ".tar.gz"))
3716 (sha256
3717 (base32
3718 "10w110mjdwbvddzihh9rganvvjr5jfiz8cs9n7w12zndwwcc3ria"))))
3719 (build-system python-build-system)
3720 (arguments
3721 `(#:python ,python-2
3722 #:tests? #f ; no tests
3723 #:phases
3724 (modify-phases %standard-phases
3725 (delete 'build)
3726 (add-before 'install 'patch-data-dir-location
3727 (lambda _
3728 (substitute* "bambam.py"
3729 (("'data'") "'../share/bambam/data'"))
3730 #t))
3731 (replace 'install
3732 (lambda* (#:key outputs #:allow-other-keys)
3733 (let* ((out (assoc-ref outputs "out"))
3734 (bin (string-append out "/bin"))
3735 (share (string-append out "/share")))
3736 (mkdir-p bin)
3737 (copy-file "bambam.py" (string-append bin "/bambam"))
3738 (install-file "bambam.6" (string-append share "/man/man6"))
3739 (copy-recursively "data" (string-append share "/bambam/data")))
3740 #t)))))
3741 (inputs
3742 `(("python-pygame" ,python-pygame)))
3743 (home-page "https://github.com/porridge/bambam")
3744 (synopsis "Keyboard mashing and doodling game for babies")
3745 (description "Bambam is a simple baby keyboard (and gamepad) masher
3746 application that locks the keyboard and mouse and instead displays bright
3747 colors, pictures, and sounds.")
3748 (license license:gpl3+)))
3749
3750 (define-public mrrescue
3751 (package
3752 (name "mrrescue")
3753 (version "1.02e")
3754 (source (origin
3755 (method url-fetch)
3756 (uri (string-append
3757 "https://github.com/SimonLarsen/mrrescue/releases/"
3758 "download/" version "/" name version ".love"))
3759 (file-name (string-append name "-" version ".love"))
3760 (sha256
3761 (base32
3762 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
3763 (build-system trivial-build-system)
3764 (arguments
3765 '(#:modules ((guix build utils))
3766 #:builder
3767 (begin
3768 (use-modules (guix build utils))
3769 (let* ((out (assoc-ref %outputs "out"))
3770 (bindir (string-append out "/bin"))
3771 (prog (string-append bindir "/mrrescue"))
3772 (source (assoc-ref %build-inputs "source"))
3773 (bash (string-append (assoc-ref %build-inputs "bash")
3774 "/bin/bash"))
3775 (love (string-append (assoc-ref %build-inputs "love")
3776 "/bin/love")))
3777 (mkdir-p bindir)
3778 (with-output-to-file prog
3779 (lambda ()
3780 (format #t "#!~a~%" bash)
3781 (format #t "exec -a mrrescue \"~a\" \"~a\"~%" love source)))
3782 (chmod prog #o755)
3783 #t))))
3784 (inputs
3785 `(("bash" ,bash)
3786 ("love" ,love)))
3787 (home-page "http://tangramgames.dk/games/mrrescue")
3788 (synopsis "Arcade-style fire fighting game")
3789 (description
3790 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
3791 civilians from burning buildings. The game features fast paced fire
3792 extinguishing action, intense boss battles, a catchy soundtrack and lots of
3793 throwing people around in pseudo-randomly generated buildings.")
3794 (license (list license:zlib ; for source code
3795 license:cc-by-sa3.0)))) ; for graphics and music assets
3796
3797 (define-public hyperrogue
3798 (package
3799 (name "hyperrogue")
3800 (version "10.0g")
3801 ;; When updating this package, be sure to update the "hyperrogue-data"
3802 ;; origin in native-inputs.
3803 (source (origin
3804 (method url-fetch)
3805 (uri (string-append
3806 "http://www.roguetemple.com/z/hyper/"
3807 name (string-join (string-split version #\.) "")
3808 "-src.tgz"))
3809 (sha256
3810 (base32
3811 "0f68pcnsgl406dhm91ckn3f364bar9m9i5njp9vrmvhvv9p2icy0"))))
3812 (build-system gnu-build-system)
3813 (arguments
3814 `(#:tests? #f ; no check target
3815 #:make-flags '("CXXFLAGS=-std=c++11")
3816 #:phases
3817 (modify-phases %standard-phases
3818 (add-after 'set-paths 'set-sdl-paths
3819 (lambda* (#:key inputs #:allow-other-keys)
3820 (setenv "CPATH"
3821 (string-append (assoc-ref inputs "sdl-union")
3822 "/include/SDL"))))
3823 ;; Fix font and music paths.
3824 (replace 'configure
3825 (lambda* (#:key inputs outputs #:allow-other-keys)
3826 (let* ((out (assoc-ref outputs "out"))
3827 (share-dir (string-append out "/share/hyperrogue"))
3828 (dejavu-dir (string-append
3829 (assoc-ref inputs "font-dejavu")
3830 "/share/fonts/truetype"))
3831 (dejavu-font "DejaVuSans-Bold.ttf")
3832 (music-file "hyperrogue-music.txt"))
3833 (substitute* "basegraph.cpp"
3834 ((dejavu-font)
3835 (string-append dejavu-dir "/" dejavu-font)))
3836 (substitute* "sound.cpp"
3837 (((string-append "\\./" music-file))
3838 (string-append share-dir "/" music-file))
3839 (("sounds/")
3840 (string-append share-dir "/sounds/")))
3841 (substitute* music-file
3842 (("\\*/")
3843 (string-append share-dir "/sounds/"))))
3844 #t))
3845 (replace 'install
3846 (lambda* (#:key inputs outputs #:allow-other-keys)
3847 (let* ((out (assoc-ref outputs "out"))
3848 (bin (string-append out "/bin"))
3849 (share-dir (string-append out "/share/hyperrogue")))
3850 (mkdir-p bin)
3851 (copy-file "hyper" (string-append bin "/hyperrogue"))
3852 (install-file "hyperrogue-music.txt" share-dir))
3853 #t))
3854 (add-after 'install 'install-data
3855 (lambda* (#:key inputs outputs #:allow-other-keys)
3856 (let* ((data (assoc-ref inputs "hyperrogue-data"))
3857 (out (assoc-ref outputs "out"))
3858 (sounds (string-append out "/share/hyperrogue/sounds"))
3859 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
3860 (and
3861 ;; Extract media license information into sounds directory.
3862 (zero?
3863 (system* unzip "-j" data
3864 (string-append
3865 "hyperrogue"
3866 (string-join (string-split ,version #\.) "")
3867 "/sounds/credits.txt") "-d" sounds))
3868 ;; Extract sounds and music into sounds directory.
3869 (zero?
3870 (system* "unzip" "-j" data
3871 (string-append
3872 "hyperrogue"
3873 (string-join (string-split ,version #\.) "")
3874 "/*.ogg") "-d" sounds)))))))))
3875 (native-inputs
3876 `(("hyperrogue-data"
3877 ,(origin
3878 (method url-fetch)
3879 (uri
3880 (string-append
3881 "http://www.roguetemple.com/z/hyper/" name
3882 (string-join (string-split version #\.) "")
3883 "-win.zip"))
3884 (sha256
3885 (base32
3886 "0bnp077qvlmxjlz1jjd6kpghlv9flxc19ac1xq3m3wyq1w9p3pab"))))
3887 ("unzip" ,unzip)))
3888 (inputs
3889 `(("font-dejavu" ,font-dejavu)
3890 ("glew" ,glew)
3891 ("libpng" ,libpng)
3892 ("sdl-union" ,(sdl-union (list sdl
3893 sdl-gfx
3894 sdl-mixer
3895 sdl-ttf)))))
3896 (home-page "http://www.roguetemple.com/z/hyper/")
3897 (synopsis "Non-euclidean graphical rogue-like game")
3898 (description
3899 "HyperRogue is a game in which the player collects treasures and fights
3900 monsters -- rogue-like but for the fact that it is played on the hyperbolic
3901 plane and not in euclidean space.
3902
3903 In HyperRogue, the player can move through different parts of the world, which
3904 are home to particular creatures and may be subject to their own rules of
3905 \"physics\".
3906
3907 While the game can use ASCII characters to display the the classical rogue
3908 symbols, it still needs graphics to render the non-euclidean world.")
3909 (license (list license:bsd-3 ; glew.c, mtrand.*
3910 license:cc-by-sa3.0 ; music
3911 license:cc-by-sa4.0 ; sounds
3912 license:cc0
3913 license:public-domain ; direntx.*, some sounds
3914 license:zlib ; savepng.*
3915 license:gpl2+)))) ; remaining files
3916
3917 (define-public kobodeluxe
3918 (package
3919 (name "kobodeluxe")
3920 (version "0.5.1")
3921 (source (origin
3922 (method url-fetch)
3923 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
3924 version ".tar.bz2"))
3925 (sha256
3926 (base32
3927 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
3928 (patches (search-patches
3929 "kobodeluxe-const-charp-conversion.patch"
3930 "kobodeluxe-enemies-pipe-decl.patch"
3931 "kobodeluxe-graphics-window-signed-char.patch"
3932 "kobodeluxe-manpage-minus-not-hyphen.patch"
3933 "kobodeluxe-midicon-segmentation-fault.patch"
3934 "kobodeluxe-paths.patch"))))
3935 (build-system gnu-build-system)
3936 (arguments
3937 '(#:configure-flags
3938 (list (string-append "CPPFLAGS=-I"
3939 (assoc-ref %build-inputs "sdl-union")
3940 "/include/SDL"))))
3941 (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image)))))
3942 (synopsis "Shooter with space station destruction")
3943 (description
3944 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
3945 for Un*x systems with X11.")
3946 (home-page "http://olofson.net/kobodl/")
3947 (license license:gpl2+)))
3948
3949 (define-public freeciv
3950 (package
3951 (name "freeciv")
3952 (version "2.5.7")
3953 (source
3954 (origin
3955 (method url-fetch)
3956 (uri (list (string-append
3957 "http://files.freeciv.org/stable/freeciv-"
3958 version ".tar.bz2")
3959 (string-append
3960 "mirror://sourceforge/freeciv/Freeciv%20"
3961 (version-major+minor version) "/" version
3962 "/freeciv-" version ".tar.bz2")))
3963 (sha256
3964 (base32
3965 "1lmydnnqraa947l7gdz6xgm0bgks1ywsivp9h4v8jr3avcv6gqzz"))))
3966 (build-system gnu-build-system)
3967 (inputs
3968 `(("curl" ,curl)
3969 ("cyrus-sasl" ,cyrus-sasl)
3970 ("gtk+" ,gtk+)
3971 ("sdl-mixer" ,sdl-mixer)
3972 ("zlib" ,zlib)))
3973 (native-inputs
3974 `(("pkg-config" ,pkg-config)))
3975 (home-page "http://www.freeciv.org/")
3976 (synopsis "Turn based empire building strategy game")
3977 (description "Freeciv is a turn based empire building strategy game
3978 inspired by the history of human civilization. The game commences in
3979 prehistory and your mission is to lead your tribe from the Stone Age
3980 to the Space Age.")
3981 (license license:gpl2+)))
3982
3983 (define-public no-more-secrets
3984 (package
3985 (name "no-more-secrets")
3986 (version "0.3.3")
3987 (source
3988 (origin
3989 (method url-fetch)
3990 (uri (string-append "https://github.com/bartobri/no-more-secrets/"
3991 "archive/v" version ".tar.gz"))
3992 (file-name (string-append name "-" version ".tar.gz"))
3993 (sha256
3994 (base32
3995 "1kpx1rirc3i7fb4lymp0hx5rqr0s2ay4za261rw3bcy6d23l1kyg"))))
3996 (build-system gnu-build-system)
3997 (arguments
3998 `(#:tests? #f
3999 #:make-flags (list "CC=gcc" "all-ncurses"
4000 (string-append "prefix="
4001 (assoc-ref %outputs "out")))
4002 #:phases
4003 (modify-phases %standard-phases
4004 (delete 'configure))))
4005 (inputs
4006 `(("ncurses" ,ncurses)))
4007 (home-page "https://github.com/bartobri/no-more-secrets")
4008 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4009 (description
4010 "@code{No More Secrets} provides a command line tool called \"nms\"
4011 that recreates the famous data decryption effect seen on screen in the 1992
4012 movie \"Sneakers\".
4013
4014 This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4015 it will apply the hollywood effect, initially showing encrypted data, then
4016 starting a decryption sequence to reveal the original plaintext characters.")
4017 (license license:expat)))
4018
4019 (define-public megaglest-data
4020 (package
4021 (name "megaglest-data")
4022 (version "3.13.0")
4023 (source
4024 (origin
4025 (method url-fetch)
4026 (uri (string-append
4027 "https://github.com/MegaGlest/megaglest-data"
4028 "/releases/download/" version "/megaglest-data-"
4029 version ".tar.xz"))
4030 (sha256
4031 (base32
4032 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4033 (build-system cmake-build-system)
4034 (arguments
4035 `(#:tests? #f))
4036 (home-page "https://megaglest.org/")
4037 (synopsis "Data files for MegaGlest")
4038 (description "This package contains the data files required for MegaGlest.")
4039 (license license:cc-by-sa3.0)))
4040
4041 (define-public megaglest
4042 (package
4043 (name "megaglest")
4044 (version "3.13.0")
4045 (source
4046 (origin
4047 (method url-fetch)
4048 (uri (string-append
4049 "https://github.com/MegaGlest/megaglest-source"
4050 "/releases/download/" version "/megaglest-source-"
4051 version ".tar.xz"))
4052 (sha256
4053 (base32
4054 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4055 (build-system cmake-build-system)
4056 (inputs
4057 `(("curl" ,curl)
4058 ("fontconfig" ,fontconfig)
4059 ("ftgl" ,ftgl)
4060 ("glew" ,glew)
4061 ("libjpeg-turbo" ,libjpeg-turbo)
4062 ("megaglest-data" ,megaglest-data)
4063 ("mesa" ,mesa)
4064 ("miniupnpc" ,miniupnpc)
4065 ("openal" ,openal)
4066 ("libircclient" ,libircclient)
4067 ("libpng" ,libpng)
4068 ("libvorbis" ,libvorbis)
4069 ("lua" ,lua)
4070 ("sdl2" ,sdl2)
4071 ("wxwidgets" ,wxwidgets)))
4072 (native-inputs
4073 `(("cppunit" ,cppunit)
4074 ("pkg-config" ,pkg-config)))
4075 (arguments
4076 `(#:configure-flags
4077 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4078 (assoc-ref %build-inputs "megaglest-data")
4079 "/share/megaglest")
4080 "-DBUILD_MEGAGLEST_TESTS=ON")
4081 #:phases
4082 (modify-phases %standard-phases
4083 (add-after 'unpack 'fix-ini-search-path
4084 (lambda* (#:key outputs #:allow-other-keys)
4085 (substitute* "source/glest_game/global/config.cpp"
4086 (("/usr/share/megaglest/")
4087 (string-append (assoc-ref outputs "out")
4088 "/share/megaglest/"))))))
4089 #:test-target "megaglest_tests"))
4090 (home-page "https://megaglest.org/")
4091 (synopsis "3D real-time strategy (RTS) game")
4092 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4093 game, where you control the armies of one of seven different factions: Tech,
4094 Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4095 (license license:gpl2+)))
4096
4097 (define-public freegish
4098 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4099 (revision "1"))
4100 (package
4101 (name "freegish")
4102 (version (string-append "0-" revision "." (string-take commit 9)))
4103 (source (origin
4104 (method git-fetch)
4105 (uri (git-reference
4106 (url "https://github.com/freegish/freegish.git")
4107 (commit commit)))
4108 (sha256
4109 (base32
4110 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4111 (modules '((guix build utils)))
4112 ;; The audio files in the "music" directory are licensed under
4113 ;; CC-BY-NC, so we delete them.
4114 (snippet
4115 '(begin
4116 (delete-file-recursively "music")
4117 #t))))
4118 (build-system cmake-build-system)
4119 (arguments
4120 `(#:tests? #f ; no tests included
4121 #:configure-flags
4122 (list "-DCMAKE_INSTALL_FHS=ON")
4123 #:phases
4124 (modify-phases %standard-phases
4125 (add-after 'unpack 'set-DATAPATH
4126 (lambda* (#:key outputs #:allow-other-keys)
4127 (substitute* "CMakeLists.txt"
4128 (("^option\\(INSTALL_FHS" line)
4129 (string-append "add_definitions(-DDATAPATH=\""
4130 (assoc-ref outputs "out") "/share/freegish\")\n"
4131 line)))
4132 #t)))))
4133 (inputs
4134 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4135 ("openal" ,openal)
4136 ("libvorbis" ,libvorbis)
4137 ("libogg" ,libogg)
4138 ("mesa" ,mesa)
4139 ("libpng" ,libpng)
4140 ("zlib" ,zlib)))
4141 (home-page "https://github.com/freegish/freegish")
4142 (synopsis "Side-scrolling physics platformer with a ball of tar")
4143 (description "In FreeGish you control Gish, a ball of tar who lives
4144 happily with his girlfriend Brea, until one day a mysterious dark creature
4145 emerges from a sewer hole and pulls her below ground.")
4146 ;; The textures are available under the Expat license. All other assets
4147 ;; (including levels) are covered under CC-BY-SA or public domain. The
4148 ;; source code is under GPLv2+.
4149 (license (list license:gpl2+
4150 license:expat
4151 license:public-domain
4152 license:cc-by-sa3.0)))))
4153
4154 (define-public cdogs-sdl
4155 (package
4156 (name "cdogs-sdl")
4157 (version "0.6.6")
4158 (source (origin
4159 (method url-fetch)
4160 (uri (string-append "https://github.com/cxong/cdogs-sdl/"
4161 "archive/" version ".tar.gz"))
4162 (file-name (string-append name "-" version ".tar.gz"))
4163 (sha256
4164 (base32
4165 "08gbx6vqqir48xs6qdfa4kv70gj4j96wzs90pg7qldfasxz34ljm"))))
4166 (build-system cmake-build-system)
4167 (arguments
4168 `(#:configure-flags
4169 (list (string-append "-DCDOGS_DATA_DIR="
4170 (assoc-ref %outputs "out")
4171 "/share/cdogs-sdl/"))))
4172 (inputs
4173 `(("mesa" ,mesa)
4174 ("sdl2" ,sdl2)
4175 ("sdl2-image" ,sdl2-image)
4176 ("sdl2-mixer" ,sdl2-mixer)))
4177 (home-page "https://cxong.github.io/cdogs-sdl/")
4178 (synopsis "Classic overhead run-and-gun game")
4179 (description "C-Dogs SDL is a classic overhead run-and-gun game,
4180 supporting up to 4 players in co-op and deathmatch modes. Customize your
4181 player, choose from many weapons, and blast, slide and slash your way through
4182 over 100 user-created campaigns.")
4183 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4184 ;; CC0/CC-BY/CC-BY-SA for assets.
4185 (license (list license:gpl2+
4186 license:bsd-2
4187 license:bsd-3
4188 license:cc0
4189 license:cc-by3.0
4190 license:cc-by-sa3.0))))
4191
4192 (define-public kiki
4193 (package
4194 (name "kiki")
4195 (version "1.0.2")
4196 (source (origin
4197 (method url-fetch)
4198 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4199 version "/kiki-" version "-src.tgz"))
4200 (sha256
4201 (base32
4202 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4203 (modules '((guix build utils)))
4204 (snippet
4205 '(begin
4206 (for-each delete-file (find-files "." "\\.dll$"))
4207 #t))
4208 (patches
4209 (search-patches "kiki-level-selection-crash.patch"
4210 "kiki-makefile.patch"
4211 "kiki-missing-includes.patch"
4212 "kiki-portability-64bit.patch"))))
4213 (build-system gnu-build-system)
4214 (arguments
4215 `(#:tests? #f ; there are no tests
4216 #:make-flags '("CXX=g++")
4217 #:phases
4218 (modify-phases %standard-phases
4219 (replace 'configure
4220 (lambda* (#:key inputs outputs #:allow-other-keys)
4221 (setenv "CPLUS_INCLUDE_PATH"
4222 (string-append (assoc-ref inputs "sdl-union")
4223 "/include/SDL:"
4224 (assoc-ref inputs "python")
4225 "/include/python2.7:"
4226 (getenv "CPLUS_INCLUDE_PATH")))
4227 (substitute* "src/main/main.cpp"
4228 (("#include <SDL.h>" line)
4229 (string-append line "
4230 #define K_INCLUDE_GLUT
4231 #include \"KIncludeTools.h\""))
4232 (("// initialize SDL" line)
4233 (string-append "glutInit(&argc,argv);\n" line)))
4234 (substitute* "src/main/KikiController.cpp"
4235 (("getenv\\(\"KIKI_HOME\"\\)")
4236 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4237 (substitute* "linux/Makefile"
4238 (("CXXOPTS =" line)
4239 (string-append line " -fpermissive"))
4240 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4241 (("PYTHONHOME =.*")
4242 (string-append "PYTHONHOME = "
4243 (assoc-ref inputs "python")
4244 "/lib/python2.7/"))
4245 (("\\$\\(GLLIBS\\)" line)
4246 (string-append line " -lm -lpython2.7")))
4247 (substitute* "src/main/KikiPythonWidget.h"
4248 (("#define __KikiPythonWidget" line)
4249 (string-append line "\n#include \"KikiPython.h\"")))
4250 #t))
4251 (add-before 'build 'build-kodilib
4252 (lambda* (#:key make-flags #:allow-other-keys)
4253 (with-directory-excursion "kodilib/linux"
4254 (zero? (apply system* "make" make-flags)))))
4255 (add-after 'build-kodilib 'chdir
4256 (lambda _ (chdir "linux") #t))
4257 (replace 'install
4258 (lambda* (#:key outputs #:allow-other-keys)
4259 (let* ((out (assoc-ref outputs "out"))
4260 (bin (string-append out "/bin"))
4261 (share (string-append out "/share/kiki")))
4262 (mkdir-p bin)
4263 (mkdir-p share)
4264 (install-file "kiki" bin)
4265 (copy-recursively "../py" (string-append share "/py"))
4266 (copy-recursively "../sound" (string-append share "/sound"))
4267 #t))))))
4268 (inputs
4269 `(("glu" ,glu)
4270 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4271 ("freeglut" ,freeglut-2.8)
4272 ("sdl-union" ,(sdl-union (list sdl
4273 sdl-mixer
4274 sdl-image)))
4275 ("python" ,python-2)))
4276 (native-inputs
4277 `(("swig" ,swig)))
4278 (home-page "http://kiki.sourceforge.net/")
4279 (synopsis "3D puzzle game")
4280 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4281 mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4282 small robot living in the nano world, repair its maker.")
4283 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4284 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4285 ;; for a statement from the author.
4286 (license license:public-domain)))
4287
4288 (define-public teeworlds
4289 (package
4290 (name "teeworlds")
4291 (version "0.6.4")
4292 (source (origin
4293 (method url-fetch)
4294 (uri (string-append "https://github.com/teeworlds/teeworlds/"
4295 "archive/" version "-release.tar.gz"))
4296 (file-name (string-append name "-" version ".tar.gz"))
4297 (sha256
4298 (base32
4299 "1mqhp6xjl75l49050cid36wxyjn1qr0vjx1c709dfg1lkvmgs6l3"))
4300 (modules '((guix build utils)))
4301 (snippet
4302 '(begin
4303 (for-each delete-file-recursively
4304 '("src/engine/external/wavpack/"
4305 "src/engine/external/zlib/"))
4306 #t))
4307 (patches
4308 (search-patches "teeworlds-use-latest-wavpack.patch"))))
4309 (build-system gnu-build-system)
4310 (arguments
4311 `(#:tests? #f ; no tests included
4312 #:phases
4313 (modify-phases %standard-phases
4314 (replace 'configure
4315 (lambda* (#:key outputs #:allow-other-keys)
4316 ;; Embed path to assets.
4317 (substitute* "src/engine/shared/storage.cpp"
4318 (("#define DATA_DIR.*")
4319 (string-append "#define DATA_DIR \""
4320 (assoc-ref outputs "out")
4321 "/share/teeworlds/data"
4322 "\"")))
4323
4324 ;; Bam expects all files to have a recent time stamp.
4325 (for-each (lambda (file)
4326 (utime file 1 1))
4327 (find-files "."))
4328
4329 ;; Do not use bundled libraries.
4330 (substitute* "bam.lua"
4331 (("if config.zlib.value == 1 then")
4332 "if true then")
4333 (("wavpack = .*")
4334 "wavpack = {}
4335 settings.link.libs:Add(\"wavpack\")\n"))
4336 (substitute* "src/engine/client/sound.cpp"
4337 (("#include <engine/external/wavpack/wavpack.h>")
4338 "#include <wavpack/wavpack.h>"))
4339 #t))
4340 (replace 'build
4341 (lambda _
4342 (zero? (system* "bam" "-a" "-v" "release"))))
4343 (replace 'install
4344 (lambda* (#:key outputs #:allow-other-keys)
4345 (let* ((out (assoc-ref outputs "out"))
4346 (bin (string-append out "/bin"))
4347 (data (string-append out "/share/teeworlds/data")))
4348 (mkdir-p bin)
4349 (mkdir-p data)
4350 (for-each (lambda (file)
4351 (install-file file bin))
4352 '("teeworlds" "teeworlds_srv"))
4353 (copy-recursively "data" data)
4354 #t))))))
4355 ;; FIXME: teeworlds bundles the sources of "pnglite", a two-file PNG
4356 ;; library without a build system.
4357 (inputs
4358 `(("freetype" ,freetype)
4359 ("glu" ,glu)
4360 ("mesa" ,mesa)
4361 ("sdl-union" ,(sdl-union (list sdl
4362 sdl-mixer
4363 sdl-image)))
4364 ("wavpack" ,wavpack)
4365 ("zlib" ,zlib)))
4366 (native-inputs
4367 `(("bam" ,bam)
4368 ("python" ,python-2)))
4369 (home-page "https://www.teeworlds.com")
4370 (synopsis "2D retro multiplayer shooter game")
4371 (description "Teeworlds is an online multiplayer game. Battle with up to
4372 16 players in a variety of game modes, including Team Deathmatch and Capture
4373 The Flag. You can even design your own maps!")
4374 (license license:bsd-3)))
4375
4376 (define-public enigma
4377 (package
4378 (name "enigma")
4379 (version "1.21")
4380 (source (origin
4381 (method url-fetch)
4382 (uri (string-append "mirror://sourceforge/enigma-game/"
4383 "Release%20" version "/enigma-"
4384 version ".tar.gz"))
4385 (sha256
4386 (base32
4387 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4388 (build-system gnu-build-system)
4389 (arguments
4390 `(#:configure-flags
4391 (list "--with-system-enet")
4392 #:phases
4393 (modify-phases %standard-phases
4394 (add-after 'unpack 'find-sdl
4395 (lambda _
4396 (substitute* "configure"
4397 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4398 (substitute* '("tools/ttf2bmf.cc"
4399 "lib-src/enigma-core/ecl_font.cc"
4400 "lib-src/enigma-core/ecl_video.cc"
4401 "lib-src/enigma-core/ecl_buffer.hh"
4402 "src/SoundEngine.cc"
4403 "src/SoundEngine.hh"
4404 "src/MusicManager.cc"
4405 "src/MusicManager.hh"
4406 "src/d_models.cc"
4407 "src/main.cc"
4408 "src/network.cc")
4409 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4410 (string-append "#include \"SDL/SDL_" header ".h\"")))
4411 (substitute* "src/main.cc"
4412 (("#include <SDL_(image|ttf|mixer).h>" line header)
4413 (string-append "#include \"SDL/SDL_" header ".h\"")))
4414 #t)))))
4415 (inputs
4416 `(("xerces-c" ,xerces-c)
4417 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4418 ("curl" ,curl)
4419 ("enet" ,enet)))
4420 (native-inputs
4421 `(("pkg-config" ,pkg-config)
4422 ("imagemagick" ,imagemagick)))
4423 (home-page "http://www.nongnu.org/enigma")
4424 (synopsis "Puzzle game with a dexterity component")
4425 (description "Enigma is a puzzle game with 550 unique levels. The object
4426 of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4427 Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4428 and most of all, countless hairy puzzles usually block your direct way to the
4429 Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4430 get bored) interact in many unexpected ways, and since many of them follow the
4431 laws of physics (Enigma’s special laws of physics, that is), controlling them
4432 with the mouse isn’t always trivial.")
4433 (license license:gpl2+)))
4434
4435 (define-public fillets-ng
4436 (package
4437 (name "fillets-ng")
4438 (version "1.0.1")
4439 (source (origin
4440 (method url-fetch)
4441 (uri (string-append "mirror://sourceforge/fillets/"
4442 "Fish%20Fillets%20-%20Next%20Generation/"
4443 version "/fillets-ng-" version ".tar.gz"))
4444 (sha256
4445 (base32
4446 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4447 (build-system gnu-build-system)
4448 (arguments
4449 `(#:configure-flags
4450 (list (string-append "--with-lua="
4451 (assoc-ref %build-inputs "lua")))
4452 #:make-flags
4453 (list (string-append "CFLAGS=-I"
4454 (assoc-ref %build-inputs "sdl-union")
4455 "/include/SDL")
4456 (string-append "CXXFLAGS=-I"
4457 (assoc-ref %build-inputs "sdl-union")
4458 "/include/SDL"))
4459 #:phases
4460 (modify-phases %standard-phases
4461 ;; Lua 5.1 does not provide it.
4462 (add-after 'unpack 'do-not-link-with-lualib
4463 (lambda _
4464 (substitute* "configure"
4465 (("-llualib") ""))
4466 #t))
4467 (add-after 'install 'install-data
4468 (lambda* (#:key inputs outputs #:allow-other-keys)
4469 (let ((data (string-append (assoc-ref outputs "out")
4470 "/share/games/fillets-ng")))
4471 (mkdir-p data)
4472 (zero? (system* "tar" "-xvf"
4473 (assoc-ref inputs "fillets-ng-data")
4474 "--strip-components=1"
4475 "-C" data))))))))
4476 (inputs
4477 `(("sdl-union" ,(sdl-union (list sdl
4478 sdl-mixer
4479 sdl-image
4480 sdl-ttf)))
4481 ("fribidi" ,fribidi)
4482 ("libx11" ,libx11)
4483 ("lua" ,lua-5.1)))
4484 (native-inputs
4485 `(("pkg-config" ,pkg-config)
4486 ("fillets-ng-data"
4487 ,(origin
4488 (method url-fetch)
4489 (uri (string-append "mirror://sourceforge/fillets/"
4490 "Fish%20Fillets%20-%20Next%20Generation/"
4491 version "/fillets-ng-data-" version ".tar.gz"))
4492 (sha256
4493 (base32
4494 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4495 (home-page "http://fillets.sourceforge.net/")
4496 (synopsis "Puzzle game")
4497 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4498 every of the seventy levels is always the same: find a safe way out. The fish
4499 utter witty remarks about their surroundings, the various inhabitants of their
4500 underwater realm quarrel among themselves or comment on the efforts of your
4501 fish. The whole game is accompanied by quiet, comforting music.")
4502 (license license:gpl2+)))
4503
4504 (define-public crawl
4505 (package
4506 (name "crawl")
4507 (version "0.20.0")
4508 (source
4509 (origin
4510 (method url-fetch)
4511 (uri (list
4512 ;; Older releases get moved into a versioned directory
4513 (string-append "http://crawl.develz.org/release/"
4514 (version-major+minor version) "/stone_soup-"
4515 version "-nodeps.tar.xz")
4516 ;; Only the latest release is in this directory
4517 (string-append "http://crawl.develz.org/release/stone_soup-"
4518 version "-nodeps.tar.xz")))
4519 (sha256
4520 (base32
4521 "0127dgldij2h4m7cf32yy9ndv4vcz03g4km71lmxrsi5mw7ljgpd"))
4522 (patches (search-patches "crawl-upgrade-saves.patch"))))
4523 (build-system gnu-build-system)
4524 (inputs
4525 `(("lua51" ,lua-5.1)
4526 ("ncurses" ,ncurses)
4527 ("sqlite" ,sqlite)
4528 ("zlib" ,zlib)))
4529 (native-inputs
4530 `(("bison" ,bison)
4531 ("flex" ,flex)
4532 ("perl" ,perl)
4533 ("pkg-config" ,pkg-config)))
4534 (arguments
4535 '(#:make-flags
4536 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4537 (out (assoc-ref %outputs "out")))
4538 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4539 (string-append "prefix=" out)
4540 "SAVEDIR=~/.crawl"
4541 ;; don't build any bundled dependencies
4542 "BUILD_LUA="
4543 "BUILD_SQLITE="
4544 "BUILD_ZLIB="
4545 "-Csource"))
4546 #:phases
4547 (modify-phases %standard-phases
4548 (delete 'configure)
4549 (delete 'check)
4550 ;; Test cases require the source to be rebuild with the -DDEBUG define.
4551 ;; Do 'check before 'build to avoid a 3rd build on make install.
4552 (add-before 'build 'check
4553 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4554 (setenv "HOME" (getcwd))
4555 ;; Fake a terminal for the test cases.
4556 (setenv "TERM" "xterm-256color")
4557 (zero? (apply system* "make" "debug" "test"
4558 (format #f "-j~d" (parallel-job-count))
4559 ;; Force command line build for test cases.
4560 (append make-flags '("GAME=crawl" "TILES=")))))))))
4561 (synopsis "Roguelike dungeon crawler game")
4562 (description "Dungeon Crawl Stone Soup is a roguelike adventure through
4563 dungeons filled with dangerous monsters in a quest to find the mystifyingly
4564 fabulous Orb of Zot.")
4565 (home-page "https://crawl.develz.org")
4566 (license (list license:gpl2+
4567 license:bsd-2
4568 license:bsd-3
4569 license:cc0
4570 license:expat
4571 license:zlib
4572 license:asl2.0))))
4573
4574 ;; The linter here claims that patch file names should start with the package
4575 ;; name. But, in this case, the patches are inherited from crawl with the
4576 ;; "crawl-" prefix instead of "crawl-tiles-".
4577 (define-public crawl-tiles
4578 (package
4579 (inherit crawl)
4580 (name "crawl-tiles")
4581 (arguments
4582 (substitute-keyword-arguments
4583 (package-arguments crawl)
4584 ((#:make-flags flags)
4585 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4586 (cons*
4587 (string-append "PROPORTIONAL_FONT=" dejavu
4588 "/share/fonts/truetype/DejaVuSans.ttf")
4589 (string-append "MONOSPACED_FONT=" dejavu
4590 "/share/fonts/truetype/DejaVuSansMono.ttf")
4591 "TILES=y"
4592 ;; Rename the executable to allow parallel installation with crawl.
4593 "GAME=crawl-tiles"
4594 ,flags)))))
4595 (inputs
4596 `(,@(package-inputs crawl)
4597 ("font-dejavu" ,font-dejavu)
4598 ("freetype6" ,freetype)
4599 ("glu" ,glu)
4600 ("libpng" ,libpng)
4601 ("sdl2" ,sdl2)
4602 ("sdl2-image" ,sdl2-image)
4603 ("sdl2-mixer" ,sdl2-mixer)))
4604 (native-inputs
4605 `(,@(package-native-inputs crawl)
4606 ;; TODO: Add advpng or pngcrush for additional PNG optimization.
4607 ("which" ,which)))
4608 (synopsis "Graphical roguelike dungeon crawler game")))
4609
4610 (define-public lugaru
4611 (package
4612 (name "lugaru")
4613 (version "1.2")
4614 (source (origin
4615 (method url-fetch)
4616 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
4617 name "-" version ".tar.xz"))
4618 (sha256
4619 (base32
4620 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4621 (build-system cmake-build-system)
4622 (arguments
4623 `(#:configure-flags
4624 (list "-DSYSTEM_INSTALL=ON")
4625 ;; no test target
4626 #:tests? #f))
4627 (native-inputs
4628 `(("pkg-config" ,pkg-config)))
4629 (inputs
4630 `(("sdl2" ,sdl2)
4631 ("glu" ,glu)
4632 ("libjpeg" ,libjpeg-turbo)
4633 ("libpng" ,libpng)
4634 ("openal" ,openal)
4635 ("vorbis" ,libvorbis)
4636 ("zlib" ,zlib)))
4637 (home-page "https://osslugaru.gitlab.io")
4638 (synopsis "Cross-platform third-person action game")
4639 (description "Lugaru is a third-person action game. The main character,
4640 Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
4641 In his quest to find those responsible for slaughtering his village, he uncovers
4642 a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
4643 and the starving wolves from a nearby den. Turner takes it upon himself to
4644 fight against their plot and save his fellow rabbits from slavery.")
4645 (license (list license:gpl2+ ; code
4646 ;; assets:
4647 license:cc-by-sa3.0
4648 license:cc-by-sa4.0))))
4649
4650 (define-public 0ad-data
4651 (package
4652 (name "0ad-data")
4653 (version "0.0.22-alpha")
4654 (source
4655 (origin
4656 (method url-fetch)
4657 (uri (string-append "http://releases.wildfiregames.com/0ad-"
4658 version "-unix-data.tar.xz"))
4659 (file-name (string-append name "-" version ".tar.xz"))
4660 (sha256
4661 (base32
4662 "0vknk9ay9h2p34r7mym2g066f3s3c5d5vmap0ckcs5b86h5cscjc"))
4663 (modules '((guix build utils)))
4664 (snippet
4665 #~(begin
4666 (for-each
4667 (lambda (name)
4668 (let* ((dir (string-append "binaries/data/mods/" name))
4669 (file (string-append dir "/" name ".zip"))
4670 (unzip #$(file-append unzip "/bin/unzip")))
4671 (system* unzip "-d" dir file)
4672 (delete-file file)))
4673 '("mod" "public"))
4674 #t))))
4675 (build-system trivial-build-system)
4676 (native-inputs `(("tar" ,tar)
4677 ("xz" ,xz)))
4678 (arguments
4679 `(#:modules ((guix build utils))
4680 #:builder
4681 (begin
4682 (use-modules (guix build utils))
4683 (let ((out (assoc-ref %outputs "out"))
4684 (source (assoc-ref %build-inputs "source"))
4685 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
4686 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
4687 (setenv "PATH" xz-path)
4688 (mkdir out)
4689 (zero? (system* tar "xvf" source "-C" out "--strip=3"))))))
4690 (synopsis "Data files for 0ad")
4691 (description "0ad-data provides the data files required by the game 0ad.")
4692 (home-page "https://play0ad.com")
4693 (license (list (license:fsdg-compatible
4694 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
4695 (license:license-comment
4696 (package-license font-bitstream-vera)))
4697 (package-license font-bitstream-vera)
4698 license:cc-by-sa3.0
4699 license:expat
4700 license:gfl1.0
4701 license:gpl2+
4702 license:gpl3+))))
4703
4704 (define-public 0ad
4705 (package
4706 (name "0ad")
4707 (version "0.0.22-alpha")
4708 (source
4709 (origin
4710 (method url-fetch)
4711 (uri (string-append "http://releases.wildfiregames.com/0ad-"
4712 version "-unix-build.tar.xz"))
4713 (file-name (string-append name "-" version ".tar.xz"))
4714 (sha256
4715 (base32
4716 "1cgmr4g5g9wv36v7ylbrvqhsjwgcsdgbqwc8zlqmnayk9zgkdpgx"))
4717 ;; A snippet here would cause a build failure because of timestamps
4718 ;; reset. See https://bugs.gnu.org/26734.
4719 ))
4720 (inputs
4721 `(("0ad-data" ,0ad-data)
4722 ("curl" ,curl)
4723 ("enet" ,enet)
4724 ("gloox" ,gloox)
4725 ("icu4c" ,icu4c)
4726 ("libpng" ,libpng)
4727 ("libvorbis" ,libvorbis)
4728 ("libxcursor" ,libxcursor)
4729 ("libxml2" ,libxml2)
4730 ("miniupnpc" ,miniupnpc)
4731 ("mozjs-38" ,mozjs-38)
4732 ("openal" ,openal)
4733 ("sdl2" ,sdl2)
4734 ("wxwidgets" ,wxwidgets)
4735 ("zlib" ,zlib)))
4736 (native-inputs
4737 `(("boost" ,boost)
4738 ("cmake" ,cmake)
4739 ("mesa" ,mesa)
4740 ("pkg-config" ,pkg-config)
4741 ("python-2" ,python-2)))
4742 (build-system gnu-build-system)
4743 (arguments
4744 `(#:phases
4745 (modify-phases %standard-phases
4746 (add-after 'unpack 'delete-bundles
4747 (lambda _
4748 (delete-file-recursively "libraries/source/spidermonkey")
4749 #t))
4750 (add-after 'unpack 'fix-x11-includes
4751 (lambda _
4752 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
4753 (("<Xlib.h>") "<X11/Xlib.h>"))
4754 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
4755 (("<Xatom.h>") "<X11/Xatom.h>"))
4756 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
4757 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
4758 #t))
4759 (replace 'configure
4760 (lambda* (#:key inputs outputs #:allow-other-keys)
4761 (let* ((jobs (number->string (parallel-job-count)))
4762 (out (assoc-ref outputs "out"))
4763 (lib (string-append out "/lib"))
4764 (data (string-append out "/share/0ad")))
4765 (setenv "JOBS" (string-append "-j" jobs))
4766 (setenv "CC" "gcc")
4767 (with-directory-excursion "build/workspaces"
4768 (zero? (system* "./update-workspaces.sh"
4769 (string-append "--libdir=" lib)
4770 (string-append "--datadir=" data)
4771 "--minimal-flags"
4772 ;; TODO: "--with-system-nvtt"
4773 "--with-system-mozjs38"))))))
4774 (add-before 'build 'chdir
4775 (lambda _
4776 (chdir "build/workspaces/gcc")
4777 #t))
4778 (delete 'check)
4779 (replace 'install
4780 (lambda* (#:key inputs outputs #:allow-other-keys)
4781 (chdir "../../../binaries")
4782 (let* ((out (assoc-ref outputs "out"))
4783 (bin (string-append out "/bin"))
4784 (lib (string-append out "/lib"))
4785 (data (string-append out "/share/0ad"))
4786 (applications (string-append out "/share/applications"))
4787 (pixmaps (string-append out "/share/pixmaps"))
4788 (0ad-data (assoc-ref inputs "0ad-data")))
4789 ;; data
4790 (copy-recursively "data" data)
4791 (for-each (lambda (file)
4792 (symlink (string-append 0ad-data "/" file)
4793 (string-append data "/" file)))
4794 '("config" "mods/mod" "mods/public" "tools"))
4795 ;; libraries
4796 (for-each (lambda (file)
4797 (install-file file lib))
4798 (find-files "system" "\\.so$"))
4799 ;; binaries
4800 (install-file "system/pyrogenesis" bin)
4801 (with-directory-excursion bin
4802 (symlink "pyrogenesis" "0ad"))
4803 ;; resources
4804 (with-directory-excursion "../build/resources"
4805 (install-file "0ad.desktop" applications)
4806 (install-file "0ad.png" pixmaps))
4807 #t)))
4808 (add-after 'install 'check
4809 (lambda _
4810 (with-directory-excursion "system"
4811 (zero? (system* "./test"))))))))
4812 (home-page "https://play0ad.com")
4813 (synopsis "3D real-time strategy game of ancient warfare")
4814 (description "0 A.D. is a real-time strategy (RTS) game of ancient
4815 warfare. It's a historically-based war/economy game that allows players to
4816 relive or rewrite the history of twelve ancient civilizations, each depicted
4817 at their peak of economic growth and military prowess.
4818
4819 0ad needs a window manager that supports 'Extended Window Manager Hints'.")
4820 (license (list license:bsd-2
4821 license:bsd-3
4822 license:expat
4823 license:gpl2+
4824 license:ibmpl1.0
4825 license:isc
4826 license:lgpl2.1
4827 license:lgpl3
4828 license:mpl2.0
4829 license:zlib))))
4830
4831 ;; There have been no official releases.
4832 (define-public open-adventure
4833 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
4834 (revision "2"))
4835 (package
4836 (name "open-adventure")
4837 (version (string-append "2.5-" revision "." (string-take commit 7)))
4838 (source (origin
4839 (method git-fetch)
4840 (uri (git-reference
4841 (url "https://gitlab.com/esr/open-adventure")
4842 (commit commit)))
4843 (file-name (string-append name "-" version "-checkout"))
4844 (sha256
4845 (base32
4846 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
4847 (build-system gnu-build-system)
4848 (arguments
4849 `(#:make-flags (list "CC=gcc")
4850 #:parallel-build? #f ; not supported
4851 #:phases
4852 (modify-phases %standard-phases
4853 (replace 'configure
4854 (lambda* (#:key inputs outputs #:allow-other-keys)
4855 ;; At this point linenoise is meant to be included,
4856 ;; so we have to really copy it into the working directory
4857 ;; of s.
4858 (let* ((linenoise (assoc-ref inputs "linenoise"))
4859 (noisepath (string-append linenoise "/include/linenoise"))
4860 (out (assoc-ref outputs "out")))
4861 (copy-recursively noisepath "linenoise"))
4862 #t))
4863 (add-before 'build 'use-echo
4864 (lambda _
4865 (substitute* "tests/Makefile"
4866 (("/bin/echo") (which "echo")))
4867 #t))
4868 (add-after 'build 'build-manpage
4869 (lambda _
4870 ;; This target is missing a dependency
4871 (substitute* "Makefile"
4872 ((".adoc.6:" line)
4873 (string-append line " advent.adoc")))
4874 (zero? (system* "make" ".adoc.6"))))
4875 ;; There is no install target
4876 (replace 'install
4877 (lambda* (#:key outputs #:allow-other-keys)
4878 (let* ((out (assoc-ref outputs "out"))
4879 (bin (string-append out "/bin"))
4880 (man (string-append out "/share/man/man6")))
4881 (install-file "advent" bin)
4882 (install-file "advent.6" man))
4883 #t)))))
4884 (native-inputs
4885 `(("asciidoc" ,asciidoc)
4886 ("linenoise" ,linenoise)
4887 ("python" ,python)
4888 ("python-pyyaml" ,python-pyyaml)))
4889 (home-page "https://gitlab.com/esr/open-adventure")
4890 (synopsis "Colossal Cave Adventure")
4891 (description "The original Colossal Cave Adventure from 1976 was the
4892 origin of all text adventures, dungeon-crawl (computer) games, and
4893 computer-hosted roleplaying games. This is the last version released by
4894 Crowther & Woods, its original authors, in 1995. It has been known as
4895 \"adventure 2.5\" and \"430-point adventure\".")
4896 (license license:bsd-2))))
4897
4898 (define-public tome4
4899 (package
4900 (name "tome4")
4901 (version "1.5.5")
4902 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
4903 (source
4904 (origin
4905 (method url-fetch)
4906 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
4907 version ".tar.bz2"))
4908 (sha256
4909 (base32
4910 "0v2qgdfpvdzd1bcbp9v8pfahj1bgczsq2d4xfhh5wg11jgjcwz03"))
4911 (modules '((guix build utils)))
4912 (snippet
4913 '(substitute* '("src/music.h" "src/tSDL.h")
4914 (("#elif defined(__FreeBSD__)" line)
4915 (string-append
4916 line " || defined(__GNUC__)"))))))
4917 (build-system gnu-build-system)
4918 (native-inputs
4919 `(("unzip" ,unzip)))
4920 (inputs
4921 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
4922 ("glu" ,glu)
4923 ("premake4" ,premake4)
4924 ("openal" ,openal)
4925 ("vorbis" ,libvorbis)
4926 ("luajit" ,luajit)))
4927 (arguments
4928 `(#:make-flags '("CC=gcc" "config=release")
4929 #:phases (modify-phases %standard-phases
4930 (replace 'configure
4931 (lambda _
4932 (zero? (system* "premake4" "gmake"))
4933 #t))
4934 (add-after 'set-paths 'set-sdl-paths
4935 (lambda* (#:key inputs #:allow-other-keys)
4936 (setenv "CPATH"
4937 (string-append (assoc-ref inputs "sdl-union")
4938 "/include/SDL2"))
4939 #t))
4940 (delete 'check)
4941 ;; premake doesn't provide install target
4942 (replace 'install
4943 (lambda* (#:key inputs outputs #:allow-other-keys)
4944 (let* ((out (assoc-ref outputs "out"))
4945 (usr (string-append out "/usr"))
4946 (bin (string-append out "/bin"))
4947 (licenses (string-append out "/share/licenses"))
4948 (documents (string-append out "/share/doc"))
4949 (pixmaps (string-append out "/share/pixmaps"))
4950 (icon "te4-icon.png")
4951 (data (string-append out "/share/" ,name))
4952 (applications (string-append
4953 out "/share/applications"))
4954 (unzip (string-append
4955 (assoc-ref inputs "unzip") "/bin/unzip"))
4956 (wrapper (string-append bin "/" ,name)))
4957 ;; icon
4958 (mkdir-p pixmaps)
4959 (system* unzip "-j"
4960 (string-append
4961 "game/engines/te4-" ,version ".teae")
4962 (string-append
4963 "data/gfx/" icon) "-d" pixmaps)
4964 ;; game executable
4965 (install-file "t-engine" data)
4966 (mkdir-p bin)
4967 (with-output-to-file wrapper
4968 (lambda ()
4969 (display
4970 (string-append
4971 "#!/bin/sh\n"
4972 ;; No bootstrap code found,
4973 ;; defaulting to working directory
4974 ;; for engine code!
4975 "cd " data "\n"
4976 "exec -a tome4 ./t-engine \"$@\"\n"))))
4977 (chmod wrapper #o555)
4978 ;; licenses
4979 (for-each (lambda (file)
4980 (install-file file licenses))
4981 '("COPYING" "COPYING-MEDIA"))
4982 ;; documents
4983 (for-each (lambda (file)
4984 (install-file file documents))
4985 '("CONTRIBUTING" "CREDITS"))
4986 ;; data
4987 (copy-recursively "bootstrap" (string-append
4988 data "/bootstrap"))
4989 (copy-recursively "game" (string-append data "/game"))
4990 ;; launcher
4991 (mkdir-p applications)
4992 (with-output-to-file (string-append applications "/"
4993 ,name ".desktop")
4994 (lambda ()
4995 (display
4996 (string-append
4997 "[Desktop Entry]
4998 Name=ToME4
4999 Comment=" ,synopsis "\n"
5000 "Exec=" ,name "\n"
5001 "Icon=" icon "\n"
5002 "Terminal=false
5003 Type=Application
5004 Categories=Game;RolePlaying;\n")))))
5005 #t)))))
5006 (home-page "https://te4.org")
5007 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5008 combat and advanced character building. Play as one of many unique races and
5009 classes in the lore-filled world of Eyal, exploring random dungeons, facing
5010 challenging battles, and developing characters with your own tailored mix of
5011 abilities and powers. With a modern graphical and customisable interface,
5012 intuitive mouse control, streamlined mechanics and deep, challenging combat,
5013 Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5014 (license license:gpl3+)))