gnu: Add teeworlds.
[jackhill/guix/guix.git] / gnu / packages / games.scm
CommitLineData
490c6528
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 John Darrington <jmd@gnu.org>
5edf2f05 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
d8f37956 4;;; Copyright © 2014, 2015, 2016 David Thompson <dthompson2@worcester.edu>
e3f755f4 5;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org>
3cf118a1 6;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
bb3b71ce 7;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
ce0614dd 8;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
e0a7d364 10;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
d7c4619b 11;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
fc936b65 12;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
b76c94e6 13;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
43337a73 14;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
eccfa301 15;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
e11b2752 16;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
0c15230d 17;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
365950ce 18;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
fea1f275 19;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
345504c7 20;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
e9687748 21;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
26a657f0 22;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
aa206271 23;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
ecc39b3f 24;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
b3de5ff2 25;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
a56145e1 26;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
efc12a81 27;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
fb731c92 28;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
ddce0903 29;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
490c6528
JD
30;;;
31;;; This file is part of GNU Guix.
32;;;
33;;; GNU Guix is free software; you can redistribute it and/or modify it
34;;; under the terms of the GNU General Public License as published by
35;;; the Free Software Foundation; either version 3 of the License, or (at
36;;; your option) any later version.
37;;;
38;;; GNU Guix is distributed in the hope that it will be useful, but
39;;; WITHOUT ANY WARRANTY; without even the implied warranty of
40;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41;;; GNU General Public License for more details.
42;;;
43;;; You should have received a copy of the GNU General Public License
44;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
45
46(define-module (gnu packages games)
158f5734 47 #:use-module (ice-9 match)
024e2c17
DT
48 #:use-module ((guix licenses) #:prefix license:)
49 #:use-module (guix utils)
490c6528
JD
50 #:use-module (guix packages)
51 #:use-module (guix download)
c23c50c7 52 #:use-module (guix git-download)
e11b2752 53 #:use-module (guix svn-download)
a83c6a64 54 #:use-module (gnu packages)
3307c787 55 #:use-module (gnu packages algebra)
e11b2752 56 #:use-module (gnu packages autotools)
03d521f9 57 #:use-module (gnu packages backup)
7e51e5bc 58 #:use-module (gnu packages base)
b77e3a1c 59 #:use-module (gnu packages build-tools)
11c38cbe 60 #:use-module (gnu packages admin)
f2fac359 61 #:use-module (gnu packages audio)
7e2e1155 62 #:use-module (gnu packages avahi)
a83c6a64 63 #:use-module (gnu packages boost)
0b5d078f 64 #:use-module (gnu packages documentation)
d2563973 65 #:use-module (gnu packages fltk)
c23c50c7
RW
66 #:use-module (gnu packages fribidi)
67 #:use-module (gnu packages game-development)
490c6528 68 #:use-module (gnu packages gettext)
9b1ada4e 69 #:use-module (gnu packages ghostscript)
490c6528 70 #:use-module (gnu packages gl)
bf0018cd 71 #:use-module (gnu packages glib)
490c6528 72 #:use-module (gnu packages gnome)
9b1ada4e 73 #:use-module (gnu packages gperf)
490c6528
JD
74 #:use-module (gnu packages gtk)
75 #:use-module (gnu packages guile)
0b5d078f 76 #:use-module (gnu packages imagemagick)
bf0018cd 77 #:use-module (gnu packages libcanberra)
67fa7a27 78 #:use-module (gnu packages libunwind)
aa6f3912 79 #:use-module (gnu packages haskell)
c23c50c7 80 #:use-module (gnu packages mp3)
26a657f0 81 #:use-module (gnu packages music)
e9687748 82 #:use-module (gnu packages icu4c)
e55354b8 83 #:use-module (gnu packages image)
3cf118a1 84 #:use-module (gnu packages ncurses)
9b1ada4e 85 #:use-module (gnu packages netpbm)
b3de5ff2 86 #:use-module (gnu packages ocaml)
bf0018cd
JD
87 #:use-module (gnu packages python)
88 #:use-module (gnu packages readline)
490c6528
JD
89 #:use-module (gnu packages xorg)
90 #:use-module (gnu packages pkg-config)
5f96f303 91 #:use-module (gnu packages databases)
3da5dca3 92 #:use-module (gnu packages sdl)
bd71525b 93 #:use-module (gnu packages swig)
ae9cb418 94 #:use-module (gnu packages texinfo)
bb3b71ce 95 #:use-module (gnu packages check)
d7c4619b 96 #:use-module (gnu packages fonts)
bb3b71ce 97 #:use-module (gnu packages fontutils)
c449a076 98 #:use-module (gnu packages gstreamer)
a6b55314 99 #:use-module (gnu packages bash)
a21b42e2 100 #:use-module (gnu packages perl)
13d18626
SB
101 #:use-module (gnu packages qt)
102 #:use-module (gnu packages compression)
19b396bf
DT
103 #:use-module (gnu packages pulseaudio)
104 #:use-module (gnu packages linux)
024e2c17 105 #:use-module (gnu packages zip)
6e206ac7
DT
106 #:use-module (gnu packages xiph)
107 #:use-module (gnu packages curl)
108 #:use-module (gnu packages lua)
72b703cd 109 #:use-module (gnu packages video)
72b703cd 110 #:use-module (gnu packages xml)
67fa7a27 111 #:use-module (gnu packages tcl)
cf60e76a 112 #:use-module (gnu packages xdisorg)
751c7040 113 #:use-module (gnu packages tls)
114 #:use-module (gnu packages pcre)
5430dbd9 115 #:use-module (gnu packages cyrus-sasl)
0b608ec4
AI
116 #:use-module (gnu packages messaging)
117 #:use-module (gnu packages upnp)
118 #:use-module (gnu packages wxwidgets)
a6b55314 119 #:use-module (guix build-system gnu)
aa6f3912 120 #:use-module (guix build-system haskell)
b0488fe5 121 #:use-module (guix build-system python)
19b396bf 122 #:use-module (guix build-system cmake)
a6b55314 123 #:use-module (guix build-system trivial))
490c6528 124
0b5d078f
KK
125(define-public freedoom
126 (package
127 (name "freedoom")
3c2b8333 128 (version "0.11.2")
0b5d078f
KK
129 (source (origin
130 (method url-fetch)
131 (uri (string-append "https://github.com/" name "/" name
132 "/archive/v" version ".tar.gz"))
133 (file-name (string-append name "-" version ".tar.gz"))
134 (sha256
135 (base32
3c2b8333 136 "0b9k61f97spivi75f76zwwg8a3bgc6iil2hidqfj8s50lhqggwbb"))))
0b5d078f
KK
137 (build-system gnu-build-system)
138 (arguments
139 '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out")))
140 #:parallel-build? #f
141 #:tests? #f ; no check target
142 #:phases
143 (modify-phases %standard-phases
144 (add-before 'unpack 'no (lambda _ #t))
145 (replace 'configure
146 (lambda* (#:key inputs outputs #:allow-other-keys)
147 (let* ((dejavu (assoc-ref inputs "font-dejavu"))
148 (freedoom (assoc-ref outputs "out"))
149 (wad-dir (string-append freedoom "/share/games/doom")))
150 ;; Replace the font-searching function in a shell
151 ;; script with a direct path to the required font.
152 ;; This is necessary because ImageMagick can only find the
153 ;; most basic fonts while in the build environment.
154 (substitute* "graphics/titlepic/create_caption"
155 (("font=\\$\\(find_font.*$")
156 (string-append
157 "font=" dejavu
158 "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n")))
159 ;; Make icon creation reproducible.
160 (substitute* "dist/Makefile"
161 (("freedm.png")
162 "-define png:exclude-chunks=date freedm.png")
163 (("freedoom1.png")
164 "-define png:exclude-chunks=date freedoom1.png")
165 (("freedoom2.png")
166 "-define png:exclude-chunks=date freedoom2.png"))
167 ;; Make sure that the install scripts know where to find
168 ;; the appropriate WAD files.
169 (substitute* "dist/freedoom"
170 (("IWAD=freedm.wad")
171 (string-append "IWAD=" wad-dir "/freedm.wad"))
172 (("IWAD=freedoom1.wad")
173 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
174 (("IWAD=freedoom2.wad")
175 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
176 #t))))))
177 (native-inputs
178 `(("asciidoc" ,asciidoc)
179 ("deutex" ,deutex)
180 ("font-dejavu" ,font-dejavu)
181 ("imagemagick" ,imagemagick)
182 ("python" ,python-2)))
183 (inputs
184 `(("prboom-plus" ,prboom-plus)))
185 (home-page "https://freedoom.github.io/")
186 (synopsis "Free content game based on the Doom engine")
187 (description
188 "The Freedoom project aims to create a complete free content first person
189shooter game. Freedoom by itself is just the raw material for a game: it must
190be paired with a compatible game engine (such as @code{prboom-plus}) to be
191played. Freedoom complements the Doom engine with free levels, artwork, sound
192effects and music to make a completely free game.")
193 (license license:bsd-3)))
194
bf0018cd
JD
195(define-public gnubg
196 (package
197 (name "gnubg")
198 (version "1.02")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
203 version ".000-sources." "tar.gz"))
204 (sha256
205 (base32
206 "015mvjk2iw1cg1kxwxfnvp2rxb9cylf6yc39i30fdy414k07zkky"))))
207 (build-system gnu-build-system)
208 (inputs `(("glib" ,glib)
209 ("readline" ,readline)
210 ("gtk+" ,gtk+-2)
211 ("mesa" ,mesa)
6a95024c 212 ("glu" ,glu)
bf0018cd
JD
213 ("gtkglext" ,gtkglext)
214 ("sqlite" ,sqlite)
215 ("libcanberra" ,libcanberra)))
216 (native-inputs `(("python-2" ,python-2)
217 ("pkg-config" ,pkg-config)))
07af3e5e 218 (home-page "http://gnubg.org")
bf0018cd
JD
219 (synopsis "Backgammon game")
220 (description "The GNU backgammon application can be used for playing, analyzing and
221teaching the game. It has an advanced evaluation engine based on artificial
222neural networks suitable for both beginners and advanced players. In
223addition to a command-line interface, it also features an attractive, 3D
224representation of the playing board.")
024e2c17 225 (license license:gpl3+)))
bf0018cd 226
490c6528
JD
227(define-public gnubik
228 (package
229 (name "gnubik")
ecc39b3f 230 (version "2.4.3")
490c6528
JD
231 (source
232 (origin
233 (method url-fetch)
234 (uri (string-append "mirror://gnu/gnubik/gnubik-"
235 version ".tar.gz"))
236 (sha256
237 (base32
ecc39b3f 238 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
239 (build-system gnu-build-system)
240 (inputs `(("gtk+" ,gtk+-2)
241 ("mesa" ,mesa)
276a8f71 242 ("glu" ,glu)
490c6528
JD
243 ("libx11" ,libx11)
244 ("guile" ,guile-2.0)
245 ("gtkglext" ,gtkglext)))
b94a6ca0 246 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
247 ("pkg-config" ,pkg-config)))
248 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
249 (synopsis "3d Rubik's cube game")
250 (description
251 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
252each of its faces have a uniform color. The game is customizable, allowing
253you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 254You may even apply photos to the faces instead of colors. The game is
490c6528 255scriptable with Guile.")
024e2c17 256 (license license:gpl3+)))
3da5dca3 257
a20b084a
JD
258(define-public gnushogi
259 (package
260 (name "gnushogi")
261 (version "1.4.2")
262 (source
263 (origin
264 (method url-fetch)
265 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
266 version ".tar.gz"))
267 (sha256
268 (base32
269 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
270 (arguments `(#:tests? #f)) ;; No check target.
271 (build-system gnu-build-system)
6fd52309 272 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
273 (synopsis "The game of Shogi (Japanese chess)")
274 (description "GNU Shogi is a program that plays the game Shogi (Japanese
275Chess). It is similar to standard chess but this variant is far more complicated.")
276 (license license:gpl3+)))
277
26a657f0
KK
278(define-public prboom-plus
279 (package
280 (name "prboom-plus")
281 (version "2.5.1.4")
282 (source (origin
283 (method url-fetch)
284 (uri (string-append "mirror://sourceforge/" name "/" name "/"
285 version "/" name "-" version ".tar.gz"))
286 (sha256
287 (base32
288 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
289 (modules '((guix build utils)))
290 (snippet
291 '(substitute* "src/version.c"
292 (("__DATE__") "")
293 (("__TIME__") "")))))
294 (build-system gnu-build-system)
295 (arguments
296 '(#:configure-flags '("--disable-cpu-opt")
297 #:make-flags `(,(string-append "gamesdir="
298 (assoc-ref %outputs "out") "/bin"))
299 #:phases
300 (modify-phases %standard-phases
301 (add-after 'set-paths 'set-sdl'paths
302 (lambda* (#:key inputs #:allow-other-keys)
303 (setenv "CPATH"
304 (string-append (assoc-ref inputs "sdl-union")
305 "/include/SDL"))
306 #t)))))
307 (inputs
308 `(("fluidsynth" ,fluidsynth)
309 ("glu" ,glu)
310 ("libmad" ,libmad)
311 ("libpng" ,libpng)
312 ("libvorbis" ,libvorbis)
313 ("pcre" ,pcre)
314 ("portmidi" ,portmidi)
315 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
316 (home-page "http://prboom-plus.sourceforge.net/")
317 (synopsis "Version of the classic 3D shoot'em'up game Doom")
318 (description
319 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
320 (license license:gpl2+)))
321
a20b084a
JD
322(define-public xshogi
323 (package
324 (name "xshogi")
325 (version "1.4.2")
326 (source
327 (origin
328 (method url-fetch)
329 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
330 version ".tar.gz"))
331 (sha256
332 (base32
333 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
334 (build-system gnu-build-system)
335 (inputs
336 `(("libxaw" ,libxaw)
337 ("libxt" ,libxt)))
6fd52309 338 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 339 (synopsis "User interface for gnushogi")
a20b084a
JD
340 (description "A graphical user interface for the package @code{gnushogi}.")
341 ;; Contains a copy of GPLv3 but the licence notices simply
342 ;; state "GNU General Public Licence" without specifying a version.
343 (license license:gpl1+)))
344
3da5dca3
DT
345(define-public abbaye
346 (package
347 (name "abbaye")
efc12a81 348 (version "2.0.1")
3da5dca3
DT
349 (source
350 (origin
351 (method url-fetch)
efc12a81
AFN
352 (uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/"
353 "archive/v" version ".tar.gz"))
354 (file-name (string-append name "-" version ".tar.gz"))
3da5dca3
DT
355 (sha256
356 (base32
efc12a81
AFN
357 "1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3"))
358 (modules '((guix build utils)))
359 (snippet
360 ;; Unbundle fonts.
361 '(delete-file-recursively "fonts"))))
3da5dca3
DT
362 (build-system gnu-build-system)
363 (arguments
efc12a81 364 '(#:make-flags '("CC=gcc")
aec05972
AK
365 #:phases (modify-phases %standard-phases
366 (add-after 'set-paths 'set-sdl-paths
61599438
AK
367 (lambda* (#:key inputs #:allow-other-keys)
368 (setenv "CPATH"
369 (string-append (assoc-ref inputs "sdl-union")
370 "/include/SDL"))))
aec05972
AK
371 (add-after 'patch-source-shebangs 'patch-makefile
372 (lambda* (#:key outputs #:allow-other-keys)
373 ;; Replace /usr with package output directory.
efc12a81
AFN
374 (substitute* "Makefile"
375 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
376 (add-before 'install 'make-install-dirs
377 (lambda* (#:key outputs #:allow-other-keys)
378 (let ((prefix (assoc-ref outputs "out")))
379 ;; Create directories that the makefile assumes exist.
380 (mkdir-p (string-append prefix "/bin"))
381 (mkdir-p (string-append prefix "/share/applications"))
382 (mkdir-p (string-append prefix "/share/pixmaps")))))
383 ;; No configure script.
384 (delete 'configure))
3da5dca3
DT
385 #:tests? #f)) ;; No check target.
386 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
387 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
388 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
389 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
390 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
391France. The Cathars, who preach about good Christian beliefs, were being
392expelled by the Catholic Church out of the Languedoc region in France. One of
393them, called Jean Raymond, found an old church in which to hide, not knowing
394that beneath its ruins lay buried an ancient evil.")
efc12a81 395 (license license:gpl3)))
a83c6a64 396
b76c94e6
CAW
397(define-public angband
398 (package
399 (name "angband")
400 (version "4.0.5")
401 (source
402 (origin
403 (method url-fetch)
404 (uri (string-append "http://rephial.org/downloads/4.0/"
405 "angband-" version ".tar.gz"))
406 (sha256
407 (base32
408 "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd"))
409 (modules '((guix build utils)))
410 (snippet
411 ;; So, some of the sounds/graphics/tilesets are under different
412 ;; licenses... some of them even nonfree! This is a console-only
413 ;; version of this package so we just remove them.
414 ;; In the future, if someone tries to make a graphical variant of
415 ;; this package, they can deal with that mess themselves. :)
416 '(begin
417 (for-each
418 (lambda (subdir)
419 (let ((lib-subdir (string-append "lib/" subdir)))
420 (delete-file-recursively lib-subdir)))
421 '("fonts" "icons" "sounds" "tiles"))
422 (substitute* "lib/Makefile"
423 ;; And don't try to invoke makefiles in the directories we removed
424 (("gamedata customize help screens fonts tiles sounds icons user")
425 "gamedata customize help screens user"))))))
426 (build-system gnu-build-system)
427 (arguments
428 `(#:tests? #f ;no check target
429 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
430 #:phases
431 (modify-phases %standard-phases
432 (add-after 'unpack 'autogen.sh
433 (lambda _
434 (substitute* "acinclude.m4"
435 (("ncursesw5-config") "ncursesw6-config"))
436 (zero? (system* "sh" "autogen.sh")))))))
437 (native-inputs
438 `(("autoconf" ,autoconf)
439 ("automake" ,automake)))
440 (inputs `(("ncurses" ,ncurses)))
441 (home-page "http://rephial.org/")
442 (synopsis "Dungeon exploration roguelike")
443 (description "Angband is a Classic dungeon exploration roguelike. Explore
444the depths below Angband, seeking riches, fighting monsters, and preparing to
445fight Morgoth, the Lord of Darkness.")
446 (license license:gpl2)))
447
a83c6a64
EB
448(define-public pingus
449 (package
450 (name "pingus")
451 (version "0.7.6")
452 (source
453 (origin
454 (method url-fetch)
f0badf98 455 (uri (string-append "https://github.com/Pingus/pingus/archive/v"
456 version ".tar.gz"))
457 (file-name (string-append name "-" version ".tar.gz"))
a83c6a64
EB
458 (sha256
459 (base32
f0badf98 460 "0r9v6as5vi7skvvy7b0fcaimhdlzmik64pyy68plgljhsghqkkf4"))
fc1adab1 461 (patches (search-patches "pingus-sdl-libs-config.patch"))))
a83c6a64
EB
462 (build-system gnu-build-system)
463 (native-inputs `(("pkg-config" ,pkg-config)
464 ("scons" ,scons)))
465 (inputs `(("sdl" ,sdl)
466 ("sdl-image" ,sdl-image)
467 ("sdl-mixer" ,sdl-mixer)
468 ("mesa" ,mesa)
00c09300 469 ("glu" ,glu)
a83c6a64
EB
470 ("libpng" ,libpng)
471 ("boost" ,boost)))
472 (arguments
3f127147 473 '(#:tests? #f ; no check target
a83c6a64 474 #:phases
3f127147
TGR
475 (modify-phases %standard-phases
476 (delete 'configure) ; no configure script
477 (replace 'install
478 (lambda* (#:key outputs #:allow-other-keys)
479 (zero? (system* "make" "install"
480 (string-append "PREFIX="
481 (assoc-ref outputs "out")))))))))
a83c6a64
EB
482 (home-page "http://pingus.seul.org/welcome.html")
483 (synopsis "Lemmings clone")
484 (description
485 "Pingus is a free Lemmings-like puzzle game in which the player takes
486command of a bunch of small animals and has to guide them through levels.
487Since the animals walk on their own, the player can only influence them by
488giving them commands, like build a bridge, dig a hole, or redirect all animals
489in the other direction. Multiple such commands are necessary to reach the
490level's exit. The game is presented in a 2D side view.")
491 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 492 (license license:gpl3+)))
dff62423
JD
493
494(define-public talkfilters
495 (package
496 (name "talkfilters")
497 (version "2.3.8")
498 (source
499 (origin
500 (method url-fetch)
501 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 502 name "-" version ".tar.gz"))
dff62423
JD
503 (sha256
504 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
505 (build-system gnu-build-system)
6fd52309 506 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
507 (synopsis "Convert English text to humorous dialects")
508 (description "The GNU Talk Filters are programs that convert English text
509into stereotyped or otherwise humorous dialects. The filters are provided as
510a C library, so they can easily be integrated into other programs.")
024e2c17
DT
511 (license license:gpl2+)))
512
3cf118a1
CS
513(define-public cmatrix
514 (package
515 (name "cmatrix")
516 (version "1.2a")
517 (source
518 (origin
519 (method url-fetch)
520 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
521 ".tar.gz"))
522 (sha256
523 (base32
524 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
525 (build-system gnu-build-system)
526 (arguments
527 '(#:phases
3f127147
TGR
528 (modify-phases %standard-phases
529 (replace 'configure
530 (lambda* (#:key outputs #:allow-other-keys)
531 ;; This old ‘configure’ script doesn't support
532 ;; variables passed as arguments.
533 (let ((out (assoc-ref outputs "out")))
534 (setenv "CONFIG_SHELL" (which "bash"))
535 (zero?
536 (system* "./configure"
537 (string-append "--prefix=" out)))))))))
3cf118a1 538 (inputs `(("ncurses" ,ncurses)))
07af3e5e 539 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
540 (synopsis "Simulate the display from \"The Matrix\"")
541 (description "CMatrix simulates the display from \"The Matrix\" and is
542based on the screensaver from the movie's website. It works with terminal
543settings up to 132x300 and can scroll lines all at the same rate or
544asynchronously and at a user-defined speed.")
024e2c17 545 (license license:gpl2+)))
ae9cb418
JD
546
547(define-public chess
548 (package
549 (name "chess")
4d73cb54 550 (version "6.2.4")
ae9cb418
JD
551 (source
552 (origin
553 (method url-fetch)
554 (uri (string-append "mirror://gnu/chess/gnuchess-" version
555 ".tar.gz"))
556 (sha256
557 (base32
4d73cb54 558 "1vw2w3jwnmn44d5vsw47f8y70xvxcsz9m5msq9fgqlzjch15qhiw"))))
ae9cb418 559 (build-system gnu-build-system)
6fd52309 560 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
561 (synopsis "Full chess implementation")
562 (description "GNU Chess is a chess engine. It allows you to compete
563against the computer in a game of chess, either through the default terminal
564interface or via an external visual interface such as GNU XBoard.")
024e2c17 565 (license license:gpl3+)))
ae9cb418 566
a6b55314 567(define freedink-engine
bb3b71ce
SB
568 (package
569 (name "freedink-engine")
570 (version "108.4")
571 (source (origin
572 (method url-fetch)
573 (uri (string-append "mirror://gnu/freedink/freedink-" version
574 ".tar.gz"))
575 (sha256
576 (base32
577 "08c51imfjfcydm7h0va09z8qfw5nc837bi2x754ni2z737hb5kw2"))))
578 (build-system gnu-build-system)
579 (arguments `(#:configure-flags '("--disable-embedded-resources")))
b94a6ca0 580 (native-inputs `(("gettext" ,gettext-minimal)
bb3b71ce
SB
581 ("pkg-config" ,pkg-config)))
582 (inputs `(("sdl" ,sdl)
583 ("sdl-image" ,sdl-image)
584 ("sdl-mixer" ,sdl-mixer)
585 ("sdl-ttf" ,sdl-ttf)
586 ("sdl-gfx" ,sdl-gfx)
587 ("fontconfig" ,fontconfig)
588 ("check" ,check)))
6fd52309 589 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
590 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
591 (description
592 "GNU FreeDink is a free and portable re-implementation of the engine
593for the role-playing game Dink Smallwood. It supports not only the original
594game data files but it also supports user-produced game mods or \"D-Mods\".
595To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 596 (license license:gpl3+)))
bb3b71ce 597
a6b55314 598(define freedink-data
bb3b71ce
SB
599 (package
600 (name "freedink-data")
601 (version "1.08.20140901")
602 (source (origin
603 (method url-fetch)
604 (uri (string-append "mirror://gnu/freedink/freedink-data-"
605 version ".tar.gz"))
606 (sha256
607 (base32
608 "04f1aa8gfz30qkgv7chjz5n1s8v5hbqs01h2113cq1ylm3isd5sp"))))
609 (build-system gnu-build-system)
610 (arguments
3f127147
TGR
611 `(#:phases
612 (modify-phases %standard-phases
613 (delete 'configure) ; no configure script
614 (delete 'check)) ; no tests
bb3b71ce 615 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
6fd52309 616 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
617 (synopsis "Game data for GNU Freedink")
618 (description
619 "This package contains the game data of GNU Freedink.")
024e2c17 620 (license license:gpl3+)))
bb3b71ce
SB
621
622;; TODO: Add freedink-dfarc when there's a wxWidgets package.
623
a6b55314
LC
624(define-public freedink
625 ;; This is a wrapper that tells the engine where to find the data.
626 (package (inherit freedink-engine)
627 (name "freedink")
628 (build-system trivial-build-system)
629 (arguments
630 '(#:builder (begin
631 (use-modules (guix build utils))
632
633 (let* ((output (assoc-ref %outputs "out"))
634 (bin (string-append output "/bin"))
635 (executable (string-append bin "/freedink")))
636 (mkdir-p bin)
637 (call-with-output-file executable
638 (lambda (port)
639 (format port "#!~a/bin/sh
640exec ~a/bin/freedink -refdir ~a/share/dink\n"
641 (assoc-ref %build-inputs "bash")
642 (assoc-ref %build-inputs "engine")
643 (assoc-ref %build-inputs "data"))
644 (chmod port #o777)))))
645 #:modules ((guix build utils))))
646 (inputs `(("engine" ,freedink-engine)
647 ("data" ,freedink-data)
648 ("bash" ,bash)))
649 (native-inputs '())))
650
ae9cb418
JD
651(define-public xboard
652 (package
653 (name "xboard")
9835458f 654 (version "4.9.1")
ae9cb418
JD
655 (source
656 (origin
657 (method url-fetch)
658 (uri (string-append "mirror://gnu/xboard/xboard-" version
659 ".tar.gz"))
660 (sha256
661 (base32
9835458f 662 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 663 (build-system gnu-build-system)
4e530049
SB
664 (inputs
665 `(("gtk+" ,gtk+-2)
666 ("librsvg" ,librsvg)))
9835458f
EF
667 (native-inputs
668 `(("texinfo" ,texinfo)
669 ("pkg-config" ,pkg-config)))
6fd52309 670 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
671 (synopsis "Graphical user interface for chess programs")
672 (description "GNU XBoard is a graphical board for all varieties of chess,
673including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
674and Makruk. Several lesser-known variants are also supported. It presents a
675fully interactive graphical interface and it can load and save games in the
676Portable Game Notation.")
024e2c17 677 (license license:gpl3+)))
11c38cbe
JD
678
679
680(define-public xboing
681 (package
682 (name "xboing")
683 (version "2.4")
684 (source
685 (origin
686 (method url-fetch)
687 (uri (string-append "http://www.techrescue.org/xboing/xboing"
688 version ".tar.gz"))
689 (sha256
690 (base32 "16m2si8wmshxpifk861vhpqviqxgcg8bxj6wfw8hpnm4r2w9q0b7"))))
691 (arguments
692 `(#:tests? #f
693 #:phases
3f127147
TGR
694 (modify-phases %standard-phases
695 (replace 'configure
696 (lambda* (#:key outputs #:allow-other-keys)
10903356 697
3f127147
TGR
698 (substitute* "Imakefile"
699 (("XPMINCLUDE[\t ]*= -I/usr/X11/include/X11")
700 (string-append "XPMINCLUDE = -I"
701 (assoc-ref %build-inputs "libxpm")
702 "/include/X11")))
10903356 703
3f127147
TGR
704 (substitute* "Imakefile"
705 (("XBOING_DIR = \\.") "XBOING_DIR=$(PROJECTROOT)"))
10903356 706
3f127147 707 ;; FIXME: HIGH_SCORE_FILE should be set to somewhere writeable
10903356 708
3f127147
TGR
709 (zero? (system* "xmkmf" "-a"
710 (string-append "-DProjectRoot="
711 (assoc-ref outputs "out"))))))
712 (replace 'install
713 (lambda* (#:key outputs #:allow-other-keys)
714 (and
715 (zero? (system* "make" "install.man"))
716 (zero? (system* "make" "install"))))))))
11c38cbe
JD
717 (inputs `(("libx11" ,libx11)
718 ("libxext" ,libxext)
719 ("libxpm" ,libxpm)))
720 (native-inputs `(("imake" ,imake)
721 ("inetutils" ,inetutils)
722 ("makedepend" ,makedepend)))
723 (build-system gnu-build-system)
724 (home-page "http://www.techrescue.org/xboing")
725 (synopsis "Ball and paddle game")
726 (description "XBoing is a blockout type game where you have a paddle which
727you control to bounce a ball around the game zone destroying blocks with a
35b9e423
EB
728proton ball. Each block carries a different point value. The more blocks you
729destroy, the better your score. The person with the highest score wins.")
024e2c17
DT
730 (license (license:x11-style "file://COPYING"
731 "Very similar to the X11 licence."))))
a21b42e2
SB
732
733(define-public gtypist
734 (package
735 (name "gtypist")
736 (version "2.9.5")
737 (source (origin
738 (method url-fetch)
739 (uri (string-append "mirror://gnu/gtypist/gtypist-"
740 version ".tar.xz"))
741 (sha256
742 (base32
743 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
744 (modules '((guix build utils)))
745 (snippet
746 ;; We do not provide `ncurses.h' within an `ncursesw'
747 ;; sub-directory, so patch the source accordingly. See
748 ;; <http://bugs.gnu.org/19018>.
749 '(for-each (lambda (file)
750 (substitute* file
751 (("ncursesw/ncurses.h")
752 "ncurses.h")))
753 (find-files "." "configure$|\\.c$")))))
754 (build-system gnu-build-system)
755 (inputs `(("ncurses" ,ncurses)
756 ("perl" ,perl)))
6fd52309 757 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
758 (synopsis "Typing tutor")
759 (description
760 "GNU Typist is a universal typing tutor. It can be used to learn and
761practice touch-typing. Several tutorials are included; in addition to
762tutorials for the standard QWERTY layout, there are also tutorials for the
763alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
764are primarily in English, however some in other languages are provided.")
024e2c17 765 (license license:gpl3+)))
13d18626 766
024e2c17
DT
767(define-public irrlicht
768 (package
769 (name "irrlicht")
f90b2dbd 770 (version "1.8.4")
024e2c17
DT
771 (source (origin
772 (method url-fetch)
773 (uri (string-append
774 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
775 (version-major+minor version)
776 "/" version "/irrlicht-" version ".zip"))
777 (sha256
778 (base32
f90b2dbd 779 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))))
024e2c17
DT
780 (build-system gnu-build-system)
781 (arguments
3f127147
TGR
782 `(#:phases
783 (modify-phases %standard-phases
784 (add-after 'unpack 'fix-build-env
785 (lambda* (#:key outputs #:allow-other-keys)
786 (let ((out (assoc-ref outputs "out")))
787 (substitute* "Makefile"
788 (("INSTALL_DIR = /usr/local/lib")
789 (string-append "INSTALL_DIR = " out "/lib")))
790 ;; The Makefile assumes these directories exist.
791 (mkdir-p (string-append out "/lib"))
792 (mkdir-p (string-append out "/include")))))
793 (replace 'unpack
794 (lambda* (#:key source #:allow-other-keys)
795 (and (zero? (system* "unzip" source))
796 ;; The actual source is buried a few directories deep.
797 (chdir (string-append "irrlicht-" ,version
798 "/source/Irrlicht/")))))
799 (delete 'configure)) ; no configure script
800 #:tests? #f ; no check target
024e2c17
DT
801 #:make-flags '("CC=gcc" "sharedlib")))
802 (native-inputs
f90b2dbd 803 `(("unzip" ,unzip)))
024e2c17 804 (inputs
977736fc
MW
805 `(("mesa" ,mesa)
806 ("glu" ,glu)))
024e2c17
DT
807 (synopsis "3D game engine written in C++")
808 (description
809 "The Irrlicht Engine is a high performance realtime 3D engine written in
810C++. Features include an OpenGL renderer, extensible materials, scene graph
811management, character animation, particle and other special effects, support
812for common mesh file formats, and collision detection.")
813 (home-page "http://irrlicht.sourceforge.net/")
814 (license license:zlib)))
7e51e5bc 815
c23c50c7
RW
816(define-public mars
817 ;; The latest release on SourceForge relies on an unreleased version of SFML
818 ;; with a different API, so we take the latest version from the official
819 ;; repository on Github.
698bd297 820 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
821 (revision "1"))
822 (package
823 (name "mars")
698bd297 824 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
825 (source (origin
826 (method git-fetch)
827 (uri (git-reference
828 (url "https://github.com/thelaui/M.A.R.S..git")
829 (commit commit)))
830 (file-name (string-append name "-" version))
831 (sha256
832 (base32
833 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
834 (patches (search-patches "mars-sfml-2.3.patch"
835 "mars-install.patch"))))
c23c50c7
RW
836 (build-system cmake-build-system)
837 (arguments
838 `(#:tests? #f ; There are no tests
839 #:phases
840 (modify-phases %standard-phases
841 (add-after 'unpack 'fix-install-path
842 (lambda _
843 (substitute* "src/CMakeLists.txt"
844 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
845 "${CMAKE_INSTALL_PREFIX}/bin"))
846 #t))
847 (add-after 'unpack 'fix-data-path
848 (lambda* (#:key outputs #:allow-other-keys)
849 (substitute* "src/System/settings.cpp"
850 (("C_dataPath = \"./data/\";")
851 (string-append "C_dataPath = \""
852 (assoc-ref outputs "out")
853 "/share/games/marsshooter/\";")))
854 #t)))))
855 (inputs
856 `(("mesa" ,mesa)
857 ("fribidi" ,fribidi)
858 ("taglib" ,taglib)
859 ("sfml" ,sfml)))
860 (home-page "http://marsshooter.org")
861 (synopsis "2D space shooter")
862 (description
863 "M.A.R.S. is a 2D space shooter with pretty visual effects and
864attractive physics. Players can battle each other or computer controlled
865enemies in different game modes such as space ball, death match, team death
866match, cannon keep, and grave-itation pit.")
867 (license license:gpl3+))))
868
7e51e5bc
DT
869(define minetest-data
870 (package
871 (name "minetest-data")
eed2a95e 872 (version "0.4.15")
7e51e5bc
DT
873 (source (origin
874 (method url-fetch)
875 (uri (string-append
876 "https://github.com/minetest/minetest_game/archive/"
877 version ".tar.gz"))
f586c877 878 (file-name (string-append name "-" version ".tar.gz"))
7e51e5bc
DT
879 (sha256
880 (base32
eed2a95e 881 "12kxklcd1b5n0f369zf3xxhvkrizxj4d9xv0dh8crfqiymaym0zm"))))
7e51e5bc
DT
882 (build-system trivial-build-system)
883 (native-inputs
884 `(("source" ,source)
885 ("tar" ,tar)
886 ("gzip" ,(@ (gnu packages compression) gzip))))
887 (arguments
888 `(#:modules ((guix build utils))
889 #:builder (begin
890 (use-modules (guix build utils))
891 (let ((tar (string-append (assoc-ref %build-inputs "tar")
892 "/bin/tar"))
893 (install-dir (string-append
894 %output
895 "/share/minetest/games/minetest_game"))
896 (path (string-append (assoc-ref %build-inputs
897 "gzip")
898 "/bin")))
899 (setenv "PATH" path)
900 (system* tar "xvf" (assoc-ref %build-inputs "source"))
901 (chdir (string-append "minetest_game-" ,version))
902 (mkdir-p install-dir)
903 (copy-recursively "." install-dir)))))
904 (synopsis "Main game data for the Minetest game engine")
905 (description
906 "Game data for the Minetest infinite-world block sandox game.")
907 (home-page "http://minetest.net")
908 (license license:lgpl2.1+)))
6e206ac7
DT
909
910(define-public minetest
911 (package
912 (name "minetest")
eed2a95e 913 (version "0.4.15")
6e206ac7
DT
914 (source (origin
915 (method url-fetch)
916 (uri (string-append
917 "https://github.com/minetest/minetest/archive/"
918 version ".tar.gz"))
f586c877 919 (file-name (string-append name "-" version ".tar.gz"))
6e206ac7
DT
920 (sha256
921 (base32
eed2a95e 922 "1ag3jcj7kpq3ph12zirk1c0mj9i0g50wmw932f8gi11liq8yd12n"))))
6e206ac7
DT
923 (build-system cmake-build-system)
924 (arguments
10903356
AE
925 '(#:configure-flags
926 (list "-DRUN_IN_PLACE=0"
927 "-DENABLE_FREETYPE=1"
928 "-DENABLE_GETTEXT=1"
929 (string-append "-DIRRLICHT_INCLUDE_DIR="
930 (assoc-ref %build-inputs "irrlicht")
931 "/include/irrlicht")
932 (string-append "-DCURL_INCLUDE_DIR="
933 (assoc-ref %build-inputs "curl")
934 "/include/curl"))
6e206ac7
DT
935 #:tests? #f)) ; no check target
936 (native-search-paths
937 (list (search-path-specification
938 (variable "MINETEST_SUBGAME_PATH")
af070955 939 (files '("share/minetest/games")))))
6e206ac7
DT
940 (native-inputs
941 `(("pkg-config" ,pkg-config)))
942 (inputs
943 `(("irrlicht" ,irrlicht)
944 ("libpng" ,libpng)
c463dd47 945 ("libjpeg" ,libjpeg)
6e206ac7
DT
946 ("libxxf86vm" ,libxxf86vm)
947 ("mesa" ,mesa)
948 ("libogg" ,libogg)
949 ("libvorbis" ,libvorbis)
950 ("openal" ,openal)
951 ("freetype" ,(@ (gnu packages fontutils) freetype))
952 ("curl" ,curl)
953 ("luajit" ,luajit)
b94a6ca0 954 ("gettext" ,gettext-minimal)
6e206ac7
DT
955 ("sqlite" ,sqlite)))
956 (propagated-inputs
957 `(("minetest-data" ,minetest-data)))
958 (synopsis "Infinite-world block sandbox game")
959 (description
960 "Minetest is a sandbox construction game. Players can create and destroy
961various types of blocks in a three-dimensional open world. This allows
962forming structures in every possible creation, on multiplayer servers or as a
963single player. Mods and texture packs allow players to personalize the game
964in different ways.")
965 (home-page "http://minetest.net")
966 (license license:lgpl2.1+)))
77264d15
SB
967
968(define glkterm
969 (package
970 (name "glkterm")
971 (version "1.0.4")
972 (source
973 (origin
974 (method url-fetch)
975 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
976 "glk/implementations/glkterm-104.tar.gz"))
977 (sha256
978 (base32
979 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
980 (build-system gnu-build-system)
981 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
982 (arguments
983 '(#:tests? #f ; no check target
984 #:phases
3f127147
TGR
985 (modify-phases %standard-phases
986 (replace 'install
987 (lambda* (#:key outputs #:allow-other-keys)
988 (let* ((out (assoc-ref outputs "out"))
989 (inc (string-append out "/include"))
990 (lib (string-append out "/lib")))
3f127147
TGR
991 (for-each
992 (lambda (file)
993 (install-file file inc))
994 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
995 (install-file "libglkterm.a" lib))
996 #t))
997 (delete 'configure)))) ; no configure script
77264d15
SB
998 (home-page "http://www.eblong.com/zarf/glk/")
999 (synopsis "Curses Implementation of the Glk API")
1000 (description
1001 "Glk defines a portable API for applications with text UIs. It was
1002primarily designed for interactive fiction, but it should be suitable for many
1003interactive text utilities, particularly those based on a command line.
1004This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 1005using the @code{curses.h} library for screen control.")
77264d15
SB
1006 (license (license:fsf-free "file://README"))))
1007
1008(define-public glulxe
1009 (package
1010 (name "glulxe")
b2e3d59c 1011 (version "0.5.4")
77264d15
SB
1012 (source
1013 (origin
1014 (method url-fetch)
1015 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 1016 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
1017 (sha256
1018 (base32
b2e3d59c 1019 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
1020 (build-system gnu-build-system)
1021 (inputs `(("glk" ,glkterm)))
1022 (arguments
3f127147 1023 '(#:tests? #f ; no check target
77264d15
SB
1024 #:make-flags
1025 (let* ((glk (assoc-ref %build-inputs "glk")))
1026 (list (string-append "GLKINCLUDEDIR=" glk "/include")
1027 (string-append "GLKLIBDIR=" glk "/lib")
1028 (string-append "GLKMAKEFILE=" "Make.glkterm")))
1029 #:phases
3f127147
TGR
1030 (modify-phases %standard-phases
1031 (replace 'install
1032 (lambda* (#:key outputs #:allow-other-keys)
1033 (let* ((out (assoc-ref outputs "out"))
1034 (bin (string-append out "/bin")))
3f127147
TGR
1035 (install-file "glulxe" bin))
1036 #t))
1037 (delete 'configure)))) ; no configure script
77264d15
SB
1038 (home-page "http://www.eblong.com/zarf/glulx/")
1039 (synopsis "Interpreter for Glulx VM")
1040 (description
1041 "Glulx is a 32-bit portable virtual machine intended for writing and
1042playing interactive fiction. It was designed by Andrew Plotkin to relieve
1043some of the restrictions in the venerable Z-machine format. This is the
92bdf777 1044reference interpreter, using the Glk API.")
b2e3d59c 1045 (license license:expat)))
72b703cd 1046
35481e8b
SB
1047(define-public fizmo
1048 (package
1049 (name "fizmo")
1050 (version "0.7.9")
1051 (source (origin
1052 (method url-fetch)
1053 (uri (string-append "https://christoph-ender.de/fizmo/source/"
1054 name "-" version ".tar.gz"))
1055 (sha256
1056 (base32
1057 "1w7cgyjrhgkadjrazijzhq7zh0pl5bfc6wl7mdpgh020y4kp46d7"))))
1058 (build-system gnu-build-system)
1059 (arguments
1060 '(#:configure-flags
1061 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
1062 (ncurses (assoc-ref %build-inputs "ncurses")))
1063 (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include")
1064 (string-append "jpeg_LIBS=-ljpeg")
1065 (string-append "ncursesw_CFLAGS=-I" ncurses "/include")
1066 (string-append "ncursesw_LIBS=-lncursesw")))))
1067 (native-inputs
1068 `(("pkg-config" ,pkg-config)))
1069 (inputs
1070 `(("libjpeg" ,libjpeg)
1071 ("libpng" ,libpng)
1072 ("libsndfile" ,libsndfile)
1073 ("libxml2" ,libxml2)
1074 ("ncurses" ,ncurses)
1075 ("sdl" ,sdl)))
1076 (home-page "https://christoph-ender.de/fizmo/")
1077 (synopsis "Z-machine interpreter")
1078 (description
1079 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 1080interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
1081either by Infocom or created using the Inform compiler.")
1082 (license license:bsd-3)))
1083
72b703cd
SB
1084(define-public retroarch
1085 (package
1086 (name "retroarch")
fc3b2cbb 1087 (version "1.3.6")
72b703cd
SB
1088 (source
1089 (origin
1090 (method url-fetch)
3f147010 1091 (uri (string-append "https://github.com/libretro/RetroArch/archive/v"
72b703cd 1092 version ".tar.gz"))
f586c877 1093 (file-name (string-append name "-" version ".tar.gz"))
72b703cd 1094 (sha256
fc3b2cbb 1095 (base32 "1xar0wagcz50clwwkvjg4zq9m1sjqw47vw3xx44pisdj94g21m5y"))))
72b703cd
SB
1096 (build-system gnu-build-system)
1097 (arguments
05e0ac46 1098 '(#:tests? #f ; no tests
72b703cd 1099 #:phases
3f127147
TGR
1100 (modify-phases %standard-phases
1101 (replace 'configure
05e0ac46
TGR
1102 (lambda* (#:key outputs #:allow-other-keys)
1103 (let* ((out (assoc-ref outputs "out"))
1104 (etc (string-append out "/etc")))
1105 (substitute* "qb/qb.libs.sh"
1106 (("/bin/true") (which "true")))
1107 ;; The configure script does not yet accept the extra arguments
1108 ;; (like ‘CONFIG_SHELL=’) passed by the default configure phase.
1109 (zero? (system*
1110 "./configure"
1111 (string-append "--prefix=" out)
1112 (string-append "--global-config-dir=" etc)))))))))
72b703cd
SB
1113 (inputs
1114 `(("alsa-lib" ,alsa-lib)
1115 ("ffmpeg" ,ffmpeg)
1116 ("freetype" ,freetype)
1117 ("libxinerama" ,libxinerama)
1118 ("libxkbcommon" ,libxkbcommon)
1119 ("libxml2" ,libxml2)
1120 ("libxv" ,libxv)
1121 ("mesa" ,mesa)
1122 ("openal" ,openal)
1123 ("pulseaudio" ,pulseaudio)
1124 ("python" ,python)
1125 ("sdl" ,sdl2)
1126 ("udev" ,eudev)
1127 ("zlib" ,zlib)))
1128 (native-inputs
1129 `(("pkg-config" ,pkg-config)
1130 ("which" ,which)))
1131 (home-page "http://www.libretro.com/")
1132 (synopsis "Reference frontend for the libretro API")
1133 (description
1134 "Libretro is a simple but powerful development interface that allows for
1135the easy creation of emulators, games and multimedia applications that can plug
1136straight into any libretro-compatible frontend. RetroArch is the official
1137reference frontend for the libretro API, currently used by most as a modular
1138multi-system game/emulator system.")
1139 (license license:gpl3+)))
fc936b65
DH
1140
1141(define-public gnugo
1142 (package
1143 (name "gnugo")
1144 (version "3.8")
1145 (source (origin
1146 (method url-fetch)
1147 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
1148 ".tar.gz"))
1149 (sha256
1150 (base32
1151 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
1152 (build-system gnu-build-system)
1153 (inputs `(("readline" ,readline)))
4cc78cb3 1154 (synopsis "Play the game of Go")
7c125ce0
AK
1155 (description
1156 "GNU Go is a program that plays the game of Go, in which players
1157place stones on a grid to form territory or capture other stones. While
1158it can be played directly from the terminal, rendered in ASCII characters,
1159it is also possible to play GNU Go with 3rd party graphical interfaces or
1160even in Emacs. It supports the standard game storage format (SGF, Smart
1161Game Format) and inter-process communication format (GMP, Go Modem
1162Protocol).")
6fd52309 1163 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 1164 (license license:gpl3+)))
67fa7a27
CAW
1165
1166(define-public extremetuxracer
1167 (package
1168 (name "extremetuxracer")
43337a73 1169 (version "0.7.4")
67fa7a27
CAW
1170 (source (origin
1171 (method url-fetch)
1172 (uri (string-append
966a543b 1173 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
1174 version "/etr-" version ".tar.xz"))
1175 (sha256
1176 (base32
43337a73 1177 "0d2j4ybdjmimg67v2fndgahgq4fvgz3fpfb3a4l1ar75n6hy776s"))))
67fa7a27
CAW
1178 (build-system gnu-build-system)
1179 (native-inputs
1180 `(("pkg-config" ,pkg-config)))
1181 (inputs
b8a35cce
RW
1182 `(("glu" ,glu)
1183 ("sfml" ,sfml)))
67fa7a27
CAW
1184 (synopsis "High speed arctic racing game based on Tux Racer")
1185 ;; Snarfed straight from Debian
1186 (description "Extreme Tux Racer, or etracer as it is called for short, is
1187a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
1188game is to slide down a snow- and ice-covered mountain as quickly as possible,
1189avoiding the trees and rocks that will slow you down.
1190
1191Collect herrings and other goodies while sliding down the hill, but avoid fish
1192bones.
1193
1194This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 1195 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 1196 (license license:gpl2+)))
7a4d0509 1197
1a0633e7
RW
1198(define-public supertuxkart
1199 (package
1200 (name "supertuxkart")
1201 (version "0.9.2")
1202 (source
1203 (origin
1204 (method url-fetch)
1205 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
1206 version "/supertuxkart-" version "-src.tar.xz"))
1207 (sha256
1208 (base32
1209 "10l2ljmd7mv8f9ylarqmxxryicdnph2qkm3g5maxnsm2k2q0n20b"))
1210 (modules '((guix build utils)))
1211 (snippet
1212 ;; Delete bundled library sources
1213 '(begin
1214 ;; FIXME: try to unbundle enet, and angelscript
1215 (for-each delete-file-recursively
1216 '("lib/zlib"
1217 "lib/libpng"
1218 "lib/jpeglib"
1219 "lib/glew"
1220 "lib/wiiuse"))
1221 (substitute* "CMakeLists.txt"
1222 ;; Supertuxkart uses modified versions of the Irrlicht engine
1223 ;; and the bullet library. The developers gave an explanation here:
1224 ;; http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
1225 (("add_subdirectory\\(.*/(glew|zlib)\"\\)") ""))
1226 #t))))
1227 (build-system cmake-build-system)
1228 (arguments
1229 `(#:tests? #f ; no check target
1230 #:configure-flags
1231 (list "-DUSE_WIIUSE=0"
1232 ;; Do not use the bundled zlib
1233 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
1234 ;; Irrlicht returns an integer instead of a boolean
1235 "-DCMAKE_C_FLAGS=-fpermissive")
1236 #:phases
1237 (modify-phases %standard-phases
1238 (add-after 'unpack 'unbundle
1239 (lambda* (#:key inputs #:allow-other-keys)
1240 (substitute* "CMakeLists.txt"
1241 (("glew")
1242 (string-append (assoc-ref inputs "glew")
1243 "/lib/libGLEW.a"))
1244 (("include_directories\\(\"\\$\\{PROJECT_SOURCE_DIR\\}/lib/glew/include\"\\)")
1245 (string-append "include_directories(\""
1246 (assoc-ref inputs "glew")
1247 "/include\")")))
1248 #t)))))
1249 (inputs
1250 `(("glew" ,glew)
1251 ("zlib" ,zlib)
1252 ("openal" ,openal)
1253 ("libvorbis" ,libvorbis)
1254 ("freetype" ,freetype)
1255 ("fribidi" ,fribidi)
1256 ("mesa" ,mesa)
1257 ("libx11" ,libx11)
1258 ("libxrandr" ,libxrandr)
1259 ("curl" ,curl)
1260 ;; The following input is needed to build the bundled and modified
1261 ;; version of irrlicht.
1262 ("libjpeg" ,libjpeg)))
1263 (native-inputs
1264 `(("pkg-config" ,pkg-config)))
1265 (home-page "http://supertuxkart.net")
1266 (synopsis "3D kart racing game")
1267 (description "SuperTuxKart is a 3D kart racing game, with a focus on
1268having fun over realism. You can play with up to 4 friends on one PC, racing
1269against each other or just trying to beat the computer; single-player mode is
1270also available.")
1271 (license license:gpl3+)))
1272
7a4d0509
SB
1273(define-public gnujump
1274 (package
1275 (name "gnujump")
1276 (version "1.0.8")
1277 (source (origin
1278 (method url-fetch)
1279 (uri (string-append "mirror://gnu/gnujump/gnujump-"
1280 version ".tar.gz"))
1281 (sha256
1282 (base32
1283 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
1284 (build-system gnu-build-system)
1285 (arguments
1286 '(#:phases
1287 (modify-phases %standard-phases
1288 (add-before
1289 'configure 'link-libm
1290 (lambda _ (setenv "LIBS" "-lm"))))))
1291 (inputs
1292 `(("glu" ,glu)
b3546174 1293 ("mesa" ,mesa)
7a4d0509
SB
1294 ("sdl" ,sdl)
1295 ("sdl-image" ,sdl-image)
1296 ("sdl-mixer" ,sdl-mixer)))
1297 (home-page "http://gnujump.es.gnu.org/")
1298 (synopsis
1299 "Game of jumping to the next floor, trying not to fall")
1300 (description
1301 "GNUjump is a simple, yet addictive game in which you must jump from
1302platform to platform to avoid falling, while the platforms drop at faster rates
1303the higher you go. The game features multiplayer, unlimited FPS, smooth floor
1304falling, themeable graphics and sounds, and replays.")
1305 (license license:gpl3+)))
159093a7
SB
1306
1307(define-public wesnoth
1308 (package
1309 (name "wesnoth")
26ad4adb 1310 (version "1.12.6")
159093a7
SB
1311 (source (origin
1312 (method url-fetch)
de67e922
LF
1313 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
1314 (version-major+minor version) "/wesnoth-"
1315 version "/"
159093a7
SB
1316 name "-" version ".tar.bz2"))
1317 (sha256
1318 (base32
26ad4adb 1319 "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5"))))
159093a7
SB
1320 (build-system cmake-build-system)
1321 (arguments
1322 '(#:tests? #f ; no check target
1323 #:configure-flags
1324 ;; XXX: Failed to compile with '-Werror=old-style-cast'.
1325 ;; boost/mpl/assert.hpp:313:58: error:
1326 ;; use of old-style cast [-Werror=old-style-cast]
1327 ;; [...]
1328 ;; cc1plus: all warnings being treated as errors
1329 '("-DENABLE_STRICT_COMPILATION=OFF")))
1330 (native-inputs
b94a6ca0 1331 `(("gettext" ,gettext-minimal)
159093a7
SB
1332 ("pkg-config" ,pkg-config)))
1333 (inputs
1334 `(("boost" ,boost)
1335 ("dbus" ,dbus)
1336 ("fribidi" ,fribidi)
1337 ("libvorbis" ,libvorbis)
1338 ("pango" ,pango)
1339 ("sdl-image" ,sdl-image)
1340 ("sdl-mixer" ,sdl-mixer)
1341 ("sdl-net" ,sdl-net)
1342 ("sdl-ttf" ,sdl-ttf)))
1343 (home-page "http://www.wesnoth.org/")
1344 (synopsis "Turn-based strategy game")
1345 (description
1346 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
1347with several single player campaigns, and multiplayer games (both networked and
1348local).
1349
1350Battle for control on a range of maps, using variety of units which have
1351advantages and disadvantages against different types of attacks. Units gain
1352experience and advance levels, and are carried over from one scenario to the
1353next campaign.")
1354 (license license:gpl2+)))
c449a076 1355
e11b2752
PW
1356(define-public dosbox
1357 (package
1358 (name "dosbox")
1359 (version "0.74.svn3947")
1360 (source (origin
1361 (method svn-fetch)
1362 (uri (svn-reference
1363 (url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
1364 (revision 3947)))
ff9a5f7e 1365 (file-name (string-append name "-" version "-checkout"))
e11b2752
PW
1366 ;; Use SVN head, since the last release (2010) is incompatible
1367 ;; with GCC 4.8+ (see
1368 ;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
1369 (sha256
1370 (base32
1371 "1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
1372 (build-system gnu-build-system)
1373 (arguments
1374 `(#:phases (modify-phases %standard-phases
e0a7d364
MW
1375 (add-after
1376 'unpack 'autogen.sh
e11b2752
PW
1377 (lambda _
1378 (zero? (system* "sh" "autogen.sh")))))))
1379 (native-inputs
1380 `(("autoconf" ,autoconf)
1381 ("automake" ,automake)))
1382 (inputs
1383 `(("sdl" ,sdl)
1384 ("libpng" ,libpng)
1385 ("zlib" ,zlib)
1386 ("alsa-lib" ,alsa-lib)
1387 ("glu" ,glu)
1388 ("mesa" ,mesa)))
1389 (home-page "http://www.dosbox.com")
a124bbd2 1390 (synopsis "X86 emulator with CGA/EGA/VGA/etc. graphics and sound")
e11b2752
PW
1391 (description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
1392also emulates CPU:286/386 realmode/protected mode, Directory
1393FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
1394SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
1395older games.")
1396 (license license:gpl2+)))
1397
c449a076
EB
1398(define-public gamine
1399 (package
1400 (name "gamine")
1401 (version "1.4")
1402 (source (origin
1403 (method url-fetch)
1404 (uri (string-append "mirror://sourceforge/gamine-game/"
1405 "gamine-" version ".tar.gz"))
1406 (sha256
1407 (base32
1408 "1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
1409 (build-system gnu-build-system)
1410 (native-inputs
1411 `(("pkg-config" ,pkg-config)
1412 ("intltool" ,intltool)))
1413 (inputs
1414 `(("gstreamer" ,gstreamer)
1415 ("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
1416 ("gst-plugins-good" ,gst-plugins-good) ;for wav playback
1417 ("gtk+" ,gtk+)))
1418 (arguments
1419 `(#:tests? #f
1420 #:make-flags
1421 (let ((out (assoc-ref %outputs "out")))
1422 (list (string-append "PREFIX=" out)
1423 (string-append "SYSCONFDIR=" out "/etc")))
1424 #:phases
1425 (modify-phases %standard-phases
1426 (delete 'configure)
1427 (add-after
1428 'install 'wrap-gamine
1429 (lambda* (#:key outputs #:allow-other-keys)
1430 (let ((out (assoc-ref outputs "out"))
1431 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1432 (wrap-program (string-append out "/bin/gamine")
1433 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
1434 #t)))))
1435 (home-page "http://gamine-game.sourceforge.net/")
1436 (synopsis "Mouse and keyboard discovery for children")
1437 (description
1438 "Gamine is a game designed for young children who are learning to use the
1439mouse and keyboard. The child uses the mouse to draw colored dots and lines
1440on the screen and keyboard to display letters.")
1441 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
1442 (license license:gpl3)))
1443
aa6f3912
PW
1444(define-public raincat
1445 (package
1446 (name "raincat")
1447 (version "1.1.1.3")
1448 (source
1449 (origin
1450 (method url-fetch)
1451 (uri (string-append
1452 "http://hackage.haskell.org/package/Raincat/Raincat-"
1453 version
1454 ".tar.gz"))
1455 (sha256
1456 (base32
1457 "1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
1458 (build-system haskell-build-system)
1459 (inputs
1460 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
1461 ("ghc-mtl" ,ghc-mtl)
1462 ("ghc-random" ,ghc-random)
1463 ("ghc-glut" ,ghc-glut)
4262d178 1464 ("freeglut" ,freeglut)
aa6f3912
PW
1465 ("ghc-opengl" ,ghc-opengl)
1466 ("ghc-sdl" ,ghc-sdl)
1467 ("ghc-sdl-image" ,ghc-sdl-image)
1468 ("ghc-sdl-mixer" ,ghc-sdl-mixer)))
8889a7da 1469 (home-page "http://www.bysusanlin.com/raincat/")
aa6f3912
PW
1470 (synopsis "Puzzle game with a cat in lead role")
1471 (description "Project Raincat is a game developed by Carnegie Mellon
1472students through GCS during the Fall 2008 semester. Raincat features game
1473play inspired from classics Lemmings and The Incredible Machine. The project
1474proved to be an excellent learning experience for the programmers. Everything
1475is programmed in Haskell.")
1476 (license license:bsd-3)))
1477
2e2ed3cb
AK
1478(define-public manaplus
1479 (package
1480 (name "manaplus")
7a4dea52 1481 (version "1.7.3.4")
2e2ed3cb
AK
1482 (source (origin
1483 (method url-fetch)
1484 (uri (string-append
1485 "http://repo.manaplus.org/manaplus/download/"
1486 version "/manaplus-" version ".tar.xz"))
1487 (sha256
1488 (base32
7a4dea52 1489 "0mbxzsgjg16pqa3jnxkd7wwvw1lrx455r7fvwjfhzp0yv7acrn10"))))
2e2ed3cb
AK
1490 (build-system gnu-build-system)
1491 (arguments
1492 '(#:configure-flags
1493 (list (string-append "CPPFLAGS=-I"
1494 (assoc-ref %build-inputs "sdl-union")
1495 "/include/SDL"))))
1496 (native-inputs
1497 `(("pkg-config" ,pkg-config)))
1498 (inputs
1499 `(("glu" ,glu)
1500 ("curl" ,curl)
1501 ("libxml2" ,libxml2)
1502 ("mesa" ,mesa)
1503 ("physfs" ,physfs)
1504 ("sdl-union" ,(sdl-union))))
1505 (home-page "http://manaplus.org")
1506 (synopsis "Client for 'The Mana World' and similar games")
1507 (description
1508 "ManaPlus is a 2D MMORPG client for game servers. It is the only
1509fully supported client for @uref{http://www.themanaworld.org, The mana
1510world}, @uref{http://evolonline.org, Evol Online} and
1511@uref{http://landoffire.org, Land of fire}.")
1512 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
1513 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
1514 ;; The rest is under GPL2+.
1515 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 1516
0c15230d
TUBK
1517(define-public mupen64plus-core
1518 (package
1519 (name "mupen64plus-core")
1520 (version "2.5")
1521 (source
1522 (origin
1523 (method url-fetch)
1524 (uri (string-append
1525 "https://github.com/mupen64plus/mupen64plus-core/archive/"
1526 version ".tar.gz"))
1527 (file-name (string-append name "-" version ".tar.gz"))
1528 (sha256
1529 (base32 "0dg2hksm5qni2hcha93k7n4fqr92888p946f7phb0ndschzfh9kk"))))
1530 (build-system gnu-build-system)
1531 (native-inputs
1532 `(("pkg-config" ,pkg-config)
1533 ("which" ,which)))
1534 (inputs
1535 `(("freetype" ,freetype)
1536 ("glu" ,glu)
1537 ("libpng" ,libpng)
1538 ("mesa" ,mesa)
1539 ("sdl2" ,sdl2)
1540 ("zlib" ,zlib)))
1541 (arguments
1542 '(#:phases
1543 (modify-phases %standard-phases
1544 ;; The mupen64plus build system has no configure phase.
1545 (delete 'configure)
1546 ;; Makefile is in a subdirectory.
1547 (add-before
1548 'build 'cd-to-project-dir
1549 (lambda _
1550 (chdir "projects/unix"))))
1551 #:make-flags (let ((out (assoc-ref %outputs "out")))
1552 (list "all" (string-append "PREFIX=" out)))
1553 ;; There are no tests.
1554 #:tests? #f))
bff3c670 1555 ;; As per the Makefile (in projects/unix/Makefile):
9c9be348 1556 (supported-systems '("i686-linux" "x86_64-linux"))
0c15230d
TUBK
1557 (home-page "http://www.mupen64plus.org/")
1558 (synopsis "Nintendo 64 emulator core library")
1559 (description
1560 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1561which is capable of accurately playing many games. This package contains the
1562core library.")
1563 (license license:gpl2+)))
1564
ac2fe449
TUBK
1565(define-public mupen64plus-audio-sdl
1566 (package
1567 (name "mupen64plus-audio-sdl")
1568 (version "2.5")
1569 (source
1570 (origin
1571 (method url-fetch)
1572 (uri (string-append
1573 "https://github.com/mupen64plus/mupen64plus-audio-sdl/archive/"
1574 version ".tar.gz"))
1575 (file-name (string-append name "-" version ".tar.gz"))
1576 (sha256
1577 (base32 "0ss6w92n2rpfnazhg9lbq0nvs3fqx93nliz3k3wjxdlx4dpi7h3a"))))
1578 (build-system gnu-build-system)
1579 (native-inputs
1580 `(("pkg-config" ,pkg-config)
1581 ("which" ,which)))
1582 (inputs
1583 `(("mupen64plus-core" ,mupen64plus-core)
1584 ("sdl2" ,sdl2)))
1585 (arguments
1586 '(#:phases
1587 (modify-phases %standard-phases
1588 ;; The mupen64plus build system has no configure phase.
1589 (delete 'configure)
1590 ;; Makefile is in a subdirectory.
1591 (add-before
1592 'build 'cd-to-project-dir
1593 (lambda _
1594 (chdir "projects/unix"))))
1595 #:make-flags
1596 (let ((out (assoc-ref %outputs "out"))
1597 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1598 (list "all"
1599 (string-append "PREFIX=" out)
1600 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1601 ;; There are no tests.
1602 #:tests? #f))
1603 (home-page "http://www.mupen64plus.org/")
1604 (synopsis "Mupen64Plus SDL input plugin")
1605 (description
1606 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1607which is capable of accurately playing many games. This package contains the
1608SDL audio plugin.")
1609 (license license:gpl2+)))
1610
d07f0ebb
TUBK
1611(define-public mupen64plus-input-sdl
1612 (package
1613 (name "mupen64plus-input-sdl")
1614 (version "2.5")
1615 (source
1616 (origin
1617 (method url-fetch)
1618 (uri (string-append
1619 "https://github.com/mupen64plus/mupen64plus-input-sdl/archive/"
1620 version ".tar.gz"))
1621 (file-name (string-append name "-" version ".tar.gz"))
1622 (sha256
1623 (base32 "11sj5dbalp2nrlmki34vy7wy28vc175pnnkdk65p8599hnyq37ri"))))
1624 (build-system gnu-build-system)
1625 (native-inputs
1626 `(("which" ,which)))
1627 (inputs
1628 `(("mupen64plus-core" ,mupen64plus-core)
1629 ("sdl2" ,sdl2)))
1630 (arguments
1631 '(#:phases
1632 (modify-phases %standard-phases
1633 ;; The mupen64plus build system has no configure phase.
1634 (delete 'configure)
1635 ;; Makefile is in a subdirectory.
1636 (add-before
1637 'build 'cd-to-project-dir
1638 (lambda _
1639 (chdir "projects/unix"))))
1640 #:make-flags
1641 (let ((out (assoc-ref %outputs "out"))
1642 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1643 (list "all"
1644 (string-append "PREFIX=" out)
1645 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1646 ;; There are no tests.
1647 #:tests? #f))
1648 (home-page "http://www.mupen64plus.org/")
1649 (synopsis "Mupen64Plus SDL input plugin")
1650 (description
1651 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1652which is capable of accurately playing many games. This package contains the
1653SDL input plugin.")
1654 (license license:gpl2+)))
1655
3b3358be
TUBK
1656(define-public mupen64plus-rsp-hle
1657 (package
1658 (name "mupen64plus-rsp-hle")
1659 (version "2.5")
1660 (source
1661 (origin
1662 (method url-fetch)
1663 (uri (string-append
1664 "https://github.com/mupen64plus/mupen64plus-rsp-hle/archive/"
1665 version ".tar.gz"))
1666 (file-name (string-append name "-" version ".tar.gz"))
1667 (sha256
1668 (base32 "15h7mgz6xd2zjzm6l3f96sbs8kwr3xvbwzgikhnka79m6c69hsxv"))))
1669 (build-system gnu-build-system)
1670 (inputs
1671 `(("mupen64plus-core" ,mupen64plus-core)))
1672 (arguments
1673 '(#:phases
1674 (modify-phases %standard-phases
1675 ;; The mupen64plus build system has no configure phase.
1676 (delete 'configure)
1677 ;; Makefile is in a subdirectory.
1678 (add-before
1679 'build 'cd-to-project-dir
1680 (lambda _
1681 (chdir "projects/unix"))))
1682 #:make-flags
1683 (let ((out (assoc-ref %outputs "out"))
1684 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1685 (list "all"
1686 (string-append "PREFIX=" out)
1687 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1688 ;; There are no tests.
1689 #:tests? #f))
1690 (home-page "http://www.mupen64plus.org/")
1691 (synopsis "Mupen64Plus SDL input plugin")
1692 (description
1693 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1694which is capable of accurately playing many games. This package contains the
1695high-level emulation (HLE) RSP processor plugin.")
1696 (license license:gpl2+)))
1697
50afcd1f
TUBK
1698(define-public mupen64plus-rsp-z64
1699 (package
1700 (name "mupen64plus-rsp-z64")
1701 (version "2.0.0")
1702 (source
1703 (origin
1704 (method url-fetch)
1705 (uri (string-append
1706 "https://github.com/mupen64plus/mupen64plus-rsp-z64/archive/"
1707 version ".tar.gz"))
1708 (file-name (string-append name "-" version ".tar.gz"))
1709 (sha256
1710 (base32 "10jz1w2dhx5slhyk4m8mdqlpsd6cshchslr1fckb2ayzb1ls3ghi"))))
1711 (build-system gnu-build-system)
1712 (inputs
1713 `(("mupen64plus-core" ,mupen64plus-core)))
1714 (arguments
1715 '(#:phases
1716 (modify-phases %standard-phases
1717 ;; The mupen64plus build system has no configure phase.
1718 (delete 'configure)
1719 ;; Makefile is in a subdirectory.
1720 (add-before
1721 'build 'cd-to-project-dir
1722 (lambda _
1723 (chdir "projects/unix"))))
1724 #:make-flags
1725 (let ((out (assoc-ref %outputs "out"))
1726 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1727 (list "all"
1728 (string-append "PREFIX=" out)
1729 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1730 ;; There are no tests.
1731 #:tests? #f))
1732 (home-page "http://www.mupen64plus.org/")
1733 (synopsis "Mupen64Plus SDL input plugin")
1734 (description
1735 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1736which is capable of accurately playing many games. This package contains the
1737Z64 RSP processor plugin.")
1738 (license license:gpl2+)))
1739
307a536d
TUBK
1740(define-public mupen64plus-video-arachnoid
1741 (package
1742 (name "mupen64plus-video-arachnoid")
1743 (version "2.0.0")
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append
1748 "https://github.com/mupen64plus/mupen64plus-video-arachnoid/archive/"
1749 version ".tar.gz"))
1750 (file-name (string-append name "-" version ".tar.gz"))
1751 (sha256
1752 (base32 "0jjwf144rihznm4lnqbhgigxw664v3v32wy94adaa6imk8z6gslh"))))
1753 (build-system gnu-build-system)
1754 (native-inputs
1755 `(("pkg-config" ,pkg-config)
1756 ("which" ,which)))
1757 (inputs
1758 `(("mesa" ,mesa)
1759 ("mupen64plus-core" ,mupen64plus-core)))
1760 (arguments
1761 '(#:phases
1762 (modify-phases %standard-phases
1763 ;; The mupen64plus build system has no configure phase.
1764 (delete 'configure)
1765 ;; Makefile is in a subdirectory.
1766 (add-before
1767 'build 'cd-to-project-dir
1768 (lambda _
1769 (chdir "projects/unix"))))
1770 #:make-flags
1771 (let ((out (assoc-ref %outputs "out"))
1772 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1773 (list "all"
1774 (string-append "PREFIX=" out)
1775 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1776 ;; There are no tests.
1777 #:tests? #f))
1778 (home-page "http://www.mupen64plus.org/")
1779 (synopsis "Mupen64Plus Rice Video plugin")
1780 (description
1781 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1782which is capable of accurately playing many games. This package contains the
1783Arachnoid video plugin.")
1784 (license license:gpl2+)))
1785
9a3fe16b
TUBK
1786(define-public mupen64plus-video-glide64
1787 (package
1788 (name "mupen64plus-video-glide64")
1789 (version "2.0.0")
1790 (source
1791 (origin
1792 (method url-fetch)
1793 (uri (string-append
1794 "https://github.com/mupen64plus/mupen64plus-video-glide64/archive/"
1795 version ".tar.gz"))
1796 (file-name (string-append name "-" version ".tar.gz"))
1797 (sha256
1798 (base32 "1rm55dbf6xgsq1blbzs6swa2ajv0qkn38acbljj346abnk6s3dla"))))
1799 (build-system gnu-build-system)
1800 (native-inputs
1801 `(("pkg-config" ,pkg-config)
1802 ("which" ,which)))
1803 (inputs
1804 `(("mesa" ,mesa)
1805 ("mupen64plus-core" ,mupen64plus-core)
1806 ("sdl2" ,sdl2)))
1807 (arguments
1808 '(#:phases
1809 (modify-phases %standard-phases
1810 ;; The mupen64plus build system has no configure phase.
1811 (delete 'configure)
1812 ;; Makefile is in a subdirectory.
1813 (add-before
1814 'build 'cd-to-project-dir
1815 (lambda _
1816 (chdir "projects/unix")))
1817 ;; XXX Should be unnecessary with the next release.
1818 (add-before
1819 'build 'use-sdl2
1820 (lambda _
1821 (substitute* "Makefile"
1822 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1823 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1824 #:make-flags
1825 (let ((out (assoc-ref %outputs "out"))
1826 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1827 (list "all"
1828 (string-append "PREFIX=" out)
1829 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1830 ;; There are no tests.
1831 #:tests? #f))
1832 (home-page "http://www.mupen64plus.org/")
1833 (synopsis "Mupen64Plus Rice Video plugin")
1834 (description
1835 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1836which is capable of accurately playing many games. This package contains the
1837Glide64 video plugin.")
1838 (license license:gpl2+)))
1839
e8bf3ced
TUBK
1840(define-public mupen64plus-video-glide64mk2
1841 (package
1842 (name "mupen64plus-video-glide64mk2")
1843 (version "2.5")
1844 (source
1845 (origin
1846 (method url-fetch)
1847 (uri (string-append
1848 "https://github.com/mupen64plus/mupen64plus-video-glide64mk2/archive/"
1849 version ".tar.gz"))
1850 (file-name (string-append name "-" version ".tar.gz"))
1851 (sha256
1852 (base32 "1ihl4q293d6svba26b4mhapjcdg12p90gibz79b4mx423jlcxxj9"))))
1853 (build-system gnu-build-system)
1854 (native-inputs
1855 `(("pkg-config" ,pkg-config)
1856 ("which" ,which)))
1857 (inputs
1858 `(("boost" ,boost)
1859 ("libpng" ,libpng)
1860 ("mesa" ,mesa)
1861 ("mupen64plus-core" ,mupen64plus-core)
1862 ("sdl2" ,sdl2)
1863 ("zlib" ,zlib)))
1864 (arguments
1865 '(#:phases
1866 (modify-phases %standard-phases
1867 ;; The mupen64plus build system has no configure phase.
1868 (delete 'configure)
1869 ;; Makefile is in a subdirectory.
1870 (add-before
1871 'build 'cd-to-project-dir
1872 (lambda _
1873 (chdir "projects/unix"))))
1874 #:make-flags
1875 (let ((out (assoc-ref %outputs "out"))
1876 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1877 (list "all"
1878 (string-append "PREFIX=" out)
1879 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1880 ;; There are no tests.
1881 #:tests? #f))
1882 (home-page "http://www.mupen64plus.org/")
1883 (synopsis "Mupen64Plus Rice Video plugin")
1884 (description
1885 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1886which is capable of accurately playing many games. This package contains the
1887Glide64MK2 video plugin.")
1888 (license license:gpl2+)))
1889
e91d25f9
TUBK
1890(define-public mupen64plus-video-rice
1891 (package
1892 (name "mupen64plus-video-rice")
1893 (version "2.5")
1894 (source
1895 (origin
1896 (method url-fetch)
1897 (uri (string-append
1898 "https://github.com/mupen64plus/mupen64plus-video-rice/archive/"
1899 version ".tar.gz"))
1900 (file-name (string-append name "-" version ".tar.gz"))
1901 (sha256
1902 (base32 "0rd2scjmh285w61aj3mgx71whg5rqrjbry3cdgicczrnyvf8wdvk"))))
1903 (build-system gnu-build-system)
1904 (native-inputs
1905 `(("pkg-config" ,pkg-config)
1906 ("which" ,which)))
1907 (inputs
1908 `(("libpng" ,libpng)
1909 ("mesa" ,mesa)
1910 ("mupen64plus-core" ,mupen64plus-core)
1911 ("sdl2" ,sdl2)))
1912 (arguments
1913 '(#:phases
1914 (modify-phases %standard-phases
1915 ;; The mupen64plus build system has no configure phase.
1916 (delete 'configure)
1917 ;; Makefile is in a subdirectory.
1918 (add-before
1919 'build 'cd-to-project-dir
1920 (lambda _
1921 (chdir "projects/unix"))))
1922 #:make-flags
1923 (let ((out (assoc-ref %outputs "out"))
1924 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1925 (list "all"
1926 (string-append "PREFIX=" out)
1927 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1928 ;; There are no tests.
1929 #:tests? #f))
1930 (home-page "http://www.mupen64plus.org/")
1931 (synopsis "Mupen64Plus Rice Video plugin")
1932 (description
1933 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1934which is capable of accurately playing many games. This package contains the
1935Rice Video plugin.")
1936 (license license:gpl2+)))
1937
17e2bc86
TUBK
1938(define-public mupen64plus-video-z64
1939 (package
1940 (name "mupen64plus-video-z64")
1941 (version "2.0.0")
1942 (source
1943 (origin
1944 (method url-fetch)
1945 (uri (string-append
1946 "https://github.com/mupen64plus/mupen64plus-video-z64/archive/"
1947 version ".tar.gz"))
1948 (file-name (string-append name "-" version ".tar.gz"))
1949 (sha256
1950 (base32 "1x7wsjs5gx2iwx20p4cjcbf696zsjlh31qxmghwv0ifrq8x58s1b"))))
1951 (build-system gnu-build-system)
1952 (native-inputs
1953 `(("pkg-config" ,pkg-config)
1954 ("which" ,which)))
1955 (inputs
1956 `(("glew" ,glew)
1957 ("mupen64plus-core" ,mupen64plus-core)
1958 ("sdl2" ,sdl2)))
1959 (arguments
1960 '(#:phases
1961 (modify-phases %standard-phases
1962 ;; The mupen64plus build system has no configure phase.
1963 (delete 'configure)
1964 ;; Makefile is in a subdirectory.
1965 (add-before
1966 'build 'cd-to-project-dir
1967 (lambda _
1968 (chdir "projects/unix")))
1969 ;; XXX Should be unnecessary with the next release.
1970 (add-before
1971 'build 'use-sdl2
1972 (lambda _
1973 (substitute* "Makefile"
1974 (("SDL_CONFIG = (.*)sdl-config" all prefix)
1975 (string-append "SDL_CONFIG = " prefix "sdl2-config"))))))
1976 #:make-flags
1977 (let ((out (assoc-ref %outputs "out"))
1978 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
1979 (list "all"
1980 (string-append "PREFIX=" out)
1981 (string-append "APIDIR=" m64p "/include/mupen64plus")))
1982 ;; There are no tests.
1983 #:tests? #f))
1984 (home-page "http://www.mupen64plus.org/")
1985 (synopsis "Mupen64Plus Z64 video plugin")
1986 (description
1987 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
1988which is capable of accurately playing many games. This package contains the
1989Z64 video plugin.")
1990 (license license:gpl2+)))
1991
e6974eae
TUBK
1992(define-public mupen64plus-ui-console
1993 (package
1994 (name "mupen64plus-ui-console")
1995 (version "2.5")
1996 (source
1997 (origin
1998 (method url-fetch)
1999 (uri (string-append
2000 "https://github.com/mupen64plus/mupen64plus-ui-console/archive/"
2001 version ".tar.gz"))
2002 (file-name (string-append name "-" version ".tar.gz"))
2003 (sha256
2004 (base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
fc1adab1 2005 (patches (search-patches "mupen64plus-ui-console-notice.patch"))))
e6974eae
TUBK
2006 (build-system gnu-build-system)
2007 (native-inputs
2008 `(("pkg-config" ,pkg-config)
2009 ("which" ,which)))
2010 (inputs
2011 `(("sdl2" ,sdl2)))
2012 ;; Mupen64Plus supports a single data directory and a single plugin
2013 ;; directory in its configuration, yet we need data and plugin files from
2014 ;; a variety of packages. The best way to deal with this is to install
2015 ;; all packages from which data and plugin files are needed into one's
2016 ;; profile, and point the configuration there. Hence, propagate the most
2017 ;; important packages here to save the user from the bother. The patch
2018 ;; mupen64plus-ui-console-notice also gives users instructions on what
2019 ;; they need to do in order to point the configuration to their profile.
2020 (propagated-inputs
2021 `(("mupen64plus-core" ,mupen64plus-core)
2022 ("mupen64plus-audio-sdl" ,mupen64plus-audio-sdl)
2023 ("mupen64plus-input-sdl" ,mupen64plus-input-sdl)
2024 ("mupen64plus-rsp-hle" ,mupen64plus-rsp-hle)
2025 ("mupen64plus-video-glide64" ,mupen64plus-video-glide64)
2026 ("mupen64plus-video-glide64mk2" ,mupen64plus-video-glide64mk2)
2027 ("mupen64plus-video-rice" ,mupen64plus-video-rice)))
2028 (arguments
2029 '(#:phases
2030 (modify-phases %standard-phases
2031 ;; The mupen64plus build system has no configure phase.
2032 (delete 'configure)
2033 ;; Makefile is in a subdirectory.
2034 (add-before
2035 'build 'cd-to-project-dir
2036 (lambda _
2037 (chdir "projects/unix"))))
2038 #:make-flags
2039 (let ((out (assoc-ref %outputs "out"))
2040 (m64p (assoc-ref %build-inputs "mupen64plus-core")))
2041 (list "all"
2042 (string-append "PREFIX=" out)
2043 (string-append "APIDIR=" m64p "/include/mupen64plus")
2044 ;; Trailing slash matters here.
2045 (string-append "COREDIR=" m64p "/lib/")))
2046 ;; There are no tests.
2047 #:tests? #f))
2048 (home-page "http://www.mupen64plus.org/")
2049 (synopsis "Mupen64Plus SDL input plugin")
2050 (description
2051 "Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
2052which is capable of accurately playing many games. This package contains the
2053command line user interface. Installing this package is the easiest way
2054towards a working Mupen64Plus for casual users.")
2055 (license license:gpl2+)))
2056
03d521f9
TUBK
2057(define-public nestopia-ue
2058 (package
2059 (name "nestopia-ue")
415ee287 2060 (version "1.47")
03d521f9
TUBK
2061 (source (origin
2062 (method url-fetch)
2063 (uri (string-append
2064 "https://github.com/rdanbrook/nestopia/archive/"
2065 version ".tar.gz"))
2066 (file-name (string-append name "-" version ".tar.gz"))
2067 (sha256
2068 (base32
415ee287 2069 "1dzrrjmvyqks64q5l5pfly80jb6qcsbj5b3dm40fijd5xnpbapci"))
03d521f9 2070 (modules '((guix build utils)))
03d521f9 2071 (snippet
9ff7827a
TUBK
2072 '(begin
2073 ;; We don't need libretro for the GNU/Linux build.
2074 (delete-file-recursively "libretro")
2075 ;; Use system zlib.
2076 (delete-file-recursively "source/zlib")
2077 (substitute* "source/core/NstZlib.cpp"
2078 (("#include \"../zlib/zlib.h\"") "#include <zlib.h>"))))))
03d521f9
TUBK
2079 (build-system gnu-build-system)
2080 (native-inputs
2081 `(("pkg-config" ,pkg-config)))
2082 (inputs
2083 `(("ao" ,ao)
2084 ("glu" ,glu)
2085 ("gtk+" ,gtk+)
2086 ("libarchive" ,libarchive)
2087 ("mesa" ,mesa)
9ff7827a
TUBK
2088 ("sdl2" ,sdl2)
2089 ("zlib" ,zlib)))
03d521f9
TUBK
2090 (arguments
2091 '(#:phases
2092 (modify-phases %standard-phases
2093 ;; The Nestopia build system consists solely of a Makefile.
2094 (delete 'configure)
415ee287
TUBK
2095 (add-before 'build 'remove-xdg-desktop-menu-call
2096 (lambda _
2097 (substitute* "Makefile"
2098 (("xdg-desktop-menu install .*") ""))))
2099 (add-before 'build 'remove-gdkwayland-include
2100 (lambda _
2101 (substitute* "source/unix/gtkui/gtkui.h"
2102 (("#include <gdk/gdkwayland\\.h>") "")))))
03d521f9
TUBK
2103 #:make-flags (let ((out (assoc-ref %outputs "out")))
2104 (list "CC=gcc" "CXX=g++" (string-append "PREFIX=" out)))
2105 ;; There are no tests.
2106 #:tests? #f))
2107 (home-page "http://0ldsk00l.ca/nestopia/")
2108 (synopsis "Nintendo Entertainment System (NES/Famicom) emulator")
2109 (description
2110 "Nestopia UE (Undead Edition) is a fork of the Nintendo Entertainment
2111System (NES/Famicom) emulator Nestopia, with enhancements from members of the
2112emulation community. It provides highly accurate emulation.")
2113 (license license:gpl2+)))
3307c787
DT
2114
2115(define-public emulation-station
698bd297
HG
2116 (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
2117 (package
2118 (name "emulation-station")
2119 (version "2.0.1")
2120 (source (origin
2121 (method git-fetch) ; no tarball available
2122 (uri (git-reference
2123 (url "https://github.com/Aloshi/EmulationStation.git")
2124 (commit commit))) ; no version tag
2125 (sha256
2126 (base32
2127 "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
2128 (build-system cmake-build-system)
2129 (arguments
2130 '(#:tests? #f)) ; no tests
2131 (inputs
2132 `(("alsa-lib" ,alsa-lib)
2133 ("boost" ,boost)
2134 ("curl" ,curl)
2135 ("eigin" ,eigen)
2136 ("freeimage" ,freeimage)
2137 ("freetype" ,freetype)
2138 ("mesa" ,mesa)
2139 ("sdl2" ,sdl2)))
2140 (synopsis "Video game console emulator front-end")
2141 (description "EmulationStation provides a graphical front-end to a large
3307c787
DT
2142number of video game console emulators. It features an interface that is
2143usable with any game controller that has at least 4 buttons, theming support,
2144and a game metadata scraper.")
698bd297
HG
2145 (home-page "http://www.emulationstation.org")
2146 (license license:expat))))
e3f755f4 2147
e9687748
AS
2148(define openttd-engine
2149 (package
2150 (name "openttd-engine")
eb3bd676 2151 (version "1.6.1")
e9687748
AS
2152 (source
2153 (origin (method url-fetch)
2154 (uri (string-append "http://binaries.openttd.org/releases/"
2155 version "/openttd-" version "-source.tar.xz"))
2156 (sha256
2157 (base32
eb3bd676 2158 "1ak32fj5xkk2fvmm3g8i7wzmk4bh2ijsp8fzvvw5wj6365p9j24v"))
e9687748
AS
2159 (modules '((guix build utils)))
2160 (snippet
2161 ;; The DOS port contains proprietary software.
2162 '(delete-file-recursively "os/dos"))))
2163 (build-system gnu-build-system)
2164 (arguments
2165 `(#:tests? #f ; no "check" target
2166 #:phases
2167 (modify-phases %standard-phases
2168 ;; The build process fails if the configure script is passed the
2169 ;; option "--enable-fast-install".
2170 (replace 'configure
2171 (lambda* (#:key inputs outputs #:allow-other-keys)
2172 (let ((out (assoc-ref outputs "out"))
2173 (lzo (assoc-ref inputs "lzo")))
2174 (zero?
2175 (system* "./configure"
2176 (string-append "--prefix=" out)
2177 ;; Provide the "lzo" path.
2178 (string-append "--with-liblzo2="
2179 lzo "/lib/liblzo2.a")
2180 ;; Put the binary in 'bin' instead of 'games'.
2181 "--binary-dir=bin"))))))))
2182 (native-inputs `(("pkg-config" ,pkg-config)))
2183 (inputs
2184 `(("allegro" ,allegro-4)
2185 ("fontconfig" ,fontconfig)
2186 ("freetype" ,freetype)
2187 ("icu4c" ,icu4c)
2188 ("libpng" ,libpng)
2189 ("lzo" ,lzo)
2190 ("sdl" ,sdl)
2191 ("xz" ,xz)
2192 ("zlib" ,zlib)))
2193 (synopsis "Transportation economics simulator")
2194 (description "OpenTTD is a game in which you transport goods and
2195passengers by land, water and air. It is a re-implementation of Transport
2196Tycoon Deluxe with many enhancements including multiplayer mode,
2197internationalization support, conditional orders and the ability to clone,
eb3bd676
AS
2198autoreplace and autoupdate vehicles. This package only includes the game engine. When you start
2199it you will be prompted to download a graphics set.")
e9687748
AS
2200 (home-page "http://openttd.org/")
2201 ;; This package is GPLv2, except for a few files located in
2202 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2203 ;; licenses. In addition, this software contains an in-game downloader
2204 ;; from which the user may find non-functional data licensed under
2205 ;; different terms.
2206 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2207
2208;; TODO Add 'openttd-opengfx' and 'openttd-openmsx' packages and make
2209;; 'openttd' a wrapper around them. The engine is playable by itself,
2210;; but it asks a user to download graphics if it's not found.
2211
2212(define-public openttd
2213 (package
2214 (inherit openttd-engine)
2215 (name "openttd")))
2216
e3f755f4
EB
2217(define-public pinball
2218 (package
2219 (name "pinball")
2220 (version "0.3.1")
2221 (source
2222 (origin (method url-fetch)
2223 (uri (string-append "mirror://sourceforge/pinball/pinball/"
2224 "pinball-" version "/"
2225 "pinball-" version ".tar.gz"))
2226 (sha256
2227 (base32
2228 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
2229 (patches (search-patches "pinball-const-fix.patch"
2230 "pinball-cstddef.patch"
2231 "pinball-missing-separators.patch"
2232 "pinball-src-deps.patch"
2233 "pinball-system-ltdl.patch"))))
e3f755f4
EB
2234 (build-system gnu-build-system)
2235 (inputs
2236 `(("glu" ,glu)
2237 ("mesa" ,mesa)
2238 ("sdl" ,sdl)
2239 ("sdl-image" ,sdl-image)
2240 ("sdl-mixer" ,sdl-mixer)))
2241 (arguments
2242 '(#:configure-flags
2243 (list (string-append "CPPFLAGS=-I"
2244 (assoc-ref %build-inputs "sdl-image")
2245 "/include/SDL -I"
2246 (assoc-ref %build-inputs "sdl-mixer")
2247 "/include/SDL"))))
2248 (home-page "http://pinball.sourceforge.net")
2249 (synopsis "Pinball simulator")
2250 (description "The Emilia Pinball Project is a pinball simulator. There
2251are only two levels to play with, but they are very addictive.")
2252 (license license:gpl2)))
7e2e1155
RF
2253
2254(define-public pioneers
2255 (package
2256 (name "pioneers")
365950ce 2257 (version "15.4")
7e2e1155
RF
2258 (source (origin
2259 (method url-fetch)
2260 (uri (string-append "http://downloads.sourceforge.net/pio/"
2261 "pioneers-" version ".tar.gz"))
2262 (sha256
2263 (base32
365950ce 2264 "1p1d18hrfmqcnghip3shkzcs5qkz6j99jvkdkqfi7pqdvjc323cs"))))
7e2e1155
RF
2265 (build-system gnu-build-system)
2266 (inputs `(("gtk+" ,gtk+)
2267 ("librsvg" ,librsvg)
2268 ("avahi" ,avahi)))
2269 (native-inputs `(("intltool" ,intltool)
2270 ("pkg-config" ,pkg-config)))
2271 (synopsis "Board game inspired by The Settlers of Catan")
2272 (description "Pioneers is an emulation of the board game The Settlers of
2273Catan. It can be played on a local network, on the internet, and with AI
2274players.")
2275 (home-page "http://pio.sourceforge.net/")
8763fdf8 2276 (license license:gpl2+)))
fea1f275
MR
2277
2278(define-public desmume
2279 (package
2280 (name "desmume")
2281 (version "0.9.11")
2282 (source
2283 (origin
2284 (method url-fetch)
2285 (uri (string-append
2286 "mirror://sourceforge/desmume/desmume/"
2287 version "/desmume-" version ".tar.gz"))
2288 (sha256
2289 (base32
2290 "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
2291 (build-system gnu-build-system)
2292 (arguments
2293 ;; Enable support for WiFi and microphone.
2294 `(#:configure-flags '("--enable-wifi"
2295 "--enable-openal")))
2296 (native-inputs
2297 `(("pkg-config" ,pkg-config)
2298 ("intltool" ,intltool)))
2299 (inputs
2300 `(("zlib" ,zlib)
2301 ("sdl" ,sdl)
2302 ("glib" ,glib)
2303 ("gtk+" ,gtk+-2)
2304 ("glu" ,glu)))
2305 (home-page "http://desmume.org/")
2306 (synopsis "Nintendo DS emulator")
2307 (description
2308 "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
2309 (license license:gpl2)))
d7c4619b
AE
2310
2311(define-public einstein
2312 (package
2313 (name "einstein")
2314 (version "2.0")
2315 (source (origin
2316 (method url-fetch)
2317 (uri (string-append "http://http.debian.net/debian/pool/main/e/"
2318 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
2319 (sha256
2320 (base32
2321 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 2322 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
2323 (build-system gnu-build-system)
2324 (inputs
2325 `(("freetype" ,freetype)
2326 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
2327 ("zlib" ,zlib)))
2328 (native-inputs
2329 `(("font-dejavu" ,font-dejavu)))
2330 (arguments
2331 `(#:tests? #f ; no check target
2332 #:phases
2333 (modify-phases %standard-phases
2334 (replace 'configure
2335 (lambda* (#:key outputs inputs #:allow-other-keys)
2336 (let ((out (assoc-ref outputs "out"))
2337 (dejavu (string-append (assoc-ref inputs "font-dejavu")
2338 "/share/fonts/truetype/DejaVuSans.ttf")))
2339 (substitute* "Makefile"
2340 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
2341 ;; The patch above registers a free font for use by the binary,
2342 ;; but the font is copied during the compile phase into a
2343 ;; resources file, so we need to make the ttf file available.
2344 (symlink dejavu "res/DejaVuSans.ttf")
2345 #t))))))
2346 (synopsis "Logic puzzle game")
2347 (description "The goal of this logic game is to open all cards in a 6x6
2348grid, using a number of hints as to their relative position. The game idea
2349is attributed to Albert Einstein.")
2350 ;; The original home page has disappeared.
2351 (home-page (string-append "http://web.archive.org/web/20120521062745/"
2352 "http://games.flowix.com/en/index.html"))
2353 ;; License according to
2354 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
2355 ;; The source code is a DFSG-sanitized tarball and does not contain any
2356 ;; license information.
2357 (license license:gpl3+)))
2358
d381962f 2359(define-public powwow
2360 (package
2361 (name "powwow")
2362 (version "1.2.17")
2363 (source (origin
2364 (method url-fetch)
2365 (uri (string-append
cc30a472 2366 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 2367 version ".tar.gz"))
2368 (file-name (string-append name "-" version ".tar.gz"))
2369 (sha256
2370 (base32
2371 "1xmsg2y7qcvj67i9ilnih0mvfxcpni7fzrz343x9rdfnkkzf3pp8"))))
2372 (inputs
2373 `(("ncurses" ,ncurses)))
2374 (build-system gnu-build-system)
2375 (home-page "http://www.hoopajoo.net/projects/powwow.html")
2376 (synopsis "MUD and telnet client")
2377 (description
2378 "POWWOW is a client software which can be used for telnet as well as for
2379@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
2380the chat server psyced with the specific config located at
2381http://lavachat.symlynx.com/unix/")
2382 (license license:gpl2+)))
158f5734 2383
5ef819cc 2384(define-public red-eclipse
158f5734 2385 (let ((data-sources
ec3487a6
KK
2386 '(("acerspyro" "0zmg78scrfdv33h7vszqvzylcqjwg7d5b0j2riav3rjfh326j8xx")
2387 ("actors" "0l00rsvppqzdpsikm5qpj38jiygirszxlzay2nxp4g4n2qjq0m4a")
2388 ("appleflap" "0jhfr7f13hk3nswwxqc4jajriipr6zz6j63v955nv4sgxs7lzbjd")
2389 ("blendbrush" "1nk0zaisbqf2khrivq8ls6z2lnh6d51m133m2ppxk7k4c9gq1imq")
2390 ("caustics" "1hq08k476wayi0kmk4ps8h6jr75yinq04f1r2p8r79xsdpxq9my5")
2391 ("crosshairs" "1gmrmjm7i7n9py0qrzamk7ygi63yx1mr2pp6iwz2vwngprl03n8m")
2392 ("dziq" "0gr36ydrv8syjxv7w9dw3ix8waaq201fzxr0klkqp260p8xp215s")
2393 ("elyvisions" "05syxlpsap6nfwxnnd0ls7qj1p4vhw2jxi41pi5inwpfifapfphz")
2394 ("fonts" "184syks602xc657q08973w5ji50x5zssvd4vp2q2ig8m68iyr51c")
2395 ("freezurbern" "020gpgcpy4rqjd9d18npfm96j8f02jcjnccbxcgzk1yb58y687ya")
2396 ("john" "0hj5kwlb2gb0gsnl9bk7dkqlk8r7vxcw8gxpgrb3kfn8d9cwcb7k")
2397 ("jojo" "0fij06040r7s5p7jksxm7wxi9jqwkhhm8iywys0dagk8j2wcbvsz")
2398 ("jwin" "0ysfynjvypc8dszf7rsvk02jgw8fmsli49vy2xpm83zpkrqpddgf")
2399 ("luckystrike" "1bm0xdqjv35ry5xwbzw3a3v1xf2gj1jwfg29nyl6w3ch0h6crr11")
2400 ("maps" "0c9d1zxmpnngwhchzw6xb6cf84cx8xyycmdqcvyhamrd95d96qma")
2401 ("mayhem" "133pdql7ari159skd9qdmw0p1m73x32d1v6jswkz0xwk8vgxmkil")
2402 ("mikeplus64" "1d5npn9wlw0mviz9vhzzcsj98jvfh1wbvlh1nyqfj4ws5nfxhs7x")
2403 ("misc" "19x2ps6yxnfrz0xdhqdwncaq25ds7i4w2l8sdfi95yh2r7c5k1qn")
2404 ("nieb" "15029nipl92cb0jbh46z00k51hf3jk4v05pwx266b6b11bapdz0c")
2405 ("nobiax" "0k9apim5z4ihd5ajmnbq4gyh24w872dv0mr5v8wqn31a8gxzahhp")
2406 ("particles" "06827r9pnhzjil381xiwcbc93v9nxin7qlr59yrvk9gdzxmklk9m")
2407 ("philipk" "1l6fhl6qz471vjn05hvk29bm8dhwnzqbmi2hdylpa9k998nzkfc1")
2408 ("projectiles" "03ay8ik52n3vx723swqlnl5gpkzf1v1gadwj3zcnh43ch7nd2bqh")
2409 ("props" "1yxz7gfmb79sqqrkyfdzp4ar9rf5f1kpfij4nrkk1l8vbw9liksc")
2410 ("skyboxes" "1mm98mhb6yhb006p1hlic91jcwjxhq79mblxciwbqqa9c5g4yki6")
2411 ("snipergoth" "1vlpmwlg71g6l5b706gp82bc07i5bbw2zphzynm2fx49za0zdi44")
2412 ("sounds" "156g5wh8cvdh6zr33haqm566sd28ylnzdf2h4pqzpxbb2i19vbfg")
2413 ("textures" "0wkhl5cgymr9kslzhksi83hs15rb0q01xvax5khi6b4dcl3mrmsh")
2414 ("torley" "1xlag6ndjyqafl984n6d9zi96dv9aif7vrc2nvikc3iwgjwlbxav")
2415 ("trak" "12x9ix8zkqn9svy56qmdgj4x2814qh25f4srplgq691lqn9qjhvd")
2416 ("ulukai" "0gz1hd8hca2biskc85hw4jjacpsmqg9x4w6cwrka8x987xmc92k5")
2417 ("unnamed" "09v8fjy6jqypm1i121kilg3z6zpw7dm0i4gxhd9b7ihprvzvy8r7")
2418 ("vanities" "0m3vfq9l71pbb80qz4s3k8r5azmm158chqbw8snch09ymxm6h462")
2419 ("vegetation" "07yzm9lbzr624j4i652ny5p762p83gadg40c1k8gwff4y7yk55gn")
2420 ("weapons" "05fsp17gdrhjqdwia7rwdw9gcijaqwcnny8lf6krms43xmn8cj0x")
2421 ("wicked" "0jjgwzdibr5my369gwvmvbklpjlwq939zgf643rv0168xc087xb2"))))
158f5734 2422 (package
5b8a8543 2423 (name "red-eclipse")
ec3487a6 2424 (version "1.5.8")
158f5734
KY
2425 (source (origin
2426 (method url-fetch)
2427 (uri (string-append "https://github.com/red-eclipse/base"
2428 "/archive/v" version ".tar.gz"))
2429 (file-name (string-append name "-" version ".tar.gz"))
2430 (sha256
2431 (base32
ec3487a6 2432 "1ah92axwcai0fhgm7pvfb2dxvfdiwwyh8iqyiffndh6782hxz3bc"))))
158f5734
KY
2433 (build-system gnu-build-system)
2434 (arguments
2435 `(#:tests? #f ; no check target
2436 #:make-flags (list "CC=gcc" "-Csrc"
2437 (string-append "INSTDIR="
2438 (assoc-ref %outputs "out") "/bin"))
2439 #:phases
2440 (modify-phases %standard-phases
2441 (add-after 'unpack 'unpack-data
2442 (lambda* (#:key inputs #:allow-other-keys)
2443 (delete-file-recursively "data")
2444 (mkdir "data")
2445 (for-each (lambda (name)
2446 (system* "tar" "-xvf"
2447 (assoc-ref inputs name)
2448 "-Cdata"
2449 "--transform"
2450 (string-append "s/"
660e005c 2451 name "-" ,version "/"
158f5734
KY
2452 name "/")))
2453 (list ,@(map car data-sources)))
2454 #t))
2455 (delete 'configure) ; no configure script
2456 (add-after 'set-paths 'set-sdl-paths
2457 (lambda* (#:key inputs #:allow-other-keys)
2458 (setenv "CPATH"
2459 (string-append (assoc-ref inputs "sdl-union")
14b865dc 2460 "/include/SDL2"))
158f5734
KY
2461 #t))
2462 (add-after 'install 'copy-data
2463 (lambda* (#:key outputs #:allow-other-keys)
2464 (let ((out (assoc-ref outputs "out")))
2465 (copy-recursively "config"
2466 (string-append out "/config"))
66c65aaf
KK
2467 (copy-file "doc/examples/servinit.cfg"
2468 (string-append out "/config/servinit.cfg"))
158f5734
KY
2469 (copy-recursively "data"
2470 (string-append out "/data")))
2471 #t))
2472 (add-after 'copy-data 'wrap-program
2473 (lambda* (#:key inputs outputs #:allow-other-keys)
2474 (let* ((out (assoc-ref outputs "out"))
2475 (bin (string-append out "/bin")))
2476 (with-directory-excursion bin
2477 (rename-file "redeclipse_linux"
2478 ".redeclipse_linux-real")
2479 (rename-file "redeclipse_server_linux"
2480 ".redeclipse_server_linux-real")
2481 (call-with-output-file "redeclipse_linux"
2482 (lambda (port)
2483 (format port "#!~a/bin/sh
2484# Run the thing from its home, otherwise it just bails out.
2485cd \"~a\"
2486exec -a \"$0\" ~a/.redeclipse_linux-real~%"
2487 (assoc-ref inputs "bash") ;implicit input
2488 (string-append out)
2489 (string-append bin))))
2490 (call-with-output-file "redeclipse_server_linux"
2491 (lambda (port)
2492 (format port "#!~a/bin/sh
2493# Run the thing from its home, otherwise it just bails out.
2494cd \"~a\"
2495exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
2496 (assoc-ref inputs "bash") ;implicit input
2497 (string-append out)
2498 (string-append bin))))
2499 (chmod "redeclipse_linux" #o555)
2500 (chmod "redeclipse_server_linux" #o555)))
2501 #t)))))
2502 (native-inputs `(("pkg-config" ,pkg-config)))
2503 (inputs
2504 `(("curl" ,curl)
2505 ("glu" ,glu)
14b865dc
KK
2506 ("sdl-union" ,(sdl-union (list sdl2
2507 sdl2-image
2508 sdl2-mixer)))
158f5734
KY
2509 ;; Create origin records for the many separate data packages.
2510 ,@(map (match-lambda
2511 ((name hash)
2512 (list name
2513 (origin
2514 (method url-fetch)
2515 (uri (string-append
2516 "https://github.com/red-eclipse/"
2517 name "/archive/v" version ".tar.gz"))
2518 (sha256 (base32 hash))
2519 (file-name (string-append name "-" version
2520 ".tar.gz"))))))
2521 data-sources)))
2522 (home-page "http://redeclipse.net/")
2523 (synopsis "Arena shooter derived from the Cube 2 engine")
2524 (description
2525 "Red Eclipse is an arena shooter, created from the Cube2 engine.
2526Offering an innovative parkour system and distinct but all potent weapons,
2527Red Eclipse provides fast paced and accessible gameplay.")
2528 ;; The engine is under Zlib; data files are covered by the other
2529 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
2530 (license (list license:expat
2531 license:zlib
2532 license:cc-by-sa3.0
2533 license:cc-by3.0
2534 license:cc0)))))
bcd2982f
TUBK
2535
2536(define-public higan
2537 (package
2538 (name "higan")
dac65f90 2539 (version "101")
bcd2982f
TUBK
2540 (source
2541 (origin
2542 (method url-fetch)
2543 (uri (string-append
7c6058c0
TUBK
2544 "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
2545 version))
bcd2982f
TUBK
2546 (file-name (string-append name "-" version ".tar.gz"))
2547 (sha256
dac65f90 2548 (base32 "0qavwkmzc63p6qplmxii4gc541z5mcs8gjwh3m4y7i576r7rcbk9"))
7c6058c0 2549 (patches (search-patches "higan-remove-march-native-flag.patch"))))
bcd2982f
TUBK
2550 (build-system gnu-build-system)
2551 (native-inputs
2552 `(("pkg-config" ,pkg-config)))
2553 (inputs
2554 `(("alsa-lib" ,alsa-lib)
2555 ("ao" ,ao)
2556 ("eudev" ,eudev)
2557 ("gtk+" ,gtk+-2)
2558 ("gtksourceview-2" ,gtksourceview-2)
2559 ("libxv" ,libxv)
2560 ("mesa" ,mesa)
2561 ("openal" ,openal)
2562 ("pulseaudio" ,pulseaudio)
2563 ("sdl" ,sdl)))
2564 (arguments
2565 '(#:phases
2566 (let ((build-phase (assoc-ref %standard-phases 'build))
2567 (install-phase (assoc-ref %standard-phases 'install)))
2568 (modify-phases %standard-phases
2569 ;; The higan build system has no configure phase.
2570 (delete 'configure)
2571 (add-before 'build 'chdir-to-higan
2572 (lambda _
2573 (chdir "higan")))
2574 (add-before 'install 'create-/share/applications
2575 (lambda* (#:key outputs #:allow-other-keys)
2576 (let ((out (assoc-ref outputs "out")))
2577 ;; It seems the author forgot to do this in the Makefile.
2578 (mkdir-p (string-append out "/share/applications")))))
2579 (add-after 'install 'chdir-to-icarus
2580 (lambda _
2581 (chdir "../icarus")))
2582 (add-after 'chdir-to-icarus 'build-icarus build-phase)
2583 (add-after 'build-icarus 'install-icarus install-phase)
2584 (add-after 'install-icarus 'wrap-higan-executable
2585 (lambda* (#:key inputs outputs #:allow-other-keys)
2586 (let* ((out (assoc-ref outputs "out"))
2587 (bin (string-append out "/bin"))
2588 (higan (string-append bin "/higan"))
2589 (higan-original (string-append higan "-original"))
2590 (bash (string-append (assoc-ref inputs "bash")
2591 "/bin/bash"))
2592 (coreutils (assoc-ref inputs "coreutils"))
2593 (mkdir (string-append coreutils "/bin/mkdir"))
2594 (cp (string-append coreutils "/bin/cp"))
2595 (cp-r (string-append cp " -r --no-preserve=mode")))
2596 ;; First, have the executable make sure ~/.local/share/higan
2597 ;; contains up to date files. Higan insists on looking there
2598 ;; for these data files.
2599 (rename-file higan higan-original)
2600 (with-output-to-file higan
2601 (lambda ()
2602 (display
2603 (string-append
2604 "#!" bash "\n"
2605 ;; higan doesn't respect $XDG_DATA_HOME
2606 mkdir " -p ~/.local/share\n"
2607 cp-r " " out "/share/higan ~/.local/share\n"
2608 "exec " higan-original))))
2609 (chmod higan #o555)
2610 ;; Second, make sure higan will find icarus in PATH.
2611 (wrap-program higan
2612 `("PATH" ":" prefix (,bin))))))))
2613 #:make-flags
2614 (list "compiler=g++"
2615 (string-append "prefix=" (assoc-ref %outputs "out")))
2616 ;; There is no test suite.
2617 #:tests? #f))
2618 (home-page "http://byuu.org/emulation/higan/")
2619 (synopsis "Nintendo multi-system emulator")
2620 (description
2621 "higan (formerly bsnes) is an emulator for multiple Nintendo video game
2622consoles, including the Nintendo Entertainment System (NES/Famicom), Super
2623Nintendo Entertainment System (SNES/Super Famicom), Game Boy, Game Boy
2624Color (GBC), and Game Boy Advance (GBA). It also supports the subsystems
2625Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
2626 ;; As noted in these files among more:
2627 ;; - icarus/icarus.cpp
2628 ;; - higan/emulator/emulator.hpp
2629 (license license:gpl3)))
0fb9a15b
LC
2630
2631(define-public grue-hunter
2632 (package
2633 (name "grue-hunter")
2634 (version "1.0")
2635 (source (origin
2636 (method url-fetch)
2637 (uri (string-append "https://jxself.org/" name ".tar.gz"))
2638 (sha256
2639 (base32
2640 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
2641 (build-system trivial-build-system) ; no Makefile.PL
2642 (arguments `(#:modules ((guix build utils))
2643 #:builder
2644 (begin
2645 (use-modules (guix build utils))
2646 (use-modules (srfi srfi-1))
2647
2648 (let* ((tarball (assoc-ref %build-inputs "tarball"))
2649 (perl (string-append (assoc-ref %build-inputs
2650 "perl")
2651 "/bin"))
5edf2f05 2652 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 2653 "gzip")
5edf2f05 2654 "/bin/gzip"))
0fb9a15b
LC
2655 (tar (string-append (assoc-ref %build-inputs
2656 "tar")
2657 "/bin/tar"))
2658 (out (assoc-ref %outputs "out"))
2659 (bin (string-append out "/bin"))
6d57723a
TGR
2660 (doc (string-append out
2661 "/share/doc/grue-hunter")))
0fb9a15b 2662 (begin
0fb9a15b 2663 (copy-file tarball "grue-hunter.tar.gz")
5edf2f05 2664 (zero? (system* gzip "-d" "grue-hunter.tar.gz"))
0fb9a15b
LC
2665 (zero? (system* tar "xvf" "grue-hunter.tar"))
2666
2667 (mkdir-p bin)
2668 (copy-file "grue-hunter/gh.pl"
2669 (string-append bin "/grue-hunter"))
2670 (patch-shebang (string-append bin "/grue-hunter")
2671 (list perl))
2672
6d57723a 2673 (install-file "grue-hunter/AGPLv3.txt" doc))))))
0fb9a15b
LC
2674 (inputs `(("perl" ,perl)
2675 ("tar" ,tar)
2676 ("gzip" ,gzip)
2677 ("tarball" ,source)))
2678 (home-page "http://jxself.org/grue-hunter.shtml")
2679 (synopsis "Text adventure game")
2680 (description
2681 "Grue Hunter is a text adventure game written in Perl. You must make
2682your way through an underground cave system in search of the Grue. Can you
2683capture it and get out alive?")
2684 (license license:agpl3+)))
f317aeb4
KK
2685
2686(define-public warzone2100
2687 (package
2688 (name "warzone2100")
c5d17d50 2689 (version "3.2.1")
f317aeb4
KK
2690 (source (origin
2691 (method url-fetch)
2692 (uri (string-append "mirror://sourceforge/" name
2693 "/releases/" version "/" name "-" version
2694 ".tar.xz"))
2695 (sha256
2696 (base32
c5d17d50 2697 "1nd609s0g4sya3r4amhkz3f4dpdmm94vsd2ii76ap665a1nbfrhg"))))
f317aeb4
KK
2698 (build-system gnu-build-system)
2699 (arguments
c5d17d50
RW
2700 `(#:phases
2701 (modify-phases %standard-phases
2702 (add-after 'unpack 'link-tests-with-qt
2703 (lambda _
2704 (substitute* "tests/Makefile.in"
2705 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
2706 (string-append prefix "$(QT5_LIBS) ")))
2707 #t))
2708 (add-after 'unpack 'remove-reference-to-missing-file
2709 (lambda _
2710 (substitute* "icons/Makefile.in"
2711 (("\\$\\(INSTALL_DATA\\) \\$\\(srcdir\\)/warzone2100.appdata.xml.*") ""))
2712 #t)))))
f317aeb4
KK
2713 (native-inputs `(("pkg-config" ,pkg-config)
2714 ("unzip" ,unzip)
2715 ("zip" ,zip)))
2716 (inputs `(("fontconfig" ,fontconfig)
2717 ("freetype" ,freetype)
2718 ("fribidi" ,fribidi)
2719 ("glew" ,glew)
2720 ("libtheora" ,libtheora)
2721 ("libvorbis" ,libvorbis)
2722 ("libxrandr" ,libxrandr)
2723 ("openal" ,openal)
2724 ("physfs" ,physfs)
c5d17d50
RW
2725 ("qt" ,qt)
2726 ("openssl" ,openssl)
f317aeb4 2727 ("quesoglc" ,quesoglc)
c5d17d50 2728 ("sdl2" ,sdl2)))
f317aeb4
KK
2729 (home-page "http://wz2100.net")
2730 (synopsis "3D Real-time strategy and real-time tactics game")
2731 (description
2732 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
2733modes. An extensive tech tree with over 400 different technologies, combined
2734with the unit design system, allows for a wide variety of possible units and
2735tactics.")
2736 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
2737 (license (list license:bsd-3
2738 license:cc0
2739 license:cc-by-sa3.0
2740 license:expat
2741 license:gpl2+
2742 license:lgpl2.1+))))
4b670539
SB
2743
2744(define-public starfighter
2745 (package
2746 (name "starfighter")
9f86202b 2747 (version "1.7")
4b670539
SB
2748 (source (origin
2749 (method url-fetch)
2750 (uri (string-append
2751 "mirror://savannah/starfighter/"
2752 (version-major+minor version) "/"
2753 name "-" version "-src.tar.gz"))
2754 (sha256
2755 (base32
9f86202b 2756 "1646hpjq8bz2fkfkja1dah511hn7zd2r7da4w9c9blhad3p5732v"))))
4b670539 2757 (build-system gnu-build-system)
4b670539
SB
2758 (native-inputs
2759 `(("pkg-config" ,pkg-config)))
2760 (inputs
2761 `(("sdl2" ,sdl2)
2762 ("sdl2-image" ,sdl2-image)
2763 ("sdl2-mixer" ,sdl2-mixer)))
2764 (home-page "http://starfighter.nongnu.org/")
2765 (synopsis "2D scrolling shooter game")
2766 (description
2767 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
2768dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
2769their quest to liberate the galaxy from the clutches of WEAPCO. Along the
2770way, you will encounter new foes, make new allies, and assist local rebels
2771in strikes against the evil corporation.")
2772 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
2773 (license (list license:gpl3+
2774 license:cc-by3.0
2775 license:cc-by-sa3.0
2776 license:cc0
2777 license:public-domain))))
35e2e495
KK
2778
2779(define-public chromium-bsu
2780 (package
2781 (name "chromium-bsu")
08722837 2782 (version "0.9.16.1")
35e2e495
KK
2783 (source (origin
2784 (method url-fetch)
2785 (uri (string-append "mirror://sourceforge/" name
2786 "/Chromium B.S.U. source code/"
2787 name "-" version ".tar.gz"))
2788 (sha256
2789 (base32
08722837 2790 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 2791 (build-system gnu-build-system)
35e2e495 2792 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 2793 (inputs `(("gettext" ,gettext-minimal)
08722837 2794 ("glu" ,glu)
35e2e495
KK
2795 ("quesoglc" ,quesoglc)
2796 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
2797 (home-page "http://chromium-bsu.sourceforge.net/")
2798 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
2799 (description
2800 "In this game you are the captain of the cargo ship Chromium B.S.U. and
2801are responsible for delivering supplies to the troops on the front line. Your
2802ship has a small fleet of robotic fighters which you control from the relative
2803safety of the Chromium vessel.")
2804 ;; Clarified Artistic License for everything but sound, which is covered
2805 ;; by the Expat License.
2806 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
2807
2808(define-public tuxpaint
2809 (package
2810 (name "tuxpaint")
2811 (version "0.9.22") ;keep VER_DATE below in sync
2812 (source
2813 (origin
2814 (method url-fetch)
2815 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
2816 version "/tuxpaint-" version ".tar.gz"))
2817 (sha256
2818 (base32
2819 "1qrbrdck9yxpcg3si6jb9i11w8lw9h4hqad0pfaxgyiniqpr7gca"))
2820 (modules '((guix build utils)))
2821 (snippet
2822 '(begin
2823 ;; Remove win32 directory which contains binary dll's and the
2824 ;; deprecated visualc directory.
2825 (for-each delete-file-recursively '("win32" "visualc"))
2826 (substitute* "Makefile"
2827 ;; Do not rely on $(GPERF) being an absolute file name
2828 (("\\[ -x \\$\\(GPERF\\) \\]")
2829 "$(GPERF) --version >/dev/null 2>&1"))))
2830 (patches (search-patches "tuxpaint-stamps-path.patch"))))
2831 (build-system gnu-build-system)
2832 (native-inputs
2833 `(("gperf" ,gperf)
2834 ("pkg-config" ,pkg-config)))
2835 (inputs
2836 `(("cairo" ,cairo)
2837 ("fribidi" ,fribidi)
b94a6ca0 2838 ("gettext" ,gettext-minimal)
9b1ada4e
EB
2839 ("libpng" ,libpng)
2840 ("librsvg" ,librsvg)
2841 ("libpaper" ,libpaper)
2842 ("netpbm" ,netpbm)
2843 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
2844 ;; TODO: Use system fonts rather than those in data/fonts
2845 (arguments
2846 `(#:make-flags `("VER_DATE=2014-08-23"
2847 "GPERF=gperf" "CC=gcc"
2848 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
2849 ,(string-append "PREFIX=" %output)
2850 "GNOME_PREFIX=$(PREFIX)"
2851 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
2852 #:tests? #f ;No tests
2853 #:phases (modify-phases %standard-phases
2854 (delete 'configure) ;no configure phase
2855 (add-after 'install 'fix-import
2856 (lambda* (#:key inputs outputs #:allow-other-keys)
2857 (let* ((out (assoc-ref outputs "out"))
2858 (net (assoc-ref inputs "netpbm"))
2859 (tpi (string-append out "/bin/tuxpaint-import")))
2860 (substitute* tpi
2861 ;; Point to installation prefix so that the default
2862 ;; configure file is found.
2863 (("/usr/local") out))
2864 ;; tuxpaint-import uses a bunch of programs from
2865 ;; netpbm, so make sure it knows where those are
2866 (wrap-program tpi
2867 `("PATH" ":" prefix
2868 (,(string-append net "/bin"))))))))))
2869 (native-search-paths
2870 (list (search-path-specification
2871 (variable "TUXPAINT_STAMPS_PATH")
2872 (files '("share/tuxpaint/stamps")))))
2873 (home-page "http://www.tuxpaint.org")
2874 (synopsis "Drawing software for children")
2875 (description
2876 "Tux Paint is a free drawing program designed for young children (kids
2877ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
2878and an encouraging cartoon mascot who helps guide children as they use the
2879program. It provides a blank canvas and a variety of drawing tools to help
2880your child be creative.")
2881 (license license:gpl2+)))
c3d850f2
EB
2882
2883(define-public tuxpaint-stamps
2884 (package
2885 (name "tuxpaint-stamps")
2886 (version "2014.08.23")
2887 (source
2888 (origin
2889 (method url-fetch)
2890 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
2891 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
2892 "/tuxpaint-stamps-" version ".tar.gz"))
2893 (sha256
2894 (base32
2895 "0rhlwrjz44wp269v3rid4p8pi0i615pzifm1ym6va64gn1bms06q"))))
2896 (build-system trivial-build-system)
2897 (native-inputs
2898 `(("tar" ,tar)
2899 ("gzip" ,gzip)))
2900 (arguments
2901 `(#:modules ((guix build utils))
2902 #:builder (begin
2903 (use-modules (guix build utils))
2904 (setenv "PATH"
2905 (string-append
2906 (assoc-ref %build-inputs "tar") "/bin" ":"
2907 (assoc-ref %build-inputs "gzip") "/bin"))
2908 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
2909 (chdir (string-append ,name "-" ,version))
2910 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
2911 (mkdir-p dir)
2912 (copy-recursively "stamps" dir)))))
2913 (home-page (package-home-page tuxpaint))
2914 (synopsis "Stamp images for Tux Paint")
2915 (description
2916 "This package contains a set of \"Rubber Stamp\" images which can be used
2917with the \"Stamp\" tool within Tux Paint.")
2918 (license license:gpl2+)))
d2563973
EB
2919
2920(define-public tuxpaint-config
2921 (package
2922 (name "tuxpaint-config")
2923 (version "0.0.13") ;keep VER_DATE below in sync
2924 (source
2925 (origin
2926 (method url-fetch)
2927 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
2928 version "/tuxpaint-config-" version ".tar.gz"))
2929 (sha256
2930 (base32
2931 "1z12s46mvy87qs3vgq9m0ki9pp21zqc52mmgphahpihw3s7haf6v"))))
2932 (build-system gnu-build-system)
2933 (native-inputs
b94a6ca0 2934 `(("gettext" ,gettext-minimal)))
d2563973
EB
2935 (inputs
2936 `(("fltk" ,fltk)
2937 ("libpaper" ,libpaper)
2938 ;; TODO: Should the following be propagated by fltk?
2939 ("libx11" ,libx11)
2940 ("libxft" ,libxft)
2941 ("mesa" ,mesa)))
2942 (arguments
2943 `(#:make-flags `("VER_DATE=2014-08-23"
2944 "CONFDIR=/etc/tuxpaint" ;don't write to store
2945 ,(string-append "PREFIX=" %output)
2946 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 2947 #:parallel-build? #f ;race conditions
d2563973
EB
2948 #:tests? #f ;no tests
2949 #:phases (modify-phases %standard-phases
2950 (delete 'configure) ;no configure phase
2951 (add-before 'install 'gzip-no-name
2952 (lambda* _
2953 (substitute* "Makefile"
2954 ;; tuxpaint-config compresses its own documentation;
2955 ;; make sure it uses flags for reproducibility.
2956 (("gzip") "gzip --no-name"))))
2957 (add-before 'install 'make-install-dirs
2958 (lambda* (#:key outputs #:allow-other-keys)
2959 (let ((out (assoc-ref outputs "out")))
2960 (mkdir-p (string-append out "/bin"))
2961 #t))))))
2962 (home-page (package-home-page tuxpaint))
2963 (synopsis "Configure Tux Paint")
2964 (description
2965 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
2966 (license license:gpl2))) ;no "or later" present
826a3ca2 2967
2968(define-public supertux
2969 (package
2970 (name "supertux")
ea5cc295 2971 (version "0.5.1")
826a3ca2 2972 (source (origin
2973 (method url-fetch)
d910d584
RW
2974 (uri (string-append "https://github.com/SuperTux/supertux/"
2975 "releases/download/v" version "/SuperTux-v"
2976 version "-Source.tar.gz"))
826a3ca2 2977 (sha256
2978 (base32
ea5cc295 2979 "1i8avad7w7ikj870z519j383ldy29r6f956bs38cbr8wk513pp69"))))
d910d584
RW
2980 (arguments
2981 '(#:tests? #f
2982 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
2983 "-DENABLE_BOOST_STATIC_LIBS=OFF")))
826a3ca2 2984 (build-system cmake-build-system)
2985 (inputs `(("sdl2" ,sdl2)
2986 ("sdl2-image" ,sdl2-image)
2987 ("sdl2-mixer" ,sdl2-mixer)
2988 ("openal" ,openal)
2989 ("mesa" ,mesa)
2990 ("glew" ,glew)
2991 ("libvorbis" ,libvorbis)
2992 ("libogg" ,libogg)
2993 ("physfs" ,physfs)
2994 ("curl" ,curl)
2995 ("boost" ,boost)))
2996 (native-inputs `(("pkg-config" ,pkg-config)))
2997 (synopsis "2D platformer game")
2998 (description "SuperTux is a free classic 2D jump'n run sidescroller game
2999in a style similar to the original Super Mario games covered under
3000the GNU GPL.")
3001 (home-page "https://supertuxproject.org/")
3002 (license license:gpl3+)))
b3de5ff2 3003
751c7040 3004(define-public tintin++
3005 (package
3006 (name "tintin++")
ca085a3a 3007 (version "2.01.2")
751c7040 3008 (source (origin
3009 (method url-fetch)
998ac26a
LC
3010 (uri (string-append "mirror://sourceforge/tintin"
3011 "/TinTin++ Source Code/" version
751c7040 3012 "/tintin" "-" version ".tar.gz"))
3013 (sha256
3014 (base32
ca085a3a 3015 "13h39agyhlhm17zyqlb56bmbbxpimikyf5pana3gd3ylvqy1xq81"))))
751c7040 3016 (inputs
3017 `(("gnutls" ,gnutls)
3018 ("pcre" ,pcre)
3019 ("readline" ,readline)
3020 ("zlib" ,zlib)))
3021 (arguments
3022 '(#:tests? #f ; no test suite
3023 #:phases
3024 (modify-phases %standard-phases
3025 ;; The source is in tt/src.
3026 (add-before 'configure 'chdir
3027 (lambda _
3028 (chdir "src")
3029 #t)))))
3030 (build-system gnu-build-system)
3031 (home-page "http://tintin.sourceforge.net/")
3032 (synopsis "MUD client")
3033 (description
3034 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression Protocol),
3035MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET options used by MUDs,
3036as well as those required to login via telnet on Linux / Mac OS X servers, and an
3037auto mapper with a VT100 map display.")
3038 (license license:gpl2+)))
3039
b3de5ff2
JN
3040(define-public laby
3041 (package
3042 (name "laby")
3043 (version "0.6.4")
3044 (source
3045 (origin (method url-fetch)
3046 (uri (string-append
ff0ecefc
EF
3047 "https://github.com/sgimenez/laby/archive/"
3048 name "-" version ".tar.gz"))
b3de5ff2
JN
3049 (sha256
3050 (base32
ff0ecefc 3051 "0gyrfa95l1qka7gbjf7l6mk7mbfvph00l0c995ia272qdw7rjhyf"))
b3de5ff2
JN
3052 (patches (search-patches "laby-make-install.patch"))))
3053 (build-system gnu-build-system)
3054 (inputs
3055 `(("lablgtk" ,lablgtk)
3056 ("ocaml" ,ocaml)
3057 ("ocaml-findlib" ,ocaml-findlib)))
3058 (arguments
3059 '(#:phases
3060 (modify-phases %standard-phases
3061 (delete 'configure)
3062 (add-before 'build 'setenv
3063 (lambda* (#:key inputs #:allow-other-keys)
3064 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3065 (setenv "LD_LIBRARY_PATH"
3066 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3067 #:tests? #f ; no 'check' target
3068 #:make-flags
3069 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3070 (home-page "https://sgimenez.github.io/laby/")
3071 (synopsis "Programming game")
3072 (description "Learn programming, playing with ants and spider webs ;-)
3073Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3074Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3075programmers may also add their own favorite language.")
3076 (license license:gpl3+)))
b0488fe5
EF
3077
3078(define-public bambam
3079 (package
3080 (name "bambam")
3081 (version "0.5")
3082 (source
3083 (origin
3084 (method url-fetch)
3085 (uri (string-append "https://github.com/porridge/bambam/archive/"
3086 version ".tar.gz"))
3087 (file-name (string-append name "-" version ".tar.gz"))
3088 (sha256
3089 (base32
3090 "10w110mjdwbvddzihh9rganvvjr5jfiz8cs9n7w12zndwwcc3ria"))))
3091 (build-system python-build-system)
3092 (arguments
3093 `(#:python ,python-2
3094 #:tests? #f ; no tests
3095 #:phases
3096 (modify-phases %standard-phases
3097 (delete 'build)
3098 (add-before 'install 'patch-data-dir-location
3099 (lambda _
3100 (substitute* "bambam.py"
46a06224 3101 (("'data'") "'../share/bambam/data'"))
b0488fe5
EF
3102 #t))
3103 (replace 'install
3104 (lambda* (#:key outputs #:allow-other-keys)
3105 (let* ((out (assoc-ref outputs "out"))
3106 (bin (string-append out "/bin"))
3107 (share (string-append out "/share")))
3108 (mkdir-p bin)
3109 (copy-file "bambam.py" (string-append bin "/bambam"))
3110 (install-file "bambam.6" (string-append share "/man/man6"))
3111 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
3112 #t)))))
3113 (inputs
3114 `(("python-pygame" ,python-pygame)))
3115 (home-page "https://github.com/porridge/bambam")
46a06224 3116 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
3117 (description "Bambam is a simple baby keyboard (and gamepad) masher
3118application that locks the keyboard and mouse and instead displays bright
3119colors, pictures, and sounds.")
3120 (license license:gpl3+)))
6b87c10f
SB
3121
3122(define-public mrrescue
3123 (package
3124 (name "mrrescue")
3125 (version "1.02e")
3126 (source (origin
3127 (method url-fetch)
3128 (uri (string-append
3129 "https://github.com/SimonLarsen/mrrescue/releases/"
3130 "download/" version "/" name version ".love"))
3131 (file-name (string-append name "-" version ".love"))
3132 (sha256
3133 (base32
3134 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
3135 (build-system trivial-build-system)
3136 (arguments
3137 '(#:modules ((guix build utils))
3138 #:builder
3139 (begin
3140 (use-modules (guix build utils))
3141 (let* ((out (assoc-ref %outputs "out"))
3142 (bindir (string-append out "/bin"))
3143 (prog (string-append bindir "/mrrescue"))
3144 (source (assoc-ref %build-inputs "source"))
3145 (bash (string-append (assoc-ref %build-inputs "bash")
3146 "/bin/bash"))
3147 (love (string-append (assoc-ref %build-inputs "love")
3148 "/bin/love")))
3149 (mkdir-p bindir)
3150 (with-output-to-file prog
3151 (lambda ()
3152 (format #t "#!~a~%" bash)
3153 (format #t "exec -a mrrescue \"~a\" \"~a\"~%" love source)))
3154 (chmod prog #o755)
3155 #t))))
3156 (inputs
3157 `(("bash" ,bash)
3158 ("love" ,love)))
3159 (home-page "http://tangramgames.dk/games/mrrescue")
3160 (synopsis "Arcade-style fire fighting game")
3161 (description
3162 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
3163civilians from burning buildings. The game features fast paced fire
3164extinguishing action, intense boss battles, a catchy soundtrack and lots of
3165throwing people around in pseudo-randomly generated buildings.")
3166 (license (list license:zlib ; for source code
3167 license:cc-by-sa3.0)))) ; for graphics and music assets
cd1869cd
KK
3168
3169(define-public hyperrogue
3170 (package
3171 (name "hyperrogue")
f8279ba4
KK
3172 (version "9.4c")
3173 ;; When updating this package, be sure to update the "hyperrogue-data"
3174 ;; origin in native-inputs.
cd1869cd
KK
3175 (source (origin
3176 (method url-fetch)
3177 (uri (string-append
3178 "http://www.roguetemple.com/z/hyper/"
f8279ba4
KK
3179 name (string-join (string-split version #\.) "")
3180 "-src.tgz"))
cd1869cd
KK
3181 (sha256
3182 (base32
f8279ba4 3183 "1ri5fllnhqjm3dlnl1xbb9mlv79iigc940vbvcnk0v5k6p58pavq"))))
cd1869cd
KK
3184 (build-system gnu-build-system)
3185 (arguments
f8279ba4 3186 `(#:tests? #f ; no check target
cd1869cd
KK
3187 #:phases
3188 (modify-phases %standard-phases
3189 (add-after 'set-paths 'set-sdl-paths
3190 (lambda* (#:key inputs #:allow-other-keys)
3191 (setenv "CPATH"
3192 (string-append (assoc-ref inputs "sdl-union")
3193 "/include/SDL"))))
3194 ;; Fix font and music paths.
3195 (replace 'configure
3196 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
3197 (let* ((out (assoc-ref outputs "out"))
3198 (share-dir (string-append out "/share/hyperrogue"))
3199 (dejavu-dir (string-append
3200 (assoc-ref inputs "font-dejavu")
3201 "/share/fonts/truetype"))
3202 (dejavu-font "DejaVuSans-Bold.ttf")
3203 (music-file "hyperrogue-music.txt"))
3204 (substitute* "graph.cpp"
3205 ((dejavu-font)
3206 (string-append dejavu-dir "/" dejavu-font)))
3207 (substitute* "sound.cpp"
3208 (((string-append "\\./" music-file))
3209 (string-append share-dir "/" music-file))
3210 (("sounds/")
3211 (string-append share-dir "/sounds/")))
3212 (substitute* music-file
3213 (("\\*/")
3214 (string-append share-dir "/sounds/"))))
cd1869cd
KK
3215 #t))
3216 (replace 'install
3217 (lambda* (#:key inputs outputs #:allow-other-keys)
3218 (let* ((out (assoc-ref outputs "out"))
3219 (bin (string-append out "/bin"))
3220 (share-dir (string-append out "/share/hyperrogue")))
3221 (mkdir-p bin)
f8279ba4
KK
3222 (copy-file "hyper" (string-append bin "/hyperrogue"))
3223 (install-file "hyperrogue-music.txt" share-dir))
3224 #t))
3225 (add-after 'install 'install-data
3226 (lambda* (#:key inputs outputs #:allow-other-keys)
3227 (let* ((data (assoc-ref inputs "hyperrogue-data"))
3228 (out (assoc-ref outputs "out"))
3229 (sounds (string-append out "/share/hyperrogue/sounds"))
3230 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
3231 (and
3232 ;; Extract media license information into sounds directory.
3233 (zero?
3234 (system* unzip "-j" data
3235 (string-append
3236 "hyperrogue"
3237 (string-join (string-split ,version #\.) "")
3238 "-win/sounds/credits.txt") "-d" sounds))
3239 ;; Extract sounds and music into sounds directory.
3240 (zero?
3241 (system* "unzip" "-j" data
3242 (string-append
3243 "hyperrogue"
3244 (string-join (string-split ,version #\.) "")
3245 "-win/*.ogg") "-d" sounds)))))))))
3246 (native-inputs
3247 `(("hyperrogue-data"
3248 ,(origin
3249 (method url-fetch)
3250 (uri
3251 (string-append
3252 "http://www.roguetemple.com/z/hyper/" name
3253 (string-join (string-split version #\.) "")
3254 "-win.zip"))
3255 (sha256
3256 (base32
3257 "1cyyrsnrixygg3zyz97hpsm6jzwbhydiwk3kl0lm7qjnw2nzkhhh"))))
3258 ("unzip" ,unzip)))
cd1869cd
KK
3259 (inputs
3260 `(("font-dejavu" ,font-dejavu)
3261 ("glew" ,glew)
3262 ("libpng" ,libpng)
3263 ("sdl-union" ,(sdl-union (list sdl
3264 sdl-gfx
3265 sdl-mixer
3266 sdl-ttf)))))
3267 (home-page "http://www.roguetemple.com/z/hyper/")
3268 (synopsis "Non-euclidean graphical rogue-like game")
3269 (description
3270 "HyperRogue is a game in which the player collects treasures and fights
3271monsters -- rogue-like but for the fact that it is played on the hyperbolic
3272plane and not in euclidean space.
3273
3274In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
3275are home to particular creatures and may be subject to their own rules of
3276\"physics\".
cd1869cd 3277
a53a6b6f
TGR
3278While the game can use ASCII characters to display the the classical rogue
3279symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
3280 (license (list license:bsd-3 ; glew.c, mtrand.*
3281 license:cc-by-sa3.0 ; music
3282 license:cc-by-sa4.0 ; sounds
3283 license:cc0
3284 license:public-domain ; direntx.*, some sounds
3285 license:zlib ; savepng.*
cd1869cd 3286 license:gpl2+)))) ; remaining files
a56145e1
SW
3287
3288(define-public kobodeluxe
3289 (package
3290 (name "kobodeluxe")
3291 (version "0.5.1")
3292 (source (origin
3293 (method url-fetch)
3294 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
3295 version ".tar.bz2"))
3296 (sha256
3297 (base32
3298 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
3299 (patches (search-patches
3300 "kobodeluxe-const-charp-conversion.patch"
3301 "kobodeluxe-enemies-pipe-decl.patch"
3302 "kobodeluxe-graphics-window-signed-char.patch"
3303 "kobodeluxe-manpage-minus-not-hyphen.patch"
3304 "kobodeluxe-midicon-segmentation-fault.patch"
3305 "kobodeluxe-paths.patch"))))
3306 (build-system gnu-build-system)
3307 (arguments
3308 '(#:configure-flags
3309 (list (string-append "CPPFLAGS=-I"
3310 (assoc-ref %build-inputs "sdl-union")
3311 "/include/SDL"))))
3312 (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image)))))
3313 (synopsis "Shooter with space station destruction")
3314 (description
3315 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
3316for Un*x systems with X11.")
3317 (home-page "http://olofson.net/kobodl/")
3318 (license license:gpl2+)))
5430dbd9
AI
3319
3320(define-public freeciv
3321 (package
3322 (name "freeciv")
3323 (version "2.5.6")
3324 (source
3325 (origin
3326 (method url-fetch)
3327 (uri (string-append
3328 "http://download.gna.org/freeciv/"
3329 "stable/freeciv-" version ".tar.bz2"))
3330 (sha256
3331 (base32
3332 "16wrnsx5rmbz6rjs03bhy0vn20i6n6g73lx7fjpai98ixhzc5bfg"))))
3333 (build-system gnu-build-system)
3334 (inputs
3335 `(("curl" ,curl)
3336 ("cyrus-sasl" ,cyrus-sasl)
3337 ("gtk+" ,gtk+)
3338 ("sdl-mixer" ,sdl-mixer)
3339 ("zlib" ,zlib)))
3340 (native-inputs
3341 `(("pkg-config" ,pkg-config)))
3342 (home-page "http://www.freeciv.org/")
3343 (synopsis "Turn based empire building strategy game")
3344 (description "Freeciv is a turn based empire building strategy game
3345inspired by the history of human civilization. The game commences in
3346prehistory and your mission is to lead your tribe from the Stone Age
3347to the Space Age.")
3348 (license license:gpl2+)))
345504c7 3349
3350(define-public no-more-secrets
3351 (package
3352 (name "no-more-secrets")
3d602acb 3353 (version "0.3.2")
345504c7 3354 (source
3355 (origin
3356 (method url-fetch)
3357 (uri (string-append "https://github.com/bartobri/no-more-secrets/"
3358 "archive/v" version ".tar.gz"))
3359 (file-name (string-append name "-" version ".tar.gz"))
3360 (sha256
3361 (base32
3d602acb 3362 "00mzdif859vm75n1igrffh8c07p1nr4rlm3yb7lrkwwxhrw8xzla"))))
345504c7 3363 (build-system gnu-build-system)
3364 (arguments
3365 `(#:tests? #f
3366 #:make-flags (list "CC=gcc" "all-ncurses"
3367 (string-append "prefix="
3368 (assoc-ref %outputs "out")))
3369 #:phases
3370 (modify-phases %standard-phases
3371 (delete 'configure))))
3372 (inputs
3373 `(("ncurses" ,ncurses)))
3374 (home-page "https://github.com/bartobri/no-more-secrets")
3375 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
3376 (description
3377 "@code{No More Secrets} provides a command line tool called \"nms\"
3378that recreates the famous data decryption effect seen on screen in the 1992
3379movie \"Sneakers\".
3380
3381This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
3382it will apply the hollywood effect, initially showing encrypted data, then
3383starting a decryption sequence to reveal the original plaintext characters.")
3384 (license license:expat)))
fb731c92
AI
3385
3386(define-public megaglest-data
3387 (package
3388 (name "megaglest-data")
3389 (version "3.13.0")
3390 (source
3391 (origin
3392 (method url-fetch)
3393 (uri (string-append
3394 "https://github.com/MegaGlest/megaglest-data"
3395 "/releases/download/" version "/megaglest-data-"
3396 version ".tar.xz"))
3397 (sha256
3398 (base32
3399 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
3400 (build-system cmake-build-system)
3401 (arguments
3402 `(#:tests? #f))
3403 (home-page "https://megaglest.org/")
3404 (synopsis "Data files for MegaGlest")
3405 (description "This package contains the data files required for MegaGlest.")
3406 (license license:cc-by-sa3.0)))
0b608ec4
AI
3407
3408(define-public megaglest
3409 (package
3410 (name "megaglest")
3411 (version "3.13.0")
3412 (source
3413 (origin
3414 (method url-fetch)
3415 (uri (string-append
3416 "https://github.com/MegaGlest/megaglest-source"
3417 "/releases/download/" version "/megaglest-source-"
3418 version ".tar.xz"))
3419 (sha256
3420 (base32
3421 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
3422 (build-system cmake-build-system)
3423 (inputs
3424 `(("curl" ,curl)
3425 ("fontconfig" ,fontconfig)
3426 ("ftgl" ,ftgl)
3427 ("glew" ,glew)
3428 ("libjpeg-turbo" ,libjpeg-turbo)
3429 ("megaglest-data" ,megaglest-data)
3430 ("mesa" ,mesa)
3431 ("miniupnpc" ,miniupnpc)
3432 ("openal" ,openal)
3433 ("libircclient" ,libircclient)
3434 ("libpng" ,libpng)
3435 ("libvorbis" ,libvorbis)
3436 ("lua" ,lua)
3437 ("sdl2" ,sdl2)
3438 ("wxwidgets" ,wxwidgets)))
3439 (native-inputs
3440 `(("cppunit" ,cppunit)
3441 ("pkg-config" ,pkg-config)))
3442 (arguments
3443 `(#:configure-flags
3444 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
3445 (assoc-ref %build-inputs "megaglest-data")
3446 "/share/megaglest")
3447 "-DBUILD_MEGAGLEST_TESTS=ON")
3448 #:phases
3449 (modify-phases %standard-phases
3450 (add-after 'unpack 'fix-ini-search-path
3451 (lambda* (#:key outputs #:allow-other-keys)
3452 (substitute* "source/glest_game/global/config.cpp"
3453 (("/usr/share/megaglest/")
3454 (string-append (assoc-ref outputs "out")
3455 "/share/megaglest/"))))))
3456 #:test-target "megaglest_tests"))
3457 (home-page "https://megaglest.org/")
3458 (synopsis "3D real-time strategy (RTS) game")
3459 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
3460game, where you control the armies of one of seven different factions: Tech,
3461Magic, Egypt, Indians, Norsemen, Persian or Romans.")
3462 (license license:gpl2+)))
6bb9c854
RW
3463
3464(define-public freegish
3465 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
3466 (revision "1"))
3467 (package
3468 (name "freegish")
3469 (version (string-append "0-" revision "." (string-take commit 9)))
3470 (source (origin
3471 (method git-fetch)
3472 (uri (git-reference
3473 (url "https://github.com/freegish/freegish.git")
3474 (commit commit)))
3475 (sha256
3476 (base32
3477 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
3478 (modules '((guix build utils)))
3479 ;; The audio files in the "music" directory are licensed under
3480 ;; CC-BY-NC, so we delete them.
3481 (snippet
3482 '(begin
3483 (delete-file-recursively "music")
3484 #t))))
3485 (build-system cmake-build-system)
3486 (arguments
3487 `(#:tests? #f ; no tests included
3488 #:configure-flags
3489 (list "-DCMAKE_INSTALL_FHS=ON")
3490 #:phases
3491 (modify-phases %standard-phases
3492 (add-after 'unpack 'set-DATAPATH
3493 (lambda* (#:key outputs #:allow-other-keys)
3494 (substitute* "CMakeLists.txt"
3495 (("^option\\(INSTALL_FHS" line)
3496 (string-append "add_definitions(-DDATAPATH=\""
3497 (assoc-ref outputs "out") "/share/freegish\")\n"
3498 line)))
3499 #t)))))
3500 (inputs
3501 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
3502 ("openal" ,openal)
3503 ("libvorbis" ,libvorbis)
3504 ("libogg" ,libogg)
3505 ("mesa" ,mesa)
3506 ("libpng" ,libpng)
3507 ("zlib" ,zlib)))
3508 (home-page "https://github.com/freegish/freegish")
3509 (synopsis "Side-scrolling physics platformer with a ball of tar")
3510 (description "In FreeGish you control Gish, a ball of tar who lives
3511happily with his girlfriend Brea, until one day a mysterious dark creature
3512emerges from a sewer hole and pulls her below ground.")
3513 ;; The textures are available under the Expat license. All other assets
3514 ;; (including levels) are covered under CC-BY-SA or public domain. The
3515 ;; source code is under GPLv2+.
3516 (license (list license:gpl2+
3517 license:expat
3518 license:public-domain
3519 license:cc-by-sa3.0)))))
f0f7bf95
RW
3520
3521(define-public cdogs-sdl
3522 (package
3523 (name "cdogs-sdl")
3524 (version "0.6.4")
3525 (source (origin
3526 (method url-fetch)
3527 (uri (string-append "https://github.com/cxong/cdogs-sdl/"
3528 "archive/" version ".tar.gz"))
3529 (file-name (string-append name "-" version ".tar.gz"))
3530 (sha256
3531 (base32
3532 "08c3y8ijimx6mp0gm90abz4lsnbflqka519q2v0id0096vsc2pxn"))))
3533 (build-system cmake-build-system)
3534 (arguments
3535 `(#:configure-flags
3536 (list (string-append "-DCDOGS_DATA_DIR="
3537 (assoc-ref %outputs "out")
3538 "/share/cdogs-sdl/"))))
3539 (inputs
3540 `(("sdl2" ,sdl2)
3541 ("sdl2-image" ,sdl2-image)
3542 ("sdl2-mixer" ,sdl2-mixer)))
3543 (home-page "http://cxong.github.io/cdogs-sdl/")
3544 (synopsis "Classic overhead run-and-gun game")
3545 (description "C-Dogs SDL is a classic overhead run-and-gun game,
3546supporting up to 4 players in co-op and deathmatch modes. Customize your
3547player, choose from many weapons, and blast, slide and slash your way through
3548over 100 user-created campaigns.")
3549 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
3550 ;; CC0/CC-BY/CC-BY-SA for assets.
3551 (license (list license:gpl2+
3552 license:bsd-2
3553 license:bsd-3
3554 license:cc0
3555 license:cc-by3.0
3556 license:cc-by-sa3.0))))
bd71525b
RW
3557
3558(define-public kiki
3559 (package
3560 (name "kiki")
3561 (version "1.0.2")
3562 (source (origin
3563 (method url-fetch)
3564 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
3565 version "/kiki-" version "-src.tgz"))
3566 (sha256
3567 (base32
3568 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
3569 (modules '((guix build utils)))
3570 (snippet
3571 '(begin
3572 (for-each delete-file (find-files "." "\\.dll$"))
3573 #t))
3574 (patches
3575 (search-patches "kiki-level-selection-crash.patch"
3576 "kiki-makefile.patch"
3577 "kiki-missing-includes.patch"
3578 "kiki-portability-64bit.patch"))))
3579 (build-system gnu-build-system)
3580 (arguments
3581 `(#:tests? #f ; there are no tests
3582 #:make-flags '("CXX=g++")
3583 #:phases
3584 (modify-phases %standard-phases
3585 (replace 'configure
3586 (lambda* (#:key inputs outputs #:allow-other-keys)
3587 (setenv "CPLUS_INCLUDE_PATH"
3588 (string-append (assoc-ref inputs "sdl-union")
3589 "/include/SDL:"
3590 (assoc-ref inputs "python")
3591 "/include/python2.7:"
3592 (getenv "CPLUS_INCLUDE_PATH")))
3593 (substitute* "src/main/main.cpp"
3594 (("#include <SDL.h>" line)
3595 (string-append line "
3596#define K_INCLUDE_GLUT
3597#include \"KIncludeTools.h\""))
3598 (("// initialize SDL" line)
3599 (string-append "glutInit(&argc,argv);\n" line)))
3600 (substitute* "src/main/KikiController.cpp"
3601 (("getenv\\(\"KIKI_HOME\"\\)")
3602 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
3603 (substitute* "linux/Makefile"
3604 (("CXXOPTS =" line)
3605 (string-append line " -fpermissive"))
3606 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
3607 (("PYTHONHOME =.*")
3608 (string-append "PYTHONHOME = "
3609 (assoc-ref inputs "python")
3610 "/lib/python2.7/"))
3611 (("\\$\\(GLLIBS\\)" line)
3612 (string-append line " -lm -lpython2.7")))
3613 (substitute* "src/main/KikiPythonWidget.h"
3614 (("#define __KikiPythonWidget" line)
3615 (string-append line "\n#include \"KikiPython.h\"")))
3616 #t))
3617 (add-before 'build 'build-kodilib
3618 (lambda* (#:key make-flags #:allow-other-keys)
3619 (with-directory-excursion "kodilib/linux"
3620 (zero? (apply system* "make" make-flags)))))
3621 (add-after 'build-kodilib 'chdir
3622 (lambda _ (chdir "linux") #t))
3623 (replace 'install
3624 (lambda* (#:key outputs #:allow-other-keys)
3625 (let* ((out (assoc-ref outputs "out"))
3626 (bin (string-append out "/bin"))
3627 (share (string-append out "/share/kiki")))
3628 (mkdir-p bin)
3629 (mkdir-p share)
3630 (install-file "kiki" bin)
3631 (copy-recursively "../py" (string-append share "/py"))
3632 (copy-recursively "../sound" (string-append share "/sound"))
3633 #t))))))
3634 (inputs
3635 `(("glu" ,glu)
3636 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
3637 ("freeglut" ,freeglut-2.8)
3638 ("sdl-union" ,(sdl-union (list sdl
3639 sdl-mixer
3640 sdl-image)))
3641 ("python" ,python-2)))
3642 (native-inputs
3643 `(("swig" ,swig)))
3644 (home-page "http://kiki.sourceforge.net/")
3645 (synopsis "3D puzzle game")
3646 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
3647mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
3648small robot living in the nano world, repair its maker.")
3649 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
3650 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
3651 ;; for a statement from the author.
3652 (license license:public-domain)))
b77e3a1c
RW
3653
3654(define-public teeworlds
3655 (package
3656 (name "teeworlds")
3657 (version "0.6.4")
3658 (source (origin
3659 (method url-fetch)
3660 (uri (string-append "https://github.com/teeworlds/teeworlds/"
3661 "archive/" version "-release.tar.gz"))
3662 (file-name (string-append name "-" version ".tar.gz"))
3663 (sha256
3664 (base32
3665 "1mqhp6xjl75l49050cid36wxyjn1qr0vjx1c709dfg1lkvmgs6l3"))
3666 (modules '((guix build utils)))
3667 (snippet
3668 '(begin
3669 (for-each delete-file-recursively
3670 '("src/engine/external/wavpack/"
3671 "src/engine/external/zlib/"))
3672 #t))
3673 (patches
3674 (search-patches "teeworlds-use-latest-wavpack.patch"))))
3675 (build-system gnu-build-system)
3676 (arguments
3677 `(#:tests? #f ; no tests included
3678 #:phases
3679 (modify-phases %standard-phases
3680 (replace 'configure
3681 (lambda* (#:key outputs #:allow-other-keys)
3682 ;; Embed path to assets.
3683 (substitute* "src/engine/shared/storage.cpp"
3684 (("#define DATA_DIR.*")
3685 (string-append "#define DATA_DIR \""
3686 (assoc-ref outputs "out")
3687 "/share/teeworlds/data"
3688 "\"")))
3689
3690 ;; Bam expects all files to have a recent time stamp.
3691 (for-each (lambda (file)
3692 (utime file 1 1))
3693 (find-files "."))
3694
3695 ;; Do not use bundled libraries.
3696 (substitute* "bam.lua"
3697 (("if config.zlib.value == 1 then")
3698 "if true then")
3699 (("wavpack = .*")
3700 "wavpack = {}
3701settings.link.libs:Add(\"wavpack\")\n"))
3702 (substitute* "src/engine/client/sound.cpp"
3703 (("#include <engine/external/wavpack/wavpack.h>")
3704 "#include <wavpack/wavpack.h>"))
3705 #t))
3706 (replace 'build
3707 (lambda _
3708 (zero? (system* "bam" "-a" "-v" "release"))))
3709 (replace 'install
3710 (lambda* (#:key outputs #:allow-other-keys)
3711 (let* ((out (assoc-ref outputs "out"))
3712 (bin (string-append out "/bin"))
3713 (data (string-append out "/share/teeworlds/data")))
3714 (mkdir-p bin)
3715 (mkdir-p data)
3716 (for-each (lambda (file)
3717 (install-file file bin))
3718 '("teeworlds" "teeworlds_srv"))
3719 (copy-recursively "data" data)
3720 #t))))))
3721 ;; FIXME: teeworlds bundles the sources of "pnglite", a two-file PNG
3722 ;; library without a build system.
3723 (inputs
3724 `(("freetype" ,freetype)
3725 ("glu" ,glu)
3726 ("mesa" ,mesa)
3727 ("sdl-union" ,(sdl-union (list sdl
3728 sdl-mixer
3729 sdl-image)))
3730 ("wavpack" ,wavpack)
3731 ("zlib" ,zlib)))
3732 (native-inputs
3733 `(("bam" ,bam)
3734 ("python" ,python-2)))
3735 (home-page "https://www.teeworlds.com")
3736 (synopsis "2D retro multiplayer shooter game")
3737 (description "Teeworlds is an online multiplayer game. Battle with up to
373816 players in a variety of game modes, including Team Deathmatch and Capture
3739The Flag. You can even design your own maps!")
3740 (license license:bsd-3)))