gnu: netpbm: Delete files natively.
[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>
8f33b76e 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
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>
4dbc3c2c 27;;; Copyright © 2017, 2018, 2019, 2020 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>
40d2bddd 33;;; Copyright © 2017, 2018, 2019, 2020 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>
26d52476 40;;; Copyright © 2019, 2020 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>
d24881e4 45;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
299e15c1 46;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
894fbb33 47;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
3c1c5622 48;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
79a48038 49;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
db47adb0 50;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
3de5b404 51;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
490c6528
JD
52;;;
53;;; This file is part of GNU Guix.
54;;;
55;;; GNU Guix is free software; you can redistribute it and/or modify it
56;;; under the terms of the GNU General Public License as published by
57;;; the Free Software Foundation; either version 3 of the License, or (at
58;;; your option) any later version.
59;;;
60;;; GNU Guix is distributed in the hope that it will be useful, but
61;;; WITHOUT ANY WARRANTY; without even the implied warranty of
62;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
63;;; GNU General Public License for more details.
64;;;
65;;; You should have received a copy of the GNU General Public License
66;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
67
68(define-module (gnu packages games)
158f5734 69 #:use-module (ice-9 match)
024e2c17
DT
70 #:use-module ((guix licenses) #:prefix license:)
71 #:use-module (guix utils)
490c6528
JD
72 #:use-module (guix packages)
73 #:use-module (guix download)
c23c50c7 74 #:use-module (guix git-download)
e11b2752 75 #:use-module (guix svn-download)
bff33e6c 76 #:use-module (guix gexp)
a83c6a64 77 #:use-module (gnu packages)
3307c787 78 #:use-module (gnu packages algebra)
e11b2752 79 #:use-module (gnu packages autotools)
03d521f9 80 #:use-module (gnu packages backup)
7e51e5bc 81 #:use-module (gnu packages base)
b77e3a1c 82 #:use-module (gnu packages build-tools)
11c38cbe 83 #:use-module (gnu packages admin)
f2fac359 84 #:use-module (gnu packages audio)
7e2e1155 85 #:use-module (gnu packages avahi)
1faf0a04 86 #:use-module (gnu packages assembly)
35d5fa76
EF
87 #:use-module (gnu packages bash)
88 #:use-module (gnu packages bison)
a83c6a64 89 #:use-module (gnu packages boost)
35d5fa76
EF
90 #:use-module (gnu packages check)
91 #:use-module (gnu packages cmake)
92 #:use-module (gnu packages compression)
93 #:use-module (gnu packages curl)
706d6190 94 #:use-module (gnu packages crypto)
35d5fa76 95 #:use-module (gnu packages cyrus-sasl)
0b5d078f 96 #:use-module (gnu packages documentation)
dec63df4 97 #:use-module (gnu packages docbook)
e93352d6 98 #:use-module (gnu packages emulators)
35d5fa76 99 #:use-module (gnu packages flex)
d2563973 100 #:use-module (gnu packages fltk)
35d5fa76
EF
101 #:use-module (gnu packages fonts)
102 #:use-module (gnu packages fontutils)
540dd1c8 103 #:use-module (gnu packages freedesktop)
c23c50c7
RW
104 #:use-module (gnu packages fribidi)
105 #:use-module (gnu packages game-development)
940c2c5c 106 #:use-module (gnu packages gcc)
490c6528 107 #:use-module (gnu packages gettext)
9b1ada4e 108 #:use-module (gnu packages ghostscript)
4df9495e 109 #:use-module (gnu packages gimp)
490c6528 110 #:use-module (gnu packages gl)
bf0018cd 111 #:use-module (gnu packages glib)
490c6528 112 #:use-module (gnu packages gnome)
35d5fa76 113 #:use-module (gnu packages gnuzilla)
9b1ada4e 114 #:use-module (gnu packages gperf)
aac1aa75 115 #:use-module (gnu packages graphics)
35d5fa76 116 #:use-module (gnu packages gstreamer)
490c6528
JD
117 #:use-module (gnu packages gtk)
118 #:use-module (gnu packages guile)
1abe2e2a
NG
119 #:use-module (gnu packages haskell)
120 #:use-module (gnu packages haskell-crypto)
dddbc90c 121 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
122 #:use-module (gnu packages icu4c)
123 #:use-module (gnu packages image)
0b5d078f 124 #:use-module (gnu packages imagemagick)
3c1c5622
HG
125 #:use-module (gnu packages kde)
126 #:use-module (gnu packages kde-frameworks)
3bd0d186 127 #:use-module (gnu packages less)
bf0018cd 128 #:use-module (gnu packages libcanberra)
721e1987 129 #:use-module (gnu packages libedit)
67fa7a27 130 #:use-module (gnu packages libunwind)
35d5fa76 131 #:use-module (gnu packages linux)
fdd9ab37 132 #:use-module (gnu packages llvm)
35d5fa76 133 #:use-module (gnu packages lua)
a9249f58
KK
134 #:use-module (gnu packages man)
135 #:use-module (gnu packages maths)
c23c50c7 136 #:use-module (gnu packages mp3)
26a657f0 137 #:use-module (gnu packages music)
dc70ff2a 138 #:use-module (gnu packages multiprecision)
3cf118a1 139 #:use-module (gnu packages ncurses)
9b1ada4e 140 #:use-module (gnu packages netpbm)
162a4a03 141 #:use-module (gnu packages networking)
b3de5ff2 142 #:use-module (gnu packages ocaml)
fbfc07bd 143 #:use-module (gnu packages opencl)
35d5fa76
EF
144 #:use-module (gnu packages pcre)
145 #:use-module (gnu packages perl)
146 #:use-module (gnu packages perl-check)
147 #:use-module (gnu packages pkg-config)
148 #:use-module (gnu packages pulseaudio)
bf0018cd 149 #:use-module (gnu packages python)
44d10b1f 150 #:use-module (gnu packages python-xyz)
35d5fa76 151 #:use-module (gnu packages qt)
bf0018cd 152 #:use-module (gnu packages readline)
be6e2c30 153 #:use-module (gnu packages shells)
3da5dca3 154 #:use-module (gnu packages sdl)
7fc90282 155 #:use-module (gnu packages serialization)
cd0322a3 156 #:use-module (gnu packages sqlite)
8698d986 157 #:use-module (gnu packages squirrel)
bd71525b 158 #:use-module (gnu packages swig)
67fa7a27 159 #:use-module (gnu packages tcl)
1bba3e8c 160 #:use-module (gnu packages terminals)
35d5fa76
EF
161 #:use-module (gnu packages texinfo)
162 #:use-module (gnu packages textutils)
751c7040 163 #:use-module (gnu packages tls)
0b608ec4 164 #:use-module (gnu packages upnp)
35d5fa76 165 #:use-module (gnu packages video)
01564e5a 166 #:use-module (gnu packages vulkan)
7aafb3b3 167 #:use-module (gnu packages web)
8044e584 168 #:use-module (gnu packages wget)
35d5fa76
EF
169 #:use-module (gnu packages wxwidgets)
170 #:use-module (gnu packages xdisorg)
171 #:use-module (gnu packages xorg)
172 #:use-module (gnu packages xiph)
173 #:use-module (gnu packages xml)
174 #:use-module (gnu packages messaging)
175 #:use-module (gnu packages networking)
3de5b404 176 #:use-module (guix build-system copy)
39c676c4 177 #:use-module (guix build-system glib-or-gtk)
a6b55314 178 #:use-module (guix build-system gnu)
57f9671d 179 #:use-module (guix build-system go)
18ebaa9e 180 #:use-module (guix build-system meson)
560df540 181 #:use-module (guix build-system scons)
b0488fe5 182 #:use-module (guix build-system python)
19b396bf 183 #:use-module (guix build-system cmake)
3c1c5622 184 #:use-module (guix build-system qt)
296c8484
EF
185 #:use-module (guix build-system trivial)
186 #:use-module ((srfi srfi-1) #:hide (zip))
187 #:use-module (srfi srfi-26))
490c6528 188
4fee5ec0
KK
189;; Data package for adanaxisgpl.
190(define adanaxis-mush
191 (let ((version "1.1.0"))
192 (origin
193 (method url-fetch)
194 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
195 version ".tar.gz"))
196 (sha256
197 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
198
199(define-public adanaxisgpl
200 (package
201 (name "adanaxisgpl")
202 (version "1.2.5")
203 (source
204 (origin
205 (method url-fetch)
206 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
207 version ".tar.gz"))
208 (sha256
209 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
210 (modules '((guix build utils)))
211 (snippet
212 '(begin
213 ;; Necessary for building with gcc >=4.7.
214 (substitute* "src/Mushcore/MushcoreSingleton.h"
215 (("SingletonPtrSet\\(new SingletonType\\);")
216 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
217 ;; Avoid an "invalid conversion from const char* to char*" error.
218 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
219 (("char \\*end, \\*result;")
220 (string-append "const char *end;"
221 "\n"
222 "char *result;")))
223 #t))))
224 (build-system gnu-build-system)
225 (arguments
226 `(#:tests? #f ; no check target
227 #:phases
228 (modify-phases %standard-phases
229 (add-after 'install 'install-data
230 (lambda* (#:key inputs outputs #:allow-other-keys)
231 (let ((data (assoc-ref inputs "adanaxis-mush"))
232 (share (string-append (assoc-ref outputs "out")
233 "/share/" ,name "-" ,version)))
234 (mkdir-p share)
235 (invoke "tar" "xvf" data "-C" share)))))))
236 (native-inputs
237 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
238 (inputs
239 `(("expat" ,expat)
240 ("freeglut" ,freeglut)
241 ("glu" ,glu)
242 ("libjpeg" ,libjpeg)
243 ("libogg" ,libogg)
244 ("libtiff" ,libtiff)
245 ("libvorbis" ,libvorbis)
246 ("libx11" ,libx11)
247 ("libxext" ,libxext)
248 ("pcre" ,pcre)
249 ("sdl" ,sdl)
250 ("sdl-mixer" ,sdl-mixer)))
251 (home-page "https://www.mushware.com")
252 (synopsis "Action game in four spatial dimensions")
253 (description
254 "Adanaxis is a fast-moving first person shooter set in deep space, where
255the fundamentals of space itself are changed. By adding another dimension to
256space this game provides an environment with movement in four directions and
257six planes of rotation. Initially the game explains the 4D control system via
258a graphical sequence, before moving on to 30 levels of gameplay with numerous
259enemy, ally, weapon and mission types. Features include simulated 4D texturing,
260mouse and joystick control, and original music.")
261 (license license:gpl2)))
262
f9fee46f
KK
263(define-public alex4
264 (package
265 (name "alex4")
8ef3f2e3 266 (version "1.2.1")
f9fee46f
KK
267 (source
268 (origin
359a57b6
TGR
269 (method git-fetch)
270 (uri (git-reference
271 (url "https://github.com/carstene1ns/alex4.git")
272 (commit version)))
273 (file-name (git-file-name name version))
f9fee46f 274 (sha256
8ef3f2e3 275 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
276 (build-system gnu-build-system)
277 (arguments
359a57b6 278 `(#:tests? #f ; no check target
f9fee46f 279 #:make-flags
8ef3f2e3 280 (list "CC=gcc"
f9fee46f 281 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
282 (string-append "PREFIX=" (assoc-ref %outputs "out")))
283 #:phases
284 (modify-phases %standard-phases
8ef3f2e3 285 (delete 'configure) ; no configure script
f9fee46f
KK
286 (add-after 'install 'install-data
287 (lambda* (#:key outputs #:allow-other-keys)
288 (let ((share (string-append (assoc-ref outputs "out")
289 "/share/" ,name)))
290 (install-file "alex4.ini" share)
291 #t))))))
292 (inputs
293 `(("allegro" ,allegro-4)
294 ("dumb" ,dumb-allegro4)))
295 (home-page "http://allegator.sourceforge.net/")
296 (synopsis "Retro platform game")
297 (description
298 "Guide Alex the Allegator through the jungle in order to save his
299girlfriend Lola from evil humans who want to make a pair of shoes out of her.
300Plenty of classic platforming in four nice colors guaranteed!
301
302The game includes a built-in editor so you can design and share your own maps.")
303 (license license:gpl2+)))
304
649220ad 305(define-public armagetronad
a70d06b5 306 (package
649220ad 307 (name "armagetronad")
06271fe3 308 (version "0.2.8.3.5")
a70d06b5
RJ
309 (source (origin
310 (method url-fetch)
c0c09950
TGR
311 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
312 version "/armagetronad-" version ".src.tar.gz"))
a70d06b5
RJ
313 (sha256
314 (base32
06271fe3 315 "1z266haq22n5b0733h7qsg1rpzhz8lvm82f7wd06r008iiar7jdl"))))
a70d06b5
RJ
316 (build-system gnu-build-system)
317 (inputs
318 `(("libxml2" ,libxml2)
319 ("sdl" ,sdl)
320 ("sdl-image" ,sdl-image)
321 ("freeglut" ,freeglut)
322 ("libpng" ,libpng)
323 ("libjpeg-turbo" ,libjpeg-turbo)))
324 (home-page "http://www.armagetronad.org")
325 (synopsis "Tron clone in 3D")
df42e0f9
PN
326 (description "Armagetron Advanced is a multiplayer game in 3d that
327attempts to emulate and expand on the lightcycle sequence from the movie Tron.
328It's an old school arcade game slung into the 21st century. Highlights
329include a customizable playing arena, HUD, unique graphics, and AI bots. For
330the more advanced player there are new game modes and a wide variety of
331physics settings to tweak as well.")
a70d06b5
RJ
332 (license license:gpl2+)))
333
fc473814
TGR
334(define-public bastet
335 (package
336 (name "bastet")
337 (version "0.43.2")
338 (source
339 (origin
340 (method git-fetch)
341 (uri (git-reference
342 (url "https://github.com/fph/bastet.git")
343 (commit version)))
344 (file-name (git-file-name name version))
345 (sha256
346 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
347 (patches
348 (search-patches "bastet-change-source-of-unordered_set.patch"))))
349 (build-system gnu-build-system)
350 (arguments
351 `(#:make-flags
352 (list (string-append "CXXFLAGS=-I"
353 (assoc-ref %build-inputs "boost") "/include"))
354 #:phases
355 (modify-phases %standard-phases
356 (delete 'configure) ; no configure script
357 (replace 'check
358 ;; The 'Test' target builds the tests, but doesn't actually run them.
359 (lambda* (#:key make-flags #:allow-other-keys)
360 (apply invoke "make" "Test" make-flags)
361 (setenv "HOME" ".")
362 (invoke "./Test")))
363 (replace 'install
364 (lambda* (#:key outputs #:allow-other-keys)
365 (let* ((out (assoc-ref outputs "out"))
366 (share (string-append out "/share"))
367 (hicolor (string-append share "/icons/hicolor")))
368 (install-file "bastet"
369 (string-append out "/bin"))
370
371 (install-file "bastet.desktop"
372 (string-append share "/applications"))
373 (install-file "bastet.svg"
374 (string-append hicolor "/scalable/apps"))
375
376 (install-file "bastet.appdata.xml"
377 (string-append share "/appdata"))
378
379 (install-file "bastet.6"
380 (string-append out "/share/man/man6"))
381 #t))))))
382 (native-inputs
383 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
384 (inputs
385 `(("boost" ,boost)
386 ("ncurses" ,ncurses)))
16b84f54 387 (home-page "https://fph.altervista.org/prog/bastet.html")
fc473814
TGR
388 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
389 (description
390 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
391game. Unlike normal Tetris, Bastet does not choose the next brick at random.
392Instead, it uses a special algorithm to choose the worst brick possible.
393
394Playing bastet can be a painful experience, especially if you usually make
395canyons and wait for the long I-shaped block to clear four rows at a time.")
396 (license license:gpl3+)))
397
649220ad 398(define-public cataclysm-dda
1c4d4196 399 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
529701aa
KK
400 (package
401 (name "cataclysm-dda")
1c4d4196 402 (version "0.D")
529701aa
KK
403 (source (origin
404 (method git-fetch)
405 (uri (git-reference
406 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
407 (commit commit)))
408 (sha256
409 (base32
1c4d4196 410 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
529701aa
KK
411 (file-name (git-file-name name version))))
412 (build-system gnu-build-system)
413 (arguments
414 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
28407818
NG
415 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
416 "LOCALIZE=1" "LANGUAGES=all")
529701aa
KK
417 #:phases
418 (modify-phases %standard-phases
419 (delete 'configure)
420 (add-after 'build 'build-tiles
421 (lambda* (#:key make-flags outputs #:allow-other-keys)
422 ;; Change prefix directory and enable tile graphics and sound.
423 (apply invoke "make" "TILES=1" "SOUND=1"
424 (string-append "PREFIX="
425 (assoc-ref outputs "tiles"))
426 (cdr make-flags))))
427 (add-after 'install 'install-tiles
428 (lambda* (#:key make-flags outputs #:allow-other-keys)
429 (apply invoke "make" "install" "TILES=1" "SOUND=1"
430 (string-append "PREFIX="
431 (assoc-ref outputs "tiles"))
432 (cdr make-flags)))))
433 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
434 ;; input in order to support tests.
435 #:tests? #f))
436 (outputs '("out"
437 "tiles")) ; For tile graphics and sound support.
438 (native-inputs
439 `(("gettext" ,gettext-minimal)
440 ("pkg-config" ,pkg-config)))
441 (inputs
442 `(("freetype" ,freetype)
443 ("libogg" ,libogg)
444 ("libvorbis" ,libvorbis)
445 ("ncurses" ,ncurses)
446 ("sdl2" ,sdl2)
447 ("sdl2-image" ,sdl2-image)
448 ("sdl2-ttf" ,sdl2-ttf)
449 ("sdl2-mixer" ,sdl2-mixer)))
39604beb 450 (home-page "https://cataclysmdda.org/")
529701aa
KK
451 (synopsis "Survival horror roguelike video game")
452 (description
973bd8a6
PN
453 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
454in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
455procedurally generated world. Scavenge the remnants of a dead civilization
456for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
457to get you out of Dodge. Fight to defeat or escape from a wide variety of
458powerful monstrosities, from zombies to giant insects to killer robots and
459things far stranger and deadlier, and against the others like yourself, that
460want what you have.")
529701aa 461 (license license:cc-by-sa3.0))))
20214f71 462
57b6caef
TL
463(define-public corsix-th
464 (package
465 (name "corsix-th")
466 (version "0.63")
467 (source
468 (origin
469 (method git-fetch)
470 (uri (git-reference
471 (url "https://github.com/CorsixTH/CorsixTH.git")
472 (commit (string-append "v" version))))
473 (file-name (git-file-name name version))
474 (sha256
475 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
476 (build-system cmake-build-system)
477 (arguments
478 `(#:phases
479 (modify-phases %standard-phases
480 (add-after 'install 'wrap-binary
481 (lambda _
482 ;; Set Lua module paths and default MIDI soundfont on startup.
483 (let* ((out (assoc-ref %outputs "out"))
484 (fluid (assoc-ref %build-inputs "fluid-3"))
485 (lua-version ,(version-major+minor (package-version lua)))
486 (lua-cpath
487 (map (lambda (lib)
488 (string-append
489 (assoc-ref %build-inputs (string-append "lua-" lib))
490 "/lib/lua/" lua-version "/?.so"))
491 '("filesystem" "lpeg"))))
492 (wrap-program (string-append out "/bin/corsix-th")
493 `("LUA_CPATH" ";" = ,lua-cpath)
494 `("SDL_SOUNDFONTS" ":" suffix
495 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
496 #t)))
497 #:tests? #f)) ; TODO need busted package to run tests
498 ;; Omit Lua-Socket dependency to disable automatic updates.
499 (inputs
500 `(("ffmpeg" ,ffmpeg)
501 ("fluid-3" ,fluid-3)
502 ("freetype" ,freetype)
503 ("lua" ,lua)
504 ("lua-filesystem" ,lua-filesystem)
505 ("lua-lpeg" ,lua-lpeg)
506 ("sdl2" ,sdl2)
507 ("sdl2-mixer" ,sdl2-mixer)))
508 (home-page "https://corsixth.com")
509 (synopsis "Implementation of the @i{Theme Hospital} game engine")
510 (description
511 "This package provides a reimplementation of the 1997 Bullfrog business
512simulation game @i{Theme Hospital}. As well as faithfully recreating the
513original engine, CorsixTH adds support for high resolutions, custom levels and
514more. This package does @emph{not} provide the game assets.")
515 (license (list
516 license:expat ; main license
517 license:bsd-3)))) ; CorsixTH/Src/random.c
518
620b0468
RW
519(define-public cowsay
520 (package
521 (name "cowsay")
46ba5337 522 (version "3.04")
620b0468 523 (source (origin
7afb97fd
EF
524 (method git-fetch)
525 (uri (git-reference
526 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
527 (commit (string-append name "-" version))))
528 (file-name (git-file-name name version))
620b0468
RW
529 (sha256
530 (base32
7afb97fd 531 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
532 (build-system gnu-build-system)
533 (arguments
534 `(#:phases
535 (modify-phases %standard-phases
6c0c1752
TGR
536 (delete 'configure) ; no configure script
537 (delete 'build) ; nothing to be built
538 (replace 'install
620b0468 539 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
540 (invoke "sh" "install.sh"
541 (assoc-ref outputs "out"))))
1ee3079d
EF
542 (delete 'check)
543 (add-after 'install 'check
620b0468 544 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
545 (invoke (string-append (assoc-ref outputs "out")
546 "/bin/cowsay")
547 "We're done!"))))))
620b0468
RW
548 (inputs
549 `(("perl" ,perl)))
550 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 551 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
552 (synopsis "Speaking cow text filter")
553 (description "Cowsay is basically a text filter. Send some text into it,
554and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
555cows can think too: all you have to do is run @command{cowthink}. If you're
556tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
557 (license license:gpl3+)))
558
4dbd704d
LP
559(define-public lolcat
560 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
561 (revision "0"))
562 (package
563 (name "lolcat")
564 (version (git-version "1.0" revision commit))
565 (source
566 (origin
567 (method git-fetch)
568 (uri (git-reference
569 (url "https://github.com/jaseg/lolcat.git")
570 (commit commit)))
571 (sha256
572 (base32
573 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
574 (file-name (git-file-name name version))))
575 (build-system gnu-build-system)
576 (arguments
577 `(#:tests? #f ;; no check target
578 #:make-flags (list "CC=gcc")
579 #:phases
580 (modify-phases %standard-phases
581 (delete 'bootstrap)
582 (delete 'configure)
583 (replace 'install
584 (lambda* (#:key outputs #:allow-other-keys)
585 (let* ((out (assoc-ref outputs "out"))
586 (dest (string-append out "/bin")))
587 (mkdir-p dest)
588 (install-file "lolcat" dest)
589 (install-file "censor" dest)
590 #t))))))
591 (home-page "https://github.com/jaseg/lolcat")
592 (synopsis "Rainbow coloring effect for text console display")
593 (description "@command{lolcat} concatenates files and streams like
594regular @command{cat}, but it also adds terminal escape codes between
595characters and lines resulting in a rainbow effect.")
596 (license license:wtfpl2))))
597
29a2f61e
NG
598(define-public foobillard++
599 ;; Even though this latest revision is old already, stable release is
600 ;; lagging way behind it, and has issues with textures rendering.
601 (let ((svn-revision 170))
602 (package
603 (name "foobillard++")
604 (version (string-append "3.43-r" (number->string svn-revision)))
605 (source
606 (origin
607 (method svn-fetch)
608 (uri (svn-reference
609 (url "svn://svn.code.sf.net/p/foobillardplus/code/")
610 (revision svn-revision)))
611 (file-name (git-file-name name version))
612 (sha256
613 (base32 "00b693ys5zvzjbjzzj3dqfzm5xw64gwjf9m8qv6bkmf0klbhmayk"))
614 (patches
615 (search-patches "foobillard++-pkg-config.patch"))
616 (modules '((guix build utils)))
617 (snippet
618 '(begin
619 ;; Unfortunately, the game includes background music with
620 ;; a non-commercial clause. Delete it.
621 (for-each delete-file (find-files "data/music" "\\.ogg$"))
622 #t))))
623 (build-system gnu-build-system)
624 (arguments
625 `(#:configure-flags
626 (list
627 ;; Install data in a less exotic location.
628 (string-append "--prefix=" (assoc-ref %outputs "out") "/share")
629 ;; Prevent a build error about undefined trigonometric functions.
630 "--enable-fastmath=no")
631 #:phases
632 (modify-phases %standard-phases
633 (add-after 'unpack 'fix-makefile
634 ;; Remove hard-coded directories. Also fix installation
635 ;; rule: it tries to move around non-existent files or
636 ;; files already moved.
637 (lambda* (#:key outputs #:allow-other-keys)
638 (substitute* "Makefile.am"
639 (("/usr") (assoc-ref outputs "out"))
640 (("cp .*?/foobillardplus\\.desktop.*") "")
641 (("cp .*?/foobillardplus\\.(png|xbm) \\$\\(datarootdir\\).*")
642 ""))
643 #t))
644 (add-after 'unpack 'unbundle-font
645 ;; XXX: The package ships with LinBiolinum_aSB.ttf and
646 ;; LinBiolinum_aS.ttf, which are not provided by
647 ;; `font-linuxlibertine' package. Therefore, we cannot replace
648 ;; them yet.
649 (lambda* (#:key inputs #:allow-other-keys)
650 (let ((dejavu (string-append (assoc-ref inputs "font-dejavu")
651 "/share/fonts/truetype/")))
652 (with-directory-excursion "data"
653 (for-each (lambda (f)
654 (delete-file f)
655 (symlink (string-append dejavu f) f))
656 '("DejaVuSans-Bold.ttf" "DejaVuSans.ttf"))))
657 #t))
658 (replace 'bootstrap
659 (lambda _
660 (invoke "aclocal" "--force")
661 (invoke "autoconf" "-f")
662 (invoke "autoheader" "-f")
663 (invoke "automake" "-a" "-c" "-f")))
664 (add-before 'build 'prepare-build
665 ;; Set correct environment for SDL.
666 (lambda* (#:key inputs #:allow-other-keys)
667 (setenv "CPATH"
668 (string-append (assoc-ref inputs "sdl")
669 "/include/SDL:"
670 (or (getenv "CPATH") "")))
671 #t))
672 (add-before 'build 'fix-settings-directory
673 ;; Hide foobillardplus settings directory in $HOME.
674 (lambda _
675 (substitute* "src/history.c"
676 (("/foobillardplus-data") "/.foobillardplus"))
677 #t))
678 (add-before 'install 'create-directories
679 ;; Install process does not create directories before
680 ;; trying to move file in it.
681 (lambda* (#:key outputs #:allow-other-keys)
682 (let ((out (assoc-ref outputs "out")))
683 (mkdir-p (string-append out "/share/icons"))
684 (mkdir-p (string-append out "/share/applications")))
685 #t))
686 (add-after 'install 'symlink-executable
687 ;; Symlink executable to $out/bin.
688 (lambda* (#:key outputs #:allow-other-keys)
689 (let* ((out (assoc-ref outputs "out"))
690 (bin (string-append out "/bin")))
691 (mkdir-p bin)
692 (with-directory-excursion bin
693 (symlink "../share/foobillardplus/bin/foobillardplus"
694 "foobillardplus"))
695 #t))))))
696 (native-inputs
697 `(("autoconf" ,autoconf)
698 ("automake" ,automake)
699 ("pkg-config" ,pkg-config)))
700 (inputs
701 `(("font-dejavu" ,font-dejavu)
702 ("freetype" ,freetype)
703 ("glu" ,glu)
704 ("libpng" ,libpng)
705 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net)))))
706 (home-page "http://foobillardplus.sourceforge.net/")
707 (synopsis "3D billiard game")
708 (description "FooBillard++ is an advanced 3D OpenGL billiard game
709based on the original foobillard 3.0a sources from Florian Berger.
710You can play it with one or two players or against the computer.
711
712The game features:
713
714@itemize
715@item Wood paneled table with gold covers and gold diamonds.
716@item Reflections on balls.
717@item Zoom in and out, rotation, different angles and bird's eye view.
718@item Different game modes: 8 or 9-ball, Snooker or Carambole.
719@item Tournaments. Compete against other players.
720@item Animated cue with strength and eccentric hit adjustment.
721@item Jump shots and snipping.
722@item Realistic gameplay and billiard sounds.
723@item Red-Green stereo.
724@item And much more.
725@end itemize")
726 (license (list license:gpl2 license:silofl1.1)))))
727
0b5d078f
KK
728(define-public freedoom
729 (package
9303b09a 730 (name "freedoom")
78a3da3d 731 (version "0.12.1")
9303b09a
TGR
732 (source
733 (origin
734 (method git-fetch)
735 (uri (git-reference
736 (url "https://github.com/freedoom/freedoom.git")
737 (commit (string-append "v" version))))
738 (file-name (git-file-name name version))
739 (sha256
78a3da3d 740 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
741 (build-system gnu-build-system)
742 (arguments
743 '(#:make-flags
744 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
745 #:tests? #f ; no check target
746 #:phases
747 (modify-phases %standard-phases
748 (delete 'bootstrap)
749 (replace 'configure
750 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 751 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 752 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
753 ;; Make sure that the install scripts know where to find
754 ;; the appropriate WAD files.
755 (substitute* "dist/freedoom"
756 (("IWAD=freedm.wad")
757 (string-append "IWAD=" wad-dir "/freedm.wad"))
758 (("IWAD=freedoom1.wad")
759 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
760 (("IWAD=freedoom2.wad")
761 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
762 #t))))))
763 (native-inputs
764 `(("asciidoc" ,asciidoc)
765 ("deutex" ,deutex)
78a3da3d
KK
766 ("python" ,python)
767 ("python-pillow" ,python-pillow)))
9303b09a
TGR
768 (home-page "https://freedoom.github.io/")
769 (synopsis "Free content game based on the Doom engine")
770 (native-search-paths
771 (list (search-path-specification
772 (variable "DOOMWADDIR")
773 (files '("share/games/doom")))
774 (search-path-specification
775 (variable "DOOMWADPATH")
776 (files '("share/games/doom")))))
777 (description
778 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
779shooter game. Freedoom by itself is just the raw material for a game: it must
780be paired with a compatible game engine (such as @code{prboom-plus}) to be
781played. Freedoom complements the Doom engine with free levels, artwork, sound
782effects and music to make a completely free game.")
9303b09a 783 (license license:bsd-3)))
0b5d078f 784
18995af2
TGR
785(define-public freedroidrpg
786 (package
787 (name "freedroidrpg")
788 (version "0.16.1")
789 (source
790 (origin
791 (method url-fetch)
792 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
793 "freedroidRPG-" (version-major+minor version) "/"
794 "freedroidRPG-" version ".tar.gz"))
795 (sha256
796 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
797 (build-system gnu-build-system)
798 (arguments
799 `(#:configure-flags
800 (list
801 (string-append "CFLAGS="
802 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
803 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
804 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
805 "--enable-opengl")
806 ;; FIXME: the test suite fails with the following error output:
807 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
808 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
809 #:tests? #f))
810 (native-inputs
811 `(("pkg-config" ,pkg-config)))
812 (inputs
813 `(("glu" ,glu)
814 ("libjpeg" ,libjpeg)
815 ("libogg" ,libogg)
816 ("libpng" ,libpng)
817 ("libvorbis" ,libvorbis)
818 ("mesa" ,mesa)
819 ("python" ,python-wrapper)
820 ("sdl" ,sdl)
821 ("sdl-gfx" ,sdl-gfx)
822 ("sdl-image" ,sdl-image)
823 ("sdl-mixer" ,sdl-mixer)
824 ("zlib" ,zlib)))
825 (home-page "http://www.freedroid.org/")
826 (synopsis "Isometric role-playing game against killer robots")
827 (description
828 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
829The game tells the story of a world destroyed by a conflict between robots and
830their human masters. To restore peace to humankind, the player must complete
831numerous quests while fighting off rebelling robots---either by taking control
832of them, or by simply blasting them to pieces with melee and ranged weapons in
833real-time combat.")
834 (license (list license:expat ; lua/
835 license:gpl3 ; src/gen_savestruct.py
836 license:gpl2+)))) ; the rest
837
06f5f0b1
KK
838(define-public golly
839 (package
840 (name "golly")
106c6aa5 841 (version "3.3")
06f5f0b1
KK
842 (source (origin
843 (method url-fetch)
04e7b1e7 844 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
845 version "/golly-" version
846 "-src.tar.gz"))
847 (sha256
848 (base32
106c6aa5 849 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
06f5f0b1
KK
850 (build-system gnu-build-system)
851 (arguments
852 '(#:make-flags (list "CC=gcc"
853 (string-append "GOLLYDIR="
854 (assoc-ref %outputs "out")
855 "/share/golly"))
856 #:tests? #f ; no check target
857 #:phases
858 (modify-phases %standard-phases
859 (replace 'configure
860 (lambda* (#:key inputs #:allow-other-keys)
861 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
862 ;; properly set the path to the Python shared library. This
863 ;; substitution acheives the same end by different means.
864 (substitute* "gui-wx/wxprefs.cpp"
865 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
866 (string-append "pythonlib = \""
867 (assoc-ref inputs "python")
868 "/lib/libpython-2.7.so\"")))
869 #t))
870 (replace 'build
871 (lambda* (#:key make-flags outputs #:allow-other-keys)
872 (with-directory-excursion "gui-wx"
873 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
874 (replace 'install
875 (lambda* (#:key outputs #:allow-other-keys)
876 (let* ((out (assoc-ref outputs "out"))
877 (bin (string-append out "/bin"))
878 (doc (string-append out "/share/doc/golly"))
879 (pixmaps (string-append out "/share/pixmaps"))
880 (share (string-append out "/share/golly")))
881 (for-each (lambda (binary)
882 (install-file binary bin))
883 '("bgolly" "golly"))
884 (for-each (lambda (document)
885 (install-file
886 (string-append "docs/" document ".html")
887 doc))
888 '("License" "ReadMe" "ToDo"))
889 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
890 (for-each (lambda (folder)
891 (copy-recursively
892 folder
893 (string-append share "/" folder)))
894 '("Help" "Patterns" "Rules" "Scripts")))
895 #t)))))
896 (native-inputs
897 `(("lua" ,lua)))
898 (inputs
899 `(("glu" ,glu)
900 ("mesa" ,mesa)
901 ("python" ,python-2)
902 ("wxwidgets" ,wxwidgets-gtk2)
903 ("zlib" ,zlib)))
904 (home-page "http://golly.sourceforge.net/")
905 (synopsis "Software for exploring cellular automata")
906 (description
907 "Golly simulates Conway's Game of Life and many other types of cellular
908automata. The following features are available:
909@enumerate
910@item Support for bounded and unbounded universes, with cells of up to 256
911 states.
912@item Support for multiple algorithms, including Bill Gosper's Hashlife
913 algorithm.
914@item Loading patterns from BMP, PNG, GIF and TIFF image files.
915@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
916@item Scriptable via Lua or Python.
917@item Extracting patterns, rules and scripts from zip files.
918@item Downloading patterns, rules and scripts from online archives.
919@item Pasting patterns from the clipboard.
920@item Unlimited undo/redo.
921@item Configurable keyboard shortcuts.
922@item Auto fit option to keep patterns within the view.
923@end enumerate")
924 (license license:gpl2+)))
925
299e15c1
TL
926(define-public julius
927 (package
928 (name "julius")
45cf3c30 929 (version "1.3.0")
299e15c1
TL
930 (source
931 (origin
932 (method git-fetch)
933 (uri (git-reference
934 (url "https://github.com/bvschaik/julius.git")
935 (commit (string-append "v" version))))
936 (file-name (git-file-name name version))
937 (sha256
45cf3c30 938 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
299e15c1
TL
939 (build-system cmake-build-system)
940 (inputs
941 `(("sdl2" ,sdl2)
942 ("sdl2-mixer" ,sdl2-mixer)))
943 (home-page "https://github.com/bvschaik/julius")
944 (synopsis "Re-implementation of Caesar III game engine")
945 (description
946 "Engine for Caesar III, a city-building real-time strategy game.
947Julius includes some UI enhancements while preserving the logic (including
948bugs) of the original game, so that saved games are compatible. This package
949does not include game data.")
950 (license (list license:agpl3
951 license:expat ; ext/dirent
952 license:zlib)))) ; ext/tinyfiledialogs
953
5145001a
RW
954(define-public meandmyshadow
955 (package
956 (name "meandmyshadow")
b70ff03e 957 (version "0.5a")
5145001a
RW
958 (source (origin
959 (method url-fetch)
960 (uri (string-append "mirror://sourceforge/meandmyshadow/"
961 version "/meandmyshadow-" version
962 "-src.tar.gz"))
963 (sha256
964 (base32
b70ff03e 965 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
966 (build-system cmake-build-system)
967 (arguments
1d9a9d27 968 `(#:tests? #f)) ; there are no tests
5145001a
RW
969 (native-inputs
970 `(("pkg-config" ,pkg-config)))
971 (inputs
1d9a9d27 972 `(("curl" ,curl)
5145001a 973 ("libarchive" ,libarchive)
1d9a9d27
TGR
974 ("lua" ,lua)
975 ("sdl" ,(sdl-union (list sdl2
976 sdl2-image
977 sdl2-mixer
978 sdl2-ttf)))))
b590951f 979 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
980 (synopsis "Puzzle/platform game")
981 (description "Me and My Shadow is a puzzle/platform game in which you try
982to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
983and much more stand between you and the exit. Record your moves and let your
984shadow mimic them to reach blocks you couldn't reach alone.")
985 (license license:gpl3+)))
986
a02ca033
TL
987(define-public opensurge
988 (package
989 (name "opensurge")
990 (version "0.5.1.2")
991 (source
992 (origin
993 (method git-fetch)
994 (uri (git-reference
995 (url "https://github.com/alemart/opensurge.git")
996 (commit (string-append "v" version))))
997 (file-name (git-file-name name version))
998 (sha256
999 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
1000 (build-system cmake-build-system)
1001 (arguments
1002 `(#:tests? #f ;there are no tests
1003 #:configure-flags
1004 (let* ((out (assoc-ref %outputs "out"))
1005 (share (string-append out "/share")))
1006 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
1007 (string-append "-DGAME_DATADIR=" share "/" ,name)
1008 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
1009 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
1010 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
1011 #:phases
1012 (modify-phases %standard-phases
1013 (add-after 'unpack 'fix-xdg-open-path
1014 (lambda* (#:key inputs #:allow-other-keys)
1015 ;; Look for xdg-open in the store.
1016 (substitute* "src/core/web.c"
1017 (("/usr(/bin/xdg-open)" _ bin)
1018 (string-append (assoc-ref inputs "xdg-utils") bin)))
1019 #t))
1020 (add-after 'unpack 'unbundle-fonts
1021 (lambda* (#:key inputs #:allow-other-keys)
1022 ;; Replace bundled Roboto fonts with links to the store.
1023 (with-directory-excursion "fonts"
1024 (let ((roboto-dir (string-append
1025 (assoc-ref inputs "font-google-roboto")
1026 "/share/fonts/truetype/")))
1027 (for-each
1028 (lambda (font)
1029 (delete-file font)
1030 (symlink (string-append roboto-dir font) font))
1031 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
1032 #t))))))
1033 (inputs
1034 `(("allegro" ,allegro)
1035 ("font-google-roboto" ,font-google-roboto)
1036 ("surgescript" ,surgescript)
1037 ("xdg-utils" ,xdg-utils)))
1038 (home-page "https://opensurge2d.org")
1039 (synopsis "2D retro side-scrolling game")
1040 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
1041inspired by the Sonic games. The player runs at high speeds through each
1042level while collecting items and avoiding obstacles. The game includes a
1043built-in level editor.")
1044 (license
1045 ;; Code is under GPL 3+, assets are under various licenses.
1046 ;; See src/misc/credits.c for details.
1047 (list license:gpl3+
1048 license:cc0
1049 license:cc-by3.0
1050 license:cc-by-sa3.0
1051 license:expat
1052 license:public-domain
1053 license:silofl1.1))))
1054
02345c96
RW
1055(define-public knights
1056 (package
1057 (name "knights")
1058 (version "025")
1059 (source (origin
1060 (method url-fetch)
1061 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
1062 version "_src.tar.gz"))
1063 (sha256
1064 (base32
1065 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
1066 (build-system gnu-build-system)
1067 (arguments
1068 '(#:make-flags
1069 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
1070 #:phases
1071 (modify-phases %standard-phases
1072 ;; No configure script.
1073 (delete 'configure))
1074 #:tests? #f)) ;; No check target.
1075 (inputs
1076 `(("boost" ,boost)
1077 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
1078 ("freetype" ,freetype)
1079 ("fontconfig" ,fontconfig)
1080 ("curl" ,curl)))
6730d895
RW
1081 (native-inputs
1082 `(("pkg-config" ,pkg-config)))
02345c96
RW
1083 (home-page "http://www.knightsgame.org.uk/")
1084 (synopsis "Multiplayer dungeon game involving knights and quests")
1085 (description "Knights is a multiplayer game involving several knights who
1086must run around a dungeon and complete various quests. Each game revolves
1087around a quest – for example, you might have to find some items and carry them
1088back to your starting point. This may sound easy, but as there are only
1089enough items in the dungeon for one player to win, you may end up having to
1090kill your opponents to get their stuff! Other quests involve escaping from
1091the dungeon, fighting a duel to the death against the enemy knights, or
1092destroying an ancient book using a special wand.")
1093 ;; This package includes modified sources of lua (X11), enet (Expat), and
1094 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
1095 ;; license. The whole package is released under GPLv3+.
1096 (license license:gpl3+)))
1097
e23f2ff1 1098(define-public gnubg
bf0018cd 1099 (package
e23f2ff1 1100 (name "gnubg")
d5ddb484 1101 (version "1.06.002")
bf0018cd
JD
1102 (source
1103 (origin
1104 (method url-fetch)
d24881e4
GLV
1105 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
1106 version "-sources.tar.gz"))
bf0018cd
JD
1107 (sha256
1108 (base32
d5ddb484 1109 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
1110 (build-system gnu-build-system)
1111 (inputs `(("glib" ,glib)
1112 ("readline" ,readline)
1113 ("gtk+" ,gtk+-2)
1114 ("mesa" ,mesa)
6a95024c 1115 ("glu" ,glu)
bf0018cd
JD
1116 ("gtkglext" ,gtkglext)
1117 ("sqlite" ,sqlite)
1118 ("libcanberra" ,libcanberra)))
1119 (native-inputs `(("python-2" ,python-2)
1120 ("pkg-config" ,pkg-config)))
93605bfd
GLV
1121 (arguments
1122 `(#:phases
1123 (modify-phases %standard-phases
1124 (add-after 'install 'install-desktop-file
1125 (lambda* (#:key outputs #:allow-other-keys)
1126 (let* ((out (assoc-ref outputs "out"))
1127 (apps (string-append out "/share/applications")))
1128 (mkdir-p apps)
1129 (with-output-to-file (string-append apps "/gnubg.desktop")
1130 (lambda _
1131 (format #t
1132 "[Desktop Entry]~@
1133 Name=GNU Backgammon~@
1134 Exec=~a/bin/gnubg -w~@
1135 Icon=gnubg~@
1136 Categories=Game;~@
1137 Terminal=false~@
1138 Type=Application~%"
1139 out))))
1140 #t)))))
d24881e4 1141 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 1142 (synopsis "Backgammon game")
c97e4d8b
PN
1143 (description "The GNU backgammon application (also known as \"gnubg\") can
1144be used for playing, analyzing and teaching the game. It has an advanced
1145evaluation engine based on artificial neural networks suitable for both
1146beginners and advanced players. In addition to a command-line interface, it
1147also features an attractive, 3D representation of the playing board.")
024e2c17 1148 (license license:gpl3+)))
bf0018cd 1149
490c6528
JD
1150(define-public gnubik
1151 (package
1152 (name "gnubik")
ecc39b3f 1153 (version "2.4.3")
490c6528
JD
1154 (source
1155 (origin
1156 (method url-fetch)
1157 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1158 version ".tar.gz"))
1159 (sha256
1160 (base32
ecc39b3f 1161 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
1162 (build-system gnu-build-system)
1163 (inputs `(("gtk+" ,gtk+-2)
1164 ("mesa" ,mesa)
276a8f71 1165 ("glu" ,glu)
490c6528
JD
1166 ("libx11" ,libx11)
1167 ("guile" ,guile-2.0)
1168 ("gtkglext" ,gtkglext)))
b94a6ca0 1169 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
1170 ("pkg-config" ,pkg-config)))
1171 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
1172 (synopsis "3d Rubik's cube game")
1173 (description
1174 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
1175each of its faces have a uniform color. The game is customizable, allowing
1176you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 1177You may even apply photos to the faces instead of colors. The game is
490c6528 1178scriptable with Guile.")
024e2c17 1179 (license license:gpl3+)))
3da5dca3 1180
a20b084a
JD
1181(define-public gnushogi
1182 (package
1183 (name "gnushogi")
1184 (version "1.4.2")
1185 (source
1186 (origin
1187 (method url-fetch)
1188 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1189 version ".tar.gz"))
1190 (sha256
1191 (base32
1192 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1193 (arguments `(#:tests? #f)) ;; No check target.
1194 (build-system gnu-build-system)
6fd52309 1195 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1196 (synopsis "The game of Shogi (Japanese chess)")
1197 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1198Chess). It is similar to standard chess but this variant is far more complicated.")
1199 (license license:gpl3+)))
1200
e664200c
KK
1201(define-public ltris
1202 (package
1203 (name "ltris")
1204 (version "1.0.19")
1205 (source
1206 (origin
1207 (method url-fetch)
1208 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 1209 "ltris-" version ".tar.gz"))
e664200c
KK
1210 (sha256
1211 (base32
1212 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1213 (build-system gnu-build-system)
1214 (arguments
1215 '(;; The code in LTris uses traditional GNU semantics for inline functions
1216 #:configure-flags '("CFLAGS=-fgnu89-inline")
1217 #:phases
1218 (modify-phases %standard-phases
1219 (add-after 'set-paths 'set-sdl-paths
1220 (lambda* (#:key inputs #:allow-other-keys)
1221 (setenv "CPATH"
1222 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1223 "/include/SDL:"
1224 (or (getenv "CPATH") "")))
e664200c
KK
1225 #t)))))
1226 (inputs
1227 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1228 (home-page "http://lgames.sourceforge.net/LTris/")
1229 (synopsis "Tetris clone based on the SDL library")
1230 (description
1231 "LTris is a tetris clone: differently shaped blocks are falling down the
1232rectangular playing field and can be moved sideways or rotated by 90 degree
1233units with the aim of building lines without gaps which then disappear (causing
1234any block above the deleted line to fall down). LTris has three game modes: In
1235Classic you play until the stack of blocks reaches the top of the playing field
1236and no new blocks can enter. In Figures the playing field is reset to a new
1237figure each level and later on tiles and lines suddenly appear. In Multiplayer
1238up to three players (either human or CPU) compete with each other sending
1239removed lines to all opponents. There is also a Demo mode in which you can
1240watch your CPU playing while enjoying a cup of tea!")
1241 (license license:gpl2+)))
3bd0d186
A
1242
1243(define-public nethack
1244 (package
1245 (name "nethack")
9d9da65f 1246 (version "3.6.6")
3bd0d186
A
1247 (source
1248 (origin
1249 (method url-fetch)
a544817e
TGR
1250 (uri
1251 (string-append "https://www.nethack.org/download/" version "/nethack-"
1252 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 1253 (sha256
9d9da65f 1254 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
3bd0d186
A
1255 (inputs
1256 `(("ncurses" ,ncurses)
1257 ("bison" ,bison)
1258 ("flex" ,flex)
1259 ("less" ,less)))
1260 (build-system gnu-build-system)
1261 (arguments
1262 '(#:make-flags
1263 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1264 #:phases
1265 (modify-phases %standard-phases
1266 (add-before 'configure 'patch-paths
1267 (lambda _
1268 (substitute* "sys/unix/nethack.sh"
1269 (("^ *cd .*$") ""))
1270 (substitute* "sys/unix/Makefile.utl"
1271 (("^YACC *=.*$") "YACC = bison -y\n")
1272 (("^LEX *=.*$") "LEX = flex\n")
1273 (("^# CC = gcc") "CC = gcc"))
1274 (substitute* "sys/unix/hints/linux"
1275 (("/bin/gzip") (string-append
1276 (assoc-ref %build-inputs "gzip")
1277 "/bin/gzip"))
1278 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1279 (substitute* "include/config.h"
df35e715
LC
1280 (("^.*define CHDIR.*$") "")
1281 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1282 ;; Honor SOURCE_DATE_EPOCH.
1283 "#define REPRODUCIBLE_BUILD"))
1284
1285 ;; Note: 'makedefs' rejects and ignores dates that are too old
1286 ;; or too new, so we must choose something reasonable here.
1287 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1288
3bd0d186
A
1289 (substitute* "sys/unix/Makefile.src"
1290 (("^# CC = gcc") "CC = gcc"))
1291 #t))
1292 (replace 'configure
1293 (lambda _
1294 (let ((bash (string-append
1295 (assoc-ref %build-inputs "bash")
1296 "/bin/bash")))
1297 (with-directory-excursion "sys/unix"
1298 (substitute* "setup.sh" (("/bin/sh") bash))
1299 (invoke bash "setup.sh" "hints/linux"))
1300 #t)))
1301 (add-after 'install 'fixup-paths
1302 (lambda _
1303 (let* ((output (assoc-ref %outputs "out"))
1304 (nethack-script (string-append output "/bin/nethack")))
1305 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1306 (for-each
1307 (lambda (file)
1308 (rename-file
1309 (string-append output "/games/lib/nethackdir/" file)
1310 (string-append output "/games/lib/nethackuserdir/"
1311 file)))
1312 '("xlogfile" "logfile" "perm" "record" "save"))
1313 (mkdir-p (string-append output "/bin"))
1314 (call-with-output-file nethack-script
1315 (lambda (port)
1316 (format port "#!~a/bin/sh
1317PATH=~a:$PATH
1318if [ ! -d ~~/.config/nethack ]; then
1319 mkdir -p ~~/.config/nethack
1320 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1321 chmod -R +w ~~/.config/nethack
1322fi
1323
1324RUNDIR=$(mktemp -d)
1325
1326cleanup() {
1327 rm -rf $RUNDIR
1328}
1329trap cleanup EXIT
1330
1331cd $RUNDIR
1332for i in ~~/.config/nethack/*; do
1333 ln -s $i $(basename $i)
1334done
1335for i in ~a/games/lib/nethackdir/*; do
1336 ln -s $i $(basename $i)
1337done
1338~a/games/nethack"
1339 (assoc-ref %build-inputs "bash")
1340 (list->search-path-as-string
1341 (list
1342 (string-append
1343 (assoc-ref %build-inputs "coreutils") "/bin")
1344 (string-append
1345 (assoc-ref %build-inputs "less") "/bin"))
1346 ":")
1347 output
1348 output
1349 output)))
1350 (chmod nethack-script #o555)
1351 #t)))
1352 (delete 'check))))
1353 (home-page "https://nethack.org")
1354 (synopsis "Classic dungeon crawl game")
1355 (description "NetHack is a single player dungeon exploration game that runs
1356on a wide variety of computer systems, with a variety of graphical and text
1357interfaces all using the same game engine. Unlike many other Dungeons &
1358Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1359the dungeon and not simply killing everything in sight - in fact, killing
1360everything in sight is a good way to die quickly. Each game presents a
1361different landscape - the random number generator provides an essentially
1362unlimited number of variations of the dungeon and its denizens to be discovered
1363by the player in one of a number of characters: you can pick your race, your
1364role, and your gender.")
1365 (license
1366 (license:fsdg-compatible
1367 "https://nethack.org/common/license.html"))))
e664200c 1368
82943626
TGR
1369(define-public pipewalker
1370 (package
1371 (name "pipewalker")
1372 (version "0.9.4")
1373 (source
1374 (origin
1375 (method url-fetch)
1376 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1377 "pipewalker-" version ".tar.gz"))
82943626 1378 (sha256
96848ecc 1379 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1380 (build-system gnu-build-system)
1381 (arguments
1382 `(#:configure-flags
1383 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1384 "/share/doc/" ,name "-" ,version))
1385 #:phases
1386 (modify-phases %standard-phases
1387 (add-after 'configure 'patch-docdir
1388 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1389 (lambda _
1390 (substitute* "Makefile"
1391 (("(pkgdocdatadir = ).*" _ assignment)
1392 (string-append assignment "$(docdir)\n")))
1393 #t)))))
1394 (inputs
1395 `(("libpng" ,libpng)
1396 ("mesa" ,mesa)
1397 ("sdl" ,sdl)))
1398 (home-page "http://pipewalker.sourceforge.net/")
1399 (synopsis "Logical tile puzzle")
1400 (description
1401 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1402computers to one network server, bring water from a source to the taps, etc.
1403The underlying mechanism is always the same: you must turn each tile in the
1404grid in the right direction to combine all components into a single circuit.
1405Every puzzle has a complete solution, although there may be more than one.")
1406 (license license:gpl3+)))
1407
26a657f0
KK
1408(define-public prboom-plus
1409 (package
1410 (name "prboom-plus")
1411 (version "2.5.1.4")
1412 (source (origin
1413 (method url-fetch)
a8a96bbe
TGR
1414 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1415 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1416 (sha256
a8a96bbe 1417 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1418 (modules '((guix build utils)))
1419 (snippet
6cbee49d
MW
1420 '(begin
1421 (substitute* "src/version.c"
1422 (("__DATE__") "")
1423 (("__TIME__") ""))
1424 #t))))
26a657f0
KK
1425 (build-system gnu-build-system)
1426 (arguments
1427 '(#:configure-flags '("--disable-cpu-opt")
1428 #:make-flags `(,(string-append "gamesdir="
1429 (assoc-ref %outputs "out") "/bin"))
1430 #:phases
1431 (modify-phases %standard-phases
1432 (add-after 'set-paths 'set-sdl'paths
1433 (lambda* (#:key inputs #:allow-other-keys)
1434 (setenv "CPATH"
1435 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1436 "/include/SDL:"
1437 (or (getenv "CPATH") "")))
26a657f0
KK
1438 #t)))))
1439 (inputs
1440 `(("fluidsynth" ,fluidsynth)
1441 ("glu" ,glu)
1442 ("libmad" ,libmad)
1443 ("libpng" ,libpng)
1444 ("libvorbis" ,libvorbis)
1445 ("pcre" ,pcre)
1446 ("portmidi" ,portmidi)
1447 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1448 (home-page "http://prboom-plus.sourceforge.net/")
1449 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1450 (description
1451 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1452 (license license:gpl2+)))
1453
519bfc65
KK
1454(define-public retux
1455 (package
1456 (name "retux")
b286e3b3 1457 (version "1.3.6")
519bfc65
KK
1458 (source (origin
1459 (method url-fetch)
1460 (uri (string-append "mirror://savannah/retux/"
1461 (version-major+minor version) "/retux-"
1462 version "-src.tar.gz"))
1463 (sha256
1464 (base32
b286e3b3 1465 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1466 (build-system python-build-system)
1467 (arguments
1468 `(#:tests? #f ; no check target
1469 #:phases
1470 (modify-phases %standard-phases
1471 ;; no setup.py script
1472 (delete 'build)
1473 (replace 'install
1474 (lambda* (#:key outputs #:allow-other-keys)
1475 (let* ((out (assoc-ref outputs "out"))
1476 (bin (string-append out "/bin"))
1477 (data (string-append out "/share/retux"))
1478 (doc (string-append out "/share/doc/retux")))
1479 (mkdir-p bin)
1480
1481 (substitute* "retux.py"
1482 ;; Use the correct data directory.
1483 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1484 (string-append "\"" data "\","))
1485 ;; Use Python 3 so the patch-shebangs phase works properly.
1486 ((".*python2.*") "#!/usr/bin/python3"))
1487
1488 (copy-file "retux.py" (string-append bin "/retux"))
1489
1490 (copy-recursively "data" data)
1491
fbc3b802
KK
1492 (install-file "COPYING" doc)
1493 #t))))))
519bfc65
KK
1494 (inputs
1495 `(("python-sge-pygame" ,python-sge-pygame)
1496 ("python-six" ,python-six)
1497 ("python-xsge" ,python-xsge)))
1498 (home-page "http://retux.nongnu.org")
1499 (synopsis "Action platformer game")
1500 (description
1501 "ReTux is an action platformer loosely inspired by the Mario games,
1502utilizing the art assets from the @code{SuperTux} project.")
1503 ;; GPL version 3 or later is the license for the code and some art.
1504 ;; The rest of the licenses are for the art exclusively, as listed in
1505 ;; data/LICENSES.
1506 (license (list license:cc0
1507 license:cc-by3.0
1508 license:cc-by-sa3.0
1509 license:cc-by-sa4.0
1510 license:gpl2+
1511 license:gpl3+))))
07f3b379
KK
1512
1513(define-public roguebox-adventures
1697048f
KK
1514 (package
1515 (name "roguebox-adventures")
98f79040 1516 (version "3.0.1")
1697048f
KK
1517 (source
1518 (origin
1519 (method url-fetch)
1520 (uri (string-append
1521 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1522 (string-join (string-split version #\.) "_") "_Source.zip"))
1523 (file-name (string-append name "-" version ".zip"))
1524 (sha256
1525 (base32
98f79040 1526 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1697048f
KK
1527 (build-system python-build-system)
1528 (arguments
1529 `(#:tests? #f ; no check target
1530 #:phases
1531 (modify-phases %standard-phases
1532 (replace 'unpack
1533 (lambda* (#:key source #:allow-other-keys)
1534 (and (invoke "unzip" source)
1535 ;; The actual source is buried a few directories deep.
1536 (chdir (string-append "RogueBoxAdventures_v"
1537 (string-join
1538 (string-split ,version #\.) "_")
1539 "_Source")))))
1540 ;; no setup.py script
1541 (replace 'build
1542 (lambda* (#:key outputs #:allow-other-keys)
1543 (let* ((out (assoc-ref outputs "out"))
1544 (data (string-append
1545 out "/share/games/roguebox-adventures")))
1546 ;; Use the correct data directory.
1547 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1548 (("basic_path + os\\.sep + 'DATA'")
1549 (string-append "'" data "'"))
1550 (("^basic_path.*$")
1551 (string-append "basic_path ='" data "'\n")))
98f79040
KK
1552 (substitute* "LIB/dialog.py"
1553 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1554 (string-append "d_path = '" data "'")))
1697048f
KK
1555 (substitute* "LIB/gra_files.py"
1556 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1557 (string-append "basic_path ='" data "'\n")))
07f3b379 1558
1697048f
KK
1559 ;; The game must save in the user's home directory because
1560 ;; the store is read-only.
1561 (substitute* "main.py"
1562 (("home_save = False") "home_save = True")
1563 (("'icon_small.png'")
1564 (string-append "'" data "/icon_small.png'"))))
1565 #t))
1566 (replace 'install
1567 (lambda* (#:key outputs #:allow-other-keys)
1568 (let* ((out (assoc-ref outputs "out"))
1569 (bin (string-append out "/bin"))
1570 (roguebox-adventures
1571 (string-append bin "/roguebox-adventures"))
1572 (data (string-append
1573 out "/share/games/roguebox-adventures"))
1574 (lib (string-append data "/LIB"))
1575 (doc (string-append
1576 out "/share/doc/roguebox-adventures")))
1577 (mkdir-p bin)
1578 (mkdir-p doc)
07f3b379 1579
1697048f
KK
1580 (for-each (lambda (file)
1581 (copy-recursively file
1582 (string-append data "/" file)))
1583 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1584 "icon_big.png" "icon_small.png"))
1585 (for-each (lambda (file)
1586 (chmod file #o555)
1587 (install-file file lib))
1588 '("main.py" "run.py"))
07f3b379 1589
1697048f 1590 (copy-recursively "DOC" doc)
07f3b379 1591
1697048f
KK
1592 (call-with-output-file
1593 roguebox-adventures
1594 (lambda (p)
1595 (format p "\
1596#!~a
1597export PYTHONPATH=~a/LIB:~a
1598exec -a \"~a\" ~a \"$@\"\n"
1599 (which "bash") data (getenv "PYTHONPATH")
1600 (which "python3")
1601 (string-append lib "/main.py"))))
1602 (chmod roguebox-adventures #o555))
1603 #t)))))
1604 (native-inputs
1605 `(("unzip" ,unzip)))
1606 (inputs
1607 `(("python-pygame" ,python-pygame)
1608 ("python-tmx" ,python-tmx)))
1609 (home-page "https://rogueboxadventures.tuxfamily.org")
1610 (synopsis "A classical roguelike/sandbox game")
1611 (description
1612 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1613from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1614Adventures is to offer the player a kind of roguelike toy-world. This world
1615can be explored and changed freely.")
1697048f
KK
1616 ;; The GPL3+ is for code, the rest are for art.
1617 (license (list license:cc0
1618 license:cc-by3.0
1619 license:gpl3+
1620 license:silofl1.1))))
519bfc65 1621
a20b084a
JD
1622(define-public xshogi
1623 (package
1624 (name "xshogi")
1625 (version "1.4.2")
1626 (source
1627 (origin
1628 (method url-fetch)
1629 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1630 version ".tar.gz"))
1631 (sha256
1632 (base32
1633 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1634 (build-system gnu-build-system)
1635 (inputs
1636 `(("libxaw" ,libxaw)
1637 ("libxt" ,libxt)))
6fd52309 1638 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1639 (synopsis "User interface for gnushogi")
a20b084a
JD
1640 (description "A graphical user interface for the package @code{gnushogi}.")
1641 ;; Contains a copy of GPLv3 but the licence notices simply
1642 ;; state "GNU General Public Licence" without specifying a version.
1643 (license license:gpl1+)))
1644
649220ad 1645(define-public abbaye
3da5dca3 1646 (package
649220ad 1647 (name "abbaye")
efc12a81 1648 (version "2.0.1")
3da5dca3
DT
1649 (source
1650 (origin
feb50ac6
TGR
1651 (method git-fetch)
1652 (uri (git-reference
1653 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1654 (commit (string-append "v" version))))
1655 (file-name (git-file-name name version))
3da5dca3 1656 (sha256
feb50ac6 1657 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1658 (modules '((guix build utils)))
1659 (snippet
1660 ;; Unbundle fonts.
6cbee49d
MW
1661 '(begin
1662 (delete-file-recursively "fonts")
1663 #t))))
3da5dca3
DT
1664 (build-system gnu-build-system)
1665 (arguments
efc12a81 1666 '(#:make-flags '("CC=gcc")
aec05972
AK
1667 #:phases (modify-phases %standard-phases
1668 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1669 (lambda* (#:key inputs #:allow-other-keys)
1670 (setenv "CPATH"
1671 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1672 "/include/SDL:"
1673 (or (getenv "CPATH") "")))))
aec05972
AK
1674 (add-after 'patch-source-shebangs 'patch-makefile
1675 (lambda* (#:key outputs #:allow-other-keys)
1676 ;; Replace /usr with package output directory.
efc12a81
AFN
1677 (substitute* "Makefile"
1678 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1679 (add-before 'install 'make-install-dirs
1680 (lambda* (#:key outputs #:allow-other-keys)
1681 (let ((prefix (assoc-ref outputs "out")))
1682 ;; Create directories that the makefile assumes exist.
1683 (mkdir-p (string-append prefix "/bin"))
1684 (mkdir-p (string-append prefix "/share/applications"))
1685 (mkdir-p (string-append prefix "/share/pixmaps")))))
1686 ;; No configure script.
1687 (delete 'configure))
3da5dca3
DT
1688 #:tests? #f)) ;; No check target.
1689 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1690 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1691 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1692 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1693 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1694France. The Cathars, who preach about good Christian beliefs, were being
1695expelled by the Catholic Church out of the Languedoc region in France. One of
1696them, called Jean Raymond, found an old church in which to hide, not knowing
1697that beneath its ruins lay buried an ancient evil.")
efc12a81 1698 (license license:gpl3)))
a83c6a64 1699
b76c94e6
CAW
1700(define-public angband
1701 (package
1702 (name "angband")
e5e24819 1703 (version "4.2.0")
b76c94e6
CAW
1704 (source
1705 (origin
1706 (method url-fetch)
9a0d324a
EF
1707 (uri (string-append "http://rephial.org/downloads/"
1708 (version-major+minor version)
1709 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1710 (sha256
1711 (base32
e5e24819 1712 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1713 (modules '((guix build utils)))
1714 (snippet
1715 ;; So, some of the sounds/graphics/tilesets are under different
1716 ;; licenses... some of them even nonfree! This is a console-only
1717 ;; version of this package so we just remove them.
1718 ;; In the future, if someone tries to make a graphical variant of
1719 ;; this package, they can deal with that mess themselves. :)
1720 '(begin
6cbee49d
MW
1721 (for-each (lambda (subdir)
1722 (let ((lib-subdir (string-append "lib/" subdir)))
1723 (delete-file-recursively lib-subdir)))
1724 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1725 (substitute* "lib/Makefile"
e5e24819 1726 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1727 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1728 "gamedata customize help screens user"))
1729 #t))))
b76c94e6
CAW
1730 (build-system gnu-build-system)
1731 (arguments
aeb6d9a6 1732 `(#:tests? #f ; no check target
b76c94e6
CAW
1733 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1734 #:phases
1735 (modify-phases %standard-phases
9a0d324a 1736 (replace 'bootstrap
b76c94e6
CAW
1737 (lambda _
1738 (substitute* "acinclude.m4"
1739 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1740 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1741 (native-inputs
1742 `(("autoconf" ,autoconf)
1743 ("automake" ,automake)))
1744 (inputs `(("ncurses" ,ncurses)))
1745 (home-page "http://rephial.org/")
1746 (synopsis "Dungeon exploration roguelike")
1747 (description "Angband is a Classic dungeon exploration roguelike. Explore
1748the depths below Angband, seeking riches, fighting monsters, and preparing to
1749fight Morgoth, the Lord of Darkness.")
1750 (license license:gpl2)))
1751
a83c6a64
EB
1752(define-public pingus
1753 (package
1754 (name "pingus")
1755 (version "0.7.6")
1756 (source
1757 (origin
472c36bd
EF
1758 (method git-fetch)
1759 (uri (git-reference
4b889d3a 1760 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1761 (commit (string-append "v" version))))
1762 (file-name (git-file-name name version))
a83c6a64
EB
1763 (sha256
1764 (base32
472c36bd
EF
1765 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1766 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1767 "pingus-sdl-libs-config.patch"))
1768 (modules '((guix build utils)))
1769 (snippet
1770 '(begin
1771 (substitute* "src/pingus/screens/demo_session.cpp"
1772 (("#include <iostream>")
1773 ;; std::function moved to <functional> with C++ 11.
1774 ;; Remove this for versions newer than 0.7.6.
1775 "#include <iostream>\n#include <functional>"))
1776 #t))))
a83c6a64
EB
1777 (build-system gnu-build-system)
1778 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1779 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1780 (inputs `(("sdl" ,sdl)
1781 ("sdl-image" ,sdl-image)
1782 ("sdl-mixer" ,sdl-mixer)
1783 ("mesa" ,mesa)
00c09300 1784 ("glu" ,glu)
a83c6a64
EB
1785 ("libpng" ,libpng)
1786 ("boost" ,boost)))
1787 (arguments
3f3f8f49
AI
1788 '(#:make-flags (list (string-append "PREFIX=" %output))
1789 #:tests? #f ; no check target
a83c6a64 1790 #:phases
3f127147 1791 (modify-phases %standard-phases
3f3f8f49 1792 (delete 'configure)))) ; no configure script
5f578231 1793 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1794 (synopsis "Lemmings clone")
1795 (description
1796 "Pingus is a free Lemmings-like puzzle game in which the player takes
1797command of a bunch of small animals and has to guide them through levels.
1798Since the animals walk on their own, the player can only influence them by
1799giving them commands, like build a bridge, dig a hole, or redirect all animals
1800in the other direction. Multiple such commands are necessary to reach the
1801level's exit. The game is presented in a 2D side view.")
1802 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1803 (license license:gpl3+)))
dff62423
JD
1804
1805(define-public talkfilters
1806 (package
1807 (name "talkfilters")
1808 (version "2.3.8")
1809 (source
1810 (origin
1811 (method url-fetch)
189c0b33
TGR
1812 (uri (string-append "http://www.hyperrealm.com/talkfilters/"
1813 "talkfilters-" version ".tar.gz"))
dff62423
JD
1814 (sha256
1815 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1816 (build-system gnu-build-system)
6fd52309 1817 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1818 (synopsis "Convert English text to humorous dialects")
1819 (description "The GNU Talk Filters are programs that convert English text
1820into stereotyped or otherwise humorous dialects. The filters are provided as
1821a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1822 (license license:gpl2+)))
1823
3cf118a1
CS
1824(define-public cmatrix
1825 (package
1826 (name "cmatrix")
14736727 1827 (version "2.0")
3cf118a1
CS
1828 (source
1829 (origin
14736727
OP
1830 (method git-fetch)
1831 (uri (git-reference
1832 (url "https://github.com/abishekvashok/cmatrix.git")
1833 (commit (string-append "v" version))))
1834 (file-name (git-file-name name version))
3cf118a1
CS
1835 (sha256
1836 (base32
14736727 1837 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 1838 (build-system gnu-build-system)
14736727
OP
1839 (native-inputs
1840 `(("autoconf" ,autoconf)
1841 ("automake" ,automake)))
3cf118a1
CS
1842 (arguments
1843 '(#:phases
3f127147
TGR
1844 (modify-phases %standard-phases
1845 (replace 'configure
1846 (lambda* (#:key outputs #:allow-other-keys)
1847 ;; This old ‘configure’ script doesn't support
1848 ;; variables passed as arguments.
1849 (let ((out (assoc-ref outputs "out")))
1850 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1851 (invoke "./configure"
1852 (string-append "--prefix=" out))))))))
3cf118a1 1853 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1854 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1855 (synopsis "Simulate the display from \"The Matrix\"")
1856 (description "CMatrix simulates the display from \"The Matrix\" and is
1857based on the screensaver from the movie's website. It works with terminal
1858settings up to 132x300 and can scroll lines all at the same rate or
1859asynchronously and at a user-defined speed.")
024e2c17 1860 (license license:gpl2+)))
ae9cb418
JD
1861
1862(define-public chess
1863 (package
1864 (name "chess")
16fb1e79 1865 (version "6.2.5")
ae9cb418
JD
1866 (source
1867 (origin
1868 (method url-fetch)
1869 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1870 ".tar.gz"))
1871 (sha256
1872 (base32
16fb1e79 1873 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1874 (build-system gnu-build-system)
6fd52309 1875 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1876 (synopsis "Full chess implementation")
1877 (description "GNU Chess is a chess engine. It allows you to compete
1878against the computer in a game of chess, either through the default terminal
1879interface or via an external visual interface such as GNU XBoard.")
024e2c17 1880 (license license:gpl3+)))
ae9cb418 1881
a6b55314 1882(define freedink-engine
bb3b71ce
SB
1883 (package
1884 (name "freedink-engine")
2ee05bb9 1885 (version "109.6")
bb3b71ce
SB
1886 (source (origin
1887 (method url-fetch)
1888 (uri (string-append "mirror://gnu/freedink/freedink-" version
1889 ".tar.gz"))
1890 (sha256
1891 (base32
2ee05bb9 1892 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1893 (build-system gnu-build-system)
a9249f58
KK
1894 (arguments
1895 `(#:configure-flags '("--disable-embedded-resources")
1896 #:phases
1897 (modify-phases %standard-phases
1898 (add-after 'unpack 'disable-graphical-tests
1899 (lambda _
1900 ;; These tests require a graphical interface.
1901 (substitute* "src/Makefile.am"
1902 (("test_gfx_fonts TestIOGfxDisplay") ""))
1903 #t)))))
1904 (native-inputs `(("autoconf" ,autoconf)
1905 ("automake" ,automake)
1906 ("cxxtest" ,cxxtest)
1907 ("gettext" ,gettext-minimal)
1908 ("help2man" ,help2man)
bb3b71ce 1909 ("pkg-config" ,pkg-config)))
a9249f58
KK
1910 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1911 sdl2-ttf sdl2-gfx)))
bb3b71ce 1912 ("fontconfig" ,fontconfig)
a9249f58 1913 ("glm" ,glm)))
f9eab0be
EF
1914 (properties '((ftp-directory . "/freedink")
1915 (upstream-name . "freedink")))
6fd52309 1916 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1917 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1918 (description
1919 "GNU FreeDink is a free and portable re-implementation of the engine
1920for the role-playing game Dink Smallwood. It supports not only the original
1921game data files but it also supports user-produced game mods or \"D-Mods\".
1922To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1923 (license license:gpl3+)))
bb3b71ce 1924
a6b55314 1925(define freedink-data
bb3b71ce
SB
1926 (package
1927 (name "freedink-data")
32d92d2c 1928 (version "1.08.20190120")
bb3b71ce
SB
1929 (source (origin
1930 (method url-fetch)
1931 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1932 version ".tar.gz"))
bb3b71ce
SB
1933 (sha256
1934 (base32
32d92d2c 1935 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1936 (build-system gnu-build-system)
1937 (arguments
3f127147
TGR
1938 `(#:phases
1939 (modify-phases %standard-phases
1940 (delete 'configure) ; no configure script
1941 (delete 'check)) ; no tests
bb3b71ce 1942 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1943 (properties '((ftp-directory . "/freedink")))
6fd52309 1944 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1945 (synopsis "Game data for GNU Freedink")
1946 (description
1947 "This package contains the game data of GNU Freedink.")
024e2c17 1948 (license license:gpl3+)))
bb3b71ce 1949
2926e950
KK
1950(define-public freedink-dfarc
1951 (package
1952 (name "freedink-dfarc")
1953 (version "3.14")
1954 (source (origin
1955 (method url-fetch)
1956 (uri (string-append "mirror://gnu/freedink/dfarc-"
1957 version ".tar.gz"))
1958 (sha256
1959 (base32
1960 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1961 (build-system gnu-build-system)
1962 (native-inputs
1963 `(("intltool" ,intltool)))
1964 (inputs
1965 `(("bzip2" ,bzip2)
1966 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1967 (properties '((ftp-directory . "/freedink")
1968 (upstream-name . "dfarc")))
2926e950
KK
1969 (home-page "https://www.gnu.org/software/freedink/")
1970 (synopsis "Front-end for managing and playing Dink Modules")
1971 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1972and its numerous D-Mods.")
1973 (license license:gpl3+)))
bb3b71ce 1974
a6b55314
LC
1975(define-public freedink
1976 ;; This is a wrapper that tells the engine where to find the data.
1977 (package (inherit freedink-engine)
1978 (name "freedink")
1979 (build-system trivial-build-system)
1980 (arguments
1981 '(#:builder (begin
1982 (use-modules (guix build utils))
1983
1984 (let* ((output (assoc-ref %outputs "out"))
1985 (bin (string-append output "/bin"))
1986 (executable (string-append bin "/freedink")))
1987 (mkdir-p bin)
1988 (call-with-output-file executable
1989 (lambda (port)
1990 (format port "#!~a/bin/sh
1991exec ~a/bin/freedink -refdir ~a/share/dink\n"
1992 (assoc-ref %build-inputs "bash")
1993 (assoc-ref %build-inputs "engine")
1994 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1995 (chmod port #o777)))
1996 #t))
a6b55314
LC
1997 #:modules ((guix build utils))))
1998 (inputs `(("engine" ,freedink-engine)
1999 ("data" ,freedink-data)
2000 ("bash" ,bash)))
2001 (native-inputs '())))
2002
ae9cb418
JD
2003(define-public xboard
2004 (package
2005 (name "xboard")
9835458f 2006 (version "4.9.1")
ae9cb418
JD
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (string-append "mirror://gnu/xboard/xboard-" version
2011 ".tar.gz"))
2012 (sha256
2013 (base32
9835458f 2014 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 2015 (build-system gnu-build-system)
4e530049
SB
2016 (inputs
2017 `(("gtk+" ,gtk+-2)
2018 ("librsvg" ,librsvg)))
9835458f
EF
2019 (native-inputs
2020 `(("texinfo" ,texinfo)
2021 ("pkg-config" ,pkg-config)))
6fd52309 2022 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
2023 (synopsis "Graphical user interface for chess programs")
2024 (description "GNU XBoard is a graphical board for all varieties of chess,
2025including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
2026and Makruk. Several lesser-known variants are also supported. It presents a
2027fully interactive graphical interface and it can load and save games in the
2028Portable Game Notation.")
024e2c17 2029 (license license:gpl3+)))
11c38cbe 2030
a21b42e2
SB
2031(define-public gtypist
2032 (package
2033 (name "gtypist")
2034 (version "2.9.5")
2035 (source (origin
2036 (method url-fetch)
2037 (uri (string-append "mirror://gnu/gtypist/gtypist-"
2038 version ".tar.xz"))
2039 (sha256
2040 (base32
2041 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
2042 (modules '((guix build utils)))
2043 (snippet
2044 ;; We do not provide `ncurses.h' within an `ncursesw'
2045 ;; sub-directory, so patch the source accordingly. See
2046 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
2047 '(begin
2048 (for-each (lambda (file)
2049 (substitute* file
2050 (("ncursesw/ncurses.h")
2051 "ncurses.h")))
2052 (find-files "." "configure$|\\.c$"))
2053 #t))))
a21b42e2
SB
2054 (build-system gnu-build-system)
2055 (inputs `(("ncurses" ,ncurses)
2056 ("perl" ,perl)))
6fd52309 2057 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
2058 (synopsis "Typing tutor")
2059 (description
2060 "GNU Typist is a universal typing tutor. It can be used to learn and
2061practice touch-typing. Several tutorials are included; in addition to
2062tutorials for the standard QWERTY layout, there are also tutorials for the
2063alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
2064are primarily in English, however some in other languages are provided.")
024e2c17 2065 (license license:gpl3+)))
13d18626 2066
024e2c17
DT
2067(define-public irrlicht
2068 (package
2069 (name "irrlicht")
f90b2dbd 2070 (version "1.8.4")
024e2c17
DT
2071 (source (origin
2072 (method url-fetch)
2073 (uri (string-append
2074 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
2075 (version-major+minor version)
2076 "/" version "/irrlicht-" version ".zip"))
2077 (sha256
2078 (base32
7b8a7536
EF
2079 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
2080 (patches (search-patches "irrlicht-use-system-libs.patch"))
2081 (modules '((guix build utils)))
2082 (snippet
2083 '(begin
2084 (for-each delete-file-recursively
2085 '("bin" ; bundled compiled Windows binaries"
2086 "source/Irrlicht/MacOSX"
2087 "source/Irrlicht/bzip2"
2088 "source/Irrlicht/jpeglib"
2089 "source/Irrlicht/libpng"
2090 "source/Irrlicht/lzma"
2091 "source/Irrlicht/zlib"))
2092 (delete-file "source/Irrlicht/glext.h")
2093 (delete-file "source/Irrlicht/glxext.h")
2094 (delete-file "source/Irrlicht/wglext.h")
2095 #t))))
024e2c17
DT
2096 (build-system gnu-build-system)
2097 (arguments
3f127147
TGR
2098 `(#:phases
2099 (modify-phases %standard-phases
7b8a7536
EF
2100 (add-after 'unpack 'chdir-to-source
2101 (lambda _
2102 ;; The actual source is buried a few directories deep.
2103 (chdir "source/Irrlicht/")
2104 #t))
2105 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
2106 (lambda* (#:key outputs #:allow-other-keys)
2107 (let ((out (assoc-ref outputs "out")))
2108 (substitute* "Makefile"
2109 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
2110 (string-append "INSTALL_DIR = " out "/lib"))
2111 ;; Add '-fpermissive' to the CXXFLAGS
2112 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
2113 ;; The Makefile assumes these directories exist.
2114 (mkdir-p (string-append out "/lib"))
2115 (mkdir-p (string-append out "/include")))))
3f127147
TGR
2116 (delete 'configure)) ; no configure script
2117 #:tests? #f ; no check target
024e2c17 2118 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 2119 (inputs
7b8a7536
EF
2120 `(("bzip2" ,bzip2)
2121 ("libjpeg" ,libjpeg)
2122 ("libpng" ,libpng)
2123 ("libx11" ,libx11)
2124 ("libxxf86vm" ,libxxf86vm)
2125 ("mesa" ,mesa)))
024e2c17
DT
2126 (synopsis "3D game engine written in C++")
2127 (description
2128 "The Irrlicht Engine is a high performance realtime 3D engine written in
2129C++. Features include an OpenGL renderer, extensible materials, scene graph
2130management, character animation, particle and other special effects, support
2131for common mesh file formats, and collision detection.")
2132 (home-page "http://irrlicht.sourceforge.net/")
2133 (license license:zlib)))
7e51e5bc 2134
c23c50c7
RW
2135(define-public mars
2136 ;; The latest release on SourceForge relies on an unreleased version of SFML
2137 ;; with a different API, so we take the latest version from the official
2138 ;; repository on Github.
698bd297 2139 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
2140 (revision "1"))
2141 (package
2142 (name "mars")
698bd297 2143 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
2144 (source (origin
2145 (method git-fetch)
2146 (uri (git-reference
2147 (url "https://github.com/thelaui/M.A.R.S..git")
2148 (commit commit)))
00a82e83 2149 (file-name (git-file-name name version))
c23c50c7
RW
2150 (sha256
2151 (base32
2152 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
2153 (patches (search-patches "mars-sfml-2.3.patch"
2154 "mars-install.patch"))))
c23c50c7
RW
2155 (build-system cmake-build-system)
2156 (arguments
2157 `(#:tests? #f ; There are no tests
2158 #:phases
2159 (modify-phases %standard-phases
2160 (add-after 'unpack 'fix-install-path
2161 (lambda _
2162 (substitute* "src/CMakeLists.txt"
2163 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2164 "${CMAKE_INSTALL_PREFIX}/bin"))
2165 #t))
2166 (add-after 'unpack 'fix-data-path
2167 (lambda* (#:key outputs #:allow-other-keys)
2168 (substitute* "src/System/settings.cpp"
2169 (("C_dataPath = \"./data/\";")
2170 (string-append "C_dataPath = \""
2171 (assoc-ref outputs "out")
2172 "/share/games/marsshooter/\";")))
2173 #t)))))
2174 (inputs
2175 `(("mesa" ,mesa)
2176 ("fribidi" ,fribidi)
2177 ("taglib" ,taglib)
2178 ("sfml" ,sfml)))
75c33c88 2179 (home-page "http://mars-game.sourceforge.net/")
c23c50c7
RW
2180 (synopsis "2D space shooter")
2181 (description
2182 "M.A.R.S. is a 2D space shooter with pretty visual effects and
2183attractive physics. Players can battle each other or computer controlled
2184enemies in different game modes such as space ball, death match, team death
2185match, cannon keep, and grave-itation pit.")
2186 (license license:gpl3+))))
2187
7e51e5bc
DT
2188(define minetest-data
2189 (package
2190 (name "minetest-data")
86081d9d 2191 (version "5.1.1")
7e51e5bc 2192 (source (origin
7217d337
EF
2193 (method git-fetch)
2194 (uri (git-reference
2195 (url "https://github.com/minetest/minetest_game")
2196 (commit version)))
2197 (file-name (git-file-name name version))
7e51e5bc
DT
2198 (sha256
2199 (base32
2557d366 2200 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
7e51e5bc
DT
2201 (build-system trivial-build-system)
2202 (native-inputs
7217d337 2203 `(("source" ,source)))
7e51e5bc
DT
2204 (arguments
2205 `(#:modules ((guix build utils))
2206 #:builder (begin
2207 (use-modules (guix build utils))
7217d337 2208 (let ((install-dir (string-append
7e51e5bc 2209 %output
7217d337 2210 "/share/minetest/games/minetest_game")))
7e51e5bc 2211 (mkdir-p install-dir)
7217d337
EF
2212 (copy-recursively
2213 (assoc-ref %build-inputs "source")
2214 install-dir)
e3cfef22 2215 #t))))
7e51e5bc
DT
2216 (synopsis "Main game data for the Minetest game engine")
2217 (description
ab0c796b 2218 "Game data for the Minetest infinite-world block sandbox game.")
b7388a08 2219 (home-page "https://www.minetest.net/")
7e51e5bc 2220 (license license:lgpl2.1+)))
6e206ac7
DT
2221
2222(define-public minetest
2223 (package
2224 (name "minetest")
60e4f6e2 2225 (version "5.1.1")
6e206ac7 2226 (source (origin
e8d8b485
EF
2227 (method git-fetch)
2228 (uri (git-reference
1fbd7c7f
MB
2229 (url "https://github.com/minetest/minetest")
2230 (commit version)))
e8d8b485 2231 (file-name (git-file-name name version))
6e206ac7
DT
2232 (sha256
2233 (base32
60e4f6e2 2234 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
7fc90282
EF
2235 (modules '((guix build utils)))
2236 (snippet
1fbd7c7f 2237 '(begin
d9580a26
MB
2238 ;; Delete bundled libraries.
2239 (delete-file-recursively "lib")
2240 #t))))
6e206ac7
DT
2241 (build-system cmake-build-system)
2242 (arguments
10903356 2243 '(#:configure-flags
1fbd7c7f
MB
2244 (list "-DRUN_IN_PLACE=0"
2245 "-DENABLE_FREETYPE=1"
2246 "-DENABLE_GETTEXT=1"
2247 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2248 (string-append "-DIRRLICHT_INCLUDE_DIR="
2249 (assoc-ref %build-inputs "irrlicht")
2250 "/include/irrlicht")
2251 (string-append "-DCURL_INCLUDE_DIR="
2252 (assoc-ref %build-inputs "curl")
2253 "/include/curl"))
2254 #:tests? #f)) ;no check target
6e206ac7
DT
2255 (native-search-paths
2256 (list (search-path-specification
2257 (variable "MINETEST_SUBGAME_PATH")
af070955 2258 (files '("share/minetest/games")))))
6e206ac7
DT
2259 (native-inputs
2260 `(("pkg-config" ,pkg-config)))
2261 (inputs
7fc90282 2262 `(("curl" ,curl)
8c064d01 2263 ("freetype" ,freetype)
7fc90282
EF
2264 ("gettext" ,gettext-minimal)
2265 ("gmp" ,gmp)
2266 ("irrlicht" ,irrlicht)
2267 ("jsoncpp" ,jsoncpp)
c463dd47 2268 ("libjpeg" ,libjpeg)
7fc90282 2269 ("libpng" ,libpng)
6e206ac7
DT
2270 ("libogg" ,libogg)
2271 ("libvorbis" ,libvorbis)
7fc90282 2272 ("libxxf86vm" ,libxxf86vm)
6e206ac7 2273 ("luajit" ,luajit)
7fc90282 2274 ("mesa" ,mesa)
165dc8bd 2275 ("ncurses" ,ncurses)
7fc90282 2276 ("openal" ,openal)
6e206ac7
DT
2277 ("sqlite" ,sqlite)))
2278 (propagated-inputs
2279 `(("minetest-data" ,minetest-data)))
2280 (synopsis "Infinite-world block sandbox game")
2281 (description
2282 "Minetest is a sandbox construction game. Players can create and destroy
2283various types of blocks in a three-dimensional open world. This allows
2284forming structures in every possible creation, on multiplayer servers or as a
2285single player. Mods and texture packs allow players to personalize the game
2286in different ways.")
b7388a08 2287 (home-page "https://www.minetest.net/")
6e206ac7 2288 (license license:lgpl2.1+)))
77264d15
SB
2289
2290(define glkterm
2291 (package
2292 (name "glkterm")
2293 (version "1.0.4")
2294 (source
2295 (origin
2296 (method url-fetch)
2297 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2298 "glk/implementations/glkterm-104.tar.gz"))
2299 (sha256
2300 (base32
2301 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2302 (build-system gnu-build-system)
2303 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2304 (arguments
2305 '(#:tests? #f ; no check target
2306 #:phases
3f127147
TGR
2307 (modify-phases %standard-phases
2308 (replace 'install
2309 (lambda* (#:key outputs #:allow-other-keys)
2310 (let* ((out (assoc-ref outputs "out"))
2311 (inc (string-append out "/include"))
2312 (lib (string-append out "/lib")))
3f127147
TGR
2313 (for-each
2314 (lambda (file)
2315 (install-file file inc))
2316 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
2317 (install-file "libglkterm.a" lib))
2318 #t))
2319 (delete 'configure)))) ; no configure script
77264d15
SB
2320 (home-page "http://www.eblong.com/zarf/glk/")
2321 (synopsis "Curses Implementation of the Glk API")
2322 (description
2323 "Glk defines a portable API for applications with text UIs. It was
2324primarily designed for interactive fiction, but it should be suitable for many
2325interactive text utilities, particularly those based on a command line.
2326This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 2327using the @code{curses.h} library for screen control.")
77264d15
SB
2328 (license (license:fsf-free "file://README"))))
2329
2330(define-public glulxe
2331 (package
2332 (name "glulxe")
b2e3d59c 2333 (version "0.5.4")
77264d15
SB
2334 (source
2335 (origin
2336 (method url-fetch)
2337 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 2338 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2339 (sha256
2340 (base32
b2e3d59c 2341 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2342 (build-system gnu-build-system)
2343 (inputs `(("glk" ,glkterm)))
2344 (arguments
3f127147 2345 '(#:tests? #f ; no check target
77264d15
SB
2346 #:make-flags
2347 (let* ((glk (assoc-ref %build-inputs "glk")))
2348 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2349 (string-append "GLKLIBDIR=" glk "/lib")
2350 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2351 #:phases
3f127147
TGR
2352 (modify-phases %standard-phases
2353 (replace 'install
2354 (lambda* (#:key outputs #:allow-other-keys)
2355 (let* ((out (assoc-ref outputs "out"))
2356 (bin (string-append out "/bin")))
3f127147
TGR
2357 (install-file "glulxe" bin))
2358 #t))
2359 (delete 'configure)))) ; no configure script
bac03797 2360 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
2361 (synopsis "Interpreter for Glulx VM")
2362 (description
2363 "Glulx is a 32-bit portable virtual machine intended for writing and
2364playing interactive fiction. It was designed by Andrew Plotkin to relieve
2365some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2366reference interpreter, using the Glk API.")
b2e3d59c 2367 (license license:expat)))
72b703cd 2368
ce94fcfd
CB
2369(define-public fifechan
2370 (package
2371 (name "fifechan")
2372 (version "0.1.5")
2373 (source (origin
2374 (method url-fetch)
2375 (uri (string-append "https://codeload.github.com/fifengine/"
2376 "fifechan/tar.gz/" version))
2377 (file-name (string-append name "-" version ".tar.gz"))
2378 (sha256
2379 (base32
2380 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2381 (build-system cmake-build-system)
2382 (inputs
2383 `(("sdl2" ,sdl2)
2384 ("sdl2-image" ,sdl2-image)
2385 ("mesa" ,mesa)))
2386 (arguments
2387 '(#:tests? #f)) ; No included tests
2388 (home-page "https://fifengine.github.io/fifechan/")
2389 (synopsis "Cross platform GUI library specifically for games")
2390 (description
2391 "Fifechan is a lightweight cross platform GUI library written in C++
2392specifically designed for games. It has a built in set of extendable GUI
2393Widgets, and allows users to create more.")
2394 (license license:lgpl2.1+)))
2395
2372a5f9
CB
2396(define-public fifengine
2397 (package
2398 (name "fifengine")
2399 (version "0.4.2")
2400 (source (origin
2401 (method url-fetch)
2402 (uri (string-append "https://codeload.github.com/fifengine/"
2403 "fifengine/tar.gz/" version))
2404 (file-name (string-append name "-" version ".tar.gz"))
2405 (sha256
2406 (base32
2407 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2408 (build-system cmake-build-system)
2409 (arguments
2410 `(#:tests? #f ; TODO The test running fails to run some tests.
2411 #:modules ((srfi srfi-1)
2412 (guix build cmake-build-system)
2413 (guix build utils))
2414 #:configure-flags
2415 (list
2416 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2417 (assoc-ref %build-inputs "openal")
2418 "/include/AL")
2419 (string-append "-DPYTHON_SITE_PACKAGES="
2420 (assoc-ref %outputs "out")
2421 "/lib/python3.7/site-packages"))
2422 #:phases
2423 (modify-phases %standard-phases
2424 (add-after 'unpack 'patch-run_tests.py
2425 (lambda _
2426 ;; Patch the test runner to exit with a status of 1 if any test
2427 ;; fails, to allow detecting failures.
2428 (substitute* "run_tests.py"
2429 (("ERROR\\. One or more tests failed!'\\)")
2430 "ERROR. One or more tests failed!')
2431\t\texit(1)"))
2432 #t))
2433 ;; Run tests after installation so that we can make use of the built
2434 ;; python modules.
2435 (delete 'check)
2436 (add-after 'install 'check
2437 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2438 (define python-version
2439 (let* ((version (last (string-split
2440 (assoc-ref inputs "python")
2441 #\-)))
2442 (components (string-split version #\.))
2443 (major+minor (take components 2)))
2444 (string-join major+minor ".")))
2445
2446 (when tests?
2447 ;; Set PYTHONPATH so that python finds the installed modules.
2448 (setenv "PYTHONPATH"
2449 (string-append (getenv "PYTHONPATH") ":"
2450 (assoc-ref outputs "out")
2451 "/lib/python"
2452 python-version
2453 "/site-packages"))
2454 ;; The tests require an X server.
2455 (system "Xvfb :1 &")
2456 (setenv "DISPLAY" ":1")
2457 (setenv "XDG_RUNTIME_DIR" "/tmp")
2458 ;; Run tests
2459 (chdir ,(string-append "../" name "-" version))
2460 (invoke "python3" "run_tests.py" "-a"))
2461 #t)))))
2462 (inputs
2463 `(("sdl2" ,sdl2)
2464 ("sdl2-image" ,sdl2-image)
2465 ("sdl2-ttf" ,sdl2-ttf)
2466 ("tinyxml" ,tinyxml)
2467 ("openal" ,openal)
2468 ("libogg" ,libogg)
2469 ("glew" ,glew)
2470 ("libvorbis" ,libvorbis)
2471 ("boost" ,boost)
2472 ("fifechan" ,fifechan)
2473 ("swig" ,swig)
2474 ("python" ,python)))
2475 (native-inputs
2476 `(("python" ,python)
2477 ("swig" ,swig)
2478 ("xvfb" ,xorg-server)))
2479 (propagated-inputs
2480 `(("python-future" ,python-future)))
2481 (home-page "https://www.fifengine.net/")
2482 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2483 (description
2484 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2485isometric game engine. Python bindings are included allowing users to create
2486games using Python as well as C++.")
2487 (license license:lgpl2.1+)))
2488
35481e8b
SB
2489(define-public fizmo
2490 (package
2491 (name "fizmo")
50e1d36c 2492 (version "0.8.5")
35481e8b
SB
2493 (source (origin
2494 (method url-fetch)
6ad191ba 2495 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2496 "fizmo-" version ".tar.gz"))
35481e8b
SB
2497 (sha256
2498 (base32
50e1d36c 2499 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2500 (build-system gnu-build-system)
2501 (arguments
2502 '(#:configure-flags
2503 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2504 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2505 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2506 (native-inputs
2507 `(("pkg-config" ,pkg-config)))
2508 (inputs
32199e9a
KK
2509 `(("freetype" ,freetype)
2510 ("libjpeg" ,libjpeg)
35481e8b
SB
2511 ("libpng" ,libpng)
2512 ("libsndfile" ,libsndfile)
2513 ("libxml2" ,libxml2)
2514 ("ncurses" ,ncurses)
32199e9a 2515 ("sdl2" ,sdl2)))
6ad191ba 2516 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2517 (synopsis "Z-machine interpreter")
2518 (description
2519 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2520interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2521either by Infocom or created using the Inform compiler.")
2522 (license license:bsd-3)))
2523
fc936b65
DH
2524(define-public gnugo
2525 (package
2526 (name "gnugo")
2527 (version "3.8")
2528 (source (origin
2529 (method url-fetch)
2530 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2531 ".tar.gz"))
2532 (sha256
2533 (base32
2534 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2535 (build-system gnu-build-system)
2536 (inputs `(("readline" ,readline)))
4cc78cb3 2537 (synopsis "Play the game of Go")
7c125ce0
AK
2538 (description
2539 "GNU Go is a program that plays the game of Go, in which players
2540place stones on a grid to form territory or capture other stones. While
2541it can be played directly from the terminal, rendered in ASCII characters,
2542it is also possible to play GNU Go with 3rd party graphical interfaces or
2543even in Emacs. It supports the standard game storage format (SGF, Smart
2544Game Format) and inter-process communication format (GMP, Go Modem
2545Protocol).")
6fd52309 2546 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2547 (license license:gpl3+)))
67fa7a27
CAW
2548
2549(define-public extremetuxracer
2550 (package
2551 (name "extremetuxracer")
c2d468a1 2552 (version "0.8.0")
67fa7a27
CAW
2553 (source (origin
2554 (method url-fetch)
2555 (uri (string-append
966a543b 2556 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2557 version "/etr-" version ".tar.xz"))
2558 (sha256
2559 (base32
c2d468a1 2560 "05ysaxvsgps9fxc421kdifsxmc1sn6n79cjaa0k0i3fs9qqrja2b"))))
67fa7a27
CAW
2561 (build-system gnu-build-system)
2562 (native-inputs
2563 `(("pkg-config" ,pkg-config)))
2564 (inputs
b8a35cce
RW
2565 `(("glu" ,glu)
2566 ("sfml" ,sfml)))
5bc0ac96
TGR
2567 (synopsis "High-speed arctic racing game based on Tux Racer")
2568 ;; Snarfed straight from Debian.
67fa7a27
CAW
2569 (description "Extreme Tux Racer, or etracer as it is called for short, is
2570a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2571game is to slide down a snow- and ice-covered mountain as quickly as possible,
2572avoiding the trees and rocks that will slow you down.
2573
2574Collect herrings and other goodies while sliding down the hill, but avoid fish
2575bones.
2576
2577This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2578 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2579 (license license:gpl2+)))
7a4d0509 2580
1a0633e7
RW
2581(define-public supertuxkart
2582 (package
2583 (name "supertuxkart")
3747ecb1 2584 (version "1.1")
1a0633e7
RW
2585 (source
2586 (origin
2587 (method url-fetch)
2588 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2589 version "/supertuxkart-" version "-src.tar.xz"))
2590 (sha256
2591 (base32
3747ecb1 2592 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
2593 (modules '((guix build utils)))
2594 (snippet
2595 ;; Delete bundled library sources
2596 '(begin
56a48582
PL
2597 ;; Supertuxkart uses modified versions of the Irrlicht engine
2598 ;; and the bullet library. The developers gave an explanation
2599 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 2600 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
2601 (for-each delete-file-recursively
2602 '("lib/zlib"
2603 "lib/libpng"
2604 "lib/jpeglib"
2605 "lib/glew"
56a48582
PL
2606 "lib/wiiuse"
2607 "lib/enet"))
1a0633e7
RW
2608 #t))))
2609 (build-system cmake-build-system)
2610 (arguments
2611 `(#:tests? #f ; no check target
2612 #:configure-flags
2613 (list "-DUSE_WIIUSE=0"
56a48582 2614 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2615 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2616 "-DUSE_SYSTEM_GLEW=TRUE"
2617 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
2618 ;; In order to use the system ENet library, IPv6 support (added in
2619 ;; SuperTuxKart version 1.1) must be disabled.
2620 "-DUSE_IPV6=FALSE"
17c3f776
RH
2621 ;; FIXME: needs libopenglrecorder
2622 "-DBUILD_RECORDER=0"
1a0633e7 2623 ;; Irrlicht returns an integer instead of a boolean
56a48582 2624 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2625 (inputs
2626 `(("glew" ,glew)
2627 ("zlib" ,zlib)
2628 ("openal" ,openal)
2629 ("libvorbis" ,libvorbis)
2630 ("freetype" ,freetype)
2631 ("fribidi" ,fribidi)
3747ecb1 2632 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
2633 ("mesa" ,mesa)
2634 ("libx11" ,libx11)
2635 ("libxrandr" ,libxrandr)
2636 ("curl" ,curl)
2637 ;; The following input is needed to build the bundled and modified
2638 ;; version of irrlicht.
60af1822 2639 ("libjpeg" ,libjpeg)
56a48582
PL
2640 ("openssl" ,openssl)
2641 ("enet" ,enet)))
1a0633e7
RW
2642 (native-inputs
2643 `(("pkg-config" ,pkg-config)))
3747ecb1 2644 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
2645 (synopsis "3D kart racing game")
2646 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2647having fun over realism. You can play with up to 4 friends on one PC, racing
2648against each other or just trying to beat the computer; single-player mode is
2649also available.")
2650 (license license:gpl3+)))
2651
a1c1943b
CB
2652(define-public unknown-horizons
2653 (package
2654 (name "unknown-horizons")
2655 (version "2019.1")
2656 (source (origin
2657 (method url-fetch)
2658 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2659 "unknown-horizons/tar.gz/" version))
2660 (file-name (string-append name "-" version ".tar.gz"))
2661 (sha256
2662 (base32
2663 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2664 (build-system python-build-system)
2665 (arguments
2666 '(#:phases
2667 (modify-phases %standard-phases
2668 (add-before 'build 'set-HOME
2669 (lambda _
2670 (setenv "HOME" "/tmp")))
2671 (add-after 'build 'build-extra
2672 (lambda _
2673 (invoke "python3" "./setup.py" "build_i18n")
2674 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2675 #t))
2676 (add-after 'install 'patch
2677 (lambda* (#:key outputs #:allow-other-keys)
2678 (let ((out (assoc-ref outputs "out")))
2679 (substitute* (string-append out "/bin/unknown-horizons")
2680 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2681 (string-append "os.chdir(\""
2682 (assoc-ref outputs "out")
2683 "/share/unknown-horizons\")"))))
2684 #t))
2685 ;; TODO: Run GUI tests as well
2686 (replace 'check
2687 (lambda _
2688 (substitute* "horizons/constants.py"
2689 (("IS_DEV_VERSION = False")
2690 "IS_DEV_VERSION = True"))
2691 (invoke "pytest" "tests")
2692 (substitute* "horizons/constants.py"
2693 (("IS_DEV_VERSION = True")
2694 "IS_DEV_VERSION = False"))
2695 #t)))))
2696 (inputs
2697 `(("fifengine" ,fifengine)
2698 ("python:tk" ,python "tk")
2699 ("python-pillow" ,python-pillow)
2700 ("python-pyyaml" ,python-pyyaml)))
2701 (native-inputs
2702 `(("intltool" ,intltool)
2703
2704 ;; Required for tests
2705 ("python-greenlet" ,python-greenlet)
2706 ("python-polib" ,python-polib)
2707 ("python-pytest" ,python-pytest)
2708 ("python-pytest-mock" ,python-pytest-mock)))
2709 (home-page "http://unknown-horizons.org/")
2710 (synopsis "Isometric realtime strategy, economy and city building simulation")
2711 (description
2712 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2713on economy and city building. Expand your small settlement to a strong and
2714wealthy colony, collect taxes and supply your inhabitants with valuable
2715goods. Increase your power with a well balanced economy and with strategic
2716trade and diplomacy.")
2717 (license (list
2718 license:gpl2+ ; Covers code
2719 license:expat ; tests/dummy.py, ext/polib.py
2720 license:cc-by-sa3.0 ; Covers some media content
2721 license:cc-by3.0 ; Covers some media content
2722 license:bsd-3)))) ; horizons/ext/speaklater.py
2723
7a4d0509
SB
2724(define-public gnujump
2725 (package
2726 (name "gnujump")
2727 (version "1.0.8")
2728 (source (origin
2729 (method url-fetch)
2730 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2731 version ".tar.gz"))
2732 (sha256
2733 (base32
2734 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2735 (build-system gnu-build-system)
2736 (arguments
2737 '(#:phases
2738 (modify-phases %standard-phases
2739 (add-before
2740 'configure 'link-libm
18a613fb
EF
2741 (lambda _ (setenv "LIBS" "-lm")))
2742 (add-after 'install 'create-desktop-entry
2743 (lambda* (#:key outputs #:allow-other-keys)
2744 (let* ((out (assoc-ref outputs "out"))
2745 (apps (string-append out "/share/applications")))
2746 (mkdir-p apps)
2747 (with-output-to-file
2748 (string-append apps "/gnujump.desktop")
2749 (lambda _
2750 (format #t
2751 "[Desktop Entry]~@
2752 Name=GNUjump~@
2753 Comment=Jump up the tower to survive~@
2754 Exec=~a/bin/gnujump~@
2755 Terminal=false~@
2756 Type=Application~@
2757 Categories=Game;ArcadeGame~%"
2758 out)))))))))
7a4d0509
SB
2759 (inputs
2760 `(("glu" ,glu)
b3546174 2761 ("mesa" ,mesa)
7a4d0509
SB
2762 ("sdl" ,sdl)
2763 ("sdl-image" ,sdl-image)
2764 ("sdl-mixer" ,sdl-mixer)))
2765 (home-page "http://gnujump.es.gnu.org/")
2766 (synopsis
2767 "Game of jumping to the next floor, trying not to fall")
2768 (description
2769 "GNUjump is a simple, yet addictive game in which you must jump from
2770platform to platform to avoid falling, while the platforms drop at faster rates
2771the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2772falling, themeable graphics and sounds, and replays.")
2773 (license license:gpl3+)))
159093a7 2774
649220ad 2775(define-public wesnoth
159093a7 2776 (package
649220ad 2777 (name "wesnoth")
b6f1c6bb 2778 (version "1.14.11")
159093a7
SB
2779 (source (origin
2780 (method url-fetch)
de67e922 2781 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2782 (version-major+minor version)
2783 "/wesnoth-" version "/"
2784 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2785 (sha256
2786 (base32
b6f1c6bb 2787 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
159093a7
SB
2788 (build-system cmake-build-system)
2789 (arguments
03f0b5e2
MB
2790 `(#:tests? #f ;no check target
2791 #:phases (modify-phases %standard-phases
2792 (add-before 'configure 'treat-boost-as-system-header
2793 (lambda* (#:key inputs #:allow-other-keys)
2794 (let ((boost (assoc-ref inputs "boost")))
2795 ;; Ensure Boost is treated as "system headers" to
2796 ;; pacify compiler warnings induced by Boost headers.
2797 (for-each (lambda (variable)
2798 (setenv variable
2799 (string-append boost "/include:"
2800 (or (getenv variable)
2801 ""))))
2802 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2803 #t))))))
159093a7 2804 (native-inputs
b94a6ca0 2805 `(("gettext" ,gettext-minimal)
159093a7
SB
2806 ("pkg-config" ,pkg-config)))
2807 (inputs
2808 `(("boost" ,boost)
2809 ("dbus" ,dbus)
2810 ("fribidi" ,fribidi)
2811 ("libvorbis" ,libvorbis)
e554d43d 2812 ("openssl" ,openssl)
159093a7 2813 ("pango" ,pango)
e554d43d
AI
2814 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2815 (home-page "https://www.wesnoth.org/")
159093a7
SB
2816 (synopsis "Turn-based strategy game")
2817 (description
2818 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2819with several single player campaigns, and multiplayer games (both networked and
2820local).
2821
2822Battle for control on a range of maps, using variety of units which have
2823advantages and disadvantages against different types of attacks. Units gain
2824experience and advance levels, and are carried over from one scenario to the
2825next campaign.")
2826 (license license:gpl2+)))
c449a076 2827
649220ad 2828(define-public wesnoth-server
75abd864 2829 (package
649220ad
NG
2830 (inherit wesnoth)
2831 (name "wesnoth-server")
75abd864
AI
2832 (inputs
2833 `(("boost" ,boost)
e554d43d
AI
2834 ("icu4c" ,icu4c)
2835 ("openssl" ,openssl)
2836 ("sdl2" ,sdl2)))
75abd864 2837 (arguments
e554d43d
AI
2838 `(#:configure-flags '("-DENABLE_GAME=OFF")
2839 ,@(package-arguments wesnoth)))
75abd864
AI
2840 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2841 (description "This package contains a dedicated server for @emph{The
2842Battle for Wesnoth}.")))
2843
c449a076
EB
2844(define-public gamine
2845 (package
2846 (name "gamine")
87683add 2847 (version "1.6")
c449a076
EB
2848 (source (origin
2849 (method url-fetch)
2850 (uri (string-append "mirror://sourceforge/gamine-game/"
2851 "gamine-" version ".tar.gz"))
2852 (sha256
2853 (base32
87683add 2854 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2855 (build-system gnu-build-system)
2856 (native-inputs
2857 `(("pkg-config" ,pkg-config)
2858 ("intltool" ,intltool)))
2859 (inputs
2860 `(("gstreamer" ,gstreamer)
87683add
TGR
2861 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2862 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2863 ("gtk+" ,gtk+)))
2864 (arguments
2865 `(#:tests? #f
2866 #:make-flags
2867 (let ((out (assoc-ref %outputs "out")))
2868 (list (string-append "PREFIX=" out)
2869 (string-append "SYSCONFDIR=" out "/etc")))
2870 #:phases
2871 (modify-phases %standard-phases
2872 (delete 'configure)
2873 (add-after
2874 'install 'wrap-gamine
2875 (lambda* (#:key outputs #:allow-other-keys)
2876 (let ((out (assoc-ref outputs "out"))
2877 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2878 (wrap-program (string-append out "/bin/gamine")
2879 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2880 #t)))))
2881 (home-page "http://gamine-game.sourceforge.net/")
2882 (synopsis "Mouse and keyboard discovery for children")
2883 (description
2884 "Gamine is a game designed for young children who are learning to use the
2885mouse and keyboard. The child uses the mouse to draw colored dots and lines
2886on the screen and keyboard to display letters.")
2887 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2888 (license license:gpl3)))
2889
2e2ed3cb
AK
2890(define-public manaplus
2891 (package
2892 (name "manaplus")
2b744c21 2893 (version "1.9.3.23")
2e2ed3cb
AK
2894 (source (origin
2895 (method url-fetch)
2896 (uri (string-append
074dd909 2897 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2898 version "/manaplus-" version ".tar.xz"))
2899 (sha256
2900 (base32
2b744c21 2901 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2902 (build-system gnu-build-system)
2903 (arguments
2904 '(#:configure-flags
2905 (list (string-append "CPPFLAGS=-I"
2906 (assoc-ref %build-inputs "sdl-union")
2907 "/include/SDL"))))
2908 (native-inputs
2909 `(("pkg-config" ,pkg-config)))
2910 (inputs
2911 `(("glu" ,glu)
2912 ("curl" ,curl)
2913 ("libxml2" ,libxml2)
2914 ("mesa" ,mesa)
2e2ed3cb 2915 ("sdl-union" ,(sdl-union))))
074dd909 2916 (home-page "https://manaplus.org")
2e2ed3cb
AK
2917 (synopsis "Client for 'The Mana World' and similar games")
2918 (description
2919 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2920fully supported client for @uref{http://www.themanaworld.org, The mana
2921world}, @uref{http://evolonline.org, Evol Online} and
2922@uref{http://landoffire.org, Land of fire}.")
2923 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2924 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2925 ;; The rest is under GPL2+.
2926 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2927
e9687748
AS
2928(define openttd-engine
2929 (package
2930 (name "openttd-engine")
532dba49 2931 (version "1.9.3")
e9687748
AS
2932 (source
2933 (origin (method url-fetch)
532dba49 2934 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2935 version "/openttd-" version "-source.tar.xz"))
2936 (sha256
2937 (base32
532dba49 2938 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2939 (modules '((guix build utils)))
2940 (snippet
2941 ;; The DOS port contains proprietary software.
6cbee49d
MW
2942 '(begin
2943 (delete-file-recursively "os/dos")
2944 #t))))
e9687748
AS
2945 (build-system gnu-build-system)
2946 (arguments
2947 `(#:tests? #f ; no "check" target
2948 #:phases
2949 (modify-phases %standard-phases
2950 ;; The build process fails if the configure script is passed the
2951 ;; option "--enable-fast-install".
2952 (replace 'configure
857b2f53
AI
2953 (lambda* (#:key inputs outputs (configure-flags '())
2954 #:allow-other-keys)
e9687748
AS
2955 (let ((out (assoc-ref outputs "out"))
2956 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2957 (apply invoke "./configure"
2958 (string-append "--prefix=" out)
2959 ;; Provide the "lzo" path.
2960 (string-append "--with-liblzo2="
2961 lzo "/lib/liblzo2.a")
2962 ;; Put the binary in 'bin' instead of 'games'.
2963 "--binary-dir=bin"
2964 configure-flags)))))))
e9687748
AS
2965 (native-inputs `(("pkg-config" ,pkg-config)))
2966 (inputs
3a48d055 2967 `(("allegro" ,allegro)
e9687748
AS
2968 ("fontconfig" ,fontconfig)
2969 ("freetype" ,freetype)
2970 ("icu4c" ,icu4c)
2971 ("libpng" ,libpng)
2972 ("lzo" ,lzo)
2973 ("sdl" ,sdl)
2974 ("xz" ,xz)
2975 ("zlib" ,zlib)))
4cb0b5bf 2976 (synopsis "Transportation economics simulator game")
e9687748
AS
2977 (description "OpenTTD is a game in which you transport goods and
2978passengers by land, water and air. It is a re-implementation of Transport
2979Tycoon Deluxe with many enhancements including multiplayer mode,
2980internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2981autoreplace and autoupdate vehicles. This package only includes the game
2982engine. When you start it you will be prompted to download a graphics set.")
532dba49 2983 (home-page "https://www.openttd.org/")
e9687748
AS
2984 ;; This package is GPLv2, except for a few files located in
2985 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2986 ;; licenses. In addition, this software contains an in-game downloader
2987 ;; from which the user may find non-functional data licensed under
2988 ;; different terms.
2989 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2990
4df9495e
KK
2991(define openttd-opengfx
2992 (package
2993 (name "openttd-opengfx")
894fbb33 2994 (version "0.5.5")
4df9495e
KK
2995 (source
2996 (origin
2997 (method url-fetch)
2998 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2999 version "/opengfx-" version "-source.tar.xz"))
3000 (sha256
3001 (base32
894fbb33 3002 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
3003 (build-system gnu-build-system)
3004 (arguments
3005 '(#:make-flags (list "CC=gcc"
3006 (string-append "INSTALL_DIR="
3007 (assoc-ref %outputs "out")
857b2f53 3008 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
3009 #:phases
3010 (modify-phases %standard-phases
3011 (replace 'configure
3012 (lambda _
3013 ;; Make sure HOME is writable for GIMP.
3014 (setenv "HOME" (getcwd))
3015
3016 ;; Redirect stdout, not stderr, to /dev/null. This prevents
3017 ;; dos2unix from receiving its version information as a flag.
3018 (substitute* "Makefile"
3019 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
3020 "$(UNIX2DOS) -q --version 1>/dev/null")))))
3021 ;; The check phase for this package only checks the md5sums of the built
3022 ;; GRF files against the md5sums of the release versions. Because we use
3023 ;; different software versions than upstream does, some of the md5sums
3024 ;; are different. However, the package is still reproducible, it's safe
3025 ;; to disable this test.
c0959cc9
AI
3026 #:tests? #f
3027 #:parallel-build? #f))
4df9495e
KK
3028 (native-inputs `(("dos2unix" ,dos2unix)
3029 ("gimp" ,gimp)
3030 ("grfcodec" ,grfcodec)
3031 ("nml" ,nml)
3032 ("python" ,python-2)))
3033 (home-page "http://dev.openttdcoop.org/projects/opengfx")
3034 (synopsis "Base graphics set for OpenTTD")
3035 (description
3036 "The OpenGFX projects is an implementation of the OpenTTD base grahics
3037set that aims to ensure the best possible out-of-the-box experience.
3038
3039OpenGFX provides you with...
3040@enumerate
3041@item All graphics you need to enjoy OpenTTD.
3042@item Uniquely drawn rail vehicles for every climate.
3043@item Completely snow-aware rivers.
3044@item Different river and sea water.
3045@item Snow-aware buoys.
3046@end enumerate")
3047 (license license:gpl2)))
3048
c17b0790
AI
3049(define openttd-opensfx
3050 (package
3051 (name "openttd-opensfx")
3052 (version "0.2.3")
3053 (source
3054 (origin
3055 (method url-fetch)
3056 (uri (string-append
3057 "https://binaries.openttd.org/extra/opensfx/"
3058 version "/opensfx-" version "-source.tar.gz"))
3059 (sha256
3060 (base32
3061 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
3062 (build-system gnu-build-system)
3063 (native-inputs
3064 `(("catcodec" ,catcodec)
61506fe5 3065 ("python" ,python-2)))
c17b0790
AI
3066 (arguments
3067 `(#:make-flags
3068 (list (string-append "INSTALL_DIR=" %output
3069 "/share/games/openttd/baseset/opensfx"))
3070 #:phases
3071 (modify-phases %standard-phases
3072 (add-after 'unpack 'make-reproducible
3073 (lambda _
3074 ;; Remove the time dependency of the installed tarball by setting
3075 ;; the modification times if its members to 0.
3076 (substitute* "scripts/Makefile.def"
3077 (("-cf") " --mtime=@0 -cf"))
3078 #t))
3079 (delete 'configure))))
3080 (home-page "http://dev.openttdcoop.org/projects/opensfx")
3081 (synopsis "Base sounds for OpenTTD")
3082 (description "OpenSFX is a set of free base sounds for OpenTTD which make
3083it possible to play OpenTTD without requiring the proprietary sound files from
3084the original Transport Tycoon Deluxe.")
3085 (license license:cc-sampling-plus-1.0)))
3086
823e1218
AI
3087(define openttd-openmsx
3088 (package
3089 (name "openttd-openmsx")
3090 (version "0.3.1")
3091 (source
3092 (origin
3093 (method url-fetch)
3094 (uri (string-append
3095 "https://binaries.openttd.org/extra/openmsx/"
3096 version "/openmsx-" version "-source.tar.gz"))
3097 (sha256
3098 (base32
3099 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
3100 (build-system gnu-build-system)
3101 (native-inputs
61506fe5 3102 `(("python" ,python-2)))
823e1218
AI
3103 (arguments
3104 `(#:make-flags
3105 (list (string-append "INSTALL_DIR=" %output
3106 "/share/games/openttd/baseset"))
3107 #:phases
3108 (modify-phases %standard-phases
3109 (delete 'configure)
3110 (add-after 'install 'post-install
3111 ;; Rename openmsx-version to openmsx
3112 (lambda* (#:key outputs #:allow-other-keys)
3113 (let ((install-directory (string-append (assoc-ref outputs "out")
3114 "/share/games/openttd/baseset")))
3115 (rename-file (string-append install-directory "/openmsx-" ,version)
3116 (string-append install-directory "/openmsx"))
3117 #t))))))
3118 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3119 (synopsis "Music set for OpenTTD")
3120 (description "OpenMSX is a music set for OpenTTD which makes it possible
3121to play OpenTTD without requiring the proprietary music from the original
3122Transport Tycoon Deluxe.")
3123 (license license:gpl2)))
3124
e9687748
AS
3125(define-public openttd
3126 (package
3127 (inherit openttd-engine)
ca508f1c
KK
3128 (name "openttd")
3129 (arguments
857b2f53
AI
3130 `(#:configure-flags
3131 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3132 "/bin/timidity"))
3133 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3134 ((#:phases phases)
3135 `(modify-phases ,phases
3136 (add-after 'install 'install-data
3137 (lambda* (#:key inputs outputs #:allow-other-keys)
3138 (for-each
3139 (lambda (input)
3140 (copy-recursively (assoc-ref inputs input)
3141 (assoc-ref outputs "out")))
3142 (list "opengfx" "openmsx" "opensfx"))
3143 #t)))))))
3144 (inputs
3145 `(("timidity++" ,timidity++)
3146 ,@(package-inputs openttd-engine)))
ca508f1c
KK
3147 (native-inputs
3148 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
3149 ("openmsx" ,openttd-openmsx)
3150 ("opensfx" ,openttd-opensfx)
ca508f1c 3151 ,@(package-native-inputs openttd-engine)))))
e9687748 3152
0c6ade0b
RH
3153(define openrct2-title-sequences
3154 (package
3155 (name "openrct2-title-sequences")
3156 (version "0.1.2")
3157 (source
3158 (origin
3159 (method url-fetch)
3160 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3161 version "/title-sequence-v" version ".zip"))
3162 (file-name (string-append name "-" version ".zip"))
3163 (sha256
3164 (base32
3165 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3166 (build-system trivial-build-system)
3167 (native-inputs
3168 `(("bash" ,bash)
3169 ("coreutils" ,coreutils)
3170 ("unzip" ,unzip)))
3171 (arguments
3172 `(#:modules ((guix build utils))
3173 #:builder
3174 (begin
3175 (use-modules (guix build utils))
3176 (let* ((out (assoc-ref %outputs "out"))
3177 (openrct2-title-sequences (string-append out
3178 "/share/openrct2/title-sequences"))
3179 (source (assoc-ref %build-inputs "source"))
3180 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3181 (copy-file source (string-append ,name "-" ,version ".zip"))
3182 (invoke unzip (string-append ,name "-" ,version ".zip"))
3183 (delete-file (string-append ,name "-" ,version ".zip"))
3184 (mkdir-p openrct2-title-sequences)
3185 (copy-recursively "."
3186 openrct2-title-sequences)
3187 #t))))
3188 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3189 (synopsis "Title sequences for OpenRCT2")
3190 (description
3191 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3192 (license license:gpl3+)))
3193
3194(define openrct2-objects
3195 (package
3196 (name "openrct2-objects")
924e6993 3197 (version "1.0.9")
0c6ade0b
RH
3198 (source
3199 (origin
3200 (method url-fetch)
3201 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3202 version "/objects.zip"))
3203 (file-name (string-append name "-" version ".zip"))
3204 (sha256
924e6993 3205 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
3206 (build-system trivial-build-system)
3207 (native-inputs
3208 `(("bash" ,bash)
3209 ("coreutils" ,coreutils)
3210 ("unzip" ,unzip)))
3211 (arguments
3212 `(#:modules ((guix build utils))
3213 #:builder
3214 (begin
3215 (use-modules (guix build utils))
3216 (let* ((out (assoc-ref %outputs "out"))
3217 (openrct2-objects (string-append out
3218 "/share/openrct2/objects"))
3219 (source (assoc-ref %build-inputs "source"))
3220 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3221 (copy-file source (string-append ,name "-" ,version ".zip"))
3222 (invoke unzip (string-append ,name "-" ,version ".zip"))
3223 (delete-file (string-append ,name "-" ,version ".zip"))
3224 (mkdir-p openrct2-objects)
3225 (copy-recursively "."
3226 openrct2-objects)
3227 #t))))
3228 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3229 (synopsis "Objects for OpenRCT2")
3230 (description
3231 "openrct2-objects is a set of objects for OpenRCT2.")
3232 (license license:gpl3+)))
3233
7aafb3b3
RH
3234(define-public openrct2
3235 (package
3236 (name "openrct2")
b6909d47 3237 (version "0.2.4")
7aafb3b3
RH
3238 (source
3239 (origin
2e5a0690
TGR
3240 (method git-fetch)
3241 (uri (git-reference
3242 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3243 (commit (string-append "v" version))))
3244 (file-name (git-file-name name version))
7aafb3b3 3245 (sha256
b6909d47 3246 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
3247 (build-system cmake-build-system)
3248 (arguments
940c2c5c
RH
3249 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3250 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 3251 #:tests? #f ; tests require network access
7aafb3b3 3252 #:phases
6457509c
TGR
3253 (modify-phases %standard-phases
3254 (add-after 'unpack 'fix-usr-share-paths&add-data
3255 (lambda* (#:key inputs outputs #:allow-other-keys)
3256 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3257 (objects (assoc-ref inputs "openrct2-objects")))
3258 ;; Fix some references to /usr/share.
3259 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3260 (("/usr/share")
3261 (string-append (assoc-ref %outputs "out") "/share")))
3262 (copy-recursively
3263 (string-append titles "/share/openrct2/title-sequences")
3264 "data/title")
3265 (copy-recursively
3266 (string-append objects "/share/openrct2/objects")
3267 "data/object"))))
8c14f7f8 3268 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
3269 (lambda _
3270 ;; Don't treat warnings as errors.
3271 (substitute* "CMakeLists.txt"
8c14f7f8
MB
3272 (("-Werror") ""))
3273 #t)))))
c695fb76
TGR
3274 (inputs `(("curl" ,curl)
3275 ("fontconfig" ,fontconfig)
3276 ("freetype" ,freetype)
0c6ade0b 3277 ("icu4c" ,icu4c)
c695fb76
TGR
3278 ("jansson" ,jansson)
3279 ("libpng" ,libpng)
3280 ("libzip" ,libzip)
3281 ("mesa" ,mesa)
0c6ade0b
RH
3282 ("openrct2-objects" ,openrct2-objects)
3283 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
3284 ("openssl" ,openssl)
3285 ("sdl2" ,sdl2)
3286 ("speexdsp" ,speexdsp)
3287 ("zlib" ,zlib)))
7aafb3b3 3288 (native-inputs
63d4ef52 3289 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
3290 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3291 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3292 (description "OpenRCT2 is a free software re-implementation of
3293RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3294maintaining an amusement park containing attractions, shops and facilities.
3295
3296Note that this package does @emph{not} provide the game assets (sounds,
3297images, etc.)")
3298 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3299 ;; regarding assets.
3300 (license license:gpl3+)))
3301
e3f755f4
EB
3302(define-public pinball
3303 (package
3304 (name "pinball")
3305 (version "0.3.1")
3306 (source
3307 (origin (method url-fetch)
3308 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3309 "pinball-" version "/"
3310 "pinball-" version ".tar.gz"))
3311 (sha256
3312 (base32
3313 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3314 (patches (search-patches "pinball-const-fix.patch"
3315 "pinball-cstddef.patch"
3316 "pinball-missing-separators.patch"
3317 "pinball-src-deps.patch"
3318 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3319 (build-system gnu-build-system)
3320 (inputs
3321 `(("glu" ,glu)
3322 ("mesa" ,mesa)
3323 ("sdl" ,sdl)
3324 ("sdl-image" ,sdl-image)
3325 ("sdl-mixer" ,sdl-mixer)))
3326 (arguments
3327 '(#:configure-flags
3328 (list (string-append "CPPFLAGS=-I"
3329 (assoc-ref %build-inputs "sdl-image")
3330 "/include/SDL -I"
3331 (assoc-ref %build-inputs "sdl-mixer")
3332 "/include/SDL"))))
3333 (home-page "http://pinball.sourceforge.net")
3334 (synopsis "Pinball simulator")
3335 (description "The Emilia Pinball Project is a pinball simulator. There
3336are only two levels to play with, but they are very addictive.")
3337 (license license:gpl2)))
7e2e1155
RF
3338
3339(define-public pioneers
3340 (package
3341 (name "pioneers")
59e8a57d 3342 (version "15.5")
7e2e1155
RF
3343 (source (origin
3344 (method url-fetch)
3345 (uri (string-append "http://downloads.sourceforge.net/pio/"
3346 "pioneers-" version ".tar.gz"))
3347 (sha256
3348 (base32
59e8a57d 3349 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3350 (build-system gnu-build-system)
59e8a57d
TGR
3351 (inputs `(("avahi" ,avahi)
3352 ("gtk+" ,gtk+)
3353 ("librsvg" ,librsvg)))
7e2e1155 3354 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3355 ("itstool" ,itstool)
3356 ("libxml2" ,libxml2)
7e2e1155
RF
3357 ("pkg-config" ,pkg-config)))
3358 (synopsis "Board game inspired by The Settlers of Catan")
3359 (description "Pioneers is an emulation of the board game The Settlers of
3360Catan. It can be played on a local network, on the internet, and with AI
3361players.")
3362 (home-page "http://pio.sourceforge.net/")
8763fdf8 3363 (license license:gpl2+)))
fea1f275 3364
d7c4619b
AE
3365(define-public einstein
3366 (package
3367 (name "einstein")
3368 (version "2.0")
3369 (source (origin
3370 (method url-fetch)
d4cf5b01 3371 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3372 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3373 (sha256
3374 (base32
3375 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3376 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3377 (build-system gnu-build-system)
3378 (inputs
3379 `(("freetype" ,freetype)
3380 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3381 ("zlib" ,zlib)))
3382 (native-inputs
3383 `(("font-dejavu" ,font-dejavu)))
3384 (arguments
3385 `(#:tests? #f ; no check target
3386 #:phases
3387 (modify-phases %standard-phases
3388 (replace 'configure
3389 (lambda* (#:key outputs inputs #:allow-other-keys)
3390 (let ((out (assoc-ref outputs "out"))
3391 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3392 "/share/fonts/truetype/DejaVuSans.ttf")))
3393 (substitute* "Makefile"
3394 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3395 ;; The patch above registers a free font for use by the binary,
3396 ;; but the font is copied during the compile phase into a
3397 ;; resources file, so we need to make the ttf file available.
3398 (symlink dejavu "res/DejaVuSans.ttf")
3399 #t))))))
3400 (synopsis "Logic puzzle game")
3401 (description "The goal of this logic game is to open all cards in a 6x6
3402grid, using a number of hints as to their relative position. The game idea
3403is attributed to Albert Einstein.")
3404 ;; The original home page has disappeared.
3405 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3406 "http://games.flowix.com/en/index.html"))
3407 ;; License according to
3408 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3409 ;; The source code is a DFSG-sanitized tarball and does not contain any
3410 ;; license information.
3411 (license license:gpl3+)))
3412
d381962f 3413(define-public powwow
3414 (package
3415 (name "powwow")
90d37add 3416 (version "1.2.19")
d381962f 3417 (source (origin
3418 (method url-fetch)
3419 (uri (string-append
cc30a472 3420 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3421 version ".tar.gz"))
d381962f 3422 (sha256
3423 (base32
90d37add 3424 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3425 (inputs
3426 `(("ncurses" ,ncurses)))
3427 (build-system gnu-build-system)
36aff81a 3428 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3429 (synopsis "MUD and telnet client")
3430 (description
3431 "POWWOW is a client software which can be used for telnet as well as for
3432@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3433the chat server psyced with the specific config located at
3434http://lavachat.symlynx.com/unix/")
3435 (license license:gpl2+)))
158f5734 3436
5ef819cc 3437(define-public red-eclipse
7fa9a685
KK
3438 (let ((release "2.0.0")
3439 (revision 0))
158f5734 3440 (package
5b8a8543 3441 (name "red-eclipse")
42abb842
AFN
3442 (version (if (zero? revision)
3443 release
3444 (string-append release "-"
3445 (number->string revision))))
bb7c071b
TGR
3446 (source
3447 (origin
3448 (method git-fetch)
3449 (uri (git-reference
7fa9a685
KK
3450 (url "https://github.com/redeclipse/base.git")
3451 (commit (string-append "v" release))
3452 (recursive? #t))) ; for game data
bb7c071b
TGR
3453 (file-name (git-file-name name version))
3454 (sha256
dc4469e9
KK
3455 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3456 (modules '((guix build utils)))
3457 (snippet
3458 ;; Remove proprietary libraries and other pre-compiled binaries.
3459 '(begin
3460 (delete-file-recursively "bin")
3461 #t))))
158f5734
KY
3462 (build-system gnu-build-system)
3463 (arguments
3464 `(#:tests? #f ; no check target
3465 #:make-flags (list "CC=gcc" "-Csrc"
3466 (string-append "INSTDIR="
42abb842
AFN
3467 (assoc-ref %outputs "out") "/bin")
3468 (string-append "prefix="
3469 (assoc-ref %outputs "out")))
158f5734
KY
3470 #:phases
3471 (modify-phases %standard-phases
7fa9a685 3472 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
3473 (lambda* (#:key outputs #:allow-other-keys)
3474 (substitute* "src/engine/server.cpp"
7fa9a685
KK
3475 (("data = \"data\"")
3476 (string-append "data = \""
42abb842 3477 (assoc-ref outputs "out")
7fa9a685 3478 "/share/redeclipse/data\"")))
42abb842 3479 #t))
158f5734
KY
3480 (delete 'configure) ; no configure script
3481 (add-after 'set-paths 'set-sdl-paths
3482 (lambda* (#:key inputs #:allow-other-keys)
3483 (setenv "CPATH"
3484 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3485 "/include/SDL2:"
3486 (or (getenv "CPATH") "")))
158f5734
KY
3487 #t))
3488 (add-after 'install 'copy-data
3489 (lambda* (#:key outputs #:allow-other-keys)
3490 (let ((out (assoc-ref outputs "out")))
3491 (copy-recursively "config"
3492 (string-append out "/config"))
66c65aaf
KK
3493 (copy-file "doc/examples/servinit.cfg"
3494 (string-append out "/config/servinit.cfg"))
158f5734 3495 (copy-recursively "data"
42abb842
AFN
3496 (string-append out "/share/redeclipse/data"))
3497 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3498 (symlink (string-append out "/share/redeclipse/data")
3499 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3500 #t))
3501 (add-after 'copy-data 'wrap-program
3502 (lambda* (#:key inputs outputs #:allow-other-keys)
3503 (let* ((out (assoc-ref outputs "out"))
3504 (bin (string-append out "/bin")))
3505 (with-directory-excursion bin
3506 (rename-file "redeclipse_linux"
3507 ".redeclipse_linux-real")
3508 (rename-file "redeclipse_server_linux"
3509 ".redeclipse_server_linux-real")
3510 (call-with-output-file "redeclipse_linux"
3511 (lambda (port)
3512 (format port "#!~a/bin/sh
3513# Run the thing from its home, otherwise it just bails out.
3514cd \"~a\"
3515exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3516 (assoc-ref inputs "bash") ;implicit input
3517 (string-append out)
3518 (string-append bin))))
3519 (call-with-output-file "redeclipse_server_linux"
3520 (lambda (port)
3521 (format port "#!~a/bin/sh
3522# Run the thing from its home, otherwise it just bails out.
3523cd \"~a\"
3524exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3525 (assoc-ref inputs "bash") ;implicit input
3526 (string-append out)
3527 (string-append bin))))
3528 (chmod "redeclipse_linux" #o555)
3529 (chmod "redeclipse_server_linux" #o555)))
3530 #t)))))
631b20f9
TGR
3531 (native-inputs
3532 `(("pkg-config" ,pkg-config)))
158f5734
KY
3533 (inputs
3534 `(("curl" ,curl)
7fa9a685 3535 ("freetype" ,freetype)
158f5734 3536 ("glu" ,glu)
14b865dc
KK
3537 ("sdl-union" ,(sdl-union (list sdl2
3538 sdl2-image
7fa9a685 3539 sdl2-mixer)))))
dc4469e9 3540 (home-page "https://redeclipse.net/")
158f5734
KY
3541 (synopsis "Arena shooter derived from the Cube 2 engine")
3542 (description
3543 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3544Offering an innovative parkour system and distinct but all potent weapons,
3545Red Eclipse provides fast paced and accessible gameplay.")
3546 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 3547 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
3548 (license (list license:expat
3549 license:zlib
dc4469e9 3550 license:cc-by-sa4.0
158f5734
KY
3551 license:cc-by-sa3.0
3552 license:cc-by3.0
dc4469e9
KK
3553 license:cc0
3554 license:public-domain
3555 license:silofl1.1)))))
bcd2982f 3556
0fb9a15b
LC
3557(define-public grue-hunter
3558 (package
3559 (name "grue-hunter")
3560 (version "1.0")
3561 (source (origin
3562 (method url-fetch)
c41b2ffb 3563 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3564 (sha256
3565 (base32
3566 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3567 (build-system trivial-build-system) ; no Makefile.PL
3568 (arguments `(#:modules ((guix build utils))
3569 #:builder
3570 (begin
3571 (use-modules (guix build utils))
3572 (use-modules (srfi srfi-1))
3573
3574 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3575 (perl (string-append (assoc-ref %build-inputs
3576 "perl")
3577 "/bin"))
5edf2f05 3578 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3579 "gzip")
5edf2f05 3580 "/bin/gzip"))
0fb9a15b
LC
3581 (tar (string-append (assoc-ref %build-inputs
3582 "tar")
3583 "/bin/tar"))
3584 (out (assoc-ref %outputs "out"))
3585 (bin (string-append out "/bin"))
6d57723a
TGR
3586 (doc (string-append out
3587 "/share/doc/grue-hunter")))
e3cfef22
MW
3588 (copy-file tarball "grue-hunter.tar.gz")
3589 (invoke gzip "-d" "grue-hunter.tar.gz")
3590 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3591
e3cfef22
MW
3592 (mkdir-p bin)
3593 (copy-file "grue-hunter/gh.pl"
3594 (string-append bin "/grue-hunter"))
3595 (patch-shebang (string-append bin "/grue-hunter")
3596 (list perl))
3597
3598 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3599
e3cfef22 3600 #t))))
0fb9a15b
LC
3601 (inputs `(("perl" ,perl)
3602 ("tar" ,tar)
3603 ("gzip" ,gzip)
3604 ("tarball" ,source)))
6c82576e 3605 (home-page "https://jxself.org/grue-hunter.shtml")
0fb9a15b
LC
3606 (synopsis "Text adventure game")
3607 (description
3608 "Grue Hunter is a text adventure game written in Perl. You must make
3609your way through an underground cave system in search of the Grue. Can you
3610capture it and get out alive?")
3611 (license license:agpl3+)))
f317aeb4 3612
ffed9eab
MB
3613(define-public lierolibre
3614 (package
3615 (name "lierolibre")
3616 (version "0.5")
3617 (source (origin
3618 (method url-fetch)
3619 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3620 version "/+download/lierolibre-"
3621 version ".tar.xz"))
3622 (sha256
3623 (base32
3624 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3625 (patches
3626 (search-patches "lierolibre-check-unaligned-access.patch"
3627 "lierolibre-try-building-other-arch.patch"
3628 "lierolibre-remove-arch-warning.patch"
3629 "lierolibre-newer-libconfig.patch"
3630 "lierolibre-is-free-software.patch"))
3631 (modules '((guix build utils)))
3632 (snippet
3633 '(begin
3634 ;; Delete pre-compiled files.
3635 (delete-file "data/LIERO.CHR")
3636 (delete-file "data/LIERO.SND")
3637 #t))))
3638 (build-system gnu-build-system)
3639 (native-inputs
3640 `(("imagemagick" ,imagemagick)
3641 ("pkg-config" ,pkg-config)
3642 ("util-linux" ,util-linux)
3643 ("sox" ,sox)))
3644 (inputs
3645 `(("boost" ,boost)
3646 ("libconfig" ,libconfig)
3647 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3648 ("zlib" ,zlib)))
3649 (home-page "https://gitlab.com/lierolibre/lierolibre")
3650 (synopsis "Old-school earthworm action game")
3651 (description
3652 "lierolibre is an earthworm action game where you fight another player
3653(or the computer) underground using a wide array of weapons.
3654
3655Features:
3656@itemize
3657@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3658and Game of Tag, plus AI-players without true intelligence!
3659@item Dat nostalgia.
3660@item Extensions via a hidden F1 menu:
3661@itemize
3662@item Replays
3663@item Game controller support
3664@item Powerlevel palettes
3665@end itemize
3666@item Ability to write game variables to plain text files.
3667@item Ability to load game variables from both EXE and plain text files.
3668@item Scripts to extract and repack graphics, sounds and levels.
3669@end itemize
3670
3671To switch between different window sizes, use F6, F7 and F8, to switch to
3672fullscreen, use F5 or Alt+Enter.")
3673 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3674 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3675
f317aeb4
KK
3676(define-public warzone2100
3677 (package
3678 (name "warzone2100")
f475b90c 3679 (version "3.2.3")
d8f4aefe
TGR
3680 (source
3681 (origin
3682 (method url-fetch)
3683 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3684 "unsupported/Warzone2100-"
3685 (version-major+minor version) "/" version
3686 "/warzone2100-" version ".tar.xz"))
3687 (sha256
3688 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3689 (build-system gnu-build-system)
3690 (arguments
f475b90c
KK
3691 `(#:configure-flags '("--with-distributor=Guix")
3692 #:phases
c5d17d50
RW
3693 (modify-phases %standard-phases
3694 (add-after 'unpack 'link-tests-with-qt
3695 (lambda _
3696 (substitute* "tests/Makefile.in"
3697 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3698 (string-append prefix "$(QT5_LIBS) ")))
3699 #t))
f475b90c 3700 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3701 (lambda _
f475b90c
KK
3702 (substitute* "tests/ivis_linktest.cpp"
3703 (("iV_DrawTextRotated.*;")
3704 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3705 "100, 100, 0.0f, font_regular);")))
c5d17d50 3706 #t)))))
f475b90c
KK
3707 (native-inputs `(("gettext" ,gettext-minimal)
3708 ("pkg-config" ,pkg-config)
f317aeb4
KK
3709 ("unzip" ,unzip)
3710 ("zip" ,zip)))
3711 (inputs `(("fontconfig" ,fontconfig)
3712 ("freetype" ,freetype)
3713 ("fribidi" ,fribidi)
3714 ("glew" ,glew)
f475b90c 3715 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3716 ("libtheora" ,libtheora)
3717 ("libvorbis" ,libvorbis)
3718 ("libxrandr" ,libxrandr)
3719 ("openal" ,openal)
3720 ("physfs" ,physfs)
77c729ba
RW
3721 ("qtbase" ,qtbase)
3722 ("qtscript" ,qtscript)
c5d17d50 3723 ("openssl" ,openssl)
c5d17d50 3724 ("sdl2" ,sdl2)))
d3eae3f1 3725 (home-page "https://wz2100.net")
f317aeb4
KK
3726 (synopsis "3D Real-time strategy and real-time tactics game")
3727 (description
3728 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3729modes. An extensive tech tree with over 400 different technologies, combined
3730with the unit design system, allows for a wide variety of possible units and
3731tactics.")
3732 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3733 (license (list license:bsd-3
3734 license:cc0
3735 license:cc-by-sa3.0
3736 license:expat
3737 license:gpl2+
3738 license:lgpl2.1+))))
4b670539 3739
649220ad 3740(define-public starfighter
4b670539 3741 (package
649220ad 3742 (name "starfighter")
8172ab2d 3743 (version "2.0.0.3")
4b670539 3744 (source (origin
8172ab2d
KK
3745 (method url-fetch)
3746 (uri (string-append
3747 "https://github.com/pr-starfighter/starfighter/releases"
3748 "/download/v" version "/starfighter-"
3749 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3750 (sha256
3751 (base32
8172ab2d 3752 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3753 (build-system gnu-build-system)
4b670539 3754 (native-inputs
8172ab2d 3755 `(("pkg-config" ,pkg-config)))
4b670539 3756 (inputs
1fe84f5d
KK
3757 `(("pango" ,pango)
3758 ("sdl2" ,sdl2)
4b670539 3759 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3760 ("sdl2-mixer" ,sdl2-mixer)
3761 ("sdl2-ttf" ,sdl2-ttf)))
3762 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3763 (synopsis "2D scrolling shooter game")
3764 (description
3765 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3766dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3767their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3768way, you will encounter new foes, make new allies, and assist local rebels
3769in strikes against the evil corporation.")
3770 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3771 (license (list license:gpl3+
3772 license:cc-by3.0
3773 license:cc-by-sa3.0
3774 license:cc0
3775 license:public-domain))))
35e2e495
KK
3776
3777(define-public chromium-bsu
3778 (package
3779 (name "chromium-bsu")
08722837 3780 (version "0.9.16.1")
35e2e495
KK
3781 (source (origin
3782 (method url-fetch)
e464bd60 3783 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3784 "/Chromium B.S.U. source code/"
e464bd60 3785 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3786 (sha256
3787 (base32
08722837 3788 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3789 (build-system gnu-build-system)
35e2e495 3790 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3791 (inputs `(("gettext" ,gettext-minimal)
08722837 3792 ("glu" ,glu)
35e2e495
KK
3793 ("quesoglc" ,quesoglc)
3794 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3795 (home-page "http://chromium-bsu.sourceforge.net/")
3796 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3797 (description
3798 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3799are responsible for delivering supplies to the troops on the front line. Your
3800ship has a small fleet of robotic fighters which you control from the relative
3801safety of the Chromium vessel.")
3802 ;; Clarified Artistic License for everything but sound, which is covered
3803 ;; by the Expat License.
3804 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3805
3806(define-public tuxpaint
3807 (package
3808 (name "tuxpaint")
c6aa2ee2 3809 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3810 (source
3811 (origin
3812 (method url-fetch)
3813 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3814 version "/tuxpaint-" version ".tar.gz"))
3815 (sha256
3816 (base32
c6aa2ee2 3817 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3818 (modules '((guix build utils)))
3819 (snippet
3820 '(begin
3821 ;; Remove win32 directory which contains binary dll's and the
3822 ;; deprecated visualc directory.
3823 (for-each delete-file-recursively '("win32" "visualc"))
3824 (substitute* "Makefile"
3825 ;; Do not rely on $(GPERF) being an absolute file name
3826 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3827 "$(GPERF) --version >/dev/null 2>&1"))
3828 #t))
9b1ada4e
EB
3829 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3830 (build-system gnu-build-system)
3831 (native-inputs
3832 `(("gperf" ,gperf)
3833 ("pkg-config" ,pkg-config)))
3834 (inputs
3835 `(("cairo" ,cairo)
3836 ("fribidi" ,fribidi)
b94a6ca0 3837 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3838 ("libpng" ,libpng)
3839 ("librsvg" ,librsvg)
3840 ("libpaper" ,libpaper)
3841 ("netpbm" ,netpbm)
3842 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3843 ;; TODO: Use system fonts rather than those in data/fonts
3844 (arguments
c6aa2ee2 3845 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3846 "GPERF=gperf" "CC=gcc"
3847 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3848 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3849 "KDE_PREFIX=$(PREFIX)/share/applications"
3850 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3851 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3852 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3853 #:tests? #f ;No tests
3854 #:phases (modify-phases %standard-phases
3855 (delete 'configure) ;no configure phase
f88c0ab8
EB
3856 (add-before 'install 'no-sys-cache
3857 (lambda _ ;do not rebuild system conf cache
3858 (substitute* "Makefile"
3859 (("kbuildsycoca4") ""))
3860 #t))
9b1ada4e
EB
3861 (add-after 'install 'fix-import
3862 (lambda* (#:key inputs outputs #:allow-other-keys)
3863 (let* ((out (assoc-ref outputs "out"))
3864 (net (assoc-ref inputs "netpbm"))
3865 (tpi (string-append out "/bin/tuxpaint-import")))
3866 (substitute* tpi
3867 ;; Point to installation prefix so that the default
3868 ;; configure file is found.
3869 (("/usr/local") out))
3870 ;; tuxpaint-import uses a bunch of programs from
3871 ;; netpbm, so make sure it knows where those are
3872 (wrap-program tpi
3873 `("PATH" ":" prefix
3874 (,(string-append net "/bin"))))))))))
3875 (native-search-paths
3876 (list (search-path-specification
3877 (variable "TUXPAINT_STAMPS_PATH")
3878 (files '("share/tuxpaint/stamps")))))
3879 (home-page "http://www.tuxpaint.org")
3880 (synopsis "Drawing software for children")
3881 (description
3882 "Tux Paint is a free drawing program designed for young children (kids
3883ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3884and an encouraging cartoon mascot who helps guide children as they use the
3885program. It provides a blank canvas and a variety of drawing tools to help
3886your child be creative.")
3887 (license license:gpl2+)))
c3d850f2
EB
3888
3889(define-public tuxpaint-stamps
3890 (package
3891 (name "tuxpaint-stamps")
6ade82c2 3892 (version "2018.09.01")
c3d850f2
EB
3893 (source
3894 (origin
3895 (method url-fetch)
3896 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3897 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3898 "/tuxpaint-stamps-" version ".tar.gz"))
3899 (sha256
3900 (base32
6ade82c2 3901 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3902 (build-system trivial-build-system)
3903 (native-inputs
3904 `(("tar" ,tar)
3905 ("gzip" ,gzip)))
3906 (arguments
3907 `(#:modules ((guix build utils))
3908 #:builder (begin
3909 (use-modules (guix build utils))
3910 (setenv "PATH"
3911 (string-append
3912 (assoc-ref %build-inputs "tar") "/bin" ":"
3913 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3914 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3915 (chdir (string-append ,name "-" ,version))
3916 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3917 (mkdir-p dir)
e3cfef22
MW
3918 (copy-recursively "stamps" dir))
3919 #t)))
c3d850f2
EB
3920 (home-page (package-home-page tuxpaint))
3921 (synopsis "Stamp images for Tux Paint")
3922 (description
3923 "This package contains a set of \"Rubber Stamp\" images which can be used
3924with the \"Stamp\" tool within Tux Paint.")
3925 (license license:gpl2+)))
d2563973
EB
3926
3927(define-public tuxpaint-config
3928 (package
3929 (name "tuxpaint-config")
7b05e957 3930 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3931 (source
3932 (origin
3933 (method url-fetch)
3934 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3935 version "/tuxpaint-config-" version ".tar.gz"))
3936 (sha256
3937 (base32
7b05e957 3938 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3939 (build-system gnu-build-system)
3940 (native-inputs
b94a6ca0 3941 `(("gettext" ,gettext-minimal)))
d2563973
EB
3942 (inputs
3943 `(("fltk" ,fltk)
3944 ("libpaper" ,libpaper)
3945 ;; TODO: Should the following be propagated by fltk?
3946 ("libx11" ,libx11)
3947 ("libxft" ,libxft)
3948 ("mesa" ,mesa)))
3949 (arguments
7b05e957 3950 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3951 "CONFDIR=/etc/tuxpaint" ;don't write to store
3952 ,(string-append "PREFIX=" %output)
3953 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3954 #:parallel-build? #f ;race conditions
d2563973
EB
3955 #:tests? #f ;no tests
3956 #:phases (modify-phases %standard-phases
3957 (delete 'configure) ;no configure phase
3958 (add-before 'install 'gzip-no-name
3959 (lambda* _
3960 (substitute* "Makefile"
3961 ;; tuxpaint-config compresses its own documentation;
3962 ;; make sure it uses flags for reproducibility.
3963 (("gzip") "gzip --no-name"))))
3964 (add-before 'install 'make-install-dirs
3965 (lambda* (#:key outputs #:allow-other-keys)
3966 (let ((out (assoc-ref outputs "out")))
3967 (mkdir-p (string-append out "/bin"))
3968 #t))))))
3969 (home-page (package-home-page tuxpaint))
3970 (synopsis "Configure Tux Paint")
3971 (description
3972 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3973 (license license:gpl2))) ;no "or later" present
826a3ca2 3974
3975(define-public supertux
3976 (package
3977 (name "supertux")
54a80259 3978 (version "0.6.1")
826a3ca2 3979 (source (origin
3980 (method url-fetch)
d910d584
RW
3981 (uri (string-append "https://github.com/SuperTux/supertux/"
3982 "releases/download/v" version "/SuperTux-v"
3983 version "-Source.tar.gz"))
8698d986 3984 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3985 (sha256
3986 (base32
54a80259 3987 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
8698d986 3988 (patches
57d87f43 3989 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3990 (arguments
3991 '(#:tests? #f
3992 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3993 "-DUSE_SYSTEM_PHYSFS=ON")
3994 #:phases
3995 (modify-phases %standard-phases
3996 (add-after 'unpack 'patch-squirrel-path
3997 (lambda* (#:key inputs #:allow-other-keys)
3998 (let ((squirrel (assoc-ref inputs "squirrel")))
3999 (substitute* "CMakeLists.txt"
4000 (("set\\(SQUIRREL_PREFIX.*")
4001 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
4002 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
4003 (("\\$\\{SQUIRREL_PREFIX\\}/include")
4004 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
4005 #t)))))
826a3ca2 4006 (build-system cmake-build-system)
4007 (inputs `(("sdl2" ,sdl2)
4008 ("sdl2-image" ,sdl2-image)
4009 ("sdl2-mixer" ,sdl2-mixer)
4010 ("openal" ,openal)
4011 ("mesa" ,mesa)
4012 ("glew" ,glew)
4013 ("libvorbis" ,libvorbis)
4014 ("libogg" ,libogg)
4015 ("physfs" ,physfs)
4016 ("curl" ,curl)
8698d986
KK
4017 ("boost" ,boost)
4018 ("freetype" ,freetype)
4019 ("squirrel" ,squirrel)))
8b03b1a1
NG
4020 (native-inputs
4021 `(("pkg-config" ,pkg-config)))
826a3ca2 4022 (synopsis "2D platformer game")
8b03b1a1
NG
4023 (description "SuperTux is a classic 2D jump'n run sidescroller game in
4024a style similar to the original Super Mario games.")
cac6c3ba 4025 (home-page "https://supertux.org/")
826a3ca2 4026 (license license:gpl3+)))
b3de5ff2 4027
751c7040 4028(define-public tintin++
4029 (package
4030 (name "tintin++")
2c674796 4031 (version "2.02.02")
fffe4870
TGR
4032 (source
4033 (origin
4034 (method url-fetch)
4035 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 4036 (string-drop-right version 1)
fffe4870
TGR
4037 "/tintin-" version ".tar.gz"))
4038 (sha256
2c674796 4039 (base32 "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65"))))
751c7040 4040 (inputs
4041 `(("gnutls" ,gnutls)
4042 ("pcre" ,pcre)
4043 ("readline" ,readline)
4044 ("zlib" ,zlib)))
4045 (arguments
fffe4870 4046 '(#:tests? #f ; no test suite
751c7040 4047 #:phases
4048 (modify-phases %standard-phases
4049 ;; The source is in tt/src.
4050 (add-before 'configure 'chdir
4051 (lambda _
4052 (chdir "src")
4053 #t)))))
4054 (build-system gnu-build-system)
23174b49 4055 (home-page "https://tintin.mudhalla.net/")
751c7040 4056 (synopsis "MUD client")
4057 (description
5b9c2690
KK
4058 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
4059Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
4060options used by MUDs, as well as those required to login via telnet on
4061Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 4062 (license license:gpl3+)))
751c7040 4063
b3de5ff2
JN
4064(define-public laby
4065 (package
4066 (name "laby")
4067 (version "0.6.4")
4068 (source
6484b091
EF
4069 (origin (method git-fetch)
4070 (uri (git-reference
4071 (url "https://github.com/sgimenez/laby.git")
4072 (commit (string-append name "-" version))))
4073 (file-name (git-file-name name version))
b3de5ff2
JN
4074 (sha256
4075 (base32
6484b091 4076 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
4077 (patches (search-patches "laby-make-install.patch"))))
4078 (build-system gnu-build-system)
4079 (inputs
4080 `(("lablgtk" ,lablgtk)
4081 ("ocaml" ,ocaml)
a8f52ad7
TGR
4082 ("ocaml-findlib" ,ocaml-findlib)
4083 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
4084 (arguments
4085 '(#:phases
4086 (modify-phases %standard-phases
4087 (delete 'configure)
a8f52ad7
TGR
4088 (add-before 'build 'allow-unsafe-strings
4089 ;; Fix a build failure with ocaml >=4.06.0.
4090 ;; See <https://github.com/sgimenez/laby/issues/53>.
4091 (lambda _
4092 (setenv "OCAMLPARAM" "safe-string=0,_")
4093 #t))
4094 (add-before 'build 'set-library-path
b3de5ff2
JN
4095 (lambda* (#:key inputs #:allow-other-keys)
4096 (let ((lablgtk (assoc-ref inputs "lablgtk")))
4097 (setenv "LD_LIBRARY_PATH"
4098 (string-append lablgtk "/lib/ocaml/stublibs"))))))
4099 #:tests? #f ; no 'check' target
4100 #:make-flags
4101 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
4102 (home-page "https://sgimenez.github.io/laby/")
4103 (synopsis "Programming game")
4104 (description "Learn programming, playing with ants and spider webs ;-)
4105Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
4106Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
4107programmers may also add their own favorite language.")
4108 (license license:gpl3+)))
b0488fe5
EF
4109
4110(define-public bambam
4111 (package
4112 (name "bambam")
8e77da0d 4113 (version "1.0.0")
b0488fe5
EF
4114 (source
4115 (origin
63e708f4
TGR
4116 (method git-fetch)
4117 (uri (git-reference
4118 (url "https://github.com/porridge/bambam")
8e77da0d 4119 (commit (string-append "v" version))))
63e708f4 4120 (file-name (git-file-name name version))
b0488fe5 4121 (sha256
8e77da0d 4122 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
4123 (build-system python-build-system)
4124 (arguments
8e77da0d 4125 `(#:tests? #f ; no tests
b0488fe5
EF
4126 #:phases
4127 (modify-phases %standard-phases
8e77da0d 4128 (delete 'build) ; nothing to build
b0488fe5
EF
4129 (replace 'install
4130 (lambda* (#:key outputs #:allow-other-keys)
4131 (let* ((out (assoc-ref outputs "out"))
4132 (bin (string-append out "/bin"))
4133 (share (string-append out "/share")))
4134 (mkdir-p bin)
4135 (copy-file "bambam.py" (string-append bin "/bambam"))
4136 (install-file "bambam.6" (string-append share "/man/man6"))
4137 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
4138 #t)))))
4139 (inputs
4140 `(("python-pygame" ,python-pygame)))
4141 (home-page "https://github.com/porridge/bambam")
46a06224 4142 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
4143 (description "Bambam is a simple baby keyboard (and gamepad) masher
4144application that locks the keyboard and mouse and instead displays bright
4145colors, pictures, and sounds.")
4146 (license license:gpl3+)))
6b87c10f 4147
3110c74b
TGR
4148(define-public mrrescue
4149 (package
4150 (name "mrrescue")
4151 (version "1.02e")
4152 (source (origin
4153 (method url-fetch)
4154 (uri (string-append
4155 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 4156 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
4157 (file-name (string-append name "-" version ".love"))
4158 (sha256
4159 (base32
4160 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4161 (build-system trivial-build-system)
4162 (arguments
8893218a 4163 `(#:modules ((guix build utils))
3110c74b
TGR
4164 #:builder
4165 (begin
4166 (use-modules (guix build utils))
8893218a
TGR
4167 (let* ((out (assoc-ref %outputs "out"))
4168 (script (string-append out "/bin/" ,name))
4169 (data (string-append out "/share/" ,name))
4170 (source (assoc-ref %build-inputs "source"))
4171 (unzip (string-append (assoc-ref %build-inputs "unzip")
4172 "/bin/unzip"))
4173 (patch (string-append (assoc-ref %build-inputs "patch")
4174 "/bin/patch"))
4175 (bash (string-append (assoc-ref %build-inputs "bash")
4176 "/bin/bash"))
4177 (love (string-append (assoc-ref %build-inputs "love")
4178 "/bin/love")))
4179
4180 (mkdir-p (dirname script))
4181 (with-output-to-file script
3110c74b
TGR
4182 (lambda ()
4183 (format #t "#!~a~%" bash)
8893218a
TGR
4184 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4185 (chmod script #o755)
4186
4187 ;; The better way to package this game would be to install *only* the
4188 ;; script above, pointing to the unextracted .love file in the store.
4189 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4190 ;; Instead of extracting the .love file, patching it, and re-zipping
4191 ;; it to the store, simply point the script to the extracted patched
4192 ;; data directory directly.
4193 (mkdir-p data)
4194 (with-directory-excursion data
4195 (invoke unzip source)
4196 (invoke patch "-p1" "-i"
4197 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 4198 #t))))
8893218a
TGR
4199 (native-inputs
4200 `(("unzip" ,unzip)
4201 ("patch" ,patch)
4202 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
4203 (inputs
4204 `(("bash" ,bash)
4205 ("love" ,love)))
e2f28609 4206 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
4207 (synopsis "Arcade-style fire fighting game")
4208 (description
4209 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
4210civilians from burning buildings. The game features fast-paced fire
4211extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
4212throwing people around in pseudo-randomly generated buildings.")
4213 (license (list license:zlib ; for source code
4214 license:cc-by-sa3.0)))) ; for graphics and music assets
4215
cd1869cd
KK
4216(define-public hyperrogue
4217 (package
4218 (name "hyperrogue")
edd3a256 4219 (version "11.3a")
f8279ba4
KK
4220 ;; When updating this package, be sure to update the "hyperrogue-data"
4221 ;; origin in native-inputs.
cd1869cd
KK
4222 (source (origin
4223 (method url-fetch)
4224 (uri (string-append
a01aea7d
TGR
4225 "https://www.roguetemple.com/z/hyper/hyperrogue"
4226 (string-join (string-split version #\.) "")
f8279ba4 4227 "-src.tgz"))
cd1869cd
KK
4228 (sha256
4229 (base32
edd3a256 4230 "1yxabbswq02fc5frigvs43f83m5vlxybc7n5mynkwzj2c70lfp2k"))))
cd1869cd
KK
4231 (build-system gnu-build-system)
4232 (arguments
f8279ba4 4233 `(#:tests? #f ; no check target
82402f76
KK
4234 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4235 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
4236 #:phases
4237 (modify-phases %standard-phases
4238 (add-after 'set-paths 'set-sdl-paths
4239 (lambda* (#:key inputs #:allow-other-keys)
4240 (setenv "CPATH"
b6c2805c
MB
4241 (string-append (getenv "CPATH") ":"
4242 (assoc-ref inputs "sdl-union")
cd1869cd 4243 "/include/SDL"))))
cd1869cd
KK
4244 (replace 'configure
4245 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4246 (let* ((out (assoc-ref outputs "out"))
4247 (share-dir (string-append out "/share/hyperrogue"))
4248 (dejavu-dir (string-append
4249 (assoc-ref inputs "font-dejavu")
4250 "/share/fonts/truetype"))
4251 (dejavu-font "DejaVuSans-Bold.ttf")
4252 (music-file "hyperrogue-music.txt"))
1bb962b4 4253 ;; Fix font and music paths.
89c9445a 4254 (substitute* "basegraph.cpp"
f8279ba4
KK
4255 ((dejavu-font)
4256 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
4257 (substitute* music-file
4258 (("\\*/")
82402f76
KK
4259 (string-append share-dir "/sounds/")))
4260 (substitute* "sound.cpp"
4261 (("musicfile = \"\"")
4262 (string-append "musicfile = \""
4263 share-dir "/" music-file "\"")))
4264 ;; Disable build machine CPU optimizations and warnings treated
4265 ;; as errors.
4266 (substitute* "Makefile"
4267 (("-march=native") "")
4268 (("-Werror") "")))
cd1869cd
KK
4269 #t))
4270 (replace 'install
4271 (lambda* (#:key inputs outputs #:allow-other-keys)
4272 (let* ((out (assoc-ref outputs "out"))
4273 (bin (string-append out "/bin"))
4274 (share-dir (string-append out "/share/hyperrogue")))
4275 (mkdir-p bin)
82402f76 4276 (install-file "hyperrogue" bin)
f8279ba4
KK
4277 (install-file "hyperrogue-music.txt" share-dir))
4278 #t))
4279 (add-after 'install 'install-data
4280 (lambda* (#:key inputs outputs #:allow-other-keys)
4281 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4282 (out (assoc-ref outputs "out"))
4283 (sounds (string-append out "/share/hyperrogue/sounds"))
4284 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4285 ;; Extract media license information into sounds directory.
4286 (invoke unzip "-j" data
4287 (string-append
4288 "hyperrogue"
4289 (string-join (string-split ,version #\.) "")
4290 "/sounds/credits.txt") "-d" sounds)
4291 ;; Extract sounds and music into sounds directory.
4292 (invoke "unzip" "-j" data
4293 (string-append
4294 "hyperrogue"
4295 (string-join (string-split ,version #\.) "")
4296 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4297 (native-inputs
4298 `(("hyperrogue-data"
4299 ,(origin
4300 (method url-fetch)
4301 (uri
4302 (string-append
07de94d6 4303 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4304 (string-join (string-split version #\.) "")
4305 "-win.zip"))
4306 (sha256
4307 (base32
edd3a256 4308 "11yhbia45f1w9z0j67h9nynwjqmvakr9l6rnrmdrdkzin6lvzzj4"))))
f8279ba4 4309 ("unzip" ,unzip)))
cd1869cd
KK
4310 (inputs
4311 `(("font-dejavu" ,font-dejavu)
4312 ("glew" ,glew)
4313 ("libpng" ,libpng)
4314 ("sdl-union" ,(sdl-union (list sdl
4315 sdl-gfx
4316 sdl-mixer
4317 sdl-ttf)))))
4cae7e67 4318 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4319 (synopsis "Non-euclidean graphical rogue-like game")
4320 (description
4321 "HyperRogue is a game in which the player collects treasures and fights
4322monsters -- rogue-like but for the fact that it is played on the hyperbolic
4323plane and not in euclidean space.
4324
4325In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4326are home to particular creatures and may be subject to their own rules of
4327\"physics\".
cd1869cd 4328
a53a6b6f
TGR
4329While the game can use ASCII characters to display the the classical rogue
4330symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4331 (license (list license:bsd-3 ; glew.c, mtrand.*
4332 license:cc-by-sa3.0 ; music
4333 license:cc-by-sa4.0 ; sounds
4334 license:cc0
4335 license:public-domain ; direntx.*, some sounds
4336 license:zlib ; savepng.*
cd1869cd 4337 license:gpl2+)))) ; remaining files
a56145e1
SW
4338
4339(define-public kobodeluxe
4340 (package
4341 (name "kobodeluxe")
4342 (version "0.5.1")
4343 (source (origin
4344 (method url-fetch)
4345 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4346 version ".tar.bz2"))
4347 (sha256
4348 (base32
4349 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4350 (patches (search-patches
4351 "kobodeluxe-const-charp-conversion.patch"
4352 "kobodeluxe-enemies-pipe-decl.patch"
4353 "kobodeluxe-graphics-window-signed-char.patch"
4354 "kobodeluxe-manpage-minus-not-hyphen.patch"
4355 "kobodeluxe-midicon-segmentation-fault.patch"
4356 "kobodeluxe-paths.patch"))))
4357 (build-system gnu-build-system)
4358 (arguments
4359 '(#:configure-flags
4360 (list (string-append "CPPFLAGS=-I"
4361 (assoc-ref %build-inputs "sdl-union")
4362 "/include/SDL"))))
cf07ec20
MB
4363 (inputs
4364 `(("glu" ,glu)
4365 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
4366 (synopsis "Shooter with space station destruction")
4367 (description
4368 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4369for Un*x systems with X11.")
4370 (home-page "http://olofson.net/kobodl/")
4371 (license license:gpl2+)))
5430dbd9
AI
4372
4373(define-public freeciv
4374 (package
4375 (name "freeciv")
4445b3a7 4376 (version "2.6.2")
5430dbd9
AI
4377 (source
4378 (origin
4379 (method url-fetch)
b92e8da0
EF
4380 (uri (list (string-append
4381 "http://files.freeciv.org/stable/freeciv-"
4382 version ".tar.bz2")
4383 (string-append
4384 "mirror://sourceforge/freeciv/Freeciv%20"
4385 (version-major+minor version) "/" version
4386 "/freeciv-" version ".tar.bz2")))
5430dbd9 4387 (sha256
4445b3a7 4388 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
4389 (build-system gnu-build-system)
4390 (inputs
4391 `(("curl" ,curl)
4392 ("cyrus-sasl" ,cyrus-sasl)
4393 ("gtk+" ,gtk+)
4394 ("sdl-mixer" ,sdl-mixer)
4395 ("zlib" ,zlib)))
4396 (native-inputs
4397 `(("pkg-config" ,pkg-config)))
4398 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
4399 (synopsis "Turn-based empire building strategy game")
4400 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
4401inspired by the history of human civilization. The game commences in
4402prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 4403into the Space Age.")
5430dbd9 4404 (license license:gpl2+)))
345504c7 4405
4406(define-public no-more-secrets
4407 (package
4408 (name "no-more-secrets")
4c4f1871 4409 (version "0.3.3")
345504c7 4410 (source
4411 (origin
146a4459
TGR
4412 (method git-fetch)
4413 (uri (git-reference
4414 (url "https://github.com/bartobri/no-more-secrets.git")
4415 (commit (string-append "v" version))))
4416 (file-name (git-file-name name version))
345504c7 4417 (sha256
146a4459 4418 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4419 (build-system gnu-build-system)
4420 (arguments
4421 `(#:tests? #f
4422 #:make-flags (list "CC=gcc" "all-ncurses"
4423 (string-append "prefix="
4424 (assoc-ref %outputs "out")))
4425 #:phases
4426 (modify-phases %standard-phases
4427 (delete 'configure))))
4428 (inputs
4429 `(("ncurses" ,ncurses)))
4430 (home-page "https://github.com/bartobri/no-more-secrets")
4431 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4432 (description
4433 "@code{No More Secrets} provides a command line tool called \"nms\"
4434that recreates the famous data decryption effect seen on screen in the 1992
4435movie \"Sneakers\".
4436
4437This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4438it will apply the hollywood effect, initially showing encrypted data, then
4439starting a decryption sequence to reveal the original plaintext characters.")
4440 (license license:expat)))
fb731c92
AI
4441
4442(define-public megaglest-data
4443 (package
4444 (name "megaglest-data")
4445 (version "3.13.0")
4446 (source
4447 (origin
4448 (method url-fetch)
4449 (uri (string-append
4450 "https://github.com/MegaGlest/megaglest-data"
4451 "/releases/download/" version "/megaglest-data-"
4452 version ".tar.xz"))
4453 (sha256
4454 (base32
4455 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4456 (build-system cmake-build-system)
4457 (arguments
4458 `(#:tests? #f))
4459 (home-page "https://megaglest.org/")
4460 (synopsis "Data files for MegaGlest")
4461 (description "This package contains the data files required for MegaGlest.")
4462 (license license:cc-by-sa3.0)))
0b608ec4
AI
4463
4464(define-public megaglest
4465 (package
4466 (name "megaglest")
4467 (version "3.13.0")
4468 (source
4469 (origin
4470 (method url-fetch)
4471 (uri (string-append
4472 "https://github.com/MegaGlest/megaglest-source"
4473 "/releases/download/" version "/megaglest-source-"
4474 version ".tar.xz"))
4475 (sha256
4476 (base32
4477 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4478 (build-system cmake-build-system)
4479 (inputs
4480 `(("curl" ,curl)
4481 ("fontconfig" ,fontconfig)
4482 ("ftgl" ,ftgl)
4483 ("glew" ,glew)
4484 ("libjpeg-turbo" ,libjpeg-turbo)
4485 ("megaglest-data" ,megaglest-data)
4486 ("mesa" ,mesa)
4487 ("miniupnpc" ,miniupnpc)
4488 ("openal" ,openal)
4489 ("libircclient" ,libircclient)
4490 ("libpng" ,libpng)
4491 ("libvorbis" ,libvorbis)
4492 ("lua" ,lua)
4493 ("sdl2" ,sdl2)
4494 ("wxwidgets" ,wxwidgets)))
4495 (native-inputs
4496 `(("cppunit" ,cppunit)
4497 ("pkg-config" ,pkg-config)))
4498 (arguments
4499 `(#:configure-flags
4500 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4501 (assoc-ref %build-inputs "megaglest-data")
4502 "/share/megaglest")
4503 "-DBUILD_MEGAGLEST_TESTS=ON")
4504 #:phases
4505 (modify-phases %standard-phases
4506 (add-after 'unpack 'fix-ini-search-path
4507 (lambda* (#:key outputs #:allow-other-keys)
4508 (substitute* "source/glest_game/global/config.cpp"
4509 (("/usr/share/megaglest/")
4510 (string-append (assoc-ref outputs "out")
4511 "/share/megaglest/"))))))
4512 #:test-target "megaglest_tests"))
4513 (home-page "https://megaglest.org/")
4514 (synopsis "3D real-time strategy (RTS) game")
4515 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4516game, where you control the armies of one of seven different factions: Tech,
4517Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4518 (license license:gpl2+)))
6bb9c854
RW
4519
4520(define-public freegish
4521 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4522 (revision "1"))
4523 (package
4524 (name "freegish")
4525 (version (string-append "0-" revision "." (string-take commit 9)))
4526 (source (origin
4527 (method git-fetch)
4528 (uri (git-reference
4529 (url "https://github.com/freegish/freegish.git")
4530 (commit commit)))
661ad6f0 4531 (file-name (git-file-name name version))
6bb9c854
RW
4532 (sha256
4533 (base32
4534 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4535 (modules '((guix build utils)))
4536 ;; The audio files in the "music" directory are licensed under
4537 ;; CC-BY-NC, so we delete them.
4538 (snippet
4539 '(begin
4540 (delete-file-recursively "music")
4541 #t))))
4542 (build-system cmake-build-system)
4543 (arguments
4544 `(#:tests? #f ; no tests included
4545 #:configure-flags
4546 (list "-DCMAKE_INSTALL_FHS=ON")
4547 #:phases
4548 (modify-phases %standard-phases
4549 (add-after 'unpack 'set-DATAPATH
4550 (lambda* (#:key outputs #:allow-other-keys)
4551 (substitute* "CMakeLists.txt"
4552 (("^option\\(INSTALL_FHS" line)
4553 (string-append "add_definitions(-DDATAPATH=\""
4554 (assoc-ref outputs "out") "/share/freegish\")\n"
4555 line)))
4556 #t)))))
4557 (inputs
4558 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4559 ("openal" ,openal)
4560 ("libvorbis" ,libvorbis)
4561 ("libogg" ,libogg)
4562 ("mesa" ,mesa)
4563 ("libpng" ,libpng)
4564 ("zlib" ,zlib)))
4565 (home-page "https://github.com/freegish/freegish")
4566 (synopsis "Side-scrolling physics platformer with a ball of tar")
4567 (description "In FreeGish you control Gish, a ball of tar who lives
4568happily with his girlfriend Brea, until one day a mysterious dark creature
4569emerges from a sewer hole and pulls her below ground.")
4570 ;; The textures are available under the Expat license. All other assets
4571 ;; (including levels) are covered under CC-BY-SA or public domain. The
4572 ;; source code is under GPLv2+.
4573 (license (list license:gpl2+
4574 license:expat
4575 license:public-domain
4576 license:cc-by-sa3.0)))))
f0f7bf95
RW
4577
4578(define-public cdogs-sdl
6e65eb3c
TGR
4579 (package
4580 (name "cdogs-sdl")
acfb7357 4581 (version "0.6.9")
6e65eb3c
TGR
4582 (source (origin
4583 (method git-fetch)
4584 (uri (git-reference
4585 (url "https://github.com/cxong/cdogs-sdl.git")
4586 (commit version)))
4587 (file-name (git-file-name name version))
4588 (sha256
4589 (base32
acfb7357 4590 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4591 (build-system cmake-build-system)
4592 (arguments
4593 `(#:configure-flags
4594 (list (string-append "-DCDOGS_DATA_DIR="
4595 (assoc-ref %outputs "out")
4596 "/share/cdogs-sdl/"))))
4597 (inputs
4598 `(("mesa" ,mesa)
4599 ("sdl2" ,sdl2)
4600 ("sdl2-image" ,sdl2-image)
4601 ("sdl2-mixer" ,sdl2-mixer)))
4602 (home-page "https://cxong.github.io/cdogs-sdl/")
4603 (synopsis "Classic overhead run-and-gun game")
4604 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4605supporting up to 4 players in co-op and deathmatch modes. Customize your
4606player, choose from many weapons, and blast, slide and slash your way through
4607over 100 user-created campaigns.")
6e65eb3c
TGR
4608 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4609 ;; CC0/CC-BY/CC-BY-SA for assets.
4610 (license (list license:gpl2+
4611 license:bsd-2
4612 license:bsd-3
4613 license:cc0
4614 license:cc-by3.0
4615 license:cc-by-sa3.0))))
bd71525b 4616
649220ad 4617(define-public kiki
bd71525b 4618 (package
649220ad 4619 (name "kiki")
bd71525b
RW
4620 (version "1.0.2")
4621 (source (origin
4622 (method url-fetch)
4623 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4624 version "/kiki-" version "-src.tgz"))
4625 (sha256
4626 (base32
4627 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4628 (modules '((guix build utils)))
4629 (snippet
4630 '(begin
4631 (for-each delete-file (find-files "." "\\.dll$"))
4632 #t))
4633 (patches
4634 (search-patches "kiki-level-selection-crash.patch"
4635 "kiki-makefile.patch"
4636 "kiki-missing-includes.patch"
4637 "kiki-portability-64bit.patch"))))
4638 (build-system gnu-build-system)
4639 (arguments
4640 `(#:tests? #f ; there are no tests
4641 #:make-flags '("CXX=g++")
4642 #:phases
4643 (modify-phases %standard-phases
4644 (replace 'configure
4645 (lambda* (#:key inputs outputs #:allow-other-keys)
4646 (setenv "CPLUS_INCLUDE_PATH"
4647 (string-append (assoc-ref inputs "sdl-union")
4648 "/include/SDL:"
4649 (assoc-ref inputs "python")
97149c57 4650 "/include/python2.7"))
bd71525b
RW
4651 (substitute* "src/main/main.cpp"
4652 (("#include <SDL.h>" line)
4653 (string-append line "
4654#define K_INCLUDE_GLUT
4655#include \"KIncludeTools.h\""))
4656 (("// initialize SDL" line)
4657 (string-append "glutInit(&argc,argv);\n" line)))
4658 (substitute* "src/main/KikiController.cpp"
4659 (("getenv\\(\"KIKI_HOME\"\\)")
4660 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4661 (substitute* "linux/Makefile"
4662 (("CXXOPTS =" line)
4663 (string-append line " -fpermissive"))
4664 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4665 (("PYTHONHOME =.*")
4666 (string-append "PYTHONHOME = "
4667 (assoc-ref inputs "python")
4668 "/lib/python2.7/"))
4669 (("\\$\\(GLLIBS\\)" line)
4670 (string-append line " -lm -lpython2.7")))
4671 (substitute* "src/main/KikiPythonWidget.h"
4672 (("#define __KikiPythonWidget" line)
4673 (string-append line "\n#include \"KikiPython.h\"")))
4674 #t))
4675 (add-before 'build 'build-kodilib
4676 (lambda* (#:key make-flags #:allow-other-keys)
4677 (with-directory-excursion "kodilib/linux"
ff61aee8 4678 (apply invoke "make" make-flags))))
bd71525b
RW
4679 (add-after 'build-kodilib 'chdir
4680 (lambda _ (chdir "linux") #t))
4681 (replace 'install
4682 (lambda* (#:key outputs #:allow-other-keys)
4683 (let* ((out (assoc-ref outputs "out"))
4684 (bin (string-append out "/bin"))
4685 (share (string-append out "/share/kiki")))
4686 (mkdir-p bin)
4687 (mkdir-p share)
4688 (install-file "kiki" bin)
4689 (copy-recursively "../py" (string-append share "/py"))
4690 (copy-recursively "../sound" (string-append share "/sound"))
4691 #t))))))
4692 (inputs
4693 `(("glu" ,glu)
4694 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4695 ("freeglut" ,freeglut-2.8)
4696 ("sdl-union" ,(sdl-union (list sdl
4697 sdl-mixer
4698 sdl-image)))
4699 ("python" ,python-2)))
4700 (native-inputs
4701 `(("swig" ,swig)))
4702 (home-page "http://kiki.sourceforge.net/")
4703 (synopsis "3D puzzle game")
4704 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4705mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4706small robot living in the nano world, repair its maker.")
4707 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4708 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4709 ;; for a statement from the author.
4710 (license license:public-domain)))
b77e3a1c
RW
4711
4712(define-public teeworlds
4713 (package
4714 (name "teeworlds")
b74f7f06 4715 (version "0.7.4")
b77e3a1c 4716 (source (origin
f9e5caf9
AV
4717 (method git-fetch)
4718 (uri (git-reference
4719 (url "https://github.com/teeworlds/teeworlds.git")
4720 (commit version)))
4721 (file-name (git-file-name name version))
b77e3a1c
RW
4722 (sha256
4723 (base32
b74f7f06 4724 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
f9e5caf9
AV
4725 (modules '((guix build utils)
4726 (ice-9 ftw)
4727 (ice-9 regex)
4728 (srfi srfi-1)
4729 (srfi srfi-26)))
4730 (snippet ; remove bundled libraries except md5
4731 '(let ((base-dir "src/engine/external/"))
4732 (for-each (compose (cut delete-file-recursively <>)
4733 (cut string-append base-dir <>))
4734 (remove (cut string-match "(^.)|(^md5$)" <>)
4735 (scandir base-dir)))
b74f7f06 4736 #t))))
b77e3a1c
RW
4737 (build-system gnu-build-system)
4738 (arguments
7aed8b8a 4739 `(#:tests? #f ; no tests included
f9e5caf9
AV
4740 #:modules ((guix build gnu-build-system)
4741 (guix build utils)
4742 (srfi srfi-26))
b77e3a1c
RW
4743 #:phases
4744 (modify-phases %standard-phases
4745 (replace 'configure
4746 (lambda* (#:key outputs #:allow-other-keys)
4747 ;; Embed path to assets.
4748 (substitute* "src/engine/shared/storage.cpp"
4749 (("#define DATA_DIR.*")
4750 (string-append "#define DATA_DIR \""
4751 (assoc-ref outputs "out")
4752 "/share/teeworlds/data"
4753 "\"")))
4754
4755 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4756 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4757 (find-files "."))
4758
4759 ;; Do not use bundled libraries.
4760 (substitute* "bam.lua"
f9e5caf9
AV
4761 (("local json = Compile.+$")
4762 "local json = nil
4763settings.link.libs:Add(\"jsonparser\")")
4764 (("local png = Compile.+$")
4765 "local png = nil
4766settings.link.libs:Add(\"pnglite\")")
4767 (("local wavpack = Compile.+$")
4768 "local wavpack = nil
4769settings.link.libs:Add(\"wavpack\")")
4770 (("if config\\.zlib\\.value == 1")
4771 "if config.zlib.value"))
4772 (substitute* "src/engine/client/graphics_threaded.cpp"
4773 (("engine/external/pnglite/pnglite\\.h")
4774 "pnglite.h"))
b77e3a1c 4775 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4776 (("engine/external/wavpack/wavpack\\.h")
4777 "wavpack/wavpack.h"))
b77e3a1c
RW
4778 #t))
4779 (replace 'build
4780 (lambda _
f9e5caf9 4781 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4782 (replace 'install
4783 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4784 (let* ((arch ,(system->linux-architecture
4785 (or (%current-target-system)
4786 (%current-system))))
076fe846
OP
4787 (build (string-append "build/" (if (string=? arch "i386")
4788 "x86" arch)
4789 "/release/"))
f9e5caf9
AV
4790 (data-built (string-append build "data/"))
4791 (out (assoc-ref outputs "out"))
4792 (bin (string-append out "/bin/"))
4793 (data (string-append out "/share/teeworlds/data/")))
4794 (for-each (cut install-file <> bin)
4795 (map (cut string-append build <>)
4796 '("teeworlds" "teeworlds_srv")))
4797 (copy-recursively data-built data)
b77e3a1c 4798 #t))))))
b77e3a1c
RW
4799 (inputs
4800 `(("freetype" ,freetype)
4801 ("glu" ,glu)
f9e5caf9 4802 ("json-parser" ,json-parser)
b77e3a1c 4803 ("mesa" ,mesa)
f9e5caf9
AV
4804 ("pnglite" ,pnglite)
4805 ("sdl2" ,sdl2)
4806 ("sdl2-image" ,sdl2-image)
4807 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4808 ("wavpack" ,wavpack)
4809 ("zlib" ,zlib)))
4810 (native-inputs
4811 `(("bam" ,bam)
f9e5caf9 4812 ("python" ,python-wrapper)
e402a66b 4813 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4814 (home-page "https://www.teeworlds.com")
4815 (synopsis "2D retro multiplayer shooter game")
4816 (description "Teeworlds is an online multiplayer game. Battle with up to
481716 players in a variety of game modes, including Team Deathmatch and Capture
4818The Flag. You can even design your own maps!")
4819 (license license:bsd-3)))
e02f1663 4820
162a4a03
RW
4821(define-public enigma
4822 (package
4823 (name "enigma")
4824 (version "1.21")
4825 (source (origin
4826 (method url-fetch)
4827 (uri (string-append "mirror://sourceforge/enigma-game/"
4828 "Release%20" version "/enigma-"
4829 version ".tar.gz"))
4830 (sha256
4831 (base32
4832 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4833 (build-system gnu-build-system)
4834 (arguments
4835 `(#:configure-flags
4836 (list "--with-system-enet")
4837 #:phases
4838 (modify-phases %standard-phases
4839 (add-after 'unpack 'find-sdl
4840 (lambda _
4841 (substitute* "configure"
4842 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4843 (substitute* '("tools/ttf2bmf.cc"
4844 "lib-src/enigma-core/ecl_font.cc"
4845 "lib-src/enigma-core/ecl_video.cc"
4846 "lib-src/enigma-core/ecl_buffer.hh"
4847 "src/SoundEngine.cc"
4848 "src/SoundEngine.hh"
4849 "src/MusicManager.cc"
4850 "src/MusicManager.hh"
4851 "src/d_models.cc"
4852 "src/main.cc"
4853 "src/network.cc")
4854 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4855 (string-append "#include \"SDL/SDL_" header ".h\"")))
4856 (substitute* "src/main.cc"
4857 (("#include <SDL_(image|ttf|mixer).h>" line header)
4858 (string-append "#include \"SDL/SDL_" header ".h\"")))
4859 #t)))))
4860 (inputs
4861 `(("xerces-c" ,xerces-c)
4862 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4863 ("curl" ,curl)
4864 ("enet" ,enet)))
4865 (native-inputs
4866 `(("pkg-config" ,pkg-config)
4867 ("imagemagick" ,imagemagick)))
340978d7 4868 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4869 (synopsis "Puzzle game with a dexterity component")
4870 (description "Enigma is a puzzle game with 550 unique levels. The object
4871of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4872Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4873and most of all, countless hairy puzzles usually block your direct way to the
4874Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4875get bored) interact in many unexpected ways, and since many of them follow the
4876laws of physics (Enigma’s special laws of physics, that is), controlling them
4877with the mouse isn’t always trivial.")
4878 (license license:gpl2+)))
4879
10d53153
CLW
4880(define-public chroma
4881 (package
4882 (name "chroma")
9cf65f05 4883 (version "1.17")
10d53153
CLW
4884 (source (origin
4885 (method url-fetch)
4886 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4887 version ".tar.bz2"))
4888 (sha256
4889 (base32
9cf65f05 4890 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4891 (build-system gnu-build-system)
4892 (arguments
5479dbf9 4893 `(#:tests? #f)) ; no tests included
10d53153
CLW
4894 (inputs
4895 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4896 ("freetype" ,freetype)
4897 ("ncurses" ,ncurses)
4898 ("fontconfig" ,fontconfig)
4899 ("libxft" ,libxft)))
4900 (native-inputs
4901 `(("pkg-config" ,pkg-config)))
4902 (home-page "http://level7.org.uk/chroma/")
4903 (synopsis "Abstract puzzle game")
4904 (description "Chroma is an abstract puzzle game. A variety of colourful
4905shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
4906fiendish traps that must be disarmed and mysterious puzzles that must be
4907manipulated in order to give up their subtle secrets. Initially so
4908straightforward that anyone can pick it up and begin to play, yet gradually
4909becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
4910 (license license:gpl2+)))
4911
649220ad 4912(define-public fillets-ng
e02f1663 4913 (package
649220ad 4914 (name "fillets-ng")
e02f1663
RW
4915 (version "1.0.1")
4916 (source (origin
4917 (method url-fetch)
4918 (uri (string-append "mirror://sourceforge/fillets/"
4919 "Fish%20Fillets%20-%20Next%20Generation/"
4920 version "/fillets-ng-" version ".tar.gz"))
4921 (sha256
4922 (base32
4923 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4924 (build-system gnu-build-system)
4925 (arguments
4926 `(#:configure-flags
4927 (list (string-append "--with-lua="
4928 (assoc-ref %build-inputs "lua")))
4929 #:make-flags
4930 (list (string-append "CFLAGS=-I"
4931 (assoc-ref %build-inputs "sdl-union")
4932 "/include/SDL")
4933 (string-append "CXXFLAGS=-I"
4934 (assoc-ref %build-inputs "sdl-union")
4935 "/include/SDL"))
4936 #:phases
4937 (modify-phases %standard-phases
4938 ;; Lua 5.1 does not provide it.
4939 (add-after 'unpack 'do-not-link-with-lualib
4940 (lambda _
4941 (substitute* "configure"
4942 (("-llualib") ""))
4943 #t))
4944 (add-after 'install 'install-data
4945 (lambda* (#:key inputs outputs #:allow-other-keys)
4946 (let ((data (string-append (assoc-ref outputs "out")
4947 "/share/games/fillets-ng")))
4948 (mkdir-p data)
f08d34a0
RW
4949 (invoke "tar" "-xvf"
4950 (assoc-ref inputs "fillets-ng-data")
4951 "--strip-components=1"
4952 "-C" data)))))))
e02f1663
RW
4953 (inputs
4954 `(("sdl-union" ,(sdl-union (list sdl
4955 sdl-mixer
4956 sdl-image
4957 sdl-ttf)))
4958 ("fribidi" ,fribidi)
4959 ("libx11" ,libx11)
4960 ("lua" ,lua-5.1)))
4961 (native-inputs
4962 `(("pkg-config" ,pkg-config)
4963 ("fillets-ng-data"
4964 ,(origin
4965 (method url-fetch)
4966 (uri (string-append "mirror://sourceforge/fillets/"
4967 "Fish%20Fillets%20-%20Next%20Generation/"
4968 version "/fillets-ng-data-" version ".tar.gz"))
4969 (sha256
4970 (base32
4971 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4972 (home-page "http://fillets.sourceforge.net/")
4973 (synopsis "Puzzle game")
4974 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4975every of the seventy levels is always the same: find a safe way out. The fish
4976utter witty remarks about their surroundings, the various inhabitants of their
4977underwater realm quarrel among themselves or comment on the efforts of your
4978fish. The whole game is accompanied by quiet, comforting music.")
4979 (license license:gpl2+)))
dd37a545 4980
649220ad 4981(define-public crawl
dd37a545 4982 (package
649220ad 4983 (name "crawl")
af48a200 4984 (version "0.24.0")
dd37a545 4985 (source
4986 (origin
4987 (method url-fetch)
4988 (uri (list
4989 ;; Older releases get moved into a versioned directory
4990 (string-append "http://crawl.develz.org/release/"
4991 (version-major+minor version) "/stone_soup-"
4992 version "-nodeps.tar.xz")
4993 ;; Only the latest release is in this directory
4994 (string-append "http://crawl.develz.org/release/stone_soup-"
4995 version "-nodeps.tar.xz")))
4996 (sha256
af48a200 4997 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4998 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4999 (build-system gnu-build-system)
5000 (inputs
5001 `(("lua51" ,lua-5.1)
5002 ("ncurses" ,ncurses)
5003 ("sqlite" ,sqlite)
5004 ("zlib" ,zlib)))
5005 (native-inputs
5006 `(("bison" ,bison)
5007 ("flex" ,flex)
5008 ("perl" ,perl)
fc7d6bc6 5009 ("python" ,python-wrapper)
e366521a 5010 ("python-pyyaml" ,python-pyyaml)
dd37a545 5011 ("pkg-config" ,pkg-config)))
5012 (arguments
a5c8460a 5013 `(#:make-flags
dd37a545 5014 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
5015 (out (assoc-ref %outputs "out")))
5016 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
5017 (string-append "prefix=" out)
5018 "SAVEDIR=~/.crawl"
564df7e5 5019 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
5020 ,@(match (%current-system)
5021 ((or "i686-linux" "x86_64-linux")
5022 '())
5023 (_ '("NOSSE=TRUE")))
dd37a545 5024 ;; don't build any bundled dependencies
5025 "BUILD_LUA="
5026 "BUILD_SQLITE="
5027 "BUILD_ZLIB="
5028 "-Csource"))
5029 #:phases
5030 (modify-phases %standard-phases
606c1987
EF
5031 (add-after 'unpack 'find-SDL-image
5032 (lambda _
5033 (substitute* "source/windowmanager-sdl.cc"
5034 (("SDL_image.h") "SDL2/SDL_image.h"))
5035 #t))
dd37a545 5036 (delete 'configure)
e366521a 5037 (replace 'check
dd37a545 5038 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
5039 (setenv "HOME" (getcwd))
5040 ;; Fake a terminal for the test cases.
5041 (setenv "TERM" "xterm-256color")
e366521a
KK
5042 ;; Run the tests that don't require a debug build.
5043 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
5044 (format #f "-j~d" (parallel-job-count))
5045 ;; Force command line build for test cases.
5046 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 5047 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
5048 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
5049for short) is a roguelike adventure through dungeons filled with dangerous
5050monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 5051 (home-page "https://crawl.develz.org")
5052 (license (list license:gpl2+
5053 license:bsd-2
5054 license:bsd-3
5055 license:cc0
5056 license:expat
5057 license:zlib
5058 license:asl2.0))))
cae491ab 5059
1243aaac 5060;; The linter here claims that patch file names should start with the package
5061;; name. But, in this case, the patches are inherited from crawl with the
5062;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 5063(define-public crawl-tiles
ae548434 5064 (package
649220ad
NG
5065 (inherit crawl)
5066 (name "crawl-tiles")
ae548434 5067 (arguments
5068 (substitute-keyword-arguments
5069 (package-arguments crawl)
5070 ((#:make-flags flags)
5071 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
5072 (cons*
5073 (string-append "PROPORTIONAL_FONT=" dejavu
5074 "/share/fonts/truetype/DejaVuSans.ttf")
5075 (string-append "MONOSPACED_FONT=" dejavu
5076 "/share/fonts/truetype/DejaVuSansMono.ttf")
5077 "TILES=y"
5078 ;; Rename the executable to allow parallel installation with crawl.
5079 "GAME=crawl-tiles"
5080 ,flags)))))
5081 (inputs
5082 `(,@(package-inputs crawl)
5083 ("font-dejavu" ,font-dejavu)
5084 ("freetype6" ,freetype)
5085 ("glu" ,glu)
5086 ("libpng" ,libpng)
5087 ("sdl2" ,sdl2)
5088 ("sdl2-image" ,sdl2-image)
5089 ("sdl2-mixer" ,sdl2-mixer)))
5090 (native-inputs
5091 `(,@(package-native-inputs crawl)
6438a468 5092 ("pngcrush" ,pngcrush)
ae548434 5093 ("which" ,which)))
5094 (synopsis "Graphical roguelike dungeon crawler game")))
5095
cae491ab
JL
5096(define-public lugaru
5097 (package
5098 (name "lugaru")
5099 (version "1.2")
5100 (source (origin
5101 (method url-fetch)
5102 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 5103 "lugaru-" version ".tar.xz"))
cae491ab
JL
5104 (sha256
5105 (base32
5106 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5107 (build-system cmake-build-system)
5108 (arguments
5109 `(#:configure-flags
5110 (list "-DSYSTEM_INSTALL=ON")
5111 ;; no test target
5112 #:tests? #f))
5113 (native-inputs
5114 `(("pkg-config" ,pkg-config)))
5115 (inputs
5116 `(("sdl2" ,sdl2)
5117 ("glu" ,glu)
5118 ("libjpeg" ,libjpeg-turbo)
5119 ("libpng" ,libpng)
5120 ("openal" ,openal)
5121 ("vorbis" ,libvorbis)
5122 ("zlib" ,zlib)))
5123 (home-page "https://osslugaru.gitlab.io")
5124 (synopsis "Cross-platform third-person action game")
5125 (description "Lugaru is a third-person action game. The main character,
5126Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5127In his quest to find those responsible for slaughtering his village, he uncovers
5128a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5129and the starving wolves from a nearby den. Turner takes it upon himself to
5130fight against their plot and save his fellow rabbits from slavery.")
5131 (license (list license:gpl2+ ; code
5132 ;; assets:
5133 license:cc-by-sa3.0
5134 license:cc-by-sa4.0))))
bff33e6c
CL
5135
5136(define-public 0ad-data
5137 (package
5138 (name "0ad-data")
8c00379c 5139 (version "0.0.23b-alpha")
bff33e6c
CL
5140 (source
5141 (origin
5142 (method url-fetch)
706d6190 5143 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5144 version "-unix-data.tar.xz"))
5145 (file-name (string-append name "-" version ".tar.xz"))
5146 (sha256
5147 (base32
8c00379c 5148 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
5149 (modules '((guix build utils)))
5150 (snippet
5151 #~(begin
6cbee49d
MW
5152 (for-each (lambda (name)
5153 (let* ((dir (string-append "binaries/data/mods/" name))
5154 (file (string-append dir "/" name ".zip"))
5155 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 5156 (invoke unzip "-d" dir file)
6cbee49d
MW
5157 (delete-file file)))
5158 '("mod" "public"))
bff33e6c
CL
5159 #t))))
5160 (build-system trivial-build-system)
5161 (native-inputs `(("tar" ,tar)
5162 ("xz" ,xz)))
5163 (arguments
5164 `(#:modules ((guix build utils))
5165 #:builder
5166 (begin
5167 (use-modules (guix build utils))
5168 (let ((out (assoc-ref %outputs "out"))
5169 (source (assoc-ref %build-inputs "source"))
5170 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5171 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5172 (setenv "PATH" xz-path)
5173 (mkdir out)
e3cfef22 5174 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
5175 (synopsis "Data files for 0ad")
5176 (description "0ad-data provides the data files required by the game 0ad.")
5177 (home-page "https://play0ad.com")
5178 (license (list (license:fsdg-compatible
5179 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
5180 "Similar to the license of the Bitstream Vera fonts.")
5181 (license:fsdg-compatible
5182 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
5183 license:cc-by-sa3.0
5184 license:expat
5185 license:gfl1.0
5186 license:gpl2+
5187 license:gpl3+))))
5188
5189(define-public 0ad
5190 (package
5191 (name "0ad")
8c00379c 5192 (version "0.0.23b-alpha")
bff33e6c
CL
5193 (source
5194 (origin
5195 (method url-fetch)
706d6190 5196 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5197 version "-unix-build.tar.xz"))
5198 (file-name (string-append name "-" version ".tar.xz"))
5199 (sha256
5200 (base32
8c00379c 5201 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
5202 ;; A snippet here would cause a build failure because of timestamps
5203 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
5204 (inputs
5205 `(("0ad-data" ,0ad-data)
5206 ("curl" ,curl)
5207 ("enet" ,enet)
5208 ("gloox" ,gloox)
5209 ("icu4c" ,icu4c)
5210 ("libpng" ,libpng)
706d6190 5211 ("libsodium" ,libsodium)
bff33e6c
CL
5212 ("libvorbis" ,libvorbis)
5213 ("libxcursor" ,libxcursor)
5214 ("libxml2" ,libxml2)
5215 ("miniupnpc" ,miniupnpc)
5216 ("mozjs-38" ,mozjs-38)
5217 ("openal" ,openal)
5218 ("sdl2" ,sdl2)
5219 ("wxwidgets" ,wxwidgets)
5220 ("zlib" ,zlib)))
5221 (native-inputs
5222 `(("boost" ,boost)
c69959f0 5223 ("cmake" ,cmake-minimal)
bff33e6c
CL
5224 ("mesa" ,mesa)
5225 ("pkg-config" ,pkg-config)
5226 ("python-2" ,python-2)))
5227 (build-system gnu-build-system)
5228 (arguments
809b8842
CB
5229 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5230 #:phases
bff33e6c
CL
5231 (modify-phases %standard-phases
5232 (add-after 'unpack 'delete-bundles
5233 (lambda _
5234 (delete-file-recursively "libraries/source/spidermonkey")
5235 #t))
5236 (add-after 'unpack 'fix-x11-includes
5237 (lambda _
5238 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5239 (("<Xlib.h>") "<X11/Xlib.h>"))
5240 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5241 (("<Xatom.h>") "<X11/Xatom.h>"))
5242 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5243 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5244 #t))
5245 (replace 'configure
5246 (lambda* (#:key inputs outputs #:allow-other-keys)
5247 (let* ((jobs (number->string (parallel-job-count)))
5248 (out (assoc-ref outputs "out"))
5249 (lib (string-append out "/lib"))
5250 (data (string-append out "/share/0ad")))
5251 (setenv "JOBS" (string-append "-j" jobs))
5252 (setenv "CC" "gcc")
5253 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5254 (invoke "./update-workspaces.sh"
5255 (string-append "--libdir=" lib)
5256 (string-append "--datadir=" data)
5257 ;; TODO: "--with-system-nvtt"
5258 "--with-system-mozjs38")))))
bff33e6c
CL
5259 (delete 'check)
5260 (replace 'install
5261 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5262 (chdir "binaries")
bff33e6c
CL
5263 (let* ((out (assoc-ref outputs "out"))
5264 (bin (string-append out "/bin"))
5265 (lib (string-append out "/lib"))
5266 (data (string-append out "/share/0ad"))
5267 (applications (string-append out "/share/applications"))
5268 (pixmaps (string-append out "/share/pixmaps"))
5269 (0ad-data (assoc-ref inputs "0ad-data")))
5270 ;; data
5271 (copy-recursively "data" data)
5272 (for-each (lambda (file)
5273 (symlink (string-append 0ad-data "/" file)
5274 (string-append data "/" file)))
5275 '("config" "mods/mod" "mods/public" "tools"))
5276 ;; libraries
5277 (for-each (lambda (file)
5278 (install-file file lib))
5279 (find-files "system" "\\.so$"))
5280 ;; binaries
5281 (install-file "system/pyrogenesis" bin)
5282 (with-directory-excursion bin
5283 (symlink "pyrogenesis" "0ad"))
5284 ;; resources
5285 (with-directory-excursion "../build/resources"
5286 (install-file "0ad.desktop" applications)
5287 (install-file "0ad.png" pixmaps))
5288 #t)))
5289 (add-after 'install 'check
5290 (lambda _
5291 (with-directory-excursion "system"
7b67bb1f 5292 (invoke "./test")))))))
bff33e6c
CL
5293 (home-page "https://play0ad.com")
5294 (synopsis "3D real-time strategy game of ancient warfare")
5295 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5296warfare. It's a historically-based war/economy game that allows players to
5297relive or rewrite the history of twelve ancient civilizations, each depicted
5298at their peak of economic growth and military prowess.
5299
53000ad needs a window manager that supports 'Extended Window Manager Hints'.")
5301 (license (list license:bsd-2
5302 license:bsd-3
5303 license:expat
5304 license:gpl2+
5305 license:ibmpl1.0
5306 license:isc
5307 license:lgpl2.1
5308 license:lgpl3
5309 license:mpl2.0
5310 license:zlib))))
dec63df4 5311
5312;; There have been no official releases.
5313(define-public open-adventure
be6e2c30 5314 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5315 (revision "2"))
dec63df4 5316 (package
5317 (name "open-adventure")
5318 (version (string-append "2.5-" revision "." (string-take commit 7)))
5319 (source (origin
5320 (method git-fetch)
5321 (uri (git-reference
5322 (url "https://gitlab.com/esr/open-adventure")
5323 (commit commit)))
5324 (file-name (string-append name "-" version "-checkout"))
5325 (sha256
5326 (base32
be6e2c30 5327 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5328 (build-system gnu-build-system)
5329 (arguments
5330 `(#:make-flags (list "CC=gcc")
5331 #:parallel-build? #f ; not supported
5332 #:phases
5333 (modify-phases %standard-phases
be6e2c30 5334 (replace 'configure
5335 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5336 ;; Linenoise is meant to be included, so we have to
5337 ;; copy it into the working directory.
be6e2c30 5338 (let* ((linenoise (assoc-ref inputs "linenoise"))
5339 (noisepath (string-append linenoise "/include/linenoise"))
5340 (out (assoc-ref outputs "out")))
5341 (copy-recursively noisepath "linenoise"))
5342 #t))
dec63df4 5343 (add-before 'build 'use-echo
5344 (lambda _
5345 (substitute* "tests/Makefile"
5346 (("/bin/echo") (which "echo")))
5347 #t))
5348 (add-after 'build 'build-manpage
5349 (lambda _
5350 ;; This target is missing a dependency
5351 (substitute* "Makefile"
be6e2c30 5352 ((".adoc.6:" line)
5353 (string-append line " advent.adoc")))
27cd31e6 5354 (invoke "make" ".adoc.6")))
dec63df4 5355 ;; There is no install target
5356 (replace 'install
5357 (lambda* (#:key outputs #:allow-other-keys)
5358 (let* ((out (assoc-ref outputs "out"))
5359 (bin (string-append out "/bin"))
5360 (man (string-append out "/share/man/man6")))
5361 (install-file "advent" bin)
5362 (install-file "advent.6" man))
5363 #t)))))
5364 (native-inputs
be6e2c30 5365 `(("asciidoc" ,asciidoc)
5366 ("linenoise" ,linenoise)
5367 ("python" ,python)
5368 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5369 (home-page "https://gitlab.com/esr/open-adventure")
5370 (synopsis "Colossal Cave Adventure")
5371 (description "The original Colossal Cave Adventure from 1976 was the
5372origin of all text adventures, dungeon-crawl (computer) games, and
5373computer-hosted roleplaying games. This is the last version released by
5374Crowther & Woods, its original authors, in 1995. It has been known as
5375\"adventure 2.5\" and \"430-point adventure\".")
5376 (license license:bsd-2))))
1f88f189 5377
649220ad 5378(define-public tome4
1f88f189 5379 (package
649220ad 5380 (name "tome4")
f894ffd8 5381 (version "1.6.7")
1f88f189
OP
5382 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5383 (source
5384 (origin
5385 (method url-fetch)
5386 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5387 version ".tar.bz2"))
5388 (sha256
f894ffd8 5389 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
1f88f189
OP
5390 (modules '((guix build utils)))
5391 (snippet
6cbee49d
MW
5392 '(begin
5393 (substitute* '("src/music.h" "src/tSDL.h")
5394 (("#elif defined(__FreeBSD__)" line)
5395 (string-append
5396 line " || defined(__GNUC__)")))
19c0cdb9
OP
5397 (substitute* '("src/tgl.h")
5398 (("#include <GL/glext.h>") ""))
6cbee49d 5399 #t))))
1f88f189
OP
5400 (build-system gnu-build-system)
5401 (native-inputs
5402 `(("unzip" ,unzip)))
5403 (inputs
5404 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5405 ("glu" ,glu)
5406 ("premake4" ,premake4)
5407 ("openal" ,openal)
5408 ("vorbis" ,libvorbis)
5409 ("luajit" ,luajit)))
5410 (arguments
5411 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5412 ;; XXX: Building in parallel occasionally causes this build failure:
5413 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5414 ;; No such file or directory
5415 #:parallel-build? #f
1f88f189 5416 #:phases (modify-phases %standard-phases
972b87b1 5417 (delete 'bootstrap)
1f88f189
OP
5418 (replace 'configure
5419 (lambda _
13a504af 5420 (invoke "premake4" "gmake")
1f88f189
OP
5421 #t))
5422 (add-after 'set-paths 'set-sdl-paths
5423 (lambda* (#:key inputs #:allow-other-keys)
5424 (setenv "CPATH"
5425 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5426 "/include/SDL2:"
5427 (getenv "CPATH")))
1f88f189
OP
5428 #t))
5429 (delete 'check)
5430 ;; premake doesn't provide install target
5431 (replace 'install
5432 (lambda* (#:key inputs outputs #:allow-other-keys)
5433 (let* ((out (assoc-ref outputs "out"))
5434 (usr (string-append out "/usr"))
5435 (bin (string-append out "/bin"))
5436 (licenses (string-append out "/share/licenses"))
5437 (documents (string-append out "/share/doc"))
5438 (pixmaps (string-append out "/share/pixmaps"))
5439 (icon "te4-icon.png")
5440 (data (string-append out "/share/" ,name))
5441 (applications (string-append
5442 out "/share/applications"))
5443 (unzip (string-append
5444 (assoc-ref inputs "unzip") "/bin/unzip"))
5445 (wrapper (string-append bin "/" ,name)))
5446 ;; icon
5447 (mkdir-p pixmaps)
26d52476
OP
5448 (invoke unzip "-j"
5449 (string-append
5450 "game/engines/te4-" ,version ".teae")
5451 (string-append
5452 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
5453 ;; game executable
5454 (install-file "t-engine" data)
5455 (mkdir-p bin)
5456 (with-output-to-file wrapper
5457 (lambda ()
5458 (display
5459 (string-append
5460 "#!/bin/sh\n"
5461 ;; No bootstrap code found,
5462 ;; defaulting to working directory
5463 ;; for engine code!
5464 "cd " data "\n"
5465 "exec -a tome4 ./t-engine \"$@\"\n"))))
5466 (chmod wrapper #o555)
5467 ;; licenses
5468 (for-each (lambda (file)
5469 (install-file file licenses))
5470 '("COPYING" "COPYING-MEDIA"))
5471 ;; documents
5472 (for-each (lambda (file)
5473 (install-file file documents))
5474 '("CONTRIBUTING" "CREDITS"))
5475 ;; data
5476 (copy-recursively "bootstrap" (string-append
5477 data "/bootstrap"))
5478 (copy-recursively "game" (string-append data "/game"))
5479 ;; launcher
5480 (mkdir-p applications)
5481 (with-output-to-file (string-append applications "/"
5482 ,name ".desktop")
5483 (lambda ()
5484 (display
5485 (string-append
5486 "[Desktop Entry]
5487Name=ToME4
5488Comment=" ,synopsis "\n"
5489"Exec=" ,name "\n"
5490"Icon=" icon "\n"
5491"Terminal=false
5492Type=Application
5493Categories=Game;RolePlaying;\n")))))
5494 #t)))))
5495 (home-page "https://te4.org")
5496 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5497combat and advanced character building. Play as one of many unique races and
5498classes in the lore-filled world of Eyal, exploring random dungeons, facing
5499challenging battles, and developing characters with your own tailored mix of
5500abilities and powers. With a modern graphical and customisable interface,
5501intuitive mouse control, streamlined mechanics and deep, challenging combat,
5502Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5503 (license license:gpl3+)))
7a070f02 5504
5505(define-public quakespasm
5506 (package
5507 (name "quakespasm")
18bbaf67 5508 (version "0.93.2")
7a070f02 5509 (source
5510 (origin
5511 (method url-fetch)
5512 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5513 version ".tgz"))
5514 (sha256
18bbaf67 5515 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 5516 (arguments
5517 `(#:tests? #f
5518 #:make-flags '("CC=gcc"
5519 "MP3LIB=mpg123"
5520 "USE_CODEC_FLAC=1"
5521 "USE_CODEC_MIKMOD=1"
5522 "USE_SDL2=1"
5523 "-CQuake")
5524 #:phases (modify-phases %standard-phases
5525 (delete 'configure)
5526 (add-after 'unpack 'fix-makefile-paths
5527 (lambda* (#:key outputs #:allow-other-keys)
5528 (let ((out (assoc-ref outputs "out")))
5529 (mkdir-p (string-append out "/bin"))
5530 (substitute* "Quake/Makefile"
5531 (("/usr/local/games")
5532 (string-append out "/bin")))
5533 #t))))))
5534 (build-system gnu-build-system)
5535 (inputs `(("libmikmod" ,libmikmod)
5536 ("libvorbis" ,libvorbis)
5537 ("flac" ,flac)
5538 ("mesa" ,mesa)
5539 ("mpg123" ,mpg123)
5540 ("sdl2" ,sdl2)))
5541 (synopsis "First person shooter engine for Quake 1")
5542 (description "Quakespasm is a modern engine for id software's Quake 1.
5543It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5544some graphical niceities, and numerous bug-fixes and other improvements.")
5545 (home-page "http://quakespasm.sourceforge.net/")
5546 (license license:gpl2+)))
916bb947 5547
7a6be5b9
RH
5548(define-public vkquake
5549 (package
5550 (inherit quakespasm)
5551 (name "vkquake")
3e7b376e 5552 (version "1.01.0")
7a6be5b9
RH
5553 (source
5554 (origin
f5e1a0e5
TGR
5555 (method git-fetch)
5556 (uri (git-reference
5557 (url "https://github.com/Novum/vkQuake.git")
5558 (commit version)))
5559 (file-name (git-file-name name version))
7a6be5b9 5560 (sha256
f5e1a0e5 5561 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5562 (arguments
5563 `(#:make-flags
5564 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5565 "vulkan-loader") "/lib")))
7a6be5b9
RH
5566 (list "CC=gcc"
5567 "MP3LIB=mpg123"
5568 "USE_CODEC_FLAC=1"
5569 "USE_CODEC_MIKMOD=1"
5570 "USE_SDL2=1"
5571 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5572 "-CQuake"))
5573 #:phases (modify-phases %standard-phases
5574 (delete 'configure)
5575 (add-after 'unpack 'fix-makefile-paths
5576 (lambda* (#:key outputs #:allow-other-keys)
5577 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5578 "vulkan-loader"))
7a6be5b9
RH
5579 (out (assoc-ref outputs "out")))
5580 (mkdir-p (string-append out "/bin"))
5581 (substitute* "Quake/Makefile" ((" /usr")
5582 (string-append " " out)))
5583 (substitute* "Quake/Makefile" (("/games")
5584 (string-append "/bin")))
5585 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5586 #t))))
5587 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5588 (package-arguments quakespasm))))
4108886b
RH
5589 (inputs `(("vulkan-headers" ,vulkan-headers)
5590 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5591 ,@(package-inputs quakespasm)))
5592 (description "vkquake is a modern engine for id software's Quake 1.
5593It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5594some graphical niceities, and numerous bug-fixes and other improvements.")
5595 (home-page "https://github.com/Novum/vkQuake")))
5596
916bb947 5597(define-public yamagi-quake2
5598 (package
5599 (name "yamagi-quake2")
5600 (version "7.10")
5601 (source
5602 (origin
5603 (method url-fetch)
5604 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5605 version ".tar.xz"))
5606 (sha256
5607 (base32
5608 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5609 (build-system gnu-build-system)
5610 (arguments
5611 `(#:tests? #f
5612 #:make-flags
5613 (list "CC=gcc"
5614 ;; link openAL instead of using dlopen at runtime
5615 "DLOPEN_OPENAL=\"no\""
5616 ;; an optional directory where it will look for quake2 data files
5617 ;; in addition to the current working directory
5618 "WITH_SYSTEMWIDE=yes"
5619 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5620 #:phases
5621 (modify-phases %standard-phases
5622 (delete 'configure)
5623 (replace 'install
5624 (lambda* (#:key outputs #:allow-other-keys)
5625 (let ((out (assoc-ref outputs "out")))
5626 (mkdir-p (string-append out "/lib"))
5627 (mkdir-p (string-append out "/bin"))
5628 ;; The yamagi-quake2 binary must be in the same directory
5629 ;; as it's engine libraries, but symlinking it to /bin is okay
5630 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5631 (copy-recursively "release"
5632 (string-append out "/lib/yamagi-quake2"))
5633 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5634 (string-append out "/bin/yamagi-quake2"))
5635 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5636 (string-append out "/bin/yamagi-q2ded"))))))))
5637 (inputs `(("sdl2" ,sdl2)
5638 ("mesa" ,mesa)
5639 ("libvorbis" ,libvorbis)
5640 ("zlib" ,zlib)
5641 ("openal" ,openal)))
5642 (native-inputs `(("pkg-config" ,pkg-config)))
5643 (synopsis "First person shooter engine based on quake2")
5644 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5645The main focus is an unchanged single player experience like back in 1997,
5646thus the gameplay and the graphics are unaltered. However the user may use one
5647of the unofficial retexturing packs. In comparison with the official client,
5648over 1000 bugs were fixed and an extensive code audit done,
5649making Yamagi Quake II one of the most solid Quake II implementations available.")
5650 (home-page "https://www.yamagi.org/quake2/")
5651 (license (list license:gpl2+ ; game and server
5652 (license:non-copyleft ; info-zip
5653 "file://LICENSE"
5654 "See Info-Zip section.")
5655 license:public-domain)))) ; stb
c1228231 5656
e7448859
MIP
5657(define-public nudoku
5658 (package
5659 (name "nudoku")
5660 (version "1.0.0")
5661 (source (origin
5662 (method url-fetch)
5663 (uri (string-append "https://github.com/jubalh/nudoku/"
5664 "releases/download/" version
5665 "/nudoku-" version ".tar.xz"))
5666 (sha256
5667 (base32
5668 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5669 (build-system gnu-build-system)
5670 (inputs `(("ncurses" ,ncurses)))
5671 (home-page "https://jubalh.github.io/nudoku/")
5672 (synopsis "Sudoku for your terminal")
5673 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5674 (license license:gpl3+)))
5675
c1228231
NG
5676(define-public the-butterfly-effect
5677 (package
5678 (name "the-butterfly-effect")
5679 (version "0.9.3.1")
5680 (source
5681 (origin
089c6b00
EF
5682 (method git-fetch)
5683 (uri (git-reference
5684 (url "https://github.com/the-butterfly-effect/tbe.git")
5685 (commit (string-append "v" version))))
5686 (file-name (git-file-name name version))
c1228231
NG
5687 (sha256
5688 (base32
089c6b00 5689 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5690 (build-system gnu-build-system)
5691 (arguments
5692 `(#:phases
5693 (modify-phases %standard-phases
5694 (delete 'configure)
5695 ;; There is no "install" phase. By default, tbe is installed
5696 ;; in the build directory. Provide our own installation.
5697 (replace 'install
5698 (lambda* (#:key outputs #:allow-other-keys)
5699 (let* ((out (assoc-ref outputs "out"))
5700 (bin (string-append out "/bin"))
5701 (share (string-append out "/share")))
5702 (install-file "usr/games/tbe" bin)
5703 (mkdir-p share)
5704 (copy-recursively "usr/share" share)
5705 #t))))
5706 ;; Test suite requires a running Xorg server. Even when
5707 ;; provided, it fails with "D-Bus library appears to be
5708 ;; incorrectly set up; failed to read machine uuid: Failed to
5709 ;; open "/etc/machine-id": No such file or directory" along
5710 ;; with multiple "QPainter:: ... Painter not active" warnings.
5711 #:tests? #f))
5712 (inputs
5713 `(("qtbase" ,qtbase)
5714 ("qtsvg" ,qtsvg)))
5715 (native-inputs
c69959f0 5716 `(("cmake" ,cmake-minimal)
c1228231
NG
5717 ("gettext-minimal" ,gettext-minimal)
5718 ("qttools" ,qttools)))
5719 (synopsis "Realistic physics puzzle game")
5720 (description "The Butterfly Effect (tbe) is a game that uses
5721realistic physics simulations to combine lots of simple mechanical
5722elements to achieve a simple goal in the most complex way possible.")
5723 (home-page "http://the-butterfly-effect.org/")
5724 ;; Main license is GPL2-only. However, artwork is distributed
5725 ;; under various licenses, listed here.
5726 (license (list license:gpl2 license:public-domain license:expat
5727 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5728
5729(define-public pioneer
5730 (package
5731 (name "pioneer")
8f33b76e 5732 (version "20200203")
aac1aa75 5733 (source (origin
6a03ccf4
EB
5734 (method git-fetch)
5735 (uri (git-reference
5736 (url "https://github.com/pioneerspacesim/pioneer.git")
5737 (commit version)))
5738 (file-name (git-file-name name version))
aac1aa75
EB
5739 (sha256
5740 (base32
8f33b76e 5741 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 5742 (build-system cmake-build-system)
aac1aa75 5743 (native-inputs
ed3e7b72 5744 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5745 (inputs
5746 `(("assimp" ,assimp)
5747 ("curl" ,curl)
5748 ("freetype" ,freetype)
ed3e7b72 5749 ("glew" ,glew)
aac1aa75
EB
5750 ("glu" ,glu)
5751 ("libpng" ,libpng)
5752 ("libsigc++" ,libsigc++)
5753 ("libvorbis" ,libvorbis)
5754 ("lua" ,lua-5.2) ;not compatible with 5.3
5755 ("mesa" ,mesa)
5756 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5757 (arguments
5758 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5759 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5760 (string-append "-DPIONEER_DATA_DIR="
5761 %output "/share/games/pioneer"))))
61d399c5 5762 (home-page "https://pioneerspacesim.net")
aac1aa75
EB
5763 (synopsis "Game of lonely space adventure")
5764 (description
5765 "Pioneer is a space adventure game set in our galaxy at the turn of the
576631st century. The game is open-ended, and you are free to eke out whatever
5767kind of space-faring existence you can think of. Look for fame or fortune by
5768exploring the millions of star systems. Turn to a life of crime as a pirate,
5769smuggler or bounty hunter. Forge and break alliances with the various
5770factions fighting for power, freedom or self-determination. The universe is
5771whatever you make of it.")
5772 (license license:gpl3)))
57f9671d 5773
5774(define-public badass
5775 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5776 (revision "0"))
5777 (package
5778 (name "badass")
5779 (version (git-version "0.0" revision commit))
5780 (source (origin
5781 (method git-fetch)
5782 (uri (git-reference
5783 (url "https://github.com/umayr/badass.git")
5784 (commit commit)))
5785 (file-name (git-file-name name version))
5786 (sha256
5787 (base32
5788 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5789 (build-system go-build-system)
5790 (arguments
5791 '(#:import-path "github.com/umayr/badass"))
5792 (synopsis "Hacking contribution graphs in git")
5793 (description
5794 "Badass generates false commits for a range of dates, essentially
5795hacking the gamification of contribution graphs on platforms such as
5796Github or Gitlab.")
5797 (home-page "https://github.com/umayr/badass")
5798 (license license:expat))))
fa7d8ea1
NG
5799
5800(define-public colobot
5801 (package
5802 (name "colobot")
2dad4c91 5803 (version "0.1.12-alpha")
fa7d8ea1
NG
5804 (source
5805 (origin
2dad4c91
NG
5806 (method git-fetch)
5807 (uri (git-reference
5808 (url "https://github.com/colobot/colobot.git")
5809 (commit (string-append "colobot-gold-" version))
5810 (recursive? #t))) ;for "data/" subdir
5811 (file-name (git-file-name name version))
fa7d8ea1
NG
5812 (sha256
5813 (base32
2dad4c91 5814 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5815 (build-system cmake-build-system)
5816 (arguments
5817 `(#:tests? #f ;no test
5818 #:phases
5819 (modify-phases %standard-phases
2dad4c91
NG
5820 (add-after 'unpack 'make-git-checkout-writable
5821 (lambda _
5822 (for-each make-file-writable (find-files "."))
5823 #t))
5824 (add-after 'unpack 'fix-directories
5825 (lambda _
5826 (substitute* "CMakeLists.txt"
5827 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5828 (string-append prefix "/bin"))
5829 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5830 (string-append prefix "/colobot")))
5831 #t))
5832 (add-after 'fix-directories 'install-music
5833 ;; Retrieve and install music files.
fa7d8ea1
NG
5834 (lambda* (#:key inputs #:allow-other-keys)
5835 ;; Installation process tries to download music files using
2dad4c91
NG
5836 ;; "wget" if not already present. Since we are going another
5837 ;; route, skip "wget" command check.
fa7d8ea1
NG
5838 (substitute* "data/music/CMakeLists.txt"
5839 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5840 ;; Populate "music/" directory.
fa7d8ea1 5841 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5842 (invoke "tar" "-xvf" data "-Cdata/music"))
5843 #t)))))
fa7d8ea1 5844 (native-inputs
2dad4c91 5845 `(("colobot-music"
fa7d8ea1
NG
5846 ,(origin
5847 (method url-fetch)
5848 (uri (string-append "https://colobot.info/files/music/"
5849 "colobot-music_ogg_" version ".tar.gz"))
5850 (sha256
5851 (base32
5852 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5853 ("gettext" ,gettext-minimal)
5854 ("librsvg" ,librsvg)
5855 ("po4a" ,po4a)
5856 ("python" ,python-wrapper)))
5857 (inputs
5858 `(("boost" ,boost)
5859 ("glew" ,glew)
5860 ("libogg" ,libogg)
5861 ("libpng" ,libpng)
5862 ("libsndfile" ,libsndfile)
5863 ("libvorbis" ,libvorbis)
5864 ("openal" ,openal)
5865 ("physfs" ,physfs)
5866 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5867 (synopsis "Educational programming strategy game")
5868 (description "Colobot: Gold Edition is a real-time strategy game, where
5869you can program your units (bots) in a language called CBOT, which is similar
5870to C++ and Java. Your mission is to find a new planet to live and survive.
5871You can save humanity and get programming skills!")
5872 (home-page "https://colobot.info")
5873 (license license:gpl3+)))
2922852e 5874
5875(define-public gzdoom
5876 (package
5877 (name "gzdoom")
570b89f4
TGR
5878 (version "4.3.2")
5879 (source
5880 (origin
5881 (method git-fetch)
5882 (uri (git-reference
5883 (url "https://github.com/coelckers/gzdoom.git")
5884 (commit (string-append "g" version))))
5885 (file-name (git-file-name name version))
5886 (sha256
5887 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5888 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5889 "gzdoom-find-system-libgme.patch"))
5890 (modules '((guix build utils)))
5891 (snippet
5892 '(begin
5893 ;; Remove some bundled libraries. XXX There are more, but removing
5894 ;; them would require, at least, patching the build system.
5895 (with-directory-excursion "libraries"
5896 (delete-file-recursively "bzip2")
5897 (delete-file-recursively "game-music-emu")
5898 (delete-file-recursively "jpeg")
5899 (delete-file-recursively "zlib"))
5900 #t))))
2922852e 5901 (arguments
5902 '(#:tests? #f
5903 #:configure-flags
5904 (let ((out (assoc-ref %outputs "out")))
5905 (list
5906 (string-append
5907 "-DCMAKE_CXX_FLAGS:="
5908 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5909 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
5910
5911 ;; The build requires some extra convincing not to use the bundled
5912 ;; libgme previously deleted in the soure snippet.
5913 "-DFORCE_INTERNAL_GME=OFF"
5914
5915 ;; Link libraries at build time instead of loading them at run time.
2922852e 5916 "-DDYN_OPENAL=OFF"
5917 "-DDYN_FLUIDSYNTH=OFF"
5918 "-DDYN_GTK=OFF"
5919 "-DDYN_MPG123=OFF"
5920 "-DDYN_SNDFILE=OFF"))
5921 #:phases
5922 (modify-phases %standard-phases
5923 (add-before 'configure 'fix-referenced-paths
5924 (lambda* (#:key inputs outputs #:allow-other-keys)
5925 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5926 (timidity++ (assoc-ref inputs "timidity++"))
5927 (out (assoc-ref outputs "out")))
5928
5929 (substitute*
5930 "src/CMakeLists.txt"
5931 (("COMMAND /bin/sh")
5932 (string-append "COMMAND " (which "sh"))))
5933
5934 (substitute*
570b89f4 5935 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 5936 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5937 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5938
5939 (substitute*
570b89f4 5940 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 5941 (("exename = \"timidity\"")
5942 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5943 #t))))))
5944 (build-system cmake-build-system)
5945 (inputs `(("bzip2" ,bzip2)
5946 ("fluid-3" ,fluid-3)
570b89f4 5947 ("fluidsynth" ,fluidsynth)
2922852e 5948 ("gtk+3" ,gtk+)
5949 ("libgme" ,libgme)
5950 ("libjpeg" ,libjpeg)
5951 ("libsndfile" ,libsndfile)
5952 ("mesa" ,mesa)
5953 ("mpg123" ,mpg123)
5954 ("openal" ,openal)
5955 ("sdl2" ,sdl2)
5956 ("timidity++" ,timidity++)
5957 ("zlib" ,zlib)))
5958 (native-inputs `(("pkg-config" ,pkg-config)
5959 ("unzip" ,unzip)))
5960 (synopsis "Modern Doom 2 source port")
5961 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5962renderer. It improves modding support with ZDoom's advanced mapping features
5963and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5964Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5965 (home-page "https://zdoom.org/index")
642b195a
EF
5966 ;; The source uses x86 assembly
5967 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5968 (license (list license:gpl3+ ; gzdoom game
5969 license:lgpl3+ ; gzdoom renderer
5970 license:expat ; gdtoa
5971 (license:non-copyleft ; modified dumb
5972 "file://dumb/licence.txt"
5973 "Dumb license, explicitly GPL compatible.")))))
b1642338 5974
6f565d6c
P
5975(define-public odamex
5976 (package
5977 (name "odamex")
5448b16e 5978 (version "0.8.1")
6f565d6c
P
5979 (source
5980 (origin
5981 (method url-fetch)
5982 (uri (string-append
5983 "mirror://sourceforge/odamex/Odamex/" version "/"
5984 "odamex-src-" version ".tar.gz"))
5985 (sha256
5448b16e 5986 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 5987 (build-system cmake-build-system)
5448b16e 5988 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
5989 (inputs
5990 `(("sdl" ,sdl)
5991 ("sdl-mixer" ,sdl-mixer)
5992 ("zlib" ,zlib)
5993 ("libpng" ,libpng)
5994 ("alsa-lib" ,alsa-lib)))
5995 (home-page "https://odamex.net/")
5996 (synopsis "Multiplayer Doom port")
5997 (description "Odamex is a modification of the Doom engine that
5998allows players to easily join servers dedicated to playing Doom
5999online.")
6000 (license license:gpl2+)))
6001
fc16bbb7
JK
6002(define-public chocolate-doom
6003 (package
6004 (name "chocolate-doom")
6005 (version "3.0.0")
6006 (source (origin
6007 (method url-fetch)
6008 (uri (string-append "https://www.chocolate-doom.org/downloads/"
6009 version
6010 "/chocolate-doom-"
6011 version
6012 ".tar.gz"))
6013 (sha256
6014 (base32
6015 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
6016 (build-system gnu-build-system)
6017 (inputs `(("sdl2-net" ,sdl2-net)
6018 ("sdl2-mixer" , sdl2-mixer)
6019 ("sdl2" ,sdl2)))
6020 (native-inputs
6021 `(("pkg-config" ,pkg-config)))
6022 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
6023Doom")
6024 (description
6025 "Chocolate Doom takes a different approach to other source ports. Its
6026aim is to accurately reproduce the experience of playing Vanilla Doom. It is
6027a conservative, historically accurate Doom source port, which is compatible
6028with the thousands of mods and levels that were made before the Doom source
6029code was released. Rather than flashy new graphics, Chocolate Doom's main
6030features are its accurate reproduction of the game as it was played in the
60311990s. The project is developed around a carefully-considered philosophy that
6032intentionally restricts which features may be added (and rejects any that
6033affect gameplay).")
6034 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
6035 (license license:gpl2)))
6036
3f9a027c
DF
6037(define-public crispy-doom
6038 (package
6039 (inherit chocolate-doom)
6040 (name "crispy-doom")
e884c205 6041 (version "5.7.1")
3f9a027c
DF
6042 (source (origin
6043 (method git-fetch)
6044 (uri (git-reference
6045 (url "https://github.com/fabiangreffrath/crispy-doom.git")
6046 (commit (string-append "crispy-doom-" version))))
6047 (file-name (git-file-name name version))
6048 (sha256
e884c205 6049 (base32 "1gqivy4pxasy7phyznixsagylf9f70bk33b0knpfzzlks6cc6zzj"))))
3f9a027c
DF
6050 (native-inputs
6051 (append
6052 (package-native-inputs chocolate-doom)
6053 `(("automake" ,automake)
6054 ("autoreconf" ,autoconf))))
6055 (arguments
6056 `(#:phases
6057 (modify-phases %standard-phases
6058 (replace 'bootstrap
17cb06a6 6059 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
6060 (lambda _ (invoke "autoreconf" "-vif"))))))
6061 (synopsis "Limit-removing enhanced-resolution Doom source port based on
6062Chocolate Doom")
6063 (description
6064 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
6065display resolution, removes the static limits of the Doom engine and offers
6066further optional visual, tactical and physical enhancements while remaining
6067entirely config file, savegame, netplay and demo compatible with the
6068original.")
6069 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
6070
64b47a29
OP
6071(define shlomif-cmake-modules
6072 (origin
6073 (method url-fetch)
6074 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
6075 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
6076 "shlomif-cmake-modules/Shlomif_Common.cmake"))
6077 (sha256
6078 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
6079
6080(define-public rinutils
6081 (package
6082 (name "rinutils")
6083 (version "0.2.0")
6084 (source (origin
6085 (method git-fetch)
6086 (uri (git-reference
6087 (url "https://github.com/shlomif/rinutils.git")
6088 (commit version)))
6089 (file-name (git-file-name name version))
6090 (sha256
6091 (base32
6092 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
6093 (native-inputs
6094 `(("perl" ,perl)
6095 ;; The following is only needed for tests.
6096 ("perl-file-find-object" ,perl-file-find-object)
6097 ("perl-test-differences" ,perl-test-differences)
6098 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6099 ("perl-io-all" ,perl-io-all)
6100 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6101 ("cmake-rules" ,shlomif-cmake-modules)
6102 ("pkg-config" ,pkg-config)))
6103 (inputs
6104 `(("cmocka" ,cmocka)
6105 ("perl-env-path", perl-env-path)
6106 ("perl-inline" ,perl-inline)
6107 ("perl-inline-c" ,perl-inline-c)
6108 ("perl-string-shellquote" ,perl-string-shellquote)
6109 ("perl-test-trailingspace" ,perl-test-trailingspace)
6110 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6111 ("perl-text-glob" ,perl-text-glob)
6112 ("perl-number-compare" ,perl-number-compare)
6113 ("perl-moo" ,perl-moo)))
6114 (arguments
6115 `(#:phases
6116 (modify-phases %standard-phases
6117 (add-after 'unpack 'fix-build-env
6118 (lambda* (#:key inputs #:allow-other-keys)
6119 (use-modules (guix build utils))
6120 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6121 (copy-file cmake-rules
6122 (string-append "cmake/"
6123 (strip-store-file-name cmake-rules)))
6124 #t)))
6125 (replace 'check
6126 (lambda _
6127 (with-directory-excursion "../source"
6128 (setenv "FCS_TEST_BUILD" "1")
6129 (setenv "RINUTILS_TEST_BUILD" "1")
6130 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6131 ;; which requires tidy-all.
6132 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6133 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6134 (build-system cmake-build-system)
6135 (home-page "https://www.shlomifish.org/open-source/projects/")
6136 (synopsis "C11 / gnu11 utilities C library")
6137 (description "This package provides C11 / gnu11 utilities C library")
6138 (license license:expat)))
6139
b1642338
PN
6140(define-public fortune-mod
6141 (package
6142 (name "fortune-mod")
815e12f3 6143 (version "2.12.0")
7e1d376d
TGR
6144 (source
6145 (origin
6146 (method git-fetch)
6147 (uri (git-reference
6148 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 6149 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
6150 (file-name (git-file-name name version))
6151 (sha256
6152 (base32
815e12f3 6153 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
b1642338
PN
6154 (build-system cmake-build-system)
6155 (arguments
6156 `(#:test-target "check"
6157 #:phases
6158 (modify-phases %standard-phases
6159 (add-after 'unpack 'fix-build-env
6160 (lambda* (#:key inputs #:allow-other-keys)
6161 (use-modules (guix build utils))
6162 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6163 (copy-file cmake-rules
6164 (string-append "fortune-mod/cmake/"
6165 (strip-store-file-name cmake-rules)))
abf06df2 6166 (chdir "fortune-mod")
61857323
PN
6167 ;; TODO: Valgrind tests fail for some reason.
6168 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6169 (delete-file "tests/t/valgrind.t")
abf06df2 6170 #t)))
b1642338 6171 (add-after 'install 'fix-install-directory
b1642338 6172 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
6173 ;; Move binary from "games/" to "bin/" and remove the latter. This
6174 ;; is easier than patching CMakeLists.txt since the tests hard-code
6175 ;; the location as well.
6176 (let* ((out (assoc-ref outputs "out"))
6177 (bin (string-append out "/bin"))
6178 (games (string-append out "/games")))
6179 (rename-file (string-append games "/fortune")
6180 (string-append bin "/fortune"))
6181 (rmdir games)
b1642338
PN
6182 #t))))))
6183 (inputs `(("recode" ,recode)))
6184 (native-inputs
6185 `(("perl" ,perl)
6186 ;; The following is only needed for tests.
6187 ("perl-file-find-object" ,perl-file-find-object)
6188 ("perl-test-differences" ,perl-test-differences)
6189 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6190 ("perl-io-all" ,perl-io-all)
6191 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
6192 ("cmake-rules" ,shlomif-cmake-modules)
6193 ("rinutils" ,rinutils)))
6ef143ef 6194 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
b1642338
PN
6195 (synopsis "The Fortune Cookie program from BSD games")
6196 (description "Fortune is a command-line utility which displays a random
6197quotation from a collection of quotes.")
6198 (license license:bsd-4)))
dc70ff2a 6199
6200(define xonotic-data
6201 (package
6202 (name "xonotic-data")
6203 (version "0.8.2")
6204 (source
6205 (origin
6206 (method url-fetch)
6207 (uri (string-append "http://dl.xonotic.org/xonotic-"
6208 version ".zip"))
6209 (file-name (string-append name "-" version ".zip"))
6210 (sha256
6211 (base32
6212 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6213 (build-system trivial-build-system)
6214 (native-inputs
6215 `(("unzip" ,unzip)))
6216 (arguments
6217 `(#:modules ((guix build utils))
6218 #:builder
6219 (begin
6220 (use-modules (guix build utils))
6221 (let* ((out (assoc-ref %outputs "out"))
6222 (xonotic (string-append out "/share/xonotic"))
6223 (source (assoc-ref %build-inputs "source"))
6224 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6225 (copy-file source (string-append ,name "-" ,version ".zip"))
6226 (invoke unzip (string-append ,name "-" ,version ".zip"))
6227 (mkdir-p out)
6228 (mkdir-p xonotic)
6229 (chdir "Xonotic")
6230 (copy-recursively "data"
6231 (string-append xonotic "/data"))
6232 (copy-recursively "server"
6233 (string-append xonotic "/server"))
6234 (install-file "key_0.d0pk" xonotic)))))
6235 (home-page "http://xonotic.org")
6236 (synopsis "Data files for Xonotic")
6237 (description
6238 "Xonotic-data provides the data files required by the game Xonotic.")
6239 (license (list license:gpl2+
9b9db6c4 6240 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 6241
6242(define-public xonotic
6243 (package
6244 (name "xonotic")
6245 (version "0.8.2")
6246 (source
6247 (origin
6248 (method url-fetch)
6249 (uri (string-append "http://dl.xonotic.org/xonotic-"
6250 version "-source.zip"))
6251 (file-name (string-append name "-" version ".zip"))
6252 (sha256
6253 (base32
6254 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6255 (build-system gnu-build-system)
6256 (arguments
6257 `(#:configure-flags (list (string-append "--prefix="
6258 (assoc-ref %outputs "out"))
6259 "--disable-rijndael")
6260 #:phases
6261 (modify-phases %standard-phases
6262 (add-before 'configure 'make-darkplaces
6263 (lambda* (#:key outputs #:allow-other-keys)
6264 (let* ((out (assoc-ref outputs "out"))
6265 (sharedir (string-append out "/share/xonotic/")))
6266 (invoke "make" "-C" "source/darkplaces"
6267 (string-append "DP_FS_BASEDIR="
6268 sharedir)
6269 "DP_LINK_TO_LIBJPEG=1"
6270 "DP_SOUND_API=ALSA"
6271 "CC=gcc"
6272 "-f" "makefile"
6273 "cl-release")
6274 (invoke "make" "-C" "source/darkplaces"
6275 (string-append "DP_FS_BASEDIR="
6276 sharedir)
6277 "DP_LINK_TO_LIBJPEG=1"
6278 "DP_SOUND_API=ALSA"
6279 "CC=gcc"
6280 "-f" "makefile"
6281 "sdl-release")
6282 (invoke "make" "-C" "source/darkplaces"
6283 (string-append "DP_FS_BASEDIR="
6284 sharedir)
6285 "DP_LINK_TO_LIBJPEG=1"
6286 "DP_SOUND_API=ALSA"
6287 "CC=gcc"
6288 "-f" "makefile"
6289 "sv-release"))))
6290 (add-before 'configure 'bootstrap
6291 (lambda _
6292 (chdir "source/d0_blind_id")
6293 (invoke "sh" "autogen.sh")))
6294 (add-after 'build 'install-desktop-entry
6295 (lambda* (#:key outputs #:allow-other-keys)
6296 ;; Add .desktop files for the 2 variants and the symlink
6297 (let* ((output (assoc-ref outputs "out"))
6298 (apps (string-append output "/share/applications")))
6299 (mkdir-p apps)
6300 (with-output-to-file
6301 (string-append apps "/xonotic-glx.desktop")
6302 (lambda _
6303 (format #t
6304 "[Desktop Entry]~@
6305 Name=xonotic-glx~@
6306 Comment=Xonotic glx~@
6307 Exec=~a/bin/xonotic-glx~@
6308 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6309 Icon=xonotic~@
6310 Categories=Game~@
dc70ff2a 6311 Type=Application~%"
6312 output)))
6313 (with-output-to-file
6314 (string-append apps "/xonotic-sdl.desktop")
6315 (lambda _
6316 (format #t
6317 "[Desktop Entry]~@
6318 Name=xonotic-sdl~@
6319 Comment=Xonotic sdl~@
6320 Exec=~a/bin/xonotic-sdl~@
6321 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6322 Icon=xonotic~@
6323 Categories=Game~@
dc70ff2a 6324 Type=Application~%"
6325 output)))
6326 (with-output-to-file
6327 (string-append apps "/xonotic.desktop")
6328 (lambda _
6329 (format #t
6330 "[Desktop Entry]~@
6331 Name=xonotic~@
6332 Comment=Xonotic~@
6333 Exec=~a/bin/xonotic-glx~@
6334 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6335 Icon=xonotic~@
6336 Categories=Game~@
dc70ff2a 6337 Type=Application~%"
6338 output)))
6339 #t)))
6340 (add-after 'install-desktop-entry 'install-icons
6341 (lambda* (#:key outputs #:allow-other-keys)
6342 (let ((out (assoc-ref outputs "out")))
6343 (with-directory-excursion "../../misc/logos/icons_png/"
6344 (for-each
6345 (lambda (file)
6346 (let* ((size (string-filter char-numeric? file))
6347 (icons (string-append out "/share/icons/hicolor/"
6348 size "x" size "/apps")))
6349 (mkdir-p icons)
6350 (copy-file file (string-append icons "/xonotic.png"))))
6351 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6352 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6353 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6354 (add-after 'install-icons 'install-binaries
6355 (lambda* (#:key outputs #:allow-other-keys)
6356 (let ((out (assoc-ref outputs "out")))
6357 (define (install src dst)
6358 (let ((dst (string-append out dst)))
6359 (mkdir-p (dirname dst))
6360 (copy-file src dst)))
6361 (mkdir-p (string-append out "/bin"))
6362 (install "../darkplaces/darkplaces-dedicated"
6363 "/bin/xonotic-dedicated")
6364 (install "../darkplaces/darkplaces-glx"
6365 "/bin/xonotic-glx")
6366 (install "../darkplaces/darkplaces-sdl"
6367 "/bin/xonotic-sdl")
6368 ;; Provide a default xonotic executable, defaulting to SDL.
6369 (symlink (string-append out "/bin/xonotic-sdl")
6370 (string-append out "/bin/xonotic"))
6371 #t)))
6372 (add-after 'install-binaries 'install-data
6373 (lambda* (#:key outputs inputs #:allow-other-keys)
6374 (let* ((out (assoc-ref outputs "out"))
6375 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6376 (symlink (string-append data "/share/xonotic")
6377 (string-append out "/share/xonotic"))
dc70ff2a 6378 #t)))
6379 (add-after 'install-binaries 'wrap-binaries
6380 (lambda* (#:key outputs inputs #:allow-other-keys)
6381 ;; Curl and libvorbis need to be wrapped so that we get
6382 ;; sound and networking.
6383 (let* ((out (assoc-ref outputs "out"))
6384 (bin (string-append out "/bin/xonotic"))
6385 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6386 (bin-glx (string-append out "/bin/xonotic-glx"))
6387 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6388 (curl (assoc-ref inputs "curl"))
6389 (vorbis (assoc-ref inputs "libvorbis")))
6390 (wrap-program bin
6391 `("LD_LIBRARY_PATH" ":" prefix
6392 (,(string-append curl "/lib:" vorbis "/lib"))))
6393 (wrap-program bin-sdl
6394 `("LD_LIBRARY_PATH" ":" prefix
6395 (,(string-append curl "/lib:" vorbis "/lib"))))
6396 (wrap-program bin-glx
6397 `("LD_LIBRARY_PATH" ":" prefix
6398 (,(string-append curl "/lib:" vorbis "/lib"))))
6399 (wrap-program bin-dedicated
6400 `("LD_LIBRARY_PATH" ":" prefix
6401 (,(string-append curl "/lib:" vorbis "/lib"))))
6402 #t))))))
6403 (inputs
6404 `(("xonotic-data" ,xonotic-data)
6405 ("alsa-lib" ,alsa-lib)
6406 ("curl" ,curl)
6407 ("libjpeg" ,libjpeg)
6408 ("libmodplug" ,libmodplug)
6409 ("libvorbis" ,libvorbis)
6410 ("libogg" ,libogg)
6411 ("libxpm" ,libxpm)
6412 ("libxxf86dga" ,libxxf86dga)
6413 ("libxxf86vm" ,libxxf86vm)
6414 ("libx11" ,libx11)
6415 ("libxext" ,libxext)
6416 ("libxau" ,libxau)
6417 ("libxdmcp" ,libxdmcp)
6418 ("mesa" ,mesa)
6419 ("glu" ,glu)
6420 ("freetype" ,freetype)
6421 ("sdl2" ,sdl2)
6422 ("libpng" ,libpng)
6423 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6424 (native-inputs
6425 `(("unzip" ,unzip)
6426 ("autoconf" ,autoconf)
6427 ("automake" ,automake)
6428 ("pkg-config" ,pkg-config)
6429 ("libtool" ,libtool)
6430 ("gmp" ,gmp)))
6431 (home-page "http://xonotic.org")
6432 (synopsis "Fast-paced first-person shooter game")
6433 (description
6434 "Xonotic is a free, fast-paced first-person shooter.
6435The project is geared towards providing addictive arena shooter
6436gameplay which is all spawned and driven by the community itself.
6437Xonotic is a direct successor of the Nexuiz project with years of
6438development between them, and it aims to become the best possible
6439open-source FPS of its kind.")
6440 (license (list license:gpl2+
6441 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6442 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6443
6444(define-public frotz
6445 (package
6446 (name "frotz")
6447 (version "2.44")
6448 (source (origin
6449 (method url-fetch)
6450 (uri (list (string-append
6451 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6452 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6453 (string-append
6454 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6455 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6456 (sha256
6457 (base32
6458 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6459 (build-system gnu-build-system)
6460 (arguments
6461 `(#:tests? #f ; there are no tests
6462 #:phases
6463 (modify-phases %standard-phases
6464 (delete 'configure)
6465 (add-before 'build 'curses
6466 (lambda _
6467 (substitute* "Makefile"
6468 (("lcurses") "lncurses"))
6469 #t))
6470 (replace 'install
6471 (lambda* (#:key outputs #:allow-other-keys)
6472 (let* ((out (assoc-ref outputs "out"))
6473 (bin (string-append out "/bin"))
6474 (man (string-append out "/share/man/man6")))
6475 (install-file "frotz" bin)
6476 (mkdir-p man)
6477 (install-file "doc/frotz.6" man)
6478 #t))))))
6479 (inputs `(("libmodplug" ,libmodplug)
6480 ("libsamplerate" ,libsamplerate)
6481 ("libsndfile" ,libsndfile)
6482 ("libvorbis" ,libvorbis)
6483 ("ncurses" ,ncurses)))
6484 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6485 (description "Frotz is an interpreter for Infocom games and other Z-machine
6486games in the text adventure/interactive fiction genre. This version of Frotz
6487complies with standard 1.0 of Graham Nelson's specification. It plays all
6488Z-code games V1-V8, including V6, with sound support through libao, and uses
6489ncurses for text display.")
6490 (home-page "http://frotz.sourceforge.net")
6491 (license license:gpl2+)))
6492
6493(define-public frotz-dumb-terminal
6494 (package
6495 (name "frotz-dumb-terminal")
6496 (version "2.44")
6497 (source (origin
6498 (method url-fetch)
6499 (uri (list (string-append
6500 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6501 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6502 (string-append
6503 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6504 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6505 (sha256
6506 (base32
6507 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6508 (build-system gnu-build-system)
6509 (arguments
6510 `(#:tests? #f ; there are no tests
6511 #:phases
6512 (modify-phases %standard-phases
6513 (delete 'configure)
6514 (replace 'build
6515 (lambda _
6516 (invoke "make" "dumb")))
6517 (replace 'install
6518 (lambda* (#:key outputs #:allow-other-keys)
6519 (let* ((out (assoc-ref outputs "out"))
6520 (bin (string-append out "/bin"))
6521 (man (string-append out "/share/man/man6")))
6522 (install-file "dfrotz" bin)
6523 (mkdir-p man)
6524 (install-file "doc/dfrotz.6" man)
6525 #t))))))
6526 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6527 (description "Frotz is an interpreter for Infocom games and
6528other Z-machine games in the text adventure/interactive fiction genre.
6529dfrotz is the dumb interface version. You get no screen control; everything
6530is just printed to the terminal line by line. The terminal handles all the
6531scrolling. Maybe you'd like to experience what it's like to play Adventure on
6532a teletype. A much cooler use for compiling Frotz with the dumb interface is
6533that it can be wrapped in CGI scripting, PHP, and the like to allow people
6534to play games on webpages. It can also be made into a chat bot.")
6535 (home-page "http://frotz.sourceforge.net")
6536 (license license:gpl2+)))
6537
6538(define-public frotz-sdl
6539 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6540 (package
6541 (name "frotz-sdl")
6542 (version "2.45pre")
6543 (source (origin
6544 (method git-fetch)
6545 (uri (git-reference
6546 (url "https://gitlab.com/DavidGriffith/frotz")
6547 (commit commit)))
6548 (sha256
6549 (base32
6550 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6551 (file-name (git-file-name name version))))
6552 (build-system gnu-build-system)
6553 (arguments
6554 `(#:tests? #f ; there are no tests
6555 #:phases
6556 (modify-phases %standard-phases
6557 (delete 'configure)
6558 (add-before 'build 'patch-makefile
6559 (lambda _
6560 (substitute* "Makefile"
6561 (("lcurses") "lncurses")
6562 (("^BUILD_DATE_TIME =.*$")
6563 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6564 #t))
6565 (replace 'build
6566 (lambda _
6567 (invoke "make" "sdl")))
6568 (replace 'install
6569 (lambda* (#:key outputs #:allow-other-keys)
6570 (let* ((out (assoc-ref outputs "out"))
6571 (bin (string-append out "/bin"))
6572 (man (string-append out "/share/man/man6")))
6573 (install-file "sfrotz" bin)
6574 (mkdir-p man)
6575 (install-file "doc/sfrotz.6" man)
6576 #t))))))
6577 (native-inputs
6578 `(("pkg-config" ,pkg-config)
6579 ("which" ,which)
6580 ("perl" ,perl)))
6581 (inputs `(("sdl2" ,sdl2)
6582 ("sdl2-mixer" ,sdl2-mixer)
6583 ("libmodplug" ,libmodplug)
6584 ("libsamplerate" ,libsamplerate)
6585 ("libsndfile" ,libsndfile)
6586 ("libvorbis" ,libvorbis)
6587 ("ncurses" ,ncurses)
6588 ("freetype" ,freetype)
6589 ("libjpeg-turbo" ,libjpeg-turbo)))
6590 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6591 (description "Frotz is an interpreter for Infocom games and other Z-machine
6592games in the text adventure/interactive fiction genre. This version of Frotz
6593using SDL fully supports all these versions of the Z-Machine including the
6594graphical version 6. Graphics and sound are created through the use of the SDL
6595libraries. AIFF sound effects and music in MOD and OGG formats are supported
6596when packaged in Blorb container files or optionally from individual files.")
6597 (home-page "http://frotz.sourceforge.net")
6598 (license license:gpl2+))))
18ebaa9e
EB
6599
6600(define-public libmanette
6601 (package
6602 (name "libmanette")
737e32a4 6603 (version "0.2.3")
18ebaa9e
EB
6604 (source (origin
6605 (method url-fetch)
5b35bdaa 6606 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6607 (version-major+minor version) "/"
5b35bdaa 6608 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6609 (sha256
6610 (base32
737e32a4 6611 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6612 (build-system meson-build-system)
6613 (native-inputs
6614 `(("glib" ,glib "bin") ; for glib-compile-resources
6615 ("gobject-introspection" ,gobject-introspection)
6616 ("pkg-config" ,pkg-config)
6617 ("vala" ,vala)))
6618 (inputs
6619 `(("libevdev" ,libevdev)
6620 ("libgudev" ,libgudev)))
6621 (home-page "https://wiki.gnome.org/Apps/Games")
6622 (synopsis "Game controller library")
6623 (description "Libmanette is a small GObject library giving you simple
6624access to game controllers. It supports the de-facto standard gamepads as
6625defined by the W3C standard Gamepad specification or as implemented by the SDL
6626GameController.")
6627 (license license:lgpl2.1+)))
39c676c4
EB
6628
6629(define-public quadrapassel
6630 (package
6631 (name "quadrapassel")
8a5bfb26 6632 (version "3.32.0")
39c676c4
EB
6633 (source (origin
6634 (method url-fetch)
49598564 6635 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6636 (version-major+minor version) "/"
49598564 6637 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6638 (sha256
6639 (base32
8a5bfb26
KK
6640 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6641 (build-system meson-build-system)
6642 (arguments
6643 '(#:glib-or-gtk? #t
6644 #:phases
6645 (modify-phases %standard-phases
6646 (add-after 'unpack 'skip-gtk-update-icon-cache
6647 ;; Don't create 'icon-theme.cache'.
6648 (lambda _
6649 (substitute* "build-aux/meson_post_install.py"
6650 (("gtk-update-icon-cache") (which "true")))
6651 #t)))))
39c676c4
EB
6652 (native-inputs
6653 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6654 ("gettext" ,gnu-gettext)
6655 ("glib" ,glib "bin") ;for glib-compile-resources
6656 ("itstool" ,itstool)
6657 ("libxml2" ,libxml2) ;for xmllint
6658 ("pkg-config" ,pkg-config)
6659 ("vala" ,vala)))
6660 (inputs
6661 `(("clutter" ,clutter)
6662 ("clutter-gtk" ,clutter-gtk)
6663 ("gtk+" ,gtk+)
6664 ("libcanberra" ,libcanberra)
6665 ("libmanette" ,libmanette)
6666 ("librsvg" ,librsvg)))
6667 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6668 (synopsis "GNOME version of Tetris")
6669 (description "Quadrapassel comes from the classic falling-block game,
6670Tetris. The goal of the game is to create complete horizontal lines of
6671blocks, which will disappear. The blocks come in seven different shapes made
6672from four blocks each: one straight, two L-shaped, one square, and two
6673S-shaped. The blocks fall from the top center of the screen in a random
6674order. You rotate the blocks and move them across the screen to drop them in
6675complete lines. You score by dropping blocks fast and completing lines. As
6676your score gets higher, you level up and the blocks fall faster.")
6677 (license license:gpl2+)))
560df540
EF
6678
6679(define-public endless-sky
6680 (package
6681 (name "endless-sky")
aa641984 6682 (version "0.9.10")
560df540
EF
6683 (source
6684 (origin
6685 (method git-fetch)
6686 (uri (git-reference
6687 (url "https://github.com/endless-sky/endless-sky")
6688 (commit (string-append "v" version))))
6689 (file-name (git-file-name name version))
6690 (sha256
6691 (base32
aa641984 6692 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6693 (build-system scons-build-system)
6694 (arguments
6695 `(#:scons ,scons-python2
6696 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6697 #:tests? #f ; no tests
6698 #:phases
6699 (modify-phases %standard-phases
6700 (add-after 'unpack 'patch-resource-locations
6701 (lambda* (#:key outputs #:allow-other-keys)
6702 (substitute* "source/Files.cpp"
6703 (("/usr/local/")
6704 (string-append (assoc-ref outputs "out") "/")))
6705 #t))
6706 (add-after 'unpack 'patch-scons
6707 (lambda _
6708 (substitute* "SConstruct"
6709 ;; Keep environmental variables
6710 (("Environment\\(\\)")
6711 "Environment(ENV = os.environ)")
6712 ;; Install into %out/bin
6713 (("games\"") "bin\""))
6714 #t)))))
6715 (inputs
6716 `(("glew" ,glew)
6717 ("libjpeg" ,libjpeg-turbo)
6718 ("libmad" ,libmad)
6719 ("libpng" ,libpng)
6720 ("openal" ,openal)
6721 ("sdl2" ,sdl2)))
6722 (home-page "https://endless-sky.github.io/")
6723 (synopsis "2D space trading and combat game")
6724 (description "Endless Sky is a 2D space trading and combat game. Explore
6725other star systems. Earn money by trading, carrying passengers, or completing
6726missions. Use your earnings to buy a better ship or to upgrade the weapons and
6727engines on your current one. Blow up pirates. Take sides in a civil war. Or
6728leave human space behind and hope to find friendly aliens whose culture is more
6729civilized than your own.")
6730 (license (list license:gpl3+
6731 license:cc-by-sa3.0
6732 license:cc-by-sa4.0
6733 license:public-domain))))
1faf0a04
NG
6734
6735(define-public stepmania
6736 (package
6737 (name "stepmania")
6738 (version "5.1.0-b2")
6739 (source
6740 (origin
6741 (method git-fetch)
6742 (uri (git-reference
6743 (url "https://github.com/stepmania/stepmania.git")
6744 (commit (string-append "v" version))))
6745 (file-name (git-file-name name version))
6746 (sha256
6747 (base32
6748 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6749 (modules '((guix build utils)))
6750 (snippet
6751 '(begin
6752 ;; Remove song files, which are licensed under a non-commercial
6753 ;; clause, and a course pointing to them.
6754 (for-each delete-file-recursively
6755 '("Songs/StepMania 5/Goin' Under"
6756 "Songs/StepMania 5/MechaTribe Assault"
6757 "Songs/StepMania 5/Springtime"))
6758 (for-each delete-file '("Courses/Default/Jupiter.crs"
6759 "Courses/Default/Jupiter.png"))
6760 ;; Unbundle libpng.
6761 (substitute* "extern/CMakeLists.txt"
6762 (("include\\(CMakeProject-png.cmake\\)") ""))
6763 (delete-file-recursively "extern/libpng")
6764 #t))))
6765 (build-system cmake-build-system)
6766 (arguments
6767 `(#:tests? #f ;FIXME: couldn't find how to run tests
6768 #:build-type "Release"
6769 #:out-of-source? #f ;for the 'install-desktop' phase
6770 #:configure-flags
6771 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6772 ;; SSE instructions are available on Intel systems only.
6773 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6774 (%current-system)))
6775 '("x64_64" "i686"))
6776 '()
6777 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6778 ;; Configuration cannot find GTK2 without the two following
6779 ;; flags.
6780 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6781 (assoc-ref %build-inputs "gtk+")
6782 "/lib/gtk-2.0/include")
6783 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6784 (assoc-ref %build-inputs "glib")
6785 "/lib/glib-2.0/include"))
6786 #:phases
6787 (modify-phases %standard-phases
47746772 6788 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6789 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6790 (let ((out (assoc-ref outputs "out")))
6791 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6792 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6793 (string-append "\"" out
6794 "/share/stepmania/GtkModule.so\"")))
6795 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6796 (("Root = sDirOfExecutable")
6797 (string-append "Root = \"" out "/share/stepmania/\""))
6798 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6799 (string-append "\"" out "/share/stepmania/" dir "\"")))
6800 (substitute* "src/RageFileManager.cpp"
6801 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6802 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6803 #t))
1faf0a04
NG
6804 (add-after 'unpack 'fix-install-subdir
6805 ;; Installation would be done in "%out/stepmania-X.Y", but we
6806 ;; prefer the more common layout "%out/share/stepmania".
6807 (lambda _
6808 (substitute* "src/CMakeLists.txt"
6809 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6810 #t))
6811 (add-after 'unpack 'unbundle-libpng
6812 (lambda* (#:key inputs #:allow-other-keys)
6813 (substitute* "src/CMakeLists.txt"
6814 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6815 (string-append (assoc-ref inputs "libpng") "/include")))
6816 #t))
6817 (add-after 'install 'install-executable
6818 (lambda* (#:key outputs #:allow-other-keys)
6819 (let* ((out (assoc-ref outputs "out"))
6820 (bin (string-append out "/bin"))
6821 (exe (string-append out "/share/stepmania/stepmania")))
6822 (mkdir-p bin)
6823 (symlink exe (string-append bin "/stepmania"))
6824 #t)))
6825 (add-after 'install-executable 'install-desktop
6826 (lambda* (#:key outputs #:allow-other-keys)
6827 (let* ((out (assoc-ref outputs "out"))
6828 (share (string-append out "/share"))
6829 (applications (string-append share "/applications"))
6830 (icons (string-append share "/icons")))
6831 (install-file "stepmania.desktop" applications)
6832 (mkdir-p icons)
6833 (copy-recursively "icons" icons)
6834 #t)))
6835 ;; Move documentation in a more usual place, i.e.,
6836 ;; "%out/share/doc/stepmania/".
6837 (add-after 'install-desktop 'install-doc
6838 (lambda* (#:key outputs #:allow-other-keys)
6839 (let* ((out (assoc-ref outputs "out"))
6840 (share (string-append out "/share")))
6841 (with-directory-excursion share
6842 (mkdir-p "doc")
6843 (symlink "../stepmania/Docs" "doc/stepmania"))
6844 #t))))))
6845 (native-inputs
6846 `(("pkg-config" ,pkg-config)
6847 ("yasm" ,yasm)))
6848 (inputs
6849 `(("alsa-lib" ,alsa-lib)
6850 ;; Per upstream, StepMania is only guaranteed to work with a very
6851 ;; specific FFmpeg version, which is included in the repository as
6852 ;; a Git submodule. This particular version requirement usually
6853 ;; changes every few years.
6854 ("ffmpeg" ,ffmpeg-for-stepmania)
6855 ("glib" ,glib)
6856 ("glew" ,glew)
6857 ("gtk+" ,gtk+-2)
6858 ("jsoncpp" ,jsoncpp)
6859 ("libpng" ,libpng)
96738cb1 6860 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
6861 ("libmad" ,libmad)
6862 ("libogg" ,libogg)
6863 ("libva" ,libva)
6864 ("libvorbis" ,libvorbis)
6865 ("libxinerama" ,libxinerama)
6866 ("libxrandr" ,libxrandr)
6867 ("mesa" ,mesa)
6868 ("pcre" ,pcre)
6869 ("pulseaudio" ,pulseaudio)
6870 ("sdl" ,sdl2)
6871 ("udev" ,eudev)
6872 ("zlib" ,zlib)))
6873 (synopsis "Advanced rhythm game designed for both home and arcade use")
6874 (description "StepMania is a dance and rhythm game. It features 3D
6875graphics, keyboard and dance pad support, and an editor for creating your own
6876steps.
6877
6878This package provides the core application, but no song is shipped. You need
6879to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6880 (home-page "https://www.stepmania.com")
6881 (license license:expat)))
6882
649220ad 6883(define-public btanks
ca32afac 6884 (package
649220ad 6885 (name "btanks")
ca32afac
RW
6886 (version "0.9.8083")
6887 (source
6888 (origin
6889 (method url-fetch)
6890 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6891 "btanks-" version ".tar.bz2"))
6892 (sha256
6893 (base32
6894 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6895 (build-system scons-build-system)
6896 (arguments
6897 `(#:tests? #f ; there are none
6898 #:scons ,scons-python2
6899 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6900 #:phases
6901 (modify-phases %standard-phases
6902 (add-after 'unpack 'replace-removed-scons-syntax
6903 (lambda _
6904 (substitute* "SConstruct"
6905 (("Options") "Variables")
6906 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6907 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6908 #t))
6909 (add-after 'set-paths 'set-sdl-paths
6910 (lambda* (#:key inputs #:allow-other-keys)
6911 (setenv "CPATH"
6912 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6913 "/include/SDL:"
6914 (or (getenv "CPATH") "")))
ca32afac
RW
6915 #t))
6916 (add-after 'unpack 'fix-compilation-errors
6917 (lambda _
6918 (substitute* "mrt/base_file.h"
6919 (("#include <string>" m)
6920 (string-append m "\n#include <sys/types.h>")))
6921 (substitute* '("engine/sl08/sl08.h"
6922 "engine/sl08/sl08.py")
6923 (("signal = NULL") "signal = 0")
6924 (("object\\(NULL\\)") "object(0)")
6925 (("func\\(NULL\\)") "func(0)")
6926 ((" connect\\(signal_ref\\)")
6927 " this->connect(signal_ref)"))
6928 (substitute* "math/range_list.h"
6929 ((" lower_bound\\(value\\)")
6930 " this->lower_bound(value)")
6931 ((" erase\\(i\\)")
6932 " this->erase(i)"))
6933 (substitute* "clunk/source.cpp"
6934 (("using namespace clunk" m)
6935 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6936 #t))
6937 (add-after 'unpack 'find-lua
6938 (lambda _
6939 (substitute* "engine/SConscript"
6940 (("lua5.1") "lua-5.1")
6941 (("bt_libs.append\\(lua\\)")
6942 "bt_libs.append(\"lua\")"))
6943 #t)))))
6944 (inputs
6945 `(("expat" ,expat)
6946 ("glu" ,glu)
6947 ("libsmpeg" ,libsmpeg-with-sdl1)
6948 ("libvorbis" ,libvorbis)
6949 ("lua51" ,lua-5.1)
6950 ("sdl" ,(sdl-union (list sdl
6951 sdl-mixer
6952 sdl-image
6953 sdl-ttf)))
6954 ("zlib" ,zlib)))
6955 (native-inputs
6956 `(("pkg-config" ,pkg-config)
6957 ("zip" ,zip)))
6958 (home-page "http://btanks.sourceforge.net")
6959 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6960 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6961game, where you can choose one of three vehicles and eliminate your enemy
6962using the whole arsenal of weapons. It has original cartoon-like graphics and
6963cool music, it’s fun and dynamic, it has several network modes for deathmatch
6964and cooperative.")
ca32afac
RW
6965 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6966 ;; released under GPLv2 or later. It comes with extra exceptions for the
6967 ;; developers.
6968 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8
RW
6969
6970(define-public slingshot
6971 (package
6972 (name "slingshot")
6973 (version "0.9")
6974 (source
6975 (origin
6976 (method git-fetch)
6977 (uri (git-reference
6978 (url "https://github.com/ryanakca/slingshot.git")
6979 (commit version)))
6980 (file-name (git-file-name name version))
6981 (sha256
6982 (base32
6983 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6984 (build-system python-build-system)
6985 (arguments
6986 `(#:python ,python-2))
6987 (inputs
6988 `(("python-pygame" ,python2-pygame)))
6989 (home-page "https://github.com/ryanakca/slingshot")
6990 (synopsis "Simple 2D shooting strategy game set in space")
6991 (description "Slingshot is a two-dimensional strategy game where two
6992players attempt to shoot one another through a section of space populated by
6993planets. The main feature of the game is that the shots, once fired, are
6994affected by the gravity of the planets.")
6995 (license license:gpl2+)))
8ada024b
RW
6996
6997(define-public 4dtris
6998 (package
6999 (name "4dtris")
7000 (version "0.4.3")
7001 (source
7002 (origin
7003 (method url-fetch)
7004 (uri (string-append "https://launchpad.net/4dtris/"
7005 (version-major+minor version)
7006 "/" version "/+download/4dtris_"
7007 version ".orig.tar.gz"))
7008 (sha256
7009 (base32
7010 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
7011 (build-system gnu-build-system)
7012 (arguments
7013 `(#:phases
7014 (modify-phases %standard-phases
7015 (add-after 'unpack 'fix-install-directories
7016 (lambda* (#:key outputs #:allow-other-keys)
7017 (let ((out (assoc-ref outputs "out")))
7018 (substitute* "Makefile.in"
7019 (("bindir = /usr/games")
7020 (string-append "bindir = " out "/bin"))
7021 (("/usr/share/applications")
7022 (string-append out "/share/applications"))
7023 (("/usr/share/games/4dtris")
7024 (string-append out "/share/4dtris"))))
7025 #t))
7026 (add-after 'set-paths 'set-sdl-paths
7027 (lambda* (#:key inputs #:allow-other-keys)
7028 (setenv "CPATH"
7029 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
7030 "/include/SDL:"
7031 (or (getenv "CPATH") "")))
8ada024b
RW
7032 #t)))))
7033 (inputs
7034 `(("fontconfig" ,fontconfig)
7035 ("freeglut" ,freeglut)
7036 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
7037 (home-page "https://launchpad.net/4dtris/")
7038 (synopsis "4D Tetris")
7039 (description "4D-TRIS is an alteration of the well-known Tetris game. The
7040game field is extended to 4D space, which has to filled up by the gamer with
70414D hyper cubes.")
7042 (license license:gpl3)))
7043
8044e584
PN
7044(define-public arx-libertatis
7045 (package
7046 (name "arx-libertatis")
7047 (version "1.1.2")
7048 (source
7049 (origin
7050 (method url-fetch)
7051 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
7052 version ".tar.xz"))
7053 (sha256
7054 (base32
7055 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
7056 (build-system cmake-build-system)
7057 (outputs '("out" "installer"))
7058 (arguments
7059 '(#:tests? #f ; No tests.
7060 #:phases
7061 (modify-phases %standard-phases
7062 (add-after 'unpack 'fix-install-helper-paths
7063 (lambda* (#:key inputs #:allow-other-keys)
7064 (let ((p7zip (assoc-ref inputs "p7zip"))
7065 (innoextract (assoc-ref inputs "innoextract"))
7066 (wget (assoc-ref inputs "wget"))
7067 (zenity (assoc-ref inputs "zenity")))
7068 (substitute* "scripts/arx-install-data"
7069 (("have innoextract")
7070 (string-append "have " innoextract "/bin/innoextract"))
7071 (("then innoextract")
7072 (string-append "then " innoextract "/bin/innoextract"))
7073 (("else innoextract")
7074 (string-append "else " innoextract "/bin/innoextract"))
7075 (("for _extract_zip_sz in 7za 7z")
7076 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
7077 (("else if have 7z")
7078 (string-append "else if have " p7zip "/bin/7za"))
7079 (("7z x -tiso")
7080 (string-append p7zip "/bin/7z x -tiso"))
7081 (("if have wget")
7082 (string-append "if have " wget "/bin/wget"))
7083 (("wget -O")
7084 (string-append wget "/bin/wget -O"))
7085 (("for backend in \\$preferred zenity")
7086 (string-append "for backend in $preferred " zenity "/bin/zenity"))
7087 (("zenity +--title")
7088 (string-append zenity "/bin/zenity --title"))
7089 (("^zenity\\)")
7090 (string-append zenity "/bin/zenity)"))))
7091 #t))
7092 (add-after 'install 'move-installer
7093 (lambda* (#:key outputs #:allow-other-keys)
7094 (let ((out (assoc-ref outputs "out"))
7095 (installer (assoc-ref outputs "installer")))
7096 (mkdir-p (string-append installer "/bin"))
7097 (rename-file (string-append out "/bin/arx-install-data")
7098 (string-append installer "/bin/arx-install-data"))))))))
7099 (inputs
7100 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7101 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7102 ("glew" ,glew)
7103 ("openal" ,openal)
7104 ("zlib" ,zlib)
7105 ("boost" ,boost)
7106 ("glm" ,glm)
7107 ("freetype" ,freetype)
7108 ;; The following are only needed by the arx-install-data script.
7109 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7110 ("zenity" ,zenity) ; GUI for install-helper.
7111 ("wget" ,wget) ; Used by the install-helper to download the patch.
7112 ;; The install-helper needs it to extract the patch.
7113 ("innoextract" ,innoextract)))
7114 (home-page "https://arx-libertatis.org/")
7115 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
7116 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7117first-person role-playing game / dungeon crawler developed by Arkane Studios.
7118This port however does not include the game data, so you need to obtain a copy
7119of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7120features crafting, melee and ranged combat, as well as a unique casting system
7121where the player draws runes in real time to effect the desired spell.")
8044e584 7122 (license license:gpl3+)))
47903653 7123
649220ad 7124(define-public edgar
47903653 7125 (package
649220ad 7126 (name "edgar")
a50d6099 7127 (version "1.32")
47903653 7128 (source
7129 (origin
7130 (method url-fetch)
7131 (uri
7132 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7133 version "/edgar-" version "-1.tar.gz"))
7134 (sha256
a50d6099 7135 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 7136 (build-system gnu-build-system)
067826ab 7137 (arguments '(#:tests? #f ; there are no tests
47903653 7138 #:make-flags
7139 (list "CC=gcc"
7140 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7141 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7142 #:phases
7143 (modify-phases %standard-phases
7144 (delete 'configure)
7145 (add-before 'build 'fix-env
7146 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
7147 (setenv "CPATH"
7148 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
7149 "/include/SDL2:"
7150 (or (getenv "CPATH") "")))
47903653 7151 #t)))))
067826ab
TGR
7152 (inputs
7153 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7154 ("zlib" ,zlib)))
47903653 7155 (native-inputs
7156 `(("pkg-config" ,pkg-config)
7157 ("autoconf" ,autoconf)
7158 ("automake" ,automake)
7159 ("gnu-gettext" ,gnu-gettext)
7160 ("libtool" ,libtool)
7161 ("which" ,which)))
7162 (synopsis "2d action platformer game")
7163 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7164When Edgar's father fails to return home after venturing out one dark and stormy night,
7165Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7166a fortress beyond the forbidden swamp.")
7167 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7168 (license license:gpl2+)))
f95e33a7 7169
4e43e317
NG
7170(define-public openclonk
7171 (package
7172 (name "openclonk")
7173 (version "8.1")
7174 (source (origin
7175 (method url-fetch)
7176 (uri (string-append
7177 "https://www.openclonk.org/builds/release/" version "/"
7178 "openclonk-" version "-src.tar.bz2"))
7179 (sha256
7180 (base32
7181 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7182 (build-system cmake-build-system)
7183 (arguments
7184 `(#:configure-flags '("-DAudio_TK=OpenAL")
7185 #:test-target "tests"
7186 #:phases
7187 (modify-phases %standard-phases
7188 (add-after 'unpack 'prepare-gmock
7189 (lambda* (#:key inputs #:allow-other-keys)
7190 (mkdir "gmock")
7191 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7192 (substitute* "tests/CMakeLists.txt"
7193 (("/usr/src/gmock")
7194 (string-append (getcwd) "/gmock/googlemock"))
7195 (("/usr/src/gtest")
7196 (string-append (getcwd) "/gmock/googletest"))
7197 (("PATH_SUFFIXES \"src\" \"gtest\"")
7198 "PATH_SUFFIXES \"src\""))
7199 #t))
ee9eafc1
MB
7200 (add-after 'unpack 'adjust-backward-cpp-includes
7201 (lambda _
7202 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7203 ;; that includes external libraries such as libdl from glibc.
7204 ;; By default, CMake interface includes are treated as "system
7205 ;; headers", and GCC behaves poorly when glibc is passed as a
7206 ;; system header (causing #include_next failures).
7207
7208 ;; Here we prevent targets that consume the Backward::Backward
7209 ;; interface from treating it as "system includes".
7210 (substitute* "CMakeLists.txt"
7211 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7212 (string-append "set_property(TARGET " target " PROPERTY "
7213 "NO_SYSTEM_FROM_IMPORTED true)\n"
7214 all)))
7215 #t))
4e43e317
NG
7216 (add-after 'unpack 'add-libiberty
7217 ;; Build fails upon linking executables without this.
7218 (lambda _
7219 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7220 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7221 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7222 #t))
7223 (add-after 'add-libiberty 'lax-freealut-requirement
7224 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7225 ;; it as 1.0.1. Force minimal version.
7226 (lambda _
7227 (substitute* "cmake/FindAudio.cmake"
7228 (("freealut>=1.1.0") "freealut>=1.0.1"))
7229 #t))
7230 (add-after 'lax-freealut-requirement 'fix-directories
7231 ;; Prefer "$out/share/openclonk" over
7232 ;; "$out/share/games/openclonk". Also install "openclonk"
7233 ;; binary in "bin/", not "games/".
7234 (lambda _
7235 (substitute* "CMakeLists.txt"
7236 (("share/games/openclonk") "share/openclonk")
7237 (("TARGETS openclonk DESTINATION games")
7238 "TARGETS openclonk DESTINATION bin"))
7239 #t)))))
7240 (native-inputs
7241 `(("googlemock" ,(package-source googletest))
7242 ("googletest" ,googletest)
7243 ("pkg-config" ,pkg-config)))
7244 (inputs
7245 `(("freealut" ,freealut)
7246 ("freetype" ,freetype)
7247 ("glew" ,glew)
7248 ("libiberty" ,libiberty)
7249 ("libjpeg" ,libjpeg-turbo)
7250 ("libogg" ,libogg)
7251 ("libpng" ,libpng)
7252 ("libvorbis" ,libvorbis)
7253 ("libxrandr" ,libxrandr)
7254 ("mesa" ,mesa)
7255 ("miniupnpc" ,miniupnpc)
7256 ("openal" ,openal)
7257 ("qtbase" ,qtbase)
7258 ("readline" ,readline)
7259 ("sdl" ,sdl2)
7260 ("tinyxml" ,tinyxml)
7261 ("zlib" ,zlib)))
7262 (home-page "https://www.openclonk.org/")
7263 (synopsis
7264 "Multiplayer action game where you control small and nimble humanoids")
7265 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7266often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 7267antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
7268robust humanoid beings. The game encourages free play but the normal goal is
7269to either exploit valuable resources from the earth by building a mine or
7270fight each other on an arena-like map.")
7271 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7272 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
7273
7274(define-public flare-engine
7275 (package
7276 (name "flare-engine")
f9622ec7 7277 (version "1.11")
ad4f6442
NG
7278 (source (origin
7279 (method git-fetch)
7280 (uri (git-reference
7281 (url "https://github.com/flareteam/flare-engine.git")
7282 (commit (string-append "v" version))))
7283 (file-name (git-file-name name version))
7284 (sha256
7285 (base32
f9622ec7 7286 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
7287 (build-system cmake-build-system)
7288 (arguments
7289 `(#:tests? #f ;no test
7290 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7291 (inputs
7292 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7293 ("python" ,python-wrapper)
7294 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7295 (home-page "http://www.flarerpg.org/")
7296 (synopsis "Action Roleplaying Engine")
7297 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7298game engine built to handle a very specific kind of game: single-player 2D
7299action RPGs.")
7300 (license license:gpl3+)))
7301
7302(define-public flare-game
7303 (package
7304 (name "flare-game")
ffbaefc7 7305 (version "1.11")
ad4f6442
NG
7306 (source (origin
7307 (method git-fetch)
7308 (uri (git-reference
7309 (url "https://github.com/flareteam/flare-game.git")
7310 (commit (string-append "v" version))))
7311 (file-name (git-file-name name version))
7312 (sha256
7313 (base32
ffbaefc7 7314 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7315 (build-system cmake-build-system)
7316 (arguments
7317 `(#:tests? #f ;no test
7318 #:configure-flags '("-DDATADIR=share/flare")
7319 #:phases
7320 (modify-phases %standard-phases
7321 ;; Flare expects the mods to be located in the same folder.
7322 ;; Yet, "default" mod is in the engine, whereas the others
7323 ;; are in the current package. Merge everything here with
7324 ;; a symlink.
7325 (add-after 'install 'add-default-mod
7326 (lambda* (#:key inputs outputs #:allow-other-keys)
7327 (let* ((out (assoc-ref outputs "out"))
7328 (mods (string-append out "/share/flare/mods")))
7329 (with-directory-excursion mods
7330 (symlink (string-append (assoc-ref inputs "flare-engine")
7331 "/share/flare/mods/default")
7332 "default")))
7333 #t))
7334 (add-after 'install 'install-executable
7335 ;; The package only provides assets for the game, the
7336 ;; executable coming from "flare-engine". Since more than
7337 ;; one game may use the engine, we create a new executable,
7338 ;; "flare-game", which launches the engine with appropriate
7339 ;; parameters.
7340 (lambda* (#:key inputs outputs #:allow-other-keys)
7341 (let* ((out (assoc-ref outputs "out"))
7342 (bash (string-append (assoc-ref inputs "bash")
7343 "/bin/bash"))
7344 (flare (string-append (assoc-ref inputs "flare-engine")
7345 "/bin/flare"))
7346 (script (string-append out "/bin/flare-game")))
7347 (mkdir-p (dirname script))
7348 (call-with-output-file script
7349 (lambda (port)
7350 (format port
7351 "#!~a
7352exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7353 bash
7354 flare
7355 out)))
7356 (chmod script #o755))
7357 #t)))))
7358 (inputs
7359 `(("flare-engine" ,flare-engine)))
7360 (home-page "http://www.flarerpg.org/")
7361 (synopsis "Fantasy action RPG using the FLARE engine")
7362 (description "Flare is a single-player 2D action RPG with
7363fast-paced action and a dark fantasy style.")
7364 (license license:cc-by-sa3.0)))
660e0050
NG
7365
7366(define-public meritous
7367 (package
7368 (name "meritous")
7369 (version "1.5")
7370 (source (origin
7371 (method git-fetch)
7372 (uri (git-reference
7373 (url "https://gitlab.com/meritous/meritous.git")
7374 (commit (string-append "v" version))))
7375 (file-name (git-file-name name version))
7376 (sha256
7377 (base32
7378 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7379 (build-system gnu-build-system)
7380 (arguments
7381 `(#:tests? #f ;no test
7382 #:make-flags
7383 (list "CC=gcc"
7384 (string-append "prefix=" (assoc-ref %outputs "out")))
7385 #:phases
7386 (modify-phases %standard-phases
7387 (delete 'configure)
7388 (add-after 'unpack 'fix-sdl-path
7389 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7390 ;; directory, not SDL-union provided as an input to the package.
7391 ;; We force the latter with "--prefix=" option.
7392 (lambda* (#:key inputs #:allow-other-keys)
7393 (substitute* "Makefile"
7394 (("sdl-config" command)
7395 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7396 #t))
7397 (add-after 'unpack 'fix-crash
7398 ;; XXX: Songs are not present in the repository, due to licensing
7399 ;; issues. Yet, the game tries to load them, and, since it cannot
7400 ;; find them, crashes. Users cannot add them back, the store being
7401 ;; read-only, so we turn off background music altogether.
7402 (lambda _
7403 (substitute* "src/audio.c"
7404 (("PlayBackgroundMusic\\(new_track\\);" all)
7405 (string-append "// " all)))
7406 #t)))))
7407 (native-inputs
7408 `(("intltool" ,intltool)))
7409 (inputs
7410 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7411 ("zlib" ,zlib)))
7412 (home-page "https://gitlab.com/meritous/meritous")
7413 (synopsis "Action-adventure dungeon crawl game")
7414 (description "Far below the surface of the planet is a place of limitless
7415power. Those that seek to control such a utopia will soon bring an end to
7416themselves. Seeking an end to the troubles that plague him, PSI user Merit
7417journeys into the hallowed Orcus Dome in search of answers.
7418
7419Meritous is a action-adventure game with simple controls but a challenge to
7420find a balance of power versus recovery time during real-time battles. Set in
7421a procedurally generated world, the player can explore thousands of rooms in
7422search of powerful artifacts, tools to help them, and to eventually free the
7423Orcus Dome from evil.")
7424 (license license:gpl3+)))
472af999
RW
7425
7426(define-public marble-marcher
7427 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7428 (revision "1"))
7429 (package
7430 (name "marble-marcher")
7431 (version (git-version "0" revision commit))
7432 (source (origin
7433 (method git-fetch)
7434 (uri (git-reference
7435 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7436 (commit commit)))
7437 (file-name (git-file-name name version))
7438 (sha256
7439 (base32
7440 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7441 (build-system cmake-build-system)
7442 (arguments
7443 `(#:tests? #f ; there are none
7444 #:phases
7445 (modify-phases %standard-phases
7446 (add-after 'unpack 'embed-asset-directory
7447 (lambda* (#:key outputs #:allow-other-keys)
7448 (let ((assets (string-append (assoc-ref outputs "out")
7449 "/share/marble-marcher/assets/")))
7450 ;; Some of the files we're patching are
7451 ;; ISO-8859-1-encoded, so choose it as the default
7452 ;; encoding so the byte encoding is preserved.
7453 (with-fluids ((%default-port-encoding #f))
7454 (substitute* "src/Resource.rc"
7455 (("../assets/icon.ico")
7456 (string-append assets "icon.ico")))
7457 (substitute* "src/Res.h"
7458 (("assets/") assets))))
7459 #t))
7460 (replace 'install
7461 (lambda* (#:key outputs #:allow-other-keys)
7462 (let* ((out (assoc-ref outputs "out"))
7463 (assets (string-append out "/share/marble-marcher/assets"))
7464 (bin (string-append out "/bin/")))
7465 (mkdir-p bin)
7466 (mkdir-p assets)
7467 (copy-recursively "../source/assets" assets)
7468 (install-file "MarbleMarcher" bin))
7469 #t)))))
7470 (inputs
7471 `(("eigen" ,eigen)
7472 ("mesa" ,mesa)
7473 ("sfml" ,sfml)))
7474 (native-inputs
7475 `(("pkg-config" ,pkg-config)))
7476 (home-page "https://codeparade.itch.io/marblemarcher")
7477 (synopsis "Guide a marble across fractal landscapes")
7478 (description "Marble Marcher is a video game that uses a fractal physics
7479engine and fully procedural rendering to produce beautiful and unique
7480gameplay. The game is played on the surface of evolving fractals. The goal
7481of the game is to get your marble to the flag as quickly as possible. But be
7482careful not to fall off the level or get crushed by the fractal! There are 24
7483levels to unlock.")
7484 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7485 (license (list license:gpl2+
7486 license:silofl1.1
7487 license:cc-by-sa3.0)))))
20185e4f 7488
a84510f9 7489;; This must be updated together with flightgear.
20185e4f
RW
7490(define simgear
7491 (package
7492 (name "simgear")
7493 (version "2018.3.2")
7494 (source (origin
7495 (method url-fetch)
7496 (uri (string-append "mirror://sourceforge/flightgear/release-"
7497 (version-major+minor version) "/"
7498 "simgear-" version ".tar.bz2"))
7499 (sha256
7500 (base32
7501 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7502 (build-system cmake-build-system)
7503 (arguments
7504 `(#:phases
7505 (modify-phases %standard-phases
7506 (replace 'check
7507 (lambda _
7508 ;; Skip tests that require internet access.
7509 (invoke "ctest" "-E" "(http|dns)"))))))
7510 (inputs
7511 `(("boost" ,boost-for-mysql) ; fails with 1.69
7512 ("curl" ,curl)
7513 ("expat" ,expat)
7514 ("mesa" ,mesa)
7515 ("openal" ,openal)
7516 ("openscenegraph" ,openscenegraph-3.4)
7517 ("zlib" ,zlib)))
7518 (home-page "https://home.flightgear.org/")
7519 (synopsis "Libraries for 3D simulations and games")
7520 (description "SimGear is a set of libraries designed to be used as
7521building blocks for quickly assembling 3D simulations, games, and
7522visualization applications. SimGear is developed by the FlightGear project
7523and also provides the base for the FlightGear Flight Simulator.")
7524 (license license:lgpl2.0+)))
a84510f9
RW
7525
7526(define-public flightgear
7527 (package
7528 (name "flightgear")
7529 (version (package-version simgear))
7530 (source (origin
7531 (method url-fetch)
7532 (uri (string-append "mirror://sourceforge/flightgear/release-"
7533 (version-major+minor version) "/"
7534 "flightgear-" version ".tar.bz2"))
7535 (sha256
7536 (base32
7537 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7538 (modules '((guix build utils)))
7539 (snippet
7540 '(begin
7541 ;; There are some bundled libraries.
7542 (for-each delete-file-recursively
7543 '("3rdparty/sqlite3/"))
7544 #t))))
7545 (build-system cmake-build-system)
7546 (arguments
7547 `(#:configure-flags
7548 (list "-DSYSTEM_SQLITE=ON"
7549 (string-append "-DFG_DATA_DIR="
7550 (assoc-ref %outputs "out")
7551 "/share/flightgear"))
7552 ;; TODO: test cannot be run because the "run_test_suite" executable
7553 ;; does not seem to be built.
7554 #:tests? #f
7555 #:phases
7556 (modify-phases %standard-phases
7557 (add-after 'install 'wrap-executable
7558 (lambda* (#:key inputs outputs #:allow-other-keys)
7559 (let ((out (assoc-ref outputs "out")))
7560 (wrap-program (string-append out "/bin/fgfs")
7561 `("QT_PLUGIN_PATH" ":" prefix
7562 ,(map (lambda (label)
7563 (string-append (assoc-ref inputs label)
7564 "/lib/qt5/plugins"))
7565 '("qtbase" "qtdeclarative" "qtsvg")))
7566 `("QML2_IMPORT_PATH" ":" prefix
7567 ,(map (lambda (label)
7568 (string-append (assoc-ref inputs label)
7569 "/lib/qt5/qml"))
7570 '("qtdeclarative" "qtsvg"))))
7571 #t)))
7572 (add-after 'install 'install-data
7573 (lambda* (#:key inputs outputs #:allow-other-keys)
7574 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7575 (mkdir-p share)
7576 (with-directory-excursion share
7577 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7578 "--strip-components=1")))
7579 #t)))))
7580 (inputs
7581 `(("boost" ,boost-for-mysql) ; same as simgear
7582 ("dbus" ,dbus)
7583 ("eudev" ,eudev)
7584 ("freeglut" ,freeglut)
7585 ("freetype" ,freetype)
7586 ("glew" ,glew)
7587 ("libpng" ,libpng)
7588 ("openal" ,openal)
7589 ("openscenegraph" ,openscenegraph-3.4)
7590 ("plib" ,plib)
7591 ("qtbase" ,qtbase)
7592 ("qtdeclarative" ,qtdeclarative)
7593 ("qtsvg" ,qtsvg)
7594 ("simgear" ,simgear)
7595 ("speexdsp" ,speexdsp)
7596 ("sqlite" ,sqlite)
7597 ("zlib" ,zlib)))
7598 (native-inputs
7599 `(("cppunit" ,cppunit)
7600 ("pkg-config" ,pkg-config)
7601 ("qttools" ,qttools)
7602 ("flightgear-data"
7603 ,(origin
7604 (method url-fetch)
7605 (uri (string-append "mirror://sourceforge/flightgear/release-"
7606 (version-major+minor version) "/"
7607 "FlightGear-" version "-data.tar.bz2"))
7608 (sha256
7609 (base32
7610 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7611 (home-page "https://home.flightgear.org/")
7612 (synopsis "Flight simulator")
7613 (description "The goal of the FlightGear project is to create a
7614sophisticated flight simulator framework for use in research or academic
7615environments, pilot training, as an industry engineering tool, for DIY-ers to
7616pursue their favorite interesting flight simulation idea, and last but
7617certainly not least as a fun, realistic, and challenging desktop flight
7618simulator.")
7619 (license license:gpl2+)))
e8a0696d
NG
7620
7621(define-public jumpnbump
7622 (package
7623 (name "jumpnbump")
60d2aaa5 7624 (version "1.61")
e8a0696d
NG
7625 (source (origin
7626 (method git-fetch)
7627 (uri (git-reference
7628 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7629 (commit version)))
7630 (file-name (git-file-name name version))
7631 (sha256
7632 (base32
60d2aaa5 7633 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7634 (build-system gnu-build-system)
7635 (arguments
7636 `(#:make-flags
7637 (list "CC=gcc"
7638 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7639 #:tests? #f ;no test
7640 #:phases
7641 (modify-phases %standard-phases
7642 (delete 'configure) ;no configure script
7643 (add-after 'unpack 'fix-sdl-path
7644 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7645 ;; directory, not SDL-union provided as an input to the package.
7646 ;; We force the latter with "--prefix=" option.
7647 (lambda* (#:key inputs #:allow-other-keys)
7648 (substitute* "Makefile"
7649 (("sdl2-config" command)
7650 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7651 #t)))))
7652 (inputs
7653 `(("bzip2" ,bzip2)
7654 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7655 ("zlib" ,zlib)))
7656 (native-inputs
7657 `(("gettext" ,gettext-minimal))) ;for msgfmt
7658 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7659 (synopsis "Multiplayer platform game with bunnies")
7660 (description "You, as a bunny, have to jump on your opponents to make them
7661explode. It is a true multiplayer game; you cannot play this alone. You can
7662play with up to four players simultaneously. It has network support.")
7663 (license license:gpl2+)))
a3d4a631
NG
7664
7665(define-public hedgewars
7666 (package
7667 (name "hedgewars")
ea042113 7668 (version "1.0.0")
a3d4a631
NG
7669 (source (origin
7670 (method url-fetch)
7671 (uri (string-append "https://www.hedgewars.org/download/releases/"
7672 "hedgewars-src-" version ".tar.bz2"))
7673 (sha256
7674 (base32
ea042113 7675 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7676 (build-system cmake-build-system)
7677 (arguments
7678 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7679 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7680 ;; a Pascal to C translator and Clang instead.
7681 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7682 #:phases
7683 (modify-phases %standard-phases
a3d4a631 7684 (replace 'check
ea042113 7685 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7686 (inputs
7687 `(("ffmpeg" ,ffmpeg)
7688 ("freeglut" ,freeglut)
7689 ("ghc-entropy" ,ghc-entropy)
7690 ("ghc-hslogger" ,ghc-hslogger)
7691 ("ghc-network" ,ghc-network)
7692 ("ghc-random" ,ghc-random)
7693 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7694 ("ghc-sandi" ,ghc-sandi)
7695 ("ghc-sha" ,ghc-sha)
7696 ("ghc-utf8-string" ,ghc-utf8-string)
7697 ("ghc-vector" ,ghc-vector)
7698 ("ghc-zlib" ,ghc-zlib)
7699 ("glew" ,glew)
7700 ("libpng" ,libpng)
7701 ("lua" ,lua-5.1)
7702 ("physfs" ,physfs)
7703 ("qtbase" ,qtbase)
7704 ("sdl" ,(sdl-union
7705 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7706 (native-inputs
7707 `(("clang" ,clang)
7708 ("ghc" ,ghc)
7709 ("pkg-config" ,pkg-config)
7710 ("qttools" ,qttools)))
7711 (home-page "https://hedgewars.org/")
7712 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7713 (description
7714 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7715featuring the antics of pink hedgehogs with attitude as they battle from the
7716depths of hell to the depths of space.
7717
7718As commander, it's your job to assemble your crack team of hedgehog soldiers
7719and bring the war to your enemy.")
7720 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7721 ;; scripts are distributed under various terms.
7722 (license (list license:gpl2
7723 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7724 license:expat license:fdl1.3+ license:public-domain
7725 license:zlib))))
1bba3e8c
JL
7726
7727(define-public harmonist
7728 (package
7729 (name "harmonist")
9f5cb517 7730 (version "0.3.0")
1bba3e8c
JL
7731 (source (origin
7732 (method git-fetch)
7733 (uri (git-reference
7734 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7735 (commit (string-append "v" version))))
7736 (file-name (git-file-name name version))
7737 (sha256
7738 (base32
9f5cb517 7739 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
7740 (build-system go-build-system)
7741 (arguments
7742 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7743 (inputs
7744 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7745 (home-page "https://harmonist.tuxfamily.org/")
7746 (synopsis "Stealth coffee-break roguelike game")
7747 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7748coffee-break roguelike game. The game has a heavy focus on tactical
7749positioning, light and noise mechanisms, making use of various terrain types
7750and cones of view for monsters. Aiming for a replayable streamlined experience,
7751the game avoids complex inventory management and character building, relying
7752on items and player adaptability for character progression.")
7753 (license license:isc)))
e93352d6 7754
453365bc
JL
7755(define-public harmonist-tk
7756 (package
7757 (inherit harmonist)
7758 (name "harmonist-tk")
7759 (arguments
7760 (append
7761 (package-arguments harmonist)
7762 `(#:phases
7763 (modify-phases %standard-phases
7764 (replace 'build
7765 (lambda _
7766 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7767 "git.tuxfamily.org/harmonist/harmonist")))
7768 (replace 'check
7769 (lambda _
7770 (invoke "go" "test" "--tags" "tk"
7771 "git.tuxfamily.org/harmonist/harmonist")))))))
7772 (inputs
7773 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7774
e93352d6
NG
7775(define-public drascula
7776 (package
7777 (name "drascula")
7778 (version "1.0")
7779 (source (origin
7780 (method url-fetch)
7781 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7782 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7783 "drascula-" version ".zip"))
7784 (sha256
7785 (base32
7786 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7787 (build-system trivial-build-system)
7788 (arguments
7789 `(#:modules ((guix build utils))
7790 #:builder
7791 (begin
7792 (use-modules (guix build utils)
7793 (ice-9 match))
7794 (let* ((out (assoc-ref %outputs "out"))
7795 (share (string-append out "/share/drascula"))
7796 (scummvm (assoc-ref %build-inputs "scummvm")))
7797 ;; Install data.
7798 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7799 "/bin/unzip"))
7800 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7801 (for-each
7802 (lambda (input)
7803 (invoke unzip
7804 "-j"
7805 (assoc-ref %build-inputs input)
7806 "-x" "__MACOSX")
7807 ;; Every input provides "readme.txt", and we want to
7808 ;; preserve them all. Therefore we rename them first.
7809 (match input
7810 ("drascula-int"
7811 (rename-file "readme.txt" "readme-international.txt"))
7812 ("drascula-audio"
7813 (rename-file "readme.txt" "readme-audio.txt"))
7814 (_ #f))
7815 ;; Install documentation.
7816 (for-each (lambda (f) (install-file f doc))
7817 (find-files "." "\\.(txt|doc)$"))
7818 ;; Install data.
7819 (for-each (lambda (f) (install-file f share))
7820 (find-files "." "\\.(ogg|00[0-9])$")))
7821 '("drascula-audio" "drascula-int" "source")))
7822 ;; Create standalone executable.
7823 (let* ((bin (string-append out "/bin"))
7824 (executable (string-append bin "/drascula"))
7825 (bash (string-append (assoc-ref %build-inputs "bash")
7826 "/bin/bash")))
7827 (mkdir-p bin)
7828 (with-output-to-file executable
7829 (lambda ()
7830 (format #t "#!~a~%" bash)
7831 (format #t
7832 "exec ~a/bin/scummvm --path=~a drascula~%"
7833 scummvm share)))
7834 (chmod executable #o755))
7835 ;; Create desktop file. There is no dedicated icon for the
7836 ;; game, so we borrow SCUMMVM's.
7837 (let ((apps (string-append out "/share/applications")))
7838 (mkdir-p apps)
7839 (with-output-to-file (string-append apps "/drascula.desktop")
7840 (lambda _
7841 (format #t
7842 "[Desktop Entry]~@
7843 Name=Drascula: The Vampire Strikes Back~@
7844 GenericName=Drascula~@
7845 Exec=~a/bin/drascula~@
7846 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7847 Categories=AdventureGame;Game;RolePlaying;~@
7848 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7849 Comment=Classic 2D point and click adventure game~@
7850 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7851 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7852 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7853 Type=Application~%"
7854 out scummvm))))
7855 #t))))
7856 (native-inputs
7857 `(("bash" ,bash)
7858 ("unzip" ,unzip)))
7859 (inputs
7860 `(("scummvm" ,scummvm)
7861 ("drascula-int"
7862 ,(let ((version "1.1"))
7863 (origin
7864 (method url-fetch)
7865 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7866 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7867 "drascula-int-" version ".zip"))
7868 (sha256
7869 (base32
7870 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7871 ("drascula-audio"
7872 ,(let ((version "2.0"))
7873 (origin
7874 (method url-fetch)
7875 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7876 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7877 "drascula-audio-" version ".zip"))
7878 (sha256
7879 (base32
7880 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7881 (home-page "https://www.scummvm.org")
7882 (synopsis "Classic 2D point and click adventure game")
7883 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7884point and click adventure game.
7885
7886In Drascula you play the role of John Hacker, a British estate agent, that
7887gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7888Count Drascula and embark on a fun yet dangerous quest to rescue her.
7889Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7890the World and demonstrating that he is even more evil than his brother Vlad.")
7891 ;; Drascula uses a BSD-like license.
7892 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 7893
e7db97db
NG
7894(define (make-lure-package name language hash)
7895 (package
7896 (name name)
7897 (version "1.1")
7898 (source
7899 (origin
7900 (method url-fetch)
7901 (uri (string-append
7902 "mirror://sourceforge/scummvm/extras/"
7903 "Lure%20of%20the%20Temptress/"
7904 name "-" version ".zip"))
7905 (sha256
7906 (base32 hash))))
7907 (build-system trivial-build-system)
7908 (arguments
7909 `(#:modules ((guix build utils))
7910 #:builder
7911 (begin
7912 (use-modules (guix build utils))
7913 (let* ((out (assoc-ref %outputs "out"))
7914 (share (string-append out "/share"))
eca528cc 7915 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
7916 (apps (string-append share "/applications"))
7917 (bin (string-append out "/bin"))
7918 (executable (string-append bin "/" ,name))
7919 (scummvm (assoc-ref %build-inputs "scummvm")))
7920 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7921 "/bin/unzip")))
7922 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 7923 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
7924 (for-each (lambda (f) (install-file f doc))
7925 (find-files "." "\\.(txt|PDF|pdf)$")))
7926 (for-each (lambda (f) (install-file f data))
7927 (find-files "." "\\.(vga|VGA)$"))
7928 ;; Build the executable.
7929 (mkdir-p bin)
7930 (let ((bash (assoc-ref %build-inputs "bash")))
7931 (with-output-to-file executable
7932 (lambda ()
7933 (format #t "#!~a/bin/bash~%" bash)
7934 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7935 scummvm ,language data))))
7936 (chmod executable #o755)
7937 ;; Create desktop file. There is no dedicated
7938 ;; icon for the game, so we borrow SCUMMVM's.
7939 (mkdir-p apps)
7940 (with-output-to-file (string-append apps "/" ,name ".desktop")
7941 (lambda _
7942 (format #t
7943 "[Desktop Entry]~@
7944 Name=Lure of the Temptress~@
7945 GenericName=Lure~@
7946 Exec=~a~@
7947 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7948 Categories=AdventureGame;Game;RolePlaying;~@
7949 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7950 Comment=Classic 2D point and click adventure game~@
7951 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7952 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7953 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7954 Type=Application~%"
7955 executable scummvm)))
7956 #t))))
7957 (native-inputs
eca528cc 7958 `(("unzip" ,unzip)))
e7db97db 7959 (inputs
eca528cc
NG
7960 `(("bash" ,bash)
7961 ("scummvm" ,scummvm)))
e7db97db
NG
7962 (home-page "https://www.scummvm.org")
7963 (synopsis "2D point and click fantasy adventure game")
7964 (description
7965 "Lure of the Temptress is a classic 2D point and click adventure game.
7966
7967You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7968intents and purposes, a good man. After decades of unrest the King has united
7969the warring factions in his kingdom and all his lands are at peace, except
7970a remote region around a town called Turnvale. A revolt has recently taken
7971place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7972Selena, the titular temptress. The king calls together his finest horsemen
7973and heads off (with you in tow) to Turnvale just to witness how hellish
7974mercenary monsters called Skorl are invading the town.
7975
7976The king's men are defeated, the king is killed and you fall of your horse and
7977bang your head heavily on the ground. You have been *unconscious for a while
7978when you realize that you are in a dingy cell guarded by a not so friendly
7979Skorl. Maybe it would be an idea to try and escape...")
7980 (license (license:non-copyleft "file:///README"))))
7981
7982(define-public lure
7983 (make-lure-package
7984 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7985
7986(define-public lure-de
7987 (make-lure-package
7988 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7989
7990(define-public lure-es
7991 (make-lure-package
7992 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7993
7994(define-public lure-fr
7995 (make-lure-package
7996 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7997
7998(define-public lure-it
7999 (make-lure-package
8000 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
8001
35cb2ac5
NG
8002(define (make-queen-package name file-prefix release language hash)
8003 (package
8004 (name name)
8005 (version release)
8006 (source
8007 (origin
8008 (method url-fetch)
8009 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8010 "Flight%20of%20the%20Amazon%20Queen/"
8011 file-prefix release ".zip"))
8012 (sha256
8013 (base32 hash))))
8014 (build-system trivial-build-system)
8015 (arguments
8016 `(#:modules ((guix build utils))
8017 #:builder
8018 (begin
8019 (use-modules (guix build utils))
8020 (let* ((out (assoc-ref %outputs "out"))
8021 (share (string-append out "/share"))
8022 (data (string-append share "/" ,name))
8023 (apps (string-append share "/applications"))
8024 (bin (string-append out "/bin"))
8025 (executable (string-append bin "/" ,name))
8026 (scummvm (assoc-ref %build-inputs "scummvm")))
8027 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8028 "/bin/unzip")))
8029 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8030 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
8031 (install-file "readme.txt" doc))
8032 (install-file "queen.1c" data)
8033 (mkdir-p bin)
8034 (let ((bash (assoc-ref %build-inputs "bash")))
8035 (with-output-to-file executable
8036 (lambda ()
8037 (format #t "#!~a/bin/bash~%" bash)
8038 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
8039 scummvm data))))
8040 (chmod executable #o755)
8041 ;; Create desktop file. There is no dedicated
8042 ;; icon for the game, so we borrow SCUMMVM's.
8043 (mkdir-p apps)
8044 (with-output-to-file (string-append apps "/" ,name ".desktop")
8045 (lambda _
8046 (format #t
8047 "[Desktop Entry]~@
8048 Name=Flight of the Amazon Queen~@
8049 GenericName=Queen~@
8050 Comment=Embark on a quest to rescue a kidnapped princess and in the process, discover the true sinister intentions of a suspiciously located Lederhosen company~@
8051 Comment[de]=Begib dich auf ein Abenteuer, um eine entführte Prinzessin zu retten und entdecke die wahren, finsteren Absichten eines verdächtig erscheinenden Lederhosen-Unternehmens~@
8052 Type=Application~@
8053 Exec=~a~@
8054 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8055 Categories=AdventureGame;Game;RolePlaying;~@
8056 Keywords=adventure;game;roleplaying;fantasy;~%"
8057 executable scummvm))))
8058 #t)))
8059 (native-inputs
8060 `(("unzip" ,unzip)))
8061 (inputs
8062 `(("bash" ,bash)
8063 ("scummvm" ,scummvm)))
8064 (home-page "https://www.scummvm.org/")
8065 (synopsis "Classic 2D point and click adventure game")
8066 (description "Flight of the Amazon Queen is a 2D point-and-click
8067adventure game set in the 1940s.
8068
8069You assume the role of Joe King, a pilot for hire who is given the job
8070of flying Faye Russell (a famous movie star) into the Amazon jungle
8071for a photo shoot. Of course, things never go according to plans.
8072After an unfortunate turn of events they find themselves stranded in
8073the heart of the Amazon jungle, where Joe will embark on a quest to
8074rescue a kidnapped princess and in the process, discover the true
8075sinister intentions of a suspiciously located Lederhosen company. In
8076a rich 2D environment, Joe will cross paths with a variety of unlikely
8077jungle inhabitants including, but not limited to, a tribe of Amazon
8078women and 6-foot-tall pygmies.")
8079 (license (license:non-copyleft "file:///readme.txt"))))
8080
8081(define-public queen
8082 (make-queen-package
8083 "queen" "FOTAQ_Talkie-" "1.1" "en"
8084 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
8085
8086(define-public queen-de
8087 (make-queen-package
8088 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
8089 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
8090
8091(define-public queen-fr
8092 (make-queen-package
8093 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8094 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8095
8096(define-public queen-it
8097 (make-queen-package
8098 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8099 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8100
403d9fae
NG
8101(define-public sky
8102 (package
8103 (name "sky")
8104 (version "1.2") ;1.3 is floppy version
8105 (source
8106 (origin
8107 (method url-fetch)
8108 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8109 "Beneath%20a%20Steel%20Sky/"
8110 "bass-cd-" version ".zip"))
8111 (sha256
8112 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8113 (build-system trivial-build-system)
8114 (arguments
8115 `(#:modules ((guix build utils))
8116 #:builder
8117 (begin
8118 (use-modules (guix build utils))
8119 (let* ((out (assoc-ref %outputs "out"))
8120 (share (string-append out "/share"))
8121 (data (string-append share "/" ,name))
8122 (apps (string-append share "/applications"))
8123 (bin (string-append out "/bin"))
8124 (executable (string-append bin "/" ,name))
8125 (scummvm (assoc-ref %build-inputs "scummvm")))
8126 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8127 "/bin/unzip")))
8128 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8129 (let ((doc (string-append share "/doc/bass-" ,version)))
8130 (install-file "readme.txt" doc))
8131 (for-each (lambda (f) (install-file f data))
8132 (find-files "." "^sky\\."))
8133 ;; Build the executable.
8134 (mkdir-p bin)
8135 (let ((bash (assoc-ref %build-inputs "bash")))
8136 (with-output-to-file executable
8137 (lambda ()
8138 (format #t "#!~a/bin/bash~%" bash)
8139 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8140 (chmod executable #o755)
8141 ;; Create desktop file. There is no dedicated
8142 ;; icon for the game, so we borrow SCUMMVM's.
8143 (mkdir-p apps)
8144 (with-output-to-file (string-append apps "/" ,name ".desktop")
8145 (lambda _
8146 (format #t
8147 "[Desktop Entry]~@
8148 Name=Beneath a Steel Sky~@
8149 GenericName=Bass~@
8150 Exec=~a~@
8151 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8152 Categories=AdventureGame;Game;RolePlaying;~@
8153 Keywords=adventure;game;roleplaying;cyberpunk;~@
8154 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8155 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8156angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8157 Type=Application~%"
8158 executable scummvm)))
8159 #t))))
8160 (native-inputs
8161 `(("unzip" ,unzip)))
8162 (inputs
8163 `(("bash" ,bash)
8164 ("scummvm" ,scummvm)))
8165 (home-page "https://www.scummvm.org/")
8166 (synopsis "Classic 2D point an click science-fiction adventure game")
8167 (description
8168 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8169post-apocalyptic vision of the future. It revolves around Union City,
8170where selfishness, rivalry, and corruption by its citizens seems to be
8171all too common, those who can afford it live underground, away from
8172the pollution and social problems which are plaguing the city.
8173
8174You take on the role of Robert Foster, an outcast of sorts from the
8175city since a boy who was raised in a remote environment outside of
8176Union City simply termed ``the gap''. Robert's mother took him away
8177from Union City as a child on their way to ``Hobart'' but the
8178helicopter crashed on its way. Unfortunately, Robert's mother died,
8179but he survived and was left to be raised by a local tribe from the
8180gap.
8181
8182Years later, Union City security drops by and abducts Robert, killing
8183his tribe in the process; upon reaching the city the helicopter taking
8184him there crashes with him escaping, high upon a tower block in the
8185middle of the city. He sets out to discover the truth about his past,
8186and to seek vengeance for the killing of his tribe.")
8187 (license (license:non-copyleft "file:///readme.txt"))))
8188
08c2fb8f
JG
8189(define-public gnurobots
8190 (package
8191 (name "gnurobots")
8192 (version "1.2.0")
8193 (source
8194 (origin
8195 (method url-fetch)
8196 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8197 version ".tar.gz"))
8198 (sha256
8199 (base32
8200 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8201 (build-system gnu-build-system)
8202 (inputs
8203 `(("glib" ,glib)
8204 ("gtk+" ,gtk+-2)
8205 ("vte" ,vte/gtk+-2)
8206 ("readline" ,readline)
8207 ("guile" ,guile-1.8)))
8208 (native-inputs
8209 `(("pkg-config" ,pkg-config)))
8210 (arguments
8211 `(#:make-flags
8212 (list
8213 ;; Do not abort build on "deprecated-declarations" warnings.
8214 "CFLAGS=-Wno-error=deprecated-declarations"
8215 ;; Find readline headers in sub-directory.
8216 (string-append "READLINE_CFLAGS=-I"
8217 (assoc-ref %build-inputs "readline")
8218 "/include/readline/"))
8219 #:phases
8220 (modify-phases %standard-phases
8221 (add-after 'install 'install-doc
8222 (lambda* (#:key outputs #:allow-other-keys)
8223 (install-file "doc/Robots-HOWTO"
8224 (string-append (assoc-ref outputs "out")
8225 "/share/doc/gnurobots-"
8226 ,version))
8227 #t)))))
8228 (home-page "https://www.gnu.org/software/gnurobots/")
8229 (synopsis "Program a little robot and watch it explore a world")
8230 (description
8231 "GNU Robots is a game in which you program a robot to explore a world
8232full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8233the game is to stay alive and collect prizes. The robot program conveniently
8234may be written in a plain text file in the Scheme programming language.")
8235 (license license:gpl3+)))
3745909d
NG
8236
8237(define-public ri-li
8238 (package
8239 (name "ri-li")
8240 (version "2.0.1")
8241 (source (origin
8242 (method url-fetch)
8243 (uri (string-append "mirror://sourceforge/ri-li/"
8244 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8245 "Ri-li-" version ".tar.bz2"))
8246 (sha256
8247 (base32
8248 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8249 ;; Taken from
8250 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8251 ;; It doesn't build otherwise.
8252 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8253 (build-system gnu-build-system)
8254 (arguments
8255 `(#:phases
8256 (modify-phases %standard-phases
8257 ;; Remove "gentoo" subdirectory from Makefile, as it is
8258 ;; missing a make file and generates a build failure.
8259 (add-after 'configure 'fix-build
8260 (lambda _
8261 (substitute* "Makefile"
8262 ((" gentoo") ""))
8263 #t))
8264 (add-after 'install 'install-desktop-file
8265 (lambda* (#:key outputs #:allow-other-keys)
8266 (let* ((out (assoc-ref outputs "out"))
8267 (apps (string-append out "/share/applications"))
8268 (pixmaps (string-append out "/share/pixmaps")))
8269 (for-each (lambda (f) (install-file f pixmaps))
8270 (find-files "data" "\\.(png|ico)$"))
8271 (mkdir-p apps)
8272 (with-output-to-file (string-append apps "/ri-li.desktop")
8273 (lambda _
8274 (format #t
8275 "[Desktop Entry]~@
8276 Name=Ri-li~@
8277 Exec=~a/bin/Ri_li~@
8278 Icon=~a/Ri-li-icon-32x32.png~@
8279 Categories=Game;ArcadeGame;~@
8280 Keywords=toy;train;wooden;snake-like;engine;~@
8281 Comment=a toy simulator game~@
8282 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8283 Comment[fr]=un jeu de petit train~@
8284 Comment[ro_RO]=un joc cu un tren de jucărie~@
8285 Terminal=false~@
8286 Type=Application~%"
8287 out pixmaps))))
8288 #t))
8289 (add-after 'install-desktop-file 'remove-spurious-files
8290 ;; Delete redundant files already installed somewhere else.
8291 (lambda* (#:key outputs #:allow-other-keys)
8292 (let ((out (assoc-ref outputs "out")))
8293 (for-each delete-file
8294 (find-files (string-append out "/share/Ri-li")
8295 "\\.(png|ico)|COPYING"))
8296 #t))))))
8297 (inputs
8298 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8299 (home-page "http://www.ri-li.org")
8300 (synopsis "Toy train simulation game")
8301 (description "Ri-li is a game in which you drive a wooden toy
8302steam locomotive across many levels and collect all the coaches to
8303win.")
8304 ;; The project is dual-licensed GPL2+ and GPL3+.
8305 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
8306
8307(define-public freeorion
8308 (package
8309 (name "freeorion")
f6fdbb05 8310 (version "0.4.9")
562a2a40
JG
8311 (source
8312 (origin
f6fdbb05
TGR
8313 (method url-fetch)
8314 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8315 "download/v" version "/FreeOrion_v" version
8316 "_2020-02-02.db53471_Source.tar.gz"))
562a2a40 8317 (sha256
f6fdbb05 8318 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
562a2a40
JG
8319 (modules '((guix build utils)))
8320 (snippet
8321 '(begin
8322 ;; There are some bundled fonts.
8323 (for-each delete-file-recursively '("default/data/fonts"))
8324 #t))))
8325 (build-system cmake-build-system)
8326 (arguments
8327 '(#:tests? #f ;no test
8328 #:phases
8329 (modify-phases %standard-phases
8330 (add-after 'unpack 'unbundle-fonts
8331 (lambda* (#:key inputs #:allow-other-keys)
8332 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8333 "/share/fonts/truetype/")))
8334 (substitute* "UI/ClientUI.cpp"
7658904a 8335 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 8336 all type)
7658904a 8337 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
8338 #t))))))
8339 (inputs
8340 `(("boost" ,boost)
8341 ("boost_signals" ,boost-signals2)
8342 ("font-dejavu" ,font-dejavu)
8343 ("font-roboto" ,font-google-roboto)
8344 ("freetype2" ,freetype)
8345 ("glew" ,glew)
8346 ("glu" ,glu)
8347 ("libogg" ,libogg)
8348 ("libpng" ,libpng)
8349 ("libvorbis" ,libvorbis)
8350 ("openal" ,openal)
8351 ("python2" ,python-2.7)
8352 ("sdl2" ,sdl2)
8353 ("zlib" ,zlib)))
8354 (home-page "https://www.freeorion.org/index.php/Main_Page")
8355 (synopsis "Turn-based space empire and galactic conquest computer game")
8356 (description
8357 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8358computer game being designed and built by the FreeOrion project. Control an
8359empire with the goal of exploring the galaxy, expanding your territory,
8360exploiting the resources, and exterminating rival alien empires. FreeOrion is
8361inspired by the tradition of the Master of Orion games, but is not a clone or
8362remake of that series or any other game.")
8363 ;; Source code is released under gpl2. Artwork, music and sounds, and
8364 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8365 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8366 ;; released under lgpl2.1+.
8367 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
8368
8369(define-public leela-zero
8370 (package
8371 (name "leela-zero")
8372 (version "0.17")
8373 (source
8374 (origin
8375 (method git-fetch)
8376 (uri (git-reference
8377 (url "https://github.com/leela-zero/leela-zero.git")
8378 (commit (string-append "v" version))))
8379 (file-name (git-file-name name version))
8380 (sha256
8381 (base32
8382 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8383 (patches (search-patches "leela-zero-gtest.patch"))))
8384 (build-system cmake-build-system)
8385 (native-inputs
8386 `(("googletest" ,googletest)))
8387 (inputs
8388 `(("boost" ,boost)
8389 ("ocl-icd" ,ocl-icd)
8390 ("openblas" ,openblas)
8391 ("opencl-headers" ,opencl-headers)
8392 ("qtbase" ,qtbase)
8393 ("zlib" ,zlib)))
8394 (arguments
8395 '(#:configure-flags '("-DUSE_BLAS=YES")
8396 #:phases (modify-phases %standard-phases
8397 (add-before 'configure 'fix-tests
8398 (lambda* (#:key outputs #:allow-other-keys)
8399 (let ((home (getcwd)))
8400 (setenv "HOME" home)
8401 (substitute* "src/tests/gtests.cpp"
8402 (("\\.\\./src/tests/0k\\.txt")
8403 (string-append home "/src/tests/0k.txt"))
8404 (("cfg_gtp_mode = true;")
8405 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8406 #t))
8407 (replace 'check
8408 (lambda _
8409 (invoke "./tests"))))))
8410 (home-page "https://github.com/leela-zero/leela-zero")
8411 (synopsis "Program playing the game of Go")
8412 (description
8413 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8414the AlphaGo Zero paper. The current best network weights file for the engine
8415can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8416 (license license:gpl3+)))
66977719
GLV
8417
8418(define-public q5go
8419 (package
8420 (name "q5go")
8421 (version "1.0")
8422 (source (origin
8423 (method git-fetch)
8424 (uri (git-reference
8425 (url "https://github.com/bernds/q5Go.git")
8426 (commit (string-append "q5go-" version))))
8427 (file-name (git-file-name name version))
8428 (sha256
8429 (base32
8430 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8431 (build-system gnu-build-system)
8432 (native-inputs
8433 `(("pkg-config" ,pkg-config)))
8434 (inputs
8435 `(("qtbase" ,qtbase)
8436 ("qtmultimedia" ,qtmultimedia)
8437 ("qtsvg" ,qtsvg)))
8438 (arguments
8439 '(#:phases
8440 (modify-phases %standard-phases
8441 (add-after 'unpack 'fix-configure-script
8442 (lambda _
8443 ;; Bypass the unavailable qtchooser program.
8444 (substitute* "configure"
8445 (("test -z \"QTCHOOSER\"")
8446 "false")
8447 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8448 command))
8449 #t))
8450 (add-after 'unpack 'fix-paths
8451 (lambda _
8452 (substitute* '("src/pics/Makefile.in"
8453 "src/translations/Makefile.in")
8454 (("\\$\\(datadir\\)/qGo/")
8455 "$(datadir)/q5go/"))
8456 #t))
8457 (add-after 'install 'install-desktop-file
8458 (lambda* (#:key outputs #:allow-other-keys)
8459 (let* ((out (assoc-ref outputs "out"))
8460 (apps (string-append out "/share/applications"))
8461 (pics (string-append out "/share/q5go/pics")))
8462 (delete-file-recursively (string-append out "/share/applnk"))
8463 (delete-file-recursively (string-append out "/share/mimelnk"))
8464 (install-file "../source/src/pics/Bowl.ico" pics)
8465 (mkdir-p apps)
8466 (with-output-to-file (string-append apps "/q5go.desktop")
8467 (lambda _
8468 (format #t
8469 "[Desktop Entry]~@
8470 Name=q5go~@
8471 Exec=~a/bin/q5go~@
8472 Icon=~a/Bowl.ico~@
8473 Categories=Game;~@
8474 Comment=Game of Go~@
8475 Comment[de]=Spiel des Go~@
8476 Comment[eo]=Goo~@
8477 Comment[es]=Juego de Go~@
8478 Comment[fr]=Jeu de Go~@
8479 Comment[ja]=囲碁~@
8480 Comment[ko]=바둑~@
8481 Comment[zh]=围棋~@
8482 Terminal=false~@
8483 Type=Application~%"
8484 out pics))))
8485 #t)))))
8486 (synopsis "Qt GUI to play the game of Go")
8487 (description
8488 "This a tool for Go players which performs the following functions:
8489@itemize
8490@item SGF editor,
8491@item Analysis frontend for Leela Zero (or compatible engines),
8492@item GTP interface (to play against an engine),
8493@item IGS client (to play on the internet),
8494@item Export games to a variety of formats.
8495@end itemize")
8496 (home-page "https://github.com/bernds/q5Go")
8497 (license license:gpl2+)))
3c1c5622
HG
8498
8499(define-public ktuberling
8500 (package
8501 (name "ktuberling")
8502 (version "19.08.3")
8503 (source
8504 (origin
8505 (method url-fetch)
8506 (uri (string-append "mirror://kde/stable/applications/" version
8507 "/src/ktuberling-" version ".tar.xz"))
8508 (sha256
8509 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
8510 (build-system qt-build-system)
8511 (native-inputs
8512 `(("extra-cmake-modules" ,extra-cmake-modules)
8513 ("perl" ,perl)))
8514 (inputs
8515 `(("kcompletion" ,kcompletion)
8516 ("kconfigwidgets" ,kconfigwidgets)
8517 ("kcoreaddons" ,kcoreaddons)
8518 ("kcrash" ,kcrash)
8519 ("kdbusaddons" ,kdbusaddons)
8520 ("kdelibs4support" ,kdelibs4support)
8521 ("ki18n" ,ki18n)
8522 ("kwidgetsaddons" ,kwidgetsaddons)
8523 ("kxmlgui" ,kxmlgui)
8524 ("libkdegames" ,libkdegames)
8525 ("qtbase" ,qtbase)
8526 ("qtmultimedia" ,qtmultimedia)
8527 ("qtdeclarative" ,qtdeclarative)
8528 ("qtsvg" ,qtsvg)))
8529 (home-page "https://games.kde.org/")
8530 (synopsis "Stamp drawing toy")
8531 (description "KTuberling is a drawing toy intended for small children and
8532adults who remain young at heart. The game has no winner; the only purpose is
8533to make the funniest faces you can. Several activites are possible, e.g.:
8534
8535@itemize
8536@item Give the potato a funny face, clothes, and other goodies
8537@item Build a small town, complete with school, zoo, and fire department
8538@item Create a fantastic moonscape with spaceships and aliens
8539@item Top a pizza
8540@end itemize
8541
8542KTuberling can speak the name of each the object in several languages,
8543to assist in learning basic vocabulary.
8544
8545This package is part of the KDE games module.")
8546 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
8547
8548(define-public picmi
8549 (package
8550 (name "picmi")
8551 (version "19.08.3")
8552 (source
8553 (origin
8554 (method url-fetch)
8555 (uri (string-append "mirror://kde/stable/applications/" version
8556 "/src/picmi-" version ".tar.xz"))
8557 (sha256
8558 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
8559 (build-system qt-build-system)
8560 (native-inputs
8561 `(("extra-cmake-modules" ,extra-cmake-modules)
8562 ("kdoctools" ,kdoctools)))
8563 (inputs
8564 `(("kcoreaddons" ,kcoreaddons)
8565 ("kcrash" ,kcrash)
8566 ("kdbusaddons" ,kdbusaddons)
8567 ("kdeclarative" ,kdeclarative)
8568 ("ki18n" ,ki18n)
8569 ("kio" ,kio)
8570 ("knewstuff" ,knewstuff)
8571 ("kxmlgui" ,kxmlgui)
8572 ("libkdegames" ,libkdegames)
8573 ("qtbase" ,qtbase)
8574 ("qtdeclarative" ,qtdeclarative)
8575 ("qtsvg" ,qtsvg)))
8576 (home-page "https://games.kde.org/")
8577 (synopsis "Number logic game")
8578 (description "Picmi is a number logic game in which cells in a grid have
8579to be colored or left blank according to numbers given at the side of the
8580grid. The aim is to reveal a hidden picture.
8581
8582This package is part of the KDE games module.")
8583 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8584
8585(define-public kolf
8586 (package
8587 (name "kolf")
8588 (version "19.08.3")
8589 (source
8590 (origin
8591 (method url-fetch)
8592 (uri (string-append "mirror://kde/stable/applications/" version
8593 "/src/kolf-" version ".tar.xz"))
8594 (sha256
8595 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
8596 (build-system qt-build-system)
8597 (native-inputs
8598 `(("extra-cmake-modules" ,extra-cmake-modules)
8599 ("kdoctools" ,kdoctools)))
8600 (inputs
8601 `(("kcompletion" ,kcompletion)
8602 ("kconfigwidgets" ,kconfigwidgets)
8603 ("kcoreaddons" ,kcoreaddons)
8604 ("kcrash" ,kcrash)
8605 ("kdbusaddons" ,kdbusaddons)
8606 ("ki18n" ,ki18n)
8607 ("kio" ,kio)
8608 ("kwidgetsaddons" ,kwidgetsaddons)
8609 ("kxmlgui" ,kxmlgui)
8610 ("ktextwidgets" ,ktextwidgets)
8611 ("libkdegames" ,libkdegames)
8612 ("qtbase" ,qtbase)
8613 ("qtdeclarative" ,qtdeclarative)))
8614 (home-page "https://games.kde.org/")
8615 (synopsis "Miniature golf game")
8616 (description "Kolf is a miniature golf game for one to ten players. The
8617game is played from an overhead view, with a short bar representing the golf
8618club. Kolf features many different types of objects, such as water hazards,
8619slopes, sand traps, and black holes (warps), among others.
8620
8621Features are:
8622@itemize
8623@item Single and Multi-player (up to ten players) modes
8624@item High scores table
8625@item Dynamic courses
8626@item Third-party courses
8627@item Course editor
8628@end itemize
8629
8630This package is part of the KDE games module.")
8631 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8632
8633(define-public libkmahjongg
8634 (package
8635 (name "libkmahjongg")
8636 (version "19.08.3")
8637 (source
8638 (origin
8639 (method url-fetch)
8640 (uri (string-append "mirror://kde/stable/applications/"
8641 version "/src/libkmahjongg-" version ".tar.xz"))
8642 (sha256
8643 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8644 (build-system qt-build-system)
8645 (native-inputs
8646 `(("extra-cmake-modules" ,extra-cmake-modules)))
8647 (inputs
8648 `(("kauth" ,kauth)
8649 ("kcompletion" ,kcompletion)
8650 ;("kconfig" ,kconfig)
8651 ("kcodecs" ,kcodecs)
8652 ("kconfigwidgets" ,kconfigwidgets)
8653 ("kcoreaddons" ,kcoreaddons)
8654 ("ki18n" ,ki18n)
8655 ("kwidgetsaddons" ,kwidgetsaddons)
8656 ("qtbase" ,qtbase)
8657 ("qtsvg" ,qtsvg)))
8658 (home-page "https://games.kde.org/")
8659 (synopsis "Shared library for kmahjongg and kshisen")
8660 (description "Shared library and common files for kmahjongg, kshisen and
8661other Mah Jongg like games.")
8662 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8663
8664(define-public kmahjongg
8665 (package
8666 (name "kmahjongg")
8667 (version "19.08.3")
8668 (source
8669 (origin
8670 (method url-fetch)
8671 (uri (string-append "mirror://kde/stable/applications/"
8672 version "/src/kmahjongg-" version ".tar.xz"))
8673 (sha256
8674 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
8675 (build-system qt-build-system)
8676 (native-inputs
8677 `(("extra-cmake-modules" ,extra-cmake-modules)
8678 ("kdoctools" ,kdoctools)))
8679 (inputs
8680 `(("kcompletion" ,kcompletion)
8681 ("kcrash" ,kcrash)
8682 ("kdbusaddons" ,kdbusaddons)
8683 ("kdeclarative" ,kdeclarative)
8684 ("ki18n" ,ki18n)
8685 ("knewstuff" ,knewstuff)
8686 ("kxmlgui" ,kxmlgui)
8687 ("libkdegames" ,libkdegames)
8688 ("libkmahjongg" ,libkmahjongg)
8689 ("qtbase" ,qtbase)
8690 ("qtdeclarative" ,qtdeclarative)
8691 ("qtsvg" ,qtsvg)))
8692 (home-page "https://games.kde.org/")
8693 (synopsis "Tile laying patience")
8694 (description "In KMahjongg the tiles are scrambled and staked on top of
8695each other to resemble a certain shape. The player is then expected to remove
8696all the tiles off the game board by locating each tile's matching pair.
8697
8698A variety of tile layouts are included, as well as an editor to create new
8699layouts.
8700
8701This package is part of the KDE games module.")
8702 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8703
8704(define-public kshisen
8705 (package
8706 (name "kshisen")
8707 (version "19.08.3")
8708 (source
8709 (origin
8710 (method url-fetch)
8711 (uri (string-append "mirror://kde/stable/applications/"
8712 version "/src/kshisen-" version ".tar.xz"))
8713 (sha256
8714 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
8715 (build-system qt-build-system)
8716 (native-inputs
8717 `(("extra-cmake-modules" ,extra-cmake-modules)
8718 ;("perl" ,perl)
8719 ;("pkg-config" ,pkg-config)
8720 ("kdoctools" ,kdoctools)))
8721 (inputs
8722 `(("kauth" ,kauth)
8723 ("kcompletion" ,kcompletion)
8724 ("kconfigwidgets" ,kconfigwidgets)
8725 ("kcoreaddons" ,kcoreaddons)
8726 ("kcrash" ,kcrash)
8727 ("kdbusaddons" ,kdbusaddons)
8728 ("ki18n" ,ki18n)
8729 ("kxmlgui" ,kxmlgui)
8730 ("libkdegames" ,libkdegames)
8731 ("libkmahjongg" ,libkmahjongg)
8732 ("qtbase" ,qtbase)
8733 ("qtdeclarative" ,qtdeclarative)))
8734 (home-page "https://games.kde.org/")
8735 (synopsis "Shisen-Sho solitaire game")
8736 (description "KShisen is a solitaire-like game played using the standard
8737set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8738scrambled tiles
8739
8740This package is part of the KDE games module.")
8741 (license license:gpl2+)))
321bd0c3
HG
8742
8743(define-public kajongg
8744 (package
8745 (name "kajongg")
8746 (version "19.08.3")
8747 (source
8748 (origin
8749 (method url-fetch)
8750 (uri (string-append "mirror://kde/stable/applications/"
8751 version "/src/kajongg-" version ".tar.xz"))
8752 (sha256
8753 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
8754 (build-system qt-build-system)
8755 (native-inputs
8756 `(("extra-cmake-modules" ,extra-cmake-modules)
8757 ;("perl" ,perl)
8758 ("kdoctools" ,kdoctools)))
8759 (inputs
8760 `(("kconfig" ,kconfig)
8761 ("kconfigwidgets" ,kconfigwidgets)
8762 ("kcoreaddons" ,kcoreaddons)
8763 ("ki18n" ,ki18n)
8764 ("libkmahjongg" ,libkmahjongg)
8765 ("python" ,python)
8766 ("qtbase" ,qtbase)
8767 ("qtsvg" ,qtsvg)))
8768 (propagated-inputs
8769 `(("python-twisted" ,python-twisted)
8770 ("python-pyqt" ,python-pyqt)))
8771 ;; FIXME: Need to wrap PYTHONPATH
8772 (home-page "https://games.kde.org/")
8773 (synopsis "Classical Mah Jongg game for 4 players")
8774 (description "Kajongg is the ancient Chinese board game for 4 players.
8775
8776If you are looking for the Mah Jongg solitaire please use the application
8777kmahjongg.
8778
8779Kajongg can be used in two different ways: Scoring a manual game where you
8780play as always and use Kajongg for the computation of scores and for
8781bookkeeping. Or you can use Kajongg to play against any combination of other
8782human players or computer players.
8783
8784This package is part of the KDE games module.")
8785 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8786
8787(define-public kbreakout
8788 (package
8789 (name "kbreakout")
8790 (version "19.08.3")
8791 (source
8792 (origin
8793 (method url-fetch)
8794 (uri (string-append "mirror://kde/stable/applications/" version
8795 "/src/kbreakout-" version ".tar.xz"))
8796 (sha256
8797 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
8798 (build-system qt-build-system)
8799 (native-inputs
8800 `(("extra-cmake-modules" ,extra-cmake-modules)
8801 ("kdoctools" ,kdoctools)))
8802 (inputs
8803 `(("kcompletion" ,kcompletion)
8804 ("kconfig" ,kconfig)
8805 ("kconfigwidgets" ,kconfigwidgets)
8806 ("kcoreaddons" ,kcoreaddons)
8807 ("kcrash" ,kcrash)
8808 ("kdbusaddons" ,kdbusaddons)
8809 ("ki18n" ,ki18n)
8810 ("kwidgetsaddons" ,kwidgetsaddons)
8811 ("kxmlgui" ,kxmlgui)
8812 ("libkdegames" ,libkdegames)
8813 ("qtbase" ,qtbase)
8814 ("qtdeclarative" ,qtdeclarative)))
8815 (home-page "https://games.kde.org/")
8816 (synopsis "Breakout like game")
8817 (description "KBreakout is similar to the classics breakout and xboing,
8818featuring a number of added graphical enhancements and effects. You control a
8819paddle at the bottom of the playing-field, and must destroy bricks at the top
8820by bouncing balls against them.
8821
8822This package is part of the KDE games module.")
8823 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8824
8825(define-public kmines
8826 (package
8827 (name "kmines")
8828 (version "19.08.3")
8829 (source
8830 (origin
8831 (method url-fetch)
8832 (uri (string-append "mirror://kde/stable/applications/" version
8833 "/src/kmines-" version ".tar.xz"))
8834 (sha256
8835 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
8836 (build-system qt-build-system)
8837 (native-inputs
8838 `(("extra-cmake-modules" ,extra-cmake-modules)
8839 ("kdoctools" ,kdoctools)))
8840 (inputs
8841 `(("kcompletion" ,kcompletion)
8842 ("kconfig" ,kconfig)
8843 ("kconfigwidgets" ,kconfigwidgets)
8844 ("kcoreaddons" ,kcoreaddons)
8845 ("kcrash" ,kcrash)
8846 ("kdbusaddons" ,kdbusaddons)
8847 ("ki18n" ,ki18n)
8848 ("ktextwidgets" ,ktextwidgets)
8849 ("kwidgetsaddons" ,kwidgetsaddons)
8850 ("kxmlgui" ,kxmlgui)
8851 ("libkdegames" ,libkdegames)
8852 ("qtbase" ,qtbase)
8853 ("qtdeclarative" ,qtdeclarative)))
8854 (home-page "https://games.kde.org/")
8855 (synopsis "Classical mine sweeper game")
8856 (description "KMines is a classic Minesweeper game. The idea is to
8857uncover all the squares without blowing up any mines. When a mine is blown
8858up, the game is over.
8859
8860This package is part of the KDE games module.")
8861 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8862
8863(define-public konquest
8864 (package
8865 (name "konquest")
8866 (version "19.08.3")
8867 (source
8868 (origin
8869 (method url-fetch)
8870 (uri (string-append "mirror://kde/stable/applications/"
8871 version "/src/konquest-" version ".tar.xz"))
8872 (sha256
8873 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
8874 (build-system qt-build-system)
8875 (native-inputs
8876 `(("extra-cmake-modules" ,extra-cmake-modules)
8877 ("kdoctools" ,kdoctools)))
8878 (inputs
8879 `(("kcompletion" ,kcompletion)
8880 ("kconfig" ,kconfig)
8881 ("kcoreaddons" ,kcoreaddons)
8882 ("kcrash" ,kcrash)
8883 ("kdbusaddons" ,kdbusaddons)
8884 ("kguiaddons" ,kguiaddons)
8885 ("ki18n" ,ki18n)
8886 ("kwidgetsaddons" ,kwidgetsaddons)
8887 ("kxmlgui" ,kxmlgui)
8888 ("libkdegames" ,libkdegames)
8889 ("qtbase" ,qtbase)
8890 ("qtdeclarative" ,qtdeclarative)
8891 ("qtsvg" ,qtsvg)))
8892 (home-page "https://games.kde.org/")
8893 (synopsis "Simple turn-based strategy game")
8894 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8895conquer other planets by sending ships to them. The goal is to build an
8896interstellar empire and ultimately conquer all other player's planets. The
8897game can be played with up to nine empires, commanded either by the computer
8898or by puny earthlings.
8899
8900This package is part of the KDE games module.")
8901 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8902
8903(define-public kbounce
8904 (package
8905 (name "kbounce")
8906 (version "19.08.3")
8907 (source
8908 (origin
8909 (method url-fetch)
8910 (uri (string-append "mirror://kde/stable/applications/"
8911 version "/src/kbounce-" version ".tar.xz"))
8912 (sha256
8913 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
8914 (build-system qt-build-system)
8915 (native-inputs
8916 `(("extra-cmake-modules" ,extra-cmake-modules)
8917 ("kdoctools" ,kdoctools)))
8918 (inputs
8919 `(("kcompletion" ,kcompletion)
8920 ("kconfigwidgets" ,kconfigwidgets)
8921 ("kcoreaddons" ,kcoreaddons)
8922 ("kcrash" ,kcrash)
8923 ("kdbusaddons" ,kdbusaddons)
8924 ("ki18n" ,ki18n)
8925 ("kio" ,kio)
8926 ("kwidgetsaddons" ,kwidgetsaddons)
8927 ("kxmlgui" ,kxmlgui)
8928 ("libkdegames" ,libkdegames)
8929 ("qtbase" ,qtbase)
8930 ("qtdeclarative" ,qtdeclarative)
8931 ("qtsvg" ,qtsvg)))
8932 (home-page "https://games.kde.org/")
8933 (synopsis "Jezzball arcade game")
8934 (description "KBounce is a single player arcade game with the elements of
8935puzzle. It is played on a field, surrounded by wall, with two or more balls
8936bouncing around within the walls. The object of the game is to build new
8937walls to decrease the size of the active field.
8938
8939This package is part of the KDE games module.")
8940 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8941
8942(define-public kblocks
8943 (package
8944 (name "kblocks")
8945 (version "19.08.3")
8946 (source
8947 (origin
8948 (method url-fetch)
8949 (uri (string-append "mirror://kde/stable/applications/"
8950 version "/src/kblocks-" version ".tar.xz"))
8951 (sha256
8952 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
8953 (build-system qt-build-system)
8954 (native-inputs
8955 `(("extra-cmake-modules" ,extra-cmake-modules)
8956 ("kdoctools" ,kdoctools)))
8957 (inputs
8958 `(("kcompletion" ,kcompletion)
8959 ("kconfig" ,kconfig)
8960 ("kconfigwidgets" ,kconfigwidgets)
8961 ("kcoreaddons" ,kcoreaddons)
8962 ("kcrash" ,kcrash)
8963 ("kdbusaddons" ,kdbusaddons)
8964 ("ki18n" ,ki18n)
8965 ("kwidgetsaddons" ,kwidgetsaddons)
8966 ("kxmlgui" ,kxmlgui)
8967 ("libkdegames" ,libkdegames)
8968 ("qtbase" ,qtbase)
8969 ("qtdeclarative" ,qtdeclarative)
8970 ("qtsvg" ,qtsvg)))
8971 (home-page "https://games.kde.org/")
8972 (synopsis "Single player falling blocks puzzle game")
8973 (description "KBlocks is the classic Tetris-like falling blocks game.
8974
8975The idea is to stack the falling blocks to create horizontal lines without any
8976gaps. When a line is completed it is removed, and more space is available in
8977the play area. When there is not enough space for blocks to fall, the game is
8978over.
8979
8980This package is part of the KDE games module.")
8981 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8982
8983(define-public ksudoku
8984 (package
8985 (name "ksudoku")
8986 (version "19.08.3")
8987 (source
8988 (origin
8989 (method url-fetch)
8990 (uri (string-append "mirror://kde/stable/applications/"
8991 version "/src/ksudoku-" version ".tar.xz"))
8992 (sha256
8993 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
8994 (build-system qt-build-system)
8995 (native-inputs
8996 `(("extra-cmake-modules" ,extra-cmake-modules)
8997 ("kdoctools" ,kdoctools)))
8998 (inputs
8999 `(("karchive", karchive)
9000 ("kconfig" ,kconfig)
9001 ("kconfigwidgets" ,kconfigwidgets)
9002 ("kcoreaddons" ,kcoreaddons)
9003 ("kcrash" ,kcrash)
9004 ("kguiaddons" ,kguiaddons)
9005 ("ki18n" ,ki18n)
9006 ("kiconthemes" ,kiconthemes)
9007 ("kio" ,kio)
9008 ("kwidgetsaddons" ,kwidgetsaddons)
9009 ("kxmlgui" ,kxmlgui)
9010 ("libkdegames" ,libkdegames)
9011 ("glu" ,glu)
9012 ("qtbase" ,qtbase)
9013 ("qtdeclarative" ,qtdeclarative)
9014 ("qtsvg" ,qtsvg)))
9015 (home-page "https://games.kde.org/")
9016 (synopsis "Sudoku puzzle game and solver")
9017 (description "KSudoku is a Sudoku game and solver, supporting a range of
90182D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
9019puzzle sheets and find the solution to any Sudoku puzzle.
9020
9021The word Sudoku means \"single number in an allotted place\" in Japanese.
9022These are the basic rules: Every Sudoku is a square divided into 3x3
9023subsquares with 3x3 cells each.
9024
9025Some cells are filled with a number at the beginning. The remaining ones are
9026to be filled by the player using numbers from 1 to 9, without repeating a
9027number twice on each column, row or subsquare (each of them must contain only
9028one 1, one 2, one 3, and so on). The game requires logic and patience.
9029Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
9030and experience.
9031
9032The numerals in Sudoku puzzles are used for convenience (for example in 16x16
9033board we use letters): arithmetic relationships between numbers are
9034irrelevant.
9035
9036This program supports also 16x16 games with numbers from 1 to 16 and 256
9037cells with 16 cols, rows and subsquares!
9038
9039More information at http://en.wikipedia.org/wiki/Sudoku
9040
9041This package is part of the KDE games module.")
9042 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
9043
9044(define-public klines
9045 (package
9046 (name "klines")
9047 (version "19.08.3")
9048 (source
9049 (origin
9050 (method url-fetch)
9051 (uri (string-append "mirror://kde/stable/applications/" version
9052 "/src/klines-" version ".tar.xz"))
9053 (sha256
9054 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
9055 (build-system qt-build-system)
9056 (native-inputs
9057 `(("extra-cmake-modules" ,extra-cmake-modules)
9058 ("kdoctools" ,kdoctools)))
9059 (inputs
9060 `(("kcompletion" ,kcompletion)
9061 ("kconfigwidgets" ,kconfigwidgets)
9062 ("kcoreaddons" ,kcoreaddons)
9063 ("kcrash" ,kcrash)
9064 ("kdbusaddons" ,kdbusaddons)
9065 ("ki18n" ,ki18n)
9066 ("kwidgetsaddons" ,kwidgetsaddons)
9067 ("kxmlgui" ,kxmlgui)
9068 ("libkdegames" ,libkdegames)
9069 ("qtbase" ,qtbase)
9070 ("qtdeclarative" ,qtdeclarative)))
9071 (home-page "https://games.kde.org/")
9072 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
9073 (description "KLines is a simple but highly addictive one player game.
9074
9075The player has to move the colored balls around the game board, gathering them
9076into the lines of the same color by five. Once the line is complete it is
9077removed from the board, therefore freeing precious space. In the same time
9078the new balls keep arriving by three after each move, filling up the game
9079board.
9080
9081KLines is a single-player game where the player removes colored balls from the
9082board by arranging them into lines of five or more. However, every time the
9083player moves a ball, three more balls are added to the board.
9084
9085This package is part of the KDE games module.")
9086 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
9087
9088(define-public kgoldrunner
9089 (package
9090 (name "kgoldrunner")
9091 (version "19.08.3")
9092 (source
9093 (origin
9094 (method url-fetch)
9095 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9096 version ".tar.xz"))
9097 (sha256
9098 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
9099 (build-system qt-build-system)
9100 (native-inputs
9101 `(("extra-cmake-modules" ,extra-cmake-modules)
9102 ("kdoctools" ,kdoctools)))
9103 (inputs
9104 `(("kcompletion" ,kcompletion)
9105 ("kcoreaddons" ,kcoreaddons)
9106 ("kcrash" ,kcrash)
9107 ("kdbusaddons" ,kdbusaddons)
9108 ("ki18n" ,ki18n)
9109 ("kio" ,kio)
9110 ("kwidgetsaddons" ,kwidgetsaddons)
9111 ("kxmlgui" ,kxmlgui)
9112 ("libkdegames" ,libkdegames)
9113 ("qtbase" ,qtbase)
9114 ("qtdeclarative" ,qtdeclarative)))
9115 (home-page "https://games.kde.org/")
9116 (synopsis "Action and puzzle solving game")
9117 (description "KGoldrunner is an action game where the hero runs through a
9118maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9119gold nuggets and escape to the next level. Your enemies are also after the
9120gold. Worse still, they are after you!.
9121
9122KGoldrunner is a fast-paced platform game where the player must navigate a
9123maze while collecting gold nuggets and avoiding enemies. A variety of level
9124packs are included, as well as an editor to create new levels.
9125
9126This package is part of the KDE games module.")
9127 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
9128
9129(define-public kdiamond
9130 (package
9131 (name "kdiamond")
9132 (version "19.08.3")
9133 (source
9134 (origin
9135 (method url-fetch)
9136 (uri (string-append "mirror://kde/stable/applications/" version
9137 "/src/kdiamond-" version ".tar.xz"))
9138 (sha256
9139 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
9140 (build-system qt-build-system)
9141 (native-inputs
9142 `(("extra-cmake-modules" ,extra-cmake-modules)
9143 ("kdoctools" ,kdoctools)))
9144 (inputs
9145 `(("kcompletion", kcompletion)
9146 ("kconfig" ,kconfig)
9147 ("kconfigwidgets" ,kconfigwidgets)
9148 ("kcoreaddons" ,kcoreaddons)
9149 ("kcrash" ,kcrash)
9150 ("kdbusaddons" ,kdbusaddons)
9151 ("ki18n" ,ki18n)
9152 ("knotifications" ,knotifications)
9153 ("knotifyconfig" ,knotifyconfig)
9154 ("kwidgetsaddons" ,kwidgetsaddons)
9155 ("kxmlgui" ,kxmlgui)
9156 ("libkdegames" ,libkdegames)
9157 ("qtbase" ,qtbase)
9158 ("qtdeclarative" ,qtdeclarative)))
9159 (home-page "https://games.kde.org/")
9160 (synopsis "Three-in-a-row game")
9161 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9162features unlimited fun with randomly generated games and five difficulty
9163levels with varying number of diamond colors and board sizes.
9164
9165This package is part of the KDE games module.")
9166 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
9167
9168(define-public kfourinline
9169 (package
9170 (name "kfourinline")
9171 (version "19.08.3")
9172 (source
9173 (origin
9174 (method url-fetch)
9175 (uri (string-append "mirror://kde/stable/applications/" version
9176 "/src/kfourinline-" version ".tar.xz"))
9177 (sha256
9178 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
9179 (build-system qt-build-system)
9180 (native-inputs
9181 `(("extra-cmake-modules" ,extra-cmake-modules)
9182 ("kdoctools" ,kdoctools)))
9183 (inputs
9184 `(("kcompletion" ,kcompletion)
9185 ("kconfig" ,kconfig)
9186 ("kconfigwidgets" ,kconfigwidgets)
9187 ("kcoreaddons" ,kcoreaddons)
9188 ("kcrash" ,kcrash)
9189 ("kdelibs4support" ,kdelibs4support)
9190 ("kdnssd" ,kdnssd)
9191 ("ki18n" ,ki18n)
9192 ("kxmlgui" ,kxmlgui)
9193 ("libkdegames" ,libkdegames)
9194 ("qtbase" ,qtbase)
9195 ("qtdeclarative" ,qtdeclarative)
9196 ("qtsvg" ,qtsvg)))
9197 (home-page "https://games.kde.org/")
9198 (synopsis "Place 4 pieces in a row")
9199 (description "KFourInLine is a board game for two players based on the
9200Connect-Four game.
9201
9202KFourInLine is a game where two players take turns dropping pieces into a
9203grid, the winner being the first to place four pieces in a line.
9204
9205This package is part of the KDE games module.")
9206 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
9207
9208(define-public kblackbox
9209 (package
9210 (name "kblackbox")
9211 (version "19.08.3")
9212 (source
9213 (origin
9214 (method url-fetch)
9215 (uri (string-append "mirror://kde/stable/applications/" version
9216 "/src/kblackbox-" version ".tar.xz"))
9217 (sha256
9218 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
9219 (build-system qt-build-system)
9220 (native-inputs
9221 `(("extra-cmake-modules" ,extra-cmake-modules)
9222 ("kdoctools" ,kdoctools)))
9223 (inputs
9224 `(("karchive" ,karchive)
9225 ("kcompletion" ,kcompletion)
9226 ("kconfig" ,kconfig)
9227 ("kcoreaddons" ,kcoreaddons)
9228 ("kcrash" ,kcrash)
9229 ("kdbusaddons" ,kdbusaddons)
9230 ("ki18n" ,ki18n)
9231 ("ktextwidgets" ,ktextwidgets)
9232 ("kxmlgui" ,kxmlgui)
9233 ("libkdegames" ,libkdegames)
9234 ("qtbase" ,qtbase)
9235 ("qtdeclarative" ,qtdeclarative)
9236 ("qtsvg" ,qtsvg)))
9237 (home-page "https://games.kde.org/")
9238 (synopsis "Find atoms in a grid by shooting electrons")
9239 (description "KBlackbox is a game of hide and seek played on a grid of
9240boxes where the computer has hidden several balls. The position of the hidden
9241balls can be deduced by shooting beams into the box
9242
9243KBlackBox is a game of hide and seek played on an grid of boxes, where the
9244player shoots rays into the grid to deduce the positions of hidden objects.
9245
9246This package is part of the KDE games module.")
9247 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
9248
9249(define-public knetwalk
9250 (package
9251 (name "knetwalk")
9252 (version "19.08.3")
9253 (source
9254 (origin
9255 (method url-fetch)
9256 (uri (string-append "mirror://kde/stable/applications/" version
9257 "/src/knetwalk-" version ".tar.xz"))
9258 (sha256
9259 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
9260 (build-system qt-build-system)
9261 (native-inputs
9262 `(("extra-cmake-modules" ,extra-cmake-modules)
9263 ("kdoctools" ,kdoctools)))
9264 (inputs
9265 `(("kcompletion" ,kcompletion)
9266 ("kconfig" ,kconfig)
9267 ("kconfigwidgets" ,kconfigwidgets)
9268 ("kcoreaddons" ,kcoreaddons)
9269 ("kcrash" ,kcrash)
9270 ("kdbusaddons" ,kdbusaddons)
9271 ("ki18n" ,ki18n)
9272 ("ktextwidgets" ,ktextwidgets)
9273 ("kwidgetsaddons" ,kwidgetsaddons)
9274 ("kxmlgui" ,kxmlgui)
9275 ("libkdegames" ,libkdegames)
9276 ("qtbase" ,qtbase)
9277 ("qtdeclarative" ,qtdeclarative)))
9278 (home-page "https://games.kde.org/")
9279 (synopsis "Turn the board pieces to get all computers connected")
9280 (description "KNetWalk is a small game where you have to build up a
9281computer network by rotating the wires to connect the terminals to the server.
9282When the network is build, a highscore-list comes up where competitions can be
9283fought out.
9284
9285KNetwalk is a puzzle game where the player arranges sections of wire to
9286connect all the computers on the board.
9287
9288This package is part of the KDE games module.")
9289 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
9290
9291(define-public bomber
9292 (package
9293 (name "bomber")
9294 (version "19.08.3")
9295 (source
9296 (origin
9297 (method url-fetch)
9298 (uri (string-append "mirror://kde/stable/applications/" version
9299 "/src/bomber-" version ".tar.xz"))
9300 (sha256
9301 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
9302 (build-system qt-build-system)
9303 (native-inputs
9304 `(("extra-cmake-modules" ,extra-cmake-modules)
9305 ("kdoctools" ,kdoctools)))
9306 (inputs
9307 `(("kcompletiom" ,kcompletion)
9308 ("kconfig" ,kconfig)
9309 ("kcoreaddons" ,kcoreaddons)
9310 ("kcrash" ,kcrash)
9311 ("kdbusaddons" ,kdbusaddons)
9312 ("ki18n" ,ki18n)
9313 ("kxmlgui" ,kxmlgui)
9314 ("libkdegames" ,libkdegames)
9315 ("qtbase" ,qtbase)
9316 ("qtdeclarative" ,qtdeclarative)))
9317 (home-page "https://games.kde.org/")
9318 (synopsis "Arcade bombing game")
9319 (description "Bomber is a single player arcade game.
9320
9321The player is invading various cities in a plane that is decreasing in height.
9322The goal of the game is to destroy all the buildings and advance to the next
9323level. Each level gets a bit harder by increasing the speed of the plane and
9324the height of the buildings.
9325
9326Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9327below you. Each pass the spaceship makes, it gets lower and lower. If you've
9328not destroyed a building in your path, you will crash into it.
9329
9330This package is part of the KDE games module.")
9331 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
9332
9333(define-public granatier
9334 (package
9335 (name "granatier")
9336 (version "19.08.3")
9337 (source
9338 (origin
9339 (method url-fetch)
9340 (uri (string-append "mirror://kde/stable/applications/" version
9341 "/src/granatier-" version ".tar.xz"))
9342 (sha256
9343 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
9344 (build-system qt-build-system)
9345 (native-inputs
9346 `(("extra-cmake-modules" ,extra-cmake-modules)
9347 ("kdoctools" ,kdoctools)))
9348 (inputs
9349 `(("kcompletion" ,kcompletion)
9350 ("kconfig" ,kconfig)
9351 ("kconfigwidgets" ,kconfigwidgets)
9352 ("kcoreaddons" ,kcoreaddons)
9353 ("kcrash" ,kcrash)
9354 ("kdbusaddons" ,kdbusaddons)
9355 ("ki18n" ,ki18n)
9356 ("knewstuff" ,knewstuff)
9357 ("kwidgetsaddons" ,kwidgetsaddons)
9358 ("kxmlgui" ,kxmlgui)
9359 ("libkdegames" ,libkdegames)
9360 ("qtbase" ,qtbase)
9361 ("qtdeclarative" ,qtdeclarative)
9362 ("qtsvg" ,qtsvg)))
9363 (home-page "https://games.kde.org/")
9364 (synopsis "Bomberman clone")
9365 (description "Granatier is a clone of the classic Bomberman game,
9366inspired by the work of the Clanbomber clone.
9367
9368This package is part of the KDE games module.")
9369 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
9370
9371(define-public ksirk
9372 (package
9373 (name "ksirk")
9374 (version "19.08.3")
9375 (source
9376 (origin
9377 (method url-fetch)
9378 (uri (string-append "mirror://kde/stable/applications/" version
9379 "/src/ksirk-" version ".tar.xz"))
9380 (sha256
9381 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
9382 (build-system qt-build-system)
9383 (native-inputs
9384 `(("extra-cmake-modules" ,extra-cmake-modules)
9385 ("kdoctools" ,kdoctools)))
9386 (inputs
9387 `(("kcrash" ,kcrash)
9388 ("ki18n" ,ki18n)
9389 ("kiconthemes" ,kiconthemes)
9390 ("kio" ,kio)
9391 ("knewstuff" ,knewstuff)
9392 ("kwallet" ,kwallet)
9393 ("kxmlgui" ,kxmlgui)
9394 ("libkdegames" ,libkdegames)
9395 ("phonon" ,phonon)
9396 ("qca" ,qca)
9397 ("qtbase" ,qtbase)
9398 ("qtdeclarative" ,qtdeclarative)
9399 ("qtsvg" ,qtsvg)
9400 ("zlib" ,zlib)))
9401 (home-page "https://games.kde.org/")
9402 (synopsis "Computerized version of the well known strategy board game
9403'Risk'")
9404 (description "KsirK is a multi-player network-enabled game. The goal of
9405the game is simply to conquer the world by attacking your neighbors with your
9406armies.
9407
9408At the beginning of the game, countries are distributed to all the players.
9409Each country contains one army represented by an infantryman. Each player has
9410some armies to distribute to his countries. On each turn, each player can
9411attack his neighbours, eventually conquering one or more countries. At the
9412end of each turn, some bonus armies are distributed to the players in function
9413of the number of countries they own. The winner is the player that conquered
9414all the world.
9415
9416Features:
9417@itemize
9418@item Support for 1-6 human or computer players
9419@item Multi-player gaming over a network
9420@item You can easily create new skins with SVG graphics and the skin editor
9421@item Hot New Stuff support. You can easily download and install new skins
9422@end itemize
9423
9424This package is part of the KDE games module.")
9425 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
9426
9427(define-public palapeli
9428 (package
9429 (name "palapeli")
9430 (version "19.08.3")
9431 (source
9432 (origin
9433 (method url-fetch)
9434 (uri (string-append "mirror://kde/stable/applications/" version
9435 "/src/palapeli-" version ".tar.xz"))
9436 (sha256
9437 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
9438 (build-system qt-build-system)
9439 (native-inputs
9440 `(("extra-cmake-modules" ,extra-cmake-modules)
9441 ("kdoctools" ,kdoctools)))
9442 (inputs
9443 `(("karchive" ,karchive)
9444 ("kcompletion" ,kcompletion)
9445 ("kconfig" ,kconfig)
9446 ("kconfigwidgets" ,kconfigwidgets)
9447 ("kcoreaddons" ,kcoreaddons)
9448 ("kcrash" ,kcrash)
9449 ("kcrash" ,kcrash)
9450 ("ki18n" ,ki18n)
9451 ("ki18n" ,ki18n)
9452 ("kio" ,kio)
9453 ("kitemviews" ,kitemviews)
9454 ("knotifications" ,knotifications)
9455 ("kservice" ,kservice)
9456 ("kwidgetsaddons" ,kwidgetsaddons)
9457 ("kxmlgui" ,kxmlgui)
9458 ("libkdegames" ,libkdegames)
9459 ("qtbase" ,qtbase)
9460 ("qtdeclarative" ,qtdeclarative)
9461 ("qtsvg" ,qtsvg)
9462 ("shared-mime-info" ,shared-mime-info)))
9463 (home-page "https://games.kde.org/")
9464 (synopsis "Jigsaw puzzle game")
9465 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9466that genre, you are not limited to aligning pieces on imaginary grids. The
9467pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9468everything you do is saved on your disk immediately.
9469
9470Palapeli is the Finnish word for jigsaw puzzle.
9471
9472This package is part of the KDE games module.")
9473 (license license:gpl2+)))
bf6bfdbe
HG
9474
9475(define-public kiriki
9476 (package
9477 (name "kiriki")
9478 (version "19.08.3")
9479 (source
9480 (origin
9481 (method url-fetch)
9482 (uri (string-append "mirror://kde/stable/applications/" version
9483 "/src/kiriki-" version ".tar.xz"))
9484 (sha256
9485 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
9486 (build-system qt-build-system)
9487 (native-inputs
9488 `(("extra-cmake-modules" ,extra-cmake-modules)
9489 ("kdoctools" ,kdoctools)))
9490 (inputs
9491 `(("kcompletion" ,kcompletion)
9492 ("kconfig" ,kconfig)
9493 ("kconfigwidgets" ,kconfigwidgets)
9494 ("kcoreaddons" ,kcoreaddons)
9495 ("kcrash" ,kcrash)
9496 ("kdbusaddons" ,kdbusaddons)
9497 ("ki18n" ,ki18n)
9498 ("kiconthemes" ,kiconthemes)
9499 ("kxmlgui" ,kxmlgui)
9500 ("libkdegames" ,libkdegames)
9501 ("qtbase" ,qtbase)
9502 ("qtdeclarative" ,qtdeclarative)))
9503 (home-page "https://games.kde.org/")
9504 (synopsis "Yahtzee dice game")
9505 (description "Kiriki is an addictive and fun dice game, designed to be
9506played by as many as six players.
9507
9508Participants have to collect points by rolling five dice for up to three times
9509per single turn to make combinations with the highest score.
9510
9511This package is part of the KDE games module.")
9512 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
9513
9514(define-public kigo
9515 (package
9516 (name "kigo")
9517 (version "19.08.3")
9518 (source
9519 (origin
9520 (method url-fetch)
9521 (uri (string-append "mirror://kde/stable/applications/" version
9522 "/src/kigo-" version ".tar.xz"))
9523 (sha256
9524 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
9525 (build-system qt-build-system)
9526 (native-inputs
9527 `(("extra-cmake-modules" ,extra-cmake-modules)
9528 ("kdoctools" ,kdoctools)))
9529 (inputs
9530 `(("kconfig" ,kconfig)
9531 ("kconfigwidgets" ,kconfigwidgets)
9532 ("kcoreaddons" ,kcoreaddons)
9533 ("kcrash" ,kcrash)
9534 ("kdbusaddons" ,kdbusaddons)
9535 ("ki18n" ,ki18n)
9536 ("kio" ,kio)
9537 ("knewstuff", knewstuff)
9538 ("ktextwidgets" ,ktextwidgets)
9539 ("kxmlgui" ,kxmlgui)
9540 ("libkdegames" ,libkdegames)
9541 ("qtbase" ,qtbase)
9542 ("qtdeclarative" ,qtdeclarative)
9543 ("qtsvg" ,qtsvg)))
9544 (home-page "https://games.kde.org/")
9545 (synopsis "Go board game")
9546 (description "Kigo is an open-source implementation of the popular Go
9547game.
9548
9549Go is a strategic board game for two players. It is also known as
9550igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9551for being rich in strategic complexity despite its simple rules. The game is
9552played by two players who alternately place black and white stones (playing
9553pieces, now usually made of glass or plastic) on the vacant intersections of a
9554grid of 19x19 lines (9x9 or 13x13 for easier games).
9555
9556You also need to install a go engine, e.g. @code{gnugo}.
9557
9558This package is part of the KDE games module.")
9559 (license license:gpl3+)))
90e594d3
HG
9560
9561(define-public kubrick
9562 (package
9563 (name "kubrick")
9564 (version "19.08.3")
9565 (source
9566 (origin
9567 (method url-fetch)
9568 (uri (string-append "mirror://kde/stable/applications/" version
9569 "/src/kubrick-" version ".tar.xz"))
9570 (sha256
9571 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
9572 (build-system qt-build-system)
9573 (native-inputs
9574 `(("extra-cmake-modules" ,extra-cmake-modules)
9575 ("kdoctools" ,kdoctools)))
9576 (inputs
9577 `(("glu" ,glu)
9578 ("kconfig" ,kconfig)
9579 ("kconfigwidgets" ,kconfigwidgets)
9580 ("kcoreaddons" ,kcoreaddons)
9581 ("kcrash" ,kcrash)
9582 ("ki18n" ,ki18n)
9583 ("kio" ,kio)
9584 ("kwidgetsaddons" ,kwidgetsaddons)
9585 ("kxmlgui" ,kxmlgui)
9586 ("libkdegames" ,libkdegames)
9587 ("qtbase" ,qtbase)
9588 ("qtdeclarative" ,qtdeclarative)
9589 ("qtsvg" ,qtsvg)))
9590 (home-page "https://games.kde.org/")
9591 (synopsis "Game based on Rubik's Cube")
9592 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9593
9594The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9595\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9596selection of puzzles at several levels of difficulty, as well as demos of
9597pretty patterns and solution moves, or you can make up your own puzzles. The
9598game has unlimited undo, redo, save and reload capabilities.
9599
9600This package is part of the KDE games module.")
9601 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9602
9603(define-public lskat
9604 (package
9605 (name "lskat")
9606 (version "19.08.3")
9607 (source
9608 (origin
9609 (method url-fetch)
9610 (uri (string-append "mirror://kde/stable/applications/" version
9611 "/src/lskat-" version ".tar.xz"))
9612 (sha256
9613 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
9614 (build-system qt-build-system)
9615 (native-inputs
9616 `(("extra-cmake-modules" ,extra-cmake-modules)
9617 ("kdoctools" ,kdoctools)))
9618 (inputs
9619 `(("kcompletion" ,kcompletion)
9620 ("kconfig" ,kconfig)
9621 ("kcoreaddons" ,kcoreaddons)
9622 ("kcrash" ,kcrash)
9623 ("kguiaddons" ,kguiaddons)
9624 ("ki18n" ,ki18n)
9625 ("kwidgetsaddons" ,kwidgetsaddons)
9626 ("kxmlgui" ,kxmlgui)
9627 ("libkdegames" ,libkdegames)
9628 ("qtbase" ,qtbase)
9629 ("qtdeclarative" ,qtdeclarative)
9630 ("qtsvg" ,qtsvg)))
9631 (home-page "https://games.kde.org/")
9632 (synopsis "Lieutnant Skat card game")
9633 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9634engaging card game for two players, where the second player is either live
9635opponent, or a built in artificial intelligence.
9636
9637Lieutnant Skat is a simplified variant of the Skat card game for two players.
9638
9639This package is part of the KDE games module.")
9640 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9641
9642(define-public kapman
9643 (package
9644 (name "kapman")
9645 (version "19.08.3")
9646 (source
9647 (origin
9648 (method url-fetch)
9649 (uri (string-append "mirror://kde/stable/applications/" version
9650 "/src/kapman-" version ".tar.xz"))
9651 (sha256
9652 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
9653 (build-system qt-build-system)
9654 (native-inputs
9655 `(("extra-cmake-modules" ,extra-cmake-modules)
9656 ("kdoctools" ,kdoctools)))
9657 (inputs
9658 `(("kcompletion" ,kcompletion)
9659 ("kconfig" ,kconfig)
9660 ("kconfigwidgets" ,kconfigwidgets)
9661 ("kcoreaddons" ,kcoreaddons)
9662 ("kcrash" ,kcrash)
9663 ("kdbusaddons" ,kdbusaddons)
9664 ("ki18n" ,ki18n)
9665 ("kxmlgui" ,kxmlgui)
9666 ("libkdegames" ,libkdegames)
9667 ("qtbase" ,qtbase)
9668 ("qtdeclarative" ,qtdeclarative)
9669 ("qtsvg" ,qtsvg)))
9670 (home-page "https://games.kde.org/")
9671 (synopsis "Pac-Man clone")
9672 (description "Kapman is a clone of the well known game Pac-Man.
9673
9674You must run through the maze to eat all pills without being captured by a
9675ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9676few seconds. When a stage is cleared of pills and energizer the player is
9677taken to the next stage with slightly increased game speed
9678
9679This package is part of the KDE games module.")
9680 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9681
9682(define-public kspaceduel
9683 (package
9684 (name "kspaceduel")
9685 (version "19.08.3")
9686 (source
9687 (origin
9688 (method url-fetch)
9689 (uri (string-append "mirror://kde/stable/applications/" version
9690 "/src/kspaceduel-" version ".tar.xz"))
9691 (sha256
9692 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
9693 (build-system qt-build-system)
9694 (native-inputs
9695 `(("extra-cmake-modules" ,extra-cmake-modules)
9696 ("kdoctools" ,kdoctools)))
9697 (inputs
9698 `(("kcompletion" ,kcompletion)
9699 ("kconfig" ,kconfig)
9700 ("kconfigwidgets" ,kconfigwidgets)
9701 ("kcoreaddons" ,kcoreaddons)
9702 ("kcrash" ,kcrash)
9703 ("kdbusaddons" ,kdbusaddons)
9704 ("ki18n" ,ki18n)
9705 ("kxmlgui" ,kxmlgui)
9706 ("libkdegames" ,libkdegames)
9707 ("qtbase" ,qtbase)
9708 ("qtdeclarative" ,qtdeclarative)
9709 ("qtsvg" ,qtsvg)))
9710 (home-page "https://games.kde.org/")
9711 (synopsis "Two player game with shooting spaceships flying around a sun")
9712 (description "KSpaceduel is a space battle game for one or two players,
9713where two ships fly around a star in a struggle to be the only survivor.
9714
9715This package is part of the KDE games module.")
9716 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9717
9718(define-public bovo
9719 (package
9720 (name "bovo")
9721 (version "19.08.3")
9722 (source
9723 (origin
9724 (method url-fetch)
9725 (uri (string-append "mirror://kde/stable/applications/" version
9726 "/src/bovo-" version ".tar.xz"))
9727 (sha256
9728 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
9729 (build-system qt-build-system)
9730 (native-inputs
9731 `(("extra-cmake-modules" ,extra-cmake-modules)
9732 ("kdoctools" ,kdoctools)))
9733 (inputs
9734 `(("kcompletion" ,kcompletion)
9735 ("kcoreaddons" ,kcoreaddons)
9736 ("kcrash" ,kcrash)
9737 ("kdbusaddons" ,kdbusaddons)
9738 ("ki18n" ,ki18n)
9739 ("kxmlgui" ,kxmlgui)
9740 ("libkdegames" ,libkdegames)
9741 ("qtbase" ,qtbase)
9742 ("qtdeclarative" ,qtdeclarative)
9743 ("qtsvg" ,qtsvg)))
9744 (home-page "https://games.kde.org/")
9745 (synopsis "Classic pen and paper game: five in a line")
9746 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9747points\") like game for two players, where the opponents alternate in placing
9748their respective pictogram on the game board. The winner is the first to
9749complete a line of five markers. (Also known as: Connect Five, Five in a row,
9750X and O, Naughts and Crosses)
9751
9752This package is part of the KDE games module.")
9753 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9754
9755(define-public killbots
9756 (package
9757 (name "killbots")
9758 (version "19.08.3")
9759 (source
9760 (origin
9761 (method url-fetch)
9762 (uri (string-append "mirror://kde/stable/applications/" version
9763 "/src/killbots-" version ".tar.xz"))
9764 (sha256
9765 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
9766 (build-system qt-build-system)
9767 (native-inputs
9768 `(("extra-cmake-modules" ,extra-cmake-modules)
9769 ("kdoctools" ,kdoctools)))
9770 (inputs
9771 `(("kcompletion" ,kcompletion)
9772 ("kconfig" ,kconfig)
9773 ("kconfigwidgets" ,kconfigwidgets)
9774 ("kcoreaddons" ,kcoreaddons)
9775 ("kcrash" ,kcrash)
9776 ("kdbusaddons" ,kdbusaddons)
9777 ("ki18n" ,ki18n)
9778 ("kwidgetsaddons" ,kwidgetsaddons)
9779 ("kxmlgui" ,kxmlgui)
9780 ("libkdegames" ,libkdegames)
9781 ("qtbase" ,qtbase)
9782 ("qtdeclarative" ,qtdeclarative)))
9783 (home-page "https://games.kde.org/")
9784 (synopsis "Port of the classic BSD console game robots")
9785 (description "Killbots is a simple game of evading killer robots.
9786
9787Who created the robots and why they have been programmed to destroy, no one
9788knows. All that is known is that the robots are numerous and their sole
9789objective is to destroy you. Fortunately for you, their creator has focused
9790on quantity rather than quality and as a result the robots are severely
9791lacking in intelligence. Your superior wit and a fancy teleportation device
9792are your only weapons against the never-ending stream of mindless automatons.
9793
9794This package is part of the KDE games module.")
9795 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9796
9797(define-public ksnakeduel
9798 (package
9799 (name "ksnakeduel")
9800 (version "19.08.3")
9801 (source
9802 (origin
9803 (method url-fetch)
9804 (uri (string-append "mirror://kde/stable/applications/" version
9805 "/src/ksnakeduel-" version ".tar.xz"))
9806 (sha256
9807 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
9808 (build-system qt-build-system)
9809 (native-inputs
9810 `(("extra-cmake-modules" ,extra-cmake-modules)
9811 ("kdoctools" ,kdoctools)))
9812 (inputs
9813 `(("kcompletion" ,kcompletion)
9814 ("kconfig" ,kconfig)
9815 ("kconfigwidgets" ,kconfigwidgets)
9816 ("kcoreaddons" ,kcoreaddons)
9817 ("kcrash" ,kcrash)
9818 ("kdbusaddons" ,kdbusaddons)
9819 ("kguiaddons" ,kguiaddons)
9820 ("ki18n" ,ki18n)
9821 ("kxmlgui" ,kxmlgui)
9822 ("libkdegames" ,libkdegames)
9823 ("qtbase" ,qtbase)
9824 ("qtdeclarative" ,qtdeclarative)
9825 ("qtsvg" ,qtsvg)))
9826 (home-page "https://games.kde.org/")
9827 (synopsis "Snake race played against the computer")
9828 (description "KSnakeDuel is a fast action game where you steer a snake
9829which has to eat food. While eating the snake grows. But once a player
9830collides with the other snake or the wall the game is lost. This becomes of
9831course more and more difficult the longer the snakes grow.
9832
9833This package is part of the KDE games module.")
9834 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9835
9836(define-public kollision
9837 (package
9838 (name "kollision")
9839 (version "19.08.3")
9840 (source
9841 (origin
9842 (method url-fetch)
9843 (uri (string-append "mirror://kde/stable/applications/" version
9844 "/src/kollision-" version ".tar.xz"))
9845 (sha256
9846 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
9847 (build-system qt-build-system)
9848 (native-inputs
9849 `(("extra-cmake-modules" ,extra-cmake-modules)
9850 ("kdoctools" ,kdoctools)))
9851 (inputs
9852 `(("kcompletion" ,kcompletion)
9853 ("kconfig" ,kconfig)
9854 ("kcoreaddons" ,kcoreaddons)
9855 ("kcrash" ,kcrash)
9856 ("kdbusaddons" ,kdbusaddons)
9857 ("ki18n" ,ki18n)
9858 ("kwidgetsaddons" ,kwidgetsaddons)
9859 ("kxmlgui" ,kxmlgui)
9860 ("libkdegames" ,libkdegames)
9861 ("qtbase" ,qtbase)
9862 ("qtdeclarative" ,qtdeclarative)))
9863 (home-page "https://games.kde.org/")
9864 (synopsis "Simple ball dodging game")
9865 (description "In Kollision you use mouse to control a small blue ball in a
9866closed space environment filled with small red balls, which move about
9867chaotically. Your goal is to avoid touching any of those red balls with your
9868blue one, because the moment you do the game will be over. The longer you can
9869stay in game the higher will your score be.
9870
9871This package is part of the KDE games module.")
9872 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9873
9874(define-public knavalbattle
9875 (package
9876 (name "knavalbattle")
9877 (version "19.08.3")
9878 (source
9879 (origin
9880 (method url-fetch)
9881 (uri (string-append "mirror://kde/stable/applications/" version
9882"/src/knavalbattle-" version ".tar.xz"))
9883 (sha256
9884 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
9885 (build-system qt-build-system)
9886 (native-inputs
9887 `(("extra-cmake-modules" ,extra-cmake-modules)
9888 ("kdoctools" ,kdoctools)))
9889 (inputs
9890 `(("kauth" ,kauth)
9891 ("kcompletion" ,kcompletion)
9892 ("kconfig" ,kconfig)
9893 ("kconfigwidgets" ,kconfigwidgets)
9894 ("kcoreaddons" ,kcoreaddons)
9895 ("kcrash" ,kcrash)
9896 ("kdbusaddons" ,kdbusaddons)
9897 ("kdnssd" ,kdnssd)
9898 ("ki18n" ,ki18n)
9899 ("ktextwidgets" ,ktextwidgets)
9900 ("kxmlgui" ,kxmlgui)
9901 ("libkdegames" ,libkdegames)
9902 ("qtbase" ,qtbase)
9903 ("qtdeclarative" ,qtdeclarative)))
9904 (home-page "https://games.kde.org/")
9905 (synopsis "Battleship board game with built-in game server")
9906 (description "KBattleship is a Battle Ship game for KDE.
9907
9908Ships are placed on a board which represents the sea. Players try to hit each
9909others ships in turns without knowing where they are placed. The first player
9910to destroy all ships wins the game.
9911
9912This package is part of the KDE games module.")
9913 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
9914
9915(define-public kreversi
9916 (package
9917 (name "kreversi")
9918 (version "19.08.3")
9919 (source
9920 (origin
9921 (method url-fetch)
9922 (uri (string-append "mirror://kde/stable/applications/" version
9923"/src/kreversi-" version ".tar.xz"))
9924 (sha256
9925 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
9926 (build-system qt-build-system)
9927 (native-inputs
9928 `(("extra-cmake-modules" ,extra-cmake-modules)
9929 ("kdoctools" ,kdoctools)))
9930 (inputs
9931 `(("kconfig" ,kconfig)
9932 ("kconfigwidgets" ,kconfigwidgets)
9933 ("kcoreaddons" ,kcoreaddons)
9934 ("kcrash" ,kcrash)
9935 ("kdbusaddons" ,kdbusaddons)
9936 ("kdeclarative" ,kdeclarative)
9937 ("ki18n" ,ki18n)
9938 ("kiconthemes" ,kiconthemes)
9939 ("kio" ,kio)
9940 ("kxmlgui" ,kxmlgui)
9941 ("libkdegames" ,libkdegames)
9942 ("qtbase" ,qtbase)
9943 ("qtdeclarative" ,qtdeclarative)
9944 ("qtsvg" ,qtsvg)))
9945 (home-page "https://games.kde.org/")
9946 (synopsis "Old reversi board game, also known as othello")
9947 (description "KReversi is a simple one player strategy game played
9948against the computer.
9949
9950If a player's piece is captured by an opposing player, that piece is turned
9951over to reveal the color of that player. A winner is declared when one player
9952has more pieces of his own color on the board and there are no more possible
9953moves.
9954
9955This package is part of the KDE games module.")
9956 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
9957
9958(define-public ksquares
9959 (package
9960 (name "ksquares")
9961 (version "19.08.3")
9962 (source
9963 (origin
9964 (method url-fetch)
9965 (uri (string-append "mirror://kde/stable/applications/" version
9966 "/src/ksquares-" version ".tar.xz"))
9967 (sha256
9968 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
9969 (build-system qt-build-system)
9970 (native-inputs
9971 `(("extra-cmake-modules" ,extra-cmake-modules)
9972 ("kdoctools" ,kdoctools)))
9973 (inputs
9974 `(("kcompletion" ,kcompletion)
9975 ("kconfig" ,kconfig)
9976 ("kconfigwidgets" ,kconfigwidgets)
9977 ("kcoreaddons" ,kcoreaddons)
9978 ("kcrash" ,kcrash)
9979 ("kdbusaddons" ,kdbusaddons)
9980 ("ki18n" ,ki18n)
9981 ("kwidgetsaddons" ,kwidgetsaddons)
9982 ("kxmlgui" ,kxmlgui)
9983 ("libkdegames" ,libkdegames)
9984 ("qtbase" ,qtbase)
9985 ("qtdeclarative" ,qtdeclarative)))
9986 (home-page "https://games.kde.org/")
9987 (synopsis "Dots and Boxes game")
9988 (description "KSquares is an implementation of the popular paper based
9989game Squares. Two players take turns connecting dots on a grid to complete
9990squares, the player with the most squares wins.
9991
9992This package is part of the KDE games module.")
9993 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
9994
9995(define-public kjumpingcube
9996 (package
9997 (name "kjumpingcube")
9998 (version "19.08.3")
9999 (source
10000 (origin
10001 (method url-fetch)
10002 (uri (string-append "mirror://kde/stable/applications/" version
10003 "/src/kjumpingcube-" version ".tar.xz"))
10004 (sha256
10005 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
10006 (build-system qt-build-system)
10007 (native-inputs
10008 `(("extra-cmake-modules" ,extra-cmake-modules)
10009 ("kdoctools" ,kdoctools)))
10010 (inputs
10011 `(("kconfig" ,kconfig)
10012 ("kconfigwidgets" ,kconfigwidgets)
10013 ("kcoreaddons" ,kcoreaddons)
10014 ("kcrash" ,kcrash)
10015 ("kdbusaddons" ,kdbusaddons)
10016 ("ki18n" ,ki18n)
10017 ("kio" ,kio)
10018 ("kwidgetsaddons" ,kwidgetsaddons)
10019 ("kxmlgui" ,kxmlgui)
10020 ("libkdegames" ,libkdegames)
10021 ("qtbase" ,qtbase)
10022 ("qtdeclarative" ,qtdeclarative)
10023 ("qtsvg" ,qtsvg)))
10024 (home-page "https://games.kde.org/")
10025 (synopsis "Simple tactical game for number-crunchers")
10026 (description "KJumpingcube is a simple tactical game for one or two
10027players, played on a grid of numbered squares. Each turn, players compete for
10028control of the board by capturing or adding to one square.
10029
10030This package is part of the KDE games module.")
10031 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
10032
10033(define-public xmoto
10034 (package
10035 (name "xmoto")
10036 (version "0.5.11")
10037 (source
10038 (origin
10039 (method url-fetch)
10040 (uri (string-append
10041 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
10042 "xmoto-" version "-src.tar.gz"))
10043 (sha256
10044 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
10045 (patches
10046 (search-patches
10047 "xmoto-remove-glext.patch" ;fixes licensing issue
10048 "xmoto-reproducible.patch"
10049 "xmoto-utf8.patch"))
10050 ;; Unbundle ODE.
10051 (modules '((guix build utils)))
10052 (snippet
10053 `(begin
10054 (delete-file-recursively "src/ode")
10055 #t))))
10056 (build-system gnu-build-system)
10057 (arguments
10058 ;; XXX: First flag prevents a build error with GCC7+. The second
10059 ;; flag works around missing text in game. Both are fixed
10060 ;; upstream. Remove once xmoto 0.5.12+ is released.
10061 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
10062 #:phases
10063 (modify-phases %standard-phases
10064 (add-after 'install 'install-desktop-file
10065 (lambda* (#:key outputs #:allow-other-keys)
10066 (let* ((out (assoc-ref outputs "out"))
10067 (apps (string-append out "/share/applications"))
10068 (pixmaps (string-append out "/share/pixmaps")))
10069 (install-file "extra/xmoto.desktop" apps)
10070 (install-file "extra/xmoto.xpm" pixmaps)
10071 #t)))
10072 (add-after 'install-desktop-file 'install-fonts
10073 (lambda* (#:key outputs inputs #:allow-other-keys)
10074 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
10075 "/share/fonts/truetype/"))
10076 (target-dir (string-append (assoc-ref outputs "out")
10077 "/share/xmoto/Textures/Fonts/")))
10078 (for-each (lambda (f)
10079 (let ((font (string-append font-dir f))
10080 (target (string-append target-dir f)))
10081 (delete-file target)
10082 (symlink font target)))
10083 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
10084 #t)))
10085 (add-after 'install-fonts 'install-man-page
10086 (lambda* (#:key outputs #:allow-other-keys)
10087 (install-file "xmoto.6"
10088 (string-append (assoc-ref outputs "out")
10089 "/share/man/man6"))
10090 #t)))))
10091 (native-inputs
10092 `(("gettext" ,gettext-minimal)))
10093 (inputs
10094 `(("curl" ,curl)
10095 ("font-dejavu" ,font-dejavu)
10096 ("glu" ,glu)
10097 ("libjpeg" ,libjpeg)
10098 ("libpng" ,libpng)
10099 ("libxdg-basedir" ,libxdg-basedir)
10100 ("libxml2" ,libxml2)
10101 ("lua" ,lua-5.2)
10102 ("ode" ,ode)
10103 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10104 ("sqlite" ,sqlite)
10105 ("zlib" ,zlib)))
10106 (home-page "https://xmoto.tuxfamily.org/")
10107 (synopsis "2D motocross platform game")
af4796d5
NG
10108 (description "X-Moto is a challenging 2D motocross platform game, where
10109physics play an all important role in the gameplay. You need to control your
10110bike to its limit, if you want to have a chance finishing the more difficult
10111challenges.")
40d2bddd
NG
10112 (license (list license:gpl2+ ;whole project
10113 license:bsd-4 ;src/bzip
10114 license:bsd-3 ;src/md5sum
10115 license:lgpl2.1+ ;src/iqsort.h
10116 license:expat))))
371ca8ca
GLV
10117
10118(define-public eboard
10119 (package
10120 (name "eboard")
10121 (version "1.1.3")
10122 (source
10123 (origin
10124 (method git-fetch)
10125 (uri (git-reference
10126 (url "https://github.com/fbergo/eboard.git")
10127 (commit (string-append "v" version))))
10128 (file-name (git-file-name name version))
10129 (sha256
10130 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10131 (build-system gnu-build-system)
10132 (native-inputs
10133 `(("perl" ,perl)
10134 ("pkg-config" ,pkg-config)))
10135 (inputs
10136 `(("gtk+" ,gtk+-2)
10137 ("libpng" ,libpng)
10138 ("gstreamer" ,gstreamer)))
10139 (arguments
10140 `(#:tests? #f
10141 #:phases
10142 (modify-phases %standard-phases
10143 (replace 'configure
10144 (lambda* (#:key outputs #:allow-other-keys)
10145 (make-file-writable "eboard-config")
10146 (setenv "CC" "gcc")
10147 (invoke "./configure"
10148 (string-append "--prefix=" (assoc-ref outputs "out")))
10149 #t))
10150 (add-before 'install 'make-required-directories
10151 (lambda* (#:key outputs #:allow-other-keys)
10152 (mkdir-p (string-append (assoc-ref outputs "out")
10153 "/share/eboard"))
10154 #t)))))
10155 (synopsis "Graphical user interface to play chess")
10156 (description
10157 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10158and chess engines.")
10159 (home-page "https://www.bergo.eng.br/eboard/")
10160 (license license:gpl2+)))
d8cae6cf
GLV
10161
10162(define-public chessx
10163 (package
10164 (name "chessx")
10165 (version "1.5.0")
10166 (source
10167 (origin
10168 (method url-fetch)
10169 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10170 version "/chessx-" version ".tgz"))
10171 (sha256
10172 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10173 (build-system qt-build-system)
10174 (native-inputs
10175 `(("qttools" ,qttools)))
10176 (inputs
10177 `(("qtbase" ,qtbase)
10178 ("qtmultimedia" ,qtmultimedia)
10179 ("qtsvg" ,qtsvg)
10180 ("zlib" ,zlib)))
10181 (arguments
10182 `(#:tests? #f
10183 #:phases
10184 (modify-phases %standard-phases
10185 (add-after 'unpack 'fix-paths
10186 (lambda* (#:key inputs #:allow-other-keys)
10187 (substitute* "chessx.pro"
10188 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10189 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10190 #t))
10191 (add-after 'fix-paths 'make-qt-deterministic
10192 (lambda _
10193 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10194 #t))
10195 (replace 'configure
10196 (lambda _
10197 (invoke "qmake")
10198 #t))
10199 (replace 'install
10200 (lambda* (#:key outputs #:allow-other-keys)
10201 (let ((out (assoc-ref outputs "out")))
10202 (install-file "release/chessx" (string-append out "/bin"))
10203 (install-file "unix/chessx.desktop"
10204 (string-append out "/share/applications")))
10205 #t)))))
10206 (synopsis "Chess game database")
10207 (description
10208 "ChessX is a chess database. With ChessX you can operate on your
10209collection of chess games in many ways: browse, edit, add, organize, analyze,
10210etc. You can also play games on FICS or against an engine.")
10211 (home-page "http://chessx.sourceforge.net/")
10212 (license license:gpl2+)))
814091ef
GLV
10213
10214(define-public stockfish
10215 (package
10216 (name "stockfish")
10217 (version "11")
10218 (source
10219 (origin
10220 (method git-fetch)
10221 (uri (git-reference
10222 (url "https://github.com/official-stockfish/Stockfish.git")
10223 (commit (string-append "sf_" version))))
10224 (file-name (git-file-name name version))
10225 (sha256
10226 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10227 (build-system gnu-build-system)
10228 (arguments
10229 `(#:tests? #f
10230 #:make-flags (list "-C" "src"
10231 "build"
10232 (string-append "PREFIX="
10233 (assoc-ref %outputs "out"))
10234 (string-append "ARCH="
10235 ,(match (%current-system)
10236 ("x86_64-linux" "x86-64")
10237 ("i686-linux" "x86-32")
10238 ("aarch64-linux" "general-64")
10239 ("armhf-linux" "armv7")
10240 ("mips64el-linux" "general-64")
10241 (_ "general-32"))))
10242 #:phases (modify-phases %standard-phases
10243 (delete 'configure))))
10244 (synopsis "Strong chess engine")
10245 (description
10246 "Stockfish is a very strong chess engines. It is much stronger than the
10247best human chess grandmasters. It can be used with UCI-compatible GUIs like
10248ChessX.")
10249 (home-page "https://stockfishchess.org/")
10250 (license license:gpl3+)))
79a48038
AEFG
10251
10252(define-public barrage
10253 (package
10254 (name "barrage")
10255 (version "1.0.5")
10256 (source
10257 (origin
10258 (method url-fetch)
10259 (uri (string-append "mirror://sourceforge/lgames/barrage/"
10260 "barrage-" version ".tar.gz"))
10261 (sha256
10262 (base32 "0139wxyrir10cbkvkjn548xgmp84wax8mfwk80yxbxlcdamrg257"))))
10263 (build-system gnu-build-system)
10264 (inputs
10265 `(("hicolor-icon-theme" ,hicolor-icon-theme)
10266 ("sdl" ,sdl)
10267 ("sdl-mixer" ,sdl-mixer)))
10268 (arguments
10269 `(#:configure-flags
10270 (list
10271 (string-append "CFLAGS="
10272 "-I" (assoc-ref %build-inputs "sdl-mixer")
10273 "/include/SDL"))))
10274 (home-page "http://lgames.sourceforge.net/Barrage/")
10275 (synopsis "Violent point-and-click shooting game with nice effects")
10276 (description
10277 "Barrage is a rather destructive action game that puts you on a shooting
10278range with the objective to hit as many dummy targets as possible within
102793 minutes. You control a gun that may either fire small or large grenades at
10280soldiers, jeeps and tanks. The gameplay is simple but it is not that easy to
10281get high scores.")
10282 (license license:gpl2+)))
db47adb0
NM
10283
10284(define-public 7kaa
10285 (package
10286 (name "7kaa")
10287 (version "2.15.3")
10288 (source
10289 (origin
10290 (method url-fetch)
10291 (uri (string-append "https://github.com/the3dfxdude/7kaa/"
10292 "releases/download/v" version "/"
10293 "7kaa-" version ".tar.xz"))
10294 (sha256
10295 (base32 "0blj47mcsfw1sn3465j6iham8m6ki07iggnq4q8nnaqnryx710jc"))))
10296 (build-system gnu-build-system)
10297 (native-inputs
10298 `(("gettext" ,gettext-minimal)
10299 ("pkg-config" ,pkg-config)))
10300 (inputs
10301 `(("curl" ,curl)
10302 ("enet" ,enet)
10303 ("openal" ,openal)
10304 ("sdl2" ,sdl2)))
10305 (home-page "https://7kfans.com/")
10306 (synopsis "Seven Kingdoms Ancient Adversaries: real-time strategy game")
10307 (description
10308 "Seven Kingdoms, designed by Trevor Chan, brings a blend of Real-Time
10309Strategy with the addition of trade, diplomacy, and espionage. The game
10310enables players to compete against up to six other kingdoms allowing players
10311to conquer opponents by defeating them in war (with troops or machines),
10312capturing their buildings with spies, or offering opponents money for their
10313kingdom.")
10314 (license license:gpl2+)))
3de5b404
VS
10315
10316(define-public neverball
10317 ;; Git version is 6-years younger than latest release.
10318 (let ((commit "760a25d32a5fb0661b99426d4ddcb9ac9f3d1644")
10319 (revision "1"))
10320 (package
10321 (name "neverball")
10322 (version (git-version "1.6.0" revision commit))
10323 (source
10324 (origin
10325 (method git-fetch)
10326 (uri (git-reference
10327 (url "https://github.com/Neverball/neverball.git")
10328 (commit commit)))
10329 (sha256
10330 (base32
10331 "0bwh67df3lyf33bv710y25l3frjdd34j9b7gsjadwxviz6r1vpj5"))
10332 (file-name (git-file-name name version))
10333 (modules '((guix build utils)))
10334 (snippet
10335 '(begin
10336 ;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
10337 (delete-file-recursively "data/ball/octocat")
10338 #t))))
10339 (build-system copy-build-system)
10340 (arguments
10341 `(#:install-plan
10342 '(("neverball" "bin/")
10343 ("neverputt" "bin/")
10344 ("mapc" "bin/")
10345 ("data" "share/games/neverball/")
10346 ("locale" "share/")
10347 ("dist/" "share/games/neverball" #:include ("neverball_replay.png"
10348 "neverlogos.svg"
10349 "svg readme.txt"))
10350 ("dist/" "share/applications" #:include ("neverball.desktop"
10351 "neverputt.desktop"))
10352 ("dist/neverball_16.png"
10353 "/share/icons/hicolor/16x16/apps/neverball.png")
10354 ("dist/neverball_24.png"
10355 "/share/icons/hicolor/24x24/apps/neverball.png")
10356 ("dist/neverball_32.png"
10357 "/share/icons/hicolor/32x32/apps/neverball.png")
10358 ("dist/neverball_48.png"
10359 "/share/icons/hicolor/48x48/apps/neverball.png")
10360 ("dist/neverball_64.png"
10361 "/share/icons/hicolor/64x64/apps/neverball.png")
10362 ("dist/neverball_128.png"
10363 "/share/icons/hicolor/128x128/apps/neverball.png")
10364 ("dist/neverball_256.png"
10365 "/share/icons/hicolor/256x256/apps/neverball.png")
10366 ("dist/neverball_512.png"
10367 "/share/icons/hicolor/512x512/apps/neverball.png")
10368 ("dist/neverputt_16.png"
10369 "/share/icons/hicolor/16x16/apps/neverputt.png")
10370 ("dist/neverputt_24.png"
10371 "/share/icons/hicolor/24x24/apps/neverputt.png")
10372 ("dist/neverputt_32.png"
10373 "/share/icons/hicolor/32x32/apps/neverputt.png")
10374 ("dist/neverputt_48.png"
10375 "/share/icons/hicolor/48x48/apps/neverputt.png")
10376 ("dist/neverputt_64.png"
10377 "/share/icons/hicolor/64x64/apps/neverputt.png")
10378 ("dist/neverputt_128.png"
10379 "/share/icons/hicolor/128x128/apps/neverputt.png")
10380 ("dist/neverputt_256.png"
10381 "/share/icons/hicolor/256x256/apps/neverputt.png")
10382 ("dist/neverputt_512.png"
10383 "/share/icons/hicolor/512x512/apps/neverputt.png")
10384 ("dist/" "share/man/man1" #:include ("mapc.1"))
10385 ("dist/" "share/man/man6" #:include ("neverball.6" "neverputt.6"))
10386 ("doc/" "share/doc/neverball")
10387 ("README.md" "share/doc/neverball/"))
10388 #:phases
10389 (modify-phases %standard-phases
10390 (add-before 'install 'build
10391 (lambda* (#:key inputs outputs #:allow-other-keys)
10392 (let* ((out (assoc-ref outputs "out"))
10393 (sdl (assoc-ref inputs "sdl")))
10394 (invoke "make" "-j" (number->string (parallel-job-count))
10395 "--environment-overrides"
10396 "CC=gcc" "BUILD=release"
10397 (string-append "DATADIR="
10398 out
10399 "/share/games/neverball/data")
10400 (string-append "LOCALEDIR=" out "/share/locale")
10401 (string-append "SDL_CPPFLAGS=-I"
10402 sdl
10403 "/include/SDL2/")))
10404 #t))
10405 (add-after 'install 'fix-some-broken-fonts
10406 (lambda* (#:key outputs #:allow-other-keys)
10407 (let* ((out (assoc-ref outputs "out")))
10408 (wrap-program (string-append out "/bin/neverball")
10409 `("LANG" = ("en_US.utf8")))
10410 (wrap-program (string-append out "/bin/neverputt")
10411 `("LANG" = ("en_US.utf8"))))
10412 #t)))))
10413 (native-inputs
10414 `(("gettext" ,gettext-minimal))) ;for msgfmt
10415 (inputs
10416 `(("libjpeg" ,libjpeg)
10417 ("libpng" ,libpng)
10418 ("libvorbis" ,libvorbis)
10419 ("physfs" ,physfs)
10420 ("sdl" ,(sdl-union (list sdl2 sdl2-ttf)))))
10421 (home-page "https://neverball.org/")
10422 (synopsis "3D floor-tilting game")
10423 (description
10424 "In the grand tradition of Marble Madness and Super Monkey Ball,
10425Neverball has you guide a rolling ball through dangerous territory. Balance
10426on narrow bridges, navigate mazes, ride moving platforms, and dodge pushers
10427and shovers to get to the goal. Race against the clock to collect coins to
10428earn extra balls. Also included is Neverputt, which is a 3D miniature golf
10429game.") ;thanks to Debian for description
10430 (license license:gpl2+))))