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