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