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