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