gnu: Add q5go.
[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>
ed3e7b72 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 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>
e23f2ff1 8;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
ab0c796b 10;;; Copyright © 2014, 2015, 2019 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>
ca32afac 14;;; Copyright © 2015, 2016, 2017, 2018, 2019 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>
47956fa0 18;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
e9687748 19;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
4fee5ec0 20;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
aa206271 21;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
560df540 22;;; Copyright © 2016, 2017, 2018, 2019 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>
3e7b376e 27;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
47903653 28;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
bff33e6c 29;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
ee9eafc1 30;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
1be6f488 31;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
a70d06b5 32;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
e8a0696d 33;;; Copyright © 2017, 2018, 2019 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>
f9e5caf9 38;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
a953423a 39;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
19c0cdb9 40;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
60af1822 41;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
1bba3e8c 42;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
08c2fb8f 43;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
3f9a027c 44;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
fbfc07bd 45;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
aa641984 46;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
894fbb33 47;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
490c6528
JD
48;;;
49;;; This file is part of GNU Guix.
50;;;
51;;; GNU Guix is free software; you can redistribute it and/or modify it
52;;; under the terms of the GNU General Public License as published by
53;;; the Free Software Foundation; either version 3 of the License, or (at
54;;; your option) any later version.
55;;;
56;;; GNU Guix is distributed in the hope that it will be useful, but
57;;; WITHOUT ANY WARRANTY; without even the implied warranty of
58;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59;;; GNU General Public License for more details.
60;;;
61;;; You should have received a copy of the GNU General Public License
62;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
63
64(define-module (gnu packages games)
158f5734 65 #:use-module (ice-9 match)
024e2c17
DT
66 #:use-module ((guix licenses) #:prefix license:)
67 #:use-module (guix utils)
490c6528
JD
68 #:use-module (guix packages)
69 #:use-module (guix download)
c23c50c7 70 #:use-module (guix git-download)
e11b2752 71 #:use-module (guix svn-download)
bff33e6c 72 #:use-module (guix gexp)
a83c6a64 73 #:use-module (gnu packages)
3307c787 74 #:use-module (gnu packages algebra)
e11b2752 75 #:use-module (gnu packages autotools)
03d521f9 76 #:use-module (gnu packages backup)
7e51e5bc 77 #:use-module (gnu packages base)
b77e3a1c 78 #:use-module (gnu packages build-tools)
11c38cbe 79 #:use-module (gnu packages admin)
f2fac359 80 #:use-module (gnu packages audio)
7e2e1155 81 #:use-module (gnu packages avahi)
1faf0a04 82 #:use-module (gnu packages assembly)
35d5fa76
EF
83 #:use-module (gnu packages bash)
84 #:use-module (gnu packages bison)
a83c6a64 85 #:use-module (gnu packages boost)
35d5fa76
EF
86 #:use-module (gnu packages check)
87 #:use-module (gnu packages cmake)
88 #:use-module (gnu packages compression)
89 #:use-module (gnu packages curl)
706d6190 90 #:use-module (gnu packages crypto)
35d5fa76 91 #:use-module (gnu packages cyrus-sasl)
0b5d078f 92 #:use-module (gnu packages documentation)
dec63df4 93 #:use-module (gnu packages docbook)
e93352d6 94 #:use-module (gnu packages emulators)
35d5fa76 95 #:use-module (gnu packages flex)
d2563973 96 #:use-module (gnu packages fltk)
35d5fa76
EF
97 #:use-module (gnu packages fonts)
98 #:use-module (gnu packages fontutils)
540dd1c8 99 #:use-module (gnu packages freedesktop)
c23c50c7
RW
100 #:use-module (gnu packages fribidi)
101 #:use-module (gnu packages game-development)
940c2c5c 102 #:use-module (gnu packages gcc)
490c6528 103 #:use-module (gnu packages gettext)
9b1ada4e 104 #:use-module (gnu packages ghostscript)
4df9495e 105 #:use-module (gnu packages gimp)
490c6528 106 #:use-module (gnu packages gl)
bf0018cd 107 #:use-module (gnu packages glib)
490c6528 108 #:use-module (gnu packages gnome)
35d5fa76 109 #:use-module (gnu packages gnuzilla)
9b1ada4e 110 #:use-module (gnu packages gperf)
aac1aa75 111 #:use-module (gnu packages graphics)
35d5fa76 112 #:use-module (gnu packages gstreamer)
490c6528
JD
113 #:use-module (gnu packages gtk)
114 #:use-module (gnu packages guile)
1abe2e2a
NG
115 #:use-module (gnu packages haskell)
116 #:use-module (gnu packages haskell-crypto)
dddbc90c 117 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
118 #:use-module (gnu packages icu4c)
119 #:use-module (gnu packages image)
0b5d078f 120 #:use-module (gnu packages imagemagick)
3bd0d186 121 #:use-module (gnu packages less)
bf0018cd 122 #:use-module (gnu packages libcanberra)
721e1987 123 #:use-module (gnu packages libedit)
67fa7a27 124 #:use-module (gnu packages libunwind)
35d5fa76 125 #:use-module (gnu packages linux)
fdd9ab37 126 #:use-module (gnu packages llvm)
35d5fa76 127 #:use-module (gnu packages lua)
a9249f58
KK
128 #:use-module (gnu packages man)
129 #:use-module (gnu packages maths)
c23c50c7 130 #:use-module (gnu packages mp3)
26a657f0 131 #:use-module (gnu packages music)
dc70ff2a 132 #:use-module (gnu packages multiprecision)
3cf118a1 133 #:use-module (gnu packages ncurses)
9b1ada4e 134 #:use-module (gnu packages netpbm)
162a4a03 135 #:use-module (gnu packages networking)
b3de5ff2 136 #:use-module (gnu packages ocaml)
fbfc07bd 137 #:use-module (gnu packages opencl)
35d5fa76
EF
138 #:use-module (gnu packages pcre)
139 #:use-module (gnu packages perl)
140 #:use-module (gnu packages perl-check)
141 #:use-module (gnu packages pkg-config)
142 #:use-module (gnu packages pulseaudio)
bf0018cd 143 #:use-module (gnu packages python)
44d10b1f 144 #:use-module (gnu packages python-xyz)
35d5fa76 145 #:use-module (gnu packages qt)
bf0018cd 146 #:use-module (gnu packages readline)
be6e2c30 147 #:use-module (gnu packages shells)
3da5dca3 148 #:use-module (gnu packages sdl)
7fc90282 149 #:use-module (gnu packages serialization)
cd0322a3 150 #:use-module (gnu packages sqlite)
8698d986 151 #:use-module (gnu packages squirrel)
bd71525b 152 #:use-module (gnu packages swig)
67fa7a27 153 #:use-module (gnu packages tcl)
1bba3e8c 154 #:use-module (gnu packages terminals)
35d5fa76
EF
155 #:use-module (gnu packages texinfo)
156 #:use-module (gnu packages textutils)
751c7040 157 #:use-module (gnu packages tls)
0b608ec4 158 #:use-module (gnu packages upnp)
35d5fa76 159 #:use-module (gnu packages video)
01564e5a 160 #:use-module (gnu packages vulkan)
7aafb3b3 161 #:use-module (gnu packages web)
8044e584 162 #:use-module (gnu packages wget)
35d5fa76
EF
163 #:use-module (gnu packages wxwidgets)
164 #:use-module (gnu packages xdisorg)
165 #:use-module (gnu packages xorg)
166 #:use-module (gnu packages xiph)
167 #:use-module (gnu packages xml)
168 #:use-module (gnu packages messaging)
169 #:use-module (gnu packages networking)
39c676c4 170 #:use-module (guix build-system glib-or-gtk)
a6b55314 171 #:use-module (guix build-system gnu)
57f9671d 172 #:use-module (guix build-system go)
18ebaa9e 173 #:use-module (guix build-system meson)
560df540 174 #:use-module (guix build-system scons)
b0488fe5 175 #:use-module (guix build-system python)
19b396bf 176 #:use-module (guix build-system cmake)
296c8484
EF
177 #:use-module (guix build-system trivial)
178 #:use-module ((srfi srfi-1) #:hide (zip))
179 #:use-module (srfi srfi-26))
490c6528 180
4fee5ec0
KK
181;; Data package for adanaxisgpl.
182(define adanaxis-mush
183 (let ((version "1.1.0"))
184 (origin
185 (method url-fetch)
186 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
187 version ".tar.gz"))
188 (sha256
189 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
190
191(define-public adanaxisgpl
192 (package
193 (name "adanaxisgpl")
194 (version "1.2.5")
195 (source
196 (origin
197 (method url-fetch)
198 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
199 version ".tar.gz"))
200 (sha256
201 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
202 (modules '((guix build utils)))
203 (snippet
204 '(begin
205 ;; Necessary for building with gcc >=4.7.
206 (substitute* "src/Mushcore/MushcoreSingleton.h"
207 (("SingletonPtrSet\\(new SingletonType\\);")
208 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
209 ;; Avoid an "invalid conversion from const char* to char*" error.
210 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
211 (("char \\*end, \\*result;")
212 (string-append "const char *end;"
213 "\n"
214 "char *result;")))
215 #t))))
216 (build-system gnu-build-system)
217 (arguments
218 `(#:tests? #f ; no check target
219 #:phases
220 (modify-phases %standard-phases
221 (add-after 'install 'install-data
222 (lambda* (#:key inputs outputs #:allow-other-keys)
223 (let ((data (assoc-ref inputs "adanaxis-mush"))
224 (share (string-append (assoc-ref outputs "out")
225 "/share/" ,name "-" ,version)))
226 (mkdir-p share)
227 (invoke "tar" "xvf" data "-C" share)))))))
228 (native-inputs
229 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
230 (inputs
231 `(("expat" ,expat)
232 ("freeglut" ,freeglut)
233 ("glu" ,glu)
234 ("libjpeg" ,libjpeg)
235 ("libogg" ,libogg)
236 ("libtiff" ,libtiff)
237 ("libvorbis" ,libvorbis)
238 ("libx11" ,libx11)
239 ("libxext" ,libxext)
240 ("pcre" ,pcre)
241 ("sdl" ,sdl)
242 ("sdl-mixer" ,sdl-mixer)))
243 (home-page "https://www.mushware.com")
244 (synopsis "Action game in four spatial dimensions")
245 (description
246 "Adanaxis is a fast-moving first person shooter set in deep space, where
247the fundamentals of space itself are changed. By adding another dimension to
248space this game provides an environment with movement in four directions and
249six planes of rotation. Initially the game explains the 4D control system via
250a graphical sequence, before moving on to 30 levels of gameplay with numerous
251enemy, ally, weapon and mission types. Features include simulated 4D texturing,
252mouse and joystick control, and original music.")
253 (license license:gpl2)))
254
f9fee46f
KK
255(define-public alex4
256 (package
257 (name "alex4")
8ef3f2e3 258 (version "1.2.1")
f9fee46f
KK
259 (source
260 (origin
359a57b6
TGR
261 (method git-fetch)
262 (uri (git-reference
263 (url "https://github.com/carstene1ns/alex4.git")
264 (commit version)))
265 (file-name (git-file-name name version))
f9fee46f 266 (sha256
8ef3f2e3 267 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
268 (build-system gnu-build-system)
269 (arguments
359a57b6 270 `(#:tests? #f ; no check target
f9fee46f 271 #:make-flags
8ef3f2e3 272 (list "CC=gcc"
f9fee46f 273 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
274 (string-append "PREFIX=" (assoc-ref %outputs "out")))
275 #:phases
276 (modify-phases %standard-phases
8ef3f2e3 277 (delete 'configure) ; no configure script
f9fee46f
KK
278 (add-after 'install 'install-data
279 (lambda* (#:key outputs #:allow-other-keys)
280 (let ((share (string-append (assoc-ref outputs "out")
281 "/share/" ,name)))
282 (install-file "alex4.ini" share)
283 #t))))))
284 (inputs
285 `(("allegro" ,allegro-4)
286 ("dumb" ,dumb-allegro4)))
287 (home-page "http://allegator.sourceforge.net/")
288 (synopsis "Retro platform game")
289 (description
290 "Guide Alex the Allegator through the jungle in order to save his
291girlfriend Lola from evil humans who want to make a pair of shoes out of her.
292Plenty of classic platforming in four nice colors guaranteed!
293
294The game includes a built-in editor so you can design and share your own maps.")
295 (license license:gpl2+)))
296
649220ad 297(define-public armagetronad
a70d06b5 298 (package
649220ad 299 (name "armagetronad")
a70d06b5
RJ
300 (version "0.2.8.3.4")
301 (source (origin
302 (method url-fetch)
c0c09950
TGR
303 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
304 version "/armagetronad-" version ".src.tar.gz"))
a70d06b5
RJ
305 (sha256
306 (base32
307 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
308 (build-system gnu-build-system)
309 (inputs
310 `(("libxml2" ,libxml2)
311 ("sdl" ,sdl)
312 ("sdl-image" ,sdl-image)
313 ("freeglut" ,freeglut)
314 ("libpng" ,libpng)
315 ("libjpeg-turbo" ,libjpeg-turbo)))
316 (home-page "http://www.armagetronad.org")
317 (synopsis "Tron clone in 3D")
df42e0f9
PN
318 (description "Armagetron Advanced is a multiplayer game in 3d that
319attempts to emulate and expand on the lightcycle sequence from the movie Tron.
320It's an old school arcade game slung into the 21st century. Highlights
321include a customizable playing arena, HUD, unique graphics, and AI bots. For
322the more advanced player there are new game modes and a wide variety of
323physics settings to tweak as well.")
a70d06b5
RJ
324 (license license:gpl2+)))
325
649220ad
NG
326(define-public armagetron-advanced
327 (deprecated-package "armagetron-advanced" armagetronad))
df42e0f9 328
fc473814
TGR
329(define-public bastet
330 (package
331 (name "bastet")
332 (version "0.43.2")
333 (source
334 (origin
335 (method git-fetch)
336 (uri (git-reference
337 (url "https://github.com/fph/bastet.git")
338 (commit version)))
339 (file-name (git-file-name name version))
340 (sha256
341 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
342 (patches
343 (search-patches "bastet-change-source-of-unordered_set.patch"))))
344 (build-system gnu-build-system)
345 (arguments
346 `(#:make-flags
347 (list (string-append "CXXFLAGS=-I"
348 (assoc-ref %build-inputs "boost") "/include"))
349 #:phases
350 (modify-phases %standard-phases
351 (delete 'configure) ; no configure script
352 (replace 'check
353 ;; The 'Test' target builds the tests, but doesn't actually run them.
354 (lambda* (#:key make-flags #:allow-other-keys)
355 (apply invoke "make" "Test" make-flags)
356 (setenv "HOME" ".")
357 (invoke "./Test")))
358 (replace 'install
359 (lambda* (#:key outputs #:allow-other-keys)
360 (let* ((out (assoc-ref outputs "out"))
361 (share (string-append out "/share"))
362 (hicolor (string-append share "/icons/hicolor")))
363 (install-file "bastet"
364 (string-append out "/bin"))
365
366 (install-file "bastet.desktop"
367 (string-append share "/applications"))
368 (install-file "bastet.svg"
369 (string-append hicolor "/scalable/apps"))
370
371 (install-file "bastet.appdata.xml"
372 (string-append share "/appdata"))
373
374 (install-file "bastet.6"
375 (string-append out "/share/man/man6"))
376 #t))))))
377 (native-inputs
378 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
379 (inputs
380 `(("boost" ,boost)
381 ("ncurses" ,ncurses)))
382 (home-page "http://fph.altervista.org/prog/bastet.html")
383 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
384 (description
385 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
386game. Unlike normal Tetris, Bastet does not choose the next brick at random.
387Instead, it uses a special algorithm to choose the worst brick possible.
388
389Playing bastet can be a painful experience, especially if you usually make
390canyons and wait for the long I-shaped block to clear four rows at a time.")
391 (license license:gpl3+)))
392
649220ad 393(define-public cataclysm-dda
1c4d4196 394 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
529701aa
KK
395 (package
396 (name "cataclysm-dda")
1c4d4196 397 (version "0.D")
529701aa
KK
398 (source (origin
399 (method git-fetch)
400 (uri (git-reference
401 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
402 (commit commit)))
403 (sha256
404 (base32
1c4d4196 405 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
529701aa
KK
406 (file-name (git-file-name name version))))
407 (build-system gnu-build-system)
408 (arguments
409 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
28407818
NG
410 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
411 "LOCALIZE=1" "LANGUAGES=all")
529701aa
KK
412 #:phases
413 (modify-phases %standard-phases
414 (delete 'configure)
415 (add-after 'build 'build-tiles
416 (lambda* (#:key make-flags outputs #:allow-other-keys)
417 ;; Change prefix directory and enable tile graphics and sound.
418 (apply invoke "make" "TILES=1" "SOUND=1"
419 (string-append "PREFIX="
420 (assoc-ref outputs "tiles"))
421 (cdr make-flags))))
422 (add-after 'install 'install-tiles
423 (lambda* (#:key make-flags outputs #:allow-other-keys)
424 (apply invoke "make" "install" "TILES=1" "SOUND=1"
425 (string-append "PREFIX="
426 (assoc-ref outputs "tiles"))
427 (cdr make-flags)))))
428 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
429 ;; input in order to support tests.
430 #:tests? #f))
431 (outputs '("out"
432 "tiles")) ; For tile graphics and sound support.
433 (native-inputs
434 `(("gettext" ,gettext-minimal)
435 ("pkg-config" ,pkg-config)))
436 (inputs
437 `(("freetype" ,freetype)
438 ("libogg" ,libogg)
439 ("libvorbis" ,libvorbis)
440 ("ncurses" ,ncurses)
441 ("sdl2" ,sdl2)
442 ("sdl2-image" ,sdl2-image)
443 ("sdl2-ttf" ,sdl2-ttf)
444 ("sdl2-mixer" ,sdl2-mixer)))
445 (home-page "http://en.cataclysmdda.com/")
446 (synopsis "Survival horror roguelike video game")
447 (description
973bd8a6
PN
448 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
449in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
450procedurally generated world. Scavenge the remnants of a dead civilization
451for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
452to get you out of Dodge. Fight to defeat or escape from a wide variety of
453powerful monstrosities, from zombies to giant insects to killer robots and
454things far stranger and deadlier, and against the others like yourself, that
455want what you have.")
529701aa 456 (license license:cc-by-sa3.0))))
20214f71 457
649220ad
NG
458(define-public cataclysm-dark-days-ahead
459 (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
973bd8a6 460
620b0468
RW
461(define-public cowsay
462 (package
463 (name "cowsay")
46ba5337 464 (version "3.04")
620b0468 465 (source (origin
7afb97fd
EF
466 (method git-fetch)
467 (uri (git-reference
468 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
469 (commit (string-append name "-" version))))
470 (file-name (git-file-name name version))
620b0468
RW
471 (sha256
472 (base32
7afb97fd 473 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
474 (build-system gnu-build-system)
475 (arguments
476 `(#:phases
477 (modify-phases %standard-phases
6c0c1752
TGR
478 (delete 'configure) ; no configure script
479 (delete 'build) ; nothing to be built
480 (replace 'install
620b0468 481 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
482 (invoke "sh" "install.sh"
483 (assoc-ref outputs "out"))))
1ee3079d
EF
484 (delete 'check)
485 (add-after 'install 'check
620b0468 486 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
487 (invoke (string-append (assoc-ref outputs "out")
488 "/bin/cowsay")
489 "We're done!"))))))
620b0468
RW
490 (inputs
491 `(("perl" ,perl)))
492 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 493 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
494 (synopsis "Speaking cow text filter")
495 (description "Cowsay is basically a text filter. Send some text into it,
496and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
497cows can think too: all you have to do is run @command{cowthink}. If you're
498tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
499 (license license:gpl3+)))
500
0b5d078f
KK
501(define-public freedoom
502 (package
9303b09a 503 (name "freedoom")
78a3da3d 504 (version "0.12.1")
9303b09a
TGR
505 (source
506 (origin
507 (method git-fetch)
508 (uri (git-reference
509 (url "https://github.com/freedoom/freedoom.git")
510 (commit (string-append "v" version))))
511 (file-name (git-file-name name version))
512 (sha256
78a3da3d 513 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
514 (build-system gnu-build-system)
515 (arguments
516 '(#:make-flags
517 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
518 #:tests? #f ; no check target
519 #:phases
520 (modify-phases %standard-phases
521 (delete 'bootstrap)
522 (replace 'configure
523 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 524 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 525 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
526 ;; Make sure that the install scripts know where to find
527 ;; the appropriate WAD files.
528 (substitute* "dist/freedoom"
529 (("IWAD=freedm.wad")
530 (string-append "IWAD=" wad-dir "/freedm.wad"))
531 (("IWAD=freedoom1.wad")
532 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
533 (("IWAD=freedoom2.wad")
534 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
535 #t))))))
536 (native-inputs
537 `(("asciidoc" ,asciidoc)
538 ("deutex" ,deutex)
78a3da3d
KK
539 ("python" ,python)
540 ("python-pillow" ,python-pillow)))
9303b09a
TGR
541 (home-page "https://freedoom.github.io/")
542 (synopsis "Free content game based on the Doom engine")
543 (native-search-paths
544 (list (search-path-specification
545 (variable "DOOMWADDIR")
546 (files '("share/games/doom")))
547 (search-path-specification
548 (variable "DOOMWADPATH")
549 (files '("share/games/doom")))))
550 (description
551 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
552shooter game. Freedoom by itself is just the raw material for a game: it must
553be paired with a compatible game engine (such as @code{prboom-plus}) to be
554played. Freedoom complements the Doom engine with free levels, artwork, sound
555effects and music to make a completely free game.")
9303b09a 556 (license license:bsd-3)))
0b5d078f 557
18995af2
TGR
558(define-public freedroidrpg
559 (package
560 (name "freedroidrpg")
561 (version "0.16.1")
562 (source
563 (origin
564 (method url-fetch)
565 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
566 "freedroidRPG-" (version-major+minor version) "/"
567 "freedroidRPG-" version ".tar.gz"))
568 (sha256
569 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
570 (build-system gnu-build-system)
571 (arguments
572 `(#:configure-flags
573 (list
574 (string-append "CFLAGS="
575 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
576 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
577 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
578 "--enable-opengl")
579 ;; FIXME: the test suite fails with the following error output:
580 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
581 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
582 #:tests? #f))
583 (native-inputs
584 `(("pkg-config" ,pkg-config)))
585 (inputs
586 `(("glu" ,glu)
587 ("libjpeg" ,libjpeg)
588 ("libogg" ,libogg)
589 ("libpng" ,libpng)
590 ("libvorbis" ,libvorbis)
591 ("mesa" ,mesa)
592 ("python" ,python-wrapper)
593 ("sdl" ,sdl)
594 ("sdl-gfx" ,sdl-gfx)
595 ("sdl-image" ,sdl-image)
596 ("sdl-mixer" ,sdl-mixer)
597 ("zlib" ,zlib)))
598 (home-page "http://www.freedroid.org/")
599 (synopsis "Isometric role-playing game against killer robots")
600 (description
601 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
602The game tells the story of a world destroyed by a conflict between robots and
603their human masters. To restore peace to humankind, the player must complete
604numerous quests while fighting off rebelling robots---either by taking control
605of them, or by simply blasting them to pieces with melee and ranged weapons in
606real-time combat.")
607 (license (list license:expat ; lua/
608 license:gpl3 ; src/gen_savestruct.py
609 license:gpl2+)))) ; the rest
610
06f5f0b1
KK
611(define-public golly
612 (package
613 (name "golly")
715a44e9 614 (version "3.2")
06f5f0b1
KK
615 (source (origin
616 (method url-fetch)
04e7b1e7 617 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
618 version "/golly-" version
619 "-src.tar.gz"))
620 (sha256
621 (base32
715a44e9 622 "0cg9mbwmf4q6qxhqlnzrxh9y047banxdb8pd3hgj3smmja2zf0jd"))))
06f5f0b1
KK
623 (build-system gnu-build-system)
624 (arguments
625 '(#:make-flags (list "CC=gcc"
626 (string-append "GOLLYDIR="
627 (assoc-ref %outputs "out")
628 "/share/golly"))
629 #:tests? #f ; no check target
630 #:phases
631 (modify-phases %standard-phases
632 (replace 'configure
633 (lambda* (#:key inputs #:allow-other-keys)
634 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
635 ;; properly set the path to the Python shared library. This
636 ;; substitution acheives the same end by different means.
637 (substitute* "gui-wx/wxprefs.cpp"
638 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
639 (string-append "pythonlib = \""
640 (assoc-ref inputs "python")
641 "/lib/libpython-2.7.so\"")))
642 #t))
643 (replace 'build
644 (lambda* (#:key make-flags outputs #:allow-other-keys)
645 (with-directory-excursion "gui-wx"
646 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
647 (replace 'install
648 (lambda* (#:key outputs #:allow-other-keys)
649 (let* ((out (assoc-ref outputs "out"))
650 (bin (string-append out "/bin"))
651 (doc (string-append out "/share/doc/golly"))
652 (pixmaps (string-append out "/share/pixmaps"))
653 (share (string-append out "/share/golly")))
654 (for-each (lambda (binary)
655 (install-file binary bin))
656 '("bgolly" "golly"))
657 (for-each (lambda (document)
658 (install-file
659 (string-append "docs/" document ".html")
660 doc))
661 '("License" "ReadMe" "ToDo"))
662 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
663 (for-each (lambda (folder)
664 (copy-recursively
665 folder
666 (string-append share "/" folder)))
667 '("Help" "Patterns" "Rules" "Scripts")))
668 #t)))))
669 (native-inputs
670 `(("lua" ,lua)))
671 (inputs
672 `(("glu" ,glu)
673 ("mesa" ,mesa)
674 ("python" ,python-2)
675 ("wxwidgets" ,wxwidgets-gtk2)
676 ("zlib" ,zlib)))
677 (home-page "http://golly.sourceforge.net/")
678 (synopsis "Software for exploring cellular automata")
679 (description
680 "Golly simulates Conway's Game of Life and many other types of cellular
681automata. The following features are available:
682@enumerate
683@item Support for bounded and unbounded universes, with cells of up to 256
684 states.
685@item Support for multiple algorithms, including Bill Gosper's Hashlife
686 algorithm.
687@item Loading patterns from BMP, PNG, GIF and TIFF image files.
688@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
689@item Scriptable via Lua or Python.
690@item Extracting patterns, rules and scripts from zip files.
691@item Downloading patterns, rules and scripts from online archives.
692@item Pasting patterns from the clipboard.
693@item Unlimited undo/redo.
694@item Configurable keyboard shortcuts.
695@item Auto fit option to keep patterns within the view.
696@end enumerate")
697 (license license:gpl2+)))
698
5145001a
RW
699(define-public meandmyshadow
700 (package
701 (name "meandmyshadow")
b70ff03e 702 (version "0.5a")
5145001a
RW
703 (source (origin
704 (method url-fetch)
705 (uri (string-append "mirror://sourceforge/meandmyshadow/"
706 version "/meandmyshadow-" version
707 "-src.tar.gz"))
708 (sha256
709 (base32
b70ff03e 710 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
711 (build-system cmake-build-system)
712 (arguments
1d9a9d27 713 `(#:tests? #f)) ; there are no tests
5145001a
RW
714 (native-inputs
715 `(("pkg-config" ,pkg-config)))
716 (inputs
1d9a9d27 717 `(("curl" ,curl)
5145001a 718 ("libarchive" ,libarchive)
1d9a9d27
TGR
719 ("lua" ,lua)
720 ("sdl" ,(sdl-union (list sdl2
721 sdl2-image
722 sdl2-mixer
723 sdl2-ttf)))))
b590951f 724 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
725 (synopsis "Puzzle/platform game")
726 (description "Me and My Shadow is a puzzle/platform game in which you try
727to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
728and much more stand between you and the exit. Record your moves and let your
729shadow mimic them to reach blocks you couldn't reach alone.")
730 (license license:gpl3+)))
731
02345c96
RW
732(define-public knights
733 (package
734 (name "knights")
735 (version "025")
736 (source (origin
737 (method url-fetch)
738 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
739 version "_src.tar.gz"))
740 (sha256
741 (base32
742 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
743 (build-system gnu-build-system)
744 (arguments
745 '(#:make-flags
746 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
747 #:phases
748 (modify-phases %standard-phases
749 ;; No configure script.
750 (delete 'configure))
751 #:tests? #f)) ;; No check target.
752 (inputs
753 `(("boost" ,boost)
754 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
755 ("freetype" ,freetype)
756 ("fontconfig" ,fontconfig)
757 ("curl" ,curl)))
6730d895
RW
758 (native-inputs
759 `(("pkg-config" ,pkg-config)))
02345c96
RW
760 (home-page "http://www.knightsgame.org.uk/")
761 (synopsis "Multiplayer dungeon game involving knights and quests")
762 (description "Knights is a multiplayer game involving several knights who
763must run around a dungeon and complete various quests. Each game revolves
764around a quest – for example, you might have to find some items and carry them
765back to your starting point. This may sound easy, but as there are only
766enough items in the dungeon for one player to win, you may end up having to
767kill your opponents to get their stuff! Other quests involve escaping from
768the dungeon, fighting a duel to the death against the enemy knights, or
769destroying an ancient book using a special wand.")
770 ;; This package includes modified sources of lua (X11), enet (Expat), and
771 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
772 ;; license. The whole package is released under GPLv3+.
773 (license license:gpl3+)))
774
e23f2ff1 775(define-public gnubg
bf0018cd 776 (package
e23f2ff1 777 (name "gnubg")
d5ddb484 778 (version "1.06.002")
bf0018cd
JD
779 (source
780 (origin
781 (method url-fetch)
782 (uri (string-append "http://files.gnubg.org/media/sources/gnubg-release-"
0856e3e9 783 version "-sources." "tar.gz"))
bf0018cd
JD
784 (sha256
785 (base32
d5ddb484 786 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
787 (build-system gnu-build-system)
788 (inputs `(("glib" ,glib)
789 ("readline" ,readline)
790 ("gtk+" ,gtk+-2)
791 ("mesa" ,mesa)
6a95024c 792 ("glu" ,glu)
bf0018cd
JD
793 ("gtkglext" ,gtkglext)
794 ("sqlite" ,sqlite)
795 ("libcanberra" ,libcanberra)))
796 (native-inputs `(("python-2" ,python-2)
797 ("pkg-config" ,pkg-config)))
07af3e5e 798 (home-page "http://gnubg.org")
bf0018cd 799 (synopsis "Backgammon game")
c97e4d8b
PN
800 (description "The GNU backgammon application (also known as \"gnubg\") can
801be used for playing, analyzing and teaching the game. It has an advanced
802evaluation engine based on artificial neural networks suitable for both
803beginners and advanced players. In addition to a command-line interface, it
804also features an attractive, 3D representation of the playing board.")
024e2c17 805 (license license:gpl3+)))
bf0018cd 806
e23f2ff1
LC
807(define-public gnubackgammon
808 (deprecated-package "gnubackgammon" gnubg))
c97e4d8b 809
490c6528
JD
810(define-public gnubik
811 (package
812 (name "gnubik")
ecc39b3f 813 (version "2.4.3")
490c6528
JD
814 (source
815 (origin
816 (method url-fetch)
817 (uri (string-append "mirror://gnu/gnubik/gnubik-"
818 version ".tar.gz"))
819 (sha256
820 (base32
ecc39b3f 821 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
822 (build-system gnu-build-system)
823 (inputs `(("gtk+" ,gtk+-2)
824 ("mesa" ,mesa)
276a8f71 825 ("glu" ,glu)
490c6528
JD
826 ("libx11" ,libx11)
827 ("guile" ,guile-2.0)
828 ("gtkglext" ,gtkglext)))
b94a6ca0 829 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
830 ("pkg-config" ,pkg-config)))
831 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
832 (synopsis "3d Rubik's cube game")
833 (description
834 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
835each of its faces have a uniform color. The game is customizable, allowing
836you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 837You may even apply photos to the faces instead of colors. The game is
490c6528 838scriptable with Guile.")
024e2c17 839 (license license:gpl3+)))
3da5dca3 840
a20b084a
JD
841(define-public gnushogi
842 (package
843 (name "gnushogi")
844 (version "1.4.2")
845 (source
846 (origin
847 (method url-fetch)
848 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
849 version ".tar.gz"))
850 (sha256
851 (base32
852 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
853 (arguments `(#:tests? #f)) ;; No check target.
854 (build-system gnu-build-system)
6fd52309 855 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
856 (synopsis "The game of Shogi (Japanese chess)")
857 (description "GNU Shogi is a program that plays the game Shogi (Japanese
858Chess). It is similar to standard chess but this variant is far more complicated.")
859 (license license:gpl3+)))
860
e664200c
KK
861(define-public ltris
862 (package
863 (name "ltris")
864 (version "1.0.19")
865 (source
866 (origin
867 (method url-fetch)
868 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 869 "ltris-" version ".tar.gz"))
e664200c
KK
870 (sha256
871 (base32
872 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
873 (build-system gnu-build-system)
874 (arguments
875 '(;; The code in LTris uses traditional GNU semantics for inline functions
876 #:configure-flags '("CFLAGS=-fgnu89-inline")
877 #:phases
878 (modify-phases %standard-phases
879 (add-after 'set-paths 'set-sdl-paths
880 (lambda* (#:key inputs #:allow-other-keys)
881 (setenv "CPATH"
882 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
883 "/include/SDL:"
884 (or (getenv "CPATH") "")))
e664200c
KK
885 #t)))))
886 (inputs
887 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
888 (home-page "http://lgames.sourceforge.net/LTris/")
889 (synopsis "Tetris clone based on the SDL library")
890 (description
891 "LTris is a tetris clone: differently shaped blocks are falling down the
892rectangular playing field and can be moved sideways or rotated by 90 degree
893units with the aim of building lines without gaps which then disappear (causing
894any block above the deleted line to fall down). LTris has three game modes: In
895Classic you play until the stack of blocks reaches the top of the playing field
896and no new blocks can enter. In Figures the playing field is reset to a new
897figure each level and later on tiles and lines suddenly appear. In Multiplayer
898up to three players (either human or CPU) compete with each other sending
899removed lines to all opponents. There is also a Demo mode in which you can
900watch your CPU playing while enjoying a cup of tea!")
901 (license license:gpl2+)))
3bd0d186
A
902
903(define-public nethack
904 (package
905 (name "nethack")
ef81faee 906 (version "3.6.2")
3bd0d186
A
907 (source
908 (origin
909 (method url-fetch)
a544817e
TGR
910 (uri
911 (string-append "https://www.nethack.org/download/" version "/nethack-"
912 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 913 (sha256
ef81faee 914 (base32 "07fvkm3v11a4pjrq2f66vjslljsvk6raal53skn4gqsfdbd0ml7v"))))
3bd0d186
A
915 (inputs
916 `(("ncurses" ,ncurses)
917 ("bison" ,bison)
918 ("flex" ,flex)
919 ("less" ,less)))
920 (build-system gnu-build-system)
921 (arguments
922 '(#:make-flags
923 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
924 #:phases
925 (modify-phases %standard-phases
926 (add-before 'configure 'patch-paths
927 (lambda _
928 (substitute* "sys/unix/nethack.sh"
929 (("^ *cd .*$") ""))
930 (substitute* "sys/unix/Makefile.utl"
931 (("^YACC *=.*$") "YACC = bison -y\n")
932 (("^LEX *=.*$") "LEX = flex\n")
933 (("^# CC = gcc") "CC = gcc"))
934 (substitute* "sys/unix/hints/linux"
935 (("/bin/gzip") (string-append
936 (assoc-ref %build-inputs "gzip")
937 "/bin/gzip"))
938 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
939 (substitute* "include/config.h"
df35e715
LC
940 (("^.*define CHDIR.*$") "")
941 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
942 ;; Honor SOURCE_DATE_EPOCH.
943 "#define REPRODUCIBLE_BUILD"))
944
945 ;; Note: 'makedefs' rejects and ignores dates that are too old
946 ;; or too new, so we must choose something reasonable here.
947 (setenv "SOURCE_DATE_EPOCH" "1531865062")
948
3bd0d186
A
949 (substitute* "sys/unix/Makefile.src"
950 (("^# CC = gcc") "CC = gcc"))
951 #t))
952 (replace 'configure
953 (lambda _
954 (let ((bash (string-append
955 (assoc-ref %build-inputs "bash")
956 "/bin/bash")))
957 (with-directory-excursion "sys/unix"
958 (substitute* "setup.sh" (("/bin/sh") bash))
959 (invoke bash "setup.sh" "hints/linux"))
960 #t)))
961 (add-after 'install 'fixup-paths
962 (lambda _
963 (let* ((output (assoc-ref %outputs "out"))
964 (nethack-script (string-append output "/bin/nethack")))
965 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
966 (for-each
967 (lambda (file)
968 (rename-file
969 (string-append output "/games/lib/nethackdir/" file)
970 (string-append output "/games/lib/nethackuserdir/"
971 file)))
972 '("xlogfile" "logfile" "perm" "record" "save"))
973 (mkdir-p (string-append output "/bin"))
974 (call-with-output-file nethack-script
975 (lambda (port)
976 (format port "#!~a/bin/sh
977PATH=~a:$PATH
978if [ ! -d ~~/.config/nethack ]; then
979 mkdir -p ~~/.config/nethack
980 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
981 chmod -R +w ~~/.config/nethack
982fi
983
984RUNDIR=$(mktemp -d)
985
986cleanup() {
987 rm -rf $RUNDIR
988}
989trap cleanup EXIT
990
991cd $RUNDIR
992for i in ~~/.config/nethack/*; do
993 ln -s $i $(basename $i)
994done
995for i in ~a/games/lib/nethackdir/*; do
996 ln -s $i $(basename $i)
997done
998~a/games/nethack"
999 (assoc-ref %build-inputs "bash")
1000 (list->search-path-as-string
1001 (list
1002 (string-append
1003 (assoc-ref %build-inputs "coreutils") "/bin")
1004 (string-append
1005 (assoc-ref %build-inputs "less") "/bin"))
1006 ":")
1007 output
1008 output
1009 output)))
1010 (chmod nethack-script #o555)
1011 #t)))
1012 (delete 'check))))
1013 (home-page "https://nethack.org")
1014 (synopsis "Classic dungeon crawl game")
1015 (description "NetHack is a single player dungeon exploration game that runs
1016on a wide variety of computer systems, with a variety of graphical and text
1017interfaces all using the same game engine. Unlike many other Dungeons &
1018Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1019the dungeon and not simply killing everything in sight - in fact, killing
1020everything in sight is a good way to die quickly. Each game presents a
1021different landscape - the random number generator provides an essentially
1022unlimited number of variations of the dungeon and its denizens to be discovered
1023by the player in one of a number of characters: you can pick your race, your
1024role, and your gender.")
1025 (license
1026 (license:fsdg-compatible
1027 "https://nethack.org/common/license.html"))))
e664200c 1028
82943626
TGR
1029(define-public pipewalker
1030 (package
1031 (name "pipewalker")
1032 (version "0.9.4")
1033 (source
1034 (origin
1035 (method url-fetch)
1036 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1037 "pipewalker-" version ".tar.gz"))
82943626 1038 (sha256
96848ecc 1039 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1040 (build-system gnu-build-system)
1041 (arguments
1042 `(#:configure-flags
1043 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1044 "/share/doc/" ,name "-" ,version))
1045 #:phases
1046 (modify-phases %standard-phases
1047 (add-after 'configure 'patch-docdir
1048 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1049 (lambda _
1050 (substitute* "Makefile"
1051 (("(pkgdocdatadir = ).*" _ assignment)
1052 (string-append assignment "$(docdir)\n")))
1053 #t)))))
1054 (inputs
1055 `(("libpng" ,libpng)
1056 ("mesa" ,mesa)
1057 ("sdl" ,sdl)))
1058 (home-page "http://pipewalker.sourceforge.net/")
1059 (synopsis "Logical tile puzzle")
1060 (description
1061 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1062computers to one network server, bring water from a source to the taps, etc.
1063The underlying mechanism is always the same: you must turn each tile in the
1064grid in the right direction to combine all components into a single circuit.
1065Every puzzle has a complete solution, although there may be more than one.")
1066 (license license:gpl3+)))
1067
26a657f0
KK
1068(define-public prboom-plus
1069 (package
1070 (name "prboom-plus")
1071 (version "2.5.1.4")
1072 (source (origin
1073 (method url-fetch)
a8a96bbe
TGR
1074 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1075 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1076 (sha256
a8a96bbe 1077 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1078 (modules '((guix build utils)))
1079 (snippet
6cbee49d
MW
1080 '(begin
1081 (substitute* "src/version.c"
1082 (("__DATE__") "")
1083 (("__TIME__") ""))
1084 #t))))
26a657f0
KK
1085 (build-system gnu-build-system)
1086 (arguments
1087 '(#:configure-flags '("--disable-cpu-opt")
1088 #:make-flags `(,(string-append "gamesdir="
1089 (assoc-ref %outputs "out") "/bin"))
1090 #:phases
1091 (modify-phases %standard-phases
1092 (add-after 'set-paths 'set-sdl'paths
1093 (lambda* (#:key inputs #:allow-other-keys)
1094 (setenv "CPATH"
1095 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1096 "/include/SDL:"
1097 (or (getenv "CPATH") "")))
26a657f0
KK
1098 #t)))))
1099 (inputs
1100 `(("fluidsynth" ,fluidsynth)
1101 ("glu" ,glu)
1102 ("libmad" ,libmad)
1103 ("libpng" ,libpng)
1104 ("libvorbis" ,libvorbis)
1105 ("pcre" ,pcre)
1106 ("portmidi" ,portmidi)
1107 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1108 (home-page "http://prboom-plus.sourceforge.net/")
1109 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1110 (description
1111 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1112 (license license:gpl2+)))
1113
519bfc65
KK
1114(define-public retux
1115 (package
1116 (name "retux")
b286e3b3 1117 (version "1.3.6")
519bfc65
KK
1118 (source (origin
1119 (method url-fetch)
1120 (uri (string-append "mirror://savannah/retux/"
1121 (version-major+minor version) "/retux-"
1122 version "-src.tar.gz"))
1123 (sha256
1124 (base32
b286e3b3 1125 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1126 (build-system python-build-system)
1127 (arguments
1128 `(#:tests? #f ; no check target
1129 #:phases
1130 (modify-phases %standard-phases
1131 ;; no setup.py script
1132 (delete 'build)
1133 (replace 'install
1134 (lambda* (#:key outputs #:allow-other-keys)
1135 (let* ((out (assoc-ref outputs "out"))
1136 (bin (string-append out "/bin"))
1137 (data (string-append out "/share/retux"))
1138 (doc (string-append out "/share/doc/retux")))
1139 (mkdir-p bin)
1140
1141 (substitute* "retux.py"
1142 ;; Use the correct data directory.
1143 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1144 (string-append "\"" data "\","))
1145 ;; Use Python 3 so the patch-shebangs phase works properly.
1146 ((".*python2.*") "#!/usr/bin/python3"))
1147
1148 (copy-file "retux.py" (string-append bin "/retux"))
1149
1150 (copy-recursively "data" data)
1151
fbc3b802
KK
1152 (install-file "COPYING" doc)
1153 #t))))))
519bfc65
KK
1154 (inputs
1155 `(("python-sge-pygame" ,python-sge-pygame)
1156 ("python-six" ,python-six)
1157 ("python-xsge" ,python-xsge)))
1158 (home-page "http://retux.nongnu.org")
1159 (synopsis "Action platformer game")
1160 (description
1161 "ReTux is an action platformer loosely inspired by the Mario games,
1162utilizing the art assets from the @code{SuperTux} project.")
1163 ;; GPL version 3 or later is the license for the code and some art.
1164 ;; The rest of the licenses are for the art exclusively, as listed in
1165 ;; data/LICENSES.
1166 (license (list license:cc0
1167 license:cc-by3.0
1168 license:cc-by-sa3.0
1169 license:cc-by-sa4.0
1170 license:gpl2+
1171 license:gpl3+))))
07f3b379
KK
1172
1173(define-public roguebox-adventures
1697048f
KK
1174 (package
1175 (name "roguebox-adventures")
1176 (version "2.2.1")
1177 (source
1178 (origin
1179 (method url-fetch)
1180 (uri (string-append
1181 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1182 (string-join (string-split version #\.) "_") "_Source.zip"))
1183 (file-name (string-append name "-" version ".zip"))
1184 (sha256
1185 (base32
1186 "0kmzdgnik8fsf3bg55546l77p3mfxn2awkzfzzdn20n82rd2babw"))))
1187 (build-system python-build-system)
1188 (arguments
1189 `(#:tests? #f ; no check target
1190 #:phases
1191 (modify-phases %standard-phases
1192 (replace 'unpack
1193 (lambda* (#:key source #:allow-other-keys)
1194 (and (invoke "unzip" source)
1195 ;; The actual source is buried a few directories deep.
1196 (chdir (string-append "RogueBoxAdventures_v"
1197 (string-join
1198 (string-split ,version #\.) "_")
1199 "_Source")))))
1200 ;; no setup.py script
1201 (replace 'build
1202 (lambda* (#:key outputs #:allow-other-keys)
1203 (let* ((out (assoc-ref outputs "out"))
1204 (data (string-append
1205 out "/share/games/roguebox-adventures")))
1206 ;; Use the correct data directory.
1207 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1208 (("basic_path + os\\.sep + 'DATA'")
1209 (string-append "'" data "'"))
1210 (("^basic_path.*$")
1211 (string-append "basic_path ='" data "'\n")))
1212 (substitute* "LIB/gra_files.py"
1213 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1214 (string-append "basic_path ='" data "'\n")))
07f3b379 1215
1697048f
KK
1216 ;; The game must save in the user's home directory because
1217 ;; the store is read-only.
1218 (substitute* "main.py"
1219 (("home_save = False") "home_save = True")
1220 (("'icon_small.png'")
1221 (string-append "'" data "/icon_small.png'"))))
1222 #t))
1223 (replace 'install
1224 (lambda* (#:key outputs #:allow-other-keys)
1225 (let* ((out (assoc-ref outputs "out"))
1226 (bin (string-append out "/bin"))
1227 (roguebox-adventures
1228 (string-append bin "/roguebox-adventures"))
1229 (data (string-append
1230 out "/share/games/roguebox-adventures"))
1231 (lib (string-append data "/LIB"))
1232 (doc (string-append
1233 out "/share/doc/roguebox-adventures")))
1234 (mkdir-p bin)
1235 (mkdir-p doc)
07f3b379 1236
1697048f
KK
1237 (for-each (lambda (file)
1238 (copy-recursively file
1239 (string-append data "/" file)))
1240 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1241 "icon_big.png" "icon_small.png"))
1242 (for-each (lambda (file)
1243 (chmod file #o555)
1244 (install-file file lib))
1245 '("main.py" "run.py"))
07f3b379 1246
1697048f 1247 (copy-recursively "DOC" doc)
07f3b379 1248
1697048f
KK
1249 (call-with-output-file
1250 roguebox-adventures
1251 (lambda (p)
1252 (format p "\
1253#!~a
1254export PYTHONPATH=~a/LIB:~a
1255exec -a \"~a\" ~a \"$@\"\n"
1256 (which "bash") data (getenv "PYTHONPATH")
1257 (which "python3")
1258 (string-append lib "/main.py"))))
1259 (chmod roguebox-adventures #o555))
1260 #t)))))
1261 (native-inputs
1262 `(("unzip" ,unzip)))
1263 (inputs
1264 `(("python-pygame" ,python-pygame)
1265 ("python-tmx" ,python-tmx)))
1266 (home-page "https://rogueboxadventures.tuxfamily.org")
1267 (synopsis "A classical roguelike/sandbox game")
1268 (description
1269 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1270from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1271Adventures is to offer the player a kind of roguelike toy-world. This world
1272can be explored and changed freely.")
1697048f
KK
1273 ;; The GPL3+ is for code, the rest are for art.
1274 (license (list license:cc0
1275 license:cc-by3.0
1276 license:gpl3+
1277 license:silofl1.1))))
519bfc65 1278
a20b084a
JD
1279(define-public xshogi
1280 (package
1281 (name "xshogi")
1282 (version "1.4.2")
1283 (source
1284 (origin
1285 (method url-fetch)
1286 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1287 version ".tar.gz"))
1288 (sha256
1289 (base32
1290 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1291 (build-system gnu-build-system)
1292 (inputs
1293 `(("libxaw" ,libxaw)
1294 ("libxt" ,libxt)))
6fd52309 1295 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1296 (synopsis "User interface for gnushogi")
a20b084a
JD
1297 (description "A graphical user interface for the package @code{gnushogi}.")
1298 ;; Contains a copy of GPLv3 but the licence notices simply
1299 ;; state "GNU General Public Licence" without specifying a version.
1300 (license license:gpl1+)))
1301
649220ad 1302(define-public abbaye
3da5dca3 1303 (package
649220ad 1304 (name "abbaye")
efc12a81 1305 (version "2.0.1")
3da5dca3
DT
1306 (source
1307 (origin
feb50ac6
TGR
1308 (method git-fetch)
1309 (uri (git-reference
1310 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1311 (commit (string-append "v" version))))
1312 (file-name (git-file-name name version))
3da5dca3 1313 (sha256
feb50ac6 1314 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1315 (modules '((guix build utils)))
1316 (snippet
1317 ;; Unbundle fonts.
6cbee49d
MW
1318 '(begin
1319 (delete-file-recursively "fonts")
1320 #t))))
3da5dca3
DT
1321 (build-system gnu-build-system)
1322 (arguments
efc12a81 1323 '(#:make-flags '("CC=gcc")
aec05972
AK
1324 #:phases (modify-phases %standard-phases
1325 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1326 (lambda* (#:key inputs #:allow-other-keys)
1327 (setenv "CPATH"
1328 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1329 "/include/SDL:"
1330 (or (getenv "CPATH") "")))))
aec05972
AK
1331 (add-after 'patch-source-shebangs 'patch-makefile
1332 (lambda* (#:key outputs #:allow-other-keys)
1333 ;; Replace /usr with package output directory.
efc12a81
AFN
1334 (substitute* "Makefile"
1335 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1336 (add-before 'install 'make-install-dirs
1337 (lambda* (#:key outputs #:allow-other-keys)
1338 (let ((prefix (assoc-ref outputs "out")))
1339 ;; Create directories that the makefile assumes exist.
1340 (mkdir-p (string-append prefix "/bin"))
1341 (mkdir-p (string-append prefix "/share/applications"))
1342 (mkdir-p (string-append prefix "/share/pixmaps")))))
1343 ;; No configure script.
1344 (delete 'configure))
3da5dca3
DT
1345 #:tests? #f)) ;; No check target.
1346 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1347 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1348 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1349 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1350 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1351France. The Cathars, who preach about good Christian beliefs, were being
1352expelled by the Catholic Church out of the Languedoc region in France. One of
1353them, called Jean Raymond, found an old church in which to hide, not knowing
1354that beneath its ruins lay buried an ancient evil.")
efc12a81 1355 (license license:gpl3)))
a83c6a64 1356
649220ad
NG
1357(define-public l-abbaye-des-morts
1358 (deprecated-package "l-abbaye-des-morts" abbaye))
c91ed484 1359
b76c94e6
CAW
1360(define-public angband
1361 (package
1362 (name "angband")
e5e24819 1363 (version "4.2.0")
b76c94e6
CAW
1364 (source
1365 (origin
1366 (method url-fetch)
9a0d324a
EF
1367 (uri (string-append "http://rephial.org/downloads/"
1368 (version-major+minor version)
1369 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1370 (sha256
1371 (base32
e5e24819 1372 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1373 (modules '((guix build utils)))
1374 (snippet
1375 ;; So, some of the sounds/graphics/tilesets are under different
1376 ;; licenses... some of them even nonfree! This is a console-only
1377 ;; version of this package so we just remove them.
1378 ;; In the future, if someone tries to make a graphical variant of
1379 ;; this package, they can deal with that mess themselves. :)
1380 '(begin
6cbee49d
MW
1381 (for-each (lambda (subdir)
1382 (let ((lib-subdir (string-append "lib/" subdir)))
1383 (delete-file-recursively lib-subdir)))
1384 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1385 (substitute* "lib/Makefile"
e5e24819 1386 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1387 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1388 "gamedata customize help screens user"))
1389 #t))))
b76c94e6
CAW
1390 (build-system gnu-build-system)
1391 (arguments
aeb6d9a6 1392 `(#:tests? #f ; no check target
b76c94e6
CAW
1393 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1394 #:phases
1395 (modify-phases %standard-phases
9a0d324a 1396 (replace 'bootstrap
b76c94e6
CAW
1397 (lambda _
1398 (substitute* "acinclude.m4"
1399 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1400 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1401 (native-inputs
1402 `(("autoconf" ,autoconf)
1403 ("automake" ,automake)))
1404 (inputs `(("ncurses" ,ncurses)))
1405 (home-page "http://rephial.org/")
1406 (synopsis "Dungeon exploration roguelike")
1407 (description "Angband is a Classic dungeon exploration roguelike. Explore
1408the depths below Angband, seeking riches, fighting monsters, and preparing to
1409fight Morgoth, the Lord of Darkness.")
1410 (license license:gpl2)))
1411
a83c6a64
EB
1412(define-public pingus
1413 (package
1414 (name "pingus")
1415 (version "0.7.6")
1416 (source
1417 (origin
472c36bd
EF
1418 (method git-fetch)
1419 (uri (git-reference
4b889d3a 1420 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1421 (commit (string-append "v" version))))
1422 (file-name (git-file-name name version))
a83c6a64
EB
1423 (sha256
1424 (base32
472c36bd
EF
1425 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1426 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1427 "pingus-sdl-libs-config.patch"))
1428 (modules '((guix build utils)))
1429 (snippet
1430 '(begin
1431 (substitute* "src/pingus/screens/demo_session.cpp"
1432 (("#include <iostream>")
1433 ;; std::function moved to <functional> with C++ 11.
1434 ;; Remove this for versions newer than 0.7.6.
1435 "#include <iostream>\n#include <functional>"))
1436 #t))))
a83c6a64
EB
1437 (build-system gnu-build-system)
1438 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1439 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1440 (inputs `(("sdl" ,sdl)
1441 ("sdl-image" ,sdl-image)
1442 ("sdl-mixer" ,sdl-mixer)
1443 ("mesa" ,mesa)
00c09300 1444 ("glu" ,glu)
a83c6a64
EB
1445 ("libpng" ,libpng)
1446 ("boost" ,boost)))
1447 (arguments
3f3f8f49
AI
1448 '(#:make-flags (list (string-append "PREFIX=" %output))
1449 #:tests? #f ; no check target
a83c6a64 1450 #:phases
3f127147 1451 (modify-phases %standard-phases
3f3f8f49 1452 (delete 'configure)))) ; no configure script
5f578231 1453 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1454 (synopsis "Lemmings clone")
1455 (description
1456 "Pingus is a free Lemmings-like puzzle game in which the player takes
1457command of a bunch of small animals and has to guide them through levels.
1458Since the animals walk on their own, the player can only influence them by
1459giving them commands, like build a bridge, dig a hole, or redirect all animals
1460in the other direction. Multiple such commands are necessary to reach the
1461level's exit. The game is presented in a 2D side view.")
1462 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1463 (license license:gpl3+)))
dff62423
JD
1464
1465(define-public talkfilters
1466 (package
1467 (name "talkfilters")
1468 (version "2.3.8")
1469 (source
1470 (origin
1471 (method url-fetch)
1472 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1473 name "-" version ".tar.gz"))
dff62423
JD
1474 (sha256
1475 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1476 (build-system gnu-build-system)
6fd52309 1477 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1478 (synopsis "Convert English text to humorous dialects")
1479 (description "The GNU Talk Filters are programs that convert English text
1480into stereotyped or otherwise humorous dialects. The filters are provided as
1481a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1482 (license license:gpl2+)))
1483
3cf118a1
CS
1484(define-public cmatrix
1485 (package
1486 (name "cmatrix")
1487 (version "1.2a")
1488 (source
1489 (origin
1490 (method url-fetch)
1491 (uri (string-append "http://www.asty.org/cmatrix/dist/cmatrix-" version
1492 ".tar.gz"))
1493 (sha256
1494 (base32
1495 "0k06fw2n8nzp1pcdynhajp5prba03gfgsbj91bknyjr5xb5fd9hz"))))
1496 (build-system gnu-build-system)
1497 (arguments
1498 '(#:phases
3f127147
TGR
1499 (modify-phases %standard-phases
1500 (replace 'configure
1501 (lambda* (#:key outputs #:allow-other-keys)
1502 ;; This old ‘configure’ script doesn't support
1503 ;; variables passed as arguments.
1504 (let ((out (assoc-ref outputs "out")))
1505 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1506 (invoke "./configure"
1507 (string-append "--prefix=" out))))))))
3cf118a1 1508 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1509 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1510 (synopsis "Simulate the display from \"The Matrix\"")
1511 (description "CMatrix simulates the display from \"The Matrix\" and is
1512based on the screensaver from the movie's website. It works with terminal
1513settings up to 132x300 and can scroll lines all at the same rate or
1514asynchronously and at a user-defined speed.")
024e2c17 1515 (license license:gpl2+)))
ae9cb418
JD
1516
1517(define-public chess
1518 (package
1519 (name "chess")
16fb1e79 1520 (version "6.2.5")
ae9cb418
JD
1521 (source
1522 (origin
1523 (method url-fetch)
1524 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1525 ".tar.gz"))
1526 (sha256
1527 (base32
16fb1e79 1528 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1529 (build-system gnu-build-system)
6fd52309 1530 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1531 (synopsis "Full chess implementation")
1532 (description "GNU Chess is a chess engine. It allows you to compete
1533against the computer in a game of chess, either through the default terminal
1534interface or via an external visual interface such as GNU XBoard.")
024e2c17 1535 (license license:gpl3+)))
ae9cb418 1536
a6b55314 1537(define freedink-engine
bb3b71ce
SB
1538 (package
1539 (name "freedink-engine")
2ee05bb9 1540 (version "109.6")
bb3b71ce
SB
1541 (source (origin
1542 (method url-fetch)
1543 (uri (string-append "mirror://gnu/freedink/freedink-" version
1544 ".tar.gz"))
1545 (sha256
1546 (base32
2ee05bb9 1547 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1548 (build-system gnu-build-system)
a9249f58
KK
1549 (arguments
1550 `(#:configure-flags '("--disable-embedded-resources")
1551 #:phases
1552 (modify-phases %standard-phases
1553 (add-after 'unpack 'disable-graphical-tests
1554 (lambda _
1555 ;; These tests require a graphical interface.
1556 (substitute* "src/Makefile.am"
1557 (("test_gfx_fonts TestIOGfxDisplay") ""))
1558 #t)))))
1559 (native-inputs `(("autoconf" ,autoconf)
1560 ("automake" ,automake)
1561 ("cxxtest" ,cxxtest)
1562 ("gettext" ,gettext-minimal)
1563 ("help2man" ,help2man)
bb3b71ce 1564 ("pkg-config" ,pkg-config)))
a9249f58
KK
1565 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1566 sdl2-ttf sdl2-gfx)))
bb3b71ce 1567 ("fontconfig" ,fontconfig)
a9249f58 1568 ("glm" ,glm)))
f9eab0be
EF
1569 (properties '((ftp-directory . "/freedink")
1570 (upstream-name . "freedink")))
6fd52309 1571 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1572 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1573 (description
1574 "GNU FreeDink is a free and portable re-implementation of the engine
1575for the role-playing game Dink Smallwood. It supports not only the original
1576game data files but it also supports user-produced game mods or \"D-Mods\".
1577To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1578 (license license:gpl3+)))
bb3b71ce 1579
a6b55314 1580(define freedink-data
bb3b71ce
SB
1581 (package
1582 (name "freedink-data")
32d92d2c 1583 (version "1.08.20190120")
bb3b71ce
SB
1584 (source (origin
1585 (method url-fetch)
1586 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1587 version ".tar.gz"))
bb3b71ce
SB
1588 (sha256
1589 (base32
32d92d2c 1590 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1591 (build-system gnu-build-system)
1592 (arguments
3f127147
TGR
1593 `(#:phases
1594 (modify-phases %standard-phases
1595 (delete 'configure) ; no configure script
1596 (delete 'check)) ; no tests
bb3b71ce 1597 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1598 (properties '((ftp-directory . "/freedink")))
6fd52309 1599 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1600 (synopsis "Game data for GNU Freedink")
1601 (description
1602 "This package contains the game data of GNU Freedink.")
024e2c17 1603 (license license:gpl3+)))
bb3b71ce 1604
2926e950
KK
1605(define-public freedink-dfarc
1606 (package
1607 (name "freedink-dfarc")
1608 (version "3.14")
1609 (source (origin
1610 (method url-fetch)
1611 (uri (string-append "mirror://gnu/freedink/dfarc-"
1612 version ".tar.gz"))
1613 (sha256
1614 (base32
1615 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1616 (build-system gnu-build-system)
1617 (native-inputs
1618 `(("intltool" ,intltool)))
1619 (inputs
1620 `(("bzip2" ,bzip2)
1621 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1622 (properties '((ftp-directory . "/freedink")
1623 (upstream-name . "dfarc")))
2926e950
KK
1624 (home-page "https://www.gnu.org/software/freedink/")
1625 (synopsis "Front-end for managing and playing Dink Modules")
1626 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1627and its numerous D-Mods.")
1628 (license license:gpl3+)))
bb3b71ce 1629
a6b55314
LC
1630(define-public freedink
1631 ;; This is a wrapper that tells the engine where to find the data.
1632 (package (inherit freedink-engine)
1633 (name "freedink")
1634 (build-system trivial-build-system)
1635 (arguments
1636 '(#:builder (begin
1637 (use-modules (guix build utils))
1638
1639 (let* ((output (assoc-ref %outputs "out"))
1640 (bin (string-append output "/bin"))
1641 (executable (string-append bin "/freedink")))
1642 (mkdir-p bin)
1643 (call-with-output-file executable
1644 (lambda (port)
1645 (format port "#!~a/bin/sh
1646exec ~a/bin/freedink -refdir ~a/share/dink\n"
1647 (assoc-ref %build-inputs "bash")
1648 (assoc-ref %build-inputs "engine")
1649 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1650 (chmod port #o777)))
1651 #t))
a6b55314
LC
1652 #:modules ((guix build utils))))
1653 (inputs `(("engine" ,freedink-engine)
1654 ("data" ,freedink-data)
1655 ("bash" ,bash)))
1656 (native-inputs '())))
1657
ae9cb418
JD
1658(define-public xboard
1659 (package
1660 (name "xboard")
9835458f 1661 (version "4.9.1")
ae9cb418
JD
1662 (source
1663 (origin
1664 (method url-fetch)
1665 (uri (string-append "mirror://gnu/xboard/xboard-" version
1666 ".tar.gz"))
1667 (sha256
1668 (base32
9835458f 1669 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1670 (build-system gnu-build-system)
4e530049
SB
1671 (inputs
1672 `(("gtk+" ,gtk+-2)
1673 ("librsvg" ,librsvg)))
9835458f
EF
1674 (native-inputs
1675 `(("texinfo" ,texinfo)
1676 ("pkg-config" ,pkg-config)))
6fd52309 1677 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1678 (synopsis "Graphical user interface for chess programs")
1679 (description "GNU XBoard is a graphical board for all varieties of chess,
1680including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1681and Makruk. Several lesser-known variants are also supported. It presents a
1682fully interactive graphical interface and it can load and save games in the
1683Portable Game Notation.")
024e2c17 1684 (license license:gpl3+)))
11c38cbe 1685
a21b42e2
SB
1686(define-public gtypist
1687 (package
1688 (name "gtypist")
1689 (version "2.9.5")
1690 (source (origin
1691 (method url-fetch)
1692 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1693 version ".tar.xz"))
1694 (sha256
1695 (base32
1696 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1697 (modules '((guix build utils)))
1698 (snippet
1699 ;; We do not provide `ncurses.h' within an `ncursesw'
1700 ;; sub-directory, so patch the source accordingly. See
1701 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
1702 '(begin
1703 (for-each (lambda (file)
1704 (substitute* file
1705 (("ncursesw/ncurses.h")
1706 "ncurses.h")))
1707 (find-files "." "configure$|\\.c$"))
1708 #t))))
a21b42e2
SB
1709 (build-system gnu-build-system)
1710 (inputs `(("ncurses" ,ncurses)
1711 ("perl" ,perl)))
6fd52309 1712 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1713 (synopsis "Typing tutor")
1714 (description
1715 "GNU Typist is a universal typing tutor. It can be used to learn and
1716practice touch-typing. Several tutorials are included; in addition to
1717tutorials for the standard QWERTY layout, there are also tutorials for the
1718alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1719are primarily in English, however some in other languages are provided.")
024e2c17 1720 (license license:gpl3+)))
13d18626 1721
024e2c17
DT
1722(define-public irrlicht
1723 (package
1724 (name "irrlicht")
f90b2dbd 1725 (version "1.8.4")
024e2c17
DT
1726 (source (origin
1727 (method url-fetch)
1728 (uri (string-append
1729 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1730 (version-major+minor version)
1731 "/" version "/irrlicht-" version ".zip"))
1732 (sha256
1733 (base32
7b8a7536
EF
1734 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1735 (patches (search-patches "irrlicht-use-system-libs.patch"))
1736 (modules '((guix build utils)))
1737 (snippet
1738 '(begin
1739 (for-each delete-file-recursively
1740 '("bin" ; bundled compiled Windows binaries"
1741 "source/Irrlicht/MacOSX"
1742 "source/Irrlicht/bzip2"
1743 "source/Irrlicht/jpeglib"
1744 "source/Irrlicht/libpng"
1745 "source/Irrlicht/lzma"
1746 "source/Irrlicht/zlib"))
1747 (delete-file "source/Irrlicht/glext.h")
1748 (delete-file "source/Irrlicht/glxext.h")
1749 (delete-file "source/Irrlicht/wglext.h")
1750 #t))))
024e2c17
DT
1751 (build-system gnu-build-system)
1752 (arguments
3f127147
TGR
1753 `(#:phases
1754 (modify-phases %standard-phases
7b8a7536
EF
1755 (add-after 'unpack 'chdir-to-source
1756 (lambda _
1757 ;; The actual source is buried a few directories deep.
1758 (chdir "source/Irrlicht/")
1759 #t))
1760 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
1761 (lambda* (#:key outputs #:allow-other-keys)
1762 (let ((out (assoc-ref outputs "out")))
1763 (substitute* "Makefile"
1764 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
1765 (string-append "INSTALL_DIR = " out "/lib"))
1766 ;; Add '-fpermissive' to the CXXFLAGS
1767 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
1768 ;; The Makefile assumes these directories exist.
1769 (mkdir-p (string-append out "/lib"))
1770 (mkdir-p (string-append out "/include")))))
3f127147
TGR
1771 (delete 'configure)) ; no configure script
1772 #:tests? #f ; no check target
024e2c17 1773 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 1774 (inputs
7b8a7536
EF
1775 `(("bzip2" ,bzip2)
1776 ("libjpeg" ,libjpeg)
1777 ("libpng" ,libpng)
1778 ("libx11" ,libx11)
1779 ("libxxf86vm" ,libxxf86vm)
1780 ("mesa" ,mesa)))
024e2c17
DT
1781 (synopsis "3D game engine written in C++")
1782 (description
1783 "The Irrlicht Engine is a high performance realtime 3D engine written in
1784C++. Features include an OpenGL renderer, extensible materials, scene graph
1785management, character animation, particle and other special effects, support
1786for common mesh file formats, and collision detection.")
1787 (home-page "http://irrlicht.sourceforge.net/")
1788 (license license:zlib)))
7e51e5bc 1789
c23c50c7
RW
1790(define-public mars
1791 ;; The latest release on SourceForge relies on an unreleased version of SFML
1792 ;; with a different API, so we take the latest version from the official
1793 ;; repository on Github.
698bd297 1794 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
1795 (revision "1"))
1796 (package
1797 (name "mars")
698bd297 1798 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
1799 (source (origin
1800 (method git-fetch)
1801 (uri (git-reference
1802 (url "https://github.com/thelaui/M.A.R.S..git")
1803 (commit commit)))
00a82e83 1804 (file-name (git-file-name name version))
c23c50c7
RW
1805 (sha256
1806 (base32
1807 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
1808 (patches (search-patches "mars-sfml-2.3.patch"
1809 "mars-install.patch"))))
c23c50c7
RW
1810 (build-system cmake-build-system)
1811 (arguments
1812 `(#:tests? #f ; There are no tests
1813 #:phases
1814 (modify-phases %standard-phases
1815 (add-after 'unpack 'fix-install-path
1816 (lambda _
1817 (substitute* "src/CMakeLists.txt"
1818 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
1819 "${CMAKE_INSTALL_PREFIX}/bin"))
1820 #t))
1821 (add-after 'unpack 'fix-data-path
1822 (lambda* (#:key outputs #:allow-other-keys)
1823 (substitute* "src/System/settings.cpp"
1824 (("C_dataPath = \"./data/\";")
1825 (string-append "C_dataPath = \""
1826 (assoc-ref outputs "out")
1827 "/share/games/marsshooter/\";")))
1828 #t)))))
1829 (inputs
1830 `(("mesa" ,mesa)
1831 ("fribidi" ,fribidi)
1832 ("taglib" ,taglib)
1833 ("sfml" ,sfml)))
1834 (home-page "http://marsshooter.org")
1835 (synopsis "2D space shooter")
1836 (description
1837 "M.A.R.S. is a 2D space shooter with pretty visual effects and
1838attractive physics. Players can battle each other or computer controlled
1839enemies in different game modes such as space ball, death match, team death
1840match, cannon keep, and grave-itation pit.")
1841 (license license:gpl3+))))
1842
7e51e5bc
DT
1843(define minetest-data
1844 (package
1845 (name "minetest-data")
2557d366 1846 (version "5.1.0")
7e51e5bc 1847 (source (origin
7217d337
EF
1848 (method git-fetch)
1849 (uri (git-reference
1850 (url "https://github.com/minetest/minetest_game")
1851 (commit version)))
1852 (file-name (git-file-name name version))
7e51e5bc
DT
1853 (sha256
1854 (base32
2557d366 1855 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
7e51e5bc
DT
1856 (build-system trivial-build-system)
1857 (native-inputs
7217d337 1858 `(("source" ,source)))
7e51e5bc
DT
1859 (arguments
1860 `(#:modules ((guix build utils))
1861 #:builder (begin
1862 (use-modules (guix build utils))
7217d337 1863 (let ((install-dir (string-append
7e51e5bc 1864 %output
7217d337 1865 "/share/minetest/games/minetest_game")))
7e51e5bc 1866 (mkdir-p install-dir)
7217d337
EF
1867 (copy-recursively
1868 (assoc-ref %build-inputs "source")
1869 install-dir)
e3cfef22 1870 #t))))
7e51e5bc
DT
1871 (synopsis "Main game data for the Minetest game engine")
1872 (description
ab0c796b 1873 "Game data for the Minetest infinite-world block sandbox game.")
7e51e5bc
DT
1874 (home-page "http://minetest.net")
1875 (license license:lgpl2.1+)))
6e206ac7
DT
1876
1877(define-public minetest
1878 (package
1879 (name "minetest")
2557d366 1880 (version "5.1.0")
6e206ac7 1881 (source (origin
e8d8b485
EF
1882 (method git-fetch)
1883 (uri (git-reference
1fbd7c7f
MB
1884 (url "https://github.com/minetest/minetest")
1885 (commit version)))
e8d8b485 1886 (file-name (git-file-name name version))
6e206ac7
DT
1887 (sha256
1888 (base32
2557d366 1889 "184n9gxfa7yr0j85z2x736maaymsnppd5jzm326wlqri3c0qqy3z"))
7fc90282
EF
1890 (modules '((guix build utils)))
1891 (snippet
1fbd7c7f 1892 '(begin
d9580a26
MB
1893 ;; Mimic upstream commit 706b6aad06, for compatibility with
1894 ;; newer jsoncpp. Remove this for > 5.1.0.
1895 (substitute* "cmake/Modules/FindJson.cmake"
1896 (("features\\.h")
1897 "allocator.h"))
1898
1899 ;; Delete bundled libraries.
1900 (delete-file-recursively "lib")
1901 #t))))
6e206ac7
DT
1902 (build-system cmake-build-system)
1903 (arguments
10903356 1904 '(#:configure-flags
1fbd7c7f
MB
1905 (list "-DRUN_IN_PLACE=0"
1906 "-DENABLE_FREETYPE=1"
1907 "-DENABLE_GETTEXT=1"
1908 "-DENABLE_SYSTEM_JSONCPP=TRUE"
1909 (string-append "-DIRRLICHT_INCLUDE_DIR="
1910 (assoc-ref %build-inputs "irrlicht")
1911 "/include/irrlicht")
1912 (string-append "-DCURL_INCLUDE_DIR="
1913 (assoc-ref %build-inputs "curl")
1914 "/include/curl"))
1915 #:tests? #f)) ;no check target
6e206ac7
DT
1916 (native-search-paths
1917 (list (search-path-specification
1918 (variable "MINETEST_SUBGAME_PATH")
af070955 1919 (files '("share/minetest/games")))))
6e206ac7
DT
1920 (native-inputs
1921 `(("pkg-config" ,pkg-config)))
1922 (inputs
7fc90282 1923 `(("curl" ,curl)
8c064d01 1924 ("freetype" ,freetype)
7fc90282
EF
1925 ("gettext" ,gettext-minimal)
1926 ("gmp" ,gmp)
1927 ("irrlicht" ,irrlicht)
1928 ("jsoncpp" ,jsoncpp)
c463dd47 1929 ("libjpeg" ,libjpeg)
7fc90282 1930 ("libpng" ,libpng)
6e206ac7
DT
1931 ("libogg" ,libogg)
1932 ("libvorbis" ,libvorbis)
7fc90282 1933 ("libxxf86vm" ,libxxf86vm)
6e206ac7 1934 ("luajit" ,luajit)
7fc90282 1935 ("mesa" ,mesa)
165dc8bd 1936 ("ncurses" ,ncurses)
7fc90282 1937 ("openal" ,openal)
6e206ac7
DT
1938 ("sqlite" ,sqlite)))
1939 (propagated-inputs
1940 `(("minetest-data" ,minetest-data)))
1941 (synopsis "Infinite-world block sandbox game")
1942 (description
1943 "Minetest is a sandbox construction game. Players can create and destroy
1944various types of blocks in a three-dimensional open world. This allows
1945forming structures in every possible creation, on multiplayer servers or as a
1946single player. Mods and texture packs allow players to personalize the game
1947in different ways.")
1948 (home-page "http://minetest.net")
1949 (license license:lgpl2.1+)))
77264d15
SB
1950
1951(define glkterm
1952 (package
1953 (name "glkterm")
1954 (version "1.0.4")
1955 (source
1956 (origin
1957 (method url-fetch)
1958 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
1959 "glk/implementations/glkterm-104.tar.gz"))
1960 (sha256
1961 (base32
1962 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
1963 (build-system gnu-build-system)
1964 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
1965 (arguments
1966 '(#:tests? #f ; no check target
1967 #:phases
3f127147
TGR
1968 (modify-phases %standard-phases
1969 (replace 'install
1970 (lambda* (#:key outputs #:allow-other-keys)
1971 (let* ((out (assoc-ref outputs "out"))
1972 (inc (string-append out "/include"))
1973 (lib (string-append out "/lib")))
3f127147
TGR
1974 (for-each
1975 (lambda (file)
1976 (install-file file inc))
1977 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
1978 (install-file "libglkterm.a" lib))
1979 #t))
1980 (delete 'configure)))) ; no configure script
77264d15
SB
1981 (home-page "http://www.eblong.com/zarf/glk/")
1982 (synopsis "Curses Implementation of the Glk API")
1983 (description
1984 "Glk defines a portable API for applications with text UIs. It was
1985primarily designed for interactive fiction, but it should be suitable for many
1986interactive text utilities, particularly those based on a command line.
1987This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 1988using the @code{curses.h} library for screen control.")
77264d15
SB
1989 (license (license:fsf-free "file://README"))))
1990
1991(define-public glulxe
1992 (package
1993 (name "glulxe")
b2e3d59c 1994 (version "0.5.4")
77264d15
SB
1995 (source
1996 (origin
1997 (method url-fetch)
1998 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 1999 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2000 (sha256
2001 (base32
b2e3d59c 2002 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2003 (build-system gnu-build-system)
2004 (inputs `(("glk" ,glkterm)))
2005 (arguments
3f127147 2006 '(#:tests? #f ; no check target
77264d15
SB
2007 #:make-flags
2008 (let* ((glk (assoc-ref %build-inputs "glk")))
2009 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2010 (string-append "GLKLIBDIR=" glk "/lib")
2011 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2012 #:phases
3f127147
TGR
2013 (modify-phases %standard-phases
2014 (replace 'install
2015 (lambda* (#:key outputs #:allow-other-keys)
2016 (let* ((out (assoc-ref outputs "out"))
2017 (bin (string-append out "/bin")))
3f127147
TGR
2018 (install-file "glulxe" bin))
2019 #t))
2020 (delete 'configure)))) ; no configure script
77264d15
SB
2021 (home-page "http://www.eblong.com/zarf/glulx/")
2022 (synopsis "Interpreter for Glulx VM")
2023 (description
2024 "Glulx is a 32-bit portable virtual machine intended for writing and
2025playing interactive fiction. It was designed by Andrew Plotkin to relieve
2026some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2027reference interpreter, using the Glk API.")
b2e3d59c 2028 (license license:expat)))
72b703cd 2029
ce94fcfd
CB
2030(define-public fifechan
2031 (package
2032 (name "fifechan")
2033 (version "0.1.5")
2034 (source (origin
2035 (method url-fetch)
2036 (uri (string-append "https://codeload.github.com/fifengine/"
2037 "fifechan/tar.gz/" version))
2038 (file-name (string-append name "-" version ".tar.gz"))
2039 (sha256
2040 (base32
2041 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2042 (build-system cmake-build-system)
2043 (inputs
2044 `(("sdl2" ,sdl2)
2045 ("sdl2-image" ,sdl2-image)
2046 ("mesa" ,mesa)))
2047 (arguments
2048 '(#:tests? #f)) ; No included tests
2049 (home-page "https://fifengine.github.io/fifechan/")
2050 (synopsis "Cross platform GUI library specifically for games")
2051 (description
2052 "Fifechan is a lightweight cross platform GUI library written in C++
2053specifically designed for games. It has a built in set of extendable GUI
2054Widgets, and allows users to create more.")
2055 (license license:lgpl2.1+)))
2056
2372a5f9
CB
2057(define-public fifengine
2058 (package
2059 (name "fifengine")
2060 (version "0.4.2")
2061 (source (origin
2062 (method url-fetch)
2063 (uri (string-append "https://codeload.github.com/fifengine/"
2064 "fifengine/tar.gz/" version))
2065 (file-name (string-append name "-" version ".tar.gz"))
2066 (sha256
2067 (base32
2068 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2069 (build-system cmake-build-system)
2070 (arguments
2071 `(#:tests? #f ; TODO The test running fails to run some tests.
2072 #:modules ((srfi srfi-1)
2073 (guix build cmake-build-system)
2074 (guix build utils))
2075 #:configure-flags
2076 (list
2077 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2078 (assoc-ref %build-inputs "openal")
2079 "/include/AL")
2080 (string-append "-DPYTHON_SITE_PACKAGES="
2081 (assoc-ref %outputs "out")
2082 "/lib/python3.7/site-packages"))
2083 #:phases
2084 (modify-phases %standard-phases
2085 (add-after 'unpack 'patch-run_tests.py
2086 (lambda _
2087 ;; Patch the test runner to exit with a status of 1 if any test
2088 ;; fails, to allow detecting failures.
2089 (substitute* "run_tests.py"
2090 (("ERROR\\. One or more tests failed!'\\)")
2091 "ERROR. One or more tests failed!')
2092\t\texit(1)"))
2093 #t))
2094 ;; Run tests after installation so that we can make use of the built
2095 ;; python modules.
2096 (delete 'check)
2097 (add-after 'install 'check
2098 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2099 (define python-version
2100 (let* ((version (last (string-split
2101 (assoc-ref inputs "python")
2102 #\-)))
2103 (components (string-split version #\.))
2104 (major+minor (take components 2)))
2105 (string-join major+minor ".")))
2106
2107 (when tests?
2108 ;; Set PYTHONPATH so that python finds the installed modules.
2109 (setenv "PYTHONPATH"
2110 (string-append (getenv "PYTHONPATH") ":"
2111 (assoc-ref outputs "out")
2112 "/lib/python"
2113 python-version
2114 "/site-packages"))
2115 ;; The tests require an X server.
2116 (system "Xvfb :1 &")
2117 (setenv "DISPLAY" ":1")
2118 (setenv "XDG_RUNTIME_DIR" "/tmp")
2119 ;; Run tests
2120 (chdir ,(string-append "../" name "-" version))
2121 (invoke "python3" "run_tests.py" "-a"))
2122 #t)))))
2123 (inputs
2124 `(("sdl2" ,sdl2)
2125 ("sdl2-image" ,sdl2-image)
2126 ("sdl2-ttf" ,sdl2-ttf)
2127 ("tinyxml" ,tinyxml)
2128 ("openal" ,openal)
2129 ("libogg" ,libogg)
2130 ("glew" ,glew)
2131 ("libvorbis" ,libvorbis)
2132 ("boost" ,boost)
2133 ("fifechan" ,fifechan)
2134 ("swig" ,swig)
2135 ("python" ,python)))
2136 (native-inputs
2137 `(("python" ,python)
2138 ("swig" ,swig)
2139 ("xvfb" ,xorg-server)))
2140 (propagated-inputs
2141 `(("python-future" ,python-future)))
2142 (home-page "https://www.fifengine.net/")
2143 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2144 (description
2145 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2146isometric game engine. Python bindings are included allowing users to create
2147games using Python as well as C++.")
2148 (license license:lgpl2.1+)))
2149
35481e8b
SB
2150(define-public fizmo
2151 (package
2152 (name "fizmo")
50e1d36c 2153 (version "0.8.5")
35481e8b
SB
2154 (source (origin
2155 (method url-fetch)
6ad191ba 2156 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2157 "fizmo-" version ".tar.gz"))
35481e8b
SB
2158 (sha256
2159 (base32
50e1d36c 2160 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2161 (build-system gnu-build-system)
2162 (arguments
2163 '(#:configure-flags
2164 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2165 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2166 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2167 (native-inputs
2168 `(("pkg-config" ,pkg-config)))
2169 (inputs
32199e9a
KK
2170 `(("freetype" ,freetype)
2171 ("libjpeg" ,libjpeg)
35481e8b
SB
2172 ("libpng" ,libpng)
2173 ("libsndfile" ,libsndfile)
2174 ("libxml2" ,libxml2)
2175 ("ncurses" ,ncurses)
32199e9a 2176 ("sdl2" ,sdl2)))
6ad191ba 2177 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2178 (synopsis "Z-machine interpreter")
2179 (description
2180 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2181interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2182either by Infocom or created using the Inform compiler.")
2183 (license license:bsd-3)))
2184
fc936b65
DH
2185(define-public gnugo
2186 (package
2187 (name "gnugo")
2188 (version "3.8")
2189 (source (origin
2190 (method url-fetch)
2191 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2192 ".tar.gz"))
2193 (sha256
2194 (base32
2195 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2196 (build-system gnu-build-system)
2197 (inputs `(("readline" ,readline)))
4cc78cb3 2198 (synopsis "Play the game of Go")
7c125ce0
AK
2199 (description
2200 "GNU Go is a program that plays the game of Go, in which players
2201place stones on a grid to form territory or capture other stones. While
2202it can be played directly from the terminal, rendered in ASCII characters,
2203it is also possible to play GNU Go with 3rd party graphical interfaces or
2204even in Emacs. It supports the standard game storage format (SGF, Smart
2205Game Format) and inter-process communication format (GMP, Go Modem
2206Protocol).")
6fd52309 2207 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2208 (license license:gpl3+)))
67fa7a27
CAW
2209
2210(define-public extremetuxracer
2211 (package
2212 (name "extremetuxracer")
101460d4 2213 (version "0.7.5")
67fa7a27
CAW
2214 (source (origin
2215 (method url-fetch)
2216 (uri (string-append
966a543b 2217 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2218 version "/etr-" version ".tar.xz"))
2219 (sha256
2220 (base32
101460d4 2221 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2222 (build-system gnu-build-system)
2223 (native-inputs
2224 `(("pkg-config" ,pkg-config)))
2225 (inputs
b8a35cce
RW
2226 `(("glu" ,glu)
2227 ("sfml" ,sfml)))
5bc0ac96
TGR
2228 (synopsis "High-speed arctic racing game based on Tux Racer")
2229 ;; Snarfed straight from Debian.
67fa7a27
CAW
2230 (description "Extreme Tux Racer, or etracer as it is called for short, is
2231a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2232game is to slide down a snow- and ice-covered mountain as quickly as possible,
2233avoiding the trees and rocks that will slow you down.
2234
2235Collect herrings and other goodies while sliding down the hill, but avoid fish
2236bones.
2237
2238This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2239 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2240 (license license:gpl2+)))
7a4d0509 2241
1a0633e7
RW
2242(define-public supertuxkart
2243 (package
2244 (name "supertuxkart")
60af1822 2245 (version "1.0")
1a0633e7
RW
2246 (source
2247 (origin
2248 (method url-fetch)
2249 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2250 version "/supertuxkart-" version "-src.tar.xz"))
2251 (sha256
2252 (base32
60af1822 2253 "106rlp99hq18b4q1kdri3pl06cc4v7iqfp1hp9k2f8751lzz923d"))
1a0633e7
RW
2254 (modules '((guix build utils)))
2255 (snippet
2256 ;; Delete bundled library sources
2257 '(begin
56a48582
PL
2258 ;; Supertuxkart uses modified versions of the Irrlicht engine
2259 ;; and the bullet library. The developers gave an explanation
2260 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
2261 ;; FIXME: try to unbundle angelscript
1a0633e7
RW
2262 (for-each delete-file-recursively
2263 '("lib/zlib"
2264 "lib/libpng"
2265 "lib/jpeglib"
2266 "lib/glew"
56a48582
PL
2267 "lib/wiiuse"
2268 "lib/enet"))
1a0633e7
RW
2269 #t))))
2270 (build-system cmake-build-system)
2271 (arguments
2272 `(#:tests? #f ; no check target
2273 #:configure-flags
2274 (list "-DUSE_WIIUSE=0"
56a48582 2275 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2276 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2277 "-DUSE_SYSTEM_GLEW=TRUE"
2278 "-DUSE_SYSTEM_ENET=TRUE"
17c3f776
RH
2279 ;; FIXME: needs libopenglrecorder
2280 "-DBUILD_RECORDER=0"
1a0633e7 2281 ;; Irrlicht returns an integer instead of a boolean
56a48582 2282 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2283 (inputs
2284 `(("glew" ,glew)
2285 ("zlib" ,zlib)
2286 ("openal" ,openal)
2287 ("libvorbis" ,libvorbis)
2288 ("freetype" ,freetype)
2289 ("fribidi" ,fribidi)
2290 ("mesa" ,mesa)
2291 ("libx11" ,libx11)
2292 ("libxrandr" ,libxrandr)
2293 ("curl" ,curl)
2294 ;; The following input is needed to build the bundled and modified
2295 ;; version of irrlicht.
60af1822 2296 ("libjpeg" ,libjpeg)
56a48582
PL
2297 ("openssl" ,openssl)
2298 ("enet" ,enet)))
1a0633e7
RW
2299 (native-inputs
2300 `(("pkg-config" ,pkg-config)))
5e9670bc 2301 (home-page "https://supertuxkart.net/")
1a0633e7
RW
2302 (synopsis "3D kart racing game")
2303 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2304having fun over realism. You can play with up to 4 friends on one PC, racing
2305against each other or just trying to beat the computer; single-player mode is
2306also available.")
2307 (license license:gpl3+)))
2308
a1c1943b
CB
2309(define-public unknown-horizons
2310 (package
2311 (name "unknown-horizons")
2312 (version "2019.1")
2313 (source (origin
2314 (method url-fetch)
2315 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2316 "unknown-horizons/tar.gz/" version))
2317 (file-name (string-append name "-" version ".tar.gz"))
2318 (sha256
2319 (base32
2320 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2321 (build-system python-build-system)
2322 (arguments
2323 '(#:phases
2324 (modify-phases %standard-phases
2325 (add-before 'build 'set-HOME
2326 (lambda _
2327 (setenv "HOME" "/tmp")))
2328 (add-after 'build 'build-extra
2329 (lambda _
2330 (invoke "python3" "./setup.py" "build_i18n")
2331 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2332 #t))
2333 (add-after 'install 'patch
2334 (lambda* (#:key outputs #:allow-other-keys)
2335 (let ((out (assoc-ref outputs "out")))
2336 (substitute* (string-append out "/bin/unknown-horizons")
2337 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2338 (string-append "os.chdir(\""
2339 (assoc-ref outputs "out")
2340 "/share/unknown-horizons\")"))))
2341 #t))
2342 ;; TODO: Run GUI tests as well
2343 (replace 'check
2344 (lambda _
2345 (substitute* "horizons/constants.py"
2346 (("IS_DEV_VERSION = False")
2347 "IS_DEV_VERSION = True"))
2348 (invoke "pytest" "tests")
2349 (substitute* "horizons/constants.py"
2350 (("IS_DEV_VERSION = True")
2351 "IS_DEV_VERSION = False"))
2352 #t)))))
2353 (inputs
2354 `(("fifengine" ,fifengine)
2355 ("python:tk" ,python "tk")
2356 ("python-pillow" ,python-pillow)
2357 ("python-pyyaml" ,python-pyyaml)))
2358 (native-inputs
2359 `(("intltool" ,intltool)
2360
2361 ;; Required for tests
2362 ("python-greenlet" ,python-greenlet)
2363 ("python-polib" ,python-polib)
2364 ("python-pytest" ,python-pytest)
2365 ("python-pytest-mock" ,python-pytest-mock)))
2366 (home-page "http://unknown-horizons.org/")
2367 (synopsis "Isometric realtime strategy, economy and city building simulation")
2368 (description
2369 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2370on economy and city building. Expand your small settlement to a strong and
2371wealthy colony, collect taxes and supply your inhabitants with valuable
2372goods. Increase your power with a well balanced economy and with strategic
2373trade and diplomacy.")
2374 (license (list
2375 license:gpl2+ ; Covers code
2376 license:expat ; tests/dummy.py, ext/polib.py
2377 license:cc-by-sa3.0 ; Covers some media content
2378 license:cc-by3.0 ; Covers some media content
2379 license:bsd-3)))) ; horizons/ext/speaklater.py
2380
7a4d0509
SB
2381(define-public gnujump
2382 (package
2383 (name "gnujump")
2384 (version "1.0.8")
2385 (source (origin
2386 (method url-fetch)
2387 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2388 version ".tar.gz"))
2389 (sha256
2390 (base32
2391 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2392 (build-system gnu-build-system)
2393 (arguments
2394 '(#:phases
2395 (modify-phases %standard-phases
2396 (add-before
2397 'configure 'link-libm
18a613fb
EF
2398 (lambda _ (setenv "LIBS" "-lm")))
2399 (add-after 'install 'create-desktop-entry
2400 (lambda* (#:key outputs #:allow-other-keys)
2401 (let* ((out (assoc-ref outputs "out"))
2402 (apps (string-append out "/share/applications")))
2403 (mkdir-p apps)
2404 (with-output-to-file
2405 (string-append apps "/gnujump.desktop")
2406 (lambda _
2407 (format #t
2408 "[Desktop Entry]~@
2409 Name=GNUjump~@
2410 Comment=Jump up the tower to survive~@
2411 Exec=~a/bin/gnujump~@
2412 Terminal=false~@
2413 Type=Application~@
2414 Categories=Game;ArcadeGame~%"
2415 out)))))))))
7a4d0509
SB
2416 (inputs
2417 `(("glu" ,glu)
b3546174 2418 ("mesa" ,mesa)
7a4d0509
SB
2419 ("sdl" ,sdl)
2420 ("sdl-image" ,sdl-image)
2421 ("sdl-mixer" ,sdl-mixer)))
2422 (home-page "http://gnujump.es.gnu.org/")
2423 (synopsis
2424 "Game of jumping to the next floor, trying not to fall")
2425 (description
2426 "GNUjump is a simple, yet addictive game in which you must jump from
2427platform to platform to avoid falling, while the platforms drop at faster rates
2428the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2429falling, themeable graphics and sounds, and replays.")
2430 (license license:gpl3+)))
159093a7 2431
649220ad 2432(define-public wesnoth
159093a7 2433 (package
649220ad 2434 (name "wesnoth")
03f0b5e2 2435 (version "1.14.9")
159093a7
SB
2436 (source (origin
2437 (method url-fetch)
de67e922 2438 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2439 (version-major+minor version)
2440 "/wesnoth-" version "/"
2441 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2442 (sha256
2443 (base32
03f0b5e2 2444 "1mhdrlflxxyknf54lwdbvs7fazlc1scf7z6vxxa3j746fks533ga"))))
159093a7
SB
2445 (build-system cmake-build-system)
2446 (arguments
03f0b5e2
MB
2447 `(#:tests? #f ;no check target
2448 #:phases (modify-phases %standard-phases
2449 (add-before 'configure 'treat-boost-as-system-header
2450 (lambda* (#:key inputs #:allow-other-keys)
2451 (let ((boost (assoc-ref inputs "boost")))
2452 ;; Ensure Boost is treated as "system headers" to
2453 ;; pacify compiler warnings induced by Boost headers.
2454 (for-each (lambda (variable)
2455 (setenv variable
2456 (string-append boost "/include:"
2457 (or (getenv variable)
2458 ""))))
2459 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2460 #t))))))
159093a7 2461 (native-inputs
b94a6ca0 2462 `(("gettext" ,gettext-minimal)
159093a7
SB
2463 ("pkg-config" ,pkg-config)))
2464 (inputs
2465 `(("boost" ,boost)
2466 ("dbus" ,dbus)
2467 ("fribidi" ,fribidi)
2468 ("libvorbis" ,libvorbis)
e554d43d 2469 ("openssl" ,openssl)
159093a7 2470 ("pango" ,pango)
e554d43d
AI
2471 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2472 (home-page "https://www.wesnoth.org/")
159093a7
SB
2473 (synopsis "Turn-based strategy game")
2474 (description
2475 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2476with several single player campaigns, and multiplayer games (both networked and
2477local).
2478
2479Battle for control on a range of maps, using variety of units which have
2480advantages and disadvantages against different types of attacks. Units gain
2481experience and advance levels, and are carried over from one scenario to the
2482next campaign.")
2483 (license license:gpl2+)))
c449a076 2484
649220ad
NG
2485(define-public the-battle-for-wesnoth
2486 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2487
649220ad 2488(define-public wesnoth-server
75abd864 2489 (package
649220ad
NG
2490 (inherit wesnoth)
2491 (name "wesnoth-server")
75abd864
AI
2492 (inputs
2493 `(("boost" ,boost)
e554d43d
AI
2494 ("icu4c" ,icu4c)
2495 ("openssl" ,openssl)
2496 ("sdl2" ,sdl2)))
75abd864 2497 (arguments
e554d43d
AI
2498 `(#:configure-flags '("-DENABLE_GAME=OFF")
2499 ,@(package-arguments wesnoth)))
75abd864
AI
2500 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2501 (description "This package contains a dedicated server for @emph{The
2502Battle for Wesnoth}.")))
2503
649220ad
NG
2504(define-public the-battle-for-wesnoth-server
2505 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2506
c449a076
EB
2507(define-public gamine
2508 (package
2509 (name "gamine")
87683add 2510 (version "1.6")
c449a076
EB
2511 (source (origin
2512 (method url-fetch)
2513 (uri (string-append "mirror://sourceforge/gamine-game/"
2514 "gamine-" version ".tar.gz"))
2515 (sha256
2516 (base32
87683add 2517 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2518 (build-system gnu-build-system)
2519 (native-inputs
2520 `(("pkg-config" ,pkg-config)
2521 ("intltool" ,intltool)))
2522 (inputs
2523 `(("gstreamer" ,gstreamer)
87683add
TGR
2524 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2525 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2526 ("gtk+" ,gtk+)))
2527 (arguments
2528 `(#:tests? #f
2529 #:make-flags
2530 (let ((out (assoc-ref %outputs "out")))
2531 (list (string-append "PREFIX=" out)
2532 (string-append "SYSCONFDIR=" out "/etc")))
2533 #:phases
2534 (modify-phases %standard-phases
2535 (delete 'configure)
2536 (add-after
2537 'install 'wrap-gamine
2538 (lambda* (#:key outputs #:allow-other-keys)
2539 (let ((out (assoc-ref outputs "out"))
2540 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2541 (wrap-program (string-append out "/bin/gamine")
2542 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2543 #t)))))
2544 (home-page "http://gamine-game.sourceforge.net/")
2545 (synopsis "Mouse and keyboard discovery for children")
2546 (description
2547 "Gamine is a game designed for young children who are learning to use the
2548mouse and keyboard. The child uses the mouse to draw colored dots and lines
2549on the screen and keyboard to display letters.")
2550 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2551 (license license:gpl3)))
2552
2e2ed3cb
AK
2553(define-public manaplus
2554 (package
2555 (name "manaplus")
2b744c21 2556 (version "1.9.3.23")
2e2ed3cb
AK
2557 (source (origin
2558 (method url-fetch)
2559 (uri (string-append
074dd909 2560 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2561 version "/manaplus-" version ".tar.xz"))
2562 (sha256
2563 (base32
2b744c21 2564 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2565 (build-system gnu-build-system)
2566 (arguments
2567 '(#:configure-flags
2568 (list (string-append "CPPFLAGS=-I"
2569 (assoc-ref %build-inputs "sdl-union")
2570 "/include/SDL"))))
2571 (native-inputs
2572 `(("pkg-config" ,pkg-config)))
2573 (inputs
2574 `(("glu" ,glu)
2575 ("curl" ,curl)
2576 ("libxml2" ,libxml2)
2577 ("mesa" ,mesa)
2e2ed3cb 2578 ("sdl-union" ,(sdl-union))))
074dd909 2579 (home-page "https://manaplus.org")
2e2ed3cb
AK
2580 (synopsis "Client for 'The Mana World' and similar games")
2581 (description
2582 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2583fully supported client for @uref{http://www.themanaworld.org, The mana
2584world}, @uref{http://evolonline.org, Evol Online} and
2585@uref{http://landoffire.org, Land of fire}.")
2586 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2587 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2588 ;; The rest is under GPL2+.
2589 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2590
e9687748
AS
2591(define openttd-engine
2592 (package
2593 (name "openttd-engine")
532dba49 2594 (version "1.9.3")
e9687748
AS
2595 (source
2596 (origin (method url-fetch)
532dba49 2597 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2598 version "/openttd-" version "-source.tar.xz"))
2599 (sha256
2600 (base32
532dba49 2601 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2602 (modules '((guix build utils)))
2603 (snippet
2604 ;; The DOS port contains proprietary software.
6cbee49d
MW
2605 '(begin
2606 (delete-file-recursively "os/dos")
2607 #t))))
e9687748
AS
2608 (build-system gnu-build-system)
2609 (arguments
2610 `(#:tests? #f ; no "check" target
2611 #:phases
2612 (modify-phases %standard-phases
2613 ;; The build process fails if the configure script is passed the
2614 ;; option "--enable-fast-install".
2615 (replace 'configure
857b2f53
AI
2616 (lambda* (#:key inputs outputs (configure-flags '())
2617 #:allow-other-keys)
e9687748
AS
2618 (let ((out (assoc-ref outputs "out"))
2619 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2620 (apply invoke "./configure"
2621 (string-append "--prefix=" out)
2622 ;; Provide the "lzo" path.
2623 (string-append "--with-liblzo2="
2624 lzo "/lib/liblzo2.a")
2625 ;; Put the binary in 'bin' instead of 'games'.
2626 "--binary-dir=bin"
2627 configure-flags)))))))
e9687748
AS
2628 (native-inputs `(("pkg-config" ,pkg-config)))
2629 (inputs
3a48d055 2630 `(("allegro" ,allegro)
e9687748
AS
2631 ("fontconfig" ,fontconfig)
2632 ("freetype" ,freetype)
2633 ("icu4c" ,icu4c)
2634 ("libpng" ,libpng)
2635 ("lzo" ,lzo)
2636 ("sdl" ,sdl)
2637 ("xz" ,xz)
2638 ("zlib" ,zlib)))
4cb0b5bf 2639 (synopsis "Transportation economics simulator game")
e9687748
AS
2640 (description "OpenTTD is a game in which you transport goods and
2641passengers by land, water and air. It is a re-implementation of Transport
2642Tycoon Deluxe with many enhancements including multiplayer mode,
2643internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2644autoreplace and autoupdate vehicles. This package only includes the game
2645engine. When you start it you will be prompted to download a graphics set.")
532dba49 2646 (home-page "https://www.openttd.org/")
e9687748
AS
2647 ;; This package is GPLv2, except for a few files located in
2648 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2649 ;; licenses. In addition, this software contains an in-game downloader
2650 ;; from which the user may find non-functional data licensed under
2651 ;; different terms.
2652 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2653
4df9495e
KK
2654(define openttd-opengfx
2655 (package
2656 (name "openttd-opengfx")
894fbb33 2657 (version "0.5.5")
4df9495e
KK
2658 (source
2659 (origin
2660 (method url-fetch)
2661 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2662 version "/opengfx-" version "-source.tar.xz"))
2663 (sha256
2664 (base32
894fbb33 2665 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2666 (build-system gnu-build-system)
2667 (arguments
2668 '(#:make-flags (list "CC=gcc"
2669 (string-append "INSTALL_DIR="
2670 (assoc-ref %outputs "out")
857b2f53 2671 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2672 #:phases
2673 (modify-phases %standard-phases
2674 (replace 'configure
2675 (lambda _
2676 ;; Make sure HOME is writable for GIMP.
2677 (setenv "HOME" (getcwd))
2678
2679 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2680 ;; dos2unix from receiving its version information as a flag.
2681 (substitute* "Makefile"
2682 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2683 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2684 ;; The check phase for this package only checks the md5sums of the built
2685 ;; GRF files against the md5sums of the release versions. Because we use
2686 ;; different software versions than upstream does, some of the md5sums
2687 ;; are different. However, the package is still reproducible, it's safe
2688 ;; to disable this test.
c0959cc9
AI
2689 #:tests? #f
2690 #:parallel-build? #f))
4df9495e
KK
2691 (native-inputs `(("dos2unix" ,dos2unix)
2692 ("gimp" ,gimp)
2693 ("grfcodec" ,grfcodec)
2694 ("nml" ,nml)
2695 ("python" ,python-2)))
2696 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2697 (synopsis "Base graphics set for OpenTTD")
2698 (description
2699 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2700set that aims to ensure the best possible out-of-the-box experience.
2701
2702OpenGFX provides you with...
2703@enumerate
2704@item All graphics you need to enjoy OpenTTD.
2705@item Uniquely drawn rail vehicles for every climate.
2706@item Completely snow-aware rivers.
2707@item Different river and sea water.
2708@item Snow-aware buoys.
2709@end enumerate")
2710 (license license:gpl2)))
2711
c17b0790
AI
2712(define openttd-opensfx
2713 (package
2714 (name "openttd-opensfx")
2715 (version "0.2.3")
2716 (source
2717 (origin
2718 (method url-fetch)
2719 (uri (string-append
2720 "https://binaries.openttd.org/extra/opensfx/"
2721 version "/opensfx-" version "-source.tar.gz"))
2722 (sha256
2723 (base32
2724 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2725 (build-system gnu-build-system)
2726 (native-inputs
2727 `(("catcodec" ,catcodec)
61506fe5 2728 ("python" ,python-2)))
c17b0790
AI
2729 (arguments
2730 `(#:make-flags
2731 (list (string-append "INSTALL_DIR=" %output
2732 "/share/games/openttd/baseset/opensfx"))
2733 #:phases
2734 (modify-phases %standard-phases
2735 (add-after 'unpack 'make-reproducible
2736 (lambda _
2737 ;; Remove the time dependency of the installed tarball by setting
2738 ;; the modification times if its members to 0.
2739 (substitute* "scripts/Makefile.def"
2740 (("-cf") " --mtime=@0 -cf"))
2741 #t))
2742 (delete 'configure))))
2743 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2744 (synopsis "Base sounds for OpenTTD")
2745 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2746it possible to play OpenTTD without requiring the proprietary sound files from
2747the original Transport Tycoon Deluxe.")
2748 (license license:cc-sampling-plus-1.0)))
2749
823e1218
AI
2750(define openttd-openmsx
2751 (package
2752 (name "openttd-openmsx")
2753 (version "0.3.1")
2754 (source
2755 (origin
2756 (method url-fetch)
2757 (uri (string-append
2758 "https://binaries.openttd.org/extra/openmsx/"
2759 version "/openmsx-" version "-source.tar.gz"))
2760 (sha256
2761 (base32
2762 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2763 (build-system gnu-build-system)
2764 (native-inputs
61506fe5 2765 `(("python" ,python-2)))
823e1218
AI
2766 (arguments
2767 `(#:make-flags
2768 (list (string-append "INSTALL_DIR=" %output
2769 "/share/games/openttd/baseset"))
2770 #:phases
2771 (modify-phases %standard-phases
2772 (delete 'configure)
2773 (add-after 'install 'post-install
2774 ;; Rename openmsx-version to openmsx
2775 (lambda* (#:key outputs #:allow-other-keys)
2776 (let ((install-directory (string-append (assoc-ref outputs "out")
2777 "/share/games/openttd/baseset")))
2778 (rename-file (string-append install-directory "/openmsx-" ,version)
2779 (string-append install-directory "/openmsx"))
2780 #t))))))
2781 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2782 (synopsis "Music set for OpenTTD")
2783 (description "OpenMSX is a music set for OpenTTD which makes it possible
2784to play OpenTTD without requiring the proprietary music from the original
2785Transport Tycoon Deluxe.")
2786 (license license:gpl2)))
2787
e9687748
AS
2788(define-public openttd
2789 (package
2790 (inherit openttd-engine)
ca508f1c
KK
2791 (name "openttd")
2792 (arguments
857b2f53
AI
2793 `(#:configure-flags
2794 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
2795 "/bin/timidity"))
2796 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
2797 ((#:phases phases)
2798 `(modify-phases ,phases
2799 (add-after 'install 'install-data
2800 (lambda* (#:key inputs outputs #:allow-other-keys)
2801 (for-each
2802 (lambda (input)
2803 (copy-recursively (assoc-ref inputs input)
2804 (assoc-ref outputs "out")))
2805 (list "opengfx" "openmsx" "opensfx"))
2806 #t)))))))
2807 (inputs
2808 `(("timidity++" ,timidity++)
2809 ,@(package-inputs openttd-engine)))
ca508f1c
KK
2810 (native-inputs
2811 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
2812 ("openmsx" ,openttd-openmsx)
2813 ("opensfx" ,openttd-opensfx)
ca508f1c 2814 ,@(package-native-inputs openttd-engine)))))
e9687748 2815
0c6ade0b
RH
2816(define openrct2-title-sequences
2817 (package
2818 (name "openrct2-title-sequences")
2819 (version "0.1.2")
2820 (source
2821 (origin
2822 (method url-fetch)
2823 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
2824 version "/title-sequence-v" version ".zip"))
2825 (file-name (string-append name "-" version ".zip"))
2826 (sha256
2827 (base32
2828 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
2829 (build-system trivial-build-system)
2830 (native-inputs
2831 `(("bash" ,bash)
2832 ("coreutils" ,coreutils)
2833 ("unzip" ,unzip)))
2834 (arguments
2835 `(#:modules ((guix build utils))
2836 #:builder
2837 (begin
2838 (use-modules (guix build utils))
2839 (let* ((out (assoc-ref %outputs "out"))
2840 (openrct2-title-sequences (string-append out
2841 "/share/openrct2/title-sequences"))
2842 (source (assoc-ref %build-inputs "source"))
2843 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2844 (copy-file source (string-append ,name "-" ,version ".zip"))
2845 (invoke unzip (string-append ,name "-" ,version ".zip"))
2846 (delete-file (string-append ,name "-" ,version ".zip"))
2847 (mkdir-p openrct2-title-sequences)
2848 (copy-recursively "."
2849 openrct2-title-sequences)
2850 #t))))
2851 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2852 (synopsis "Title sequences for OpenRCT2")
2853 (description
2854 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
2855 (license license:gpl3+)))
2856
2857(define openrct2-objects
2858 (package
2859 (name "openrct2-objects")
924e6993 2860 (version "1.0.9")
0c6ade0b
RH
2861 (source
2862 (origin
2863 (method url-fetch)
2864 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
2865 version "/objects.zip"))
2866 (file-name (string-append name "-" version ".zip"))
2867 (sha256
924e6993 2868 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
2869 (build-system trivial-build-system)
2870 (native-inputs
2871 `(("bash" ,bash)
2872 ("coreutils" ,coreutils)
2873 ("unzip" ,unzip)))
2874 (arguments
2875 `(#:modules ((guix build utils))
2876 #:builder
2877 (begin
2878 (use-modules (guix build utils))
2879 (let* ((out (assoc-ref %outputs "out"))
2880 (openrct2-objects (string-append out
2881 "/share/openrct2/objects"))
2882 (source (assoc-ref %build-inputs "source"))
2883 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2884 (copy-file source (string-append ,name "-" ,version ".zip"))
2885 (invoke unzip (string-append ,name "-" ,version ".zip"))
2886 (delete-file (string-append ,name "-" ,version ".zip"))
2887 (mkdir-p openrct2-objects)
2888 (copy-recursively "."
2889 openrct2-objects)
2890 #t))))
2891 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2892 (synopsis "Objects for OpenRCT2")
2893 (description
2894 "openrct2-objects is a set of objects for OpenRCT2.")
2895 (license license:gpl3+)))
2896
7aafb3b3
RH
2897(define-public openrct2
2898 (package
2899 (name "openrct2")
b6909d47 2900 (version "0.2.4")
7aafb3b3
RH
2901 (source
2902 (origin
2e5a0690
TGR
2903 (method git-fetch)
2904 (uri (git-reference
2905 (url "https://github.com/OpenRCT2/OpenRCT2.git")
2906 (commit (string-append "v" version))))
2907 (file-name (git-file-name name version))
7aafb3b3 2908 (sha256
b6909d47 2909 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
2910 (build-system cmake-build-system)
2911 (arguments
940c2c5c
RH
2912 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
2913 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 2914 #:tests? #f ; tests require network access
7aafb3b3 2915 #:phases
6457509c
TGR
2916 (modify-phases %standard-phases
2917 (add-after 'unpack 'fix-usr-share-paths&add-data
2918 (lambda* (#:key inputs outputs #:allow-other-keys)
2919 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
2920 (objects (assoc-ref inputs "openrct2-objects")))
2921 ;; Fix some references to /usr/share.
2922 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
2923 (("/usr/share")
2924 (string-append (assoc-ref %outputs "out") "/share")))
2925 (copy-recursively
2926 (string-append titles "/share/openrct2/title-sequences")
2927 "data/title")
2928 (copy-recursively
2929 (string-append objects "/share/openrct2/objects")
2930 "data/object"))))
8c14f7f8 2931 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
2932 (lambda _
2933 ;; Don't treat warnings as errors.
2934 (substitute* "CMakeLists.txt"
8c14f7f8
MB
2935 (("-Werror") ""))
2936 #t)))))
c695fb76
TGR
2937 (inputs `(("curl" ,curl)
2938 ("fontconfig" ,fontconfig)
2939 ("freetype" ,freetype)
0c6ade0b 2940 ("icu4c" ,icu4c)
c695fb76
TGR
2941 ("jansson" ,jansson)
2942 ("libpng" ,libpng)
2943 ("libzip" ,libzip)
2944 ("mesa" ,mesa)
0c6ade0b
RH
2945 ("openrct2-objects" ,openrct2-objects)
2946 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
2947 ("openssl" ,openssl)
2948 ("sdl2" ,sdl2)
2949 ("speexdsp" ,speexdsp)
2950 ("zlib" ,zlib)))
7aafb3b3 2951 (native-inputs
63d4ef52 2952 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
2953 (home-page "https://github.com/OpenRCT2/OpenRCT2")
2954 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
2955 (description "OpenRCT2 is a free software re-implementation of
2956RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
2957maintaining an amusement park containing attractions, shops and facilities.
2958
2959Note that this package does @emph{not} provide the game assets (sounds,
2960images, etc.)")
2961 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
2962 ;; regarding assets.
2963 (license license:gpl3+)))
2964
e3f755f4
EB
2965(define-public pinball
2966 (package
2967 (name "pinball")
2968 (version "0.3.1")
2969 (source
2970 (origin (method url-fetch)
2971 (uri (string-append "mirror://sourceforge/pinball/pinball/"
2972 "pinball-" version "/"
2973 "pinball-" version ".tar.gz"))
2974 (sha256
2975 (base32
2976 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
2977 (patches (search-patches "pinball-const-fix.patch"
2978 "pinball-cstddef.patch"
2979 "pinball-missing-separators.patch"
2980 "pinball-src-deps.patch"
2981 "pinball-system-ltdl.patch"))))
e3f755f4
EB
2982 (build-system gnu-build-system)
2983 (inputs
2984 `(("glu" ,glu)
2985 ("mesa" ,mesa)
2986 ("sdl" ,sdl)
2987 ("sdl-image" ,sdl-image)
2988 ("sdl-mixer" ,sdl-mixer)))
2989 (arguments
2990 '(#:configure-flags
2991 (list (string-append "CPPFLAGS=-I"
2992 (assoc-ref %build-inputs "sdl-image")
2993 "/include/SDL -I"
2994 (assoc-ref %build-inputs "sdl-mixer")
2995 "/include/SDL"))))
2996 (home-page "http://pinball.sourceforge.net")
2997 (synopsis "Pinball simulator")
2998 (description "The Emilia Pinball Project is a pinball simulator. There
2999are only two levels to play with, but they are very addictive.")
3000 (license license:gpl2)))
7e2e1155
RF
3001
3002(define-public pioneers
3003 (package
3004 (name "pioneers")
59e8a57d 3005 (version "15.5")
7e2e1155
RF
3006 (source (origin
3007 (method url-fetch)
3008 (uri (string-append "http://downloads.sourceforge.net/pio/"
3009 "pioneers-" version ".tar.gz"))
3010 (sha256
3011 (base32
59e8a57d 3012 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3013 (build-system gnu-build-system)
59e8a57d
TGR
3014 (inputs `(("avahi" ,avahi)
3015 ("gtk+" ,gtk+)
3016 ("librsvg" ,librsvg)))
7e2e1155 3017 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3018 ("itstool" ,itstool)
3019 ("libxml2" ,libxml2)
7e2e1155
RF
3020 ("pkg-config" ,pkg-config)))
3021 (synopsis "Board game inspired by The Settlers of Catan")
3022 (description "Pioneers is an emulation of the board game The Settlers of
3023Catan. It can be played on a local network, on the internet, and with AI
3024players.")
3025 (home-page "http://pio.sourceforge.net/")
8763fdf8 3026 (license license:gpl2+)))
fea1f275 3027
d7c4619b
AE
3028(define-public einstein
3029 (package
3030 (name "einstein")
3031 (version "2.0")
3032 (source (origin
3033 (method url-fetch)
d4cf5b01 3034 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3035 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3036 (sha256
3037 (base32
3038 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3039 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3040 (build-system gnu-build-system)
3041 (inputs
3042 `(("freetype" ,freetype)
3043 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3044 ("zlib" ,zlib)))
3045 (native-inputs
3046 `(("font-dejavu" ,font-dejavu)))
3047 (arguments
3048 `(#:tests? #f ; no check target
3049 #:phases
3050 (modify-phases %standard-phases
3051 (replace 'configure
3052 (lambda* (#:key outputs inputs #:allow-other-keys)
3053 (let ((out (assoc-ref outputs "out"))
3054 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3055 "/share/fonts/truetype/DejaVuSans.ttf")))
3056 (substitute* "Makefile"
3057 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3058 ;; The patch above registers a free font for use by the binary,
3059 ;; but the font is copied during the compile phase into a
3060 ;; resources file, so we need to make the ttf file available.
3061 (symlink dejavu "res/DejaVuSans.ttf")
3062 #t))))))
3063 (synopsis "Logic puzzle game")
3064 (description "The goal of this logic game is to open all cards in a 6x6
3065grid, using a number of hints as to their relative position. The game idea
3066is attributed to Albert Einstein.")
3067 ;; The original home page has disappeared.
3068 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3069 "http://games.flowix.com/en/index.html"))
3070 ;; License according to
3071 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3072 ;; The source code is a DFSG-sanitized tarball and does not contain any
3073 ;; license information.
3074 (license license:gpl3+)))
3075
d381962f 3076(define-public powwow
3077 (package
3078 (name "powwow")
90d37add 3079 (version "1.2.19")
d381962f 3080 (source (origin
3081 (method url-fetch)
3082 (uri (string-append
cc30a472 3083 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3084 version ".tar.gz"))
d381962f 3085 (sha256
3086 (base32
90d37add 3087 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3088 (inputs
3089 `(("ncurses" ,ncurses)))
3090 (build-system gnu-build-system)
36aff81a 3091 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3092 (synopsis "MUD and telnet client")
3093 (description
3094 "POWWOW is a client software which can be used for telnet as well as for
3095@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3096the chat server psyced with the specific config located at
3097http://lavachat.symlynx.com/unix/")
3098 (license license:gpl2+)))
158f5734 3099
5ef819cc 3100(define-public red-eclipse
49c97ea4
KK
3101 (let ((release "1.6.0")
3102 (revision 0)
42abb842 3103 (data-sources
631b20f9
TGR
3104 '(("acerspyro" "12b0bngl7hlxw4iwdbn99jp081yl6z1ic0s788nm349drbr2pck8")
3105 ("actors" "0x7qqx67679q6ark9zz02skwhzgabid69kwi6zmhfpfgicn4927r")
3106 ("appleflap" "08xslwqfqz3j4m03pv5ry2gdzj5k2ns51z8n6sln3sa94i9x8qkm")
3107 ("blendbrush" "18zf5i2ax4p14x4c9nhk9fq6l1xgbxw62gm72vx59vbfdpjrw3cg")
3108 ("caustics" "172fxwx7kbz5nmbjq98kr52ips505wb99fibgnpg8cj02syrya8k")
3109 ("crosshairs" "14w8ysqzdsx9bzpfbl700jzngbh14rdghhjdf6zd6jlkvrl6754r")
3110 ("dziq" "056imqszvp90j7cgz52ly0f31px64gsrmvm9k2c78ldbx87jnhc3")
3111 ("elyvisions" "1bsgr0gr7njydj8fqclh0a27lrsyic3xfd5a4vwggw7g54azpgk2")
3112 ("fonts" "00ibisza1qci0ghf2rynyf28l6r3nqhfzjf80k6gg76q4v7p1myx")
3113 ("freezurbern" "07l9ldk9b82f12c13wcg5xxdf15bw0yjxk3vvk8v3ygrl2mwksyr")
3114 ("john" "1jdmwkrdi5b9pivkm22rxhmkk1db9dx6l54wzcc23cvdz04ij93k")
3115 ("jojo" "0f7kjy43fbk9kw8fip6bbw4gn3pryh0fndlahjfkaysrx98krdj3")
3116 ("jwin" "0nc8dndnpqk2ad6316a8k6kgzsrkpwvk8s4gyh7aqfi4axfclril")
3117 ("luckystrike" "04jiipqahphmvz5cd74dygr62dlvv6l4iglb8hzh4pp8frhls8bq")
3118 ("maps" "0an46ipjvw4h0nxvb6qvnzp1cdkzlkiinqz4zh9lmxy1ds0gclim")
3119 ("mayhem" "15k10imm2wr6c6fq35n4r99k7kz7n9zdnjlw6dmdq6fba67i6sbc")
3120 ("mikeplus64" "0v4wiiivm3829j4phlavy22n4c6k6ib9ixxpdz7r6ysg5cdkaw33")
3121 ("misc" "13rfgwrlfhflz6inbkg3fypyf8im0m49sw112b17qrw2zgp8i1rz")
3122 ("nieb" "0z0h9jdn2gkkjil3vsvwidb1p2k09pi5n3wjxza12hhvqmcs7q8f")
3123 ("nobiax" "08bfp4q6gbfis18bp1h4d0hqssk79jc4fhyjxnv21dbam4v4mnkn")
3124 ("particles" "1vsx3fgg19xggxfhz3vlrh6nqhmw7kl9kmxrvb2j84blp00vd6z2")
3125 ("philipk" "14irscg80607i5k5l2ci0n9nwibvda2f3xsykgv96d0vldrp5n5a")
3126 ("projectiles" "09bnfsrywirwgjm6d7ff5nicx6w6b7w9568x9pb5q0ncaps3l85s")
3127 ("props" "1dlabbprlkif8af3daf9nbgcwgxiymvj0yiphqhlri8ylfy2vpz4")
3128 ("skyboxes" "14bi3md5y47cvb9ybipdvksz40gqsqw2r0lh3zzqb4acq367w18y")
3129 ("snipergoth" "0m8rvvy5n8n9pm0b5cqvzsxsw51mqk8m7s1h3qc849b38isliwq2")
3130 ("sounds" "0ivf3w5bphz5pzzx6kwcb67vbly1l19cgv3s0cyp8n87afiqj5rd")
3131 ("textures" "0qdmgx7zbcqnb9rrga2izr93p5inirczhddfxs504rsnv0v8vyxm")
3132 ("torley" "05ppyhghq859cbbxzj3dnl9fcx3ghy04ds1pylypwg2hsxzbjwcd")
3133 ("trak" "0g3vq86q91a3syli38lwc8ca4ychfwsmmqf85kqzfzyd627ybclm")
3134 ("ulukai" "0asa5fz400impklcg6dy2f7jiaqfc1sn1c36fpg8jd01gw66lw93")
3135 ("unnamed" "0rz5683j7sfwkcycfypbv4b0ihp0qwn9rzskfsabwc1s5g324917")
3136 ("vanities" "13f18783rc8cjf22p61zr8m5g1migzlx05fzl8xnbjdkqq4cdyix")
3137 ("vegetation" "1y5d97nfmvax7y4fr0y5v0c8zb1ajkqwx76kjd4qc9n4spdsi5sc")
3138 ("weapons" "103g1dhxv5ffz4ddg2xcbshbgv9606chsbas3pzk6h9ybqsyjrqh")
3139 ("wicked" "1884rk34a2dj83gz82rc4zh3ch0dyj5221hvsr0a5h60578i7yj6"))))
158f5734 3140 (package
5b8a8543 3141 (name "red-eclipse")
42abb842
AFN
3142 (version (if (zero? revision)
3143 release
3144 (string-append release "-"
3145 (number->string revision))))
bb7c071b
TGR
3146 (source
3147 (origin
3148 (method git-fetch)
3149 (uri (git-reference
3150 (url "https://github.com/red-eclipse/base.git")
3151 (commit (string-append "v" release))))
3152 (file-name (git-file-name name version))
3153 (sha256
3154 (base32 "0qy9kmq21wc4bdhwifasxc5dv1y5c53sn7dfmyc5y3zyz8wjyij4"))
3155 (patches
3156 (search-patches "red-eclipse-remove-gamma-name-hack.patch"))))
158f5734
KY
3157 (build-system gnu-build-system)
3158 (arguments
3159 `(#:tests? #f ; no check target
3160 #:make-flags (list "CC=gcc" "-Csrc"
3161 (string-append "INSTDIR="
42abb842
AFN
3162 (assoc-ref %outputs "out") "/bin")
3163 (string-append "prefix="
3164 (assoc-ref %outputs "out")))
158f5734
KY
3165 #:phases
3166 (modify-phases %standard-phases
3167 (add-after 'unpack 'unpack-data
3168 (lambda* (#:key inputs #:allow-other-keys)
3169 (delete-file-recursively "data")
3170 (mkdir "data")
631b20f9
TGR
3171 (with-directory-excursion "data"
3172 (for-each (lambda (name)
3173 (copy-recursively (assoc-ref inputs name) name))
3174 (list ,@(map car data-sources))))
158f5734 3175 #t))
49c97ea4 3176 (add-after 'unpack-data 'add-store-data-package-path-as-default
42abb842
AFN
3177 (lambda* (#:key outputs #:allow-other-keys)
3178 (substitute* "src/engine/server.cpp"
49c97ea4
KK
3179 (("(else[[:space:]]*)((addpackagedir\\()\"data\"(\\);))"
3180 _
3181 else_part
3182 addpackagedir_original
3183 addpackagedir_open
3184 addpackagedir_close)
42abb842
AFN
3185 (string-append else_part
3186 "{ "
3187 addpackagedir_open
3188 "\""
3189 (assoc-ref outputs "out")
3190 "/share/redeclipse/data\""
3191 addpackagedir_close
3192 " "
3193 addpackagedir_original
3194 " }")))
3195 #t))
158f5734
KY
3196 (delete 'configure) ; no configure script
3197 (add-after 'set-paths 'set-sdl-paths
3198 (lambda* (#:key inputs #:allow-other-keys)
3199 (setenv "CPATH"
3200 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3201 "/include/SDL2:"
3202 (or (getenv "CPATH") "")))
158f5734
KY
3203 #t))
3204 (add-after 'install 'copy-data
3205 (lambda* (#:key outputs #:allow-other-keys)
3206 (let ((out (assoc-ref outputs "out")))
3207 (copy-recursively "config"
3208 (string-append out "/config"))
66c65aaf
KK
3209 (copy-file "doc/examples/servinit.cfg"
3210 (string-append out "/config/servinit.cfg"))
158f5734 3211 (copy-recursively "data"
42abb842
AFN
3212 (string-append out "/share/redeclipse/data"))
3213 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3214 (symlink (string-append out "/share/redeclipse/data")
3215 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3216 #t))
3217 (add-after 'copy-data 'wrap-program
3218 (lambda* (#:key inputs outputs #:allow-other-keys)
3219 (let* ((out (assoc-ref outputs "out"))
3220 (bin (string-append out "/bin")))
3221 (with-directory-excursion bin
3222 (rename-file "redeclipse_linux"
3223 ".redeclipse_linux-real")
3224 (rename-file "redeclipse_server_linux"
3225 ".redeclipse_server_linux-real")
3226 (call-with-output-file "redeclipse_linux"
3227 (lambda (port)
3228 (format port "#!~a/bin/sh
3229# Run the thing from its home, otherwise it just bails out.
3230cd \"~a\"
3231exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3232 (assoc-ref inputs "bash") ;implicit input
3233 (string-append out)
3234 (string-append bin))))
3235 (call-with-output-file "redeclipse_server_linux"
3236 (lambda (port)
3237 (format port "#!~a/bin/sh
3238# Run the thing from its home, otherwise it just bails out.
3239cd \"~a\"
3240exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3241 (assoc-ref inputs "bash") ;implicit input
3242 (string-append out)
3243 (string-append bin))))
3244 (chmod "redeclipse_linux" #o555)
3245 (chmod "redeclipse_server_linux" #o555)))
3246 #t)))))
631b20f9
TGR
3247 (native-inputs
3248 `(("pkg-config" ,pkg-config)))
158f5734
KY
3249 (inputs
3250 `(("curl" ,curl)
3251 ("glu" ,glu)
14b865dc
KK
3252 ("sdl-union" ,(sdl-union (list sdl2
3253 sdl2-image
3254 sdl2-mixer)))
158f5734
KY
3255 ;; Create origin records for the many separate data packages.
3256 ,@(map (match-lambda
3257 ((name hash)
3258 (list name
3259 (origin
631b20f9
TGR
3260 (method git-fetch)
3261 (uri
3262 (git-reference
3263 (url (string-append "https://github.com/"
3264 "red-eclipse/" name ".git"))
3265 (commit (string-append "v" release))))
158f5734 3266 (sha256 (base32 hash))
631b20f9 3267 (file-name (git-file-name name version))))))
158f5734
KY
3268 data-sources)))
3269 (home-page "http://redeclipse.net/")
3270 (synopsis "Arena shooter derived from the Cube 2 engine")
3271 (description
3272 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3273Offering an innovative parkour system and distinct but all potent weapons,
3274Red Eclipse provides fast paced and accessible gameplay.")
3275 ;; The engine is under Zlib; data files are covered by the other
3276 ;; licenses. More details at <http://redeclipse.net/wiki/License>.
3277 (license (list license:expat
3278 license:zlib
3279 license:cc-by-sa3.0
3280 license:cc-by3.0
3281 license:cc0)))))
bcd2982f 3282
0fb9a15b
LC
3283(define-public grue-hunter
3284 (package
3285 (name "grue-hunter")
3286 (version "1.0")
3287 (source (origin
3288 (method url-fetch)
c41b2ffb 3289 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3290 (sha256
3291 (base32
3292 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3293 (build-system trivial-build-system) ; no Makefile.PL
3294 (arguments `(#:modules ((guix build utils))
3295 #:builder
3296 (begin
3297 (use-modules (guix build utils))
3298 (use-modules (srfi srfi-1))
3299
3300 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3301 (perl (string-append (assoc-ref %build-inputs
3302 "perl")
3303 "/bin"))
5edf2f05 3304 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3305 "gzip")
5edf2f05 3306 "/bin/gzip"))
0fb9a15b
LC
3307 (tar (string-append (assoc-ref %build-inputs
3308 "tar")
3309 "/bin/tar"))
3310 (out (assoc-ref %outputs "out"))
3311 (bin (string-append out "/bin"))
6d57723a
TGR
3312 (doc (string-append out
3313 "/share/doc/grue-hunter")))
e3cfef22
MW
3314 (copy-file tarball "grue-hunter.tar.gz")
3315 (invoke gzip "-d" "grue-hunter.tar.gz")
3316 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3317
e3cfef22
MW
3318 (mkdir-p bin)
3319 (copy-file "grue-hunter/gh.pl"
3320 (string-append bin "/grue-hunter"))
3321 (patch-shebang (string-append bin "/grue-hunter")
3322 (list perl))
3323
3324 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3325
e3cfef22 3326 #t))))
0fb9a15b
LC
3327 (inputs `(("perl" ,perl)
3328 ("tar" ,tar)
3329 ("gzip" ,gzip)
3330 ("tarball" ,source)))
3331 (home-page "http://jxself.org/grue-hunter.shtml")
3332 (synopsis "Text adventure game")
3333 (description
3334 "Grue Hunter is a text adventure game written in Perl. You must make
3335your way through an underground cave system in search of the Grue. Can you
3336capture it and get out alive?")
3337 (license license:agpl3+)))
f317aeb4 3338
ffed9eab
MB
3339(define-public lierolibre
3340 (package
3341 (name "lierolibre")
3342 (version "0.5")
3343 (source (origin
3344 (method url-fetch)
3345 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3346 version "/+download/lierolibre-"
3347 version ".tar.xz"))
3348 (sha256
3349 (base32
3350 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3351 (patches
3352 (search-patches "lierolibre-check-unaligned-access.patch"
3353 "lierolibre-try-building-other-arch.patch"
3354 "lierolibre-remove-arch-warning.patch"
3355 "lierolibre-newer-libconfig.patch"
3356 "lierolibre-is-free-software.patch"))
3357 (modules '((guix build utils)))
3358 (snippet
3359 '(begin
3360 ;; Delete pre-compiled files.
3361 (delete-file "data/LIERO.CHR")
3362 (delete-file "data/LIERO.SND")
3363 #t))))
3364 (build-system gnu-build-system)
3365 (native-inputs
3366 `(("imagemagick" ,imagemagick)
3367 ("pkg-config" ,pkg-config)
3368 ("util-linux" ,util-linux)
3369 ("sox" ,sox)))
3370 (inputs
3371 `(("boost" ,boost)
3372 ("libconfig" ,libconfig)
3373 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3374 ("zlib" ,zlib)))
3375 (home-page "https://gitlab.com/lierolibre/lierolibre")
3376 (synopsis "Old-school earthworm action game")
3377 (description
3378 "lierolibre is an earthworm action game where you fight another player
3379(or the computer) underground using a wide array of weapons.
3380
3381Features:
3382@itemize
3383@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3384and Game of Tag, plus AI-players without true intelligence!
3385@item Dat nostalgia.
3386@item Extensions via a hidden F1 menu:
3387@itemize
3388@item Replays
3389@item Game controller support
3390@item Powerlevel palettes
3391@end itemize
3392@item Ability to write game variables to plain text files.
3393@item Ability to load game variables from both EXE and plain text files.
3394@item Scripts to extract and repack graphics, sounds and levels.
3395@end itemize
3396
3397To switch between different window sizes, use F6, F7 and F8, to switch to
3398fullscreen, use F5 or Alt+Enter.")
3399 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3400 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3401
f317aeb4
KK
3402(define-public warzone2100
3403 (package
3404 (name "warzone2100")
f475b90c 3405 (version "3.2.3")
d8f4aefe
TGR
3406 (source
3407 (origin
3408 (method url-fetch)
3409 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3410 "unsupported/Warzone2100-"
3411 (version-major+minor version) "/" version
3412 "/warzone2100-" version ".tar.xz"))
3413 (sha256
3414 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3415 (build-system gnu-build-system)
3416 (arguments
f475b90c
KK
3417 `(#:configure-flags '("--with-distributor=Guix")
3418 #:phases
c5d17d50
RW
3419 (modify-phases %standard-phases
3420 (add-after 'unpack 'link-tests-with-qt
3421 (lambda _
3422 (substitute* "tests/Makefile.in"
3423 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3424 (string-append prefix "$(QT5_LIBS) ")))
3425 #t))
f475b90c 3426 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3427 (lambda _
f475b90c
KK
3428 (substitute* "tests/ivis_linktest.cpp"
3429 (("iV_DrawTextRotated.*;")
3430 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3431 "100, 100, 0.0f, font_regular);")))
c5d17d50 3432 #t)))))
f475b90c
KK
3433 (native-inputs `(("gettext" ,gettext-minimal)
3434 ("pkg-config" ,pkg-config)
f317aeb4
KK
3435 ("unzip" ,unzip)
3436 ("zip" ,zip)))
3437 (inputs `(("fontconfig" ,fontconfig)
3438 ("freetype" ,freetype)
3439 ("fribidi" ,fribidi)
3440 ("glew" ,glew)
f475b90c 3441 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3442 ("libtheora" ,libtheora)
3443 ("libvorbis" ,libvorbis)
3444 ("libxrandr" ,libxrandr)
3445 ("openal" ,openal)
3446 ("physfs" ,physfs)
77c729ba
RW
3447 ("qtbase" ,qtbase)
3448 ("qtscript" ,qtscript)
c5d17d50 3449 ("openssl" ,openssl)
c5d17d50 3450 ("sdl2" ,sdl2)))
f317aeb4
KK
3451 (home-page "http://wz2100.net")
3452 (synopsis "3D Real-time strategy and real-time tactics game")
3453 (description
3454 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3455modes. An extensive tech tree with over 400 different technologies, combined
3456with the unit design system, allows for a wide variety of possible units and
3457tactics.")
3458 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3459 (license (list license:bsd-3
3460 license:cc0
3461 license:cc-by-sa3.0
3462 license:expat
3463 license:gpl2+
3464 license:lgpl2.1+))))
4b670539 3465
649220ad 3466(define-public starfighter
4b670539 3467 (package
649220ad 3468 (name "starfighter")
8172ab2d 3469 (version "2.0.0.3")
4b670539 3470 (source (origin
8172ab2d
KK
3471 (method url-fetch)
3472 (uri (string-append
3473 "https://github.com/pr-starfighter/starfighter/releases"
3474 "/download/v" version "/starfighter-"
3475 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3476 (sha256
3477 (base32
8172ab2d 3478 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3479 (build-system gnu-build-system)
4b670539 3480 (native-inputs
8172ab2d 3481 `(("pkg-config" ,pkg-config)))
4b670539 3482 (inputs
1fe84f5d
KK
3483 `(("pango" ,pango)
3484 ("sdl2" ,sdl2)
4b670539 3485 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3486 ("sdl2-mixer" ,sdl2-mixer)
3487 ("sdl2-ttf" ,sdl2-ttf)))
3488 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3489 (synopsis "2D scrolling shooter game")
3490 (description
3491 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3492dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3493their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3494way, you will encounter new foes, make new allies, and assist local rebels
3495in strikes against the evil corporation.")
3496 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3497 (license (list license:gpl3+
3498 license:cc-by3.0
3499 license:cc-by-sa3.0
3500 license:cc0
3501 license:public-domain))))
35e2e495 3502
649220ad
NG
3503(define-public project-starfighter
3504 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3505
35e2e495
KK
3506(define-public chromium-bsu
3507 (package
3508 (name "chromium-bsu")
08722837 3509 (version "0.9.16.1")
35e2e495
KK
3510 (source (origin
3511 (method url-fetch)
e464bd60 3512 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3513 "/Chromium B.S.U. source code/"
e464bd60 3514 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3515 (sha256
3516 (base32
08722837 3517 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3518 (build-system gnu-build-system)
35e2e495 3519 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3520 (inputs `(("gettext" ,gettext-minimal)
08722837 3521 ("glu" ,glu)
35e2e495
KK
3522 ("quesoglc" ,quesoglc)
3523 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3524 (home-page "http://chromium-bsu.sourceforge.net/")
3525 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3526 (description
3527 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3528are responsible for delivering supplies to the troops on the front line. Your
3529ship has a small fleet of robotic fighters which you control from the relative
3530safety of the Chromium vessel.")
3531 ;; Clarified Artistic License for everything but sound, which is covered
3532 ;; by the Expat License.
3533 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3534
3535(define-public tuxpaint
3536 (package
3537 (name "tuxpaint")
c6aa2ee2 3538 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3539 (source
3540 (origin
3541 (method url-fetch)
3542 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3543 version "/tuxpaint-" version ".tar.gz"))
3544 (sha256
3545 (base32
c6aa2ee2 3546 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3547 (modules '((guix build utils)))
3548 (snippet
3549 '(begin
3550 ;; Remove win32 directory which contains binary dll's and the
3551 ;; deprecated visualc directory.
3552 (for-each delete-file-recursively '("win32" "visualc"))
3553 (substitute* "Makefile"
3554 ;; Do not rely on $(GPERF) being an absolute file name
3555 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3556 "$(GPERF) --version >/dev/null 2>&1"))
3557 #t))
9b1ada4e
EB
3558 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3559 (build-system gnu-build-system)
3560 (native-inputs
3561 `(("gperf" ,gperf)
3562 ("pkg-config" ,pkg-config)))
3563 (inputs
3564 `(("cairo" ,cairo)
3565 ("fribidi" ,fribidi)
b94a6ca0 3566 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3567 ("libpng" ,libpng)
3568 ("librsvg" ,librsvg)
3569 ("libpaper" ,libpaper)
3570 ("netpbm" ,netpbm)
3571 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3572 ;; TODO: Use system fonts rather than those in data/fonts
3573 (arguments
c6aa2ee2 3574 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3575 "GPERF=gperf" "CC=gcc"
3576 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3577 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3578 "KDE_PREFIX=$(PREFIX)/share/applications"
3579 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3580 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3581 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3582 #:tests? #f ;No tests
3583 #:phases (modify-phases %standard-phases
3584 (delete 'configure) ;no configure phase
f88c0ab8
EB
3585 (add-before 'install 'no-sys-cache
3586 (lambda _ ;do not rebuild system conf cache
3587 (substitute* "Makefile"
3588 (("kbuildsycoca4") ""))
3589 #t))
9b1ada4e
EB
3590 (add-after 'install 'fix-import
3591 (lambda* (#:key inputs outputs #:allow-other-keys)
3592 (let* ((out (assoc-ref outputs "out"))
3593 (net (assoc-ref inputs "netpbm"))
3594 (tpi (string-append out "/bin/tuxpaint-import")))
3595 (substitute* tpi
3596 ;; Point to installation prefix so that the default
3597 ;; configure file is found.
3598 (("/usr/local") out))
3599 ;; tuxpaint-import uses a bunch of programs from
3600 ;; netpbm, so make sure it knows where those are
3601 (wrap-program tpi
3602 `("PATH" ":" prefix
3603 (,(string-append net "/bin"))))))))))
3604 (native-search-paths
3605 (list (search-path-specification
3606 (variable "TUXPAINT_STAMPS_PATH")
3607 (files '("share/tuxpaint/stamps")))))
3608 (home-page "http://www.tuxpaint.org")
3609 (synopsis "Drawing software for children")
3610 (description
3611 "Tux Paint is a free drawing program designed for young children (kids
3612ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3613and an encouraging cartoon mascot who helps guide children as they use the
3614program. It provides a blank canvas and a variety of drawing tools to help
3615your child be creative.")
3616 (license license:gpl2+)))
c3d850f2
EB
3617
3618(define-public tuxpaint-stamps
3619 (package
3620 (name "tuxpaint-stamps")
6ade82c2 3621 (version "2018.09.01")
c3d850f2
EB
3622 (source
3623 (origin
3624 (method url-fetch)
3625 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3626 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3627 "/tuxpaint-stamps-" version ".tar.gz"))
3628 (sha256
3629 (base32
6ade82c2 3630 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3631 (build-system trivial-build-system)
3632 (native-inputs
3633 `(("tar" ,tar)
3634 ("gzip" ,gzip)))
3635 (arguments
3636 `(#:modules ((guix build utils))
3637 #:builder (begin
3638 (use-modules (guix build utils))
3639 (setenv "PATH"
3640 (string-append
3641 (assoc-ref %build-inputs "tar") "/bin" ":"
3642 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3643 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3644 (chdir (string-append ,name "-" ,version))
3645 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3646 (mkdir-p dir)
e3cfef22
MW
3647 (copy-recursively "stamps" dir))
3648 #t)))
c3d850f2
EB
3649 (home-page (package-home-page tuxpaint))
3650 (synopsis "Stamp images for Tux Paint")
3651 (description
3652 "This package contains a set of \"Rubber Stamp\" images which can be used
3653with the \"Stamp\" tool within Tux Paint.")
3654 (license license:gpl2+)))
d2563973
EB
3655
3656(define-public tuxpaint-config
3657 (package
3658 (name "tuxpaint-config")
7b05e957 3659 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3660 (source
3661 (origin
3662 (method url-fetch)
3663 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3664 version "/tuxpaint-config-" version ".tar.gz"))
3665 (sha256
3666 (base32
7b05e957 3667 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3668 (build-system gnu-build-system)
3669 (native-inputs
b94a6ca0 3670 `(("gettext" ,gettext-minimal)))
d2563973
EB
3671 (inputs
3672 `(("fltk" ,fltk)
3673 ("libpaper" ,libpaper)
3674 ;; TODO: Should the following be propagated by fltk?
3675 ("libx11" ,libx11)
3676 ("libxft" ,libxft)
3677 ("mesa" ,mesa)))
3678 (arguments
7b05e957 3679 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3680 "CONFDIR=/etc/tuxpaint" ;don't write to store
3681 ,(string-append "PREFIX=" %output)
3682 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3683 #:parallel-build? #f ;race conditions
d2563973
EB
3684 #:tests? #f ;no tests
3685 #:phases (modify-phases %standard-phases
3686 (delete 'configure) ;no configure phase
3687 (add-before 'install 'gzip-no-name
3688 (lambda* _
3689 (substitute* "Makefile"
3690 ;; tuxpaint-config compresses its own documentation;
3691 ;; make sure it uses flags for reproducibility.
3692 (("gzip") "gzip --no-name"))))
3693 (add-before 'install 'make-install-dirs
3694 (lambda* (#:key outputs #:allow-other-keys)
3695 (let ((out (assoc-ref outputs "out")))
3696 (mkdir-p (string-append out "/bin"))
3697 #t))))))
3698 (home-page (package-home-page tuxpaint))
3699 (synopsis "Configure Tux Paint")
3700 (description
3701 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3702 (license license:gpl2))) ;no "or later" present
826a3ca2 3703
3704(define-public supertux
3705 (package
3706 (name "supertux")
8698d986 3707 (version "0.6.0")
826a3ca2 3708 (source (origin
3709 (method url-fetch)
d910d584
RW
3710 (uri (string-append "https://github.com/SuperTux/supertux/"
3711 "releases/download/v" version "/SuperTux-v"
3712 version "-Source.tar.gz"))
8698d986 3713 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3714 (sha256
3715 (base32
8698d986
KK
3716 "1h1s4abirkdv4ag22zvyk6zkk64skqbjmcnnba67ps4hdzxfbhy4"))
3717 (patches
57d87f43 3718 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3719 (arguments
3720 '(#:tests? #f
3721 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3722 "-DUSE_SYSTEM_PHYSFS=ON")
3723 #:phases
3724 (modify-phases %standard-phases
3725 (add-after 'unpack 'patch-squirrel-path
3726 (lambda* (#:key inputs #:allow-other-keys)
3727 (let ((squirrel (assoc-ref inputs "squirrel")))
3728 (substitute* "CMakeLists.txt"
3729 (("set\\(SQUIRREL_PREFIX.*")
3730 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3731 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3732 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3733 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3734 #t)))))
826a3ca2 3735 (build-system cmake-build-system)
3736 (inputs `(("sdl2" ,sdl2)
3737 ("sdl2-image" ,sdl2-image)
3738 ("sdl2-mixer" ,sdl2-mixer)
3739 ("openal" ,openal)
3740 ("mesa" ,mesa)
3741 ("glew" ,glew)
3742 ("libvorbis" ,libvorbis)
3743 ("libogg" ,libogg)
3744 ("physfs" ,physfs)
3745 ("curl" ,curl)
8698d986
KK
3746 ("boost" ,boost)
3747 ("freetype" ,freetype)
3748 ("squirrel" ,squirrel)))
826a3ca2 3749 (native-inputs `(("pkg-config" ,pkg-config)))
3750 (synopsis "2D platformer game")
3751 (description "SuperTux is a free classic 2D jump'n run sidescroller game
3752in a style similar to the original Super Mario games covered under
3753the GNU GPL.")
cac6c3ba 3754 (home-page "https://supertux.org/")
826a3ca2 3755 (license license:gpl3+)))
b3de5ff2 3756
751c7040 3757(define-public tintin++
3758 (package
3759 (name "tintin++")
fffe4870
TGR
3760 (version "2.01.7")
3761 (source
3762 (origin
3763 (method url-fetch)
3764 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
3765 (version-major+minor version)
3766 "/tintin-" version ".tar.gz"))
3767 (sha256
3768 (base32
3769 "033n84pyxml3n3gd4dq0497n9w331bnrr1gppwipz9ashmq8jz7v"))))
751c7040 3770 (inputs
3771 `(("gnutls" ,gnutls)
3772 ("pcre" ,pcre)
3773 ("readline" ,readline)
3774 ("zlib" ,zlib)))
3775 (arguments
fffe4870 3776 '(#:tests? #f ; no test suite
751c7040 3777 #:phases
3778 (modify-phases %standard-phases
3779 ;; The source is in tt/src.
3780 (add-before 'configure 'chdir
3781 (lambda _
3782 (chdir "src")
3783 #t)))))
3784 (build-system gnu-build-system)
3785 (home-page "http://tintin.sourceforge.net/")
3786 (synopsis "MUD client")
3787 (description
5b9c2690
KK
3788 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3789Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3790options used by MUDs, as well as those required to login via telnet on
3791Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
751c7040 3792 (license license:gpl2+)))
3793
b3de5ff2
JN
3794(define-public laby
3795 (package
3796 (name "laby")
3797 (version "0.6.4")
3798 (source
6484b091
EF
3799 (origin (method git-fetch)
3800 (uri (git-reference
3801 (url "https://github.com/sgimenez/laby.git")
3802 (commit (string-append name "-" version))))
3803 (file-name (git-file-name name version))
b3de5ff2
JN
3804 (sha256
3805 (base32
6484b091 3806 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3807 (patches (search-patches "laby-make-install.patch"))))
3808 (build-system gnu-build-system)
3809 (inputs
3810 `(("lablgtk" ,lablgtk)
3811 ("ocaml" ,ocaml)
a8f52ad7
TGR
3812 ("ocaml-findlib" ,ocaml-findlib)
3813 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3814 (arguments
3815 '(#:phases
3816 (modify-phases %standard-phases
3817 (delete 'configure)
a8f52ad7
TGR
3818 (add-before 'build 'allow-unsafe-strings
3819 ;; Fix a build failure with ocaml >=4.06.0.
3820 ;; See <https://github.com/sgimenez/laby/issues/53>.
3821 (lambda _
3822 (setenv "OCAMLPARAM" "safe-string=0,_")
3823 #t))
3824 (add-before 'build 'set-library-path
b3de5ff2
JN
3825 (lambda* (#:key inputs #:allow-other-keys)
3826 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3827 (setenv "LD_LIBRARY_PATH"
3828 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3829 #:tests? #f ; no 'check' target
3830 #:make-flags
3831 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3832 (home-page "https://sgimenez.github.io/laby/")
3833 (synopsis "Programming game")
3834 (description "Learn programming, playing with ants and spider webs ;-)
3835Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3836Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3837programmers may also add their own favorite language.")
3838 (license license:gpl3+)))
b0488fe5
EF
3839
3840(define-public bambam
3841 (package
3842 (name "bambam")
8e77da0d 3843 (version "1.0.0")
b0488fe5
EF
3844 (source
3845 (origin
63e708f4
TGR
3846 (method git-fetch)
3847 (uri (git-reference
3848 (url "https://github.com/porridge/bambam")
8e77da0d 3849 (commit (string-append "v" version))))
63e708f4 3850 (file-name (git-file-name name version))
b0488fe5 3851 (sha256
8e77da0d 3852 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
3853 (build-system python-build-system)
3854 (arguments
8e77da0d 3855 `(#:tests? #f ; no tests
b0488fe5
EF
3856 #:phases
3857 (modify-phases %standard-phases
8e77da0d 3858 (delete 'build) ; nothing to build
b0488fe5
EF
3859 (replace 'install
3860 (lambda* (#:key outputs #:allow-other-keys)
3861 (let* ((out (assoc-ref outputs "out"))
3862 (bin (string-append out "/bin"))
3863 (share (string-append out "/share")))
3864 (mkdir-p bin)
3865 (copy-file "bambam.py" (string-append bin "/bambam"))
3866 (install-file "bambam.6" (string-append share "/man/man6"))
3867 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
3868 #t)))))
3869 (inputs
3870 `(("python-pygame" ,python-pygame)))
3871 (home-page "https://github.com/porridge/bambam")
46a06224 3872 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
3873 (description "Bambam is a simple baby keyboard (and gamepad) masher
3874application that locks the keyboard and mouse and instead displays bright
3875colors, pictures, and sounds.")
3876 (license license:gpl3+)))
6b87c10f 3877
3110c74b
TGR
3878(define-public mrrescue
3879 (package
3880 (name "mrrescue")
3881 (version "1.02e")
3882 (source (origin
3883 (method url-fetch)
3884 (uri (string-append
3885 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 3886 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
3887 (file-name (string-append name "-" version ".love"))
3888 (sha256
3889 (base32
3890 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
3891 (build-system trivial-build-system)
3892 (arguments
8893218a 3893 `(#:modules ((guix build utils))
3110c74b
TGR
3894 #:builder
3895 (begin
3896 (use-modules (guix build utils))
8893218a
TGR
3897 (let* ((out (assoc-ref %outputs "out"))
3898 (script (string-append out "/bin/" ,name))
3899 (data (string-append out "/share/" ,name))
3900 (source (assoc-ref %build-inputs "source"))
3901 (unzip (string-append (assoc-ref %build-inputs "unzip")
3902 "/bin/unzip"))
3903 (patch (string-append (assoc-ref %build-inputs "patch")
3904 "/bin/patch"))
3905 (bash (string-append (assoc-ref %build-inputs "bash")
3906 "/bin/bash"))
3907 (love (string-append (assoc-ref %build-inputs "love")
3908 "/bin/love")))
3909
3910 (mkdir-p (dirname script))
3911 (with-output-to-file script
3110c74b
TGR
3912 (lambda ()
3913 (format #t "#!~a~%" bash)
8893218a
TGR
3914 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
3915 (chmod script #o755)
3916
3917 ;; The better way to package this game would be to install *only* the
3918 ;; script above, pointing to the unextracted .love file in the store.
3919 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
3920 ;; Instead of extracting the .love file, patching it, and re-zipping
3921 ;; it to the store, simply point the script to the extracted patched
3922 ;; data directory directly.
3923 (mkdir-p data)
3924 (with-directory-excursion data
3925 (invoke unzip source)
3926 (invoke patch "-p1" "-i"
3927 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 3928 #t))))
8893218a
TGR
3929 (native-inputs
3930 `(("unzip" ,unzip)
3931 ("patch" ,patch)
3932 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
3933 (inputs
3934 `(("bash" ,bash)
3935 ("love" ,love)))
3936 (home-page "http://tangramgames.dk/games/mrrescue")
3937 (synopsis "Arcade-style fire fighting game")
3938 (description
3939 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
3940civilians from burning buildings. The game features fast-paced fire
3941extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
3942throwing people around in pseudo-randomly generated buildings.")
3943 (license (list license:zlib ; for source code
3944 license:cc-by-sa3.0)))) ; for graphics and music assets
3945
cd1869cd
KK
3946(define-public hyperrogue
3947 (package
3948 (name "hyperrogue")
81d7cd59 3949 (version "11.2d")
f8279ba4
KK
3950 ;; When updating this package, be sure to update the "hyperrogue-data"
3951 ;; origin in native-inputs.
cd1869cd
KK
3952 (source (origin
3953 (method url-fetch)
3954 (uri (string-append
a01aea7d
TGR
3955 "https://www.roguetemple.com/z/hyper/hyperrogue"
3956 (string-join (string-split version #\.) "")
f8279ba4 3957 "-src.tgz"))
cd1869cd
KK
3958 (sha256
3959 (base32
81d7cd59 3960 "1b532s94zv1jsni7bvh848m42arxcclsr0x3n7c689iamwqzrxmn"))))
cd1869cd
KK
3961 (build-system gnu-build-system)
3962 (arguments
f8279ba4 3963 `(#:tests? #f ; no check target
82402f76
KK
3964 #:make-flags '("HYPERROGUE_USE_GLEW=1"
3965 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
3966 #:phases
3967 (modify-phases %standard-phases
3968 (add-after 'set-paths 'set-sdl-paths
3969 (lambda* (#:key inputs #:allow-other-keys)
3970 (setenv "CPATH"
b6c2805c
MB
3971 (string-append (getenv "CPATH") ":"
3972 (assoc-ref inputs "sdl-union")
cd1869cd 3973 "/include/SDL"))))
cd1869cd
KK
3974 (replace 'configure
3975 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
3976 (let* ((out (assoc-ref outputs "out"))
3977 (share-dir (string-append out "/share/hyperrogue"))
3978 (dejavu-dir (string-append
3979 (assoc-ref inputs "font-dejavu")
3980 "/share/fonts/truetype"))
3981 (dejavu-font "DejaVuSans-Bold.ttf")
3982 (music-file "hyperrogue-music.txt"))
1bb962b4 3983 ;; Fix font and music paths.
89c9445a 3984 (substitute* "basegraph.cpp"
f8279ba4
KK
3985 ((dejavu-font)
3986 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
3987 (substitute* music-file
3988 (("\\*/")
82402f76
KK
3989 (string-append share-dir "/sounds/")))
3990 (substitute* "sound.cpp"
3991 (("musicfile = \"\"")
3992 (string-append "musicfile = \""
3993 share-dir "/" music-file "\"")))
3994 ;; Disable build machine CPU optimizations and warnings treated
3995 ;; as errors.
3996 (substitute* "Makefile"
3997 (("-march=native") "")
3998 (("-Werror") "")))
cd1869cd
KK
3999 #t))
4000 (replace 'install
4001 (lambda* (#:key inputs outputs #:allow-other-keys)
4002 (let* ((out (assoc-ref outputs "out"))
4003 (bin (string-append out "/bin"))
4004 (share-dir (string-append out "/share/hyperrogue")))
4005 (mkdir-p bin)
82402f76 4006 (install-file "hyperrogue" bin)
f8279ba4
KK
4007 (install-file "hyperrogue-music.txt" share-dir))
4008 #t))
4009 (add-after 'install 'install-data
4010 (lambda* (#:key inputs outputs #:allow-other-keys)
4011 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4012 (out (assoc-ref outputs "out"))
4013 (sounds (string-append out "/share/hyperrogue/sounds"))
4014 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4015 ;; Extract media license information into sounds directory.
4016 (invoke unzip "-j" data
4017 (string-append
4018 "hyperrogue"
4019 (string-join (string-split ,version #\.) "")
4020 "/sounds/credits.txt") "-d" sounds)
4021 ;; Extract sounds and music into sounds directory.
4022 (invoke "unzip" "-j" data
4023 (string-append
4024 "hyperrogue"
4025 (string-join (string-split ,version #\.) "")
4026 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4027 (native-inputs
4028 `(("hyperrogue-data"
4029 ,(origin
4030 (method url-fetch)
4031 (uri
4032 (string-append
07de94d6 4033 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4034 (string-join (string-split version #\.) "")
4035 "-win.zip"))
4036 (sha256
4037 (base32
81d7cd59 4038 "0vq4l1xaqpjj3hmxn1vn2b3bbkn1hrag42ck9f30blinv347bwhf"))))
f8279ba4 4039 ("unzip" ,unzip)))
cd1869cd
KK
4040 (inputs
4041 `(("font-dejavu" ,font-dejavu)
4042 ("glew" ,glew)
4043 ("libpng" ,libpng)
4044 ("sdl-union" ,(sdl-union (list sdl
4045 sdl-gfx
4046 sdl-mixer
4047 sdl-ttf)))))
4cae7e67 4048 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4049 (synopsis "Non-euclidean graphical rogue-like game")
4050 (description
4051 "HyperRogue is a game in which the player collects treasures and fights
4052monsters -- rogue-like but for the fact that it is played on the hyperbolic
4053plane and not in euclidean space.
4054
4055In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4056are home to particular creatures and may be subject to their own rules of
4057\"physics\".
cd1869cd 4058
a53a6b6f
TGR
4059While the game can use ASCII characters to display the the classical rogue
4060symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4061 (license (list license:bsd-3 ; glew.c, mtrand.*
4062 license:cc-by-sa3.0 ; music
4063 license:cc-by-sa4.0 ; sounds
4064 license:cc0
4065 license:public-domain ; direntx.*, some sounds
4066 license:zlib ; savepng.*
cd1869cd 4067 license:gpl2+)))) ; remaining files
a56145e1
SW
4068
4069(define-public kobodeluxe
4070 (package
4071 (name "kobodeluxe")
4072 (version "0.5.1")
4073 (source (origin
4074 (method url-fetch)
4075 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4076 version ".tar.bz2"))
4077 (sha256
4078 (base32
4079 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4080 (patches (search-patches
4081 "kobodeluxe-const-charp-conversion.patch"
4082 "kobodeluxe-enemies-pipe-decl.patch"
4083 "kobodeluxe-graphics-window-signed-char.patch"
4084 "kobodeluxe-manpage-minus-not-hyphen.patch"
4085 "kobodeluxe-midicon-segmentation-fault.patch"
4086 "kobodeluxe-paths.patch"))))
4087 (build-system gnu-build-system)
4088 (arguments
4089 '(#:configure-flags
4090 (list (string-append "CPPFLAGS=-I"
4091 (assoc-ref %build-inputs "sdl-union")
4092 "/include/SDL"))))
4093 (inputs `(("sdl-union" ,(sdl-union (list sdl sdl-image)))))
4094 (synopsis "Shooter with space station destruction")
4095 (description
4096 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4097for Un*x systems with X11.")
4098 (home-page "http://olofson.net/kobodl/")
4099 (license license:gpl2+)))
5430dbd9
AI
4100
4101(define-public freeciv
4102 (package
4103 (name "freeciv")
d36b98ad 4104 (version "2.6.0")
5430dbd9
AI
4105 (source
4106 (origin
4107 (method url-fetch)
b92e8da0
EF
4108 (uri (list (string-append
4109 "http://files.freeciv.org/stable/freeciv-"
4110 version ".tar.bz2")
4111 (string-append
4112 "mirror://sourceforge/freeciv/Freeciv%20"
4113 (version-major+minor version) "/" version
4114 "/freeciv-" version ".tar.bz2")))
5430dbd9
AI
4115 (sha256
4116 (base32
d36b98ad 4117 "16f9wsnn7073s6chzbm3819swd0iw019p9nrzr3diiynk28kj83w"))))
5430dbd9
AI
4118 (build-system gnu-build-system)
4119 (inputs
4120 `(("curl" ,curl)
4121 ("cyrus-sasl" ,cyrus-sasl)
4122 ("gtk+" ,gtk+)
4123 ("sdl-mixer" ,sdl-mixer)
4124 ("zlib" ,zlib)))
4125 (native-inputs
4126 `(("pkg-config" ,pkg-config)))
4127 (home-page "http://www.freeciv.org/")
4128 (synopsis "Turn based empire building strategy game")
4129 (description "Freeciv is a turn based empire building strategy game
4130inspired by the history of human civilization. The game commences in
4131prehistory and your mission is to lead your tribe from the Stone Age
4132to the Space Age.")
4133 (license license:gpl2+)))
345504c7 4134
4135(define-public no-more-secrets
4136 (package
4137 (name "no-more-secrets")
4c4f1871 4138 (version "0.3.3")
345504c7 4139 (source
4140 (origin
146a4459
TGR
4141 (method git-fetch)
4142 (uri (git-reference
4143 (url "https://github.com/bartobri/no-more-secrets.git")
4144 (commit (string-append "v" version))))
4145 (file-name (git-file-name name version))
345504c7 4146 (sha256
146a4459 4147 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4148 (build-system gnu-build-system)
4149 (arguments
4150 `(#:tests? #f
4151 #:make-flags (list "CC=gcc" "all-ncurses"
4152 (string-append "prefix="
4153 (assoc-ref %outputs "out")))
4154 #:phases
4155 (modify-phases %standard-phases
4156 (delete 'configure))))
4157 (inputs
4158 `(("ncurses" ,ncurses)))
4159 (home-page "https://github.com/bartobri/no-more-secrets")
4160 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4161 (description
4162 "@code{No More Secrets} provides a command line tool called \"nms\"
4163that recreates the famous data decryption effect seen on screen in the 1992
4164movie \"Sneakers\".
4165
4166This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4167it will apply the hollywood effect, initially showing encrypted data, then
4168starting a decryption sequence to reveal the original plaintext characters.")
4169 (license license:expat)))
fb731c92
AI
4170
4171(define-public megaglest-data
4172 (package
4173 (name "megaglest-data")
4174 (version "3.13.0")
4175 (source
4176 (origin
4177 (method url-fetch)
4178 (uri (string-append
4179 "https://github.com/MegaGlest/megaglest-data"
4180 "/releases/download/" version "/megaglest-data-"
4181 version ".tar.xz"))
4182 (sha256
4183 (base32
4184 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4185 (build-system cmake-build-system)
4186 (arguments
4187 `(#:tests? #f))
4188 (home-page "https://megaglest.org/")
4189 (synopsis "Data files for MegaGlest")
4190 (description "This package contains the data files required for MegaGlest.")
4191 (license license:cc-by-sa3.0)))
0b608ec4
AI
4192
4193(define-public megaglest
4194 (package
4195 (name "megaglest")
4196 (version "3.13.0")
4197 (source
4198 (origin
4199 (method url-fetch)
4200 (uri (string-append
4201 "https://github.com/MegaGlest/megaglest-source"
4202 "/releases/download/" version "/megaglest-source-"
4203 version ".tar.xz"))
4204 (sha256
4205 (base32
4206 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4207 (build-system cmake-build-system)
4208 (inputs
4209 `(("curl" ,curl)
4210 ("fontconfig" ,fontconfig)
4211 ("ftgl" ,ftgl)
4212 ("glew" ,glew)
4213 ("libjpeg-turbo" ,libjpeg-turbo)
4214 ("megaglest-data" ,megaglest-data)
4215 ("mesa" ,mesa)
4216 ("miniupnpc" ,miniupnpc)
4217 ("openal" ,openal)
4218 ("libircclient" ,libircclient)
4219 ("libpng" ,libpng)
4220 ("libvorbis" ,libvorbis)
4221 ("lua" ,lua)
4222 ("sdl2" ,sdl2)
4223 ("wxwidgets" ,wxwidgets)))
4224 (native-inputs
4225 `(("cppunit" ,cppunit)
4226 ("pkg-config" ,pkg-config)))
4227 (arguments
4228 `(#:configure-flags
4229 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4230 (assoc-ref %build-inputs "megaglest-data")
4231 "/share/megaglest")
4232 "-DBUILD_MEGAGLEST_TESTS=ON")
4233 #:phases
4234 (modify-phases %standard-phases
4235 (add-after 'unpack 'fix-ini-search-path
4236 (lambda* (#:key outputs #:allow-other-keys)
4237 (substitute* "source/glest_game/global/config.cpp"
4238 (("/usr/share/megaglest/")
4239 (string-append (assoc-ref outputs "out")
4240 "/share/megaglest/"))))))
4241 #:test-target "megaglest_tests"))
4242 (home-page "https://megaglest.org/")
4243 (synopsis "3D real-time strategy (RTS) game")
4244 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4245game, where you control the armies of one of seven different factions: Tech,
4246Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4247 (license license:gpl2+)))
6bb9c854
RW
4248
4249(define-public freegish
4250 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4251 (revision "1"))
4252 (package
4253 (name "freegish")
4254 (version (string-append "0-" revision "." (string-take commit 9)))
4255 (source (origin
4256 (method git-fetch)
4257 (uri (git-reference
4258 (url "https://github.com/freegish/freegish.git")
4259 (commit commit)))
661ad6f0 4260 (file-name (git-file-name name version))
6bb9c854
RW
4261 (sha256
4262 (base32
4263 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4264 (modules '((guix build utils)))
4265 ;; The audio files in the "music" directory are licensed under
4266 ;; CC-BY-NC, so we delete them.
4267 (snippet
4268 '(begin
4269 (delete-file-recursively "music")
4270 #t))))
4271 (build-system cmake-build-system)
4272 (arguments
4273 `(#:tests? #f ; no tests included
4274 #:configure-flags
4275 (list "-DCMAKE_INSTALL_FHS=ON")
4276 #:phases
4277 (modify-phases %standard-phases
4278 (add-after 'unpack 'set-DATAPATH
4279 (lambda* (#:key outputs #:allow-other-keys)
4280 (substitute* "CMakeLists.txt"
4281 (("^option\\(INSTALL_FHS" line)
4282 (string-append "add_definitions(-DDATAPATH=\""
4283 (assoc-ref outputs "out") "/share/freegish\")\n"
4284 line)))
4285 #t)))))
4286 (inputs
4287 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4288 ("openal" ,openal)
4289 ("libvorbis" ,libvorbis)
4290 ("libogg" ,libogg)
4291 ("mesa" ,mesa)
4292 ("libpng" ,libpng)
4293 ("zlib" ,zlib)))
4294 (home-page "https://github.com/freegish/freegish")
4295 (synopsis "Side-scrolling physics platformer with a ball of tar")
4296 (description "In FreeGish you control Gish, a ball of tar who lives
4297happily with his girlfriend Brea, until one day a mysterious dark creature
4298emerges from a sewer hole and pulls her below ground.")
4299 ;; The textures are available under the Expat license. All other assets
4300 ;; (including levels) are covered under CC-BY-SA or public domain. The
4301 ;; source code is under GPLv2+.
4302 (license (list license:gpl2+
4303 license:expat
4304 license:public-domain
4305 license:cc-by-sa3.0)))))
f0f7bf95
RW
4306
4307(define-public cdogs-sdl
6e65eb3c
TGR
4308 (package
4309 (name "cdogs-sdl")
acfb7357 4310 (version "0.6.9")
6e65eb3c
TGR
4311 (source (origin
4312 (method git-fetch)
4313 (uri (git-reference
4314 (url "https://github.com/cxong/cdogs-sdl.git")
4315 (commit version)))
4316 (file-name (git-file-name name version))
4317 (sha256
4318 (base32
acfb7357 4319 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4320 (build-system cmake-build-system)
4321 (arguments
4322 `(#:configure-flags
4323 (list (string-append "-DCDOGS_DATA_DIR="
4324 (assoc-ref %outputs "out")
4325 "/share/cdogs-sdl/"))))
4326 (inputs
4327 `(("mesa" ,mesa)
4328 ("sdl2" ,sdl2)
4329 ("sdl2-image" ,sdl2-image)
4330 ("sdl2-mixer" ,sdl2-mixer)))
4331 (home-page "https://cxong.github.io/cdogs-sdl/")
4332 (synopsis "Classic overhead run-and-gun game")
4333 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4334supporting up to 4 players in co-op and deathmatch modes. Customize your
4335player, choose from many weapons, and blast, slide and slash your way through
4336over 100 user-created campaigns.")
6e65eb3c
TGR
4337 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4338 ;; CC0/CC-BY/CC-BY-SA for assets.
4339 (license (list license:gpl2+
4340 license:bsd-2
4341 license:bsd-3
4342 license:cc0
4343 license:cc-by3.0
4344 license:cc-by-sa3.0))))
bd71525b 4345
649220ad 4346(define-public kiki
bd71525b 4347 (package
649220ad 4348 (name "kiki")
bd71525b
RW
4349 (version "1.0.2")
4350 (source (origin
4351 (method url-fetch)
4352 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4353 version "/kiki-" version "-src.tgz"))
4354 (sha256
4355 (base32
4356 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4357 (modules '((guix build utils)))
4358 (snippet
4359 '(begin
4360 (for-each delete-file (find-files "." "\\.dll$"))
4361 #t))
4362 (patches
4363 (search-patches "kiki-level-selection-crash.patch"
4364 "kiki-makefile.patch"
4365 "kiki-missing-includes.patch"
4366 "kiki-portability-64bit.patch"))))
4367 (build-system gnu-build-system)
4368 (arguments
4369 `(#:tests? #f ; there are no tests
4370 #:make-flags '("CXX=g++")
4371 #:phases
4372 (modify-phases %standard-phases
4373 (replace 'configure
4374 (lambda* (#:key inputs outputs #:allow-other-keys)
4375 (setenv "CPLUS_INCLUDE_PATH"
4376 (string-append (assoc-ref inputs "sdl-union")
4377 "/include/SDL:"
4378 (assoc-ref inputs "python")
97149c57 4379 "/include/python2.7"))
bd71525b
RW
4380 (substitute* "src/main/main.cpp"
4381 (("#include <SDL.h>" line)
4382 (string-append line "
4383#define K_INCLUDE_GLUT
4384#include \"KIncludeTools.h\""))
4385 (("// initialize SDL" line)
4386 (string-append "glutInit(&argc,argv);\n" line)))
4387 (substitute* "src/main/KikiController.cpp"
4388 (("getenv\\(\"KIKI_HOME\"\\)")
4389 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4390 (substitute* "linux/Makefile"
4391 (("CXXOPTS =" line)
4392 (string-append line " -fpermissive"))
4393 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4394 (("PYTHONHOME =.*")
4395 (string-append "PYTHONHOME = "
4396 (assoc-ref inputs "python")
4397 "/lib/python2.7/"))
4398 (("\\$\\(GLLIBS\\)" line)
4399 (string-append line " -lm -lpython2.7")))
4400 (substitute* "src/main/KikiPythonWidget.h"
4401 (("#define __KikiPythonWidget" line)
4402 (string-append line "\n#include \"KikiPython.h\"")))
4403 #t))
4404 (add-before 'build 'build-kodilib
4405 (lambda* (#:key make-flags #:allow-other-keys)
4406 (with-directory-excursion "kodilib/linux"
ff61aee8 4407 (apply invoke "make" make-flags))))
bd71525b
RW
4408 (add-after 'build-kodilib 'chdir
4409 (lambda _ (chdir "linux") #t))
4410 (replace 'install
4411 (lambda* (#:key outputs #:allow-other-keys)
4412 (let* ((out (assoc-ref outputs "out"))
4413 (bin (string-append out "/bin"))
4414 (share (string-append out "/share/kiki")))
4415 (mkdir-p bin)
4416 (mkdir-p share)
4417 (install-file "kiki" bin)
4418 (copy-recursively "../py" (string-append share "/py"))
4419 (copy-recursively "../sound" (string-append share "/sound"))
4420 #t))))))
4421 (inputs
4422 `(("glu" ,glu)
4423 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4424 ("freeglut" ,freeglut-2.8)
4425 ("sdl-union" ,(sdl-union (list sdl
4426 sdl-mixer
4427 sdl-image)))
4428 ("python" ,python-2)))
4429 (native-inputs
4430 `(("swig" ,swig)))
4431 (home-page "http://kiki.sourceforge.net/")
4432 (synopsis "3D puzzle game")
4433 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4434mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4435small robot living in the nano world, repair its maker.")
4436 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4437 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4438 ;; for a statement from the author.
4439 (license license:public-domain)))
b77e3a1c 4440
649220ad
NG
4441(define-public kiki-the-nano-bot
4442 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4443
b77e3a1c
RW
4444(define-public teeworlds
4445 (package
4446 (name "teeworlds")
7aed8b8a 4447 (version "0.7.2")
b77e3a1c 4448 (source (origin
f9e5caf9
AV
4449 (method git-fetch)
4450 (uri (git-reference
4451 (url "https://github.com/teeworlds/teeworlds.git")
4452 (commit version)))
4453 (file-name (git-file-name name version))
b77e3a1c
RW
4454 (sha256
4455 (base32
7aed8b8a 4456 "15l988qcsqgb6rjais0qd5sd2rjanm2708jmzvkariqzz0d6pb93"))
f9e5caf9
AV
4457 (modules '((guix build utils)
4458 (ice-9 ftw)
4459 (ice-9 regex)
4460 (srfi srfi-1)
4461 (srfi srfi-26)))
4462 (snippet ; remove bundled libraries except md5
4463 '(let ((base-dir "src/engine/external/"))
4464 (for-each (compose (cut delete-file-recursively <>)
4465 (cut string-append base-dir <>))
4466 (remove (cut string-match "(^.)|(^md5$)" <>)
4467 (scandir base-dir)))
b77e3a1c
RW
4468 #t))
4469 (patches
4470 (search-patches "teeworlds-use-latest-wavpack.patch"))))
4471 (build-system gnu-build-system)
4472 (arguments
7aed8b8a 4473 `(#:tests? #f ; no tests included
f9e5caf9
AV
4474 #:modules ((guix build gnu-build-system)
4475 (guix build utils)
4476 (srfi srfi-26))
b77e3a1c
RW
4477 #:phases
4478 (modify-phases %standard-phases
4479 (replace 'configure
4480 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4481 ;; The bundled json-parser uses an old API.
4482 ;; To use the latest non-bundled version, we need to pass the
4483 ;; length of the data in all 'json_parse_ex' calls.
4484 (define (use-latest-json-parser file)
4485 (substitute* file
4486 (("engine/external/json-parser/json\\.h")
4487 "json-parser/json.h")
4488 (("json_parse_ex\\(&JsonSettings, pFileData, aError\\);")
4489 "json_parse_ex(&JsonSettings,
4490 pFileData,
4491 strlen(pFileData),
4492 aError);")))
4493
b77e3a1c
RW
4494 ;; Embed path to assets.
4495 (substitute* "src/engine/shared/storage.cpp"
4496 (("#define DATA_DIR.*")
4497 (string-append "#define DATA_DIR \""
4498 (assoc-ref outputs "out")
4499 "/share/teeworlds/data"
4500 "\"")))
4501
4502 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4503 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4504 (find-files "."))
4505
4506 ;; Do not use bundled libraries.
4507 (substitute* "bam.lua"
f9e5caf9
AV
4508 (("local json = Compile.+$")
4509 "local json = nil
4510settings.link.libs:Add(\"jsonparser\")")
4511 (("local png = Compile.+$")
4512 "local png = nil
4513settings.link.libs:Add(\"pnglite\")")
4514 (("local wavpack = Compile.+$")
4515 "local wavpack = nil
4516settings.link.libs:Add(\"wavpack\")")
4517 (("if config\\.zlib\\.value == 1")
4518 "if config.zlib.value"))
4519 (substitute* "src/engine/client/graphics_threaded.cpp"
4520 (("engine/external/pnglite/pnglite\\.h")
4521 "pnglite.h"))
b77e3a1c 4522 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4523 (("engine/external/wavpack/wavpack\\.h")
4524 "wavpack/wavpack.h"))
4525 (for-each use-latest-json-parser
4526 '("src/game/client/components/countryflags.cpp"
4527 "src/game/client/components/menus_settings.cpp"
4528 "src/game/client/components/skins.cpp"
4529 "src/game/client/localization.cpp"
4530 "src/game/editor/auto_map.h"
4531 "src/game/editor/editor.cpp"))
b77e3a1c
RW
4532 #t))
4533 (replace 'build
4534 (lambda _
f9e5caf9 4535 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4536 (replace 'install
4537 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4538 (let* ((arch ,(system->linux-architecture
4539 (or (%current-target-system)
4540 (%current-system))))
4541 (build (string-append "build/" arch "/release/"))
4542 (data-built (string-append build "data/"))
4543 (out (assoc-ref outputs "out"))
4544 (bin (string-append out "/bin/"))
4545 (data (string-append out "/share/teeworlds/data/")))
4546 (for-each (cut install-file <> bin)
4547 (map (cut string-append build <>)
4548 '("teeworlds" "teeworlds_srv")))
4549 (copy-recursively data-built data)
b77e3a1c 4550 #t))))))
b77e3a1c
RW
4551 (inputs
4552 `(("freetype" ,freetype)
4553 ("glu" ,glu)
f9e5caf9 4554 ("json-parser" ,json-parser)
b77e3a1c 4555 ("mesa" ,mesa)
f9e5caf9
AV
4556 ("pnglite" ,pnglite)
4557 ("sdl2" ,sdl2)
4558 ("sdl2-image" ,sdl2-image)
4559 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4560 ("wavpack" ,wavpack)
4561 ("zlib" ,zlib)))
4562 (native-inputs
4563 `(("bam" ,bam)
f9e5caf9 4564 ("python" ,python-wrapper)
e402a66b 4565 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4566 (home-page "https://www.teeworlds.com")
4567 (synopsis "2D retro multiplayer shooter game")
4568 (description "Teeworlds is an online multiplayer game. Battle with up to
456916 players in a variety of game modes, including Team Deathmatch and Capture
4570The Flag. You can even design your own maps!")
4571 (license license:bsd-3)))
e02f1663 4572
162a4a03
RW
4573(define-public enigma
4574 (package
4575 (name "enigma")
4576 (version "1.21")
4577 (source (origin
4578 (method url-fetch)
4579 (uri (string-append "mirror://sourceforge/enigma-game/"
4580 "Release%20" version "/enigma-"
4581 version ".tar.gz"))
4582 (sha256
4583 (base32
4584 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4585 (build-system gnu-build-system)
4586 (arguments
4587 `(#:configure-flags
4588 (list "--with-system-enet")
4589 #:phases
4590 (modify-phases %standard-phases
4591 (add-after 'unpack 'find-sdl
4592 (lambda _
4593 (substitute* "configure"
4594 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4595 (substitute* '("tools/ttf2bmf.cc"
4596 "lib-src/enigma-core/ecl_font.cc"
4597 "lib-src/enigma-core/ecl_video.cc"
4598 "lib-src/enigma-core/ecl_buffer.hh"
4599 "src/SoundEngine.cc"
4600 "src/SoundEngine.hh"
4601 "src/MusicManager.cc"
4602 "src/MusicManager.hh"
4603 "src/d_models.cc"
4604 "src/main.cc"
4605 "src/network.cc")
4606 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4607 (string-append "#include \"SDL/SDL_" header ".h\"")))
4608 (substitute* "src/main.cc"
4609 (("#include <SDL_(image|ttf|mixer).h>" line header)
4610 (string-append "#include \"SDL/SDL_" header ".h\"")))
4611 #t)))))
4612 (inputs
4613 `(("xerces-c" ,xerces-c)
4614 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4615 ("curl" ,curl)
4616 ("enet" ,enet)))
4617 (native-inputs
4618 `(("pkg-config" ,pkg-config)
4619 ("imagemagick" ,imagemagick)))
340978d7 4620 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4621 (synopsis "Puzzle game with a dexterity component")
4622 (description "Enigma is a puzzle game with 550 unique levels. The object
4623of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4624Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4625and most of all, countless hairy puzzles usually block your direct way to the
4626Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4627get bored) interact in many unexpected ways, and since many of them follow the
4628laws of physics (Enigma’s special laws of physics, that is), controlling them
4629with the mouse isn’t always trivial.")
4630 (license license:gpl2+)))
4631
10d53153
CLW
4632(define-public chroma
4633 (package
4634 (name "chroma")
9cf65f05 4635 (version "1.17")
10d53153
CLW
4636 (source (origin
4637 (method url-fetch)
4638 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4639 version ".tar.bz2"))
4640 (sha256
4641 (base32
9cf65f05 4642 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4643 (build-system gnu-build-system)
4644 (arguments
5479dbf9 4645 `(#:tests? #f)) ; no tests included
10d53153
CLW
4646 (inputs
4647 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4648 ("freetype" ,freetype)
4649 ("ncurses" ,ncurses)
4650 ("fontconfig" ,fontconfig)
4651 ("libxft" ,libxft)))
4652 (native-inputs
4653 `(("pkg-config" ,pkg-config)))
4654 (home-page "http://level7.org.uk/chroma/")
4655 (synopsis "Abstract puzzle game")
4656 (description "Chroma is an abstract puzzle game. A variety of colourful
4657shapes are arranged in a series of increasingly complex patterns, forming
4658 fiendish traps that must be disarmed and mysterious puzzles that must be
4659 manipulated in order to give up their subtle secrets. Initially so
4660 straightforward that anyone can pick it up and begin to play, yet gradually
4661 becoming difficult enough to tax even the brightest of minds.")
4662 (license license:gpl2+)))
4663
649220ad 4664(define-public fillets-ng
e02f1663 4665 (package
649220ad 4666 (name "fillets-ng")
e02f1663
RW
4667 (version "1.0.1")
4668 (source (origin
4669 (method url-fetch)
4670 (uri (string-append "mirror://sourceforge/fillets/"
4671 "Fish%20Fillets%20-%20Next%20Generation/"
4672 version "/fillets-ng-" version ".tar.gz"))
4673 (sha256
4674 (base32
4675 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4676 (build-system gnu-build-system)
4677 (arguments
4678 `(#:configure-flags
4679 (list (string-append "--with-lua="
4680 (assoc-ref %build-inputs "lua")))
4681 #:make-flags
4682 (list (string-append "CFLAGS=-I"
4683 (assoc-ref %build-inputs "sdl-union")
4684 "/include/SDL")
4685 (string-append "CXXFLAGS=-I"
4686 (assoc-ref %build-inputs "sdl-union")
4687 "/include/SDL"))
4688 #:phases
4689 (modify-phases %standard-phases
4690 ;; Lua 5.1 does not provide it.
4691 (add-after 'unpack 'do-not-link-with-lualib
4692 (lambda _
4693 (substitute* "configure"
4694 (("-llualib") ""))
4695 #t))
4696 (add-after 'install 'install-data
4697 (lambda* (#:key inputs outputs #:allow-other-keys)
4698 (let ((data (string-append (assoc-ref outputs "out")
4699 "/share/games/fillets-ng")))
4700 (mkdir-p data)
f08d34a0
RW
4701 (invoke "tar" "-xvf"
4702 (assoc-ref inputs "fillets-ng-data")
4703 "--strip-components=1"
4704 "-C" data)))))))
e02f1663
RW
4705 (inputs
4706 `(("sdl-union" ,(sdl-union (list sdl
4707 sdl-mixer
4708 sdl-image
4709 sdl-ttf)))
4710 ("fribidi" ,fribidi)
4711 ("libx11" ,libx11)
4712 ("lua" ,lua-5.1)))
4713 (native-inputs
4714 `(("pkg-config" ,pkg-config)
4715 ("fillets-ng-data"
4716 ,(origin
4717 (method url-fetch)
4718 (uri (string-append "mirror://sourceforge/fillets/"
4719 "Fish%20Fillets%20-%20Next%20Generation/"
4720 version "/fillets-ng-data-" version ".tar.gz"))
4721 (sha256
4722 (base32
4723 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4724 (home-page "http://fillets.sourceforge.net/")
4725 (synopsis "Puzzle game")
4726 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4727every of the seventy levels is always the same: find a safe way out. The fish
4728utter witty remarks about their surroundings, the various inhabitants of their
4729underwater realm quarrel among themselves or comment on the efforts of your
4730fish. The whole game is accompanied by quiet, comforting music.")
4731 (license license:gpl2+)))
dd37a545 4732
649220ad
NG
4733(define-public fish-fillets-ng
4734 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4735
649220ad 4736(define-public crawl
dd37a545 4737 (package
649220ad 4738 (name "crawl")
af48a200 4739 (version "0.24.0")
dd37a545 4740 (source
4741 (origin
4742 (method url-fetch)
4743 (uri (list
4744 ;; Older releases get moved into a versioned directory
4745 (string-append "http://crawl.develz.org/release/"
4746 (version-major+minor version) "/stone_soup-"
4747 version "-nodeps.tar.xz")
4748 ;; Only the latest release is in this directory
4749 (string-append "http://crawl.develz.org/release/stone_soup-"
4750 version "-nodeps.tar.xz")))
4751 (sha256
af48a200 4752 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4753 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4754 (build-system gnu-build-system)
4755 (inputs
4756 `(("lua51" ,lua-5.1)
4757 ("ncurses" ,ncurses)
4758 ("sqlite" ,sqlite)
4759 ("zlib" ,zlib)))
4760 (native-inputs
4761 `(("bison" ,bison)
4762 ("flex" ,flex)
4763 ("perl" ,perl)
fc7d6bc6 4764 ("python" ,python-wrapper)
e366521a 4765 ("python-pyyaml" ,python-pyyaml)
dd37a545 4766 ("pkg-config" ,pkg-config)))
4767 (arguments
a5c8460a 4768 `(#:make-flags
dd37a545 4769 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4770 (out (assoc-ref %outputs "out")))
4771 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4772 (string-append "prefix=" out)
4773 "SAVEDIR=~/.crawl"
564df7e5 4774 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4775 ,@(match (%current-system)
4776 ((or "i686-linux" "x86_64-linux")
4777 '())
4778 (_ '("NOSSE=TRUE")))
dd37a545 4779 ;; don't build any bundled dependencies
4780 "BUILD_LUA="
4781 "BUILD_SQLITE="
4782 "BUILD_ZLIB="
4783 "-Csource"))
4784 #:phases
4785 (modify-phases %standard-phases
606c1987
EF
4786 (add-after 'unpack 'find-SDL-image
4787 (lambda _
4788 (substitute* "source/windowmanager-sdl.cc"
4789 (("SDL_image.h") "SDL2/SDL_image.h"))
4790 #t))
dd37a545 4791 (delete 'configure)
e366521a 4792 (replace 'check
dd37a545 4793 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4794 (setenv "HOME" (getcwd))
4795 ;; Fake a terminal for the test cases.
4796 (setenv "TERM" "xterm-256color")
e366521a
KK
4797 ;; Run the tests that don't require a debug build.
4798 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4799 (format #f "-j~d" (parallel-job-count))
4800 ;; Force command line build for test cases.
4801 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4802 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4803 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4804for short) is a roguelike adventure through dungeons filled with dangerous
4805monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4806 (home-page "https://crawl.develz.org")
4807 (license (list license:gpl2+
4808 license:bsd-2
4809 license:bsd-3
4810 license:cc0
4811 license:expat
4812 license:zlib
4813 license:asl2.0))))
cae491ab 4814
649220ad
NG
4815(define-public dungeon-crawl-stone-soup
4816 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4817
1243aaac 4818;; The linter here claims that patch file names should start with the package
4819;; name. But, in this case, the patches are inherited from crawl with the
4820;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4821(define-public crawl-tiles
ae548434 4822 (package
649220ad
NG
4823 (inherit crawl)
4824 (name "crawl-tiles")
ae548434 4825 (arguments
4826 (substitute-keyword-arguments
4827 (package-arguments crawl)
4828 ((#:make-flags flags)
4829 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4830 (cons*
4831 (string-append "PROPORTIONAL_FONT=" dejavu
4832 "/share/fonts/truetype/DejaVuSans.ttf")
4833 (string-append "MONOSPACED_FONT=" dejavu
4834 "/share/fonts/truetype/DejaVuSansMono.ttf")
4835 "TILES=y"
4836 ;; Rename the executable to allow parallel installation with crawl.
4837 "GAME=crawl-tiles"
4838 ,flags)))))
4839 (inputs
4840 `(,@(package-inputs crawl)
4841 ("font-dejavu" ,font-dejavu)
4842 ("freetype6" ,freetype)
4843 ("glu" ,glu)
4844 ("libpng" ,libpng)
4845 ("sdl2" ,sdl2)
4846 ("sdl2-image" ,sdl2-image)
4847 ("sdl2-mixer" ,sdl2-mixer)))
4848 (native-inputs
4849 `(,@(package-native-inputs crawl)
6438a468 4850 ("pngcrush" ,pngcrush)
ae548434 4851 ("which" ,which)))
4852 (synopsis "Graphical roguelike dungeon crawler game")))
4853
649220ad
NG
4854(define-public dungeon-crawl-stone-soup-tiles
4855 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4856
cae491ab
JL
4857(define-public lugaru
4858 (package
4859 (name "lugaru")
4860 (version "1.2")
4861 (source (origin
4862 (method url-fetch)
4863 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 4864 "lugaru-" version ".tar.xz"))
cae491ab
JL
4865 (sha256
4866 (base32
4867 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4868 (build-system cmake-build-system)
4869 (arguments
4870 `(#:configure-flags
4871 (list "-DSYSTEM_INSTALL=ON")
4872 ;; no test target
4873 #:tests? #f))
4874 (native-inputs
4875 `(("pkg-config" ,pkg-config)))
4876 (inputs
4877 `(("sdl2" ,sdl2)
4878 ("glu" ,glu)
4879 ("libjpeg" ,libjpeg-turbo)
4880 ("libpng" ,libpng)
4881 ("openal" ,openal)
4882 ("vorbis" ,libvorbis)
4883 ("zlib" ,zlib)))
4884 (home-page "https://osslugaru.gitlab.io")
4885 (synopsis "Cross-platform third-person action game")
4886 (description "Lugaru is a third-person action game. The main character,
4887Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
4888In his quest to find those responsible for slaughtering his village, he uncovers
4889a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
4890and the starving wolves from a nearby den. Turner takes it upon himself to
4891fight against their plot and save his fellow rabbits from slavery.")
4892 (license (list license:gpl2+ ; code
4893 ;; assets:
4894 license:cc-by-sa3.0
4895 license:cc-by-sa4.0))))
bff33e6c
CL
4896
4897(define-public 0ad-data
4898 (package
4899 (name "0ad-data")
8c00379c 4900 (version "0.0.23b-alpha")
bff33e6c
CL
4901 (source
4902 (origin
4903 (method url-fetch)
706d6190 4904 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
4905 version "-unix-data.tar.xz"))
4906 (file-name (string-append name "-" version ".tar.xz"))
4907 (sha256
4908 (base32
8c00379c 4909 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
4910 (modules '((guix build utils)))
4911 (snippet
4912 #~(begin
6cbee49d
MW
4913 (for-each (lambda (name)
4914 (let* ((dir (string-append "binaries/data/mods/" name))
4915 (file (string-append dir "/" name ".zip"))
4916 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 4917 (invoke unzip "-d" dir file)
6cbee49d
MW
4918 (delete-file file)))
4919 '("mod" "public"))
bff33e6c
CL
4920 #t))))
4921 (build-system trivial-build-system)
4922 (native-inputs `(("tar" ,tar)
4923 ("xz" ,xz)))
4924 (arguments
4925 `(#:modules ((guix build utils))
4926 #:builder
4927 (begin
4928 (use-modules (guix build utils))
4929 (let ((out (assoc-ref %outputs "out"))
4930 (source (assoc-ref %build-inputs "source"))
4931 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
4932 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
4933 (setenv "PATH" xz-path)
4934 (mkdir out)
e3cfef22 4935 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
4936 (synopsis "Data files for 0ad")
4937 (description "0ad-data provides the data files required by the game 0ad.")
4938 (home-page "https://play0ad.com")
4939 (license (list (license:fsdg-compatible
4940 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
4941 (license:license-comment
4942 (package-license font-bitstream-vera)))
4943 (package-license font-bitstream-vera)
4944 license:cc-by-sa3.0
4945 license:expat
4946 license:gfl1.0
4947 license:gpl2+
4948 license:gpl3+))))
4949
4950(define-public 0ad
4951 (package
4952 (name "0ad")
8c00379c 4953 (version "0.0.23b-alpha")
bff33e6c
CL
4954 (source
4955 (origin
4956 (method url-fetch)
706d6190 4957 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
4958 version "-unix-build.tar.xz"))
4959 (file-name (string-append name "-" version ".tar.xz"))
4960 (sha256
4961 (base32
8c00379c 4962 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
4963 ;; A snippet here would cause a build failure because of timestamps
4964 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
4965 (inputs
4966 `(("0ad-data" ,0ad-data)
4967 ("curl" ,curl)
4968 ("enet" ,enet)
4969 ("gloox" ,gloox)
4970 ("icu4c" ,icu4c)
4971 ("libpng" ,libpng)
706d6190 4972 ("libsodium" ,libsodium)
bff33e6c
CL
4973 ("libvorbis" ,libvorbis)
4974 ("libxcursor" ,libxcursor)
4975 ("libxml2" ,libxml2)
4976 ("miniupnpc" ,miniupnpc)
4977 ("mozjs-38" ,mozjs-38)
4978 ("openal" ,openal)
4979 ("sdl2" ,sdl2)
4980 ("wxwidgets" ,wxwidgets)
4981 ("zlib" ,zlib)))
4982 (native-inputs
4983 `(("boost" ,boost)
c69959f0 4984 ("cmake" ,cmake-minimal)
bff33e6c
CL
4985 ("mesa" ,mesa)
4986 ("pkg-config" ,pkg-config)
4987 ("python-2" ,python-2)))
4988 (build-system gnu-build-system)
4989 (arguments
809b8842
CB
4990 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
4991 #:phases
bff33e6c
CL
4992 (modify-phases %standard-phases
4993 (add-after 'unpack 'delete-bundles
4994 (lambda _
4995 (delete-file-recursively "libraries/source/spidermonkey")
4996 #t))
4997 (add-after 'unpack 'fix-x11-includes
4998 (lambda _
4999 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5000 (("<Xlib.h>") "<X11/Xlib.h>"))
5001 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5002 (("<Xatom.h>") "<X11/Xatom.h>"))
5003 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5004 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5005 #t))
5006 (replace 'configure
5007 (lambda* (#:key inputs outputs #:allow-other-keys)
5008 (let* ((jobs (number->string (parallel-job-count)))
5009 (out (assoc-ref outputs "out"))
5010 (lib (string-append out "/lib"))
5011 (data (string-append out "/share/0ad")))
5012 (setenv "JOBS" (string-append "-j" jobs))
5013 (setenv "CC" "gcc")
5014 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5015 (invoke "./update-workspaces.sh"
5016 (string-append "--libdir=" lib)
5017 (string-append "--datadir=" data)
5018 ;; TODO: "--with-system-nvtt"
5019 "--with-system-mozjs38")))))
bff33e6c
CL
5020 (delete 'check)
5021 (replace 'install
5022 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5023 (chdir "binaries")
bff33e6c
CL
5024 (let* ((out (assoc-ref outputs "out"))
5025 (bin (string-append out "/bin"))
5026 (lib (string-append out "/lib"))
5027 (data (string-append out "/share/0ad"))
5028 (applications (string-append out "/share/applications"))
5029 (pixmaps (string-append out "/share/pixmaps"))
5030 (0ad-data (assoc-ref inputs "0ad-data")))
5031 ;; data
5032 (copy-recursively "data" data)
5033 (for-each (lambda (file)
5034 (symlink (string-append 0ad-data "/" file)
5035 (string-append data "/" file)))
5036 '("config" "mods/mod" "mods/public" "tools"))
5037 ;; libraries
5038 (for-each (lambda (file)
5039 (install-file file lib))
5040 (find-files "system" "\\.so$"))
5041 ;; binaries
5042 (install-file "system/pyrogenesis" bin)
5043 (with-directory-excursion bin
5044 (symlink "pyrogenesis" "0ad"))
5045 ;; resources
5046 (with-directory-excursion "../build/resources"
5047 (install-file "0ad.desktop" applications)
5048 (install-file "0ad.png" pixmaps))
5049 #t)))
5050 (add-after 'install 'check
5051 (lambda _
5052 (with-directory-excursion "system"
7b67bb1f 5053 (invoke "./test")))))))
bff33e6c
CL
5054 (home-page "https://play0ad.com")
5055 (synopsis "3D real-time strategy game of ancient warfare")
5056 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5057warfare. It's a historically-based war/economy game that allows players to
5058relive or rewrite the history of twelve ancient civilizations, each depicted
5059at their peak of economic growth and military prowess.
5060
50610ad needs a window manager that supports 'Extended Window Manager Hints'.")
5062 (license (list license:bsd-2
5063 license:bsd-3
5064 license:expat
5065 license:gpl2+
5066 license:ibmpl1.0
5067 license:isc
5068 license:lgpl2.1
5069 license:lgpl3
5070 license:mpl2.0
5071 license:zlib))))
dec63df4 5072
5073;; There have been no official releases.
5074(define-public open-adventure
be6e2c30 5075 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5076 (revision "2"))
dec63df4 5077 (package
5078 (name "open-adventure")
5079 (version (string-append "2.5-" revision "." (string-take commit 7)))
5080 (source (origin
5081 (method git-fetch)
5082 (uri (git-reference
5083 (url "https://gitlab.com/esr/open-adventure")
5084 (commit commit)))
5085 (file-name (string-append name "-" version "-checkout"))
5086 (sha256
5087 (base32
be6e2c30 5088 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5089 (build-system gnu-build-system)
5090 (arguments
5091 `(#:make-flags (list "CC=gcc")
5092 #:parallel-build? #f ; not supported
5093 #:phases
5094 (modify-phases %standard-phases
be6e2c30 5095 (replace 'configure
5096 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5097 ;; Linenoise is meant to be included, so we have to
5098 ;; copy it into the working directory.
be6e2c30 5099 (let* ((linenoise (assoc-ref inputs "linenoise"))
5100 (noisepath (string-append linenoise "/include/linenoise"))
5101 (out (assoc-ref outputs "out")))
5102 (copy-recursively noisepath "linenoise"))
5103 #t))
dec63df4 5104 (add-before 'build 'use-echo
5105 (lambda _
5106 (substitute* "tests/Makefile"
5107 (("/bin/echo") (which "echo")))
5108 #t))
5109 (add-after 'build 'build-manpage
5110 (lambda _
5111 ;; This target is missing a dependency
5112 (substitute* "Makefile"
be6e2c30 5113 ((".adoc.6:" line)
5114 (string-append line " advent.adoc")))
27cd31e6 5115 (invoke "make" ".adoc.6")))
dec63df4 5116 ;; There is no install target
5117 (replace 'install
5118 (lambda* (#:key outputs #:allow-other-keys)
5119 (let* ((out (assoc-ref outputs "out"))
5120 (bin (string-append out "/bin"))
5121 (man (string-append out "/share/man/man6")))
5122 (install-file "advent" bin)
5123 (install-file "advent.6" man))
5124 #t)))))
5125 (native-inputs
be6e2c30 5126 `(("asciidoc" ,asciidoc)
5127 ("linenoise" ,linenoise)
5128 ("python" ,python)
5129 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5130 (home-page "https://gitlab.com/esr/open-adventure")
5131 (synopsis "Colossal Cave Adventure")
5132 (description "The original Colossal Cave Adventure from 1976 was the
5133origin of all text adventures, dungeon-crawl (computer) games, and
5134computer-hosted roleplaying games. This is the last version released by
5135Crowther & Woods, its original authors, in 1995. It has been known as
5136\"adventure 2.5\" and \"430-point adventure\".")
5137 (license license:bsd-2))))
1f88f189 5138
649220ad 5139(define-public tome4
1f88f189 5140 (package
649220ad 5141 (name "tome4")
37515553 5142 (version "1.6.4")
1f88f189
OP
5143 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5144 (source
5145 (origin
5146 (method url-fetch)
5147 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5148 version ".tar.bz2"))
5149 (sha256
5150 (base32
37515553 5151 "1hrh79aqmvwwd7idlr3lzpdpc9dgm1k5p7w2462chcjvd8vhfhb7"))
1f88f189
OP
5152 (modules '((guix build utils)))
5153 (snippet
6cbee49d
MW
5154 '(begin
5155 (substitute* '("src/music.h" "src/tSDL.h")
5156 (("#elif defined(__FreeBSD__)" line)
5157 (string-append
5158 line " || defined(__GNUC__)")))
19c0cdb9
OP
5159 (substitute* '("src/tgl.h")
5160 (("#include <GL/glext.h>") ""))
6cbee49d 5161 #t))))
1f88f189
OP
5162 (build-system gnu-build-system)
5163 (native-inputs
5164 `(("unzip" ,unzip)))
5165 (inputs
5166 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5167 ("glu" ,glu)
5168 ("premake4" ,premake4)
5169 ("openal" ,openal)
5170 ("vorbis" ,libvorbis)
5171 ("luajit" ,luajit)))
5172 (arguments
5173 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5174 ;; XXX: Building in parallel occasionally causes this build failure:
5175 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5176 ;; No such file or directory
5177 #:parallel-build? #f
1f88f189 5178 #:phases (modify-phases %standard-phases
972b87b1 5179 (delete 'bootstrap)
1f88f189
OP
5180 (replace 'configure
5181 (lambda _
13a504af 5182 (invoke "premake4" "gmake")
1f88f189
OP
5183 #t))
5184 (add-after 'set-paths 'set-sdl-paths
5185 (lambda* (#:key inputs #:allow-other-keys)
5186 (setenv "CPATH"
5187 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5188 "/include/SDL2:"
5189 (getenv "CPATH")))
1f88f189
OP
5190 #t))
5191 (delete 'check)
5192 ;; premake doesn't provide install target
5193 (replace 'install
5194 (lambda* (#:key inputs outputs #:allow-other-keys)
5195 (let* ((out (assoc-ref outputs "out"))
5196 (usr (string-append out "/usr"))
5197 (bin (string-append out "/bin"))
5198 (licenses (string-append out "/share/licenses"))
5199 (documents (string-append out "/share/doc"))
5200 (pixmaps (string-append out "/share/pixmaps"))
5201 (icon "te4-icon.png")
5202 (data (string-append out "/share/" ,name))
5203 (applications (string-append
5204 out "/share/applications"))
5205 (unzip (string-append
5206 (assoc-ref inputs "unzip") "/bin/unzip"))
5207 (wrapper (string-append bin "/" ,name)))
5208 ;; icon
5209 (mkdir-p pixmaps)
5210 (system* unzip "-j"
5211 (string-append
5212 "game/engines/te4-" ,version ".teae")
5213 (string-append
5214 "data/gfx/" icon) "-d" pixmaps)
5215 ;; game executable
5216 (install-file "t-engine" data)
5217 (mkdir-p bin)
5218 (with-output-to-file wrapper
5219 (lambda ()
5220 (display
5221 (string-append
5222 "#!/bin/sh\n"
5223 ;; No bootstrap code found,
5224 ;; defaulting to working directory
5225 ;; for engine code!
5226 "cd " data "\n"
5227 "exec -a tome4 ./t-engine \"$@\"\n"))))
5228 (chmod wrapper #o555)
5229 ;; licenses
5230 (for-each (lambda (file)
5231 (install-file file licenses))
5232 '("COPYING" "COPYING-MEDIA"))
5233 ;; documents
5234 (for-each (lambda (file)
5235 (install-file file documents))
5236 '("CONTRIBUTING" "CREDITS"))
5237 ;; data
5238 (copy-recursively "bootstrap" (string-append
5239 data "/bootstrap"))
5240 (copy-recursively "game" (string-append data "/game"))
5241 ;; launcher
5242 (mkdir-p applications)
5243 (with-output-to-file (string-append applications "/"
5244 ,name ".desktop")
5245 (lambda ()
5246 (display
5247 (string-append
5248 "[Desktop Entry]
5249Name=ToME4
5250Comment=" ,synopsis "\n"
5251"Exec=" ,name "\n"
5252"Icon=" icon "\n"
5253"Terminal=false
5254Type=Application
5255Categories=Game;RolePlaying;\n")))))
5256 #t)))))
5257 (home-page "https://te4.org")
5258 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5259combat and advanced character building. Play as one of many unique races and
5260classes in the lore-filled world of Eyal, exploring random dungeons, facing
5261challenging battles, and developing characters with your own tailored mix of
5262abilities and powers. With a modern graphical and customisable interface,
5263intuitive mouse control, streamlined mechanics and deep, challenging combat,
5264Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5265 (license license:gpl3+)))
7a070f02 5266
649220ad
NG
5267(define-public tales-of-maj-eyal
5268 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5269
7a070f02 5270(define-public quakespasm
5271 (package
5272 (name "quakespasm")
1b915698 5273 (version "0.93.1")
7a070f02 5274 (source
5275 (origin
5276 (method url-fetch)
5277 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5278 version ".tgz"))
5279 (sha256
5280 (base32
1b915698 5281 "1bimv18f6rzhyjz78yvw2vqr5n0kdqbcqmq7cb3m951xgsxfcgpd"))))
7a070f02 5282 (arguments
5283 `(#:tests? #f
5284 #:make-flags '("CC=gcc"
5285 "MP3LIB=mpg123"
5286 "USE_CODEC_FLAC=1"
5287 "USE_CODEC_MIKMOD=1"
5288 "USE_SDL2=1"
5289 "-CQuake")
5290 #:phases (modify-phases %standard-phases
5291 (delete 'configure)
5292 (add-after 'unpack 'fix-makefile-paths
5293 (lambda* (#:key outputs #:allow-other-keys)
5294 (let ((out (assoc-ref outputs "out")))
5295 (mkdir-p (string-append out "/bin"))
5296 (substitute* "Quake/Makefile"
5297 (("/usr/local/games")
5298 (string-append out "/bin")))
5299 #t))))))
5300 (build-system gnu-build-system)
5301 (inputs `(("libmikmod" ,libmikmod)
5302 ("libvorbis" ,libvorbis)
5303 ("flac" ,flac)
5304 ("mesa" ,mesa)
5305 ("mpg123" ,mpg123)
5306 ("sdl2" ,sdl2)))
5307 (synopsis "First person shooter engine for Quake 1")
5308 (description "Quakespasm is a modern engine for id software's Quake 1.
5309It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5310some graphical niceities, and numerous bug-fixes and other improvements.")
5311 (home-page "http://quakespasm.sourceforge.net/")
5312 (license license:gpl2+)))
916bb947 5313
7a6be5b9
RH
5314(define-public vkquake
5315 (package
5316 (inherit quakespasm)
5317 (name "vkquake")
3e7b376e 5318 (version "1.01.0")
7a6be5b9
RH
5319 (source
5320 (origin
f5e1a0e5
TGR
5321 (method git-fetch)
5322 (uri (git-reference
5323 (url "https://github.com/Novum/vkQuake.git")
5324 (commit version)))
5325 (file-name (git-file-name name version))
7a6be5b9 5326 (sha256
f5e1a0e5 5327 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5328 (arguments
5329 `(#:make-flags
5330 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5331 "vulkan-loader") "/lib")))
7a6be5b9
RH
5332 (list "CC=gcc"
5333 "MP3LIB=mpg123"
5334 "USE_CODEC_FLAC=1"
5335 "USE_CODEC_MIKMOD=1"
5336 "USE_SDL2=1"
5337 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5338 "-CQuake"))
5339 #:phases (modify-phases %standard-phases
5340 (delete 'configure)
5341 (add-after 'unpack 'fix-makefile-paths
5342 (lambda* (#:key outputs #:allow-other-keys)
5343 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5344 "vulkan-loader"))
7a6be5b9
RH
5345 (out (assoc-ref outputs "out")))
5346 (mkdir-p (string-append out "/bin"))
5347 (substitute* "Quake/Makefile" ((" /usr")
5348 (string-append " " out)))
5349 (substitute* "Quake/Makefile" (("/games")
5350 (string-append "/bin")))
5351 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5352 #t))))
5353 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5354 (package-arguments quakespasm))))
4108886b
RH
5355 (inputs `(("vulkan-headers" ,vulkan-headers)
5356 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5357 ,@(package-inputs quakespasm)))
5358 (description "vkquake is a modern engine for id software's Quake 1.
5359It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5360some graphical niceities, and numerous bug-fixes and other improvements.")
5361 (home-page "https://github.com/Novum/vkQuake")))
5362
916bb947 5363(define-public yamagi-quake2
5364 (package
5365 (name "yamagi-quake2")
5366 (version "7.10")
5367 (source
5368 (origin
5369 (method url-fetch)
5370 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5371 version ".tar.xz"))
5372 (sha256
5373 (base32
5374 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5375 (build-system gnu-build-system)
5376 (arguments
5377 `(#:tests? #f
5378 #:make-flags
5379 (list "CC=gcc"
5380 ;; link openAL instead of using dlopen at runtime
5381 "DLOPEN_OPENAL=\"no\""
5382 ;; an optional directory where it will look for quake2 data files
5383 ;; in addition to the current working directory
5384 "WITH_SYSTEMWIDE=yes"
5385 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5386 #:phases
5387 (modify-phases %standard-phases
5388 (delete 'configure)
5389 (replace 'install
5390 (lambda* (#:key outputs #:allow-other-keys)
5391 (let ((out (assoc-ref outputs "out")))
5392 (mkdir-p (string-append out "/lib"))
5393 (mkdir-p (string-append out "/bin"))
5394 ;; The yamagi-quake2 binary must be in the same directory
5395 ;; as it's engine libraries, but symlinking it to /bin is okay
5396 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5397 (copy-recursively "release"
5398 (string-append out "/lib/yamagi-quake2"))
5399 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5400 (string-append out "/bin/yamagi-quake2"))
5401 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5402 (string-append out "/bin/yamagi-q2ded"))))))))
5403 (inputs `(("sdl2" ,sdl2)
5404 ("mesa" ,mesa)
5405 ("libvorbis" ,libvorbis)
5406 ("zlib" ,zlib)
5407 ("openal" ,openal)))
5408 (native-inputs `(("pkg-config" ,pkg-config)))
5409 (synopsis "First person shooter engine based on quake2")
5410 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5411The main focus is an unchanged single player experience like back in 1997,
5412thus the gameplay and the graphics are unaltered. However the user may use one
5413of the unofficial retexturing packs. In comparison with the official client,
5414over 1000 bugs were fixed and an extensive code audit done,
5415making Yamagi Quake II one of the most solid Quake II implementations available.")
5416 (home-page "https://www.yamagi.org/quake2/")
5417 (license (list license:gpl2+ ; game and server
5418 (license:non-copyleft ; info-zip
5419 "file://LICENSE"
5420 "See Info-Zip section.")
5421 license:public-domain)))) ; stb
c1228231 5422
e7448859
MIP
5423(define-public nudoku
5424 (package
5425 (name "nudoku")
5426 (version "1.0.0")
5427 (source (origin
5428 (method url-fetch)
5429 (uri (string-append "https://github.com/jubalh/nudoku/"
5430 "releases/download/" version
5431 "/nudoku-" version ".tar.xz"))
5432 (sha256
5433 (base32
5434 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5435 (build-system gnu-build-system)
5436 (inputs `(("ncurses" ,ncurses)))
5437 (home-page "https://jubalh.github.io/nudoku/")
5438 (synopsis "Sudoku for your terminal")
5439 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5440 (license license:gpl3+)))
5441
c1228231
NG
5442(define-public the-butterfly-effect
5443 (package
5444 (name "the-butterfly-effect")
5445 (version "0.9.3.1")
5446 (source
5447 (origin
089c6b00
EF
5448 (method git-fetch)
5449 (uri (git-reference
5450 (url "https://github.com/the-butterfly-effect/tbe.git")
5451 (commit (string-append "v" version))))
5452 (file-name (git-file-name name version))
c1228231
NG
5453 (sha256
5454 (base32
089c6b00 5455 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5456 (build-system gnu-build-system)
5457 (arguments
5458 `(#:phases
5459 (modify-phases %standard-phases
5460 (delete 'configure)
5461 ;; There is no "install" phase. By default, tbe is installed
5462 ;; in the build directory. Provide our own installation.
5463 (replace 'install
5464 (lambda* (#:key outputs #:allow-other-keys)
5465 (let* ((out (assoc-ref outputs "out"))
5466 (bin (string-append out "/bin"))
5467 (share (string-append out "/share")))
5468 (install-file "usr/games/tbe" bin)
5469 (mkdir-p share)
5470 (copy-recursively "usr/share" share)
5471 #t))))
5472 ;; Test suite requires a running Xorg server. Even when
5473 ;; provided, it fails with "D-Bus library appears to be
5474 ;; incorrectly set up; failed to read machine uuid: Failed to
5475 ;; open "/etc/machine-id": No such file or directory" along
5476 ;; with multiple "QPainter:: ... Painter not active" warnings.
5477 #:tests? #f))
5478 (inputs
5479 `(("qtbase" ,qtbase)
5480 ("qtsvg" ,qtsvg)))
5481 (native-inputs
c69959f0 5482 `(("cmake" ,cmake-minimal)
c1228231
NG
5483 ("gettext-minimal" ,gettext-minimal)
5484 ("qttools" ,qttools)))
5485 (synopsis "Realistic physics puzzle game")
5486 (description "The Butterfly Effect (tbe) is a game that uses
5487realistic physics simulations to combine lots of simple mechanical
5488elements to achieve a simple goal in the most complex way possible.")
5489 (home-page "http://the-butterfly-effect.org/")
5490 ;; Main license is GPL2-only. However, artwork is distributed
5491 ;; under various licenses, listed here.
5492 (license (list license:gpl2 license:public-domain license:expat
5493 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5494
5495(define-public pioneer
5496 (package
5497 (name "pioneer")
ed3e7b72 5498 (version "20190203")
aac1aa75 5499 (source (origin
6a03ccf4
EB
5500 (method git-fetch)
5501 (uri (git-reference
5502 (url "https://github.com/pioneerspacesim/pioneer.git")
5503 (commit version)))
5504 (file-name (git-file-name name version))
aac1aa75
EB
5505 (sha256
5506 (base32
ed3e7b72
EB
5507 "1g34wvgyvz793dhm1k64kl82ib0cavkbg0f2p3fp05b457ycljff"))))
5508 (build-system cmake-build-system)
aac1aa75 5509 (native-inputs
ed3e7b72 5510 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5511 (inputs
5512 `(("assimp" ,assimp)
5513 ("curl" ,curl)
5514 ("freetype" ,freetype)
ed3e7b72 5515 ("glew" ,glew)
aac1aa75
EB
5516 ("glu" ,glu)
5517 ("libpng" ,libpng)
5518 ("libsigc++" ,libsigc++)
5519 ("libvorbis" ,libvorbis)
5520 ("lua" ,lua-5.2) ;not compatible with 5.3
5521 ("mesa" ,mesa)
5522 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5523 (arguments
5524 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5525 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5526 (string-append "-DPIONEER_DATA_DIR="
5527 %output "/share/games/pioneer"))))
aac1aa75
EB
5528 (home-page "http://pioneerspacesim.net")
5529 (synopsis "Game of lonely space adventure")
5530 (description
5531 "Pioneer is a space adventure game set in our galaxy at the turn of the
553231st century. The game is open-ended, and you are free to eke out whatever
5533kind of space-faring existence you can think of. Look for fame or fortune by
5534exploring the millions of star systems. Turn to a life of crime as a pirate,
5535smuggler or bounty hunter. Forge and break alliances with the various
5536factions fighting for power, freedom or self-determination. The universe is
5537whatever you make of it.")
5538 (license license:gpl3)))
57f9671d 5539
5540(define-public badass
5541 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5542 (revision "0"))
5543 (package
5544 (name "badass")
5545 (version (git-version "0.0" revision commit))
5546 (source (origin
5547 (method git-fetch)
5548 (uri (git-reference
5549 (url "https://github.com/umayr/badass.git")
5550 (commit commit)))
5551 (file-name (git-file-name name version))
5552 (sha256
5553 (base32
5554 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5555 (build-system go-build-system)
5556 (arguments
5557 '(#:import-path "github.com/umayr/badass"))
5558 (synopsis "Hacking contribution graphs in git")
5559 (description
5560 "Badass generates false commits for a range of dates, essentially
5561hacking the gamification of contribution graphs on platforms such as
5562Github or Gitlab.")
5563 (home-page "https://github.com/umayr/badass")
5564 (license license:expat))))
fa7d8ea1
NG
5565
5566(define-public colobot
5567 (package
5568 (name "colobot")
2dad4c91 5569 (version "0.1.12-alpha")
fa7d8ea1
NG
5570 (source
5571 (origin
2dad4c91
NG
5572 (method git-fetch)
5573 (uri (git-reference
5574 (url "https://github.com/colobot/colobot.git")
5575 (commit (string-append "colobot-gold-" version))
5576 (recursive? #t))) ;for "data/" subdir
5577 (file-name (git-file-name name version))
fa7d8ea1
NG
5578 (sha256
5579 (base32
2dad4c91 5580 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5581 (build-system cmake-build-system)
5582 (arguments
5583 `(#:tests? #f ;no test
5584 #:phases
5585 (modify-phases %standard-phases
2dad4c91
NG
5586 (add-after 'unpack 'make-git-checkout-writable
5587 (lambda _
5588 (for-each make-file-writable (find-files "."))
5589 #t))
5590 (add-after 'unpack 'fix-directories
5591 (lambda _
5592 (substitute* "CMakeLists.txt"
5593 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5594 (string-append prefix "/bin"))
5595 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5596 (string-append prefix "/colobot")))
5597 #t))
5598 (add-after 'fix-directories 'install-music
5599 ;; Retrieve and install music files.
fa7d8ea1
NG
5600 (lambda* (#:key inputs #:allow-other-keys)
5601 ;; Installation process tries to download music files using
2dad4c91
NG
5602 ;; "wget" if not already present. Since we are going another
5603 ;; route, skip "wget" command check.
fa7d8ea1
NG
5604 (substitute* "data/music/CMakeLists.txt"
5605 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5606 ;; Populate "music/" directory.
fa7d8ea1 5607 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5608 (invoke "tar" "-xvf" data "-Cdata/music"))
5609 #t)))))
fa7d8ea1 5610 (native-inputs
2dad4c91 5611 `(("colobot-music"
fa7d8ea1
NG
5612 ,(origin
5613 (method url-fetch)
5614 (uri (string-append "https://colobot.info/files/music/"
5615 "colobot-music_ogg_" version ".tar.gz"))
5616 (sha256
5617 (base32
5618 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5619 ("gettext" ,gettext-minimal)
5620 ("librsvg" ,librsvg)
5621 ("po4a" ,po4a)
5622 ("python" ,python-wrapper)))
5623 (inputs
5624 `(("boost" ,boost)
5625 ("glew" ,glew)
5626 ("libogg" ,libogg)
5627 ("libpng" ,libpng)
5628 ("libsndfile" ,libsndfile)
5629 ("libvorbis" ,libvorbis)
5630 ("openal" ,openal)
5631 ("physfs" ,physfs)
5632 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5633 (synopsis "Educational programming strategy game")
5634 (description "Colobot: Gold Edition is a real-time strategy game, where
5635you can program your units (bots) in a language called CBOT, which is similar
5636to C++ and Java. Your mission is to find a new planet to live and survive.
5637You can save humanity and get programming skills!")
5638 (home-page "https://colobot.info")
5639 (license license:gpl3+)))
2922852e 5640
5641(define-public gzdoom
5642 (package
5643 (name "gzdoom")
6c177f61 5644 (version "3.7.2")
2922852e 5645 (source (origin
5646 (method url-fetch)
5647 (uri
6c177f61 5648 (string-append "https://zdoom.org/files/gzdoom/src/gzdoom-src-g"
2922852e 5649 version ".zip"))
5650 (sha256
5651 (base32
6c177f61 5652 "0182f160m8d0c3nywjw3dxvnz93xjs4cn8akx7137cha4s05wdq7"))
2922852e 5653 (patches (search-patches "gzdoom-search-in-installed-share.patch"))
5654 (modules '((guix build utils)))
5655 (snippet
5656 '(begin
5657 (delete-file-recursively "bzip2")
5658 (delete-file-recursively "game-music-emu")
6c177f61 5659 (delete-file-recursively "jpeg")
6cbee49d
MW
5660 (delete-file-recursively "zlib")
5661 #t))))
2922852e 5662 (arguments
5663 '(#:tests? #f
5664 #:configure-flags
5665 (let ((out (assoc-ref %outputs "out")))
5666 (list
5667 (string-append
5668 "-DCMAKE_CXX_FLAGS:="
5669 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5670 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
5671 ;; look for libraries at buildtime instead of
5672 ;; dynamically finding them at runtime
5673 "-DDYN_OPENAL=OFF"
5674 "-DDYN_FLUIDSYNTH=OFF"
5675 "-DDYN_GTK=OFF"
5676 "-DDYN_MPG123=OFF"
5677 "-DDYN_SNDFILE=OFF"))
5678 #:phases
5679 (modify-phases %standard-phases
5680 (add-before 'configure 'fix-referenced-paths
5681 (lambda* (#:key inputs outputs #:allow-other-keys)
5682 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5683 (timidity++ (assoc-ref inputs "timidity++"))
5684 (out (assoc-ref outputs "out")))
5685
5686 (substitute*
5687 "src/CMakeLists.txt"
5688 (("COMMAND /bin/sh")
5689 (string-append "COMMAND " (which "sh"))))
5690
5691 (substitute*
5692 "src/sound/mididevices/music_fluidsynth_mididevice.cpp"
5693 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5694 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5695
5696 (substitute*
5697 "src/sound/mididevices/music_timiditypp_mididevice.cpp"
5698 (("exename = \"timidity\"")
5699 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5700 #t))))))
5701 (build-system cmake-build-system)
5702 (inputs `(("bzip2" ,bzip2)
5703 ("fluid-3" ,fluid-3)
9b6dc31b 5704 ("fluidsynth" ,fluidsynth-1) ;XXX: try using 2.x when updating
2922852e 5705 ("gtk+3" ,gtk+)
5706 ("libgme" ,libgme)
5707 ("libjpeg" ,libjpeg)
5708 ("libsndfile" ,libsndfile)
5709 ("mesa" ,mesa)
5710 ("mpg123" ,mpg123)
5711 ("openal" ,openal)
5712 ("sdl2" ,sdl2)
5713 ("timidity++" ,timidity++)
5714 ("zlib" ,zlib)))
5715 (native-inputs `(("pkg-config" ,pkg-config)
5716 ("unzip" ,unzip)))
5717 (synopsis "Modern Doom 2 source port")
5718 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5719renderer. It improves modding support with ZDoom's advanced mapping features
5720and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5721Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5722 (home-page "https://zdoom.org/index")
642b195a
EF
5723 ;; The source uses x86 assembly
5724 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5725 (license (list license:gpl3+ ; gzdoom game
5726 license:lgpl3+ ; gzdoom renderer
5727 license:expat ; gdtoa
5728 (license:non-copyleft ; modified dumb
5729 "file://dumb/licence.txt"
5730 "Dumb license, explicitly GPL compatible.")))))
b1642338 5731
6f565d6c
P
5732(define-public odamex
5733 (package
5734 (name "odamex")
5735 (version "0.8.0")
5736 (source
5737 (origin
5738 (method url-fetch)
5739 (uri (string-append
5740 "mirror://sourceforge/odamex/Odamex/" version "/"
5741 "odamex-src-" version ".tar.gz"))
5742 (sha256
5743 (base32
5744 "1sh6lqj7vsdmnqz17hw0b6vy7xx6dp41k2sdw99ympsfa2xd1d2j"))))
5745 (build-system cmake-build-system)
5746 (arguments `(#:tests? #f)) ; no tests.
5747 (inputs
5748 `(("sdl" ,sdl)
5749 ("sdl-mixer" ,sdl-mixer)
5750 ("zlib" ,zlib)
5751 ("libpng" ,libpng)
5752 ("alsa-lib" ,alsa-lib)))
5753 (home-page "https://odamex.net/")
5754 (synopsis "Multiplayer Doom port")
5755 (description "Odamex is a modification of the Doom engine that
5756allows players to easily join servers dedicated to playing Doom
5757online.")
5758 (license license:gpl2+)))
5759
fc16bbb7
JK
5760(define-public chocolate-doom
5761 (package
5762 (name "chocolate-doom")
5763 (version "3.0.0")
5764 (source (origin
5765 (method url-fetch)
5766 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5767 version
5768 "/chocolate-doom-"
5769 version
5770 ".tar.gz"))
5771 (sha256
5772 (base32
5773 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5774 (build-system gnu-build-system)
5775 (inputs `(("sdl2-net" ,sdl2-net)
5776 ("sdl2-mixer" , sdl2-mixer)
5777 ("sdl2" ,sdl2)))
5778 (native-inputs
5779 `(("pkg-config" ,pkg-config)))
5780 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5781Doom")
5782 (description
5783 "Chocolate Doom takes a different approach to other source ports. Its
5784aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5785a conservative, historically accurate Doom source port, which is compatible
5786with the thousands of mods and levels that were made before the Doom source
5787code was released. Rather than flashy new graphics, Chocolate Doom's main
5788features are its accurate reproduction of the game as it was played in the
57891990s. The project is developed around a carefully-considered philosophy that
5790intentionally restricts which features may be added (and rejects any that
5791affect gameplay).")
5792 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5793 (license license:gpl2)))
5794
3f9a027c
DF
5795(define-public crispy-doom
5796 (package
5797 (inherit chocolate-doom)
5798 (name "crispy-doom")
fbdc87a7 5799 (version "5.6.3")
3f9a027c
DF
5800 (source (origin
5801 (method git-fetch)
5802 (uri (git-reference
5803 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5804 (commit (string-append "crispy-doom-" version))))
5805 (file-name (git-file-name name version))
5806 (sha256
fbdc87a7 5807 (base32 "0f319979wqfgm4pvsa6y5clg30p55l441kmrr8db0p5smyv3x2s4"))))
3f9a027c
DF
5808 (native-inputs
5809 (append
5810 (package-native-inputs chocolate-doom)
5811 `(("automake" ,automake)
5812 ("autoreconf" ,autoconf))))
5813 (arguments
5814 `(#:phases
5815 (modify-phases %standard-phases
5816 (replace 'bootstrap
5817 ;; the autogen.sh script in the source tree doesn't work
5818 (lambda _ (invoke "autoreconf" "-vif"))))))
5819 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5820Chocolate Doom")
5821 (description
5822 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5823display resolution, removes the static limits of the Doom engine and offers
5824further optional visual, tactical and physical enhancements while remaining
5825entirely config file, savegame, netplay and demo compatible with the
5826original.")
5827 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5828
b1642338
PN
5829(define-public fortune-mod
5830 (package
5831 (name "fortune-mod")
81e6ece6 5832 (version "2.6.2")
7e1d376d
TGR
5833 (source
5834 (origin
5835 (method git-fetch)
5836 (uri (git-reference
5837 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 5838 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
5839 (file-name (git-file-name name version))
5840 (sha256
5841 (base32
81e6ece6 5842 "11xff87s8ifw2dqs90n0rjq0psv4i7ykybygmibsqjj7id3xxw4c"))))
b1642338
PN
5843 (build-system cmake-build-system)
5844 (arguments
5845 `(#:test-target "check"
5846 #:phases
5847 (modify-phases %standard-phases
5848 (add-after 'unpack 'fix-build-env
5849 (lambda* (#:key inputs #:allow-other-keys)
5850 (use-modules (guix build utils))
5851 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
5852 (copy-file cmake-rules
5853 (string-append "fortune-mod/cmake/"
5854 (strip-store-file-name cmake-rules)))
abf06df2 5855 (chdir "fortune-mod")
61857323
PN
5856 ;; TODO: Valgrind tests fail for some reason.
5857 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
5858 (delete-file "tests/t/valgrind.t")
abf06df2 5859 #t)))
b1642338 5860 (add-after 'install 'fix-install-directory
b1642338 5861 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
5862 ;; Move binary from "games/" to "bin/" and remove the latter. This
5863 ;; is easier than patching CMakeLists.txt since the tests hard-code
5864 ;; the location as well.
5865 (let* ((out (assoc-ref outputs "out"))
5866 (bin (string-append out "/bin"))
5867 (games (string-append out "/games")))
5868 (rename-file (string-append games "/fortune")
5869 (string-append bin "/fortune"))
5870 (rmdir games)
b1642338
PN
5871 #t))))))
5872 (inputs `(("recode" ,recode)))
5873 (native-inputs
5874 `(("perl" ,perl)
5875 ;; The following is only needed for tests.
5876 ("perl-file-find-object" ,perl-file-find-object)
5877 ("perl-test-differences" ,perl-test-differences)
5878 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
5879 ("perl-io-all" ,perl-io-all)
5880 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
5881 ("cmake-rules"
5882 ,(origin
5883 (method url-fetch)
5884 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
d5a48184
LC
5885 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5886 "shlomif-cmake-modules/Shlomif_Common.cmake"))
b1642338
PN
5887 (sha256
5888 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))))
5889 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
5890 (synopsis "The Fortune Cookie program from BSD games")
5891 (description "Fortune is a command-line utility which displays a random
5892quotation from a collection of quotes.")
5893 (license license:bsd-4)))
dc70ff2a 5894
5895(define xonotic-data
5896 (package
5897 (name "xonotic-data")
5898 (version "0.8.2")
5899 (source
5900 (origin
5901 (method url-fetch)
5902 (uri (string-append "http://dl.xonotic.org/xonotic-"
5903 version ".zip"))
5904 (file-name (string-append name "-" version ".zip"))
5905 (sha256
5906 (base32
5907 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
5908 (build-system trivial-build-system)
5909 (native-inputs
5910 `(("unzip" ,unzip)))
5911 (arguments
5912 `(#:modules ((guix build utils))
5913 #:builder
5914 (begin
5915 (use-modules (guix build utils))
5916 (let* ((out (assoc-ref %outputs "out"))
5917 (xonotic (string-append out "/share/xonotic"))
5918 (source (assoc-ref %build-inputs "source"))
5919 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
5920 (copy-file source (string-append ,name "-" ,version ".zip"))
5921 (invoke unzip (string-append ,name "-" ,version ".zip"))
5922 (mkdir-p out)
5923 (mkdir-p xonotic)
5924 (chdir "Xonotic")
5925 (copy-recursively "data"
5926 (string-append xonotic "/data"))
5927 (copy-recursively "server"
5928 (string-append xonotic "/server"))
5929 (install-file "key_0.d0pk" xonotic)))))
5930 (home-page "http://xonotic.org")
5931 (synopsis "Data files for Xonotic")
5932 (description
5933 "Xonotic-data provides the data files required by the game Xonotic.")
5934 (license (list license:gpl2+
9b9db6c4 5935 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 5936
5937(define-public xonotic
5938 (package
5939 (name "xonotic")
5940 (version "0.8.2")
5941 (source
5942 (origin
5943 (method url-fetch)
5944 (uri (string-append "http://dl.xonotic.org/xonotic-"
5945 version "-source.zip"))
5946 (file-name (string-append name "-" version ".zip"))
5947 (sha256
5948 (base32
5949 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
5950 (build-system gnu-build-system)
5951 (arguments
5952 `(#:configure-flags (list (string-append "--prefix="
5953 (assoc-ref %outputs "out"))
5954 "--disable-rijndael")
5955 #:phases
5956 (modify-phases %standard-phases
5957 (add-before 'configure 'make-darkplaces
5958 (lambda* (#:key outputs #:allow-other-keys)
5959 (let* ((out (assoc-ref outputs "out"))
5960 (sharedir (string-append out "/share/xonotic/")))
5961 (invoke "make" "-C" "source/darkplaces"
5962 (string-append "DP_FS_BASEDIR="
5963 sharedir)
5964 "DP_LINK_TO_LIBJPEG=1"
5965 "DP_SOUND_API=ALSA"
5966 "CC=gcc"
5967 "-f" "makefile"
5968 "cl-release")
5969 (invoke "make" "-C" "source/darkplaces"
5970 (string-append "DP_FS_BASEDIR="
5971 sharedir)
5972 "DP_LINK_TO_LIBJPEG=1"
5973 "DP_SOUND_API=ALSA"
5974 "CC=gcc"
5975 "-f" "makefile"
5976 "sdl-release")
5977 (invoke "make" "-C" "source/darkplaces"
5978 (string-append "DP_FS_BASEDIR="
5979 sharedir)
5980 "DP_LINK_TO_LIBJPEG=1"
5981 "DP_SOUND_API=ALSA"
5982 "CC=gcc"
5983 "-f" "makefile"
5984 "sv-release"))))
5985 (add-before 'configure 'bootstrap
5986 (lambda _
5987 (chdir "source/d0_blind_id")
5988 (invoke "sh" "autogen.sh")))
5989 (add-after 'build 'install-desktop-entry
5990 (lambda* (#:key outputs #:allow-other-keys)
5991 ;; Add .desktop files for the 2 variants and the symlink
5992 (let* ((output (assoc-ref outputs "out"))
5993 (apps (string-append output "/share/applications")))
5994 (mkdir-p apps)
5995 (with-output-to-file
5996 (string-append apps "/xonotic-glx.desktop")
5997 (lambda _
5998 (format #t
5999 "[Desktop Entry]~@
6000 Name=xonotic-glx~@
6001 Comment=Xonotic glx~@
6002 Exec=~a/bin/xonotic-glx~@
6003 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6004 Icon=xonotic~@
6005 Categories=Game~@
dc70ff2a 6006 Type=Application~%"
6007 output)))
6008 (with-output-to-file
6009 (string-append apps "/xonotic-sdl.desktop")
6010 (lambda _
6011 (format #t
6012 "[Desktop Entry]~@
6013 Name=xonotic-sdl~@
6014 Comment=Xonotic sdl~@
6015 Exec=~a/bin/xonotic-sdl~@
6016 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6017 Icon=xonotic~@
6018 Categories=Game~@
dc70ff2a 6019 Type=Application~%"
6020 output)))
6021 (with-output-to-file
6022 (string-append apps "/xonotic.desktop")
6023 (lambda _
6024 (format #t
6025 "[Desktop Entry]~@
6026 Name=xonotic~@
6027 Comment=Xonotic~@
6028 Exec=~a/bin/xonotic-glx~@
6029 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6030 Icon=xonotic~@
6031 Categories=Game~@
dc70ff2a 6032 Type=Application~%"
6033 output)))
6034 #t)))
6035 (add-after 'install-desktop-entry 'install-icons
6036 (lambda* (#:key outputs #:allow-other-keys)
6037 (let ((out (assoc-ref outputs "out")))
6038 (with-directory-excursion "../../misc/logos/icons_png/"
6039 (for-each
6040 (lambda (file)
6041 (let* ((size (string-filter char-numeric? file))
6042 (icons (string-append out "/share/icons/hicolor/"
6043 size "x" size "/apps")))
6044 (mkdir-p icons)
6045 (copy-file file (string-append icons "/xonotic.png"))))
6046 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6047 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6048 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6049 (add-after 'install-icons 'install-binaries
6050 (lambda* (#:key outputs #:allow-other-keys)
6051 (let ((out (assoc-ref outputs "out")))
6052 (define (install src dst)
6053 (let ((dst (string-append out dst)))
6054 (mkdir-p (dirname dst))
6055 (copy-file src dst)))
6056 (mkdir-p (string-append out "/bin"))
6057 (install "../darkplaces/darkplaces-dedicated"
6058 "/bin/xonotic-dedicated")
6059 (install "../darkplaces/darkplaces-glx"
6060 "/bin/xonotic-glx")
6061 (install "../darkplaces/darkplaces-sdl"
6062 "/bin/xonotic-sdl")
6063 ;; Provide a default xonotic executable, defaulting to SDL.
6064 (symlink (string-append out "/bin/xonotic-sdl")
6065 (string-append out "/bin/xonotic"))
6066 #t)))
6067 (add-after 'install-binaries 'install-data
6068 (lambda* (#:key outputs inputs #:allow-other-keys)
6069 (let* ((out (assoc-ref outputs "out"))
6070 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6071 (symlink (string-append data "/share/xonotic")
6072 (string-append out "/share/xonotic"))
dc70ff2a 6073 #t)))
6074 (add-after 'install-binaries 'wrap-binaries
6075 (lambda* (#:key outputs inputs #:allow-other-keys)
6076 ;; Curl and libvorbis need to be wrapped so that we get
6077 ;; sound and networking.
6078 (let* ((out (assoc-ref outputs "out"))
6079 (bin (string-append out "/bin/xonotic"))
6080 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6081 (bin-glx (string-append out "/bin/xonotic-glx"))
6082 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6083 (curl (assoc-ref inputs "curl"))
6084 (vorbis (assoc-ref inputs "libvorbis")))
6085 (wrap-program bin
6086 `("LD_LIBRARY_PATH" ":" prefix
6087 (,(string-append curl "/lib:" vorbis "/lib"))))
6088 (wrap-program bin-sdl
6089 `("LD_LIBRARY_PATH" ":" prefix
6090 (,(string-append curl "/lib:" vorbis "/lib"))))
6091 (wrap-program bin-glx
6092 `("LD_LIBRARY_PATH" ":" prefix
6093 (,(string-append curl "/lib:" vorbis "/lib"))))
6094 (wrap-program bin-dedicated
6095 `("LD_LIBRARY_PATH" ":" prefix
6096 (,(string-append curl "/lib:" vorbis "/lib"))))
6097 #t))))))
6098 (inputs
6099 `(("xonotic-data" ,xonotic-data)
6100 ("alsa-lib" ,alsa-lib)
6101 ("curl" ,curl)
6102 ("libjpeg" ,libjpeg)
6103 ("libmodplug" ,libmodplug)
6104 ("libvorbis" ,libvorbis)
6105 ("libogg" ,libogg)
6106 ("libxpm" ,libxpm)
6107 ("libxxf86dga" ,libxxf86dga)
6108 ("libxxf86vm" ,libxxf86vm)
6109 ("libx11" ,libx11)
6110 ("libxext" ,libxext)
6111 ("libxau" ,libxau)
6112 ("libxdmcp" ,libxdmcp)
6113 ("mesa" ,mesa)
6114 ("glu" ,glu)
6115 ("freetype" ,freetype)
6116 ("sdl2" ,sdl2)
6117 ("libpng" ,libpng)
6118 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6119 (native-inputs
6120 `(("unzip" ,unzip)
6121 ("autoconf" ,autoconf)
6122 ("automake" ,automake)
6123 ("pkg-config" ,pkg-config)
6124 ("libtool" ,libtool)
6125 ("gmp" ,gmp)))
6126 (home-page "http://xonotic.org")
6127 (synopsis "Fast-paced first-person shooter game")
6128 (description
6129 "Xonotic is a free, fast-paced first-person shooter.
6130The project is geared towards providing addictive arena shooter
6131gameplay which is all spawned and driven by the community itself.
6132Xonotic is a direct successor of the Nexuiz project with years of
6133development between them, and it aims to become the best possible
6134open-source FPS of its kind.")
6135 (license (list license:gpl2+
6136 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6137 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6138
6139(define-public frotz
6140 (package
6141 (name "frotz")
6142 (version "2.44")
6143 (source (origin
6144 (method url-fetch)
6145 (uri (list (string-append
6146 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6147 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6148 (string-append
6149 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6150 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6151 (sha256
6152 (base32
6153 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6154 (build-system gnu-build-system)
6155 (arguments
6156 `(#:tests? #f ; there are no tests
6157 #:phases
6158 (modify-phases %standard-phases
6159 (delete 'configure)
6160 (add-before 'build 'curses
6161 (lambda _
6162 (substitute* "Makefile"
6163 (("lcurses") "lncurses"))
6164 #t))
6165 (replace 'install
6166 (lambda* (#:key outputs #:allow-other-keys)
6167 (let* ((out (assoc-ref outputs "out"))
6168 (bin (string-append out "/bin"))
6169 (man (string-append out "/share/man/man6")))
6170 (install-file "frotz" bin)
6171 (mkdir-p man)
6172 (install-file "doc/frotz.6" man)
6173 #t))))))
6174 (inputs `(("libmodplug" ,libmodplug)
6175 ("libsamplerate" ,libsamplerate)
6176 ("libsndfile" ,libsndfile)
6177 ("libvorbis" ,libvorbis)
6178 ("ncurses" ,ncurses)))
6179 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6180 (description "Frotz is an interpreter for Infocom games and other Z-machine
6181games in the text adventure/interactive fiction genre. This version of Frotz
6182complies with standard 1.0 of Graham Nelson's specification. It plays all
6183Z-code games V1-V8, including V6, with sound support through libao, and uses
6184ncurses for text display.")
6185 (home-page "http://frotz.sourceforge.net")
6186 (license license:gpl2+)))
6187
6188(define-public frotz-dumb-terminal
6189 (package
6190 (name "frotz-dumb-terminal")
6191 (version "2.44")
6192 (source (origin
6193 (method url-fetch)
6194 (uri (list (string-append
6195 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6196 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6197 (string-append
6198 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6199 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6200 (sha256
6201 (base32
6202 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6203 (build-system gnu-build-system)
6204 (arguments
6205 `(#:tests? #f ; there are no tests
6206 #:phases
6207 (modify-phases %standard-phases
6208 (delete 'configure)
6209 (replace 'build
6210 (lambda _
6211 (invoke "make" "dumb")))
6212 (replace 'install
6213 (lambda* (#:key outputs #:allow-other-keys)
6214 (let* ((out (assoc-ref outputs "out"))
6215 (bin (string-append out "/bin"))
6216 (man (string-append out "/share/man/man6")))
6217 (install-file "dfrotz" bin)
6218 (mkdir-p man)
6219 (install-file "doc/dfrotz.6" man)
6220 #t))))))
6221 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6222 (description "Frotz is an interpreter for Infocom games and
6223other Z-machine games in the text adventure/interactive fiction genre.
6224dfrotz is the dumb interface version. You get no screen control; everything
6225is just printed to the terminal line by line. The terminal handles all the
6226scrolling. Maybe you'd like to experience what it's like to play Adventure on
6227a teletype. A much cooler use for compiling Frotz with the dumb interface is
6228that it can be wrapped in CGI scripting, PHP, and the like to allow people
6229to play games on webpages. It can also be made into a chat bot.")
6230 (home-page "http://frotz.sourceforge.net")
6231 (license license:gpl2+)))
6232
6233(define-public frotz-sdl
6234 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6235 (package
6236 (name "frotz-sdl")
6237 (version "2.45pre")
6238 (source (origin
6239 (method git-fetch)
6240 (uri (git-reference
6241 (url "https://gitlab.com/DavidGriffith/frotz")
6242 (commit commit)))
6243 (sha256
6244 (base32
6245 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6246 (file-name (git-file-name name version))))
6247 (build-system gnu-build-system)
6248 (arguments
6249 `(#:tests? #f ; there are no tests
6250 #:phases
6251 (modify-phases %standard-phases
6252 (delete 'configure)
6253 (add-before 'build 'patch-makefile
6254 (lambda _
6255 (substitute* "Makefile"
6256 (("lcurses") "lncurses")
6257 (("^BUILD_DATE_TIME =.*$")
6258 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6259 #t))
6260 (replace 'build
6261 (lambda _
6262 (invoke "make" "sdl")))
6263 (replace 'install
6264 (lambda* (#:key outputs #:allow-other-keys)
6265 (let* ((out (assoc-ref outputs "out"))
6266 (bin (string-append out "/bin"))
6267 (man (string-append out "/share/man/man6")))
6268 (install-file "sfrotz" bin)
6269 (mkdir-p man)
6270 (install-file "doc/sfrotz.6" man)
6271 #t))))))
6272 (native-inputs
6273 `(("pkg-config" ,pkg-config)
6274 ("which" ,which)
6275 ("perl" ,perl)))
6276 (inputs `(("sdl2" ,sdl2)
6277 ("sdl2-mixer" ,sdl2-mixer)
6278 ("libmodplug" ,libmodplug)
6279 ("libsamplerate" ,libsamplerate)
6280 ("libsndfile" ,libsndfile)
6281 ("libvorbis" ,libvorbis)
6282 ("ncurses" ,ncurses)
6283 ("freetype" ,freetype)
6284 ("libjpeg-turbo" ,libjpeg-turbo)))
6285 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6286 (description "Frotz is an interpreter for Infocom games and other Z-machine
6287games in the text adventure/interactive fiction genre. This version of Frotz
6288using SDL fully supports all these versions of the Z-Machine including the
6289graphical version 6. Graphics and sound are created through the use of the SDL
6290libraries. AIFF sound effects and music in MOD and OGG formats are supported
6291when packaged in Blorb container files or optionally from individual files.")
6292 (home-page "http://frotz.sourceforge.net")
6293 (license license:gpl2+))))
18ebaa9e
EB
6294
6295(define-public libmanette
6296 (package
6297 (name "libmanette")
737e32a4 6298 (version "0.2.3")
18ebaa9e
EB
6299 (source (origin
6300 (method url-fetch)
5b35bdaa 6301 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6302 (version-major+minor version) "/"
5b35bdaa 6303 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6304 (sha256
6305 (base32
737e32a4 6306 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6307 (build-system meson-build-system)
6308 (native-inputs
6309 `(("glib" ,glib "bin") ; for glib-compile-resources
6310 ("gobject-introspection" ,gobject-introspection)
6311 ("pkg-config" ,pkg-config)
6312 ("vala" ,vala)))
6313 (inputs
6314 `(("libevdev" ,libevdev)
6315 ("libgudev" ,libgudev)))
6316 (home-page "https://wiki.gnome.org/Apps/Games")
6317 (synopsis "Game controller library")
6318 (description "Libmanette is a small GObject library giving you simple
6319access to game controllers. It supports the de-facto standard gamepads as
6320defined by the W3C standard Gamepad specification or as implemented by the SDL
6321GameController.")
6322 (license license:lgpl2.1+)))
39c676c4
EB
6323
6324(define-public quadrapassel
6325 (package
6326 (name "quadrapassel")
6327 (version "3.31.3")
6328 (source (origin
6329 (method url-fetch)
49598564 6330 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6331 (version-major+minor version) "/"
49598564 6332 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6333 (sha256
6334 (base32
6335 "08i01nsgfb502xzzrrcxxbs7awb0j1h4c08vmj0j18ipa1sz8vb8"))))
6336 (build-system glib-or-gtk-build-system)
6337 (native-inputs
6338 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6339 ("gettext" ,gnu-gettext)
6340 ("glib" ,glib "bin") ;for glib-compile-resources
6341 ("itstool" ,itstool)
6342 ("libxml2" ,libxml2) ;for xmllint
6343 ("pkg-config" ,pkg-config)
6344 ("vala" ,vala)))
6345 (inputs
6346 `(("clutter" ,clutter)
6347 ("clutter-gtk" ,clutter-gtk)
6348 ("gtk+" ,gtk+)
6349 ("libcanberra" ,libcanberra)
6350 ("libmanette" ,libmanette)
6351 ("librsvg" ,librsvg)))
6352 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6353 (synopsis "GNOME version of Tetris")
6354 (description "Quadrapassel comes from the classic falling-block game,
6355Tetris. The goal of the game is to create complete horizontal lines of
6356blocks, which will disappear. The blocks come in seven different shapes made
6357from four blocks each: one straight, two L-shaped, one square, and two
6358S-shaped. The blocks fall from the top center of the screen in a random
6359order. You rotate the blocks and move them across the screen to drop them in
6360complete lines. You score by dropping blocks fast and completing lines. As
6361your score gets higher, you level up and the blocks fall faster.")
6362 (license license:gpl2+)))
560df540
EF
6363
6364(define-public endless-sky
6365 (package
6366 (name "endless-sky")
aa641984 6367 (version "0.9.10")
560df540
EF
6368 (source
6369 (origin
6370 (method git-fetch)
6371 (uri (git-reference
6372 (url "https://github.com/endless-sky/endless-sky")
6373 (commit (string-append "v" version))))
6374 (file-name (git-file-name name version))
6375 (sha256
6376 (base32
aa641984 6377 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6378 (build-system scons-build-system)
6379 (arguments
6380 `(#:scons ,scons-python2
6381 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6382 #:tests? #f ; no tests
6383 #:phases
6384 (modify-phases %standard-phases
6385 (add-after 'unpack 'patch-resource-locations
6386 (lambda* (#:key outputs #:allow-other-keys)
6387 (substitute* "source/Files.cpp"
6388 (("/usr/local/")
6389 (string-append (assoc-ref outputs "out") "/")))
6390 #t))
6391 (add-after 'unpack 'patch-scons
6392 (lambda _
6393 (substitute* "SConstruct"
6394 ;; Keep environmental variables
6395 (("Environment\\(\\)")
6396 "Environment(ENV = os.environ)")
6397 ;; Install into %out/bin
6398 (("games\"") "bin\""))
6399 #t)))))
6400 (inputs
6401 `(("glew" ,glew)
6402 ("libjpeg" ,libjpeg-turbo)
6403 ("libmad" ,libmad)
6404 ("libpng" ,libpng)
6405 ("openal" ,openal)
6406 ("sdl2" ,sdl2)))
6407 (home-page "https://endless-sky.github.io/")
6408 (synopsis "2D space trading and combat game")
6409 (description "Endless Sky is a 2D space trading and combat game. Explore
6410other star systems. Earn money by trading, carrying passengers, or completing
6411missions. Use your earnings to buy a better ship or to upgrade the weapons and
6412engines on your current one. Blow up pirates. Take sides in a civil war. Or
6413leave human space behind and hope to find friendly aliens whose culture is more
6414civilized than your own.")
6415 (license (list license:gpl3+
6416 license:cc-by-sa3.0
6417 license:cc-by-sa4.0
6418 license:public-domain))))
1faf0a04
NG
6419
6420(define-public stepmania
6421 (package
6422 (name "stepmania")
6423 (version "5.1.0-b2")
6424 (source
6425 (origin
6426 (method git-fetch)
6427 (uri (git-reference
6428 (url "https://github.com/stepmania/stepmania.git")
6429 (commit (string-append "v" version))))
6430 (file-name (git-file-name name version))
6431 (sha256
6432 (base32
6433 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6434 (modules '((guix build utils)))
6435 (snippet
6436 '(begin
6437 ;; Remove song files, which are licensed under a non-commercial
6438 ;; clause, and a course pointing to them.
6439 (for-each delete-file-recursively
6440 '("Songs/StepMania 5/Goin' Under"
6441 "Songs/StepMania 5/MechaTribe Assault"
6442 "Songs/StepMania 5/Springtime"))
6443 (for-each delete-file '("Courses/Default/Jupiter.crs"
6444 "Courses/Default/Jupiter.png"))
6445 ;; Unbundle libpng.
6446 (substitute* "extern/CMakeLists.txt"
6447 (("include\\(CMakeProject-png.cmake\\)") ""))
6448 (delete-file-recursively "extern/libpng")
6449 #t))))
6450 (build-system cmake-build-system)
6451 (arguments
6452 `(#:tests? #f ;FIXME: couldn't find how to run tests
6453 #:build-type "Release"
6454 #:out-of-source? #f ;for the 'install-desktop' phase
6455 #:configure-flags
6456 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6457 ;; SSE instructions are available on Intel systems only.
6458 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6459 (%current-system)))
6460 '("x64_64" "i686"))
6461 '()
6462 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6463 ;; Configuration cannot find GTK2 without the two following
6464 ;; flags.
6465 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6466 (assoc-ref %build-inputs "gtk+")
6467 "/lib/gtk-2.0/include")
6468 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6469 (assoc-ref %build-inputs "glib")
6470 "/lib/glib-2.0/include"))
6471 #:phases
6472 (modify-phases %standard-phases
47746772 6473 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6474 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6475 (let ((out (assoc-ref outputs "out")))
6476 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6477 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6478 (string-append "\"" out
6479 "/share/stepmania/GtkModule.so\"")))
6480 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6481 (("Root = sDirOfExecutable")
6482 (string-append "Root = \"" out "/share/stepmania/\""))
6483 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6484 (string-append "\"" out "/share/stepmania/" dir "\"")))
6485 (substitute* "src/RageFileManager.cpp"
6486 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6487 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6488 #t))
1faf0a04
NG
6489 (add-after 'unpack 'fix-install-subdir
6490 ;; Installation would be done in "%out/stepmania-X.Y", but we
6491 ;; prefer the more common layout "%out/share/stepmania".
6492 (lambda _
6493 (substitute* "src/CMakeLists.txt"
6494 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6495 #t))
6496 (add-after 'unpack 'unbundle-libpng
6497 (lambda* (#:key inputs #:allow-other-keys)
6498 (substitute* "src/CMakeLists.txt"
6499 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6500 (string-append (assoc-ref inputs "libpng") "/include")))
6501 #t))
6502 (add-after 'install 'install-executable
6503 (lambda* (#:key outputs #:allow-other-keys)
6504 (let* ((out (assoc-ref outputs "out"))
6505 (bin (string-append out "/bin"))
6506 (exe (string-append out "/share/stepmania/stepmania")))
6507 (mkdir-p bin)
6508 (symlink exe (string-append bin "/stepmania"))
6509 #t)))
6510 (add-after 'install-executable 'install-desktop
6511 (lambda* (#:key outputs #:allow-other-keys)
6512 (let* ((out (assoc-ref outputs "out"))
6513 (share (string-append out "/share"))
6514 (applications (string-append share "/applications"))
6515 (icons (string-append share "/icons")))
6516 (install-file "stepmania.desktop" applications)
6517 (mkdir-p icons)
6518 (copy-recursively "icons" icons)
6519 #t)))
6520 ;; Move documentation in a more usual place, i.e.,
6521 ;; "%out/share/doc/stepmania/".
6522 (add-after 'install-desktop 'install-doc
6523 (lambda* (#:key outputs #:allow-other-keys)
6524 (let* ((out (assoc-ref outputs "out"))
6525 (share (string-append out "/share")))
6526 (with-directory-excursion share
6527 (mkdir-p "doc")
6528 (symlink "../stepmania/Docs" "doc/stepmania"))
6529 #t))))))
6530 (native-inputs
6531 `(("pkg-config" ,pkg-config)
6532 ("yasm" ,yasm)))
6533 (inputs
6534 `(("alsa-lib" ,alsa-lib)
6535 ;; Per upstream, StepMania is only guaranteed to work with a very
6536 ;; specific FFmpeg version, which is included in the repository as
6537 ;; a Git submodule. This particular version requirement usually
6538 ;; changes every few years.
6539 ("ffmpeg" ,ffmpeg-for-stepmania)
6540 ("glib" ,glib)
6541 ("glew" ,glew)
6542 ("gtk+" ,gtk+-2)
6543 ("jsoncpp" ,jsoncpp)
6544 ("libpng" ,libpng)
6545 ("libjpeg" ,libjpeg-8)
6546 ("libmad" ,libmad)
6547 ("libogg" ,libogg)
6548 ("libva" ,libva)
6549 ("libvorbis" ,libvorbis)
6550 ("libxinerama" ,libxinerama)
6551 ("libxrandr" ,libxrandr)
6552 ("mesa" ,mesa)
6553 ("pcre" ,pcre)
6554 ("pulseaudio" ,pulseaudio)
6555 ("sdl" ,sdl2)
6556 ("udev" ,eudev)
6557 ("zlib" ,zlib)))
6558 (synopsis "Advanced rhythm game designed for both home and arcade use")
6559 (description "StepMania is a dance and rhythm game. It features 3D
6560graphics, keyboard and dance pad support, and an editor for creating your own
6561steps.
6562
6563This package provides the core application, but no song is shipped. You need
6564to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6565 (home-page "https://www.stepmania.com")
6566 (license license:expat)))
6567
649220ad 6568(define-public btanks
ca32afac 6569 (package
649220ad 6570 (name "btanks")
ca32afac
RW
6571 (version "0.9.8083")
6572 (source
6573 (origin
6574 (method url-fetch)
6575 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6576 "btanks-" version ".tar.bz2"))
6577 (sha256
6578 (base32
6579 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6580 (build-system scons-build-system)
6581 (arguments
6582 `(#:tests? #f ; there are none
6583 #:scons ,scons-python2
6584 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6585 #:phases
6586 (modify-phases %standard-phases
6587 (add-after 'unpack 'replace-removed-scons-syntax
6588 (lambda _
6589 (substitute* "SConstruct"
6590 (("Options") "Variables")
6591 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6592 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6593 #t))
6594 (add-after 'set-paths 'set-sdl-paths
6595 (lambda* (#:key inputs #:allow-other-keys)
6596 (setenv "CPATH"
6597 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6598 "/include/SDL:"
6599 (or (getenv "CPATH") "")))
ca32afac
RW
6600 #t))
6601 (add-after 'unpack 'fix-compilation-errors
6602 (lambda _
6603 (substitute* "mrt/base_file.h"
6604 (("#include <string>" m)
6605 (string-append m "\n#include <sys/types.h>")))
6606 (substitute* '("engine/sl08/sl08.h"
6607 "engine/sl08/sl08.py")
6608 (("signal = NULL") "signal = 0")
6609 (("object\\(NULL\\)") "object(0)")
6610 (("func\\(NULL\\)") "func(0)")
6611 ((" connect\\(signal_ref\\)")
6612 " this->connect(signal_ref)"))
6613 (substitute* "math/range_list.h"
6614 ((" lower_bound\\(value\\)")
6615 " this->lower_bound(value)")
6616 ((" erase\\(i\\)")
6617 " this->erase(i)"))
6618 (substitute* "clunk/source.cpp"
6619 (("using namespace clunk" m)
6620 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6621 #t))
6622 (add-after 'unpack 'find-lua
6623 (lambda _
6624 (substitute* "engine/SConscript"
6625 (("lua5.1") "lua-5.1")
6626 (("bt_libs.append\\(lua\\)")
6627 "bt_libs.append(\"lua\")"))
6628 #t)))))
6629 (inputs
6630 `(("expat" ,expat)
6631 ("glu" ,glu)
6632 ("libsmpeg" ,libsmpeg-with-sdl1)
6633 ("libvorbis" ,libvorbis)
6634 ("lua51" ,lua-5.1)
6635 ("sdl" ,(sdl-union (list sdl
6636 sdl-mixer
6637 sdl-image
6638 sdl-ttf)))
6639 ("zlib" ,zlib)))
6640 (native-inputs
6641 `(("pkg-config" ,pkg-config)
6642 ("zip" ,zip)))
6643 (home-page "http://btanks.sourceforge.net")
6644 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6645 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6646game, where you can choose one of three vehicles and eliminate your enemy
6647using the whole arsenal of weapons. It has original cartoon-like graphics and
6648cool music, it’s fun and dynamic, it has several network modes for deathmatch
6649and cooperative.")
ca32afac
RW
6650 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6651 ;; released under GPLv2 or later. It comes with extra exceptions for the
6652 ;; developers.
6653 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6654
649220ad
NG
6655(define-public battle-tanks
6656 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6657
c06709b8
RW
6658(define-public slingshot
6659 (package
6660 (name "slingshot")
6661 (version "0.9")
6662 (source
6663 (origin
6664 (method git-fetch)
6665 (uri (git-reference
6666 (url "https://github.com/ryanakca/slingshot.git")
6667 (commit version)))
6668 (file-name (git-file-name name version))
6669 (sha256
6670 (base32
6671 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6672 (build-system python-build-system)
6673 (arguments
6674 `(#:python ,python-2))
6675 (inputs
6676 `(("python-pygame" ,python2-pygame)))
6677 (home-page "https://github.com/ryanakca/slingshot")
6678 (synopsis "Simple 2D shooting strategy game set in space")
6679 (description "Slingshot is a two-dimensional strategy game where two
6680players attempt to shoot one another through a section of space populated by
6681planets. The main feature of the game is that the shots, once fired, are
6682affected by the gravity of the planets.")
6683 (license license:gpl2+)))
8ada024b
RW
6684
6685(define-public 4dtris
6686 (package
6687 (name "4dtris")
6688 (version "0.4.3")
6689 (source
6690 (origin
6691 (method url-fetch)
6692 (uri (string-append "https://launchpad.net/4dtris/"
6693 (version-major+minor version)
6694 "/" version "/+download/4dtris_"
6695 version ".orig.tar.gz"))
6696 (sha256
6697 (base32
6698 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6699 (build-system gnu-build-system)
6700 (arguments
6701 `(#:phases
6702 (modify-phases %standard-phases
6703 (add-after 'unpack 'fix-install-directories
6704 (lambda* (#:key outputs #:allow-other-keys)
6705 (let ((out (assoc-ref outputs "out")))
6706 (substitute* "Makefile.in"
6707 (("bindir = /usr/games")
6708 (string-append "bindir = " out "/bin"))
6709 (("/usr/share/applications")
6710 (string-append out "/share/applications"))
6711 (("/usr/share/games/4dtris")
6712 (string-append out "/share/4dtris"))))
6713 #t))
6714 (add-after 'set-paths 'set-sdl-paths
6715 (lambda* (#:key inputs #:allow-other-keys)
6716 (setenv "CPATH"
6717 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6718 "/include/SDL:"
6719 (or (getenv "CPATH") "")))
8ada024b
RW
6720 #t)))))
6721 (inputs
6722 `(("fontconfig" ,fontconfig)
6723 ("freeglut" ,freeglut)
6724 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6725 (home-page "https://launchpad.net/4dtris/")
6726 (synopsis "4D Tetris")
6727 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6728game field is extended to 4D space, which has to filled up by the gamer with
67294D hyper cubes.")
6730 (license license:gpl3)))
6731
8044e584
PN
6732(define-public arx-libertatis
6733 (package
6734 (name "arx-libertatis")
6735 (version "1.1.2")
6736 (source
6737 (origin
6738 (method url-fetch)
6739 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6740 version ".tar.xz"))
6741 (sha256
6742 (base32
6743 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6744 (build-system cmake-build-system)
6745 (outputs '("out" "installer"))
6746 (arguments
6747 '(#:tests? #f ; No tests.
6748 #:phases
6749 (modify-phases %standard-phases
6750 (add-after 'unpack 'fix-install-helper-paths
6751 (lambda* (#:key inputs #:allow-other-keys)
6752 (let ((p7zip (assoc-ref inputs "p7zip"))
6753 (innoextract (assoc-ref inputs "innoextract"))
6754 (wget (assoc-ref inputs "wget"))
6755 (zenity (assoc-ref inputs "zenity")))
6756 (substitute* "scripts/arx-install-data"
6757 (("have innoextract")
6758 (string-append "have " innoextract "/bin/innoextract"))
6759 (("then innoextract")
6760 (string-append "then " innoextract "/bin/innoextract"))
6761 (("else innoextract")
6762 (string-append "else " innoextract "/bin/innoextract"))
6763 (("for _extract_zip_sz in 7za 7z")
6764 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6765 (("else if have 7z")
6766 (string-append "else if have " p7zip "/bin/7za"))
6767 (("7z x -tiso")
6768 (string-append p7zip "/bin/7z x -tiso"))
6769 (("if have wget")
6770 (string-append "if have " wget "/bin/wget"))
6771 (("wget -O")
6772 (string-append wget "/bin/wget -O"))
6773 (("for backend in \\$preferred zenity")
6774 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6775 (("zenity +--title")
6776 (string-append zenity "/bin/zenity --title"))
6777 (("^zenity\\)")
6778 (string-append zenity "/bin/zenity)"))))
6779 #t))
6780 (add-after 'install 'move-installer
6781 (lambda* (#:key outputs #:allow-other-keys)
6782 (let ((out (assoc-ref outputs "out"))
6783 (installer (assoc-ref outputs "installer")))
6784 (mkdir-p (string-append installer "/bin"))
6785 (rename-file (string-append out "/bin/arx-install-data")
6786 (string-append installer "/bin/arx-install-data"))))))))
6787 (inputs
6788 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
6789 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
6790 ("glew" ,glew)
6791 ("openal" ,openal)
6792 ("zlib" ,zlib)
6793 ("boost" ,boost)
6794 ("glm" ,glm)
6795 ("freetype" ,freetype)
6796 ;; The following are only needed by the arx-install-data script.
6797 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
6798 ("zenity" ,zenity) ; GUI for install-helper.
6799 ("wget" ,wget) ; Used by the install-helper to download the patch.
6800 ;; The install-helper needs it to extract the patch.
6801 ("innoextract" ,innoextract)))
6802 (home-page "https://arx-libertatis.org/")
6803 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
6804 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
6805first-person role-playing game / dungeon crawler developed by Arkane Studios.
6806This port however does not include the game data, so you need to obtain a copy
6807of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
6808features crafting, melee and ranged combat, as well as a unique casting system
6809where the player draws runes in real time to effect the desired spell.")
8044e584 6810 (license license:gpl3+)))
47903653 6811
649220ad 6812(define-public edgar
47903653 6813 (package
649220ad 6814 (name "edgar")
a50d6099 6815 (version "1.32")
47903653 6816 (source
6817 (origin
6818 (method url-fetch)
6819 (uri
6820 (string-append "https://github.com/riksweeney/edgar/releases/download/"
6821 version "/edgar-" version "-1.tar.gz"))
6822 (sha256
a50d6099 6823 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 6824 (build-system gnu-build-system)
067826ab 6825 (arguments '(#:tests? #f ; there are no tests
47903653 6826 #:make-flags
6827 (list "CC=gcc"
6828 (string-append "PREFIX=" (assoc-ref %outputs "out"))
6829 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
6830 #:phases
6831 (modify-phases %standard-phases
6832 (delete 'configure)
6833 (add-before 'build 'fix-env
6834 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
6835 (setenv "CPATH"
6836 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
6837 "/include/SDL2:"
6838 (or (getenv "CPATH") "")))
47903653 6839 #t)))))
067826ab
TGR
6840 (inputs
6841 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6842 ("zlib" ,zlib)))
47903653 6843 (native-inputs
6844 `(("pkg-config" ,pkg-config)
6845 ("autoconf" ,autoconf)
6846 ("automake" ,automake)
6847 ("gnu-gettext" ,gnu-gettext)
6848 ("libtool" ,libtool)
6849 ("which" ,which)))
6850 (synopsis "2d action platformer game")
6851 (description "The Legend of Edgar is a 2D platform game with a persistent world.
6852When Edgar's father fails to return home after venturing out one dark and stormy night,
6853Edgar fears the worst: he has been captured by the evil sorcerer who lives in
6854a fortress beyond the forbidden swamp.")
6855 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
6856 (license license:gpl2+)))
f95e33a7 6857
649220ad
NG
6858(define-public the-legend-of-edgar
6859 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
6860
6861(define-public openclonk
6862 (package
6863 (name "openclonk")
6864 (version "8.1")
6865 (source (origin
6866 (method url-fetch)
6867 (uri (string-append
6868 "https://www.openclonk.org/builds/release/" version "/"
6869 "openclonk-" version "-src.tar.bz2"))
6870 (sha256
6871 (base32
6872 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
6873 (build-system cmake-build-system)
6874 (arguments
6875 `(#:configure-flags '("-DAudio_TK=OpenAL")
6876 #:test-target "tests"
6877 #:phases
6878 (modify-phases %standard-phases
6879 (add-after 'unpack 'prepare-gmock
6880 (lambda* (#:key inputs #:allow-other-keys)
6881 (mkdir "gmock")
6882 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
6883 (substitute* "tests/CMakeLists.txt"
6884 (("/usr/src/gmock")
6885 (string-append (getcwd) "/gmock/googlemock"))
6886 (("/usr/src/gtest")
6887 (string-append (getcwd) "/gmock/googletest"))
6888 (("PATH_SUFFIXES \"src\" \"gtest\"")
6889 "PATH_SUFFIXES \"src\""))
6890 #t))
ee9eafc1
MB
6891 (add-after 'unpack 'adjust-backward-cpp-includes
6892 (lambda _
6893 ;; XXX: The bundled backward-cpp exports a CMake "interface"
6894 ;; that includes external libraries such as libdl from glibc.
6895 ;; By default, CMake interface includes are treated as "system
6896 ;; headers", and GCC behaves poorly when glibc is passed as a
6897 ;; system header (causing #include_next failures).
6898
6899 ;; Here we prevent targets that consume the Backward::Backward
6900 ;; interface from treating it as "system includes".
6901 (substitute* "CMakeLists.txt"
6902 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
6903 (string-append "set_property(TARGET " target " PROPERTY "
6904 "NO_SYSTEM_FROM_IMPORTED true)\n"
6905 all)))
6906 #t))
4e43e317
NG
6907 (add-after 'unpack 'add-libiberty
6908 ;; Build fails upon linking executables without this.
6909 (lambda _
6910 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
6911 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
6912 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
6913 #t))
6914 (add-after 'add-libiberty 'lax-freealut-requirement
6915 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
6916 ;; it as 1.0.1. Force minimal version.
6917 (lambda _
6918 (substitute* "cmake/FindAudio.cmake"
6919 (("freealut>=1.1.0") "freealut>=1.0.1"))
6920 #t))
6921 (add-after 'lax-freealut-requirement 'fix-directories
6922 ;; Prefer "$out/share/openclonk" over
6923 ;; "$out/share/games/openclonk". Also install "openclonk"
6924 ;; binary in "bin/", not "games/".
6925 (lambda _
6926 (substitute* "CMakeLists.txt"
6927 (("share/games/openclonk") "share/openclonk")
6928 (("TARGETS openclonk DESTINATION games")
6929 "TARGETS openclonk DESTINATION bin"))
6930 #t)))))
6931 (native-inputs
6932 `(("googlemock" ,(package-source googletest))
6933 ("googletest" ,googletest)
6934 ("pkg-config" ,pkg-config)))
6935 (inputs
6936 `(("freealut" ,freealut)
6937 ("freetype" ,freetype)
6938 ("glew" ,glew)
6939 ("libiberty" ,libiberty)
6940 ("libjpeg" ,libjpeg-turbo)
6941 ("libogg" ,libogg)
6942 ("libpng" ,libpng)
6943 ("libvorbis" ,libvorbis)
6944 ("libxrandr" ,libxrandr)
6945 ("mesa" ,mesa)
6946 ("miniupnpc" ,miniupnpc)
6947 ("openal" ,openal)
6948 ("qtbase" ,qtbase)
6949 ("readline" ,readline)
6950 ("sdl" ,sdl2)
6951 ("tinyxml" ,tinyxml)
6952 ("zlib" ,zlib)))
6953 (home-page "https://www.openclonk.org/")
6954 (synopsis
6955 "Multiplayer action game where you control small and nimble humanoids")
6956 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
6957often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 6958antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
6959robust humanoid beings. The game encourages free play but the normal goal is
6960to either exploit valuable resources from the earth by building a mine or
6961fight each other on an arena-like map.")
6962 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
6963 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
6964
6965(define-public flare-engine
6966 (package
6967 (name "flare-engine")
f9622ec7 6968 (version "1.11")
ad4f6442
NG
6969 (source (origin
6970 (method git-fetch)
6971 (uri (git-reference
6972 (url "https://github.com/flareteam/flare-engine.git")
6973 (commit (string-append "v" version))))
6974 (file-name (git-file-name name version))
6975 (sha256
6976 (base32
f9622ec7 6977 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
6978 (build-system cmake-build-system)
6979 (arguments
6980 `(#:tests? #f ;no test
6981 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
6982 (inputs
6983 `(("hicolor-icon-theme" ,hicolor-icon-theme)
6984 ("python" ,python-wrapper)
6985 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
6986 (home-page "http://www.flarerpg.org/")
6987 (synopsis "Action Roleplaying Engine")
6988 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
6989game engine built to handle a very specific kind of game: single-player 2D
6990action RPGs.")
6991 (license license:gpl3+)))
6992
6993(define-public flare-game
6994 (package
6995 (name "flare-game")
ffbaefc7 6996 (version "1.11")
ad4f6442
NG
6997 (source (origin
6998 (method git-fetch)
6999 (uri (git-reference
7000 (url "https://github.com/flareteam/flare-game.git")
7001 (commit (string-append "v" version))))
7002 (file-name (git-file-name name version))
7003 (sha256
7004 (base32
ffbaefc7 7005 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7006 (build-system cmake-build-system)
7007 (arguments
7008 `(#:tests? #f ;no test
7009 #:configure-flags '("-DDATADIR=share/flare")
7010 #:phases
7011 (modify-phases %standard-phases
7012 ;; Flare expects the mods to be located in the same folder.
7013 ;; Yet, "default" mod is in the engine, whereas the others
7014 ;; are in the current package. Merge everything here with
7015 ;; a symlink.
7016 (add-after 'install 'add-default-mod
7017 (lambda* (#:key inputs outputs #:allow-other-keys)
7018 (let* ((out (assoc-ref outputs "out"))
7019 (mods (string-append out "/share/flare/mods")))
7020 (with-directory-excursion mods
7021 (symlink (string-append (assoc-ref inputs "flare-engine")
7022 "/share/flare/mods/default")
7023 "default")))
7024 #t))
7025 (add-after 'install 'install-executable
7026 ;; The package only provides assets for the game, the
7027 ;; executable coming from "flare-engine". Since more than
7028 ;; one game may use the engine, we create a new executable,
7029 ;; "flare-game", which launches the engine with appropriate
7030 ;; parameters.
7031 (lambda* (#:key inputs outputs #:allow-other-keys)
7032 (let* ((out (assoc-ref outputs "out"))
7033 (bash (string-append (assoc-ref inputs "bash")
7034 "/bin/bash"))
7035 (flare (string-append (assoc-ref inputs "flare-engine")
7036 "/bin/flare"))
7037 (script (string-append out "/bin/flare-game")))
7038 (mkdir-p (dirname script))
7039 (call-with-output-file script
7040 (lambda (port)
7041 (format port
7042 "#!~a
7043exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7044 bash
7045 flare
7046 out)))
7047 (chmod script #o755))
7048 #t)))))
7049 (inputs
7050 `(("flare-engine" ,flare-engine)))
7051 (home-page "http://www.flarerpg.org/")
7052 (synopsis "Fantasy action RPG using the FLARE engine")
7053 (description "Flare is a single-player 2D action RPG with
7054fast-paced action and a dark fantasy style.")
7055 (license license:cc-by-sa3.0)))
660e0050
NG
7056
7057(define-public meritous
7058 (package
7059 (name "meritous")
7060 (version "1.5")
7061 (source (origin
7062 (method git-fetch)
7063 (uri (git-reference
7064 (url "https://gitlab.com/meritous/meritous.git")
7065 (commit (string-append "v" version))))
7066 (file-name (git-file-name name version))
7067 (sha256
7068 (base32
7069 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7070 (build-system gnu-build-system)
7071 (arguments
7072 `(#:tests? #f ;no test
7073 #:make-flags
7074 (list "CC=gcc"
7075 (string-append "prefix=" (assoc-ref %outputs "out")))
7076 #:phases
7077 (modify-phases %standard-phases
7078 (delete 'configure)
7079 (add-after 'unpack 'fix-sdl-path
7080 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7081 ;; directory, not SDL-union provided as an input to the package.
7082 ;; We force the latter with "--prefix=" option.
7083 (lambda* (#:key inputs #:allow-other-keys)
7084 (substitute* "Makefile"
7085 (("sdl-config" command)
7086 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7087 #t))
7088 (add-after 'unpack 'fix-crash
7089 ;; XXX: Songs are not present in the repository, due to licensing
7090 ;; issues. Yet, the game tries to load them, and, since it cannot
7091 ;; find them, crashes. Users cannot add them back, the store being
7092 ;; read-only, so we turn off background music altogether.
7093 (lambda _
7094 (substitute* "src/audio.c"
7095 (("PlayBackgroundMusic\\(new_track\\);" all)
7096 (string-append "// " all)))
7097 #t)))))
7098 (native-inputs
7099 `(("intltool" ,intltool)))
7100 (inputs
7101 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7102 ("zlib" ,zlib)))
7103 (home-page "https://gitlab.com/meritous/meritous")
7104 (synopsis "Action-adventure dungeon crawl game")
7105 (description "Far below the surface of the planet is a place of limitless
7106power. Those that seek to control such a utopia will soon bring an end to
7107themselves. Seeking an end to the troubles that plague him, PSI user Merit
7108journeys into the hallowed Orcus Dome in search of answers.
7109
7110Meritous is a action-adventure game with simple controls but a challenge to
7111find a balance of power versus recovery time during real-time battles. Set in
7112a procedurally generated world, the player can explore thousands of rooms in
7113search of powerful artifacts, tools to help them, and to eventually free the
7114Orcus Dome from evil.")
7115 (license license:gpl3+)))
472af999
RW
7116
7117(define-public marble-marcher
7118 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7119 (revision "1"))
7120 (package
7121 (name "marble-marcher")
7122 (version (git-version "0" revision commit))
7123 (source (origin
7124 (method git-fetch)
7125 (uri (git-reference
7126 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7127 (commit commit)))
7128 (file-name (git-file-name name version))
7129 (sha256
7130 (base32
7131 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7132 (build-system cmake-build-system)
7133 (arguments
7134 `(#:tests? #f ; there are none
7135 #:phases
7136 (modify-phases %standard-phases
7137 (add-after 'unpack 'embed-asset-directory
7138 (lambda* (#:key outputs #:allow-other-keys)
7139 (let ((assets (string-append (assoc-ref outputs "out")
7140 "/share/marble-marcher/assets/")))
7141 ;; Some of the files we're patching are
7142 ;; ISO-8859-1-encoded, so choose it as the default
7143 ;; encoding so the byte encoding is preserved.
7144 (with-fluids ((%default-port-encoding #f))
7145 (substitute* "src/Resource.rc"
7146 (("../assets/icon.ico")
7147 (string-append assets "icon.ico")))
7148 (substitute* "src/Res.h"
7149 (("assets/") assets))))
7150 #t))
7151 (replace 'install
7152 (lambda* (#:key outputs #:allow-other-keys)
7153 (let* ((out (assoc-ref outputs "out"))
7154 (assets (string-append out "/share/marble-marcher/assets"))
7155 (bin (string-append out "/bin/")))
7156 (mkdir-p bin)
7157 (mkdir-p assets)
7158 (copy-recursively "../source/assets" assets)
7159 (install-file "MarbleMarcher" bin))
7160 #t)))))
7161 (inputs
7162 `(("eigen" ,eigen)
7163 ("mesa" ,mesa)
7164 ("sfml" ,sfml)))
7165 (native-inputs
7166 `(("pkg-config" ,pkg-config)))
7167 (home-page "https://codeparade.itch.io/marblemarcher")
7168 (synopsis "Guide a marble across fractal landscapes")
7169 (description "Marble Marcher is a video game that uses a fractal physics
7170engine and fully procedural rendering to produce beautiful and unique
7171gameplay. The game is played on the surface of evolving fractals. The goal
7172of the game is to get your marble to the flag as quickly as possible. But be
7173careful not to fall off the level or get crushed by the fractal! There are 24
7174levels to unlock.")
7175 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7176 (license (list license:gpl2+
7177 license:silofl1.1
7178 license:cc-by-sa3.0)))))
20185e4f 7179
a84510f9 7180;; This must be updated together with flightgear.
20185e4f
RW
7181(define simgear
7182 (package
7183 (name "simgear")
7184 (version "2018.3.2")
7185 (source (origin
7186 (method url-fetch)
7187 (uri (string-append "mirror://sourceforge/flightgear/release-"
7188 (version-major+minor version) "/"
7189 "simgear-" version ".tar.bz2"))
7190 (sha256
7191 (base32
7192 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7193 (build-system cmake-build-system)
7194 (arguments
7195 `(#:phases
7196 (modify-phases %standard-phases
7197 (replace 'check
7198 (lambda _
7199 ;; Skip tests that require internet access.
7200 (invoke "ctest" "-E" "(http|dns)"))))))
7201 (inputs
7202 `(("boost" ,boost-for-mysql) ; fails with 1.69
7203 ("curl" ,curl)
7204 ("expat" ,expat)
7205 ("mesa" ,mesa)
7206 ("openal" ,openal)
7207 ("openscenegraph" ,openscenegraph-3.4)
7208 ("zlib" ,zlib)))
7209 (home-page "https://home.flightgear.org/")
7210 (synopsis "Libraries for 3D simulations and games")
7211 (description "SimGear is a set of libraries designed to be used as
7212building blocks for quickly assembling 3D simulations, games, and
7213visualization applications. SimGear is developed by the FlightGear project
7214and also provides the base for the FlightGear Flight Simulator.")
7215 (license license:lgpl2.0+)))
a84510f9
RW
7216
7217(define-public flightgear
7218 (package
7219 (name "flightgear")
7220 (version (package-version simgear))
7221 (source (origin
7222 (method url-fetch)
7223 (uri (string-append "mirror://sourceforge/flightgear/release-"
7224 (version-major+minor version) "/"
7225 "flightgear-" version ".tar.bz2"))
7226 (sha256
7227 (base32
7228 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7229 (modules '((guix build utils)))
7230 (snippet
7231 '(begin
7232 ;; There are some bundled libraries.
7233 (for-each delete-file-recursively
7234 '("3rdparty/sqlite3/"))
7235 #t))))
7236 (build-system cmake-build-system)
7237 (arguments
7238 `(#:configure-flags
7239 (list "-DSYSTEM_SQLITE=ON"
7240 (string-append "-DFG_DATA_DIR="
7241 (assoc-ref %outputs "out")
7242 "/share/flightgear"))
7243 ;; TODO: test cannot be run because the "run_test_suite" executable
7244 ;; does not seem to be built.
7245 #:tests? #f
7246 #:phases
7247 (modify-phases %standard-phases
7248 (add-after 'install 'wrap-executable
7249 (lambda* (#:key inputs outputs #:allow-other-keys)
7250 (let ((out (assoc-ref outputs "out")))
7251 (wrap-program (string-append out "/bin/fgfs")
7252 `("QT_PLUGIN_PATH" ":" prefix
7253 ,(map (lambda (label)
7254 (string-append (assoc-ref inputs label)
7255 "/lib/qt5/plugins"))
7256 '("qtbase" "qtdeclarative" "qtsvg")))
7257 `("QML2_IMPORT_PATH" ":" prefix
7258 ,(map (lambda (label)
7259 (string-append (assoc-ref inputs label)
7260 "/lib/qt5/qml"))
7261 '("qtdeclarative" "qtsvg"))))
7262 #t)))
7263 (add-after 'install 'install-data
7264 (lambda* (#:key inputs outputs #:allow-other-keys)
7265 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7266 (mkdir-p share)
7267 (with-directory-excursion share
7268 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7269 "--strip-components=1")))
7270 #t)))))
7271 (inputs
7272 `(("boost" ,boost-for-mysql) ; same as simgear
7273 ("dbus" ,dbus)
7274 ("eudev" ,eudev)
7275 ("freeglut" ,freeglut)
7276 ("freetype" ,freetype)
7277 ("glew" ,glew)
7278 ("libpng" ,libpng)
7279 ("openal" ,openal)
7280 ("openscenegraph" ,openscenegraph-3.4)
7281 ("plib" ,plib)
7282 ("qtbase" ,qtbase)
7283 ("qtdeclarative" ,qtdeclarative)
7284 ("qtsvg" ,qtsvg)
7285 ("simgear" ,simgear)
7286 ("speexdsp" ,speexdsp)
7287 ("sqlite" ,sqlite)
7288 ("zlib" ,zlib)))
7289 (native-inputs
7290 `(("cppunit" ,cppunit)
7291 ("pkg-config" ,pkg-config)
7292 ("qttools" ,qttools)
7293 ("flightgear-data"
7294 ,(origin
7295 (method url-fetch)
7296 (uri (string-append "mirror://sourceforge/flightgear/release-"
7297 (version-major+minor version) "/"
7298 "FlightGear-" version "-data.tar.bz2"))
7299 (sha256
7300 (base32
7301 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7302 (home-page "https://home.flightgear.org/")
7303 (synopsis "Flight simulator")
7304 (description "The goal of the FlightGear project is to create a
7305sophisticated flight simulator framework for use in research or academic
7306environments, pilot training, as an industry engineering tool, for DIY-ers to
7307pursue their favorite interesting flight simulation idea, and last but
7308certainly not least as a fun, realistic, and challenging desktop flight
7309simulator.")
7310 (license license:gpl2+)))
e8a0696d
NG
7311
7312(define-public jumpnbump
7313 (package
7314 (name "jumpnbump")
60d2aaa5 7315 (version "1.61")
e8a0696d
NG
7316 (source (origin
7317 (method git-fetch)
7318 (uri (git-reference
7319 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7320 (commit version)))
7321 (file-name (git-file-name name version))
7322 (sha256
7323 (base32
60d2aaa5 7324 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7325 (build-system gnu-build-system)
7326 (arguments
7327 `(#:make-flags
7328 (list "CC=gcc"
7329 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7330 #:tests? #f ;no test
7331 #:phases
7332 (modify-phases %standard-phases
7333 (delete 'configure) ;no configure script
7334 (add-after 'unpack 'fix-sdl-path
7335 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7336 ;; directory, not SDL-union provided as an input to the package.
7337 ;; We force the latter with "--prefix=" option.
7338 (lambda* (#:key inputs #:allow-other-keys)
7339 (substitute* "Makefile"
7340 (("sdl2-config" command)
7341 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7342 #t)))))
7343 (inputs
7344 `(("bzip2" ,bzip2)
7345 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7346 ("zlib" ,zlib)))
7347 (native-inputs
7348 `(("gettext" ,gettext-minimal))) ;for msgfmt
7349 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7350 (synopsis "Multiplayer platform game with bunnies")
7351 (description "You, as a bunny, have to jump on your opponents to make them
7352explode. It is a true multiplayer game; you cannot play this alone. You can
7353play with up to four players simultaneously. It has network support.")
7354 (license license:gpl2+)))
a3d4a631
NG
7355
7356(define-public hedgewars
7357 (package
7358 (name "hedgewars")
ea042113 7359 (version "1.0.0")
a3d4a631
NG
7360 (source (origin
7361 (method url-fetch)
7362 (uri (string-append "https://www.hedgewars.org/download/releases/"
7363 "hedgewars-src-" version ".tar.bz2"))
7364 (sha256
7365 (base32
ea042113 7366 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7367 (build-system cmake-build-system)
7368 (arguments
7369 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7370 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7371 ;; a Pascal to C translator and Clang instead.
7372 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7373 #:phases
7374 (modify-phases %standard-phases
a3d4a631 7375 (replace 'check
ea042113 7376 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7377 (inputs
7378 `(("ffmpeg" ,ffmpeg)
7379 ("freeglut" ,freeglut)
7380 ("ghc-entropy" ,ghc-entropy)
7381 ("ghc-hslogger" ,ghc-hslogger)
7382 ("ghc-network" ,ghc-network)
7383 ("ghc-random" ,ghc-random)
7384 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7385 ("ghc-sandi" ,ghc-sandi)
7386 ("ghc-sha" ,ghc-sha)
7387 ("ghc-utf8-string" ,ghc-utf8-string)
7388 ("ghc-vector" ,ghc-vector)
7389 ("ghc-zlib" ,ghc-zlib)
7390 ("glew" ,glew)
7391 ("libpng" ,libpng)
7392 ("lua" ,lua-5.1)
7393 ("physfs" ,physfs)
7394 ("qtbase" ,qtbase)
7395 ("sdl" ,(sdl-union
7396 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7397 (native-inputs
7398 `(("clang" ,clang)
7399 ("ghc" ,ghc)
7400 ("pkg-config" ,pkg-config)
7401 ("qttools" ,qttools)))
7402 (home-page "https://hedgewars.org/")
7403 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7404 (description
7405 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7406featuring the antics of pink hedgehogs with attitude as they battle from the
7407depths of hell to the depths of space.
7408
7409As commander, it's your job to assemble your crack team of hedgehog soldiers
7410and bring the war to your enemy.")
7411 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7412 ;; scripts are distributed under various terms.
7413 (license (list license:gpl2
7414 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7415 license:expat license:fdl1.3+ license:public-domain
7416 license:zlib))))
1bba3e8c
JL
7417
7418(define-public harmonist
7419 (package
7420 (name "harmonist")
3755d5cb 7421 (version "0.2")
1bba3e8c
JL
7422 (source (origin
7423 (method git-fetch)
7424 (uri (git-reference
7425 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7426 (commit (string-append "v" version))))
7427 (file-name (git-file-name name version))
7428 (sha256
7429 (base32
3755d5cb 7430 "0hqy9kqwgirwkq1v3vj1hp9m93hjvdj4nxcfbjfvvwk2bbzri3s2"))))
1bba3e8c
JL
7431 (build-system go-build-system)
7432 (arguments
7433 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7434 (inputs
7435 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7436 (home-page "https://harmonist.tuxfamily.org/")
7437 (synopsis "Stealth coffee-break roguelike game")
7438 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7439coffee-break roguelike game. The game has a heavy focus on tactical
7440positioning, light and noise mechanisms, making use of various terrain types
7441and cones of view for monsters. Aiming for a replayable streamlined experience,
7442the game avoids complex inventory management and character building, relying
7443on items and player adaptability for character progression.")
7444 (license license:isc)))
e93352d6 7445
453365bc
JL
7446(define-public harmonist-tk
7447 (package
7448 (inherit harmonist)
7449 (name "harmonist-tk")
7450 (arguments
7451 (append
7452 (package-arguments harmonist)
7453 `(#:phases
7454 (modify-phases %standard-phases
7455 (replace 'build
7456 (lambda _
7457 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7458 "git.tuxfamily.org/harmonist/harmonist")))
7459 (replace 'check
7460 (lambda _
7461 (invoke "go" "test" "--tags" "tk"
7462 "git.tuxfamily.org/harmonist/harmonist")))))))
7463 (inputs
7464 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7465
e93352d6
NG
7466(define-public drascula
7467 (package
7468 (name "drascula")
7469 (version "1.0")
7470 (source (origin
7471 (method url-fetch)
7472 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7473 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7474 "drascula-" version ".zip"))
7475 (sha256
7476 (base32
7477 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7478 (build-system trivial-build-system)
7479 (arguments
7480 `(#:modules ((guix build utils))
7481 #:builder
7482 (begin
7483 (use-modules (guix build utils)
7484 (ice-9 match))
7485 (let* ((out (assoc-ref %outputs "out"))
7486 (share (string-append out "/share/drascula"))
7487 (scummvm (assoc-ref %build-inputs "scummvm")))
7488 ;; Install data.
7489 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7490 "/bin/unzip"))
7491 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7492 (for-each
7493 (lambda (input)
7494 (invoke unzip
7495 "-j"
7496 (assoc-ref %build-inputs input)
7497 "-x" "__MACOSX")
7498 ;; Every input provides "readme.txt", and we want to
7499 ;; preserve them all. Therefore we rename them first.
7500 (match input
7501 ("drascula-int"
7502 (rename-file "readme.txt" "readme-international.txt"))
7503 ("drascula-audio"
7504 (rename-file "readme.txt" "readme-audio.txt"))
7505 (_ #f))
7506 ;; Install documentation.
7507 (for-each (lambda (f) (install-file f doc))
7508 (find-files "." "\\.(txt|doc)$"))
7509 ;; Install data.
7510 (for-each (lambda (f) (install-file f share))
7511 (find-files "." "\\.(ogg|00[0-9])$")))
7512 '("drascula-audio" "drascula-int" "source")))
7513 ;; Create standalone executable.
7514 (let* ((bin (string-append out "/bin"))
7515 (executable (string-append bin "/drascula"))
7516 (bash (string-append (assoc-ref %build-inputs "bash")
7517 "/bin/bash")))
7518 (mkdir-p bin)
7519 (with-output-to-file executable
7520 (lambda ()
7521 (format #t "#!~a~%" bash)
7522 (format #t
7523 "exec ~a/bin/scummvm --path=~a drascula~%"
7524 scummvm share)))
7525 (chmod executable #o755))
7526 ;; Create desktop file. There is no dedicated icon for the
7527 ;; game, so we borrow SCUMMVM's.
7528 (let ((apps (string-append out "/share/applications")))
7529 (mkdir-p apps)
7530 (with-output-to-file (string-append apps "/drascula.desktop")
7531 (lambda _
7532 (format #t
7533 "[Desktop Entry]~@
7534 Name=Drascula: The Vampire Strikes Back~@
7535 GenericName=Drascula~@
7536 Exec=~a/bin/drascula~@
7537 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7538 Categories=AdventureGame;Game;RolePlaying;~@
7539 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7540 Comment=Classic 2D point and click adventure game~@
7541 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7542 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7543 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7544 Type=Application~%"
7545 out scummvm))))
7546 #t))))
7547 (native-inputs
7548 `(("bash" ,bash)
7549 ("unzip" ,unzip)))
7550 (inputs
7551 `(("scummvm" ,scummvm)
7552 ("drascula-int"
7553 ,(let ((version "1.1"))
7554 (origin
7555 (method url-fetch)
7556 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7557 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7558 "drascula-int-" version ".zip"))
7559 (sha256
7560 (base32
7561 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7562 ("drascula-audio"
7563 ,(let ((version "2.0"))
7564 (origin
7565 (method url-fetch)
7566 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7567 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7568 "drascula-audio-" version ".zip"))
7569 (sha256
7570 (base32
7571 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7572 (home-page "https://www.scummvm.org")
7573 (synopsis "Classic 2D point and click adventure game")
7574 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7575point and click adventure game.
7576
7577In Drascula you play the role of John Hacker, a British estate agent, that
7578gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7579Count Drascula and embark on a fun yet dangerous quest to rescue her.
7580Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7581the World and demonstrating that he is even more evil than his brother Vlad.")
7582 ;; Drascula uses a BSD-like license.
7583 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f
JG
7584
7585(define-public gnurobots
7586 (package
7587 (name "gnurobots")
7588 (version "1.2.0")
7589 (source
7590 (origin
7591 (method url-fetch)
7592 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
7593 version ".tar.gz"))
7594 (sha256
7595 (base32
7596 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
7597 (build-system gnu-build-system)
7598 (inputs
7599 `(("glib" ,glib)
7600 ("gtk+" ,gtk+-2)
7601 ("vte" ,vte/gtk+-2)
7602 ("readline" ,readline)
7603 ("guile" ,guile-1.8)))
7604 (native-inputs
7605 `(("pkg-config" ,pkg-config)))
7606 (arguments
7607 `(#:make-flags
7608 (list
7609 ;; Do not abort build on "deprecated-declarations" warnings.
7610 "CFLAGS=-Wno-error=deprecated-declarations"
7611 ;; Find readline headers in sub-directory.
7612 (string-append "READLINE_CFLAGS=-I"
7613 (assoc-ref %build-inputs "readline")
7614 "/include/readline/"))
7615 #:phases
7616 (modify-phases %standard-phases
7617 (add-after 'install 'install-doc
7618 (lambda* (#:key outputs #:allow-other-keys)
7619 (install-file "doc/Robots-HOWTO"
7620 (string-append (assoc-ref outputs "out")
7621 "/share/doc/gnurobots-"
7622 ,version))
7623 #t)))))
7624 (home-page "https://www.gnu.org/software/gnurobots/")
7625 (synopsis "Program a little robot and watch it explore a world")
7626 (description
7627 "GNU Robots is a game in which you program a robot to explore a world
7628full of enemies that can hurt it, obstacles and food to be eaten. The goal of
7629the game is to stay alive and collect prizes. The robot program conveniently
7630may be written in a plain text file in the Scheme programming language.")
7631 (license license:gpl3+)))
3745909d
NG
7632
7633(define-public ri-li
7634 (package
7635 (name "ri-li")
7636 (version "2.0.1")
7637 (source (origin
7638 (method url-fetch)
7639 (uri (string-append "mirror://sourceforge/ri-li/"
7640 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
7641 "Ri-li-" version ".tar.bz2"))
7642 (sha256
7643 (base32
7644 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
7645 ;; Taken from
7646 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
7647 ;; It doesn't build otherwise.
7648 (patches (search-patches "ri-li-modernize_cpp.patch"))))
7649 (build-system gnu-build-system)
7650 (arguments
7651 `(#:phases
7652 (modify-phases %standard-phases
7653 ;; Remove "gentoo" subdirectory from Makefile, as it is
7654 ;; missing a make file and generates a build failure.
7655 (add-after 'configure 'fix-build
7656 (lambda _
7657 (substitute* "Makefile"
7658 ((" gentoo") ""))
7659 #t))
7660 (add-after 'install 'install-desktop-file
7661 (lambda* (#:key outputs #:allow-other-keys)
7662 (let* ((out (assoc-ref outputs "out"))
7663 (apps (string-append out "/share/applications"))
7664 (pixmaps (string-append out "/share/pixmaps")))
7665 (for-each (lambda (f) (install-file f pixmaps))
7666 (find-files "data" "\\.(png|ico)$"))
7667 (mkdir-p apps)
7668 (with-output-to-file (string-append apps "/ri-li.desktop")
7669 (lambda _
7670 (format #t
7671 "[Desktop Entry]~@
7672 Name=Ri-li~@
7673 Exec=~a/bin/Ri_li~@
7674 Icon=~a/Ri-li-icon-32x32.png~@
7675 Categories=Game;ArcadeGame;~@
7676 Keywords=toy;train;wooden;snake-like;engine;~@
7677 Comment=a toy simulator game~@
7678 Comment[de]=Ein Spiel mit einem kleinen Zug~@
7679 Comment[fr]=un jeu de petit train~@
7680 Comment[ro_RO]=un joc cu un tren de jucărie~@
7681 Terminal=false~@
7682 Type=Application~%"
7683 out pixmaps))))
7684 #t))
7685 (add-after 'install-desktop-file 'remove-spurious-files
7686 ;; Delete redundant files already installed somewhere else.
7687 (lambda* (#:key outputs #:allow-other-keys)
7688 (let ((out (assoc-ref outputs "out")))
7689 (for-each delete-file
7690 (find-files (string-append out "/share/Ri-li")
7691 "\\.(png|ico)|COPYING"))
7692 #t))))))
7693 (inputs
7694 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
7695 (home-page "http://www.ri-li.org")
7696 (synopsis "Toy train simulation game")
7697 (description "Ri-li is a game in which you drive a wooden toy
7698steam locomotive across many levels and collect all the coaches to
7699win.")
7700 ;; The project is dual-licensed GPL2+ and GPL3+.
7701 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
7702
7703(define-public freeorion
7704 (package
7705 (name "freeorion")
7706 (version "0.4.8")
7707 (source
7708 (origin
7709 (method git-fetch)
7710 (uri (git-reference
7711 (url "https://github.com/freeorion/freeorion.git")
7712 ;; Most recent stable release uses boost_signals (v1) which was
7713 ;; later replaced with boost-signals2 and no longer exists. This
7714 ;; commit builds and runs.
7715 ;;
7716 ;; TODO: Update this when the next stable release when it is
7717 ;; available.
7718 (commit "470d0711537804df3c2ca25532f674ab4bec58af")))
7719 (file-name (git-file-name name version))
7720 (sha256
7721 (base32
7722 "1wsw632l1cj17px6i88nqjzs0dngp5rsr67n6qkkjlfjfxi69j0f"))
7723 (modules '((guix build utils)))
7724 (snippet
7725 '(begin
7726 ;; There are some bundled fonts.
7727 (for-each delete-file-recursively '("default/data/fonts"))
7728 #t))))
7729 (build-system cmake-build-system)
7730 (arguments
7731 '(#:tests? #f ;no test
7732 #:phases
7733 (modify-phases %standard-phases
7734 (add-after 'unpack 'unbundle-fonts
7735 (lambda* (#:key inputs #:allow-other-keys)
7736 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
7737 "/share/fonts/truetype/")))
7738 (substitute* "UI/ClientUI.cpp"
7658904a 7739 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 7740 all type)
7658904a 7741 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
7742 #t))))))
7743 (inputs
7744 `(("boost" ,boost)
7745 ("boost_signals" ,boost-signals2)
7746 ("font-dejavu" ,font-dejavu)
7747 ("font-roboto" ,font-google-roboto)
7748 ("freetype2" ,freetype)
7749 ("glew" ,glew)
7750 ("glu" ,glu)
7751 ("libogg" ,libogg)
7752 ("libpng" ,libpng)
7753 ("libvorbis" ,libvorbis)
7754 ("openal" ,openal)
7755 ("python2" ,python-2.7)
7756 ("sdl2" ,sdl2)
7757 ("zlib" ,zlib)))
7758 (home-page "https://www.freeorion.org/index.php/Main_Page")
7759 (synopsis "Turn-based space empire and galactic conquest computer game")
7760 (description
7761 "FreeOrion is a turn-based space empire and galactic conquest (4X)
7762computer game being designed and built by the FreeOrion project. Control an
7763empire with the goal of exploring the galaxy, expanding your territory,
7764exploiting the resources, and exterminating rival alien empires. FreeOrion is
7765inspired by the tradition of the Master of Orion games, but is not a clone or
7766remake of that series or any other game.")
7767 ;; Source code is released under gpl2. Artwork, music and sounds, and
7768 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
7769 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
7770 ;; released under lgpl2.1+.
7771 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
7772
7773(define-public leela-zero
7774 (package
7775 (name "leela-zero")
7776 (version "0.17")
7777 (source
7778 (origin
7779 (method git-fetch)
7780 (uri (git-reference
7781 (url "https://github.com/leela-zero/leela-zero.git")
7782 (commit (string-append "v" version))))
7783 (file-name (git-file-name name version))
7784 (sha256
7785 (base32
7786 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
7787 (patches (search-patches "leela-zero-gtest.patch"))))
7788 (build-system cmake-build-system)
7789 (native-inputs
7790 `(("googletest" ,googletest)))
7791 (inputs
7792 `(("boost" ,boost)
7793 ("ocl-icd" ,ocl-icd)
7794 ("openblas" ,openblas)
7795 ("opencl-headers" ,opencl-headers)
7796 ("qtbase" ,qtbase)
7797 ("zlib" ,zlib)))
7798 (arguments
7799 '(#:configure-flags '("-DUSE_BLAS=YES")
7800 #:phases (modify-phases %standard-phases
7801 (add-before 'configure 'fix-tests
7802 (lambda* (#:key outputs #:allow-other-keys)
7803 (let ((home (getcwd)))
7804 (setenv "HOME" home)
7805 (substitute* "src/tests/gtests.cpp"
7806 (("\\.\\./src/tests/0k\\.txt")
7807 (string-append home "/src/tests/0k.txt"))
7808 (("cfg_gtp_mode = true;")
7809 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
7810 #t))
7811 (replace 'check
7812 (lambda _
7813 (invoke "./tests"))))))
7814 (home-page "https://github.com/leela-zero/leela-zero")
7815 (synopsis "Program playing the game of Go")
7816 (description
7817 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
7818the AlphaGo Zero paper. The current best network weights file for the engine
7819can be downloaded from @url{https://zero.sjeng.org/best-network}.")
7820 (license license:gpl3+)))
66977719
GLV
7821
7822(define-public q5go
7823 (package
7824 (name "q5go")
7825 (version "1.0")
7826 (source (origin
7827 (method git-fetch)
7828 (uri (git-reference
7829 (url "https://github.com/bernds/q5Go.git")
7830 (commit (string-append "q5go-" version))))
7831 (file-name (git-file-name name version))
7832 (sha256
7833 (base32
7834 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
7835 (build-system gnu-build-system)
7836 (native-inputs
7837 `(("pkg-config" ,pkg-config)))
7838 (inputs
7839 `(("qtbase" ,qtbase)
7840 ("qtmultimedia" ,qtmultimedia)
7841 ("qtsvg" ,qtsvg)))
7842 (arguments
7843 '(#:phases
7844 (modify-phases %standard-phases
7845 (add-after 'unpack 'fix-configure-script
7846 (lambda _
7847 ;; Bypass the unavailable qtchooser program.
7848 (substitute* "configure"
7849 (("test -z \"QTCHOOSER\"")
7850 "false")
7851 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
7852 command))
7853 #t))
7854 (add-after 'unpack 'fix-paths
7855 (lambda _
7856 (substitute* '("src/pics/Makefile.in"
7857 "src/translations/Makefile.in")
7858 (("\\$\\(datadir\\)/qGo/")
7859 "$(datadir)/q5go/"))
7860 #t))
7861 (add-after 'install 'install-desktop-file
7862 (lambda* (#:key outputs #:allow-other-keys)
7863 (let* ((out (assoc-ref outputs "out"))
7864 (apps (string-append out "/share/applications"))
7865 (pics (string-append out "/share/q5go/pics")))
7866 (delete-file-recursively (string-append out "/share/applnk"))
7867 (delete-file-recursively (string-append out "/share/mimelnk"))
7868 (install-file "../source/src/pics/Bowl.ico" pics)
7869 (mkdir-p apps)
7870 (with-output-to-file (string-append apps "/q5go.desktop")
7871 (lambda _
7872 (format #t
7873 "[Desktop Entry]~@
7874 Name=q5go~@
7875 Exec=~a/bin/q5go~@
7876 Icon=~a/Bowl.ico~@
7877 Categories=Game;~@
7878 Comment=Game of Go~@
7879 Comment[de]=Spiel des Go~@
7880 Comment[eo]=Goo~@
7881 Comment[es]=Juego de Go~@
7882 Comment[fr]=Jeu de Go~@
7883 Comment[ja]=囲碁~@
7884 Comment[ko]=바둑~@
7885 Comment[zh]=围棋~@
7886 Terminal=false~@
7887 Type=Application~%"
7888 out pics))))
7889 #t)))))
7890 (synopsis "Qt GUI to play the game of Go")
7891 (description
7892 "This a tool for Go players which performs the following functions:
7893@itemize
7894@item SGF editor,
7895@item Analysis frontend for Leela Zero (or compatible engines),
7896@item GTP interface (to play against an engine),
7897@item IGS client (to play on the internet),
7898@item Export games to a variety of formats.
7899@end itemize")
7900 (home-page "https://github.com/bernds/q5Go")
7901 (license license:gpl2+)))