gnu: mbedtls-apache: Update to 2.16.5.
[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>
490c6528
JD
49;;;
50;;; This file is part of GNU Guix.
51;;;
52;;; GNU Guix is free software; you can redistribute it and/or modify it
53;;; under the terms of the GNU General Public License as published by
54;;; the Free Software Foundation; either version 3 of the License, or (at
55;;; your option) any later version.
56;;;
57;;; GNU Guix is distributed in the hope that it will be useful, but
58;;; WITHOUT ANY WARRANTY; without even the implied warranty of
59;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60;;; GNU General Public License for more details.
61;;;
62;;; You should have received a copy of the GNU General Public License
63;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
64
65(define-module (gnu packages games)
158f5734 66 #:use-module (ice-9 match)
024e2c17
DT
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix utils)
490c6528
JD
69 #:use-module (guix packages)
70 #:use-module (guix download)
c23c50c7 71 #:use-module (guix git-download)
e11b2752 72 #:use-module (guix svn-download)
bff33e6c 73 #:use-module (guix gexp)
a83c6a64 74 #:use-module (gnu packages)
3307c787 75 #:use-module (gnu packages algebra)
e11b2752 76 #:use-module (gnu packages autotools)
03d521f9 77 #:use-module (gnu packages backup)
7e51e5bc 78 #:use-module (gnu packages base)
b77e3a1c 79 #:use-module (gnu packages build-tools)
11c38cbe 80 #:use-module (gnu packages admin)
f2fac359 81 #:use-module (gnu packages audio)
7e2e1155 82 #:use-module (gnu packages avahi)
1faf0a04 83 #:use-module (gnu packages assembly)
35d5fa76
EF
84 #:use-module (gnu packages bash)
85 #:use-module (gnu packages bison)
a83c6a64 86 #:use-module (gnu packages boost)
35d5fa76
EF
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages cmake)
89 #:use-module (gnu packages compression)
90 #:use-module (gnu packages curl)
706d6190 91 #:use-module (gnu packages crypto)
35d5fa76 92 #:use-module (gnu packages cyrus-sasl)
0b5d078f 93 #:use-module (gnu packages documentation)
dec63df4 94 #:use-module (gnu packages docbook)
e93352d6 95 #:use-module (gnu packages emulators)
35d5fa76 96 #:use-module (gnu packages flex)
d2563973 97 #:use-module (gnu packages fltk)
35d5fa76
EF
98 #:use-module (gnu packages fonts)
99 #:use-module (gnu packages fontutils)
540dd1c8 100 #:use-module (gnu packages freedesktop)
c23c50c7
RW
101 #:use-module (gnu packages fribidi)
102 #:use-module (gnu packages game-development)
940c2c5c 103 #:use-module (gnu packages gcc)
490c6528 104 #:use-module (gnu packages gettext)
9b1ada4e 105 #:use-module (gnu packages ghostscript)
4df9495e 106 #:use-module (gnu packages gimp)
490c6528 107 #:use-module (gnu packages gl)
bf0018cd 108 #:use-module (gnu packages glib)
490c6528 109 #:use-module (gnu packages gnome)
35d5fa76 110 #:use-module (gnu packages gnuzilla)
9b1ada4e 111 #:use-module (gnu packages gperf)
aac1aa75 112 #:use-module (gnu packages graphics)
35d5fa76 113 #:use-module (gnu packages gstreamer)
490c6528
JD
114 #:use-module (gnu packages gtk)
115 #:use-module (gnu packages guile)
1abe2e2a
NG
116 #:use-module (gnu packages haskell)
117 #:use-module (gnu packages haskell-crypto)
dddbc90c 118 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
119 #:use-module (gnu packages icu4c)
120 #:use-module (gnu packages image)
0b5d078f 121 #:use-module (gnu packages imagemagick)
3c1c5622
HG
122 #:use-module (gnu packages kde)
123 #:use-module (gnu packages kde-frameworks)
3bd0d186 124 #:use-module (gnu packages less)
bf0018cd 125 #:use-module (gnu packages libcanberra)
721e1987 126 #:use-module (gnu packages libedit)
67fa7a27 127 #:use-module (gnu packages libunwind)
35d5fa76 128 #:use-module (gnu packages linux)
fdd9ab37 129 #:use-module (gnu packages llvm)
35d5fa76 130 #:use-module (gnu packages lua)
a9249f58
KK
131 #:use-module (gnu packages man)
132 #:use-module (gnu packages maths)
c23c50c7 133 #:use-module (gnu packages mp3)
26a657f0 134 #:use-module (gnu packages music)
dc70ff2a 135 #:use-module (gnu packages multiprecision)
3cf118a1 136 #:use-module (gnu packages ncurses)
9b1ada4e 137 #:use-module (gnu packages netpbm)
162a4a03 138 #:use-module (gnu packages networking)
b3de5ff2 139 #:use-module (gnu packages ocaml)
fbfc07bd 140 #:use-module (gnu packages opencl)
35d5fa76
EF
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages perl-check)
144 #:use-module (gnu packages pkg-config)
145 #:use-module (gnu packages pulseaudio)
bf0018cd 146 #:use-module (gnu packages python)
44d10b1f 147 #:use-module (gnu packages python-xyz)
35d5fa76 148 #:use-module (gnu packages qt)
bf0018cd 149 #:use-module (gnu packages readline)
be6e2c30 150 #:use-module (gnu packages shells)
3da5dca3 151 #:use-module (gnu packages sdl)
7fc90282 152 #:use-module (gnu packages serialization)
cd0322a3 153 #:use-module (gnu packages sqlite)
8698d986 154 #:use-module (gnu packages squirrel)
bd71525b 155 #:use-module (gnu packages swig)
67fa7a27 156 #:use-module (gnu packages tcl)
1bba3e8c 157 #:use-module (gnu packages terminals)
35d5fa76
EF
158 #:use-module (gnu packages texinfo)
159 #:use-module (gnu packages textutils)
751c7040 160 #:use-module (gnu packages tls)
0b608ec4 161 #:use-module (gnu packages upnp)
35d5fa76 162 #:use-module (gnu packages video)
01564e5a 163 #:use-module (gnu packages vulkan)
7aafb3b3 164 #:use-module (gnu packages web)
8044e584 165 #:use-module (gnu packages wget)
35d5fa76
EF
166 #:use-module (gnu packages wxwidgets)
167 #:use-module (gnu packages xdisorg)
168 #:use-module (gnu packages xorg)
169 #:use-module (gnu packages xiph)
170 #:use-module (gnu packages xml)
171 #:use-module (gnu packages messaging)
172 #:use-module (gnu packages networking)
39c676c4 173 #:use-module (guix build-system glib-or-gtk)
a6b55314 174 #:use-module (guix build-system gnu)
57f9671d 175 #:use-module (guix build-system go)
18ebaa9e 176 #:use-module (guix build-system meson)
560df540 177 #:use-module (guix build-system scons)
b0488fe5 178 #:use-module (guix build-system python)
19b396bf 179 #:use-module (guix build-system cmake)
3c1c5622 180 #:use-module (guix build-system qt)
296c8484
EF
181 #:use-module (guix build-system trivial)
182 #:use-module ((srfi srfi-1) #:hide (zip))
183 #:use-module (srfi srfi-26))
490c6528 184
4fee5ec0
KK
185;; Data package for adanaxisgpl.
186(define adanaxis-mush
187 (let ((version "1.1.0"))
188 (origin
189 (method url-fetch)
190 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
191 version ".tar.gz"))
192 (sha256
193 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
194
195(define-public adanaxisgpl
196 (package
197 (name "adanaxisgpl")
198 (version "1.2.5")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
203 version ".tar.gz"))
204 (sha256
205 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
206 (modules '((guix build utils)))
207 (snippet
208 '(begin
209 ;; Necessary for building with gcc >=4.7.
210 (substitute* "src/Mushcore/MushcoreSingleton.h"
211 (("SingletonPtrSet\\(new SingletonType\\);")
212 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
213 ;; Avoid an "invalid conversion from const char* to char*" error.
214 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
215 (("char \\*end, \\*result;")
216 (string-append "const char *end;"
217 "\n"
218 "char *result;")))
219 #t))))
220 (build-system gnu-build-system)
221 (arguments
222 `(#:tests? #f ; no check target
223 #:phases
224 (modify-phases %standard-phases
225 (add-after 'install 'install-data
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let ((data (assoc-ref inputs "adanaxis-mush"))
228 (share (string-append (assoc-ref outputs "out")
229 "/share/" ,name "-" ,version)))
230 (mkdir-p share)
231 (invoke "tar" "xvf" data "-C" share)))))))
232 (native-inputs
233 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
234 (inputs
235 `(("expat" ,expat)
236 ("freeglut" ,freeglut)
237 ("glu" ,glu)
238 ("libjpeg" ,libjpeg)
239 ("libogg" ,libogg)
240 ("libtiff" ,libtiff)
241 ("libvorbis" ,libvorbis)
242 ("libx11" ,libx11)
243 ("libxext" ,libxext)
244 ("pcre" ,pcre)
245 ("sdl" ,sdl)
246 ("sdl-mixer" ,sdl-mixer)))
247 (home-page "https://www.mushware.com")
248 (synopsis "Action game in four spatial dimensions")
249 (description
250 "Adanaxis is a fast-moving first person shooter set in deep space, where
251the fundamentals of space itself are changed. By adding another dimension to
252space this game provides an environment with movement in four directions and
253six planes of rotation. Initially the game explains the 4D control system via
254a graphical sequence, before moving on to 30 levels of gameplay with numerous
255enemy, ally, weapon and mission types. Features include simulated 4D texturing,
256mouse and joystick control, and original music.")
257 (license license:gpl2)))
258
f9fee46f
KK
259(define-public alex4
260 (package
261 (name "alex4")
8ef3f2e3 262 (version "1.2.1")
f9fee46f
KK
263 (source
264 (origin
359a57b6
TGR
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/carstene1ns/alex4.git")
268 (commit version)))
269 (file-name (git-file-name name version))
f9fee46f 270 (sha256
8ef3f2e3 271 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
272 (build-system gnu-build-system)
273 (arguments
359a57b6 274 `(#:tests? #f ; no check target
f9fee46f 275 #:make-flags
8ef3f2e3 276 (list "CC=gcc"
f9fee46f 277 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
278 (string-append "PREFIX=" (assoc-ref %outputs "out")))
279 #:phases
280 (modify-phases %standard-phases
8ef3f2e3 281 (delete 'configure) ; no configure script
f9fee46f
KK
282 (add-after 'install 'install-data
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((share (string-append (assoc-ref outputs "out")
285 "/share/" ,name)))
286 (install-file "alex4.ini" share)
287 #t))))))
288 (inputs
289 `(("allegro" ,allegro-4)
290 ("dumb" ,dumb-allegro4)))
291 (home-page "http://allegator.sourceforge.net/")
292 (synopsis "Retro platform game")
293 (description
294 "Guide Alex the Allegator through the jungle in order to save his
295girlfriend Lola from evil humans who want to make a pair of shoes out of her.
296Plenty of classic platforming in four nice colors guaranteed!
297
298The game includes a built-in editor so you can design and share your own maps.")
299 (license license:gpl2+)))
300
649220ad 301(define-public armagetronad
a70d06b5 302 (package
649220ad 303 (name "armagetronad")
a70d06b5
RJ
304 (version "0.2.8.3.4")
305 (source (origin
306 (method url-fetch)
c0c09950
TGR
307 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
308 version "/armagetronad-" version ".src.tar.gz"))
a70d06b5
RJ
309 (sha256
310 (base32
311 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
312 (build-system gnu-build-system)
313 (inputs
314 `(("libxml2" ,libxml2)
315 ("sdl" ,sdl)
316 ("sdl-image" ,sdl-image)
317 ("freeglut" ,freeglut)
318 ("libpng" ,libpng)
319 ("libjpeg-turbo" ,libjpeg-turbo)))
320 (home-page "http://www.armagetronad.org")
321 (synopsis "Tron clone in 3D")
df42e0f9
PN
322 (description "Armagetron Advanced is a multiplayer game in 3d that
323attempts to emulate and expand on the lightcycle sequence from the movie Tron.
324It's an old school arcade game slung into the 21st century. Highlights
325include a customizable playing arena, HUD, unique graphics, and AI bots. For
326the more advanced player there are new game modes and a wide variety of
327physics settings to tweak as well.")
a70d06b5
RJ
328 (license license:gpl2+)))
329
649220ad
NG
330(define-public armagetron-advanced
331 (deprecated-package "armagetron-advanced" armagetronad))
df42e0f9 332
fc473814
TGR
333(define-public bastet
334 (package
335 (name "bastet")
336 (version "0.43.2")
337 (source
338 (origin
339 (method git-fetch)
340 (uri (git-reference
341 (url "https://github.com/fph/bastet.git")
342 (commit version)))
343 (file-name (git-file-name name version))
344 (sha256
345 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
346 (patches
347 (search-patches "bastet-change-source-of-unordered_set.patch"))))
348 (build-system gnu-build-system)
349 (arguments
350 `(#:make-flags
351 (list (string-append "CXXFLAGS=-I"
352 (assoc-ref %build-inputs "boost") "/include"))
353 #:phases
354 (modify-phases %standard-phases
355 (delete 'configure) ; no configure script
356 (replace 'check
357 ;; The 'Test' target builds the tests, but doesn't actually run them.
358 (lambda* (#:key make-flags #:allow-other-keys)
359 (apply invoke "make" "Test" make-flags)
360 (setenv "HOME" ".")
361 (invoke "./Test")))
362 (replace 'install
363 (lambda* (#:key outputs #:allow-other-keys)
364 (let* ((out (assoc-ref outputs "out"))
365 (share (string-append out "/share"))
366 (hicolor (string-append share "/icons/hicolor")))
367 (install-file "bastet"
368 (string-append out "/bin"))
369
370 (install-file "bastet.desktop"
371 (string-append share "/applications"))
372 (install-file "bastet.svg"
373 (string-append hicolor "/scalable/apps"))
374
375 (install-file "bastet.appdata.xml"
376 (string-append share "/appdata"))
377
378 (install-file "bastet.6"
379 (string-append out "/share/man/man6"))
380 #t))))))
381 (native-inputs
382 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
383 (inputs
384 `(("boost" ,boost)
385 ("ncurses" ,ncurses)))
386 (home-page "http://fph.altervista.org/prog/bastet.html")
387 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
388 (description
389 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
390game. Unlike normal Tetris, Bastet does not choose the next brick at random.
391Instead, it uses a special algorithm to choose the worst brick possible.
392
393Playing bastet can be a painful experience, especially if you usually make
394canyons and wait for the long I-shaped block to clear four rows at a time.")
395 (license license:gpl3+)))
396
649220ad 397(define-public cataclysm-dda
1c4d4196 398 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
529701aa
KK
399 (package
400 (name "cataclysm-dda")
1c4d4196 401 (version "0.D")
529701aa
KK
402 (source (origin
403 (method git-fetch)
404 (uri (git-reference
405 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
406 (commit commit)))
407 (sha256
408 (base32
1c4d4196 409 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
529701aa
KK
410 (file-name (git-file-name name version))))
411 (build-system gnu-build-system)
412 (arguments
413 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
28407818
NG
414 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
415 "LOCALIZE=1" "LANGUAGES=all")
529701aa
KK
416 #:phases
417 (modify-phases %standard-phases
418 (delete 'configure)
419 (add-after 'build 'build-tiles
420 (lambda* (#:key make-flags outputs #:allow-other-keys)
421 ;; Change prefix directory and enable tile graphics and sound.
422 (apply invoke "make" "TILES=1" "SOUND=1"
423 (string-append "PREFIX="
424 (assoc-ref outputs "tiles"))
425 (cdr make-flags))))
426 (add-after 'install 'install-tiles
427 (lambda* (#:key make-flags outputs #:allow-other-keys)
428 (apply invoke "make" "install" "TILES=1" "SOUND=1"
429 (string-append "PREFIX="
430 (assoc-ref outputs "tiles"))
431 (cdr make-flags)))))
432 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
433 ;; input in order to support tests.
434 #:tests? #f))
435 (outputs '("out"
436 "tiles")) ; For tile graphics and sound support.
437 (native-inputs
438 `(("gettext" ,gettext-minimal)
439 ("pkg-config" ,pkg-config)))
440 (inputs
441 `(("freetype" ,freetype)
442 ("libogg" ,libogg)
443 ("libvorbis" ,libvorbis)
444 ("ncurses" ,ncurses)
445 ("sdl2" ,sdl2)
446 ("sdl2-image" ,sdl2-image)
447 ("sdl2-ttf" ,sdl2-ttf)
448 ("sdl2-mixer" ,sdl2-mixer)))
39604beb 449 (home-page "https://cataclysmdda.org/")
529701aa
KK
450 (synopsis "Survival horror roguelike video game")
451 (description
973bd8a6
PN
452 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
453in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
454procedurally generated world. Scavenge the remnants of a dead civilization
455for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
456to get you out of Dodge. Fight to defeat or escape from a wide variety of
457powerful monstrosities, from zombies to giant insects to killer robots and
458things far stranger and deadlier, and against the others like yourself, that
459want what you have.")
529701aa 460 (license license:cc-by-sa3.0))))
20214f71 461
649220ad
NG
462(define-public cataclysm-dark-days-ahead
463 (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
973bd8a6 464
57b6caef
TL
465(define-public corsix-th
466 (package
467 (name "corsix-th")
468 (version "0.63")
469 (source
470 (origin
471 (method git-fetch)
472 (uri (git-reference
473 (url "https://github.com/CorsixTH/CorsixTH.git")
474 (commit (string-append "v" version))))
475 (file-name (git-file-name name version))
476 (sha256
477 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
478 (build-system cmake-build-system)
479 (arguments
480 `(#:phases
481 (modify-phases %standard-phases
482 (add-after 'install 'wrap-binary
483 (lambda _
484 ;; Set Lua module paths and default MIDI soundfont on startup.
485 (let* ((out (assoc-ref %outputs "out"))
486 (fluid (assoc-ref %build-inputs "fluid-3"))
487 (lua-version ,(version-major+minor (package-version lua)))
488 (lua-cpath
489 (map (lambda (lib)
490 (string-append
491 (assoc-ref %build-inputs (string-append "lua-" lib))
492 "/lib/lua/" lua-version "/?.so"))
493 '("filesystem" "lpeg"))))
494 (wrap-program (string-append out "/bin/corsix-th")
495 `("LUA_CPATH" ";" = ,lua-cpath)
496 `("SDL_SOUNDFONTS" ":" suffix
497 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
498 #t)))
499 #:tests? #f)) ; TODO need busted package to run tests
500 ;; Omit Lua-Socket dependency to disable automatic updates.
501 (inputs
502 `(("ffmpeg" ,ffmpeg)
503 ("fluid-3" ,fluid-3)
504 ("freetype" ,freetype)
505 ("lua" ,lua)
506 ("lua-filesystem" ,lua-filesystem)
507 ("lua-lpeg" ,lua-lpeg)
508 ("sdl2" ,sdl2)
509 ("sdl2-mixer" ,sdl2-mixer)))
510 (home-page "https://corsixth.com")
511 (synopsis "Implementation of the @i{Theme Hospital} game engine")
512 (description
513 "This package provides a reimplementation of the 1997 Bullfrog business
514simulation game @i{Theme Hospital}. As well as faithfully recreating the
515original engine, CorsixTH adds support for high resolutions, custom levels and
516more. This package does @emph{not} provide the game assets.")
517 (license (list
518 license:expat ; main license
519 license:bsd-3)))) ; CorsixTH/Src/random.c
520
620b0468
RW
521(define-public cowsay
522 (package
523 (name "cowsay")
46ba5337 524 (version "3.04")
620b0468 525 (source (origin
7afb97fd
EF
526 (method git-fetch)
527 (uri (git-reference
528 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
529 (commit (string-append name "-" version))))
530 (file-name (git-file-name name version))
620b0468
RW
531 (sha256
532 (base32
7afb97fd 533 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
534 (build-system gnu-build-system)
535 (arguments
536 `(#:phases
537 (modify-phases %standard-phases
6c0c1752
TGR
538 (delete 'configure) ; no configure script
539 (delete 'build) ; nothing to be built
540 (replace 'install
620b0468 541 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
542 (invoke "sh" "install.sh"
543 (assoc-ref outputs "out"))))
1ee3079d
EF
544 (delete 'check)
545 (add-after 'install 'check
620b0468 546 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
547 (invoke (string-append (assoc-ref outputs "out")
548 "/bin/cowsay")
549 "We're done!"))))))
620b0468
RW
550 (inputs
551 `(("perl" ,perl)))
552 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 553 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
554 (synopsis "Speaking cow text filter")
555 (description "Cowsay is basically a text filter. Send some text into it,
556and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
557cows can think too: all you have to do is run @command{cowthink}. If you're
558tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
559 (license license:gpl3+)))
560
4dbd704d
LP
561(define-public lolcat
562 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
563 (revision "0"))
564 (package
565 (name "lolcat")
566 (version (git-version "1.0" revision commit))
567 (source
568 (origin
569 (method git-fetch)
570 (uri (git-reference
571 (url "https://github.com/jaseg/lolcat.git")
572 (commit commit)))
573 (sha256
574 (base32
575 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
576 (file-name (git-file-name name version))))
577 (build-system gnu-build-system)
578 (arguments
579 `(#:tests? #f ;; no check target
580 #:make-flags (list "CC=gcc")
581 #:phases
582 (modify-phases %standard-phases
583 (delete 'bootstrap)
584 (delete 'configure)
585 (replace 'install
586 (lambda* (#:key outputs #:allow-other-keys)
587 (let* ((out (assoc-ref outputs "out"))
588 (dest (string-append out "/bin")))
589 (mkdir-p dest)
590 (install-file "lolcat" dest)
591 (install-file "censor" dest)
592 #t))))))
593 (home-page "https://github.com/jaseg/lolcat")
594 (synopsis "Rainbow coloring effect for text console display")
595 (description "@command{lolcat} concatenates files and streams like
596regular @command{cat}, but it also adds terminal escape codes between
597characters and lines resulting in a rainbow effect.")
598 (license license:wtfpl2))))
599
0b5d078f
KK
600(define-public freedoom
601 (package
9303b09a 602 (name "freedoom")
78a3da3d 603 (version "0.12.1")
9303b09a
TGR
604 (source
605 (origin
606 (method git-fetch)
607 (uri (git-reference
608 (url "https://github.com/freedoom/freedoom.git")
609 (commit (string-append "v" version))))
610 (file-name (git-file-name name version))
611 (sha256
78a3da3d 612 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
613 (build-system gnu-build-system)
614 (arguments
615 '(#:make-flags
616 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
617 #:tests? #f ; no check target
618 #:phases
619 (modify-phases %standard-phases
620 (delete 'bootstrap)
621 (replace 'configure
622 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 623 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 624 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
625 ;; Make sure that the install scripts know where to find
626 ;; the appropriate WAD files.
627 (substitute* "dist/freedoom"
628 (("IWAD=freedm.wad")
629 (string-append "IWAD=" wad-dir "/freedm.wad"))
630 (("IWAD=freedoom1.wad")
631 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
632 (("IWAD=freedoom2.wad")
633 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
634 #t))))))
635 (native-inputs
636 `(("asciidoc" ,asciidoc)
637 ("deutex" ,deutex)
78a3da3d
KK
638 ("python" ,python)
639 ("python-pillow" ,python-pillow)))
9303b09a
TGR
640 (home-page "https://freedoom.github.io/")
641 (synopsis "Free content game based on the Doom engine")
642 (native-search-paths
643 (list (search-path-specification
644 (variable "DOOMWADDIR")
645 (files '("share/games/doom")))
646 (search-path-specification
647 (variable "DOOMWADPATH")
648 (files '("share/games/doom")))))
649 (description
650 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
651shooter game. Freedoom by itself is just the raw material for a game: it must
652be paired with a compatible game engine (such as @code{prboom-plus}) to be
653played. Freedoom complements the Doom engine with free levels, artwork, sound
654effects and music to make a completely free game.")
9303b09a 655 (license license:bsd-3)))
0b5d078f 656
18995af2
TGR
657(define-public freedroidrpg
658 (package
659 (name "freedroidrpg")
660 (version "0.16.1")
661 (source
662 (origin
663 (method url-fetch)
664 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
665 "freedroidRPG-" (version-major+minor version) "/"
666 "freedroidRPG-" version ".tar.gz"))
667 (sha256
668 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
669 (build-system gnu-build-system)
670 (arguments
671 `(#:configure-flags
672 (list
673 (string-append "CFLAGS="
674 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
675 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
676 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
677 "--enable-opengl")
678 ;; FIXME: the test suite fails with the following error output:
679 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
680 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
681 #:tests? #f))
682 (native-inputs
683 `(("pkg-config" ,pkg-config)))
684 (inputs
685 `(("glu" ,glu)
686 ("libjpeg" ,libjpeg)
687 ("libogg" ,libogg)
688 ("libpng" ,libpng)
689 ("libvorbis" ,libvorbis)
690 ("mesa" ,mesa)
691 ("python" ,python-wrapper)
692 ("sdl" ,sdl)
693 ("sdl-gfx" ,sdl-gfx)
694 ("sdl-image" ,sdl-image)
695 ("sdl-mixer" ,sdl-mixer)
696 ("zlib" ,zlib)))
697 (home-page "http://www.freedroid.org/")
698 (synopsis "Isometric role-playing game against killer robots")
699 (description
700 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
701The game tells the story of a world destroyed by a conflict between robots and
702their human masters. To restore peace to humankind, the player must complete
703numerous quests while fighting off rebelling robots---either by taking control
704of them, or by simply blasting them to pieces with melee and ranged weapons in
705real-time combat.")
706 (license (list license:expat ; lua/
707 license:gpl3 ; src/gen_savestruct.py
708 license:gpl2+)))) ; the rest
709
06f5f0b1
KK
710(define-public golly
711 (package
712 (name "golly")
106c6aa5 713 (version "3.3")
06f5f0b1
KK
714 (source (origin
715 (method url-fetch)
04e7b1e7 716 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
717 version "/golly-" version
718 "-src.tar.gz"))
719 (sha256
720 (base32
106c6aa5 721 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
06f5f0b1
KK
722 (build-system gnu-build-system)
723 (arguments
724 '(#:make-flags (list "CC=gcc"
725 (string-append "GOLLYDIR="
726 (assoc-ref %outputs "out")
727 "/share/golly"))
728 #:tests? #f ; no check target
729 #:phases
730 (modify-phases %standard-phases
731 (replace 'configure
732 (lambda* (#:key inputs #:allow-other-keys)
733 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
734 ;; properly set the path to the Python shared library. This
735 ;; substitution acheives the same end by different means.
736 (substitute* "gui-wx/wxprefs.cpp"
737 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
738 (string-append "pythonlib = \""
739 (assoc-ref inputs "python")
740 "/lib/libpython-2.7.so\"")))
741 #t))
742 (replace 'build
743 (lambda* (#:key make-flags outputs #:allow-other-keys)
744 (with-directory-excursion "gui-wx"
745 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
746 (replace 'install
747 (lambda* (#:key outputs #:allow-other-keys)
748 (let* ((out (assoc-ref outputs "out"))
749 (bin (string-append out "/bin"))
750 (doc (string-append out "/share/doc/golly"))
751 (pixmaps (string-append out "/share/pixmaps"))
752 (share (string-append out "/share/golly")))
753 (for-each (lambda (binary)
754 (install-file binary bin))
755 '("bgolly" "golly"))
756 (for-each (lambda (document)
757 (install-file
758 (string-append "docs/" document ".html")
759 doc))
760 '("License" "ReadMe" "ToDo"))
761 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
762 (for-each (lambda (folder)
763 (copy-recursively
764 folder
765 (string-append share "/" folder)))
766 '("Help" "Patterns" "Rules" "Scripts")))
767 #t)))))
768 (native-inputs
769 `(("lua" ,lua)))
770 (inputs
771 `(("glu" ,glu)
772 ("mesa" ,mesa)
773 ("python" ,python-2)
774 ("wxwidgets" ,wxwidgets-gtk2)
775 ("zlib" ,zlib)))
776 (home-page "http://golly.sourceforge.net/")
777 (synopsis "Software for exploring cellular automata")
778 (description
779 "Golly simulates Conway's Game of Life and many other types of cellular
780automata. The following features are available:
781@enumerate
782@item Support for bounded and unbounded universes, with cells of up to 256
783 states.
784@item Support for multiple algorithms, including Bill Gosper's Hashlife
785 algorithm.
786@item Loading patterns from BMP, PNG, GIF and TIFF image files.
787@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
788@item Scriptable via Lua or Python.
789@item Extracting patterns, rules and scripts from zip files.
790@item Downloading patterns, rules and scripts from online archives.
791@item Pasting patterns from the clipboard.
792@item Unlimited undo/redo.
793@item Configurable keyboard shortcuts.
794@item Auto fit option to keep patterns within the view.
795@end enumerate")
796 (license license:gpl2+)))
797
299e15c1
TL
798(define-public julius
799 (package
800 (name "julius")
45cf3c30 801 (version "1.3.0")
299e15c1
TL
802 (source
803 (origin
804 (method git-fetch)
805 (uri (git-reference
806 (url "https://github.com/bvschaik/julius.git")
807 (commit (string-append "v" version))))
808 (file-name (git-file-name name version))
809 (sha256
45cf3c30 810 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
299e15c1
TL
811 (build-system cmake-build-system)
812 (inputs
813 `(("sdl2" ,sdl2)
814 ("sdl2-mixer" ,sdl2-mixer)))
815 (home-page "https://github.com/bvschaik/julius")
816 (synopsis "Re-implementation of Caesar III game engine")
817 (description
818 "Engine for Caesar III, a city-building real-time strategy game.
819Julius includes some UI enhancements while preserving the logic (including
820bugs) of the original game, so that saved games are compatible. This package
821does not include game data.")
822 (license (list license:agpl3
823 license:expat ; ext/dirent
824 license:zlib)))) ; ext/tinyfiledialogs
825
5145001a
RW
826(define-public meandmyshadow
827 (package
828 (name "meandmyshadow")
b70ff03e 829 (version "0.5a")
5145001a
RW
830 (source (origin
831 (method url-fetch)
832 (uri (string-append "mirror://sourceforge/meandmyshadow/"
833 version "/meandmyshadow-" version
834 "-src.tar.gz"))
835 (sha256
836 (base32
b70ff03e 837 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
838 (build-system cmake-build-system)
839 (arguments
1d9a9d27 840 `(#:tests? #f)) ; there are no tests
5145001a
RW
841 (native-inputs
842 `(("pkg-config" ,pkg-config)))
843 (inputs
1d9a9d27 844 `(("curl" ,curl)
5145001a 845 ("libarchive" ,libarchive)
1d9a9d27
TGR
846 ("lua" ,lua)
847 ("sdl" ,(sdl-union (list sdl2
848 sdl2-image
849 sdl2-mixer
850 sdl2-ttf)))))
b590951f 851 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
852 (synopsis "Puzzle/platform game")
853 (description "Me and My Shadow is a puzzle/platform game in which you try
854to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
855and much more stand between you and the exit. Record your moves and let your
856shadow mimic them to reach blocks you couldn't reach alone.")
857 (license license:gpl3+)))
858
a02ca033
TL
859(define-public opensurge
860 (package
861 (name "opensurge")
862 (version "0.5.1.2")
863 (source
864 (origin
865 (method git-fetch)
866 (uri (git-reference
867 (url "https://github.com/alemart/opensurge.git")
868 (commit (string-append "v" version))))
869 (file-name (git-file-name name version))
870 (sha256
871 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
872 (build-system cmake-build-system)
873 (arguments
874 `(#:tests? #f ;there are no tests
875 #:configure-flags
876 (let* ((out (assoc-ref %outputs "out"))
877 (share (string-append out "/share")))
878 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
879 (string-append "-DGAME_DATADIR=" share "/" ,name)
880 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
881 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
882 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
883 #:phases
884 (modify-phases %standard-phases
885 (add-after 'unpack 'fix-xdg-open-path
886 (lambda* (#:key inputs #:allow-other-keys)
887 ;; Look for xdg-open in the store.
888 (substitute* "src/core/web.c"
889 (("/usr(/bin/xdg-open)" _ bin)
890 (string-append (assoc-ref inputs "xdg-utils") bin)))
891 #t))
892 (add-after 'unpack 'unbundle-fonts
893 (lambda* (#:key inputs #:allow-other-keys)
894 ;; Replace bundled Roboto fonts with links to the store.
895 (with-directory-excursion "fonts"
896 (let ((roboto-dir (string-append
897 (assoc-ref inputs "font-google-roboto")
898 "/share/fonts/truetype/")))
899 (for-each
900 (lambda (font)
901 (delete-file font)
902 (symlink (string-append roboto-dir font) font))
903 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
904 #t))))))
905 (inputs
906 `(("allegro" ,allegro)
907 ("font-google-roboto" ,font-google-roboto)
908 ("surgescript" ,surgescript)
909 ("xdg-utils" ,xdg-utils)))
910 (home-page "https://opensurge2d.org")
911 (synopsis "2D retro side-scrolling game")
912 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
913inspired by the Sonic games. The player runs at high speeds through each
914level while collecting items and avoiding obstacles. The game includes a
915built-in level editor.")
916 (license
917 ;; Code is under GPL 3+, assets are under various licenses.
918 ;; See src/misc/credits.c for details.
919 (list license:gpl3+
920 license:cc0
921 license:cc-by3.0
922 license:cc-by-sa3.0
923 license:expat
924 license:public-domain
925 license:silofl1.1))))
926
02345c96
RW
927(define-public knights
928 (package
929 (name "knights")
930 (version "025")
931 (source (origin
932 (method url-fetch)
933 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
934 version "_src.tar.gz"))
935 (sha256
936 (base32
937 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
938 (build-system gnu-build-system)
939 (arguments
940 '(#:make-flags
941 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
942 #:phases
943 (modify-phases %standard-phases
944 ;; No configure script.
945 (delete 'configure))
946 #:tests? #f)) ;; No check target.
947 (inputs
948 `(("boost" ,boost)
949 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
950 ("freetype" ,freetype)
951 ("fontconfig" ,fontconfig)
952 ("curl" ,curl)))
6730d895
RW
953 (native-inputs
954 `(("pkg-config" ,pkg-config)))
02345c96
RW
955 (home-page "http://www.knightsgame.org.uk/")
956 (synopsis "Multiplayer dungeon game involving knights and quests")
957 (description "Knights is a multiplayer game involving several knights who
958must run around a dungeon and complete various quests. Each game revolves
959around a quest – for example, you might have to find some items and carry them
960back to your starting point. This may sound easy, but as there are only
961enough items in the dungeon for one player to win, you may end up having to
962kill your opponents to get their stuff! Other quests involve escaping from
963the dungeon, fighting a duel to the death against the enemy knights, or
964destroying an ancient book using a special wand.")
965 ;; This package includes modified sources of lua (X11), enet (Expat), and
966 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
967 ;; license. The whole package is released under GPLv3+.
968 (license license:gpl3+)))
969
e23f2ff1 970(define-public gnubg
bf0018cd 971 (package
e23f2ff1 972 (name "gnubg")
d5ddb484 973 (version "1.06.002")
bf0018cd
JD
974 (source
975 (origin
976 (method url-fetch)
d24881e4
GLV
977 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
978 version "-sources.tar.gz"))
bf0018cd
JD
979 (sha256
980 (base32
d5ddb484 981 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
982 (build-system gnu-build-system)
983 (inputs `(("glib" ,glib)
984 ("readline" ,readline)
985 ("gtk+" ,gtk+-2)
986 ("mesa" ,mesa)
6a95024c 987 ("glu" ,glu)
bf0018cd
JD
988 ("gtkglext" ,gtkglext)
989 ("sqlite" ,sqlite)
990 ("libcanberra" ,libcanberra)))
991 (native-inputs `(("python-2" ,python-2)
992 ("pkg-config" ,pkg-config)))
93605bfd
GLV
993 (arguments
994 `(#:phases
995 (modify-phases %standard-phases
996 (add-after 'install 'install-desktop-file
997 (lambda* (#:key outputs #:allow-other-keys)
998 (let* ((out (assoc-ref outputs "out"))
999 (apps (string-append out "/share/applications")))
1000 (mkdir-p apps)
1001 (with-output-to-file (string-append apps "/gnubg.desktop")
1002 (lambda _
1003 (format #t
1004 "[Desktop Entry]~@
1005 Name=GNU Backgammon~@
1006 Exec=~a/bin/gnubg -w~@
1007 Icon=gnubg~@
1008 Categories=Game;~@
1009 Terminal=false~@
1010 Type=Application~%"
1011 out))))
1012 #t)))))
d24881e4 1013 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 1014 (synopsis "Backgammon game")
c97e4d8b
PN
1015 (description "The GNU backgammon application (also known as \"gnubg\") can
1016be used for playing, analyzing and teaching the game. It has an advanced
1017evaluation engine based on artificial neural networks suitable for both
1018beginners and advanced players. In addition to a command-line interface, it
1019also features an attractive, 3D representation of the playing board.")
024e2c17 1020 (license license:gpl3+)))
bf0018cd 1021
e23f2ff1
LC
1022(define-public gnubackgammon
1023 (deprecated-package "gnubackgammon" gnubg))
c97e4d8b 1024
490c6528
JD
1025(define-public gnubik
1026 (package
1027 (name "gnubik")
ecc39b3f 1028 (version "2.4.3")
490c6528
JD
1029 (source
1030 (origin
1031 (method url-fetch)
1032 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1033 version ".tar.gz"))
1034 (sha256
1035 (base32
ecc39b3f 1036 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
1037 (build-system gnu-build-system)
1038 (inputs `(("gtk+" ,gtk+-2)
1039 ("mesa" ,mesa)
276a8f71 1040 ("glu" ,glu)
490c6528
JD
1041 ("libx11" ,libx11)
1042 ("guile" ,guile-2.0)
1043 ("gtkglext" ,gtkglext)))
b94a6ca0 1044 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
1045 ("pkg-config" ,pkg-config)))
1046 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
1047 (synopsis "3d Rubik's cube game")
1048 (description
1049 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
1050each of its faces have a uniform color. The game is customizable, allowing
1051you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 1052You may even apply photos to the faces instead of colors. The game is
490c6528 1053scriptable with Guile.")
024e2c17 1054 (license license:gpl3+)))
3da5dca3 1055
a20b084a
JD
1056(define-public gnushogi
1057 (package
1058 (name "gnushogi")
1059 (version "1.4.2")
1060 (source
1061 (origin
1062 (method url-fetch)
1063 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1064 version ".tar.gz"))
1065 (sha256
1066 (base32
1067 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1068 (arguments `(#:tests? #f)) ;; No check target.
1069 (build-system gnu-build-system)
6fd52309 1070 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1071 (synopsis "The game of Shogi (Japanese chess)")
1072 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1073Chess). It is similar to standard chess but this variant is far more complicated.")
1074 (license license:gpl3+)))
1075
e664200c
KK
1076(define-public ltris
1077 (package
1078 (name "ltris")
1079 (version "1.0.19")
1080 (source
1081 (origin
1082 (method url-fetch)
1083 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 1084 "ltris-" version ".tar.gz"))
e664200c
KK
1085 (sha256
1086 (base32
1087 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1088 (build-system gnu-build-system)
1089 (arguments
1090 '(;; The code in LTris uses traditional GNU semantics for inline functions
1091 #:configure-flags '("CFLAGS=-fgnu89-inline")
1092 #:phases
1093 (modify-phases %standard-phases
1094 (add-after 'set-paths 'set-sdl-paths
1095 (lambda* (#:key inputs #:allow-other-keys)
1096 (setenv "CPATH"
1097 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1098 "/include/SDL:"
1099 (or (getenv "CPATH") "")))
e664200c
KK
1100 #t)))))
1101 (inputs
1102 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1103 (home-page "http://lgames.sourceforge.net/LTris/")
1104 (synopsis "Tetris clone based on the SDL library")
1105 (description
1106 "LTris is a tetris clone: differently shaped blocks are falling down the
1107rectangular playing field and can be moved sideways or rotated by 90 degree
1108units with the aim of building lines without gaps which then disappear (causing
1109any block above the deleted line to fall down). LTris has three game modes: In
1110Classic you play until the stack of blocks reaches the top of the playing field
1111and no new blocks can enter. In Figures the playing field is reset to a new
1112figure each level and later on tiles and lines suddenly appear. In Multiplayer
1113up to three players (either human or CPU) compete with each other sending
1114removed lines to all opponents. There is also a Demo mode in which you can
1115watch your CPU playing while enjoying a cup of tea!")
1116 (license license:gpl2+)))
3bd0d186
A
1117
1118(define-public nethack
1119 (package
1120 (name "nethack")
41e9104d 1121 (version "3.6.5")
3bd0d186
A
1122 (source
1123 (origin
1124 (method url-fetch)
a544817e
TGR
1125 (uri
1126 (string-append "https://www.nethack.org/download/" version "/nethack-"
1127 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 1128 (sha256
41e9104d 1129 (base32 "0xifs8pqfffnmkbpmrcd1xf14yakcj06nl2bbhy4dyacg8myysmv"))))
3bd0d186
A
1130 (inputs
1131 `(("ncurses" ,ncurses)
1132 ("bison" ,bison)
1133 ("flex" ,flex)
1134 ("less" ,less)))
1135 (build-system gnu-build-system)
1136 (arguments
1137 '(#:make-flags
1138 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1139 #:phases
1140 (modify-phases %standard-phases
1141 (add-before 'configure 'patch-paths
1142 (lambda _
1143 (substitute* "sys/unix/nethack.sh"
1144 (("^ *cd .*$") ""))
1145 (substitute* "sys/unix/Makefile.utl"
1146 (("^YACC *=.*$") "YACC = bison -y\n")
1147 (("^LEX *=.*$") "LEX = flex\n")
1148 (("^# CC = gcc") "CC = gcc"))
1149 (substitute* "sys/unix/hints/linux"
1150 (("/bin/gzip") (string-append
1151 (assoc-ref %build-inputs "gzip")
1152 "/bin/gzip"))
1153 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1154 (substitute* "include/config.h"
df35e715
LC
1155 (("^.*define CHDIR.*$") "")
1156 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1157 ;; Honor SOURCE_DATE_EPOCH.
1158 "#define REPRODUCIBLE_BUILD"))
1159
1160 ;; Note: 'makedefs' rejects and ignores dates that are too old
1161 ;; or too new, so we must choose something reasonable here.
1162 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1163
3bd0d186
A
1164 (substitute* "sys/unix/Makefile.src"
1165 (("^# CC = gcc") "CC = gcc"))
1166 #t))
1167 (replace 'configure
1168 (lambda _
1169 (let ((bash (string-append
1170 (assoc-ref %build-inputs "bash")
1171 "/bin/bash")))
1172 (with-directory-excursion "sys/unix"
1173 (substitute* "setup.sh" (("/bin/sh") bash))
1174 (invoke bash "setup.sh" "hints/linux"))
1175 #t)))
1176 (add-after 'install 'fixup-paths
1177 (lambda _
1178 (let* ((output (assoc-ref %outputs "out"))
1179 (nethack-script (string-append output "/bin/nethack")))
1180 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1181 (for-each
1182 (lambda (file)
1183 (rename-file
1184 (string-append output "/games/lib/nethackdir/" file)
1185 (string-append output "/games/lib/nethackuserdir/"
1186 file)))
1187 '("xlogfile" "logfile" "perm" "record" "save"))
1188 (mkdir-p (string-append output "/bin"))
1189 (call-with-output-file nethack-script
1190 (lambda (port)
1191 (format port "#!~a/bin/sh
1192PATH=~a:$PATH
1193if [ ! -d ~~/.config/nethack ]; then
1194 mkdir -p ~~/.config/nethack
1195 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1196 chmod -R +w ~~/.config/nethack
1197fi
1198
1199RUNDIR=$(mktemp -d)
1200
1201cleanup() {
1202 rm -rf $RUNDIR
1203}
1204trap cleanup EXIT
1205
1206cd $RUNDIR
1207for i in ~~/.config/nethack/*; do
1208 ln -s $i $(basename $i)
1209done
1210for i in ~a/games/lib/nethackdir/*; do
1211 ln -s $i $(basename $i)
1212done
1213~a/games/nethack"
1214 (assoc-ref %build-inputs "bash")
1215 (list->search-path-as-string
1216 (list
1217 (string-append
1218 (assoc-ref %build-inputs "coreutils") "/bin")
1219 (string-append
1220 (assoc-ref %build-inputs "less") "/bin"))
1221 ":")
1222 output
1223 output
1224 output)))
1225 (chmod nethack-script #o555)
1226 #t)))
1227 (delete 'check))))
1228 (home-page "https://nethack.org")
1229 (synopsis "Classic dungeon crawl game")
1230 (description "NetHack is a single player dungeon exploration game that runs
1231on a wide variety of computer systems, with a variety of graphical and text
1232interfaces all using the same game engine. Unlike many other Dungeons &
1233Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1234the dungeon and not simply killing everything in sight - in fact, killing
1235everything in sight is a good way to die quickly. Each game presents a
1236different landscape - the random number generator provides an essentially
1237unlimited number of variations of the dungeon and its denizens to be discovered
1238by the player in one of a number of characters: you can pick your race, your
1239role, and your gender.")
1240 (license
1241 (license:fsdg-compatible
1242 "https://nethack.org/common/license.html"))))
e664200c 1243
82943626
TGR
1244(define-public pipewalker
1245 (package
1246 (name "pipewalker")
1247 (version "0.9.4")
1248 (source
1249 (origin
1250 (method url-fetch)
1251 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1252 "pipewalker-" version ".tar.gz"))
82943626 1253 (sha256
96848ecc 1254 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1255 (build-system gnu-build-system)
1256 (arguments
1257 `(#:configure-flags
1258 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1259 "/share/doc/" ,name "-" ,version))
1260 #:phases
1261 (modify-phases %standard-phases
1262 (add-after 'configure 'patch-docdir
1263 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1264 (lambda _
1265 (substitute* "Makefile"
1266 (("(pkgdocdatadir = ).*" _ assignment)
1267 (string-append assignment "$(docdir)\n")))
1268 #t)))))
1269 (inputs
1270 `(("libpng" ,libpng)
1271 ("mesa" ,mesa)
1272 ("sdl" ,sdl)))
1273 (home-page "http://pipewalker.sourceforge.net/")
1274 (synopsis "Logical tile puzzle")
1275 (description
1276 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1277computers to one network server, bring water from a source to the taps, etc.
1278The underlying mechanism is always the same: you must turn each tile in the
1279grid in the right direction to combine all components into a single circuit.
1280Every puzzle has a complete solution, although there may be more than one.")
1281 (license license:gpl3+)))
1282
26a657f0
KK
1283(define-public prboom-plus
1284 (package
1285 (name "prboom-plus")
1286 (version "2.5.1.4")
1287 (source (origin
1288 (method url-fetch)
a8a96bbe
TGR
1289 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1290 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1291 (sha256
a8a96bbe 1292 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1293 (modules '((guix build utils)))
1294 (snippet
6cbee49d
MW
1295 '(begin
1296 (substitute* "src/version.c"
1297 (("__DATE__") "")
1298 (("__TIME__") ""))
1299 #t))))
26a657f0
KK
1300 (build-system gnu-build-system)
1301 (arguments
1302 '(#:configure-flags '("--disable-cpu-opt")
1303 #:make-flags `(,(string-append "gamesdir="
1304 (assoc-ref %outputs "out") "/bin"))
1305 #:phases
1306 (modify-phases %standard-phases
1307 (add-after 'set-paths 'set-sdl'paths
1308 (lambda* (#:key inputs #:allow-other-keys)
1309 (setenv "CPATH"
1310 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1311 "/include/SDL:"
1312 (or (getenv "CPATH") "")))
26a657f0
KK
1313 #t)))))
1314 (inputs
1315 `(("fluidsynth" ,fluidsynth)
1316 ("glu" ,glu)
1317 ("libmad" ,libmad)
1318 ("libpng" ,libpng)
1319 ("libvorbis" ,libvorbis)
1320 ("pcre" ,pcre)
1321 ("portmidi" ,portmidi)
1322 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1323 (home-page "http://prboom-plus.sourceforge.net/")
1324 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1325 (description
1326 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1327 (license license:gpl2+)))
1328
519bfc65
KK
1329(define-public retux
1330 (package
1331 (name "retux")
b286e3b3 1332 (version "1.3.6")
519bfc65
KK
1333 (source (origin
1334 (method url-fetch)
1335 (uri (string-append "mirror://savannah/retux/"
1336 (version-major+minor version) "/retux-"
1337 version "-src.tar.gz"))
1338 (sha256
1339 (base32
b286e3b3 1340 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1341 (build-system python-build-system)
1342 (arguments
1343 `(#:tests? #f ; no check target
1344 #:phases
1345 (modify-phases %standard-phases
1346 ;; no setup.py script
1347 (delete 'build)
1348 (replace 'install
1349 (lambda* (#:key outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (bin (string-append out "/bin"))
1352 (data (string-append out "/share/retux"))
1353 (doc (string-append out "/share/doc/retux")))
1354 (mkdir-p bin)
1355
1356 (substitute* "retux.py"
1357 ;; Use the correct data directory.
1358 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1359 (string-append "\"" data "\","))
1360 ;; Use Python 3 so the patch-shebangs phase works properly.
1361 ((".*python2.*") "#!/usr/bin/python3"))
1362
1363 (copy-file "retux.py" (string-append bin "/retux"))
1364
1365 (copy-recursively "data" data)
1366
fbc3b802
KK
1367 (install-file "COPYING" doc)
1368 #t))))))
519bfc65
KK
1369 (inputs
1370 `(("python-sge-pygame" ,python-sge-pygame)
1371 ("python-six" ,python-six)
1372 ("python-xsge" ,python-xsge)))
1373 (home-page "http://retux.nongnu.org")
1374 (synopsis "Action platformer game")
1375 (description
1376 "ReTux is an action platformer loosely inspired by the Mario games,
1377utilizing the art assets from the @code{SuperTux} project.")
1378 ;; GPL version 3 or later is the license for the code and some art.
1379 ;; The rest of the licenses are for the art exclusively, as listed in
1380 ;; data/LICENSES.
1381 (license (list license:cc0
1382 license:cc-by3.0
1383 license:cc-by-sa3.0
1384 license:cc-by-sa4.0
1385 license:gpl2+
1386 license:gpl3+))))
07f3b379
KK
1387
1388(define-public roguebox-adventures
1697048f
KK
1389 (package
1390 (name "roguebox-adventures")
98f79040 1391 (version "3.0.1")
1697048f
KK
1392 (source
1393 (origin
1394 (method url-fetch)
1395 (uri (string-append
1396 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1397 (string-join (string-split version #\.) "_") "_Source.zip"))
1398 (file-name (string-append name "-" version ".zip"))
1399 (sha256
1400 (base32
98f79040 1401 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1697048f
KK
1402 (build-system python-build-system)
1403 (arguments
1404 `(#:tests? #f ; no check target
1405 #:phases
1406 (modify-phases %standard-phases
1407 (replace 'unpack
1408 (lambda* (#:key source #:allow-other-keys)
1409 (and (invoke "unzip" source)
1410 ;; The actual source is buried a few directories deep.
1411 (chdir (string-append "RogueBoxAdventures_v"
1412 (string-join
1413 (string-split ,version #\.) "_")
1414 "_Source")))))
1415 ;; no setup.py script
1416 (replace 'build
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (let* ((out (assoc-ref outputs "out"))
1419 (data (string-append
1420 out "/share/games/roguebox-adventures")))
1421 ;; Use the correct data directory.
1422 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1423 (("basic_path + os\\.sep + 'DATA'")
1424 (string-append "'" data "'"))
1425 (("^basic_path.*$")
1426 (string-append "basic_path ='" data "'\n")))
98f79040
KK
1427 (substitute* "LIB/dialog.py"
1428 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1429 (string-append "d_path = '" data "'")))
1697048f
KK
1430 (substitute* "LIB/gra_files.py"
1431 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1432 (string-append "basic_path ='" data "'\n")))
07f3b379 1433
1697048f
KK
1434 ;; The game must save in the user's home directory because
1435 ;; the store is read-only.
1436 (substitute* "main.py"
1437 (("home_save = False") "home_save = True")
1438 (("'icon_small.png'")
1439 (string-append "'" data "/icon_small.png'"))))
1440 #t))
1441 (replace 'install
1442 (lambda* (#:key outputs #:allow-other-keys)
1443 (let* ((out (assoc-ref outputs "out"))
1444 (bin (string-append out "/bin"))
1445 (roguebox-adventures
1446 (string-append bin "/roguebox-adventures"))
1447 (data (string-append
1448 out "/share/games/roguebox-adventures"))
1449 (lib (string-append data "/LIB"))
1450 (doc (string-append
1451 out "/share/doc/roguebox-adventures")))
1452 (mkdir-p bin)
1453 (mkdir-p doc)
07f3b379 1454
1697048f
KK
1455 (for-each (lambda (file)
1456 (copy-recursively file
1457 (string-append data "/" file)))
1458 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1459 "icon_big.png" "icon_small.png"))
1460 (for-each (lambda (file)
1461 (chmod file #o555)
1462 (install-file file lib))
1463 '("main.py" "run.py"))
07f3b379 1464
1697048f 1465 (copy-recursively "DOC" doc)
07f3b379 1466
1697048f
KK
1467 (call-with-output-file
1468 roguebox-adventures
1469 (lambda (p)
1470 (format p "\
1471#!~a
1472export PYTHONPATH=~a/LIB:~a
1473exec -a \"~a\" ~a \"$@\"\n"
1474 (which "bash") data (getenv "PYTHONPATH")
1475 (which "python3")
1476 (string-append lib "/main.py"))))
1477 (chmod roguebox-adventures #o555))
1478 #t)))))
1479 (native-inputs
1480 `(("unzip" ,unzip)))
1481 (inputs
1482 `(("python-pygame" ,python-pygame)
1483 ("python-tmx" ,python-tmx)))
1484 (home-page "https://rogueboxadventures.tuxfamily.org")
1485 (synopsis "A classical roguelike/sandbox game")
1486 (description
1487 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1488from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1489Adventures is to offer the player a kind of roguelike toy-world. This world
1490can be explored and changed freely.")
1697048f
KK
1491 ;; The GPL3+ is for code, the rest are for art.
1492 (license (list license:cc0
1493 license:cc-by3.0
1494 license:gpl3+
1495 license:silofl1.1))))
519bfc65 1496
a20b084a
JD
1497(define-public xshogi
1498 (package
1499 (name "xshogi")
1500 (version "1.4.2")
1501 (source
1502 (origin
1503 (method url-fetch)
1504 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1505 version ".tar.gz"))
1506 (sha256
1507 (base32
1508 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1509 (build-system gnu-build-system)
1510 (inputs
1511 `(("libxaw" ,libxaw)
1512 ("libxt" ,libxt)))
6fd52309 1513 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1514 (synopsis "User interface for gnushogi")
a20b084a
JD
1515 (description "A graphical user interface for the package @code{gnushogi}.")
1516 ;; Contains a copy of GPLv3 but the licence notices simply
1517 ;; state "GNU General Public Licence" without specifying a version.
1518 (license license:gpl1+)))
1519
649220ad 1520(define-public abbaye
3da5dca3 1521 (package
649220ad 1522 (name "abbaye")
efc12a81 1523 (version "2.0.1")
3da5dca3
DT
1524 (source
1525 (origin
feb50ac6
TGR
1526 (method git-fetch)
1527 (uri (git-reference
1528 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1529 (commit (string-append "v" version))))
1530 (file-name (git-file-name name version))
3da5dca3 1531 (sha256
feb50ac6 1532 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1533 (modules '((guix build utils)))
1534 (snippet
1535 ;; Unbundle fonts.
6cbee49d
MW
1536 '(begin
1537 (delete-file-recursively "fonts")
1538 #t))))
3da5dca3
DT
1539 (build-system gnu-build-system)
1540 (arguments
efc12a81 1541 '(#:make-flags '("CC=gcc")
aec05972
AK
1542 #:phases (modify-phases %standard-phases
1543 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1544 (lambda* (#:key inputs #:allow-other-keys)
1545 (setenv "CPATH"
1546 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1547 "/include/SDL:"
1548 (or (getenv "CPATH") "")))))
aec05972
AK
1549 (add-after 'patch-source-shebangs 'patch-makefile
1550 (lambda* (#:key outputs #:allow-other-keys)
1551 ;; Replace /usr with package output directory.
efc12a81
AFN
1552 (substitute* "Makefile"
1553 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1554 (add-before 'install 'make-install-dirs
1555 (lambda* (#:key outputs #:allow-other-keys)
1556 (let ((prefix (assoc-ref outputs "out")))
1557 ;; Create directories that the makefile assumes exist.
1558 (mkdir-p (string-append prefix "/bin"))
1559 (mkdir-p (string-append prefix "/share/applications"))
1560 (mkdir-p (string-append prefix "/share/pixmaps")))))
1561 ;; No configure script.
1562 (delete 'configure))
3da5dca3
DT
1563 #:tests? #f)) ;; No check target.
1564 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1565 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1566 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1567 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1568 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1569France. The Cathars, who preach about good Christian beliefs, were being
1570expelled by the Catholic Church out of the Languedoc region in France. One of
1571them, called Jean Raymond, found an old church in which to hide, not knowing
1572that beneath its ruins lay buried an ancient evil.")
efc12a81 1573 (license license:gpl3)))
a83c6a64 1574
649220ad
NG
1575(define-public l-abbaye-des-morts
1576 (deprecated-package "l-abbaye-des-morts" abbaye))
c91ed484 1577
b76c94e6
CAW
1578(define-public angband
1579 (package
1580 (name "angband")
e5e24819 1581 (version "4.2.0")
b76c94e6
CAW
1582 (source
1583 (origin
1584 (method url-fetch)
9a0d324a
EF
1585 (uri (string-append "http://rephial.org/downloads/"
1586 (version-major+minor version)
1587 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1588 (sha256
1589 (base32
e5e24819 1590 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1591 (modules '((guix build utils)))
1592 (snippet
1593 ;; So, some of the sounds/graphics/tilesets are under different
1594 ;; licenses... some of them even nonfree! This is a console-only
1595 ;; version of this package so we just remove them.
1596 ;; In the future, if someone tries to make a graphical variant of
1597 ;; this package, they can deal with that mess themselves. :)
1598 '(begin
6cbee49d
MW
1599 (for-each (lambda (subdir)
1600 (let ((lib-subdir (string-append "lib/" subdir)))
1601 (delete-file-recursively lib-subdir)))
1602 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1603 (substitute* "lib/Makefile"
e5e24819 1604 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1605 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1606 "gamedata customize help screens user"))
1607 #t))))
b76c94e6
CAW
1608 (build-system gnu-build-system)
1609 (arguments
aeb6d9a6 1610 `(#:tests? #f ; no check target
b76c94e6
CAW
1611 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1612 #:phases
1613 (modify-phases %standard-phases
9a0d324a 1614 (replace 'bootstrap
b76c94e6
CAW
1615 (lambda _
1616 (substitute* "acinclude.m4"
1617 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1618 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1619 (native-inputs
1620 `(("autoconf" ,autoconf)
1621 ("automake" ,automake)))
1622 (inputs `(("ncurses" ,ncurses)))
1623 (home-page "http://rephial.org/")
1624 (synopsis "Dungeon exploration roguelike")
1625 (description "Angband is a Classic dungeon exploration roguelike. Explore
1626the depths below Angband, seeking riches, fighting monsters, and preparing to
1627fight Morgoth, the Lord of Darkness.")
1628 (license license:gpl2)))
1629
a83c6a64
EB
1630(define-public pingus
1631 (package
1632 (name "pingus")
1633 (version "0.7.6")
1634 (source
1635 (origin
472c36bd
EF
1636 (method git-fetch)
1637 (uri (git-reference
4b889d3a 1638 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1639 (commit (string-append "v" version))))
1640 (file-name (git-file-name name version))
a83c6a64
EB
1641 (sha256
1642 (base32
472c36bd
EF
1643 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1644 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1645 "pingus-sdl-libs-config.patch"))
1646 (modules '((guix build utils)))
1647 (snippet
1648 '(begin
1649 (substitute* "src/pingus/screens/demo_session.cpp"
1650 (("#include <iostream>")
1651 ;; std::function moved to <functional> with C++ 11.
1652 ;; Remove this for versions newer than 0.7.6.
1653 "#include <iostream>\n#include <functional>"))
1654 #t))))
a83c6a64
EB
1655 (build-system gnu-build-system)
1656 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1657 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1658 (inputs `(("sdl" ,sdl)
1659 ("sdl-image" ,sdl-image)
1660 ("sdl-mixer" ,sdl-mixer)
1661 ("mesa" ,mesa)
00c09300 1662 ("glu" ,glu)
a83c6a64
EB
1663 ("libpng" ,libpng)
1664 ("boost" ,boost)))
1665 (arguments
3f3f8f49
AI
1666 '(#:make-flags (list (string-append "PREFIX=" %output))
1667 #:tests? #f ; no check target
a83c6a64 1668 #:phases
3f127147 1669 (modify-phases %standard-phases
3f3f8f49 1670 (delete 'configure)))) ; no configure script
5f578231 1671 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1672 (synopsis "Lemmings clone")
1673 (description
1674 "Pingus is a free Lemmings-like puzzle game in which the player takes
1675command of a bunch of small animals and has to guide them through levels.
1676Since the animals walk on their own, the player can only influence them by
1677giving them commands, like build a bridge, dig a hole, or redirect all animals
1678in the other direction. Multiple such commands are necessary to reach the
1679level's exit. The game is presented in a 2D side view.")
1680 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1681 (license license:gpl3+)))
dff62423
JD
1682
1683(define-public talkfilters
1684 (package
1685 (name "talkfilters")
1686 (version "2.3.8")
1687 (source
1688 (origin
1689 (method url-fetch)
1690 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1691 name "-" version ".tar.gz"))
dff62423
JD
1692 (sha256
1693 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1694 (build-system gnu-build-system)
6fd52309 1695 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1696 (synopsis "Convert English text to humorous dialects")
1697 (description "The GNU Talk Filters are programs that convert English text
1698into stereotyped or otherwise humorous dialects. The filters are provided as
1699a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1700 (license license:gpl2+)))
1701
3cf118a1
CS
1702(define-public cmatrix
1703 (package
1704 (name "cmatrix")
14736727 1705 (version "2.0")
3cf118a1
CS
1706 (source
1707 (origin
14736727
OP
1708 (method git-fetch)
1709 (uri (git-reference
1710 (url "https://github.com/abishekvashok/cmatrix.git")
1711 (commit (string-append "v" version))))
1712 (file-name (git-file-name name version))
3cf118a1
CS
1713 (sha256
1714 (base32
14736727 1715 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 1716 (build-system gnu-build-system)
14736727
OP
1717 (native-inputs
1718 `(("autoconf" ,autoconf)
1719 ("automake" ,automake)))
3cf118a1
CS
1720 (arguments
1721 '(#:phases
3f127147
TGR
1722 (modify-phases %standard-phases
1723 (replace 'configure
1724 (lambda* (#:key outputs #:allow-other-keys)
1725 ;; This old ‘configure’ script doesn't support
1726 ;; variables passed as arguments.
1727 (let ((out (assoc-ref outputs "out")))
1728 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1729 (invoke "./configure"
1730 (string-append "--prefix=" out))))))))
3cf118a1 1731 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1732 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1733 (synopsis "Simulate the display from \"The Matrix\"")
1734 (description "CMatrix simulates the display from \"The Matrix\" and is
1735based on the screensaver from the movie's website. It works with terminal
1736settings up to 132x300 and can scroll lines all at the same rate or
1737asynchronously and at a user-defined speed.")
024e2c17 1738 (license license:gpl2+)))
ae9cb418
JD
1739
1740(define-public chess
1741 (package
1742 (name "chess")
16fb1e79 1743 (version "6.2.5")
ae9cb418
JD
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1748 ".tar.gz"))
1749 (sha256
1750 (base32
16fb1e79 1751 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1752 (build-system gnu-build-system)
6fd52309 1753 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1754 (synopsis "Full chess implementation")
1755 (description "GNU Chess is a chess engine. It allows you to compete
1756against the computer in a game of chess, either through the default terminal
1757interface or via an external visual interface such as GNU XBoard.")
024e2c17 1758 (license license:gpl3+)))
ae9cb418 1759
a6b55314 1760(define freedink-engine
bb3b71ce
SB
1761 (package
1762 (name "freedink-engine")
2ee05bb9 1763 (version "109.6")
bb3b71ce
SB
1764 (source (origin
1765 (method url-fetch)
1766 (uri (string-append "mirror://gnu/freedink/freedink-" version
1767 ".tar.gz"))
1768 (sha256
1769 (base32
2ee05bb9 1770 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1771 (build-system gnu-build-system)
a9249f58
KK
1772 (arguments
1773 `(#:configure-flags '("--disable-embedded-resources")
1774 #:phases
1775 (modify-phases %standard-phases
1776 (add-after 'unpack 'disable-graphical-tests
1777 (lambda _
1778 ;; These tests require a graphical interface.
1779 (substitute* "src/Makefile.am"
1780 (("test_gfx_fonts TestIOGfxDisplay") ""))
1781 #t)))))
1782 (native-inputs `(("autoconf" ,autoconf)
1783 ("automake" ,automake)
1784 ("cxxtest" ,cxxtest)
1785 ("gettext" ,gettext-minimal)
1786 ("help2man" ,help2man)
bb3b71ce 1787 ("pkg-config" ,pkg-config)))
a9249f58
KK
1788 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1789 sdl2-ttf sdl2-gfx)))
bb3b71ce 1790 ("fontconfig" ,fontconfig)
a9249f58 1791 ("glm" ,glm)))
f9eab0be
EF
1792 (properties '((ftp-directory . "/freedink")
1793 (upstream-name . "freedink")))
6fd52309 1794 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1795 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1796 (description
1797 "GNU FreeDink is a free and portable re-implementation of the engine
1798for the role-playing game Dink Smallwood. It supports not only the original
1799game data files but it also supports user-produced game mods or \"D-Mods\".
1800To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1801 (license license:gpl3+)))
bb3b71ce 1802
a6b55314 1803(define freedink-data
bb3b71ce
SB
1804 (package
1805 (name "freedink-data")
32d92d2c 1806 (version "1.08.20190120")
bb3b71ce
SB
1807 (source (origin
1808 (method url-fetch)
1809 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1810 version ".tar.gz"))
bb3b71ce
SB
1811 (sha256
1812 (base32
32d92d2c 1813 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1814 (build-system gnu-build-system)
1815 (arguments
3f127147
TGR
1816 `(#:phases
1817 (modify-phases %standard-phases
1818 (delete 'configure) ; no configure script
1819 (delete 'check)) ; no tests
bb3b71ce 1820 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1821 (properties '((ftp-directory . "/freedink")))
6fd52309 1822 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1823 (synopsis "Game data for GNU Freedink")
1824 (description
1825 "This package contains the game data of GNU Freedink.")
024e2c17 1826 (license license:gpl3+)))
bb3b71ce 1827
2926e950
KK
1828(define-public freedink-dfarc
1829 (package
1830 (name "freedink-dfarc")
1831 (version "3.14")
1832 (source (origin
1833 (method url-fetch)
1834 (uri (string-append "mirror://gnu/freedink/dfarc-"
1835 version ".tar.gz"))
1836 (sha256
1837 (base32
1838 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1839 (build-system gnu-build-system)
1840 (native-inputs
1841 `(("intltool" ,intltool)))
1842 (inputs
1843 `(("bzip2" ,bzip2)
1844 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1845 (properties '((ftp-directory . "/freedink")
1846 (upstream-name . "dfarc")))
2926e950
KK
1847 (home-page "https://www.gnu.org/software/freedink/")
1848 (synopsis "Front-end for managing and playing Dink Modules")
1849 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1850and its numerous D-Mods.")
1851 (license license:gpl3+)))
bb3b71ce 1852
a6b55314
LC
1853(define-public freedink
1854 ;; This is a wrapper that tells the engine where to find the data.
1855 (package (inherit freedink-engine)
1856 (name "freedink")
1857 (build-system trivial-build-system)
1858 (arguments
1859 '(#:builder (begin
1860 (use-modules (guix build utils))
1861
1862 (let* ((output (assoc-ref %outputs "out"))
1863 (bin (string-append output "/bin"))
1864 (executable (string-append bin "/freedink")))
1865 (mkdir-p bin)
1866 (call-with-output-file executable
1867 (lambda (port)
1868 (format port "#!~a/bin/sh
1869exec ~a/bin/freedink -refdir ~a/share/dink\n"
1870 (assoc-ref %build-inputs "bash")
1871 (assoc-ref %build-inputs "engine")
1872 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1873 (chmod port #o777)))
1874 #t))
a6b55314
LC
1875 #:modules ((guix build utils))))
1876 (inputs `(("engine" ,freedink-engine)
1877 ("data" ,freedink-data)
1878 ("bash" ,bash)))
1879 (native-inputs '())))
1880
ae9cb418
JD
1881(define-public xboard
1882 (package
1883 (name "xboard")
9835458f 1884 (version "4.9.1")
ae9cb418
JD
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (string-append "mirror://gnu/xboard/xboard-" version
1889 ".tar.gz"))
1890 (sha256
1891 (base32
9835458f 1892 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1893 (build-system gnu-build-system)
4e530049
SB
1894 (inputs
1895 `(("gtk+" ,gtk+-2)
1896 ("librsvg" ,librsvg)))
9835458f
EF
1897 (native-inputs
1898 `(("texinfo" ,texinfo)
1899 ("pkg-config" ,pkg-config)))
6fd52309 1900 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1901 (synopsis "Graphical user interface for chess programs")
1902 (description "GNU XBoard is a graphical board for all varieties of chess,
1903including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1904and Makruk. Several lesser-known variants are also supported. It presents a
1905fully interactive graphical interface and it can load and save games in the
1906Portable Game Notation.")
024e2c17 1907 (license license:gpl3+)))
11c38cbe 1908
a21b42e2
SB
1909(define-public gtypist
1910 (package
1911 (name "gtypist")
1912 (version "2.9.5")
1913 (source (origin
1914 (method url-fetch)
1915 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1916 version ".tar.xz"))
1917 (sha256
1918 (base32
1919 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1920 (modules '((guix build utils)))
1921 (snippet
1922 ;; We do not provide `ncurses.h' within an `ncursesw'
1923 ;; sub-directory, so patch the source accordingly. See
1924 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
1925 '(begin
1926 (for-each (lambda (file)
1927 (substitute* file
1928 (("ncursesw/ncurses.h")
1929 "ncurses.h")))
1930 (find-files "." "configure$|\\.c$"))
1931 #t))))
a21b42e2
SB
1932 (build-system gnu-build-system)
1933 (inputs `(("ncurses" ,ncurses)
1934 ("perl" ,perl)))
6fd52309 1935 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1936 (synopsis "Typing tutor")
1937 (description
1938 "GNU Typist is a universal typing tutor. It can be used to learn and
1939practice touch-typing. Several tutorials are included; in addition to
1940tutorials for the standard QWERTY layout, there are also tutorials for the
1941alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1942are primarily in English, however some in other languages are provided.")
024e2c17 1943 (license license:gpl3+)))
13d18626 1944
024e2c17
DT
1945(define-public irrlicht
1946 (package
1947 (name "irrlicht")
f90b2dbd 1948 (version "1.8.4")
024e2c17
DT
1949 (source (origin
1950 (method url-fetch)
1951 (uri (string-append
1952 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1953 (version-major+minor version)
1954 "/" version "/irrlicht-" version ".zip"))
1955 (sha256
1956 (base32
7b8a7536
EF
1957 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1958 (patches (search-patches "irrlicht-use-system-libs.patch"))
1959 (modules '((guix build utils)))
1960 (snippet
1961 '(begin
1962 (for-each delete-file-recursively
1963 '("bin" ; bundled compiled Windows binaries"
1964 "source/Irrlicht/MacOSX"
1965 "source/Irrlicht/bzip2"
1966 "source/Irrlicht/jpeglib"
1967 "source/Irrlicht/libpng"
1968 "source/Irrlicht/lzma"
1969 "source/Irrlicht/zlib"))
1970 (delete-file "source/Irrlicht/glext.h")
1971 (delete-file "source/Irrlicht/glxext.h")
1972 (delete-file "source/Irrlicht/wglext.h")
1973 #t))))
024e2c17
DT
1974 (build-system gnu-build-system)
1975 (arguments
3f127147
TGR
1976 `(#:phases
1977 (modify-phases %standard-phases
7b8a7536
EF
1978 (add-after 'unpack 'chdir-to-source
1979 (lambda _
1980 ;; The actual source is buried a few directories deep.
1981 (chdir "source/Irrlicht/")
1982 #t))
1983 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
1984 (lambda* (#:key outputs #:allow-other-keys)
1985 (let ((out (assoc-ref outputs "out")))
1986 (substitute* "Makefile"
1987 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
1988 (string-append "INSTALL_DIR = " out "/lib"))
1989 ;; Add '-fpermissive' to the CXXFLAGS
1990 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
1991 ;; The Makefile assumes these directories exist.
1992 (mkdir-p (string-append out "/lib"))
1993 (mkdir-p (string-append out "/include")))))
3f127147
TGR
1994 (delete 'configure)) ; no configure script
1995 #:tests? #f ; no check target
024e2c17 1996 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 1997 (inputs
7b8a7536
EF
1998 `(("bzip2" ,bzip2)
1999 ("libjpeg" ,libjpeg)
2000 ("libpng" ,libpng)
2001 ("libx11" ,libx11)
2002 ("libxxf86vm" ,libxxf86vm)
2003 ("mesa" ,mesa)))
024e2c17
DT
2004 (synopsis "3D game engine written in C++")
2005 (description
2006 "The Irrlicht Engine is a high performance realtime 3D engine written in
2007C++. Features include an OpenGL renderer, extensible materials, scene graph
2008management, character animation, particle and other special effects, support
2009for common mesh file formats, and collision detection.")
2010 (home-page "http://irrlicht.sourceforge.net/")
2011 (license license:zlib)))
7e51e5bc 2012
c23c50c7
RW
2013(define-public mars
2014 ;; The latest release on SourceForge relies on an unreleased version of SFML
2015 ;; with a different API, so we take the latest version from the official
2016 ;; repository on Github.
698bd297 2017 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
2018 (revision "1"))
2019 (package
2020 (name "mars")
698bd297 2021 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
2022 (source (origin
2023 (method git-fetch)
2024 (uri (git-reference
2025 (url "https://github.com/thelaui/M.A.R.S..git")
2026 (commit commit)))
00a82e83 2027 (file-name (git-file-name name version))
c23c50c7
RW
2028 (sha256
2029 (base32
2030 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
2031 (patches (search-patches "mars-sfml-2.3.patch"
2032 "mars-install.patch"))))
c23c50c7
RW
2033 (build-system cmake-build-system)
2034 (arguments
2035 `(#:tests? #f ; There are no tests
2036 #:phases
2037 (modify-phases %standard-phases
2038 (add-after 'unpack 'fix-install-path
2039 (lambda _
2040 (substitute* "src/CMakeLists.txt"
2041 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2042 "${CMAKE_INSTALL_PREFIX}/bin"))
2043 #t))
2044 (add-after 'unpack 'fix-data-path
2045 (lambda* (#:key outputs #:allow-other-keys)
2046 (substitute* "src/System/settings.cpp"
2047 (("C_dataPath = \"./data/\";")
2048 (string-append "C_dataPath = \""
2049 (assoc-ref outputs "out")
2050 "/share/games/marsshooter/\";")))
2051 #t)))))
2052 (inputs
2053 `(("mesa" ,mesa)
2054 ("fribidi" ,fribidi)
2055 ("taglib" ,taglib)
2056 ("sfml" ,sfml)))
2057 (home-page "http://marsshooter.org")
2058 (synopsis "2D space shooter")
2059 (description
2060 "M.A.R.S. is a 2D space shooter with pretty visual effects and
2061attractive physics. Players can battle each other or computer controlled
2062enemies in different game modes such as space ball, death match, team death
2063match, cannon keep, and grave-itation pit.")
2064 (license license:gpl3+))))
2065
7e51e5bc
DT
2066(define minetest-data
2067 (package
2068 (name "minetest-data")
86081d9d 2069 (version "5.1.1")
7e51e5bc 2070 (source (origin
7217d337
EF
2071 (method git-fetch)
2072 (uri (git-reference
2073 (url "https://github.com/minetest/minetest_game")
2074 (commit version)))
2075 (file-name (git-file-name name version))
7e51e5bc
DT
2076 (sha256
2077 (base32
2557d366 2078 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
7e51e5bc
DT
2079 (build-system trivial-build-system)
2080 (native-inputs
7217d337 2081 `(("source" ,source)))
7e51e5bc
DT
2082 (arguments
2083 `(#:modules ((guix build utils))
2084 #:builder (begin
2085 (use-modules (guix build utils))
7217d337 2086 (let ((install-dir (string-append
7e51e5bc 2087 %output
7217d337 2088 "/share/minetest/games/minetest_game")))
7e51e5bc 2089 (mkdir-p install-dir)
7217d337
EF
2090 (copy-recursively
2091 (assoc-ref %build-inputs "source")
2092 install-dir)
e3cfef22 2093 #t))))
7e51e5bc
DT
2094 (synopsis "Main game data for the Minetest game engine")
2095 (description
ab0c796b 2096 "Game data for the Minetest infinite-world block sandbox game.")
b7388a08 2097 (home-page "https://www.minetest.net/")
7e51e5bc 2098 (license license:lgpl2.1+)))
6e206ac7
DT
2099
2100(define-public minetest
2101 (package
2102 (name "minetest")
60e4f6e2 2103 (version "5.1.1")
6e206ac7 2104 (source (origin
e8d8b485
EF
2105 (method git-fetch)
2106 (uri (git-reference
1fbd7c7f
MB
2107 (url "https://github.com/minetest/minetest")
2108 (commit version)))
e8d8b485 2109 (file-name (git-file-name name version))
6e206ac7
DT
2110 (sha256
2111 (base32
60e4f6e2 2112 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
7fc90282
EF
2113 (modules '((guix build utils)))
2114 (snippet
1fbd7c7f 2115 '(begin
d9580a26
MB
2116 ;; Delete bundled libraries.
2117 (delete-file-recursively "lib")
2118 #t))))
6e206ac7
DT
2119 (build-system cmake-build-system)
2120 (arguments
10903356 2121 '(#:configure-flags
1fbd7c7f
MB
2122 (list "-DRUN_IN_PLACE=0"
2123 "-DENABLE_FREETYPE=1"
2124 "-DENABLE_GETTEXT=1"
2125 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2126 (string-append "-DIRRLICHT_INCLUDE_DIR="
2127 (assoc-ref %build-inputs "irrlicht")
2128 "/include/irrlicht")
2129 (string-append "-DCURL_INCLUDE_DIR="
2130 (assoc-ref %build-inputs "curl")
2131 "/include/curl"))
2132 #:tests? #f)) ;no check target
6e206ac7
DT
2133 (native-search-paths
2134 (list (search-path-specification
2135 (variable "MINETEST_SUBGAME_PATH")
af070955 2136 (files '("share/minetest/games")))))
6e206ac7
DT
2137 (native-inputs
2138 `(("pkg-config" ,pkg-config)))
2139 (inputs
7fc90282 2140 `(("curl" ,curl)
8c064d01 2141 ("freetype" ,freetype)
7fc90282
EF
2142 ("gettext" ,gettext-minimal)
2143 ("gmp" ,gmp)
2144 ("irrlicht" ,irrlicht)
2145 ("jsoncpp" ,jsoncpp)
c463dd47 2146 ("libjpeg" ,libjpeg)
7fc90282 2147 ("libpng" ,libpng)
6e206ac7
DT
2148 ("libogg" ,libogg)
2149 ("libvorbis" ,libvorbis)
7fc90282 2150 ("libxxf86vm" ,libxxf86vm)
6e206ac7 2151 ("luajit" ,luajit)
7fc90282 2152 ("mesa" ,mesa)
165dc8bd 2153 ("ncurses" ,ncurses)
7fc90282 2154 ("openal" ,openal)
6e206ac7
DT
2155 ("sqlite" ,sqlite)))
2156 (propagated-inputs
2157 `(("minetest-data" ,minetest-data)))
2158 (synopsis "Infinite-world block sandbox game")
2159 (description
2160 "Minetest is a sandbox construction game. Players can create and destroy
2161various types of blocks in a three-dimensional open world. This allows
2162forming structures in every possible creation, on multiplayer servers or as a
2163single player. Mods and texture packs allow players to personalize the game
2164in different ways.")
b7388a08 2165 (home-page "https://www.minetest.net/")
6e206ac7 2166 (license license:lgpl2.1+)))
77264d15
SB
2167
2168(define glkterm
2169 (package
2170 (name "glkterm")
2171 (version "1.0.4")
2172 (source
2173 (origin
2174 (method url-fetch)
2175 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2176 "glk/implementations/glkterm-104.tar.gz"))
2177 (sha256
2178 (base32
2179 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2180 (build-system gnu-build-system)
2181 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2182 (arguments
2183 '(#:tests? #f ; no check target
2184 #:phases
3f127147
TGR
2185 (modify-phases %standard-phases
2186 (replace 'install
2187 (lambda* (#:key outputs #:allow-other-keys)
2188 (let* ((out (assoc-ref outputs "out"))
2189 (inc (string-append out "/include"))
2190 (lib (string-append out "/lib")))
3f127147
TGR
2191 (for-each
2192 (lambda (file)
2193 (install-file file inc))
2194 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
2195 (install-file "libglkterm.a" lib))
2196 #t))
2197 (delete 'configure)))) ; no configure script
77264d15
SB
2198 (home-page "http://www.eblong.com/zarf/glk/")
2199 (synopsis "Curses Implementation of the Glk API")
2200 (description
2201 "Glk defines a portable API for applications with text UIs. It was
2202primarily designed for interactive fiction, but it should be suitable for many
2203interactive text utilities, particularly those based on a command line.
2204This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 2205using the @code{curses.h} library for screen control.")
77264d15
SB
2206 (license (license:fsf-free "file://README"))))
2207
2208(define-public glulxe
2209 (package
2210 (name "glulxe")
b2e3d59c 2211 (version "0.5.4")
77264d15
SB
2212 (source
2213 (origin
2214 (method url-fetch)
2215 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 2216 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2217 (sha256
2218 (base32
b2e3d59c 2219 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2220 (build-system gnu-build-system)
2221 (inputs `(("glk" ,glkterm)))
2222 (arguments
3f127147 2223 '(#:tests? #f ; no check target
77264d15
SB
2224 #:make-flags
2225 (let* ((glk (assoc-ref %build-inputs "glk")))
2226 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2227 (string-append "GLKLIBDIR=" glk "/lib")
2228 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2229 #:phases
3f127147
TGR
2230 (modify-phases %standard-phases
2231 (replace 'install
2232 (lambda* (#:key outputs #:allow-other-keys)
2233 (let* ((out (assoc-ref outputs "out"))
2234 (bin (string-append out "/bin")))
3f127147
TGR
2235 (install-file "glulxe" bin))
2236 #t))
2237 (delete 'configure)))) ; no configure script
bac03797 2238 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
2239 (synopsis "Interpreter for Glulx VM")
2240 (description
2241 "Glulx is a 32-bit portable virtual machine intended for writing and
2242playing interactive fiction. It was designed by Andrew Plotkin to relieve
2243some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2244reference interpreter, using the Glk API.")
b2e3d59c 2245 (license license:expat)))
72b703cd 2246
ce94fcfd
CB
2247(define-public fifechan
2248 (package
2249 (name "fifechan")
2250 (version "0.1.5")
2251 (source (origin
2252 (method url-fetch)
2253 (uri (string-append "https://codeload.github.com/fifengine/"
2254 "fifechan/tar.gz/" version))
2255 (file-name (string-append name "-" version ".tar.gz"))
2256 (sha256
2257 (base32
2258 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2259 (build-system cmake-build-system)
2260 (inputs
2261 `(("sdl2" ,sdl2)
2262 ("sdl2-image" ,sdl2-image)
2263 ("mesa" ,mesa)))
2264 (arguments
2265 '(#:tests? #f)) ; No included tests
2266 (home-page "https://fifengine.github.io/fifechan/")
2267 (synopsis "Cross platform GUI library specifically for games")
2268 (description
2269 "Fifechan is a lightweight cross platform GUI library written in C++
2270specifically designed for games. It has a built in set of extendable GUI
2271Widgets, and allows users to create more.")
2272 (license license:lgpl2.1+)))
2273
2372a5f9
CB
2274(define-public fifengine
2275 (package
2276 (name "fifengine")
2277 (version "0.4.2")
2278 (source (origin
2279 (method url-fetch)
2280 (uri (string-append "https://codeload.github.com/fifengine/"
2281 "fifengine/tar.gz/" version))
2282 (file-name (string-append name "-" version ".tar.gz"))
2283 (sha256
2284 (base32
2285 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2286 (build-system cmake-build-system)
2287 (arguments
2288 `(#:tests? #f ; TODO The test running fails to run some tests.
2289 #:modules ((srfi srfi-1)
2290 (guix build cmake-build-system)
2291 (guix build utils))
2292 #:configure-flags
2293 (list
2294 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2295 (assoc-ref %build-inputs "openal")
2296 "/include/AL")
2297 (string-append "-DPYTHON_SITE_PACKAGES="
2298 (assoc-ref %outputs "out")
2299 "/lib/python3.7/site-packages"))
2300 #:phases
2301 (modify-phases %standard-phases
2302 (add-after 'unpack 'patch-run_tests.py
2303 (lambda _
2304 ;; Patch the test runner to exit with a status of 1 if any test
2305 ;; fails, to allow detecting failures.
2306 (substitute* "run_tests.py"
2307 (("ERROR\\. One or more tests failed!'\\)")
2308 "ERROR. One or more tests failed!')
2309\t\texit(1)"))
2310 #t))
2311 ;; Run tests after installation so that we can make use of the built
2312 ;; python modules.
2313 (delete 'check)
2314 (add-after 'install 'check
2315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2316 (define python-version
2317 (let* ((version (last (string-split
2318 (assoc-ref inputs "python")
2319 #\-)))
2320 (components (string-split version #\.))
2321 (major+minor (take components 2)))
2322 (string-join major+minor ".")))
2323
2324 (when tests?
2325 ;; Set PYTHONPATH so that python finds the installed modules.
2326 (setenv "PYTHONPATH"
2327 (string-append (getenv "PYTHONPATH") ":"
2328 (assoc-ref outputs "out")
2329 "/lib/python"
2330 python-version
2331 "/site-packages"))
2332 ;; The tests require an X server.
2333 (system "Xvfb :1 &")
2334 (setenv "DISPLAY" ":1")
2335 (setenv "XDG_RUNTIME_DIR" "/tmp")
2336 ;; Run tests
2337 (chdir ,(string-append "../" name "-" version))
2338 (invoke "python3" "run_tests.py" "-a"))
2339 #t)))))
2340 (inputs
2341 `(("sdl2" ,sdl2)
2342 ("sdl2-image" ,sdl2-image)
2343 ("sdl2-ttf" ,sdl2-ttf)
2344 ("tinyxml" ,tinyxml)
2345 ("openal" ,openal)
2346 ("libogg" ,libogg)
2347 ("glew" ,glew)
2348 ("libvorbis" ,libvorbis)
2349 ("boost" ,boost)
2350 ("fifechan" ,fifechan)
2351 ("swig" ,swig)
2352 ("python" ,python)))
2353 (native-inputs
2354 `(("python" ,python)
2355 ("swig" ,swig)
2356 ("xvfb" ,xorg-server)))
2357 (propagated-inputs
2358 `(("python-future" ,python-future)))
2359 (home-page "https://www.fifengine.net/")
2360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2361 (description
2362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2363isometric game engine. Python bindings are included allowing users to create
2364games using Python as well as C++.")
2365 (license license:lgpl2.1+)))
2366
35481e8b
SB
2367(define-public fizmo
2368 (package
2369 (name "fizmo")
50e1d36c 2370 (version "0.8.5")
35481e8b
SB
2371 (source (origin
2372 (method url-fetch)
6ad191ba 2373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2374 "fizmo-" version ".tar.gz"))
35481e8b
SB
2375 (sha256
2376 (base32
50e1d36c 2377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2378 (build-system gnu-build-system)
2379 (arguments
2380 '(#:configure-flags
2381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2382 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2384 (native-inputs
2385 `(("pkg-config" ,pkg-config)))
2386 (inputs
32199e9a
KK
2387 `(("freetype" ,freetype)
2388 ("libjpeg" ,libjpeg)
35481e8b
SB
2389 ("libpng" ,libpng)
2390 ("libsndfile" ,libsndfile)
2391 ("libxml2" ,libxml2)
2392 ("ncurses" ,ncurses)
32199e9a 2393 ("sdl2" ,sdl2)))
6ad191ba 2394 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2395 (synopsis "Z-machine interpreter")
2396 (description
2397 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2398interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2399either by Infocom or created using the Inform compiler.")
2400 (license license:bsd-3)))
2401
fc936b65
DH
2402(define-public gnugo
2403 (package
2404 (name "gnugo")
2405 (version "3.8")
2406 (source (origin
2407 (method url-fetch)
2408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2409 ".tar.gz"))
2410 (sha256
2411 (base32
2412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2413 (build-system gnu-build-system)
2414 (inputs `(("readline" ,readline)))
4cc78cb3 2415 (synopsis "Play the game of Go")
7c125ce0
AK
2416 (description
2417 "GNU Go is a program that plays the game of Go, in which players
2418place stones on a grid to form territory or capture other stones. While
2419it can be played directly from the terminal, rendered in ASCII characters,
2420it is also possible to play GNU Go with 3rd party graphical interfaces or
2421even in Emacs. It supports the standard game storage format (SGF, Smart
2422Game Format) and inter-process communication format (GMP, Go Modem
2423Protocol).")
6fd52309 2424 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2425 (license license:gpl3+)))
67fa7a27
CAW
2426
2427(define-public extremetuxracer
2428 (package
2429 (name "extremetuxracer")
101460d4 2430 (version "0.7.5")
67fa7a27
CAW
2431 (source (origin
2432 (method url-fetch)
2433 (uri (string-append
966a543b 2434 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2435 version "/etr-" version ".tar.xz"))
2436 (sha256
2437 (base32
101460d4 2438 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2439 (build-system gnu-build-system)
2440 (native-inputs
2441 `(("pkg-config" ,pkg-config)))
2442 (inputs
b8a35cce
RW
2443 `(("glu" ,glu)
2444 ("sfml" ,sfml)))
5bc0ac96
TGR
2445 (synopsis "High-speed arctic racing game based on Tux Racer")
2446 ;; Snarfed straight from Debian.
67fa7a27
CAW
2447 (description "Extreme Tux Racer, or etracer as it is called for short, is
2448a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2449game is to slide down a snow- and ice-covered mountain as quickly as possible,
2450avoiding the trees and rocks that will slow you down.
2451
2452Collect herrings and other goodies while sliding down the hill, but avoid fish
2453bones.
2454
2455This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2457 (license license:gpl2+)))
7a4d0509 2458
1a0633e7
RW
2459(define-public supertuxkart
2460 (package
2461 (name "supertuxkart")
3747ecb1 2462 (version "1.1")
1a0633e7
RW
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2467 version "/supertuxkart-" version "-src.tar.xz"))
2468 (sha256
2469 (base32
3747ecb1 2470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
2471 (modules '((guix build utils)))
2472 (snippet
2473 ;; Delete bundled library sources
2474 '(begin
56a48582
PL
2475 ;; Supertuxkart uses modified versions of the Irrlicht engine
2476 ;; and the bullet library. The developers gave an explanation
2477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 2478 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
2479 (for-each delete-file-recursively
2480 '("lib/zlib"
2481 "lib/libpng"
2482 "lib/jpeglib"
2483 "lib/glew"
56a48582
PL
2484 "lib/wiiuse"
2485 "lib/enet"))
1a0633e7
RW
2486 #t))))
2487 (build-system cmake-build-system)
2488 (arguments
2489 `(#:tests? #f ; no check target
2490 #:configure-flags
2491 (list "-DUSE_WIIUSE=0"
56a48582 2492 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2494 "-DUSE_SYSTEM_GLEW=TRUE"
2495 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
2496 ;; In order to use the system ENet library, IPv6 support (added in
2497 ;; SuperTuxKart version 1.1) must be disabled.
2498 "-DUSE_IPV6=FALSE"
17c3f776
RH
2499 ;; FIXME: needs libopenglrecorder
2500 "-DBUILD_RECORDER=0"
1a0633e7 2501 ;; Irrlicht returns an integer instead of a boolean
56a48582 2502 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2503 (inputs
2504 `(("glew" ,glew)
2505 ("zlib" ,zlib)
2506 ("openal" ,openal)
2507 ("libvorbis" ,libvorbis)
2508 ("freetype" ,freetype)
2509 ("fribidi" ,fribidi)
3747ecb1 2510 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
2511 ("mesa" ,mesa)
2512 ("libx11" ,libx11)
2513 ("libxrandr" ,libxrandr)
2514 ("curl" ,curl)
2515 ;; The following input is needed to build the bundled and modified
2516 ;; version of irrlicht.
60af1822 2517 ("libjpeg" ,libjpeg)
56a48582
PL
2518 ("openssl" ,openssl)
2519 ("enet" ,enet)))
1a0633e7
RW
2520 (native-inputs
2521 `(("pkg-config" ,pkg-config)))
3747ecb1 2522 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
2523 (synopsis "3D kart racing game")
2524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2525having fun over realism. You can play with up to 4 friends on one PC, racing
2526against each other or just trying to beat the computer; single-player mode is
2527also available.")
2528 (license license:gpl3+)))
2529
a1c1943b
CB
2530(define-public unknown-horizons
2531 (package
2532 (name "unknown-horizons")
2533 (version "2019.1")
2534 (source (origin
2535 (method url-fetch)
2536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2537 "unknown-horizons/tar.gz/" version))
2538 (file-name (string-append name "-" version ".tar.gz"))
2539 (sha256
2540 (base32
2541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2542 (build-system python-build-system)
2543 (arguments
2544 '(#:phases
2545 (modify-phases %standard-phases
2546 (add-before 'build 'set-HOME
2547 (lambda _
2548 (setenv "HOME" "/tmp")))
2549 (add-after 'build 'build-extra
2550 (lambda _
2551 (invoke "python3" "./setup.py" "build_i18n")
2552 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2553 #t))
2554 (add-after 'install 'patch
2555 (lambda* (#:key outputs #:allow-other-keys)
2556 (let ((out (assoc-ref outputs "out")))
2557 (substitute* (string-append out "/bin/unknown-horizons")
2558 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2559 (string-append "os.chdir(\""
2560 (assoc-ref outputs "out")
2561 "/share/unknown-horizons\")"))))
2562 #t))
2563 ;; TODO: Run GUI tests as well
2564 (replace 'check
2565 (lambda _
2566 (substitute* "horizons/constants.py"
2567 (("IS_DEV_VERSION = False")
2568 "IS_DEV_VERSION = True"))
2569 (invoke "pytest" "tests")
2570 (substitute* "horizons/constants.py"
2571 (("IS_DEV_VERSION = True")
2572 "IS_DEV_VERSION = False"))
2573 #t)))))
2574 (inputs
2575 `(("fifengine" ,fifengine)
2576 ("python:tk" ,python "tk")
2577 ("python-pillow" ,python-pillow)
2578 ("python-pyyaml" ,python-pyyaml)))
2579 (native-inputs
2580 `(("intltool" ,intltool)
2581
2582 ;; Required for tests
2583 ("python-greenlet" ,python-greenlet)
2584 ("python-polib" ,python-polib)
2585 ("python-pytest" ,python-pytest)
2586 ("python-pytest-mock" ,python-pytest-mock)))
2587 (home-page "http://unknown-horizons.org/")
2588 (synopsis "Isometric realtime strategy, economy and city building simulation")
2589 (description
2590 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2591on economy and city building. Expand your small settlement to a strong and
2592wealthy colony, collect taxes and supply your inhabitants with valuable
2593goods. Increase your power with a well balanced economy and with strategic
2594trade and diplomacy.")
2595 (license (list
2596 license:gpl2+ ; Covers code
2597 license:expat ; tests/dummy.py, ext/polib.py
2598 license:cc-by-sa3.0 ; Covers some media content
2599 license:cc-by3.0 ; Covers some media content
2600 license:bsd-3)))) ; horizons/ext/speaklater.py
2601
7a4d0509
SB
2602(define-public gnujump
2603 (package
2604 (name "gnujump")
2605 (version "1.0.8")
2606 (source (origin
2607 (method url-fetch)
2608 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2609 version ".tar.gz"))
2610 (sha256
2611 (base32
2612 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2613 (build-system gnu-build-system)
2614 (arguments
2615 '(#:phases
2616 (modify-phases %standard-phases
2617 (add-before
2618 'configure 'link-libm
18a613fb
EF
2619 (lambda _ (setenv "LIBS" "-lm")))
2620 (add-after 'install 'create-desktop-entry
2621 (lambda* (#:key outputs #:allow-other-keys)
2622 (let* ((out (assoc-ref outputs "out"))
2623 (apps (string-append out "/share/applications")))
2624 (mkdir-p apps)
2625 (with-output-to-file
2626 (string-append apps "/gnujump.desktop")
2627 (lambda _
2628 (format #t
2629 "[Desktop Entry]~@
2630 Name=GNUjump~@
2631 Comment=Jump up the tower to survive~@
2632 Exec=~a/bin/gnujump~@
2633 Terminal=false~@
2634 Type=Application~@
2635 Categories=Game;ArcadeGame~%"
2636 out)))))))))
7a4d0509
SB
2637 (inputs
2638 `(("glu" ,glu)
b3546174 2639 ("mesa" ,mesa)
7a4d0509
SB
2640 ("sdl" ,sdl)
2641 ("sdl-image" ,sdl-image)
2642 ("sdl-mixer" ,sdl-mixer)))
2643 (home-page "http://gnujump.es.gnu.org/")
2644 (synopsis
2645 "Game of jumping to the next floor, trying not to fall")
2646 (description
2647 "GNUjump is a simple, yet addictive game in which you must jump from
2648platform to platform to avoid falling, while the platforms drop at faster rates
2649the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2650falling, themeable graphics and sounds, and replays.")
2651 (license license:gpl3+)))
159093a7 2652
649220ad 2653(define-public wesnoth
159093a7 2654 (package
649220ad 2655 (name "wesnoth")
b6f1c6bb 2656 (version "1.14.11")
159093a7
SB
2657 (source (origin
2658 (method url-fetch)
de67e922 2659 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2660 (version-major+minor version)
2661 "/wesnoth-" version "/"
2662 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2663 (sha256
2664 (base32
b6f1c6bb 2665 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
159093a7
SB
2666 (build-system cmake-build-system)
2667 (arguments
03f0b5e2
MB
2668 `(#:tests? #f ;no check target
2669 #:phases (modify-phases %standard-phases
2670 (add-before 'configure 'treat-boost-as-system-header
2671 (lambda* (#:key inputs #:allow-other-keys)
2672 (let ((boost (assoc-ref inputs "boost")))
2673 ;; Ensure Boost is treated as "system headers" to
2674 ;; pacify compiler warnings induced by Boost headers.
2675 (for-each (lambda (variable)
2676 (setenv variable
2677 (string-append boost "/include:"
2678 (or (getenv variable)
2679 ""))))
2680 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2681 #t))))))
159093a7 2682 (native-inputs
b94a6ca0 2683 `(("gettext" ,gettext-minimal)
159093a7
SB
2684 ("pkg-config" ,pkg-config)))
2685 (inputs
2686 `(("boost" ,boost)
2687 ("dbus" ,dbus)
2688 ("fribidi" ,fribidi)
2689 ("libvorbis" ,libvorbis)
e554d43d 2690 ("openssl" ,openssl)
159093a7 2691 ("pango" ,pango)
e554d43d
AI
2692 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2693 (home-page "https://www.wesnoth.org/")
159093a7
SB
2694 (synopsis "Turn-based strategy game")
2695 (description
2696 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2697with several single player campaigns, and multiplayer games (both networked and
2698local).
2699
2700Battle for control on a range of maps, using variety of units which have
2701advantages and disadvantages against different types of attacks. Units gain
2702experience and advance levels, and are carried over from one scenario to the
2703next campaign.")
2704 (license license:gpl2+)))
c449a076 2705
649220ad
NG
2706(define-public the-battle-for-wesnoth
2707 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2708
649220ad 2709(define-public wesnoth-server
75abd864 2710 (package
649220ad
NG
2711 (inherit wesnoth)
2712 (name "wesnoth-server")
75abd864
AI
2713 (inputs
2714 `(("boost" ,boost)
e554d43d
AI
2715 ("icu4c" ,icu4c)
2716 ("openssl" ,openssl)
2717 ("sdl2" ,sdl2)))
75abd864 2718 (arguments
e554d43d
AI
2719 `(#:configure-flags '("-DENABLE_GAME=OFF")
2720 ,@(package-arguments wesnoth)))
75abd864
AI
2721 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2722 (description "This package contains a dedicated server for @emph{The
2723Battle for Wesnoth}.")))
2724
649220ad
NG
2725(define-public the-battle-for-wesnoth-server
2726 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2727
c449a076
EB
2728(define-public gamine
2729 (package
2730 (name "gamine")
87683add 2731 (version "1.6")
c449a076
EB
2732 (source (origin
2733 (method url-fetch)
2734 (uri (string-append "mirror://sourceforge/gamine-game/"
2735 "gamine-" version ".tar.gz"))
2736 (sha256
2737 (base32
87683add 2738 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2739 (build-system gnu-build-system)
2740 (native-inputs
2741 `(("pkg-config" ,pkg-config)
2742 ("intltool" ,intltool)))
2743 (inputs
2744 `(("gstreamer" ,gstreamer)
87683add
TGR
2745 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2746 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2747 ("gtk+" ,gtk+)))
2748 (arguments
2749 `(#:tests? #f
2750 #:make-flags
2751 (let ((out (assoc-ref %outputs "out")))
2752 (list (string-append "PREFIX=" out)
2753 (string-append "SYSCONFDIR=" out "/etc")))
2754 #:phases
2755 (modify-phases %standard-phases
2756 (delete 'configure)
2757 (add-after
2758 'install 'wrap-gamine
2759 (lambda* (#:key outputs #:allow-other-keys)
2760 (let ((out (assoc-ref outputs "out"))
2761 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2762 (wrap-program (string-append out "/bin/gamine")
2763 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2764 #t)))))
2765 (home-page "http://gamine-game.sourceforge.net/")
2766 (synopsis "Mouse and keyboard discovery for children")
2767 (description
2768 "Gamine is a game designed for young children who are learning to use the
2769mouse and keyboard. The child uses the mouse to draw colored dots and lines
2770on the screen and keyboard to display letters.")
2771 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2772 (license license:gpl3)))
2773
2e2ed3cb
AK
2774(define-public manaplus
2775 (package
2776 (name "manaplus")
2b744c21 2777 (version "1.9.3.23")
2e2ed3cb
AK
2778 (source (origin
2779 (method url-fetch)
2780 (uri (string-append
074dd909 2781 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2782 version "/manaplus-" version ".tar.xz"))
2783 (sha256
2784 (base32
2b744c21 2785 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2786 (build-system gnu-build-system)
2787 (arguments
2788 '(#:configure-flags
2789 (list (string-append "CPPFLAGS=-I"
2790 (assoc-ref %build-inputs "sdl-union")
2791 "/include/SDL"))))
2792 (native-inputs
2793 `(("pkg-config" ,pkg-config)))
2794 (inputs
2795 `(("glu" ,glu)
2796 ("curl" ,curl)
2797 ("libxml2" ,libxml2)
2798 ("mesa" ,mesa)
2e2ed3cb 2799 ("sdl-union" ,(sdl-union))))
074dd909 2800 (home-page "https://manaplus.org")
2e2ed3cb
AK
2801 (synopsis "Client for 'The Mana World' and similar games")
2802 (description
2803 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2804fully supported client for @uref{http://www.themanaworld.org, The mana
2805world}, @uref{http://evolonline.org, Evol Online} and
2806@uref{http://landoffire.org, Land of fire}.")
2807 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2808 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2809 ;; The rest is under GPL2+.
2810 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2811
e9687748
AS
2812(define openttd-engine
2813 (package
2814 (name "openttd-engine")
532dba49 2815 (version "1.9.3")
e9687748
AS
2816 (source
2817 (origin (method url-fetch)
532dba49 2818 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2819 version "/openttd-" version "-source.tar.xz"))
2820 (sha256
2821 (base32
532dba49 2822 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2823 (modules '((guix build utils)))
2824 (snippet
2825 ;; The DOS port contains proprietary software.
6cbee49d
MW
2826 '(begin
2827 (delete-file-recursively "os/dos")
2828 #t))))
e9687748
AS
2829 (build-system gnu-build-system)
2830 (arguments
2831 `(#:tests? #f ; no "check" target
2832 #:phases
2833 (modify-phases %standard-phases
2834 ;; The build process fails if the configure script is passed the
2835 ;; option "--enable-fast-install".
2836 (replace 'configure
857b2f53
AI
2837 (lambda* (#:key inputs outputs (configure-flags '())
2838 #:allow-other-keys)
e9687748
AS
2839 (let ((out (assoc-ref outputs "out"))
2840 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2841 (apply invoke "./configure"
2842 (string-append "--prefix=" out)
2843 ;; Provide the "lzo" path.
2844 (string-append "--with-liblzo2="
2845 lzo "/lib/liblzo2.a")
2846 ;; Put the binary in 'bin' instead of 'games'.
2847 "--binary-dir=bin"
2848 configure-flags)))))))
e9687748
AS
2849 (native-inputs `(("pkg-config" ,pkg-config)))
2850 (inputs
3a48d055 2851 `(("allegro" ,allegro)
e9687748
AS
2852 ("fontconfig" ,fontconfig)
2853 ("freetype" ,freetype)
2854 ("icu4c" ,icu4c)
2855 ("libpng" ,libpng)
2856 ("lzo" ,lzo)
2857 ("sdl" ,sdl)
2858 ("xz" ,xz)
2859 ("zlib" ,zlib)))
4cb0b5bf 2860 (synopsis "Transportation economics simulator game")
e9687748
AS
2861 (description "OpenTTD is a game in which you transport goods and
2862passengers by land, water and air. It is a re-implementation of Transport
2863Tycoon Deluxe with many enhancements including multiplayer mode,
2864internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2865autoreplace and autoupdate vehicles. This package only includes the game
2866engine. When you start it you will be prompted to download a graphics set.")
532dba49 2867 (home-page "https://www.openttd.org/")
e9687748
AS
2868 ;; This package is GPLv2, except for a few files located in
2869 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2870 ;; licenses. In addition, this software contains an in-game downloader
2871 ;; from which the user may find non-functional data licensed under
2872 ;; different terms.
2873 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2874
4df9495e
KK
2875(define openttd-opengfx
2876 (package
2877 (name "openttd-opengfx")
894fbb33 2878 (version "0.5.5")
4df9495e
KK
2879 (source
2880 (origin
2881 (method url-fetch)
2882 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2883 version "/opengfx-" version "-source.tar.xz"))
2884 (sha256
2885 (base32
894fbb33 2886 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2887 (build-system gnu-build-system)
2888 (arguments
2889 '(#:make-flags (list "CC=gcc"
2890 (string-append "INSTALL_DIR="
2891 (assoc-ref %outputs "out")
857b2f53 2892 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2893 #:phases
2894 (modify-phases %standard-phases
2895 (replace 'configure
2896 (lambda _
2897 ;; Make sure HOME is writable for GIMP.
2898 (setenv "HOME" (getcwd))
2899
2900 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2901 ;; dos2unix from receiving its version information as a flag.
2902 (substitute* "Makefile"
2903 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2904 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2905 ;; The check phase for this package only checks the md5sums of the built
2906 ;; GRF files against the md5sums of the release versions. Because we use
2907 ;; different software versions than upstream does, some of the md5sums
2908 ;; are different. However, the package is still reproducible, it's safe
2909 ;; to disable this test.
c0959cc9
AI
2910 #:tests? #f
2911 #:parallel-build? #f))
4df9495e
KK
2912 (native-inputs `(("dos2unix" ,dos2unix)
2913 ("gimp" ,gimp)
2914 ("grfcodec" ,grfcodec)
2915 ("nml" ,nml)
2916 ("python" ,python-2)))
2917 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2918 (synopsis "Base graphics set for OpenTTD")
2919 (description
2920 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2921set that aims to ensure the best possible out-of-the-box experience.
2922
2923OpenGFX provides you with...
2924@enumerate
2925@item All graphics you need to enjoy OpenTTD.
2926@item Uniquely drawn rail vehicles for every climate.
2927@item Completely snow-aware rivers.
2928@item Different river and sea water.
2929@item Snow-aware buoys.
2930@end enumerate")
2931 (license license:gpl2)))
2932
c17b0790
AI
2933(define openttd-opensfx
2934 (package
2935 (name "openttd-opensfx")
2936 (version "0.2.3")
2937 (source
2938 (origin
2939 (method url-fetch)
2940 (uri (string-append
2941 "https://binaries.openttd.org/extra/opensfx/"
2942 version "/opensfx-" version "-source.tar.gz"))
2943 (sha256
2944 (base32
2945 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2946 (build-system gnu-build-system)
2947 (native-inputs
2948 `(("catcodec" ,catcodec)
61506fe5 2949 ("python" ,python-2)))
c17b0790
AI
2950 (arguments
2951 `(#:make-flags
2952 (list (string-append "INSTALL_DIR=" %output
2953 "/share/games/openttd/baseset/opensfx"))
2954 #:phases
2955 (modify-phases %standard-phases
2956 (add-after 'unpack 'make-reproducible
2957 (lambda _
2958 ;; Remove the time dependency of the installed tarball by setting
2959 ;; the modification times if its members to 0.
2960 (substitute* "scripts/Makefile.def"
2961 (("-cf") " --mtime=@0 -cf"))
2962 #t))
2963 (delete 'configure))))
2964 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2965 (synopsis "Base sounds for OpenTTD")
2966 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2967it possible to play OpenTTD without requiring the proprietary sound files from
2968the original Transport Tycoon Deluxe.")
2969 (license license:cc-sampling-plus-1.0)))
2970
823e1218
AI
2971(define openttd-openmsx
2972 (package
2973 (name "openttd-openmsx")
2974 (version "0.3.1")
2975 (source
2976 (origin
2977 (method url-fetch)
2978 (uri (string-append
2979 "https://binaries.openttd.org/extra/openmsx/"
2980 version "/openmsx-" version "-source.tar.gz"))
2981 (sha256
2982 (base32
2983 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2984 (build-system gnu-build-system)
2985 (native-inputs
61506fe5 2986 `(("python" ,python-2)))
823e1218
AI
2987 (arguments
2988 `(#:make-flags
2989 (list (string-append "INSTALL_DIR=" %output
2990 "/share/games/openttd/baseset"))
2991 #:phases
2992 (modify-phases %standard-phases
2993 (delete 'configure)
2994 (add-after 'install 'post-install
2995 ;; Rename openmsx-version to openmsx
2996 (lambda* (#:key outputs #:allow-other-keys)
2997 (let ((install-directory (string-append (assoc-ref outputs "out")
2998 "/share/games/openttd/baseset")))
2999 (rename-file (string-append install-directory "/openmsx-" ,version)
3000 (string-append install-directory "/openmsx"))
3001 #t))))))
3002 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3003 (synopsis "Music set for OpenTTD")
3004 (description "OpenMSX is a music set for OpenTTD which makes it possible
3005to play OpenTTD without requiring the proprietary music from the original
3006Transport Tycoon Deluxe.")
3007 (license license:gpl2)))
3008
e9687748
AS
3009(define-public openttd
3010 (package
3011 (inherit openttd-engine)
ca508f1c
KK
3012 (name "openttd")
3013 (arguments
857b2f53
AI
3014 `(#:configure-flags
3015 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3016 "/bin/timidity"))
3017 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3018 ((#:phases phases)
3019 `(modify-phases ,phases
3020 (add-after 'install 'install-data
3021 (lambda* (#:key inputs outputs #:allow-other-keys)
3022 (for-each
3023 (lambda (input)
3024 (copy-recursively (assoc-ref inputs input)
3025 (assoc-ref outputs "out")))
3026 (list "opengfx" "openmsx" "opensfx"))
3027 #t)))))))
3028 (inputs
3029 `(("timidity++" ,timidity++)
3030 ,@(package-inputs openttd-engine)))
ca508f1c
KK
3031 (native-inputs
3032 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
3033 ("openmsx" ,openttd-openmsx)
3034 ("opensfx" ,openttd-opensfx)
ca508f1c 3035 ,@(package-native-inputs openttd-engine)))))
e9687748 3036
0c6ade0b
RH
3037(define openrct2-title-sequences
3038 (package
3039 (name "openrct2-title-sequences")
3040 (version "0.1.2")
3041 (source
3042 (origin
3043 (method url-fetch)
3044 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3045 version "/title-sequence-v" version ".zip"))
3046 (file-name (string-append name "-" version ".zip"))
3047 (sha256
3048 (base32
3049 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3050 (build-system trivial-build-system)
3051 (native-inputs
3052 `(("bash" ,bash)
3053 ("coreutils" ,coreutils)
3054 ("unzip" ,unzip)))
3055 (arguments
3056 `(#:modules ((guix build utils))
3057 #:builder
3058 (begin
3059 (use-modules (guix build utils))
3060 (let* ((out (assoc-ref %outputs "out"))
3061 (openrct2-title-sequences (string-append out
3062 "/share/openrct2/title-sequences"))
3063 (source (assoc-ref %build-inputs "source"))
3064 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3065 (copy-file source (string-append ,name "-" ,version ".zip"))
3066 (invoke unzip (string-append ,name "-" ,version ".zip"))
3067 (delete-file (string-append ,name "-" ,version ".zip"))
3068 (mkdir-p openrct2-title-sequences)
3069 (copy-recursively "."
3070 openrct2-title-sequences)
3071 #t))))
3072 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3073 (synopsis "Title sequences for OpenRCT2")
3074 (description
3075 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3076 (license license:gpl3+)))
3077
3078(define openrct2-objects
3079 (package
3080 (name "openrct2-objects")
924e6993 3081 (version "1.0.9")
0c6ade0b
RH
3082 (source
3083 (origin
3084 (method url-fetch)
3085 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3086 version "/objects.zip"))
3087 (file-name (string-append name "-" version ".zip"))
3088 (sha256
924e6993 3089 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
3090 (build-system trivial-build-system)
3091 (native-inputs
3092 `(("bash" ,bash)
3093 ("coreutils" ,coreutils)
3094 ("unzip" ,unzip)))
3095 (arguments
3096 `(#:modules ((guix build utils))
3097 #:builder
3098 (begin
3099 (use-modules (guix build utils))
3100 (let* ((out (assoc-ref %outputs "out"))
3101 (openrct2-objects (string-append out
3102 "/share/openrct2/objects"))
3103 (source (assoc-ref %build-inputs "source"))
3104 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3105 (copy-file source (string-append ,name "-" ,version ".zip"))
3106 (invoke unzip (string-append ,name "-" ,version ".zip"))
3107 (delete-file (string-append ,name "-" ,version ".zip"))
3108 (mkdir-p openrct2-objects)
3109 (copy-recursively "."
3110 openrct2-objects)
3111 #t))))
3112 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3113 (synopsis "Objects for OpenRCT2")
3114 (description
3115 "openrct2-objects is a set of objects for OpenRCT2.")
3116 (license license:gpl3+)))
3117
7aafb3b3
RH
3118(define-public openrct2
3119 (package
3120 (name "openrct2")
b6909d47 3121 (version "0.2.4")
7aafb3b3
RH
3122 (source
3123 (origin
2e5a0690
TGR
3124 (method git-fetch)
3125 (uri (git-reference
3126 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3127 (commit (string-append "v" version))))
3128 (file-name (git-file-name name version))
7aafb3b3 3129 (sha256
b6909d47 3130 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
3131 (build-system cmake-build-system)
3132 (arguments
940c2c5c
RH
3133 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3134 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 3135 #:tests? #f ; tests require network access
7aafb3b3 3136 #:phases
6457509c
TGR
3137 (modify-phases %standard-phases
3138 (add-after 'unpack 'fix-usr-share-paths&add-data
3139 (lambda* (#:key inputs outputs #:allow-other-keys)
3140 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3141 (objects (assoc-ref inputs "openrct2-objects")))
3142 ;; Fix some references to /usr/share.
3143 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3144 (("/usr/share")
3145 (string-append (assoc-ref %outputs "out") "/share")))
3146 (copy-recursively
3147 (string-append titles "/share/openrct2/title-sequences")
3148 "data/title")
3149 (copy-recursively
3150 (string-append objects "/share/openrct2/objects")
3151 "data/object"))))
8c14f7f8 3152 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
3153 (lambda _
3154 ;; Don't treat warnings as errors.
3155 (substitute* "CMakeLists.txt"
8c14f7f8
MB
3156 (("-Werror") ""))
3157 #t)))))
c695fb76
TGR
3158 (inputs `(("curl" ,curl)
3159 ("fontconfig" ,fontconfig)
3160 ("freetype" ,freetype)
0c6ade0b 3161 ("icu4c" ,icu4c)
c695fb76
TGR
3162 ("jansson" ,jansson)
3163 ("libpng" ,libpng)
3164 ("libzip" ,libzip)
3165 ("mesa" ,mesa)
0c6ade0b
RH
3166 ("openrct2-objects" ,openrct2-objects)
3167 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
3168 ("openssl" ,openssl)
3169 ("sdl2" ,sdl2)
3170 ("speexdsp" ,speexdsp)
3171 ("zlib" ,zlib)))
7aafb3b3 3172 (native-inputs
63d4ef52 3173 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
3174 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3175 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3176 (description "OpenRCT2 is a free software re-implementation of
3177RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3178maintaining an amusement park containing attractions, shops and facilities.
3179
3180Note that this package does @emph{not} provide the game assets (sounds,
3181images, etc.)")
3182 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3183 ;; regarding assets.
3184 (license license:gpl3+)))
3185
e3f755f4
EB
3186(define-public pinball
3187 (package
3188 (name "pinball")
3189 (version "0.3.1")
3190 (source
3191 (origin (method url-fetch)
3192 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3193 "pinball-" version "/"
3194 "pinball-" version ".tar.gz"))
3195 (sha256
3196 (base32
3197 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3198 (patches (search-patches "pinball-const-fix.patch"
3199 "pinball-cstddef.patch"
3200 "pinball-missing-separators.patch"
3201 "pinball-src-deps.patch"
3202 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3203 (build-system gnu-build-system)
3204 (inputs
3205 `(("glu" ,glu)
3206 ("mesa" ,mesa)
3207 ("sdl" ,sdl)
3208 ("sdl-image" ,sdl-image)
3209 ("sdl-mixer" ,sdl-mixer)))
3210 (arguments
3211 '(#:configure-flags
3212 (list (string-append "CPPFLAGS=-I"
3213 (assoc-ref %build-inputs "sdl-image")
3214 "/include/SDL -I"
3215 (assoc-ref %build-inputs "sdl-mixer")
3216 "/include/SDL"))))
3217 (home-page "http://pinball.sourceforge.net")
3218 (synopsis "Pinball simulator")
3219 (description "The Emilia Pinball Project is a pinball simulator. There
3220are only two levels to play with, but they are very addictive.")
3221 (license license:gpl2)))
7e2e1155
RF
3222
3223(define-public pioneers
3224 (package
3225 (name "pioneers")
59e8a57d 3226 (version "15.5")
7e2e1155
RF
3227 (source (origin
3228 (method url-fetch)
3229 (uri (string-append "http://downloads.sourceforge.net/pio/"
3230 "pioneers-" version ".tar.gz"))
3231 (sha256
3232 (base32
59e8a57d 3233 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3234 (build-system gnu-build-system)
59e8a57d
TGR
3235 (inputs `(("avahi" ,avahi)
3236 ("gtk+" ,gtk+)
3237 ("librsvg" ,librsvg)))
7e2e1155 3238 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3239 ("itstool" ,itstool)
3240 ("libxml2" ,libxml2)
7e2e1155
RF
3241 ("pkg-config" ,pkg-config)))
3242 (synopsis "Board game inspired by The Settlers of Catan")
3243 (description "Pioneers is an emulation of the board game The Settlers of
3244Catan. It can be played on a local network, on the internet, and with AI
3245players.")
3246 (home-page "http://pio.sourceforge.net/")
8763fdf8 3247 (license license:gpl2+)))
fea1f275 3248
d7c4619b
AE
3249(define-public einstein
3250 (package
3251 (name "einstein")
3252 (version "2.0")
3253 (source (origin
3254 (method url-fetch)
d4cf5b01 3255 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3256 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3257 (sha256
3258 (base32
3259 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3260 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3261 (build-system gnu-build-system)
3262 (inputs
3263 `(("freetype" ,freetype)
3264 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3265 ("zlib" ,zlib)))
3266 (native-inputs
3267 `(("font-dejavu" ,font-dejavu)))
3268 (arguments
3269 `(#:tests? #f ; no check target
3270 #:phases
3271 (modify-phases %standard-phases
3272 (replace 'configure
3273 (lambda* (#:key outputs inputs #:allow-other-keys)
3274 (let ((out (assoc-ref outputs "out"))
3275 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3276 "/share/fonts/truetype/DejaVuSans.ttf")))
3277 (substitute* "Makefile"
3278 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3279 ;; The patch above registers a free font for use by the binary,
3280 ;; but the font is copied during the compile phase into a
3281 ;; resources file, so we need to make the ttf file available.
3282 (symlink dejavu "res/DejaVuSans.ttf")
3283 #t))))))
3284 (synopsis "Logic puzzle game")
3285 (description "The goal of this logic game is to open all cards in a 6x6
3286grid, using a number of hints as to their relative position. The game idea
3287is attributed to Albert Einstein.")
3288 ;; The original home page has disappeared.
3289 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3290 "http://games.flowix.com/en/index.html"))
3291 ;; License according to
3292 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3293 ;; The source code is a DFSG-sanitized tarball and does not contain any
3294 ;; license information.
3295 (license license:gpl3+)))
3296
d381962f 3297(define-public powwow
3298 (package
3299 (name "powwow")
90d37add 3300 (version "1.2.19")
d381962f 3301 (source (origin
3302 (method url-fetch)
3303 (uri (string-append
cc30a472 3304 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3305 version ".tar.gz"))
d381962f 3306 (sha256
3307 (base32
90d37add 3308 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3309 (inputs
3310 `(("ncurses" ,ncurses)))
3311 (build-system gnu-build-system)
36aff81a 3312 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3313 (synopsis "MUD and telnet client")
3314 (description
3315 "POWWOW is a client software which can be used for telnet as well as for
3316@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3317the chat server psyced with the specific config located at
3318http://lavachat.symlynx.com/unix/")
3319 (license license:gpl2+)))
158f5734 3320
5ef819cc 3321(define-public red-eclipse
7fa9a685
KK
3322 (let ((release "2.0.0")
3323 (revision 0))
158f5734 3324 (package
5b8a8543 3325 (name "red-eclipse")
42abb842
AFN
3326 (version (if (zero? revision)
3327 release
3328 (string-append release "-"
3329 (number->string revision))))
bb7c071b
TGR
3330 (source
3331 (origin
3332 (method git-fetch)
3333 (uri (git-reference
7fa9a685
KK
3334 (url "https://github.com/redeclipse/base.git")
3335 (commit (string-append "v" release))
3336 (recursive? #t))) ; for game data
bb7c071b
TGR
3337 (file-name (git-file-name name version))
3338 (sha256
dc4469e9
KK
3339 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3340 (modules '((guix build utils)))
3341 (snippet
3342 ;; Remove proprietary libraries and other pre-compiled binaries.
3343 '(begin
3344 (delete-file-recursively "bin")
3345 #t))))
158f5734
KY
3346 (build-system gnu-build-system)
3347 (arguments
3348 `(#:tests? #f ; no check target
3349 #:make-flags (list "CC=gcc" "-Csrc"
3350 (string-append "INSTDIR="
42abb842
AFN
3351 (assoc-ref %outputs "out") "/bin")
3352 (string-append "prefix="
3353 (assoc-ref %outputs "out")))
158f5734
KY
3354 #:phases
3355 (modify-phases %standard-phases
7fa9a685 3356 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
3357 (lambda* (#:key outputs #:allow-other-keys)
3358 (substitute* "src/engine/server.cpp"
7fa9a685
KK
3359 (("data = \"data\"")
3360 (string-append "data = \""
42abb842 3361 (assoc-ref outputs "out")
7fa9a685 3362 "/share/redeclipse/data\"")))
42abb842 3363 #t))
158f5734
KY
3364 (delete 'configure) ; no configure script
3365 (add-after 'set-paths 'set-sdl-paths
3366 (lambda* (#:key inputs #:allow-other-keys)
3367 (setenv "CPATH"
3368 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3369 "/include/SDL2:"
3370 (or (getenv "CPATH") "")))
158f5734
KY
3371 #t))
3372 (add-after 'install 'copy-data
3373 (lambda* (#:key outputs #:allow-other-keys)
3374 (let ((out (assoc-ref outputs "out")))
3375 (copy-recursively "config"
3376 (string-append out "/config"))
66c65aaf
KK
3377 (copy-file "doc/examples/servinit.cfg"
3378 (string-append out "/config/servinit.cfg"))
158f5734 3379 (copy-recursively "data"
42abb842
AFN
3380 (string-append out "/share/redeclipse/data"))
3381 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3382 (symlink (string-append out "/share/redeclipse/data")
3383 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3384 #t))
3385 (add-after 'copy-data 'wrap-program
3386 (lambda* (#:key inputs outputs #:allow-other-keys)
3387 (let* ((out (assoc-ref outputs "out"))
3388 (bin (string-append out "/bin")))
3389 (with-directory-excursion bin
3390 (rename-file "redeclipse_linux"
3391 ".redeclipse_linux-real")
3392 (rename-file "redeclipse_server_linux"
3393 ".redeclipse_server_linux-real")
3394 (call-with-output-file "redeclipse_linux"
3395 (lambda (port)
3396 (format port "#!~a/bin/sh
3397# Run the thing from its home, otherwise it just bails out.
3398cd \"~a\"
3399exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3400 (assoc-ref inputs "bash") ;implicit input
3401 (string-append out)
3402 (string-append bin))))
3403 (call-with-output-file "redeclipse_server_linux"
3404 (lambda (port)
3405 (format port "#!~a/bin/sh
3406# Run the thing from its home, otherwise it just bails out.
3407cd \"~a\"
3408exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3409 (assoc-ref inputs "bash") ;implicit input
3410 (string-append out)
3411 (string-append bin))))
3412 (chmod "redeclipse_linux" #o555)
3413 (chmod "redeclipse_server_linux" #o555)))
3414 #t)))))
631b20f9
TGR
3415 (native-inputs
3416 `(("pkg-config" ,pkg-config)))
158f5734
KY
3417 (inputs
3418 `(("curl" ,curl)
7fa9a685 3419 ("freetype" ,freetype)
158f5734 3420 ("glu" ,glu)
14b865dc
KK
3421 ("sdl-union" ,(sdl-union (list sdl2
3422 sdl2-image
7fa9a685 3423 sdl2-mixer)))))
dc4469e9 3424 (home-page "https://redeclipse.net/")
158f5734
KY
3425 (synopsis "Arena shooter derived from the Cube 2 engine")
3426 (description
3427 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3428Offering an innovative parkour system and distinct but all potent weapons,
3429Red Eclipse provides fast paced and accessible gameplay.")
3430 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 3431 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
3432 (license (list license:expat
3433 license:zlib
dc4469e9 3434 license:cc-by-sa4.0
158f5734
KY
3435 license:cc-by-sa3.0
3436 license:cc-by3.0
dc4469e9
KK
3437 license:cc0
3438 license:public-domain
3439 license:silofl1.1)))))
bcd2982f 3440
0fb9a15b
LC
3441(define-public grue-hunter
3442 (package
3443 (name "grue-hunter")
3444 (version "1.0")
3445 (source (origin
3446 (method url-fetch)
c41b2ffb 3447 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3448 (sha256
3449 (base32
3450 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3451 (build-system trivial-build-system) ; no Makefile.PL
3452 (arguments `(#:modules ((guix build utils))
3453 #:builder
3454 (begin
3455 (use-modules (guix build utils))
3456 (use-modules (srfi srfi-1))
3457
3458 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3459 (perl (string-append (assoc-ref %build-inputs
3460 "perl")
3461 "/bin"))
5edf2f05 3462 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3463 "gzip")
5edf2f05 3464 "/bin/gzip"))
0fb9a15b
LC
3465 (tar (string-append (assoc-ref %build-inputs
3466 "tar")
3467 "/bin/tar"))
3468 (out (assoc-ref %outputs "out"))
3469 (bin (string-append out "/bin"))
6d57723a
TGR
3470 (doc (string-append out
3471 "/share/doc/grue-hunter")))
e3cfef22
MW
3472 (copy-file tarball "grue-hunter.tar.gz")
3473 (invoke gzip "-d" "grue-hunter.tar.gz")
3474 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3475
e3cfef22
MW
3476 (mkdir-p bin)
3477 (copy-file "grue-hunter/gh.pl"
3478 (string-append bin "/grue-hunter"))
3479 (patch-shebang (string-append bin "/grue-hunter")
3480 (list perl))
3481
3482 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3483
e3cfef22 3484 #t))))
0fb9a15b
LC
3485 (inputs `(("perl" ,perl)
3486 ("tar" ,tar)
3487 ("gzip" ,gzip)
3488 ("tarball" ,source)))
3489 (home-page "http://jxself.org/grue-hunter.shtml")
3490 (synopsis "Text adventure game")
3491 (description
3492 "Grue Hunter is a text adventure game written in Perl. You must make
3493your way through an underground cave system in search of the Grue. Can you
3494capture it and get out alive?")
3495 (license license:agpl3+)))
f317aeb4 3496
ffed9eab
MB
3497(define-public lierolibre
3498 (package
3499 (name "lierolibre")
3500 (version "0.5")
3501 (source (origin
3502 (method url-fetch)
3503 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3504 version "/+download/lierolibre-"
3505 version ".tar.xz"))
3506 (sha256
3507 (base32
3508 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3509 (patches
3510 (search-patches "lierolibre-check-unaligned-access.patch"
3511 "lierolibre-try-building-other-arch.patch"
3512 "lierolibre-remove-arch-warning.patch"
3513 "lierolibre-newer-libconfig.patch"
3514 "lierolibre-is-free-software.patch"))
3515 (modules '((guix build utils)))
3516 (snippet
3517 '(begin
3518 ;; Delete pre-compiled files.
3519 (delete-file "data/LIERO.CHR")
3520 (delete-file "data/LIERO.SND")
3521 #t))))
3522 (build-system gnu-build-system)
3523 (native-inputs
3524 `(("imagemagick" ,imagemagick)
3525 ("pkg-config" ,pkg-config)
3526 ("util-linux" ,util-linux)
3527 ("sox" ,sox)))
3528 (inputs
3529 `(("boost" ,boost)
3530 ("libconfig" ,libconfig)
3531 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3532 ("zlib" ,zlib)))
3533 (home-page "https://gitlab.com/lierolibre/lierolibre")
3534 (synopsis "Old-school earthworm action game")
3535 (description
3536 "lierolibre is an earthworm action game where you fight another player
3537(or the computer) underground using a wide array of weapons.
3538
3539Features:
3540@itemize
3541@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3542and Game of Tag, plus AI-players without true intelligence!
3543@item Dat nostalgia.
3544@item Extensions via a hidden F1 menu:
3545@itemize
3546@item Replays
3547@item Game controller support
3548@item Powerlevel palettes
3549@end itemize
3550@item Ability to write game variables to plain text files.
3551@item Ability to load game variables from both EXE and plain text files.
3552@item Scripts to extract and repack graphics, sounds and levels.
3553@end itemize
3554
3555To switch between different window sizes, use F6, F7 and F8, to switch to
3556fullscreen, use F5 or Alt+Enter.")
3557 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3558 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3559
f317aeb4
KK
3560(define-public warzone2100
3561 (package
3562 (name "warzone2100")
f475b90c 3563 (version "3.2.3")
d8f4aefe
TGR
3564 (source
3565 (origin
3566 (method url-fetch)
3567 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3568 "unsupported/Warzone2100-"
3569 (version-major+minor version) "/" version
3570 "/warzone2100-" version ".tar.xz"))
3571 (sha256
3572 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3573 (build-system gnu-build-system)
3574 (arguments
f475b90c
KK
3575 `(#:configure-flags '("--with-distributor=Guix")
3576 #:phases
c5d17d50
RW
3577 (modify-phases %standard-phases
3578 (add-after 'unpack 'link-tests-with-qt
3579 (lambda _
3580 (substitute* "tests/Makefile.in"
3581 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3582 (string-append prefix "$(QT5_LIBS) ")))
3583 #t))
f475b90c 3584 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3585 (lambda _
f475b90c
KK
3586 (substitute* "tests/ivis_linktest.cpp"
3587 (("iV_DrawTextRotated.*;")
3588 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3589 "100, 100, 0.0f, font_regular);")))
c5d17d50 3590 #t)))))
f475b90c
KK
3591 (native-inputs `(("gettext" ,gettext-minimal)
3592 ("pkg-config" ,pkg-config)
f317aeb4
KK
3593 ("unzip" ,unzip)
3594 ("zip" ,zip)))
3595 (inputs `(("fontconfig" ,fontconfig)
3596 ("freetype" ,freetype)
3597 ("fribidi" ,fribidi)
3598 ("glew" ,glew)
f475b90c 3599 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3600 ("libtheora" ,libtheora)
3601 ("libvorbis" ,libvorbis)
3602 ("libxrandr" ,libxrandr)
3603 ("openal" ,openal)
3604 ("physfs" ,physfs)
77c729ba
RW
3605 ("qtbase" ,qtbase)
3606 ("qtscript" ,qtscript)
c5d17d50 3607 ("openssl" ,openssl)
c5d17d50 3608 ("sdl2" ,sdl2)))
f317aeb4
KK
3609 (home-page "http://wz2100.net")
3610 (synopsis "3D Real-time strategy and real-time tactics game")
3611 (description
3612 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3613modes. An extensive tech tree with over 400 different technologies, combined
3614with the unit design system, allows for a wide variety of possible units and
3615tactics.")
3616 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3617 (license (list license:bsd-3
3618 license:cc0
3619 license:cc-by-sa3.0
3620 license:expat
3621 license:gpl2+
3622 license:lgpl2.1+))))
4b670539 3623
649220ad 3624(define-public starfighter
4b670539 3625 (package
649220ad 3626 (name "starfighter")
8172ab2d 3627 (version "2.0.0.3")
4b670539 3628 (source (origin
8172ab2d
KK
3629 (method url-fetch)
3630 (uri (string-append
3631 "https://github.com/pr-starfighter/starfighter/releases"
3632 "/download/v" version "/starfighter-"
3633 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3634 (sha256
3635 (base32
8172ab2d 3636 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3637 (build-system gnu-build-system)
4b670539 3638 (native-inputs
8172ab2d 3639 `(("pkg-config" ,pkg-config)))
4b670539 3640 (inputs
1fe84f5d
KK
3641 `(("pango" ,pango)
3642 ("sdl2" ,sdl2)
4b670539 3643 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3644 ("sdl2-mixer" ,sdl2-mixer)
3645 ("sdl2-ttf" ,sdl2-ttf)))
3646 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3647 (synopsis "2D scrolling shooter game")
3648 (description
3649 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3650dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3651their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3652way, you will encounter new foes, make new allies, and assist local rebels
3653in strikes against the evil corporation.")
3654 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3655 (license (list license:gpl3+
3656 license:cc-by3.0
3657 license:cc-by-sa3.0
3658 license:cc0
3659 license:public-domain))))
35e2e495 3660
649220ad
NG
3661(define-public project-starfighter
3662 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3663
35e2e495
KK
3664(define-public chromium-bsu
3665 (package
3666 (name "chromium-bsu")
08722837 3667 (version "0.9.16.1")
35e2e495
KK
3668 (source (origin
3669 (method url-fetch)
e464bd60 3670 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3671 "/Chromium B.S.U. source code/"
e464bd60 3672 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3673 (sha256
3674 (base32
08722837 3675 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3676 (build-system gnu-build-system)
35e2e495 3677 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3678 (inputs `(("gettext" ,gettext-minimal)
08722837 3679 ("glu" ,glu)
35e2e495
KK
3680 ("quesoglc" ,quesoglc)
3681 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3682 (home-page "http://chromium-bsu.sourceforge.net/")
3683 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3684 (description
3685 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3686are responsible for delivering supplies to the troops on the front line. Your
3687ship has a small fleet of robotic fighters which you control from the relative
3688safety of the Chromium vessel.")
3689 ;; Clarified Artistic License for everything but sound, which is covered
3690 ;; by the Expat License.
3691 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3692
3693(define-public tuxpaint
3694 (package
3695 (name "tuxpaint")
c6aa2ee2 3696 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3697 (source
3698 (origin
3699 (method url-fetch)
3700 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3701 version "/tuxpaint-" version ".tar.gz"))
3702 (sha256
3703 (base32
c6aa2ee2 3704 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3705 (modules '((guix build utils)))
3706 (snippet
3707 '(begin
3708 ;; Remove win32 directory which contains binary dll's and the
3709 ;; deprecated visualc directory.
3710 (for-each delete-file-recursively '("win32" "visualc"))
3711 (substitute* "Makefile"
3712 ;; Do not rely on $(GPERF) being an absolute file name
3713 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3714 "$(GPERF) --version >/dev/null 2>&1"))
3715 #t))
9b1ada4e
EB
3716 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3717 (build-system gnu-build-system)
3718 (native-inputs
3719 `(("gperf" ,gperf)
3720 ("pkg-config" ,pkg-config)))
3721 (inputs
3722 `(("cairo" ,cairo)
3723 ("fribidi" ,fribidi)
b94a6ca0 3724 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3725 ("libpng" ,libpng)
3726 ("librsvg" ,librsvg)
3727 ("libpaper" ,libpaper)
3728 ("netpbm" ,netpbm)
3729 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3730 ;; TODO: Use system fonts rather than those in data/fonts
3731 (arguments
c6aa2ee2 3732 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3733 "GPERF=gperf" "CC=gcc"
3734 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3735 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3736 "KDE_PREFIX=$(PREFIX)/share/applications"
3737 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3738 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3739 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3740 #:tests? #f ;No tests
3741 #:phases (modify-phases %standard-phases
3742 (delete 'configure) ;no configure phase
f88c0ab8
EB
3743 (add-before 'install 'no-sys-cache
3744 (lambda _ ;do not rebuild system conf cache
3745 (substitute* "Makefile"
3746 (("kbuildsycoca4") ""))
3747 #t))
9b1ada4e
EB
3748 (add-after 'install 'fix-import
3749 (lambda* (#:key inputs outputs #:allow-other-keys)
3750 (let* ((out (assoc-ref outputs "out"))
3751 (net (assoc-ref inputs "netpbm"))
3752 (tpi (string-append out "/bin/tuxpaint-import")))
3753 (substitute* tpi
3754 ;; Point to installation prefix so that the default
3755 ;; configure file is found.
3756 (("/usr/local") out))
3757 ;; tuxpaint-import uses a bunch of programs from
3758 ;; netpbm, so make sure it knows where those are
3759 (wrap-program tpi
3760 `("PATH" ":" prefix
3761 (,(string-append net "/bin"))))))))))
3762 (native-search-paths
3763 (list (search-path-specification
3764 (variable "TUXPAINT_STAMPS_PATH")
3765 (files '("share/tuxpaint/stamps")))))
3766 (home-page "http://www.tuxpaint.org")
3767 (synopsis "Drawing software for children")
3768 (description
3769 "Tux Paint is a free drawing program designed for young children (kids
3770ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3771and an encouraging cartoon mascot who helps guide children as they use the
3772program. It provides a blank canvas and a variety of drawing tools to help
3773your child be creative.")
3774 (license license:gpl2+)))
c3d850f2
EB
3775
3776(define-public tuxpaint-stamps
3777 (package
3778 (name "tuxpaint-stamps")
6ade82c2 3779 (version "2018.09.01")
c3d850f2
EB
3780 (source
3781 (origin
3782 (method url-fetch)
3783 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3784 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3785 "/tuxpaint-stamps-" version ".tar.gz"))
3786 (sha256
3787 (base32
6ade82c2 3788 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3789 (build-system trivial-build-system)
3790 (native-inputs
3791 `(("tar" ,tar)
3792 ("gzip" ,gzip)))
3793 (arguments
3794 `(#:modules ((guix build utils))
3795 #:builder (begin
3796 (use-modules (guix build utils))
3797 (setenv "PATH"
3798 (string-append
3799 (assoc-ref %build-inputs "tar") "/bin" ":"
3800 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3801 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3802 (chdir (string-append ,name "-" ,version))
3803 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3804 (mkdir-p dir)
e3cfef22
MW
3805 (copy-recursively "stamps" dir))
3806 #t)))
c3d850f2
EB
3807 (home-page (package-home-page tuxpaint))
3808 (synopsis "Stamp images for Tux Paint")
3809 (description
3810 "This package contains a set of \"Rubber Stamp\" images which can be used
3811with the \"Stamp\" tool within Tux Paint.")
3812 (license license:gpl2+)))
d2563973
EB
3813
3814(define-public tuxpaint-config
3815 (package
3816 (name "tuxpaint-config")
7b05e957 3817 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3818 (source
3819 (origin
3820 (method url-fetch)
3821 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3822 version "/tuxpaint-config-" version ".tar.gz"))
3823 (sha256
3824 (base32
7b05e957 3825 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3826 (build-system gnu-build-system)
3827 (native-inputs
b94a6ca0 3828 `(("gettext" ,gettext-minimal)))
d2563973
EB
3829 (inputs
3830 `(("fltk" ,fltk)
3831 ("libpaper" ,libpaper)
3832 ;; TODO: Should the following be propagated by fltk?
3833 ("libx11" ,libx11)
3834 ("libxft" ,libxft)
3835 ("mesa" ,mesa)))
3836 (arguments
7b05e957 3837 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3838 "CONFDIR=/etc/tuxpaint" ;don't write to store
3839 ,(string-append "PREFIX=" %output)
3840 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3841 #:parallel-build? #f ;race conditions
d2563973
EB
3842 #:tests? #f ;no tests
3843 #:phases (modify-phases %standard-phases
3844 (delete 'configure) ;no configure phase
3845 (add-before 'install 'gzip-no-name
3846 (lambda* _
3847 (substitute* "Makefile"
3848 ;; tuxpaint-config compresses its own documentation;
3849 ;; make sure it uses flags for reproducibility.
3850 (("gzip") "gzip --no-name"))))
3851 (add-before 'install 'make-install-dirs
3852 (lambda* (#:key outputs #:allow-other-keys)
3853 (let ((out (assoc-ref outputs "out")))
3854 (mkdir-p (string-append out "/bin"))
3855 #t))))))
3856 (home-page (package-home-page tuxpaint))
3857 (synopsis "Configure Tux Paint")
3858 (description
3859 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3860 (license license:gpl2))) ;no "or later" present
826a3ca2 3861
3862(define-public supertux
3863 (package
3864 (name "supertux")
54a80259 3865 (version "0.6.1")
826a3ca2 3866 (source (origin
3867 (method url-fetch)
d910d584
RW
3868 (uri (string-append "https://github.com/SuperTux/supertux/"
3869 "releases/download/v" version "/SuperTux-v"
3870 version "-Source.tar.gz"))
8698d986 3871 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3872 (sha256
3873 (base32
54a80259 3874 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
8698d986 3875 (patches
57d87f43 3876 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3877 (arguments
3878 '(#:tests? #f
3879 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3880 "-DUSE_SYSTEM_PHYSFS=ON")
3881 #:phases
3882 (modify-phases %standard-phases
3883 (add-after 'unpack 'patch-squirrel-path
3884 (lambda* (#:key inputs #:allow-other-keys)
3885 (let ((squirrel (assoc-ref inputs "squirrel")))
3886 (substitute* "CMakeLists.txt"
3887 (("set\\(SQUIRREL_PREFIX.*")
3888 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3889 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3890 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3891 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3892 #t)))))
826a3ca2 3893 (build-system cmake-build-system)
3894 (inputs `(("sdl2" ,sdl2)
3895 ("sdl2-image" ,sdl2-image)
3896 ("sdl2-mixer" ,sdl2-mixer)
3897 ("openal" ,openal)
3898 ("mesa" ,mesa)
3899 ("glew" ,glew)
3900 ("libvorbis" ,libvorbis)
3901 ("libogg" ,libogg)
3902 ("physfs" ,physfs)
3903 ("curl" ,curl)
8698d986
KK
3904 ("boost" ,boost)
3905 ("freetype" ,freetype)
3906 ("squirrel" ,squirrel)))
8b03b1a1
NG
3907 (native-inputs
3908 `(("pkg-config" ,pkg-config)))
826a3ca2 3909 (synopsis "2D platformer game")
8b03b1a1
NG
3910 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3911a style similar to the original Super Mario games.")
cac6c3ba 3912 (home-page "https://supertux.org/")
826a3ca2 3913 (license license:gpl3+)))
b3de5ff2 3914
751c7040 3915(define-public tintin++
3916 (package
3917 (name "tintin++")
23174b49 3918 (version "2.02.00")
fffe4870
TGR
3919 (source
3920 (origin
3921 (method url-fetch)
3922 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 3923 (string-drop-right version 1)
fffe4870
TGR
3924 "/tintin-" version ".tar.gz"))
3925 (sha256
3926 (base32
23174b49 3927 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
751c7040 3928 (inputs
3929 `(("gnutls" ,gnutls)
3930 ("pcre" ,pcre)
3931 ("readline" ,readline)
3932 ("zlib" ,zlib)))
3933 (arguments
fffe4870 3934 '(#:tests? #f ; no test suite
751c7040 3935 #:phases
3936 (modify-phases %standard-phases
3937 ;; The source is in tt/src.
3938 (add-before 'configure 'chdir
3939 (lambda _
3940 (chdir "src")
3941 #t)))))
3942 (build-system gnu-build-system)
23174b49 3943 (home-page "https://tintin.mudhalla.net/")
751c7040 3944 (synopsis "MUD client")
3945 (description
5b9c2690
KK
3946 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3947Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3948options used by MUDs, as well as those required to login via telnet on
3949Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 3950 (license license:gpl3+)))
751c7040 3951
b3de5ff2
JN
3952(define-public laby
3953 (package
3954 (name "laby")
3955 (version "0.6.4")
3956 (source
6484b091
EF
3957 (origin (method git-fetch)
3958 (uri (git-reference
3959 (url "https://github.com/sgimenez/laby.git")
3960 (commit (string-append name "-" version))))
3961 (file-name (git-file-name name version))
b3de5ff2
JN
3962 (sha256
3963 (base32
6484b091 3964 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3965 (patches (search-patches "laby-make-install.patch"))))
3966 (build-system gnu-build-system)
3967 (inputs
3968 `(("lablgtk" ,lablgtk)
3969 ("ocaml" ,ocaml)
a8f52ad7
TGR
3970 ("ocaml-findlib" ,ocaml-findlib)
3971 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3972 (arguments
3973 '(#:phases
3974 (modify-phases %standard-phases
3975 (delete 'configure)
a8f52ad7
TGR
3976 (add-before 'build 'allow-unsafe-strings
3977 ;; Fix a build failure with ocaml >=4.06.0.
3978 ;; See <https://github.com/sgimenez/laby/issues/53>.
3979 (lambda _
3980 (setenv "OCAMLPARAM" "safe-string=0,_")
3981 #t))
3982 (add-before 'build 'set-library-path
b3de5ff2
JN
3983 (lambda* (#:key inputs #:allow-other-keys)
3984 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3985 (setenv "LD_LIBRARY_PATH"
3986 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3987 #:tests? #f ; no 'check' target
3988 #:make-flags
3989 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3990 (home-page "https://sgimenez.github.io/laby/")
3991 (synopsis "Programming game")
3992 (description "Learn programming, playing with ants and spider webs ;-)
3993Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3994Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3995programmers may also add their own favorite language.")
3996 (license license:gpl3+)))
b0488fe5
EF
3997
3998(define-public bambam
3999 (package
4000 (name "bambam")
8e77da0d 4001 (version "1.0.0")
b0488fe5
EF
4002 (source
4003 (origin
63e708f4
TGR
4004 (method git-fetch)
4005 (uri (git-reference
4006 (url "https://github.com/porridge/bambam")
8e77da0d 4007 (commit (string-append "v" version))))
63e708f4 4008 (file-name (git-file-name name version))
b0488fe5 4009 (sha256
8e77da0d 4010 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
4011 (build-system python-build-system)
4012 (arguments
8e77da0d 4013 `(#:tests? #f ; no tests
b0488fe5
EF
4014 #:phases
4015 (modify-phases %standard-phases
8e77da0d 4016 (delete 'build) ; nothing to build
b0488fe5
EF
4017 (replace 'install
4018 (lambda* (#:key outputs #:allow-other-keys)
4019 (let* ((out (assoc-ref outputs "out"))
4020 (bin (string-append out "/bin"))
4021 (share (string-append out "/share")))
4022 (mkdir-p bin)
4023 (copy-file "bambam.py" (string-append bin "/bambam"))
4024 (install-file "bambam.6" (string-append share "/man/man6"))
4025 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
4026 #t)))))
4027 (inputs
4028 `(("python-pygame" ,python-pygame)))
4029 (home-page "https://github.com/porridge/bambam")
46a06224 4030 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
4031 (description "Bambam is a simple baby keyboard (and gamepad) masher
4032application that locks the keyboard and mouse and instead displays bright
4033colors, pictures, and sounds.")
4034 (license license:gpl3+)))
6b87c10f 4035
3110c74b
TGR
4036(define-public mrrescue
4037 (package
4038 (name "mrrescue")
4039 (version "1.02e")
4040 (source (origin
4041 (method url-fetch)
4042 (uri (string-append
4043 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 4044 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
4045 (file-name (string-append name "-" version ".love"))
4046 (sha256
4047 (base32
4048 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4049 (build-system trivial-build-system)
4050 (arguments
8893218a 4051 `(#:modules ((guix build utils))
3110c74b
TGR
4052 #:builder
4053 (begin
4054 (use-modules (guix build utils))
8893218a
TGR
4055 (let* ((out (assoc-ref %outputs "out"))
4056 (script (string-append out "/bin/" ,name))
4057 (data (string-append out "/share/" ,name))
4058 (source (assoc-ref %build-inputs "source"))
4059 (unzip (string-append (assoc-ref %build-inputs "unzip")
4060 "/bin/unzip"))
4061 (patch (string-append (assoc-ref %build-inputs "patch")
4062 "/bin/patch"))
4063 (bash (string-append (assoc-ref %build-inputs "bash")
4064 "/bin/bash"))
4065 (love (string-append (assoc-ref %build-inputs "love")
4066 "/bin/love")))
4067
4068 (mkdir-p (dirname script))
4069 (with-output-to-file script
3110c74b
TGR
4070 (lambda ()
4071 (format #t "#!~a~%" bash)
8893218a
TGR
4072 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4073 (chmod script #o755)
4074
4075 ;; The better way to package this game would be to install *only* the
4076 ;; script above, pointing to the unextracted .love file in the store.
4077 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4078 ;; Instead of extracting the .love file, patching it, and re-zipping
4079 ;; it to the store, simply point the script to the extracted patched
4080 ;; data directory directly.
4081 (mkdir-p data)
4082 (with-directory-excursion data
4083 (invoke unzip source)
4084 (invoke patch "-p1" "-i"
4085 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 4086 #t))))
8893218a
TGR
4087 (native-inputs
4088 `(("unzip" ,unzip)
4089 ("patch" ,patch)
4090 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
4091 (inputs
4092 `(("bash" ,bash)
4093 ("love" ,love)))
e2f28609 4094 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
4095 (synopsis "Arcade-style fire fighting game")
4096 (description
4097 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
4098civilians from burning buildings. The game features fast-paced fire
4099extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
4100throwing people around in pseudo-randomly generated buildings.")
4101 (license (list license:zlib ; for source code
4102 license:cc-by-sa3.0)))) ; for graphics and music assets
4103
cd1869cd
KK
4104(define-public hyperrogue
4105 (package
4106 (name "hyperrogue")
70b6b238 4107 (version "11.2q")
f8279ba4
KK
4108 ;; When updating this package, be sure to update the "hyperrogue-data"
4109 ;; origin in native-inputs.
cd1869cd
KK
4110 (source (origin
4111 (method url-fetch)
4112 (uri (string-append
a01aea7d
TGR
4113 "https://www.roguetemple.com/z/hyper/hyperrogue"
4114 (string-join (string-split version #\.) "")
f8279ba4 4115 "-src.tgz"))
cd1869cd
KK
4116 (sha256
4117 (base32
70b6b238 4118 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
cd1869cd
KK
4119 (build-system gnu-build-system)
4120 (arguments
f8279ba4 4121 `(#:tests? #f ; no check target
82402f76
KK
4122 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4123 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
4124 #:phases
4125 (modify-phases %standard-phases
4126 (add-after 'set-paths 'set-sdl-paths
4127 (lambda* (#:key inputs #:allow-other-keys)
4128 (setenv "CPATH"
b6c2805c
MB
4129 (string-append (getenv "CPATH") ":"
4130 (assoc-ref inputs "sdl-union")
cd1869cd 4131 "/include/SDL"))))
cd1869cd
KK
4132 (replace 'configure
4133 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4134 (let* ((out (assoc-ref outputs "out"))
4135 (share-dir (string-append out "/share/hyperrogue"))
4136 (dejavu-dir (string-append
4137 (assoc-ref inputs "font-dejavu")
4138 "/share/fonts/truetype"))
4139 (dejavu-font "DejaVuSans-Bold.ttf")
4140 (music-file "hyperrogue-music.txt"))
1bb962b4 4141 ;; Fix font and music paths.
89c9445a 4142 (substitute* "basegraph.cpp"
f8279ba4
KK
4143 ((dejavu-font)
4144 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
4145 (substitute* music-file
4146 (("\\*/")
82402f76
KK
4147 (string-append share-dir "/sounds/")))
4148 (substitute* "sound.cpp"
4149 (("musicfile = \"\"")
4150 (string-append "musicfile = \""
4151 share-dir "/" music-file "\"")))
4152 ;; Disable build machine CPU optimizations and warnings treated
4153 ;; as errors.
4154 (substitute* "Makefile"
4155 (("-march=native") "")
4156 (("-Werror") "")))
cd1869cd
KK
4157 #t))
4158 (replace 'install
4159 (lambda* (#:key inputs outputs #:allow-other-keys)
4160 (let* ((out (assoc-ref outputs "out"))
4161 (bin (string-append out "/bin"))
4162 (share-dir (string-append out "/share/hyperrogue")))
4163 (mkdir-p bin)
82402f76 4164 (install-file "hyperrogue" bin)
f8279ba4
KK
4165 (install-file "hyperrogue-music.txt" share-dir))
4166 #t))
4167 (add-after 'install 'install-data
4168 (lambda* (#:key inputs outputs #:allow-other-keys)
4169 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4170 (out (assoc-ref outputs "out"))
4171 (sounds (string-append out "/share/hyperrogue/sounds"))
4172 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4173 ;; Extract media license information into sounds directory.
4174 (invoke unzip "-j" data
4175 (string-append
4176 "hyperrogue"
4177 (string-join (string-split ,version #\.) "")
4178 "/sounds/credits.txt") "-d" sounds)
4179 ;; Extract sounds and music into sounds directory.
4180 (invoke "unzip" "-j" data
4181 (string-append
4182 "hyperrogue"
4183 (string-join (string-split ,version #\.) "")
4184 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4185 (native-inputs
4186 `(("hyperrogue-data"
4187 ,(origin
4188 (method url-fetch)
4189 (uri
4190 (string-append
07de94d6 4191 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4192 (string-join (string-split version #\.) "")
4193 "-win.zip"))
4194 (sha256
4195 (base32
70b6b238 4196 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
f8279ba4 4197 ("unzip" ,unzip)))
cd1869cd
KK
4198 (inputs
4199 `(("font-dejavu" ,font-dejavu)
4200 ("glew" ,glew)
4201 ("libpng" ,libpng)
4202 ("sdl-union" ,(sdl-union (list sdl
4203 sdl-gfx
4204 sdl-mixer
4205 sdl-ttf)))))
4cae7e67 4206 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4207 (synopsis "Non-euclidean graphical rogue-like game")
4208 (description
4209 "HyperRogue is a game in which the player collects treasures and fights
4210monsters -- rogue-like but for the fact that it is played on the hyperbolic
4211plane and not in euclidean space.
4212
4213In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4214are home to particular creatures and may be subject to their own rules of
4215\"physics\".
cd1869cd 4216
a53a6b6f
TGR
4217While the game can use ASCII characters to display the the classical rogue
4218symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4219 (license (list license:bsd-3 ; glew.c, mtrand.*
4220 license:cc-by-sa3.0 ; music
4221 license:cc-by-sa4.0 ; sounds
4222 license:cc0
4223 license:public-domain ; direntx.*, some sounds
4224 license:zlib ; savepng.*
cd1869cd 4225 license:gpl2+)))) ; remaining files
a56145e1
SW
4226
4227(define-public kobodeluxe
4228 (package
4229 (name "kobodeluxe")
4230 (version "0.5.1")
4231 (source (origin
4232 (method url-fetch)
4233 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4234 version ".tar.bz2"))
4235 (sha256
4236 (base32
4237 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4238 (patches (search-patches
4239 "kobodeluxe-const-charp-conversion.patch"
4240 "kobodeluxe-enemies-pipe-decl.patch"
4241 "kobodeluxe-graphics-window-signed-char.patch"
4242 "kobodeluxe-manpage-minus-not-hyphen.patch"
4243 "kobodeluxe-midicon-segmentation-fault.patch"
4244 "kobodeluxe-paths.patch"))))
4245 (build-system gnu-build-system)
4246 (arguments
4247 '(#:configure-flags
4248 (list (string-append "CPPFLAGS=-I"
4249 (assoc-ref %build-inputs "sdl-union")
4250 "/include/SDL"))))
cf07ec20
MB
4251 (inputs
4252 `(("glu" ,glu)
4253 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
4254 (synopsis "Shooter with space station destruction")
4255 (description
4256 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4257for Un*x systems with X11.")
4258 (home-page "http://olofson.net/kobodl/")
4259 (license license:gpl2+)))
5430dbd9
AI
4260
4261(define-public freeciv
4262 (package
4263 (name "freeciv")
4445b3a7 4264 (version "2.6.2")
5430dbd9
AI
4265 (source
4266 (origin
4267 (method url-fetch)
b92e8da0
EF
4268 (uri (list (string-append
4269 "http://files.freeciv.org/stable/freeciv-"
4270 version ".tar.bz2")
4271 (string-append
4272 "mirror://sourceforge/freeciv/Freeciv%20"
4273 (version-major+minor version) "/" version
4274 "/freeciv-" version ".tar.bz2")))
5430dbd9 4275 (sha256
4445b3a7 4276 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
4277 (build-system gnu-build-system)
4278 (inputs
4279 `(("curl" ,curl)
4280 ("cyrus-sasl" ,cyrus-sasl)
4281 ("gtk+" ,gtk+)
4282 ("sdl-mixer" ,sdl-mixer)
4283 ("zlib" ,zlib)))
4284 (native-inputs
4285 `(("pkg-config" ,pkg-config)))
4286 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
4287 (synopsis "Turn-based empire building strategy game")
4288 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
4289inspired by the history of human civilization. The game commences in
4290prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 4291into the Space Age.")
5430dbd9 4292 (license license:gpl2+)))
345504c7 4293
4294(define-public no-more-secrets
4295 (package
4296 (name "no-more-secrets")
4c4f1871 4297 (version "0.3.3")
345504c7 4298 (source
4299 (origin
146a4459
TGR
4300 (method git-fetch)
4301 (uri (git-reference
4302 (url "https://github.com/bartobri/no-more-secrets.git")
4303 (commit (string-append "v" version))))
4304 (file-name (git-file-name name version))
345504c7 4305 (sha256
146a4459 4306 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4307 (build-system gnu-build-system)
4308 (arguments
4309 `(#:tests? #f
4310 #:make-flags (list "CC=gcc" "all-ncurses"
4311 (string-append "prefix="
4312 (assoc-ref %outputs "out")))
4313 #:phases
4314 (modify-phases %standard-phases
4315 (delete 'configure))))
4316 (inputs
4317 `(("ncurses" ,ncurses)))
4318 (home-page "https://github.com/bartobri/no-more-secrets")
4319 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4320 (description
4321 "@code{No More Secrets} provides a command line tool called \"nms\"
4322that recreates the famous data decryption effect seen on screen in the 1992
4323movie \"Sneakers\".
4324
4325This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4326it will apply the hollywood effect, initially showing encrypted data, then
4327starting a decryption sequence to reveal the original plaintext characters.")
4328 (license license:expat)))
fb731c92
AI
4329
4330(define-public megaglest-data
4331 (package
4332 (name "megaglest-data")
4333 (version "3.13.0")
4334 (source
4335 (origin
4336 (method url-fetch)
4337 (uri (string-append
4338 "https://github.com/MegaGlest/megaglest-data"
4339 "/releases/download/" version "/megaglest-data-"
4340 version ".tar.xz"))
4341 (sha256
4342 (base32
4343 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4344 (build-system cmake-build-system)
4345 (arguments
4346 `(#:tests? #f))
4347 (home-page "https://megaglest.org/")
4348 (synopsis "Data files for MegaGlest")
4349 (description "This package contains the data files required for MegaGlest.")
4350 (license license:cc-by-sa3.0)))
0b608ec4
AI
4351
4352(define-public megaglest
4353 (package
4354 (name "megaglest")
4355 (version "3.13.0")
4356 (source
4357 (origin
4358 (method url-fetch)
4359 (uri (string-append
4360 "https://github.com/MegaGlest/megaglest-source"
4361 "/releases/download/" version "/megaglest-source-"
4362 version ".tar.xz"))
4363 (sha256
4364 (base32
4365 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4366 (build-system cmake-build-system)
4367 (inputs
4368 `(("curl" ,curl)
4369 ("fontconfig" ,fontconfig)
4370 ("ftgl" ,ftgl)
4371 ("glew" ,glew)
4372 ("libjpeg-turbo" ,libjpeg-turbo)
4373 ("megaglest-data" ,megaglest-data)
4374 ("mesa" ,mesa)
4375 ("miniupnpc" ,miniupnpc)
4376 ("openal" ,openal)
4377 ("libircclient" ,libircclient)
4378 ("libpng" ,libpng)
4379 ("libvorbis" ,libvorbis)
4380 ("lua" ,lua)
4381 ("sdl2" ,sdl2)
4382 ("wxwidgets" ,wxwidgets)))
4383 (native-inputs
4384 `(("cppunit" ,cppunit)
4385 ("pkg-config" ,pkg-config)))
4386 (arguments
4387 `(#:configure-flags
4388 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4389 (assoc-ref %build-inputs "megaglest-data")
4390 "/share/megaglest")
4391 "-DBUILD_MEGAGLEST_TESTS=ON")
4392 #:phases
4393 (modify-phases %standard-phases
4394 (add-after 'unpack 'fix-ini-search-path
4395 (lambda* (#:key outputs #:allow-other-keys)
4396 (substitute* "source/glest_game/global/config.cpp"
4397 (("/usr/share/megaglest/")
4398 (string-append (assoc-ref outputs "out")
4399 "/share/megaglest/"))))))
4400 #:test-target "megaglest_tests"))
4401 (home-page "https://megaglest.org/")
4402 (synopsis "3D real-time strategy (RTS) game")
4403 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4404game, where you control the armies of one of seven different factions: Tech,
4405Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4406 (license license:gpl2+)))
6bb9c854
RW
4407
4408(define-public freegish
4409 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4410 (revision "1"))
4411 (package
4412 (name "freegish")
4413 (version (string-append "0-" revision "." (string-take commit 9)))
4414 (source (origin
4415 (method git-fetch)
4416 (uri (git-reference
4417 (url "https://github.com/freegish/freegish.git")
4418 (commit commit)))
661ad6f0 4419 (file-name (git-file-name name version))
6bb9c854
RW
4420 (sha256
4421 (base32
4422 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4423 (modules '((guix build utils)))
4424 ;; The audio files in the "music" directory are licensed under
4425 ;; CC-BY-NC, so we delete them.
4426 (snippet
4427 '(begin
4428 (delete-file-recursively "music")
4429 #t))))
4430 (build-system cmake-build-system)
4431 (arguments
4432 `(#:tests? #f ; no tests included
4433 #:configure-flags
4434 (list "-DCMAKE_INSTALL_FHS=ON")
4435 #:phases
4436 (modify-phases %standard-phases
4437 (add-after 'unpack 'set-DATAPATH
4438 (lambda* (#:key outputs #:allow-other-keys)
4439 (substitute* "CMakeLists.txt"
4440 (("^option\\(INSTALL_FHS" line)
4441 (string-append "add_definitions(-DDATAPATH=\""
4442 (assoc-ref outputs "out") "/share/freegish\")\n"
4443 line)))
4444 #t)))))
4445 (inputs
4446 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4447 ("openal" ,openal)
4448 ("libvorbis" ,libvorbis)
4449 ("libogg" ,libogg)
4450 ("mesa" ,mesa)
4451 ("libpng" ,libpng)
4452 ("zlib" ,zlib)))
4453 (home-page "https://github.com/freegish/freegish")
4454 (synopsis "Side-scrolling physics platformer with a ball of tar")
4455 (description "In FreeGish you control Gish, a ball of tar who lives
4456happily with his girlfriend Brea, until one day a mysterious dark creature
4457emerges from a sewer hole and pulls her below ground.")
4458 ;; The textures are available under the Expat license. All other assets
4459 ;; (including levels) are covered under CC-BY-SA or public domain. The
4460 ;; source code is under GPLv2+.
4461 (license (list license:gpl2+
4462 license:expat
4463 license:public-domain
4464 license:cc-by-sa3.0)))))
f0f7bf95
RW
4465
4466(define-public cdogs-sdl
6e65eb3c
TGR
4467 (package
4468 (name "cdogs-sdl")
acfb7357 4469 (version "0.6.9")
6e65eb3c
TGR
4470 (source (origin
4471 (method git-fetch)
4472 (uri (git-reference
4473 (url "https://github.com/cxong/cdogs-sdl.git")
4474 (commit version)))
4475 (file-name (git-file-name name version))
4476 (sha256
4477 (base32
acfb7357 4478 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4479 (build-system cmake-build-system)
4480 (arguments
4481 `(#:configure-flags
4482 (list (string-append "-DCDOGS_DATA_DIR="
4483 (assoc-ref %outputs "out")
4484 "/share/cdogs-sdl/"))))
4485 (inputs
4486 `(("mesa" ,mesa)
4487 ("sdl2" ,sdl2)
4488 ("sdl2-image" ,sdl2-image)
4489 ("sdl2-mixer" ,sdl2-mixer)))
4490 (home-page "https://cxong.github.io/cdogs-sdl/")
4491 (synopsis "Classic overhead run-and-gun game")
4492 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4493supporting up to 4 players in co-op and deathmatch modes. Customize your
4494player, choose from many weapons, and blast, slide and slash your way through
4495over 100 user-created campaigns.")
6e65eb3c
TGR
4496 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4497 ;; CC0/CC-BY/CC-BY-SA for assets.
4498 (license (list license:gpl2+
4499 license:bsd-2
4500 license:bsd-3
4501 license:cc0
4502 license:cc-by3.0
4503 license:cc-by-sa3.0))))
bd71525b 4504
649220ad 4505(define-public kiki
bd71525b 4506 (package
649220ad 4507 (name "kiki")
bd71525b
RW
4508 (version "1.0.2")
4509 (source (origin
4510 (method url-fetch)
4511 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4512 version "/kiki-" version "-src.tgz"))
4513 (sha256
4514 (base32
4515 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4516 (modules '((guix build utils)))
4517 (snippet
4518 '(begin
4519 (for-each delete-file (find-files "." "\\.dll$"))
4520 #t))
4521 (patches
4522 (search-patches "kiki-level-selection-crash.patch"
4523 "kiki-makefile.patch"
4524 "kiki-missing-includes.patch"
4525 "kiki-portability-64bit.patch"))))
4526 (build-system gnu-build-system)
4527 (arguments
4528 `(#:tests? #f ; there are no tests
4529 #:make-flags '("CXX=g++")
4530 #:phases
4531 (modify-phases %standard-phases
4532 (replace 'configure
4533 (lambda* (#:key inputs outputs #:allow-other-keys)
4534 (setenv "CPLUS_INCLUDE_PATH"
4535 (string-append (assoc-ref inputs "sdl-union")
4536 "/include/SDL:"
4537 (assoc-ref inputs "python")
97149c57 4538 "/include/python2.7"))
bd71525b
RW
4539 (substitute* "src/main/main.cpp"
4540 (("#include <SDL.h>" line)
4541 (string-append line "
4542#define K_INCLUDE_GLUT
4543#include \"KIncludeTools.h\""))
4544 (("// initialize SDL" line)
4545 (string-append "glutInit(&argc,argv);\n" line)))
4546 (substitute* "src/main/KikiController.cpp"
4547 (("getenv\\(\"KIKI_HOME\"\\)")
4548 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4549 (substitute* "linux/Makefile"
4550 (("CXXOPTS =" line)
4551 (string-append line " -fpermissive"))
4552 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4553 (("PYTHONHOME =.*")
4554 (string-append "PYTHONHOME = "
4555 (assoc-ref inputs "python")
4556 "/lib/python2.7/"))
4557 (("\\$\\(GLLIBS\\)" line)
4558 (string-append line " -lm -lpython2.7")))
4559 (substitute* "src/main/KikiPythonWidget.h"
4560 (("#define __KikiPythonWidget" line)
4561 (string-append line "\n#include \"KikiPython.h\"")))
4562 #t))
4563 (add-before 'build 'build-kodilib
4564 (lambda* (#:key make-flags #:allow-other-keys)
4565 (with-directory-excursion "kodilib/linux"
ff61aee8 4566 (apply invoke "make" make-flags))))
bd71525b
RW
4567 (add-after 'build-kodilib 'chdir
4568 (lambda _ (chdir "linux") #t))
4569 (replace 'install
4570 (lambda* (#:key outputs #:allow-other-keys)
4571 (let* ((out (assoc-ref outputs "out"))
4572 (bin (string-append out "/bin"))
4573 (share (string-append out "/share/kiki")))
4574 (mkdir-p bin)
4575 (mkdir-p share)
4576 (install-file "kiki" bin)
4577 (copy-recursively "../py" (string-append share "/py"))
4578 (copy-recursively "../sound" (string-append share "/sound"))
4579 #t))))))
4580 (inputs
4581 `(("glu" ,glu)
4582 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4583 ("freeglut" ,freeglut-2.8)
4584 ("sdl-union" ,(sdl-union (list sdl
4585 sdl-mixer
4586 sdl-image)))
4587 ("python" ,python-2)))
4588 (native-inputs
4589 `(("swig" ,swig)))
4590 (home-page "http://kiki.sourceforge.net/")
4591 (synopsis "3D puzzle game")
4592 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4593mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4594small robot living in the nano world, repair its maker.")
4595 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4596 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4597 ;; for a statement from the author.
4598 (license license:public-domain)))
b77e3a1c 4599
649220ad
NG
4600(define-public kiki-the-nano-bot
4601 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4602
b77e3a1c
RW
4603(define-public teeworlds
4604 (package
4605 (name "teeworlds")
b74f7f06 4606 (version "0.7.4")
b77e3a1c 4607 (source (origin
f9e5caf9
AV
4608 (method git-fetch)
4609 (uri (git-reference
4610 (url "https://github.com/teeworlds/teeworlds.git")
4611 (commit version)))
4612 (file-name (git-file-name name version))
b77e3a1c
RW
4613 (sha256
4614 (base32
b74f7f06 4615 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
f9e5caf9
AV
4616 (modules '((guix build utils)
4617 (ice-9 ftw)
4618 (ice-9 regex)
4619 (srfi srfi-1)
4620 (srfi srfi-26)))
4621 (snippet ; remove bundled libraries except md5
4622 '(let ((base-dir "src/engine/external/"))
4623 (for-each (compose (cut delete-file-recursively <>)
4624 (cut string-append base-dir <>))
4625 (remove (cut string-match "(^.)|(^md5$)" <>)
4626 (scandir base-dir)))
b74f7f06 4627 #t))))
b77e3a1c
RW
4628 (build-system gnu-build-system)
4629 (arguments
7aed8b8a 4630 `(#:tests? #f ; no tests included
f9e5caf9
AV
4631 #:modules ((guix build gnu-build-system)
4632 (guix build utils)
4633 (srfi srfi-26))
b77e3a1c
RW
4634 #:phases
4635 (modify-phases %standard-phases
4636 (replace 'configure
4637 (lambda* (#:key outputs #:allow-other-keys)
4638 ;; Embed path to assets.
4639 (substitute* "src/engine/shared/storage.cpp"
4640 (("#define DATA_DIR.*")
4641 (string-append "#define DATA_DIR \""
4642 (assoc-ref outputs "out")
4643 "/share/teeworlds/data"
4644 "\"")))
4645
4646 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4647 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4648 (find-files "."))
4649
4650 ;; Do not use bundled libraries.
4651 (substitute* "bam.lua"
f9e5caf9
AV
4652 (("local json = Compile.+$")
4653 "local json = nil
4654settings.link.libs:Add(\"jsonparser\")")
4655 (("local png = Compile.+$")
4656 "local png = nil
4657settings.link.libs:Add(\"pnglite\")")
4658 (("local wavpack = Compile.+$")
4659 "local wavpack = nil
4660settings.link.libs:Add(\"wavpack\")")
4661 (("if config\\.zlib\\.value == 1")
4662 "if config.zlib.value"))
4663 (substitute* "src/engine/client/graphics_threaded.cpp"
4664 (("engine/external/pnglite/pnglite\\.h")
4665 "pnglite.h"))
b77e3a1c 4666 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4667 (("engine/external/wavpack/wavpack\\.h")
4668 "wavpack/wavpack.h"))
b77e3a1c
RW
4669 #t))
4670 (replace 'build
4671 (lambda _
f9e5caf9 4672 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4673 (replace 'install
4674 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4675 (let* ((arch ,(system->linux-architecture
4676 (or (%current-target-system)
4677 (%current-system))))
076fe846
OP
4678 (build (string-append "build/" (if (string=? arch "i386")
4679 "x86" arch)
4680 "/release/"))
f9e5caf9
AV
4681 (data-built (string-append build "data/"))
4682 (out (assoc-ref outputs "out"))
4683 (bin (string-append out "/bin/"))
4684 (data (string-append out "/share/teeworlds/data/")))
4685 (for-each (cut install-file <> bin)
4686 (map (cut string-append build <>)
4687 '("teeworlds" "teeworlds_srv")))
4688 (copy-recursively data-built data)
b77e3a1c 4689 #t))))))
b77e3a1c
RW
4690 (inputs
4691 `(("freetype" ,freetype)
4692 ("glu" ,glu)
f9e5caf9 4693 ("json-parser" ,json-parser)
b77e3a1c 4694 ("mesa" ,mesa)
f9e5caf9
AV
4695 ("pnglite" ,pnglite)
4696 ("sdl2" ,sdl2)
4697 ("sdl2-image" ,sdl2-image)
4698 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4699 ("wavpack" ,wavpack)
4700 ("zlib" ,zlib)))
4701 (native-inputs
4702 `(("bam" ,bam)
f9e5caf9 4703 ("python" ,python-wrapper)
e402a66b 4704 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4705 (home-page "https://www.teeworlds.com")
4706 (synopsis "2D retro multiplayer shooter game")
4707 (description "Teeworlds is an online multiplayer game. Battle with up to
470816 players in a variety of game modes, including Team Deathmatch and Capture
4709The Flag. You can even design your own maps!")
4710 (license license:bsd-3)))
e02f1663 4711
162a4a03
RW
4712(define-public enigma
4713 (package
4714 (name "enigma")
4715 (version "1.21")
4716 (source (origin
4717 (method url-fetch)
4718 (uri (string-append "mirror://sourceforge/enigma-game/"
4719 "Release%20" version "/enigma-"
4720 version ".tar.gz"))
4721 (sha256
4722 (base32
4723 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4724 (build-system gnu-build-system)
4725 (arguments
4726 `(#:configure-flags
4727 (list "--with-system-enet")
4728 #:phases
4729 (modify-phases %standard-phases
4730 (add-after 'unpack 'find-sdl
4731 (lambda _
4732 (substitute* "configure"
4733 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4734 (substitute* '("tools/ttf2bmf.cc"
4735 "lib-src/enigma-core/ecl_font.cc"
4736 "lib-src/enigma-core/ecl_video.cc"
4737 "lib-src/enigma-core/ecl_buffer.hh"
4738 "src/SoundEngine.cc"
4739 "src/SoundEngine.hh"
4740 "src/MusicManager.cc"
4741 "src/MusicManager.hh"
4742 "src/d_models.cc"
4743 "src/main.cc"
4744 "src/network.cc")
4745 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4746 (string-append "#include \"SDL/SDL_" header ".h\"")))
4747 (substitute* "src/main.cc"
4748 (("#include <SDL_(image|ttf|mixer).h>" line header)
4749 (string-append "#include \"SDL/SDL_" header ".h\"")))
4750 #t)))))
4751 (inputs
4752 `(("xerces-c" ,xerces-c)
4753 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4754 ("curl" ,curl)
4755 ("enet" ,enet)))
4756 (native-inputs
4757 `(("pkg-config" ,pkg-config)
4758 ("imagemagick" ,imagemagick)))
340978d7 4759 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4760 (synopsis "Puzzle game with a dexterity component")
4761 (description "Enigma is a puzzle game with 550 unique levels. The object
4762of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4763Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4764and most of all, countless hairy puzzles usually block your direct way to the
4765Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4766get bored) interact in many unexpected ways, and since many of them follow the
4767laws of physics (Enigma’s special laws of physics, that is), controlling them
4768with the mouse isn’t always trivial.")
4769 (license license:gpl2+)))
4770
10d53153
CLW
4771(define-public chroma
4772 (package
4773 (name "chroma")
9cf65f05 4774 (version "1.17")
10d53153
CLW
4775 (source (origin
4776 (method url-fetch)
4777 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4778 version ".tar.bz2"))
4779 (sha256
4780 (base32
9cf65f05 4781 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4782 (build-system gnu-build-system)
4783 (arguments
5479dbf9 4784 `(#:tests? #f)) ; no tests included
10d53153
CLW
4785 (inputs
4786 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4787 ("freetype" ,freetype)
4788 ("ncurses" ,ncurses)
4789 ("fontconfig" ,fontconfig)
4790 ("libxft" ,libxft)))
4791 (native-inputs
4792 `(("pkg-config" ,pkg-config)))
4793 (home-page "http://level7.org.uk/chroma/")
4794 (synopsis "Abstract puzzle game")
4795 (description "Chroma is an abstract puzzle game. A variety of colourful
4796shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
4797fiendish traps that must be disarmed and mysterious puzzles that must be
4798manipulated in order to give up their subtle secrets. Initially so
4799straightforward that anyone can pick it up and begin to play, yet gradually
4800becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
4801 (license license:gpl2+)))
4802
649220ad 4803(define-public fillets-ng
e02f1663 4804 (package
649220ad 4805 (name "fillets-ng")
e02f1663
RW
4806 (version "1.0.1")
4807 (source (origin
4808 (method url-fetch)
4809 (uri (string-append "mirror://sourceforge/fillets/"
4810 "Fish%20Fillets%20-%20Next%20Generation/"
4811 version "/fillets-ng-" version ".tar.gz"))
4812 (sha256
4813 (base32
4814 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4815 (build-system gnu-build-system)
4816 (arguments
4817 `(#:configure-flags
4818 (list (string-append "--with-lua="
4819 (assoc-ref %build-inputs "lua")))
4820 #:make-flags
4821 (list (string-append "CFLAGS=-I"
4822 (assoc-ref %build-inputs "sdl-union")
4823 "/include/SDL")
4824 (string-append "CXXFLAGS=-I"
4825 (assoc-ref %build-inputs "sdl-union")
4826 "/include/SDL"))
4827 #:phases
4828 (modify-phases %standard-phases
4829 ;; Lua 5.1 does not provide it.
4830 (add-after 'unpack 'do-not-link-with-lualib
4831 (lambda _
4832 (substitute* "configure"
4833 (("-llualib") ""))
4834 #t))
4835 (add-after 'install 'install-data
4836 (lambda* (#:key inputs outputs #:allow-other-keys)
4837 (let ((data (string-append (assoc-ref outputs "out")
4838 "/share/games/fillets-ng")))
4839 (mkdir-p data)
f08d34a0
RW
4840 (invoke "tar" "-xvf"
4841 (assoc-ref inputs "fillets-ng-data")
4842 "--strip-components=1"
4843 "-C" data)))))))
e02f1663
RW
4844 (inputs
4845 `(("sdl-union" ,(sdl-union (list sdl
4846 sdl-mixer
4847 sdl-image
4848 sdl-ttf)))
4849 ("fribidi" ,fribidi)
4850 ("libx11" ,libx11)
4851 ("lua" ,lua-5.1)))
4852 (native-inputs
4853 `(("pkg-config" ,pkg-config)
4854 ("fillets-ng-data"
4855 ,(origin
4856 (method url-fetch)
4857 (uri (string-append "mirror://sourceforge/fillets/"
4858 "Fish%20Fillets%20-%20Next%20Generation/"
4859 version "/fillets-ng-data-" version ".tar.gz"))
4860 (sha256
4861 (base32
4862 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4863 (home-page "http://fillets.sourceforge.net/")
4864 (synopsis "Puzzle game")
4865 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4866every of the seventy levels is always the same: find a safe way out. The fish
4867utter witty remarks about their surroundings, the various inhabitants of their
4868underwater realm quarrel among themselves or comment on the efforts of your
4869fish. The whole game is accompanied by quiet, comforting music.")
4870 (license license:gpl2+)))
dd37a545 4871
649220ad
NG
4872(define-public fish-fillets-ng
4873 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4874
649220ad 4875(define-public crawl
dd37a545 4876 (package
649220ad 4877 (name "crawl")
af48a200 4878 (version "0.24.0")
dd37a545 4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (list
4883 ;; Older releases get moved into a versioned directory
4884 (string-append "http://crawl.develz.org/release/"
4885 (version-major+minor version) "/stone_soup-"
4886 version "-nodeps.tar.xz")
4887 ;; Only the latest release is in this directory
4888 (string-append "http://crawl.develz.org/release/stone_soup-"
4889 version "-nodeps.tar.xz")))
4890 (sha256
af48a200 4891 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4892 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4893 (build-system gnu-build-system)
4894 (inputs
4895 `(("lua51" ,lua-5.1)
4896 ("ncurses" ,ncurses)
4897 ("sqlite" ,sqlite)
4898 ("zlib" ,zlib)))
4899 (native-inputs
4900 `(("bison" ,bison)
4901 ("flex" ,flex)
4902 ("perl" ,perl)
fc7d6bc6 4903 ("python" ,python-wrapper)
e366521a 4904 ("python-pyyaml" ,python-pyyaml)
dd37a545 4905 ("pkg-config" ,pkg-config)))
4906 (arguments
a5c8460a 4907 `(#:make-flags
dd37a545 4908 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4909 (out (assoc-ref %outputs "out")))
4910 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4911 (string-append "prefix=" out)
4912 "SAVEDIR=~/.crawl"
564df7e5 4913 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4914 ,@(match (%current-system)
4915 ((or "i686-linux" "x86_64-linux")
4916 '())
4917 (_ '("NOSSE=TRUE")))
dd37a545 4918 ;; don't build any bundled dependencies
4919 "BUILD_LUA="
4920 "BUILD_SQLITE="
4921 "BUILD_ZLIB="
4922 "-Csource"))
4923 #:phases
4924 (modify-phases %standard-phases
606c1987
EF
4925 (add-after 'unpack 'find-SDL-image
4926 (lambda _
4927 (substitute* "source/windowmanager-sdl.cc"
4928 (("SDL_image.h") "SDL2/SDL_image.h"))
4929 #t))
dd37a545 4930 (delete 'configure)
e366521a 4931 (replace 'check
dd37a545 4932 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4933 (setenv "HOME" (getcwd))
4934 ;; Fake a terminal for the test cases.
4935 (setenv "TERM" "xterm-256color")
e366521a
KK
4936 ;; Run the tests that don't require a debug build.
4937 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4938 (format #f "-j~d" (parallel-job-count))
4939 ;; Force command line build for test cases.
4940 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4941 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4942 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4943for short) is a roguelike adventure through dungeons filled with dangerous
4944monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4945 (home-page "https://crawl.develz.org")
4946 (license (list license:gpl2+
4947 license:bsd-2
4948 license:bsd-3
4949 license:cc0
4950 license:expat
4951 license:zlib
4952 license:asl2.0))))
cae491ab 4953
649220ad
NG
4954(define-public dungeon-crawl-stone-soup
4955 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4956
1243aaac 4957;; The linter here claims that patch file names should start with the package
4958;; name. But, in this case, the patches are inherited from crawl with the
4959;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4960(define-public crawl-tiles
ae548434 4961 (package
649220ad
NG
4962 (inherit crawl)
4963 (name "crawl-tiles")
ae548434 4964 (arguments
4965 (substitute-keyword-arguments
4966 (package-arguments crawl)
4967 ((#:make-flags flags)
4968 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4969 (cons*
4970 (string-append "PROPORTIONAL_FONT=" dejavu
4971 "/share/fonts/truetype/DejaVuSans.ttf")
4972 (string-append "MONOSPACED_FONT=" dejavu
4973 "/share/fonts/truetype/DejaVuSansMono.ttf")
4974 "TILES=y"
4975 ;; Rename the executable to allow parallel installation with crawl.
4976 "GAME=crawl-tiles"
4977 ,flags)))))
4978 (inputs
4979 `(,@(package-inputs crawl)
4980 ("font-dejavu" ,font-dejavu)
4981 ("freetype6" ,freetype)
4982 ("glu" ,glu)
4983 ("libpng" ,libpng)
4984 ("sdl2" ,sdl2)
4985 ("sdl2-image" ,sdl2-image)
4986 ("sdl2-mixer" ,sdl2-mixer)))
4987 (native-inputs
4988 `(,@(package-native-inputs crawl)
6438a468 4989 ("pngcrush" ,pngcrush)
ae548434 4990 ("which" ,which)))
4991 (synopsis "Graphical roguelike dungeon crawler game")))
4992
649220ad
NG
4993(define-public dungeon-crawl-stone-soup-tiles
4994 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4995
cae491ab
JL
4996(define-public lugaru
4997 (package
4998 (name "lugaru")
4999 (version "1.2")
5000 (source (origin
5001 (method url-fetch)
5002 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 5003 "lugaru-" version ".tar.xz"))
cae491ab
JL
5004 (sha256
5005 (base32
5006 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5007 (build-system cmake-build-system)
5008 (arguments
5009 `(#:configure-flags
5010 (list "-DSYSTEM_INSTALL=ON")
5011 ;; no test target
5012 #:tests? #f))
5013 (native-inputs
5014 `(("pkg-config" ,pkg-config)))
5015 (inputs
5016 `(("sdl2" ,sdl2)
5017 ("glu" ,glu)
5018 ("libjpeg" ,libjpeg-turbo)
5019 ("libpng" ,libpng)
5020 ("openal" ,openal)
5021 ("vorbis" ,libvorbis)
5022 ("zlib" ,zlib)))
5023 (home-page "https://osslugaru.gitlab.io")
5024 (synopsis "Cross-platform third-person action game")
5025 (description "Lugaru is a third-person action game. The main character,
5026Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5027In his quest to find those responsible for slaughtering his village, he uncovers
5028a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5029and the starving wolves from a nearby den. Turner takes it upon himself to
5030fight against their plot and save his fellow rabbits from slavery.")
5031 (license (list license:gpl2+ ; code
5032 ;; assets:
5033 license:cc-by-sa3.0
5034 license:cc-by-sa4.0))))
bff33e6c
CL
5035
5036(define-public 0ad-data
5037 (package
5038 (name "0ad-data")
8c00379c 5039 (version "0.0.23b-alpha")
bff33e6c
CL
5040 (source
5041 (origin
5042 (method url-fetch)
706d6190 5043 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5044 version "-unix-data.tar.xz"))
5045 (file-name (string-append name "-" version ".tar.xz"))
5046 (sha256
5047 (base32
8c00379c 5048 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
5049 (modules '((guix build utils)))
5050 (snippet
5051 #~(begin
6cbee49d
MW
5052 (for-each (lambda (name)
5053 (let* ((dir (string-append "binaries/data/mods/" name))
5054 (file (string-append dir "/" name ".zip"))
5055 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 5056 (invoke unzip "-d" dir file)
6cbee49d
MW
5057 (delete-file file)))
5058 '("mod" "public"))
bff33e6c
CL
5059 #t))))
5060 (build-system trivial-build-system)
5061 (native-inputs `(("tar" ,tar)
5062 ("xz" ,xz)))
5063 (arguments
5064 `(#:modules ((guix build utils))
5065 #:builder
5066 (begin
5067 (use-modules (guix build utils))
5068 (let ((out (assoc-ref %outputs "out"))
5069 (source (assoc-ref %build-inputs "source"))
5070 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5071 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5072 (setenv "PATH" xz-path)
5073 (mkdir out)
e3cfef22 5074 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
5075 (synopsis "Data files for 0ad")
5076 (description "0ad-data provides the data files required by the game 0ad.")
5077 (home-page "https://play0ad.com")
5078 (license (list (license:fsdg-compatible
5079 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
5080 "Similar to the license of the Bitstream Vera fonts.")
5081 (license:fsdg-compatible
5082 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
5083 license:cc-by-sa3.0
5084 license:expat
5085 license:gfl1.0
5086 license:gpl2+
5087 license:gpl3+))))
5088
5089(define-public 0ad
5090 (package
5091 (name "0ad")
8c00379c 5092 (version "0.0.23b-alpha")
bff33e6c
CL
5093 (source
5094 (origin
5095 (method url-fetch)
706d6190 5096 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5097 version "-unix-build.tar.xz"))
5098 (file-name (string-append name "-" version ".tar.xz"))
5099 (sha256
5100 (base32
8c00379c 5101 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
5102 ;; A snippet here would cause a build failure because of timestamps
5103 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
5104 (inputs
5105 `(("0ad-data" ,0ad-data)
5106 ("curl" ,curl)
5107 ("enet" ,enet)
5108 ("gloox" ,gloox)
5109 ("icu4c" ,icu4c)
5110 ("libpng" ,libpng)
706d6190 5111 ("libsodium" ,libsodium)
bff33e6c
CL
5112 ("libvorbis" ,libvorbis)
5113 ("libxcursor" ,libxcursor)
5114 ("libxml2" ,libxml2)
5115 ("miniupnpc" ,miniupnpc)
5116 ("mozjs-38" ,mozjs-38)
5117 ("openal" ,openal)
5118 ("sdl2" ,sdl2)
5119 ("wxwidgets" ,wxwidgets)
5120 ("zlib" ,zlib)))
5121 (native-inputs
5122 `(("boost" ,boost)
c69959f0 5123 ("cmake" ,cmake-minimal)
bff33e6c
CL
5124 ("mesa" ,mesa)
5125 ("pkg-config" ,pkg-config)
5126 ("python-2" ,python-2)))
5127 (build-system gnu-build-system)
5128 (arguments
809b8842
CB
5129 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5130 #:phases
bff33e6c
CL
5131 (modify-phases %standard-phases
5132 (add-after 'unpack 'delete-bundles
5133 (lambda _
5134 (delete-file-recursively "libraries/source/spidermonkey")
5135 #t))
5136 (add-after 'unpack 'fix-x11-includes
5137 (lambda _
5138 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5139 (("<Xlib.h>") "<X11/Xlib.h>"))
5140 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5141 (("<Xatom.h>") "<X11/Xatom.h>"))
5142 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5143 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5144 #t))
5145 (replace 'configure
5146 (lambda* (#:key inputs outputs #:allow-other-keys)
5147 (let* ((jobs (number->string (parallel-job-count)))
5148 (out (assoc-ref outputs "out"))
5149 (lib (string-append out "/lib"))
5150 (data (string-append out "/share/0ad")))
5151 (setenv "JOBS" (string-append "-j" jobs))
5152 (setenv "CC" "gcc")
5153 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5154 (invoke "./update-workspaces.sh"
5155 (string-append "--libdir=" lib)
5156 (string-append "--datadir=" data)
5157 ;; TODO: "--with-system-nvtt"
5158 "--with-system-mozjs38")))))
bff33e6c
CL
5159 (delete 'check)
5160 (replace 'install
5161 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5162 (chdir "binaries")
bff33e6c
CL
5163 (let* ((out (assoc-ref outputs "out"))
5164 (bin (string-append out "/bin"))
5165 (lib (string-append out "/lib"))
5166 (data (string-append out "/share/0ad"))
5167 (applications (string-append out "/share/applications"))
5168 (pixmaps (string-append out "/share/pixmaps"))
5169 (0ad-data (assoc-ref inputs "0ad-data")))
5170 ;; data
5171 (copy-recursively "data" data)
5172 (for-each (lambda (file)
5173 (symlink (string-append 0ad-data "/" file)
5174 (string-append data "/" file)))
5175 '("config" "mods/mod" "mods/public" "tools"))
5176 ;; libraries
5177 (for-each (lambda (file)
5178 (install-file file lib))
5179 (find-files "system" "\\.so$"))
5180 ;; binaries
5181 (install-file "system/pyrogenesis" bin)
5182 (with-directory-excursion bin
5183 (symlink "pyrogenesis" "0ad"))
5184 ;; resources
5185 (with-directory-excursion "../build/resources"
5186 (install-file "0ad.desktop" applications)
5187 (install-file "0ad.png" pixmaps))
5188 #t)))
5189 (add-after 'install 'check
5190 (lambda _
5191 (with-directory-excursion "system"
7b67bb1f 5192 (invoke "./test")))))))
bff33e6c
CL
5193 (home-page "https://play0ad.com")
5194 (synopsis "3D real-time strategy game of ancient warfare")
5195 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5196warfare. It's a historically-based war/economy game that allows players to
5197relive or rewrite the history of twelve ancient civilizations, each depicted
5198at their peak of economic growth and military prowess.
5199
52000ad needs a window manager that supports 'Extended Window Manager Hints'.")
5201 (license (list license:bsd-2
5202 license:bsd-3
5203 license:expat
5204 license:gpl2+
5205 license:ibmpl1.0
5206 license:isc
5207 license:lgpl2.1
5208 license:lgpl3
5209 license:mpl2.0
5210 license:zlib))))
dec63df4 5211
5212;; There have been no official releases.
5213(define-public open-adventure
be6e2c30 5214 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5215 (revision "2"))
dec63df4 5216 (package
5217 (name "open-adventure")
5218 (version (string-append "2.5-" revision "." (string-take commit 7)))
5219 (source (origin
5220 (method git-fetch)
5221 (uri (git-reference
5222 (url "https://gitlab.com/esr/open-adventure")
5223 (commit commit)))
5224 (file-name (string-append name "-" version "-checkout"))
5225 (sha256
5226 (base32
be6e2c30 5227 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5228 (build-system gnu-build-system)
5229 (arguments
5230 `(#:make-flags (list "CC=gcc")
5231 #:parallel-build? #f ; not supported
5232 #:phases
5233 (modify-phases %standard-phases
be6e2c30 5234 (replace 'configure
5235 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5236 ;; Linenoise is meant to be included, so we have to
5237 ;; copy it into the working directory.
be6e2c30 5238 (let* ((linenoise (assoc-ref inputs "linenoise"))
5239 (noisepath (string-append linenoise "/include/linenoise"))
5240 (out (assoc-ref outputs "out")))
5241 (copy-recursively noisepath "linenoise"))
5242 #t))
dec63df4 5243 (add-before 'build 'use-echo
5244 (lambda _
5245 (substitute* "tests/Makefile"
5246 (("/bin/echo") (which "echo")))
5247 #t))
5248 (add-after 'build 'build-manpage
5249 (lambda _
5250 ;; This target is missing a dependency
5251 (substitute* "Makefile"
be6e2c30 5252 ((".adoc.6:" line)
5253 (string-append line " advent.adoc")))
27cd31e6 5254 (invoke "make" ".adoc.6")))
dec63df4 5255 ;; There is no install target
5256 (replace 'install
5257 (lambda* (#:key outputs #:allow-other-keys)
5258 (let* ((out (assoc-ref outputs "out"))
5259 (bin (string-append out "/bin"))
5260 (man (string-append out "/share/man/man6")))
5261 (install-file "advent" bin)
5262 (install-file "advent.6" man))
5263 #t)))))
5264 (native-inputs
be6e2c30 5265 `(("asciidoc" ,asciidoc)
5266 ("linenoise" ,linenoise)
5267 ("python" ,python)
5268 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5269 (home-page "https://gitlab.com/esr/open-adventure")
5270 (synopsis "Colossal Cave Adventure")
5271 (description "The original Colossal Cave Adventure from 1976 was the
5272origin of all text adventures, dungeon-crawl (computer) games, and
5273computer-hosted roleplaying games. This is the last version released by
5274Crowther & Woods, its original authors, in 1995. It has been known as
5275\"adventure 2.5\" and \"430-point adventure\".")
5276 (license license:bsd-2))))
1f88f189 5277
649220ad 5278(define-public tome4
1f88f189 5279 (package
649220ad 5280 (name "tome4")
e75221fd 5281 (version "1.6.6")
1f88f189
OP
5282 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5287 version ".tar.bz2"))
5288 (sha256
5289 (base32
e75221fd 5290 "1amx0y49scy9hq71wjvkdzvgclwa2g54vkv4bf40mxyp4pl0bq7m"))
1f88f189
OP
5291 (modules '((guix build utils)))
5292 (snippet
6cbee49d
MW
5293 '(begin
5294 (substitute* '("src/music.h" "src/tSDL.h")
5295 (("#elif defined(__FreeBSD__)" line)
5296 (string-append
5297 line " || defined(__GNUC__)")))
19c0cdb9
OP
5298 (substitute* '("src/tgl.h")
5299 (("#include <GL/glext.h>") ""))
6cbee49d 5300 #t))))
1f88f189
OP
5301 (build-system gnu-build-system)
5302 (native-inputs
5303 `(("unzip" ,unzip)))
5304 (inputs
5305 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5306 ("glu" ,glu)
5307 ("premake4" ,premake4)
5308 ("openal" ,openal)
5309 ("vorbis" ,libvorbis)
5310 ("luajit" ,luajit)))
5311 (arguments
5312 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5313 ;; XXX: Building in parallel occasionally causes this build failure:
5314 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5315 ;; No such file or directory
5316 #:parallel-build? #f
1f88f189 5317 #:phases (modify-phases %standard-phases
972b87b1 5318 (delete 'bootstrap)
1f88f189
OP
5319 (replace 'configure
5320 (lambda _
13a504af 5321 (invoke "premake4" "gmake")
1f88f189
OP
5322 #t))
5323 (add-after 'set-paths 'set-sdl-paths
5324 (lambda* (#:key inputs #:allow-other-keys)
5325 (setenv "CPATH"
5326 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5327 "/include/SDL2:"
5328 (getenv "CPATH")))
1f88f189
OP
5329 #t))
5330 (delete 'check)
5331 ;; premake doesn't provide install target
5332 (replace 'install
5333 (lambda* (#:key inputs outputs #:allow-other-keys)
5334 (let* ((out (assoc-ref outputs "out"))
5335 (usr (string-append out "/usr"))
5336 (bin (string-append out "/bin"))
5337 (licenses (string-append out "/share/licenses"))
5338 (documents (string-append out "/share/doc"))
5339 (pixmaps (string-append out "/share/pixmaps"))
5340 (icon "te4-icon.png")
5341 (data (string-append out "/share/" ,name))
5342 (applications (string-append
5343 out "/share/applications"))
5344 (unzip (string-append
5345 (assoc-ref inputs "unzip") "/bin/unzip"))
5346 (wrapper (string-append bin "/" ,name)))
5347 ;; icon
5348 (mkdir-p pixmaps)
26d52476
OP
5349 (invoke unzip "-j"
5350 (string-append
5351 "game/engines/te4-" ,version ".teae")
5352 (string-append
5353 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
5354 ;; game executable
5355 (install-file "t-engine" data)
5356 (mkdir-p bin)
5357 (with-output-to-file wrapper
5358 (lambda ()
5359 (display
5360 (string-append
5361 "#!/bin/sh\n"
5362 ;; No bootstrap code found,
5363 ;; defaulting to working directory
5364 ;; for engine code!
5365 "cd " data "\n"
5366 "exec -a tome4 ./t-engine \"$@\"\n"))))
5367 (chmod wrapper #o555)
5368 ;; licenses
5369 (for-each (lambda (file)
5370 (install-file file licenses))
5371 '("COPYING" "COPYING-MEDIA"))
5372 ;; documents
5373 (for-each (lambda (file)
5374 (install-file file documents))
5375 '("CONTRIBUTING" "CREDITS"))
5376 ;; data
5377 (copy-recursively "bootstrap" (string-append
5378 data "/bootstrap"))
5379 (copy-recursively "game" (string-append data "/game"))
5380 ;; launcher
5381 (mkdir-p applications)
5382 (with-output-to-file (string-append applications "/"
5383 ,name ".desktop")
5384 (lambda ()
5385 (display
5386 (string-append
5387 "[Desktop Entry]
5388Name=ToME4
5389Comment=" ,synopsis "\n"
5390"Exec=" ,name "\n"
5391"Icon=" icon "\n"
5392"Terminal=false
5393Type=Application
5394Categories=Game;RolePlaying;\n")))))
5395 #t)))))
5396 (home-page "https://te4.org")
5397 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5398combat and advanced character building. Play as one of many unique races and
5399classes in the lore-filled world of Eyal, exploring random dungeons, facing
5400challenging battles, and developing characters with your own tailored mix of
5401abilities and powers. With a modern graphical and customisable interface,
5402intuitive mouse control, streamlined mechanics and deep, challenging combat,
5403Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5404 (license license:gpl3+)))
7a070f02 5405
649220ad
NG
5406(define-public tales-of-maj-eyal
5407 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5408
7a070f02 5409(define-public quakespasm
5410 (package
5411 (name "quakespasm")
18bbaf67 5412 (version "0.93.2")
7a070f02 5413 (source
5414 (origin
5415 (method url-fetch)
5416 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5417 version ".tgz"))
5418 (sha256
18bbaf67 5419 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 5420 (arguments
5421 `(#:tests? #f
5422 #:make-flags '("CC=gcc"
5423 "MP3LIB=mpg123"
5424 "USE_CODEC_FLAC=1"
5425 "USE_CODEC_MIKMOD=1"
5426 "USE_SDL2=1"
5427 "-CQuake")
5428 #:phases (modify-phases %standard-phases
5429 (delete 'configure)
5430 (add-after 'unpack 'fix-makefile-paths
5431 (lambda* (#:key outputs #:allow-other-keys)
5432 (let ((out (assoc-ref outputs "out")))
5433 (mkdir-p (string-append out "/bin"))
5434 (substitute* "Quake/Makefile"
5435 (("/usr/local/games")
5436 (string-append out "/bin")))
5437 #t))))))
5438 (build-system gnu-build-system)
5439 (inputs `(("libmikmod" ,libmikmod)
5440 ("libvorbis" ,libvorbis)
5441 ("flac" ,flac)
5442 ("mesa" ,mesa)
5443 ("mpg123" ,mpg123)
5444 ("sdl2" ,sdl2)))
5445 (synopsis "First person shooter engine for Quake 1")
5446 (description "Quakespasm is a modern engine for id software's Quake 1.
5447It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5448some graphical niceities, and numerous bug-fixes and other improvements.")
5449 (home-page "http://quakespasm.sourceforge.net/")
5450 (license license:gpl2+)))
916bb947 5451
7a6be5b9
RH
5452(define-public vkquake
5453 (package
5454 (inherit quakespasm)
5455 (name "vkquake")
3e7b376e 5456 (version "1.01.0")
7a6be5b9
RH
5457 (source
5458 (origin
f5e1a0e5
TGR
5459 (method git-fetch)
5460 (uri (git-reference
5461 (url "https://github.com/Novum/vkQuake.git")
5462 (commit version)))
5463 (file-name (git-file-name name version))
7a6be5b9 5464 (sha256
f5e1a0e5 5465 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5466 (arguments
5467 `(#:make-flags
5468 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5469 "vulkan-loader") "/lib")))
7a6be5b9
RH
5470 (list "CC=gcc"
5471 "MP3LIB=mpg123"
5472 "USE_CODEC_FLAC=1"
5473 "USE_CODEC_MIKMOD=1"
5474 "USE_SDL2=1"
5475 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5476 "-CQuake"))
5477 #:phases (modify-phases %standard-phases
5478 (delete 'configure)
5479 (add-after 'unpack 'fix-makefile-paths
5480 (lambda* (#:key outputs #:allow-other-keys)
5481 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5482 "vulkan-loader"))
7a6be5b9
RH
5483 (out (assoc-ref outputs "out")))
5484 (mkdir-p (string-append out "/bin"))
5485 (substitute* "Quake/Makefile" ((" /usr")
5486 (string-append " " out)))
5487 (substitute* "Quake/Makefile" (("/games")
5488 (string-append "/bin")))
5489 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5490 #t))))
5491 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5492 (package-arguments quakespasm))))
4108886b
RH
5493 (inputs `(("vulkan-headers" ,vulkan-headers)
5494 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5495 ,@(package-inputs quakespasm)))
5496 (description "vkquake is a modern engine for id software's Quake 1.
5497It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5498some graphical niceities, and numerous bug-fixes and other improvements.")
5499 (home-page "https://github.com/Novum/vkQuake")))
5500
916bb947 5501(define-public yamagi-quake2
5502 (package
5503 (name "yamagi-quake2")
5504 (version "7.10")
5505 (source
5506 (origin
5507 (method url-fetch)
5508 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5509 version ".tar.xz"))
5510 (sha256
5511 (base32
5512 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5513 (build-system gnu-build-system)
5514 (arguments
5515 `(#:tests? #f
5516 #:make-flags
5517 (list "CC=gcc"
5518 ;; link openAL instead of using dlopen at runtime
5519 "DLOPEN_OPENAL=\"no\""
5520 ;; an optional directory where it will look for quake2 data files
5521 ;; in addition to the current working directory
5522 "WITH_SYSTEMWIDE=yes"
5523 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5524 #:phases
5525 (modify-phases %standard-phases
5526 (delete 'configure)
5527 (replace 'install
5528 (lambda* (#:key outputs #:allow-other-keys)
5529 (let ((out (assoc-ref outputs "out")))
5530 (mkdir-p (string-append out "/lib"))
5531 (mkdir-p (string-append out "/bin"))
5532 ;; The yamagi-quake2 binary must be in the same directory
5533 ;; as it's engine libraries, but symlinking it to /bin is okay
5534 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5535 (copy-recursively "release"
5536 (string-append out "/lib/yamagi-quake2"))
5537 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5538 (string-append out "/bin/yamagi-quake2"))
5539 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5540 (string-append out "/bin/yamagi-q2ded"))))))))
5541 (inputs `(("sdl2" ,sdl2)
5542 ("mesa" ,mesa)
5543 ("libvorbis" ,libvorbis)
5544 ("zlib" ,zlib)
5545 ("openal" ,openal)))
5546 (native-inputs `(("pkg-config" ,pkg-config)))
5547 (synopsis "First person shooter engine based on quake2")
5548 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5549The main focus is an unchanged single player experience like back in 1997,
5550thus the gameplay and the graphics are unaltered. However the user may use one
5551of the unofficial retexturing packs. In comparison with the official client,
5552over 1000 bugs were fixed and an extensive code audit done,
5553making Yamagi Quake II one of the most solid Quake II implementations available.")
5554 (home-page "https://www.yamagi.org/quake2/")
5555 (license (list license:gpl2+ ; game and server
5556 (license:non-copyleft ; info-zip
5557 "file://LICENSE"
5558 "See Info-Zip section.")
5559 license:public-domain)))) ; stb
c1228231 5560
e7448859
MIP
5561(define-public nudoku
5562 (package
5563 (name "nudoku")
5564 (version "1.0.0")
5565 (source (origin
5566 (method url-fetch)
5567 (uri (string-append "https://github.com/jubalh/nudoku/"
5568 "releases/download/" version
5569 "/nudoku-" version ".tar.xz"))
5570 (sha256
5571 (base32
5572 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5573 (build-system gnu-build-system)
5574 (inputs `(("ncurses" ,ncurses)))
5575 (home-page "https://jubalh.github.io/nudoku/")
5576 (synopsis "Sudoku for your terminal")
5577 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5578 (license license:gpl3+)))
5579
c1228231
NG
5580(define-public the-butterfly-effect
5581 (package
5582 (name "the-butterfly-effect")
5583 (version "0.9.3.1")
5584 (source
5585 (origin
089c6b00
EF
5586 (method git-fetch)
5587 (uri (git-reference
5588 (url "https://github.com/the-butterfly-effect/tbe.git")
5589 (commit (string-append "v" version))))
5590 (file-name (git-file-name name version))
c1228231
NG
5591 (sha256
5592 (base32
089c6b00 5593 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5594 (build-system gnu-build-system)
5595 (arguments
5596 `(#:phases
5597 (modify-phases %standard-phases
5598 (delete 'configure)
5599 ;; There is no "install" phase. By default, tbe is installed
5600 ;; in the build directory. Provide our own installation.
5601 (replace 'install
5602 (lambda* (#:key outputs #:allow-other-keys)
5603 (let* ((out (assoc-ref outputs "out"))
5604 (bin (string-append out "/bin"))
5605 (share (string-append out "/share")))
5606 (install-file "usr/games/tbe" bin)
5607 (mkdir-p share)
5608 (copy-recursively "usr/share" share)
5609 #t))))
5610 ;; Test suite requires a running Xorg server. Even when
5611 ;; provided, it fails with "D-Bus library appears to be
5612 ;; incorrectly set up; failed to read machine uuid: Failed to
5613 ;; open "/etc/machine-id": No such file or directory" along
5614 ;; with multiple "QPainter:: ... Painter not active" warnings.
5615 #:tests? #f))
5616 (inputs
5617 `(("qtbase" ,qtbase)
5618 ("qtsvg" ,qtsvg)))
5619 (native-inputs
c69959f0 5620 `(("cmake" ,cmake-minimal)
c1228231
NG
5621 ("gettext-minimal" ,gettext-minimal)
5622 ("qttools" ,qttools)))
5623 (synopsis "Realistic physics puzzle game")
5624 (description "The Butterfly Effect (tbe) is a game that uses
5625realistic physics simulations to combine lots of simple mechanical
5626elements to achieve a simple goal in the most complex way possible.")
5627 (home-page "http://the-butterfly-effect.org/")
5628 ;; Main license is GPL2-only. However, artwork is distributed
5629 ;; under various licenses, listed here.
5630 (license (list license:gpl2 license:public-domain license:expat
5631 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5632
5633(define-public pioneer
5634 (package
5635 (name "pioneer")
8f33b76e 5636 (version "20200203")
aac1aa75 5637 (source (origin
6a03ccf4
EB
5638 (method git-fetch)
5639 (uri (git-reference
5640 (url "https://github.com/pioneerspacesim/pioneer.git")
5641 (commit version)))
5642 (file-name (git-file-name name version))
aac1aa75
EB
5643 (sha256
5644 (base32
8f33b76e 5645 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 5646 (build-system cmake-build-system)
aac1aa75 5647 (native-inputs
ed3e7b72 5648 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5649 (inputs
5650 `(("assimp" ,assimp)
5651 ("curl" ,curl)
5652 ("freetype" ,freetype)
ed3e7b72 5653 ("glew" ,glew)
aac1aa75
EB
5654 ("glu" ,glu)
5655 ("libpng" ,libpng)
5656 ("libsigc++" ,libsigc++)
5657 ("libvorbis" ,libvorbis)
5658 ("lua" ,lua-5.2) ;not compatible with 5.3
5659 ("mesa" ,mesa)
5660 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5661 (arguments
5662 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5663 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5664 (string-append "-DPIONEER_DATA_DIR="
5665 %output "/share/games/pioneer"))))
aac1aa75
EB
5666 (home-page "http://pioneerspacesim.net")
5667 (synopsis "Game of lonely space adventure")
5668 (description
5669 "Pioneer is a space adventure game set in our galaxy at the turn of the
567031st century. The game is open-ended, and you are free to eke out whatever
5671kind of space-faring existence you can think of. Look for fame or fortune by
5672exploring the millions of star systems. Turn to a life of crime as a pirate,
5673smuggler or bounty hunter. Forge and break alliances with the various
5674factions fighting for power, freedom or self-determination. The universe is
5675whatever you make of it.")
5676 (license license:gpl3)))
57f9671d 5677
5678(define-public badass
5679 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5680 (revision "0"))
5681 (package
5682 (name "badass")
5683 (version (git-version "0.0" revision commit))
5684 (source (origin
5685 (method git-fetch)
5686 (uri (git-reference
5687 (url "https://github.com/umayr/badass.git")
5688 (commit commit)))
5689 (file-name (git-file-name name version))
5690 (sha256
5691 (base32
5692 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5693 (build-system go-build-system)
5694 (arguments
5695 '(#:import-path "github.com/umayr/badass"))
5696 (synopsis "Hacking contribution graphs in git")
5697 (description
5698 "Badass generates false commits for a range of dates, essentially
5699hacking the gamification of contribution graphs on platforms such as
5700Github or Gitlab.")
5701 (home-page "https://github.com/umayr/badass")
5702 (license license:expat))))
fa7d8ea1
NG
5703
5704(define-public colobot
5705 (package
5706 (name "colobot")
2dad4c91 5707 (version "0.1.12-alpha")
fa7d8ea1
NG
5708 (source
5709 (origin
2dad4c91
NG
5710 (method git-fetch)
5711 (uri (git-reference
5712 (url "https://github.com/colobot/colobot.git")
5713 (commit (string-append "colobot-gold-" version))
5714 (recursive? #t))) ;for "data/" subdir
5715 (file-name (git-file-name name version))
fa7d8ea1
NG
5716 (sha256
5717 (base32
2dad4c91 5718 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5719 (build-system cmake-build-system)
5720 (arguments
5721 `(#:tests? #f ;no test
5722 #:phases
5723 (modify-phases %standard-phases
2dad4c91
NG
5724 (add-after 'unpack 'make-git-checkout-writable
5725 (lambda _
5726 (for-each make-file-writable (find-files "."))
5727 #t))
5728 (add-after 'unpack 'fix-directories
5729 (lambda _
5730 (substitute* "CMakeLists.txt"
5731 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5732 (string-append prefix "/bin"))
5733 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5734 (string-append prefix "/colobot")))
5735 #t))
5736 (add-after 'fix-directories 'install-music
5737 ;; Retrieve and install music files.
fa7d8ea1
NG
5738 (lambda* (#:key inputs #:allow-other-keys)
5739 ;; Installation process tries to download music files using
2dad4c91
NG
5740 ;; "wget" if not already present. Since we are going another
5741 ;; route, skip "wget" command check.
fa7d8ea1
NG
5742 (substitute* "data/music/CMakeLists.txt"
5743 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5744 ;; Populate "music/" directory.
fa7d8ea1 5745 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5746 (invoke "tar" "-xvf" data "-Cdata/music"))
5747 #t)))))
fa7d8ea1 5748 (native-inputs
2dad4c91 5749 `(("colobot-music"
fa7d8ea1
NG
5750 ,(origin
5751 (method url-fetch)
5752 (uri (string-append "https://colobot.info/files/music/"
5753 "colobot-music_ogg_" version ".tar.gz"))
5754 (sha256
5755 (base32
5756 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5757 ("gettext" ,gettext-minimal)
5758 ("librsvg" ,librsvg)
5759 ("po4a" ,po4a)
5760 ("python" ,python-wrapper)))
5761 (inputs
5762 `(("boost" ,boost)
5763 ("glew" ,glew)
5764 ("libogg" ,libogg)
5765 ("libpng" ,libpng)
5766 ("libsndfile" ,libsndfile)
5767 ("libvorbis" ,libvorbis)
5768 ("openal" ,openal)
5769 ("physfs" ,physfs)
5770 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5771 (synopsis "Educational programming strategy game")
5772 (description "Colobot: Gold Edition is a real-time strategy game, where
5773you can program your units (bots) in a language called CBOT, which is similar
5774to C++ and Java. Your mission is to find a new planet to live and survive.
5775You can save humanity and get programming skills!")
5776 (home-page "https://colobot.info")
5777 (license license:gpl3+)))
2922852e 5778
5779(define-public gzdoom
5780 (package
5781 (name "gzdoom")
570b89f4
TGR
5782 (version "4.3.2")
5783 (source
5784 (origin
5785 (method git-fetch)
5786 (uri (git-reference
5787 (url "https://github.com/coelckers/gzdoom.git")
5788 (commit (string-append "g" version))))
5789 (file-name (git-file-name name version))
5790 (sha256
5791 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5792 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5793 "gzdoom-find-system-libgme.patch"))
5794 (modules '((guix build utils)))
5795 (snippet
5796 '(begin
5797 ;; Remove some bundled libraries. XXX There are more, but removing
5798 ;; them would require, at least, patching the build system.
5799 (with-directory-excursion "libraries"
5800 (delete-file-recursively "bzip2")
5801 (delete-file-recursively "game-music-emu")
5802 (delete-file-recursively "jpeg")
5803 (delete-file-recursively "zlib"))
5804 #t))))
2922852e 5805 (arguments
5806 '(#:tests? #f
5807 #:configure-flags
5808 (let ((out (assoc-ref %outputs "out")))
5809 (list
5810 (string-append
5811 "-DCMAKE_CXX_FLAGS:="
5812 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5813 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
5814
5815 ;; The build requires some extra convincing not to use the bundled
5816 ;; libgme previously deleted in the soure snippet.
5817 "-DFORCE_INTERNAL_GME=OFF"
5818
5819 ;; Link libraries at build time instead of loading them at run time.
2922852e 5820 "-DDYN_OPENAL=OFF"
5821 "-DDYN_FLUIDSYNTH=OFF"
5822 "-DDYN_GTK=OFF"
5823 "-DDYN_MPG123=OFF"
5824 "-DDYN_SNDFILE=OFF"))
5825 #:phases
5826 (modify-phases %standard-phases
5827 (add-before 'configure 'fix-referenced-paths
5828 (lambda* (#:key inputs outputs #:allow-other-keys)
5829 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5830 (timidity++ (assoc-ref inputs "timidity++"))
5831 (out (assoc-ref outputs "out")))
5832
5833 (substitute*
5834 "src/CMakeLists.txt"
5835 (("COMMAND /bin/sh")
5836 (string-append "COMMAND " (which "sh"))))
5837
5838 (substitute*
570b89f4 5839 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 5840 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5841 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5842
5843 (substitute*
570b89f4 5844 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 5845 (("exename = \"timidity\"")
5846 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5847 #t))))))
5848 (build-system cmake-build-system)
5849 (inputs `(("bzip2" ,bzip2)
5850 ("fluid-3" ,fluid-3)
570b89f4 5851 ("fluidsynth" ,fluidsynth)
2922852e 5852 ("gtk+3" ,gtk+)
5853 ("libgme" ,libgme)
5854 ("libjpeg" ,libjpeg)
5855 ("libsndfile" ,libsndfile)
5856 ("mesa" ,mesa)
5857 ("mpg123" ,mpg123)
5858 ("openal" ,openal)
5859 ("sdl2" ,sdl2)
5860 ("timidity++" ,timidity++)
5861 ("zlib" ,zlib)))
5862 (native-inputs `(("pkg-config" ,pkg-config)
5863 ("unzip" ,unzip)))
5864 (synopsis "Modern Doom 2 source port")
5865 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5866renderer. It improves modding support with ZDoom's advanced mapping features
5867and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5868Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5869 (home-page "https://zdoom.org/index")
642b195a
EF
5870 ;; The source uses x86 assembly
5871 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5872 (license (list license:gpl3+ ; gzdoom game
5873 license:lgpl3+ ; gzdoom renderer
5874 license:expat ; gdtoa
5875 (license:non-copyleft ; modified dumb
5876 "file://dumb/licence.txt"
5877 "Dumb license, explicitly GPL compatible.")))))
b1642338 5878
6f565d6c
P
5879(define-public odamex
5880 (package
5881 (name "odamex")
5448b16e 5882 (version "0.8.1")
6f565d6c
P
5883 (source
5884 (origin
5885 (method url-fetch)
5886 (uri (string-append
5887 "mirror://sourceforge/odamex/Odamex/" version "/"
5888 "odamex-src-" version ".tar.gz"))
5889 (sha256
5448b16e 5890 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 5891 (build-system cmake-build-system)
5448b16e 5892 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
5893 (inputs
5894 `(("sdl" ,sdl)
5895 ("sdl-mixer" ,sdl-mixer)
5896 ("zlib" ,zlib)
5897 ("libpng" ,libpng)
5898 ("alsa-lib" ,alsa-lib)))
5899 (home-page "https://odamex.net/")
5900 (synopsis "Multiplayer Doom port")
5901 (description "Odamex is a modification of the Doom engine that
5902allows players to easily join servers dedicated to playing Doom
5903online.")
5904 (license license:gpl2+)))
5905
fc16bbb7
JK
5906(define-public chocolate-doom
5907 (package
5908 (name "chocolate-doom")
5909 (version "3.0.0")
5910 (source (origin
5911 (method url-fetch)
5912 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5913 version
5914 "/chocolate-doom-"
5915 version
5916 ".tar.gz"))
5917 (sha256
5918 (base32
5919 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5920 (build-system gnu-build-system)
5921 (inputs `(("sdl2-net" ,sdl2-net)
5922 ("sdl2-mixer" , sdl2-mixer)
5923 ("sdl2" ,sdl2)))
5924 (native-inputs
5925 `(("pkg-config" ,pkg-config)))
5926 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5927Doom")
5928 (description
5929 "Chocolate Doom takes a different approach to other source ports. Its
5930aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5931a conservative, historically accurate Doom source port, which is compatible
5932with the thousands of mods and levels that were made before the Doom source
5933code was released. Rather than flashy new graphics, Chocolate Doom's main
5934features are its accurate reproduction of the game as it was played in the
59351990s. The project is developed around a carefully-considered philosophy that
5936intentionally restricts which features may be added (and rejects any that
5937affect gameplay).")
5938 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5939 (license license:gpl2)))
5940
3f9a027c
DF
5941(define-public crispy-doom
5942 (package
5943 (inherit chocolate-doom)
5944 (name "crispy-doom")
17cb06a6 5945 (version "5.6.4")
3f9a027c
DF
5946 (source (origin
5947 (method git-fetch)
5948 (uri (git-reference
5949 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5950 (commit (string-append "crispy-doom-" version))))
5951 (file-name (git-file-name name version))
5952 (sha256
17cb06a6 5953 (base32 "1ls4v2kpb7vi7xji5yqbmyc5lfkz497h1vvj9w86wkrw8k59hlg2"))))
3f9a027c
DF
5954 (native-inputs
5955 (append
5956 (package-native-inputs chocolate-doom)
5957 `(("automake" ,automake)
5958 ("autoreconf" ,autoconf))))
5959 (arguments
5960 `(#:phases
5961 (modify-phases %standard-phases
5962 (replace 'bootstrap
17cb06a6 5963 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
5964 (lambda _ (invoke "autoreconf" "-vif"))))))
5965 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5966Chocolate Doom")
5967 (description
5968 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5969display resolution, removes the static limits of the Doom engine and offers
5970further optional visual, tactical and physical enhancements while remaining
5971entirely config file, savegame, netplay and demo compatible with the
5972original.")
5973 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5974
64b47a29
OP
5975(define shlomif-cmake-modules
5976 (origin
5977 (method url-fetch)
5978 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5979 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5980 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5981 (sha256
5982 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
5983
5984(define-public rinutils
5985 (package
5986 (name "rinutils")
5987 (version "0.2.0")
5988 (source (origin
5989 (method git-fetch)
5990 (uri (git-reference
5991 (url "https://github.com/shlomif/rinutils.git")
5992 (commit version)))
5993 (file-name (git-file-name name version))
5994 (sha256
5995 (base32
5996 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5997 (native-inputs
5998 `(("perl" ,perl)
5999 ;; The following is only needed for tests.
6000 ("perl-file-find-object" ,perl-file-find-object)
6001 ("perl-test-differences" ,perl-test-differences)
6002 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6003 ("perl-io-all" ,perl-io-all)
6004 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6005 ("cmake-rules" ,shlomif-cmake-modules)
6006 ("pkg-config" ,pkg-config)))
6007 (inputs
6008 `(("cmocka" ,cmocka)
6009 ("perl-env-path", perl-env-path)
6010 ("perl-inline" ,perl-inline)
6011 ("perl-inline-c" ,perl-inline-c)
6012 ("perl-string-shellquote" ,perl-string-shellquote)
6013 ("perl-test-trailingspace" ,perl-test-trailingspace)
6014 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6015 ("perl-text-glob" ,perl-text-glob)
6016 ("perl-number-compare" ,perl-number-compare)
6017 ("perl-moo" ,perl-moo)))
6018 (arguments
6019 `(#:phases
6020 (modify-phases %standard-phases
6021 (add-after 'unpack 'fix-build-env
6022 (lambda* (#:key inputs #:allow-other-keys)
6023 (use-modules (guix build utils))
6024 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6025 (copy-file cmake-rules
6026 (string-append "cmake/"
6027 (strip-store-file-name cmake-rules)))
6028 #t)))
6029 (replace 'check
6030 (lambda _
6031 (with-directory-excursion "../source"
6032 (setenv "FCS_TEST_BUILD" "1")
6033 (setenv "RINUTILS_TEST_BUILD" "1")
6034 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6035 ;; which requires tidy-all.
6036 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6037 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6038 (build-system cmake-build-system)
6039 (home-page "https://www.shlomifish.org/open-source/projects/")
6040 (synopsis "C11 / gnu11 utilities C library")
6041 (description "This package provides C11 / gnu11 utilities C library")
6042 (license license:expat)))
6043
b1642338
PN
6044(define-public fortune-mod
6045 (package
6046 (name "fortune-mod")
815e12f3 6047 (version "2.12.0")
7e1d376d
TGR
6048 (source
6049 (origin
6050 (method git-fetch)
6051 (uri (git-reference
6052 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 6053 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
6054 (file-name (git-file-name name version))
6055 (sha256
6056 (base32
815e12f3 6057 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
b1642338
PN
6058 (build-system cmake-build-system)
6059 (arguments
6060 `(#:test-target "check"
6061 #:phases
6062 (modify-phases %standard-phases
6063 (add-after 'unpack 'fix-build-env
6064 (lambda* (#:key inputs #:allow-other-keys)
6065 (use-modules (guix build utils))
6066 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6067 (copy-file cmake-rules
6068 (string-append "fortune-mod/cmake/"
6069 (strip-store-file-name cmake-rules)))
abf06df2 6070 (chdir "fortune-mod")
61857323
PN
6071 ;; TODO: Valgrind tests fail for some reason.
6072 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6073 (delete-file "tests/t/valgrind.t")
abf06df2 6074 #t)))
b1642338 6075 (add-after 'install 'fix-install-directory
b1642338 6076 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
6077 ;; Move binary from "games/" to "bin/" and remove the latter. This
6078 ;; is easier than patching CMakeLists.txt since the tests hard-code
6079 ;; the location as well.
6080 (let* ((out (assoc-ref outputs "out"))
6081 (bin (string-append out "/bin"))
6082 (games (string-append out "/games")))
6083 (rename-file (string-append games "/fortune")
6084 (string-append bin "/fortune"))
6085 (rmdir games)
b1642338
PN
6086 #t))))))
6087 (inputs `(("recode" ,recode)))
6088 (native-inputs
6089 `(("perl" ,perl)
6090 ;; The following is only needed for tests.
6091 ("perl-file-find-object" ,perl-file-find-object)
6092 ("perl-test-differences" ,perl-test-differences)
6093 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6094 ("perl-io-all" ,perl-io-all)
6095 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
6096 ("cmake-rules" ,shlomif-cmake-modules)
6097 ("rinutils" ,rinutils)))
b1642338
PN
6098 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
6099 (synopsis "The Fortune Cookie program from BSD games")
6100 (description "Fortune is a command-line utility which displays a random
6101quotation from a collection of quotes.")
6102 (license license:bsd-4)))
dc70ff2a 6103
6104(define xonotic-data
6105 (package
6106 (name "xonotic-data")
6107 (version "0.8.2")
6108 (source
6109 (origin
6110 (method url-fetch)
6111 (uri (string-append "http://dl.xonotic.org/xonotic-"
6112 version ".zip"))
6113 (file-name (string-append name "-" version ".zip"))
6114 (sha256
6115 (base32
6116 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6117 (build-system trivial-build-system)
6118 (native-inputs
6119 `(("unzip" ,unzip)))
6120 (arguments
6121 `(#:modules ((guix build utils))
6122 #:builder
6123 (begin
6124 (use-modules (guix build utils))
6125 (let* ((out (assoc-ref %outputs "out"))
6126 (xonotic (string-append out "/share/xonotic"))
6127 (source (assoc-ref %build-inputs "source"))
6128 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6129 (copy-file source (string-append ,name "-" ,version ".zip"))
6130 (invoke unzip (string-append ,name "-" ,version ".zip"))
6131 (mkdir-p out)
6132 (mkdir-p xonotic)
6133 (chdir "Xonotic")
6134 (copy-recursively "data"
6135 (string-append xonotic "/data"))
6136 (copy-recursively "server"
6137 (string-append xonotic "/server"))
6138 (install-file "key_0.d0pk" xonotic)))))
6139 (home-page "http://xonotic.org")
6140 (synopsis "Data files for Xonotic")
6141 (description
6142 "Xonotic-data provides the data files required by the game Xonotic.")
6143 (license (list license:gpl2+
9b9db6c4 6144 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 6145
6146(define-public xonotic
6147 (package
6148 (name "xonotic")
6149 (version "0.8.2")
6150 (source
6151 (origin
6152 (method url-fetch)
6153 (uri (string-append "http://dl.xonotic.org/xonotic-"
6154 version "-source.zip"))
6155 (file-name (string-append name "-" version ".zip"))
6156 (sha256
6157 (base32
6158 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6159 (build-system gnu-build-system)
6160 (arguments
6161 `(#:configure-flags (list (string-append "--prefix="
6162 (assoc-ref %outputs "out"))
6163 "--disable-rijndael")
6164 #:phases
6165 (modify-phases %standard-phases
6166 (add-before 'configure 'make-darkplaces
6167 (lambda* (#:key outputs #:allow-other-keys)
6168 (let* ((out (assoc-ref outputs "out"))
6169 (sharedir (string-append out "/share/xonotic/")))
6170 (invoke "make" "-C" "source/darkplaces"
6171 (string-append "DP_FS_BASEDIR="
6172 sharedir)
6173 "DP_LINK_TO_LIBJPEG=1"
6174 "DP_SOUND_API=ALSA"
6175 "CC=gcc"
6176 "-f" "makefile"
6177 "cl-release")
6178 (invoke "make" "-C" "source/darkplaces"
6179 (string-append "DP_FS_BASEDIR="
6180 sharedir)
6181 "DP_LINK_TO_LIBJPEG=1"
6182 "DP_SOUND_API=ALSA"
6183 "CC=gcc"
6184 "-f" "makefile"
6185 "sdl-release")
6186 (invoke "make" "-C" "source/darkplaces"
6187 (string-append "DP_FS_BASEDIR="
6188 sharedir)
6189 "DP_LINK_TO_LIBJPEG=1"
6190 "DP_SOUND_API=ALSA"
6191 "CC=gcc"
6192 "-f" "makefile"
6193 "sv-release"))))
6194 (add-before 'configure 'bootstrap
6195 (lambda _
6196 (chdir "source/d0_blind_id")
6197 (invoke "sh" "autogen.sh")))
6198 (add-after 'build 'install-desktop-entry
6199 (lambda* (#:key outputs #:allow-other-keys)
6200 ;; Add .desktop files for the 2 variants and the symlink
6201 (let* ((output (assoc-ref outputs "out"))
6202 (apps (string-append output "/share/applications")))
6203 (mkdir-p apps)
6204 (with-output-to-file
6205 (string-append apps "/xonotic-glx.desktop")
6206 (lambda _
6207 (format #t
6208 "[Desktop Entry]~@
6209 Name=xonotic-glx~@
6210 Comment=Xonotic glx~@
6211 Exec=~a/bin/xonotic-glx~@
6212 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6213 Icon=xonotic~@
6214 Categories=Game~@
dc70ff2a 6215 Type=Application~%"
6216 output)))
6217 (with-output-to-file
6218 (string-append apps "/xonotic-sdl.desktop")
6219 (lambda _
6220 (format #t
6221 "[Desktop Entry]~@
6222 Name=xonotic-sdl~@
6223 Comment=Xonotic sdl~@
6224 Exec=~a/bin/xonotic-sdl~@
6225 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6226 Icon=xonotic~@
6227 Categories=Game~@
dc70ff2a 6228 Type=Application~%"
6229 output)))
6230 (with-output-to-file
6231 (string-append apps "/xonotic.desktop")
6232 (lambda _
6233 (format #t
6234 "[Desktop Entry]~@
6235 Name=xonotic~@
6236 Comment=Xonotic~@
6237 Exec=~a/bin/xonotic-glx~@
6238 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6239 Icon=xonotic~@
6240 Categories=Game~@
dc70ff2a 6241 Type=Application~%"
6242 output)))
6243 #t)))
6244 (add-after 'install-desktop-entry 'install-icons
6245 (lambda* (#:key outputs #:allow-other-keys)
6246 (let ((out (assoc-ref outputs "out")))
6247 (with-directory-excursion "../../misc/logos/icons_png/"
6248 (for-each
6249 (lambda (file)
6250 (let* ((size (string-filter char-numeric? file))
6251 (icons (string-append out "/share/icons/hicolor/"
6252 size "x" size "/apps")))
6253 (mkdir-p icons)
6254 (copy-file file (string-append icons "/xonotic.png"))))
6255 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6256 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6257 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6258 (add-after 'install-icons 'install-binaries
6259 (lambda* (#:key outputs #:allow-other-keys)
6260 (let ((out (assoc-ref outputs "out")))
6261 (define (install src dst)
6262 (let ((dst (string-append out dst)))
6263 (mkdir-p (dirname dst))
6264 (copy-file src dst)))
6265 (mkdir-p (string-append out "/bin"))
6266 (install "../darkplaces/darkplaces-dedicated"
6267 "/bin/xonotic-dedicated")
6268 (install "../darkplaces/darkplaces-glx"
6269 "/bin/xonotic-glx")
6270 (install "../darkplaces/darkplaces-sdl"
6271 "/bin/xonotic-sdl")
6272 ;; Provide a default xonotic executable, defaulting to SDL.
6273 (symlink (string-append out "/bin/xonotic-sdl")
6274 (string-append out "/bin/xonotic"))
6275 #t)))
6276 (add-after 'install-binaries 'install-data
6277 (lambda* (#:key outputs inputs #:allow-other-keys)
6278 (let* ((out (assoc-ref outputs "out"))
6279 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6280 (symlink (string-append data "/share/xonotic")
6281 (string-append out "/share/xonotic"))
dc70ff2a 6282 #t)))
6283 (add-after 'install-binaries 'wrap-binaries
6284 (lambda* (#:key outputs inputs #:allow-other-keys)
6285 ;; Curl and libvorbis need to be wrapped so that we get
6286 ;; sound and networking.
6287 (let* ((out (assoc-ref outputs "out"))
6288 (bin (string-append out "/bin/xonotic"))
6289 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6290 (bin-glx (string-append out "/bin/xonotic-glx"))
6291 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6292 (curl (assoc-ref inputs "curl"))
6293 (vorbis (assoc-ref inputs "libvorbis")))
6294 (wrap-program bin
6295 `("LD_LIBRARY_PATH" ":" prefix
6296 (,(string-append curl "/lib:" vorbis "/lib"))))
6297 (wrap-program bin-sdl
6298 `("LD_LIBRARY_PATH" ":" prefix
6299 (,(string-append curl "/lib:" vorbis "/lib"))))
6300 (wrap-program bin-glx
6301 `("LD_LIBRARY_PATH" ":" prefix
6302 (,(string-append curl "/lib:" vorbis "/lib"))))
6303 (wrap-program bin-dedicated
6304 `("LD_LIBRARY_PATH" ":" prefix
6305 (,(string-append curl "/lib:" vorbis "/lib"))))
6306 #t))))))
6307 (inputs
6308 `(("xonotic-data" ,xonotic-data)
6309 ("alsa-lib" ,alsa-lib)
6310 ("curl" ,curl)
6311 ("libjpeg" ,libjpeg)
6312 ("libmodplug" ,libmodplug)
6313 ("libvorbis" ,libvorbis)
6314 ("libogg" ,libogg)
6315 ("libxpm" ,libxpm)
6316 ("libxxf86dga" ,libxxf86dga)
6317 ("libxxf86vm" ,libxxf86vm)
6318 ("libx11" ,libx11)
6319 ("libxext" ,libxext)
6320 ("libxau" ,libxau)
6321 ("libxdmcp" ,libxdmcp)
6322 ("mesa" ,mesa)
6323 ("glu" ,glu)
6324 ("freetype" ,freetype)
6325 ("sdl2" ,sdl2)
6326 ("libpng" ,libpng)
6327 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6328 (native-inputs
6329 `(("unzip" ,unzip)
6330 ("autoconf" ,autoconf)
6331 ("automake" ,automake)
6332 ("pkg-config" ,pkg-config)
6333 ("libtool" ,libtool)
6334 ("gmp" ,gmp)))
6335 (home-page "http://xonotic.org")
6336 (synopsis "Fast-paced first-person shooter game")
6337 (description
6338 "Xonotic is a free, fast-paced first-person shooter.
6339The project is geared towards providing addictive arena shooter
6340gameplay which is all spawned and driven by the community itself.
6341Xonotic is a direct successor of the Nexuiz project with years of
6342development between them, and it aims to become the best possible
6343open-source FPS of its kind.")
6344 (license (list license:gpl2+
6345 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6346 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6347
6348(define-public frotz
6349 (package
6350 (name "frotz")
6351 (version "2.44")
6352 (source (origin
6353 (method url-fetch)
6354 (uri (list (string-append
6355 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6356 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6357 (string-append
6358 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6359 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6360 (sha256
6361 (base32
6362 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6363 (build-system gnu-build-system)
6364 (arguments
6365 `(#:tests? #f ; there are no tests
6366 #:phases
6367 (modify-phases %standard-phases
6368 (delete 'configure)
6369 (add-before 'build 'curses
6370 (lambda _
6371 (substitute* "Makefile"
6372 (("lcurses") "lncurses"))
6373 #t))
6374 (replace 'install
6375 (lambda* (#:key outputs #:allow-other-keys)
6376 (let* ((out (assoc-ref outputs "out"))
6377 (bin (string-append out "/bin"))
6378 (man (string-append out "/share/man/man6")))
6379 (install-file "frotz" bin)
6380 (mkdir-p man)
6381 (install-file "doc/frotz.6" man)
6382 #t))))))
6383 (inputs `(("libmodplug" ,libmodplug)
6384 ("libsamplerate" ,libsamplerate)
6385 ("libsndfile" ,libsndfile)
6386 ("libvorbis" ,libvorbis)
6387 ("ncurses" ,ncurses)))
6388 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6389 (description "Frotz is an interpreter for Infocom games and other Z-machine
6390games in the text adventure/interactive fiction genre. This version of Frotz
6391complies with standard 1.0 of Graham Nelson's specification. It plays all
6392Z-code games V1-V8, including V6, with sound support through libao, and uses
6393ncurses for text display.")
6394 (home-page "http://frotz.sourceforge.net")
6395 (license license:gpl2+)))
6396
6397(define-public frotz-dumb-terminal
6398 (package
6399 (name "frotz-dumb-terminal")
6400 (version "2.44")
6401 (source (origin
6402 (method url-fetch)
6403 (uri (list (string-append
6404 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6405 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6406 (string-append
6407 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6408 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6409 (sha256
6410 (base32
6411 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6412 (build-system gnu-build-system)
6413 (arguments
6414 `(#:tests? #f ; there are no tests
6415 #:phases
6416 (modify-phases %standard-phases
6417 (delete 'configure)
6418 (replace 'build
6419 (lambda _
6420 (invoke "make" "dumb")))
6421 (replace 'install
6422 (lambda* (#:key outputs #:allow-other-keys)
6423 (let* ((out (assoc-ref outputs "out"))
6424 (bin (string-append out "/bin"))
6425 (man (string-append out "/share/man/man6")))
6426 (install-file "dfrotz" bin)
6427 (mkdir-p man)
6428 (install-file "doc/dfrotz.6" man)
6429 #t))))))
6430 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6431 (description "Frotz is an interpreter for Infocom games and
6432other Z-machine games in the text adventure/interactive fiction genre.
6433dfrotz is the dumb interface version. You get no screen control; everything
6434is just printed to the terminal line by line. The terminal handles all the
6435scrolling. Maybe you'd like to experience what it's like to play Adventure on
6436a teletype. A much cooler use for compiling Frotz with the dumb interface is
6437that it can be wrapped in CGI scripting, PHP, and the like to allow people
6438to play games on webpages. It can also be made into a chat bot.")
6439 (home-page "http://frotz.sourceforge.net")
6440 (license license:gpl2+)))
6441
6442(define-public frotz-sdl
6443 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6444 (package
6445 (name "frotz-sdl")
6446 (version "2.45pre")
6447 (source (origin
6448 (method git-fetch)
6449 (uri (git-reference
6450 (url "https://gitlab.com/DavidGriffith/frotz")
6451 (commit commit)))
6452 (sha256
6453 (base32
6454 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6455 (file-name (git-file-name name version))))
6456 (build-system gnu-build-system)
6457 (arguments
6458 `(#:tests? #f ; there are no tests
6459 #:phases
6460 (modify-phases %standard-phases
6461 (delete 'configure)
6462 (add-before 'build 'patch-makefile
6463 (lambda _
6464 (substitute* "Makefile"
6465 (("lcurses") "lncurses")
6466 (("^BUILD_DATE_TIME =.*$")
6467 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6468 #t))
6469 (replace 'build
6470 (lambda _
6471 (invoke "make" "sdl")))
6472 (replace 'install
6473 (lambda* (#:key outputs #:allow-other-keys)
6474 (let* ((out (assoc-ref outputs "out"))
6475 (bin (string-append out "/bin"))
6476 (man (string-append out "/share/man/man6")))
6477 (install-file "sfrotz" bin)
6478 (mkdir-p man)
6479 (install-file "doc/sfrotz.6" man)
6480 #t))))))
6481 (native-inputs
6482 `(("pkg-config" ,pkg-config)
6483 ("which" ,which)
6484 ("perl" ,perl)))
6485 (inputs `(("sdl2" ,sdl2)
6486 ("sdl2-mixer" ,sdl2-mixer)
6487 ("libmodplug" ,libmodplug)
6488 ("libsamplerate" ,libsamplerate)
6489 ("libsndfile" ,libsndfile)
6490 ("libvorbis" ,libvorbis)
6491 ("ncurses" ,ncurses)
6492 ("freetype" ,freetype)
6493 ("libjpeg-turbo" ,libjpeg-turbo)))
6494 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6495 (description "Frotz is an interpreter for Infocom games and other Z-machine
6496games in the text adventure/interactive fiction genre. This version of Frotz
6497using SDL fully supports all these versions of the Z-Machine including the
6498graphical version 6. Graphics and sound are created through the use of the SDL
6499libraries. AIFF sound effects and music in MOD and OGG formats are supported
6500when packaged in Blorb container files or optionally from individual files.")
6501 (home-page "http://frotz.sourceforge.net")
6502 (license license:gpl2+))))
18ebaa9e
EB
6503
6504(define-public libmanette
6505 (package
6506 (name "libmanette")
737e32a4 6507 (version "0.2.3")
18ebaa9e
EB
6508 (source (origin
6509 (method url-fetch)
5b35bdaa 6510 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6511 (version-major+minor version) "/"
5b35bdaa 6512 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6513 (sha256
6514 (base32
737e32a4 6515 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6516 (build-system meson-build-system)
6517 (native-inputs
6518 `(("glib" ,glib "bin") ; for glib-compile-resources
6519 ("gobject-introspection" ,gobject-introspection)
6520 ("pkg-config" ,pkg-config)
6521 ("vala" ,vala)))
6522 (inputs
6523 `(("libevdev" ,libevdev)
6524 ("libgudev" ,libgudev)))
6525 (home-page "https://wiki.gnome.org/Apps/Games")
6526 (synopsis "Game controller library")
6527 (description "Libmanette is a small GObject library giving you simple
6528access to game controllers. It supports the de-facto standard gamepads as
6529defined by the W3C standard Gamepad specification or as implemented by the SDL
6530GameController.")
6531 (license license:lgpl2.1+)))
39c676c4
EB
6532
6533(define-public quadrapassel
6534 (package
6535 (name "quadrapassel")
8a5bfb26 6536 (version "3.32.0")
39c676c4
EB
6537 (source (origin
6538 (method url-fetch)
49598564 6539 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6540 (version-major+minor version) "/"
49598564 6541 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6542 (sha256
6543 (base32
8a5bfb26
KK
6544 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6545 (build-system meson-build-system)
6546 (arguments
6547 '(#:glib-or-gtk? #t
6548 #:phases
6549 (modify-phases %standard-phases
6550 (add-after 'unpack 'skip-gtk-update-icon-cache
6551 ;; Don't create 'icon-theme.cache'.
6552 (lambda _
6553 (substitute* "build-aux/meson_post_install.py"
6554 (("gtk-update-icon-cache") (which "true")))
6555 #t)))))
39c676c4
EB
6556 (native-inputs
6557 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6558 ("gettext" ,gnu-gettext)
6559 ("glib" ,glib "bin") ;for glib-compile-resources
6560 ("itstool" ,itstool)
6561 ("libxml2" ,libxml2) ;for xmllint
6562 ("pkg-config" ,pkg-config)
6563 ("vala" ,vala)))
6564 (inputs
6565 `(("clutter" ,clutter)
6566 ("clutter-gtk" ,clutter-gtk)
6567 ("gtk+" ,gtk+)
6568 ("libcanberra" ,libcanberra)
6569 ("libmanette" ,libmanette)
6570 ("librsvg" ,librsvg)))
6571 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6572 (synopsis "GNOME version of Tetris")
6573 (description "Quadrapassel comes from the classic falling-block game,
6574Tetris. The goal of the game is to create complete horizontal lines of
6575blocks, which will disappear. The blocks come in seven different shapes made
6576from four blocks each: one straight, two L-shaped, one square, and two
6577S-shaped. The blocks fall from the top center of the screen in a random
6578order. You rotate the blocks and move them across the screen to drop them in
6579complete lines. You score by dropping blocks fast and completing lines. As
6580your score gets higher, you level up and the blocks fall faster.")
6581 (license license:gpl2+)))
560df540
EF
6582
6583(define-public endless-sky
6584 (package
6585 (name "endless-sky")
aa641984 6586 (version "0.9.10")
560df540
EF
6587 (source
6588 (origin
6589 (method git-fetch)
6590 (uri (git-reference
6591 (url "https://github.com/endless-sky/endless-sky")
6592 (commit (string-append "v" version))))
6593 (file-name (git-file-name name version))
6594 (sha256
6595 (base32
aa641984 6596 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6597 (build-system scons-build-system)
6598 (arguments
6599 `(#:scons ,scons-python2
6600 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6601 #:tests? #f ; no tests
6602 #:phases
6603 (modify-phases %standard-phases
6604 (add-after 'unpack 'patch-resource-locations
6605 (lambda* (#:key outputs #:allow-other-keys)
6606 (substitute* "source/Files.cpp"
6607 (("/usr/local/")
6608 (string-append (assoc-ref outputs "out") "/")))
6609 #t))
6610 (add-after 'unpack 'patch-scons
6611 (lambda _
6612 (substitute* "SConstruct"
6613 ;; Keep environmental variables
6614 (("Environment\\(\\)")
6615 "Environment(ENV = os.environ)")
6616 ;; Install into %out/bin
6617 (("games\"") "bin\""))
6618 #t)))))
6619 (inputs
6620 `(("glew" ,glew)
6621 ("libjpeg" ,libjpeg-turbo)
6622 ("libmad" ,libmad)
6623 ("libpng" ,libpng)
6624 ("openal" ,openal)
6625 ("sdl2" ,sdl2)))
6626 (home-page "https://endless-sky.github.io/")
6627 (synopsis "2D space trading and combat game")
6628 (description "Endless Sky is a 2D space trading and combat game. Explore
6629other star systems. Earn money by trading, carrying passengers, or completing
6630missions. Use your earnings to buy a better ship or to upgrade the weapons and
6631engines on your current one. Blow up pirates. Take sides in a civil war. Or
6632leave human space behind and hope to find friendly aliens whose culture is more
6633civilized than your own.")
6634 (license (list license:gpl3+
6635 license:cc-by-sa3.0
6636 license:cc-by-sa4.0
6637 license:public-domain))))
1faf0a04
NG
6638
6639(define-public stepmania
6640 (package
6641 (name "stepmania")
6642 (version "5.1.0-b2")
6643 (source
6644 (origin
6645 (method git-fetch)
6646 (uri (git-reference
6647 (url "https://github.com/stepmania/stepmania.git")
6648 (commit (string-append "v" version))))
6649 (file-name (git-file-name name version))
6650 (sha256
6651 (base32
6652 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6653 (modules '((guix build utils)))
6654 (snippet
6655 '(begin
6656 ;; Remove song files, which are licensed under a non-commercial
6657 ;; clause, and a course pointing to them.
6658 (for-each delete-file-recursively
6659 '("Songs/StepMania 5/Goin' Under"
6660 "Songs/StepMania 5/MechaTribe Assault"
6661 "Songs/StepMania 5/Springtime"))
6662 (for-each delete-file '("Courses/Default/Jupiter.crs"
6663 "Courses/Default/Jupiter.png"))
6664 ;; Unbundle libpng.
6665 (substitute* "extern/CMakeLists.txt"
6666 (("include\\(CMakeProject-png.cmake\\)") ""))
6667 (delete-file-recursively "extern/libpng")
6668 #t))))
6669 (build-system cmake-build-system)
6670 (arguments
6671 `(#:tests? #f ;FIXME: couldn't find how to run tests
6672 #:build-type "Release"
6673 #:out-of-source? #f ;for the 'install-desktop' phase
6674 #:configure-flags
6675 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6676 ;; SSE instructions are available on Intel systems only.
6677 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6678 (%current-system)))
6679 '("x64_64" "i686"))
6680 '()
6681 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6682 ;; Configuration cannot find GTK2 without the two following
6683 ;; flags.
6684 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6685 (assoc-ref %build-inputs "gtk+")
6686 "/lib/gtk-2.0/include")
6687 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6688 (assoc-ref %build-inputs "glib")
6689 "/lib/glib-2.0/include"))
6690 #:phases
6691 (modify-phases %standard-phases
47746772 6692 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6693 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6694 (let ((out (assoc-ref outputs "out")))
6695 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6696 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6697 (string-append "\"" out
6698 "/share/stepmania/GtkModule.so\"")))
6699 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6700 (("Root = sDirOfExecutable")
6701 (string-append "Root = \"" out "/share/stepmania/\""))
6702 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6703 (string-append "\"" out "/share/stepmania/" dir "\"")))
6704 (substitute* "src/RageFileManager.cpp"
6705 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6706 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6707 #t))
1faf0a04
NG
6708 (add-after 'unpack 'fix-install-subdir
6709 ;; Installation would be done in "%out/stepmania-X.Y", but we
6710 ;; prefer the more common layout "%out/share/stepmania".
6711 (lambda _
6712 (substitute* "src/CMakeLists.txt"
6713 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6714 #t))
6715 (add-after 'unpack 'unbundle-libpng
6716 (lambda* (#:key inputs #:allow-other-keys)
6717 (substitute* "src/CMakeLists.txt"
6718 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6719 (string-append (assoc-ref inputs "libpng") "/include")))
6720 #t))
6721 (add-after 'install 'install-executable
6722 (lambda* (#:key outputs #:allow-other-keys)
6723 (let* ((out (assoc-ref outputs "out"))
6724 (bin (string-append out "/bin"))
6725 (exe (string-append out "/share/stepmania/stepmania")))
6726 (mkdir-p bin)
6727 (symlink exe (string-append bin "/stepmania"))
6728 #t)))
6729 (add-after 'install-executable 'install-desktop
6730 (lambda* (#:key outputs #:allow-other-keys)
6731 (let* ((out (assoc-ref outputs "out"))
6732 (share (string-append out "/share"))
6733 (applications (string-append share "/applications"))
6734 (icons (string-append share "/icons")))
6735 (install-file "stepmania.desktop" applications)
6736 (mkdir-p icons)
6737 (copy-recursively "icons" icons)
6738 #t)))
6739 ;; Move documentation in a more usual place, i.e.,
6740 ;; "%out/share/doc/stepmania/".
6741 (add-after 'install-desktop 'install-doc
6742 (lambda* (#:key outputs #:allow-other-keys)
6743 (let* ((out (assoc-ref outputs "out"))
6744 (share (string-append out "/share")))
6745 (with-directory-excursion share
6746 (mkdir-p "doc")
6747 (symlink "../stepmania/Docs" "doc/stepmania"))
6748 #t))))))
6749 (native-inputs
6750 `(("pkg-config" ,pkg-config)
6751 ("yasm" ,yasm)))
6752 (inputs
6753 `(("alsa-lib" ,alsa-lib)
6754 ;; Per upstream, StepMania is only guaranteed to work with a very
6755 ;; specific FFmpeg version, which is included in the repository as
6756 ;; a Git submodule. This particular version requirement usually
6757 ;; changes every few years.
6758 ("ffmpeg" ,ffmpeg-for-stepmania)
6759 ("glib" ,glib)
6760 ("glew" ,glew)
6761 ("gtk+" ,gtk+-2)
6762 ("jsoncpp" ,jsoncpp)
6763 ("libpng" ,libpng)
96738cb1 6764 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
6765 ("libmad" ,libmad)
6766 ("libogg" ,libogg)
6767 ("libva" ,libva)
6768 ("libvorbis" ,libvorbis)
6769 ("libxinerama" ,libxinerama)
6770 ("libxrandr" ,libxrandr)
6771 ("mesa" ,mesa)
6772 ("pcre" ,pcre)
6773 ("pulseaudio" ,pulseaudio)
6774 ("sdl" ,sdl2)
6775 ("udev" ,eudev)
6776 ("zlib" ,zlib)))
6777 (synopsis "Advanced rhythm game designed for both home and arcade use")
6778 (description "StepMania is a dance and rhythm game. It features 3D
6779graphics, keyboard and dance pad support, and an editor for creating your own
6780steps.
6781
6782This package provides the core application, but no song is shipped. You need
6783to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6784 (home-page "https://www.stepmania.com")
6785 (license license:expat)))
6786
649220ad 6787(define-public btanks
ca32afac 6788 (package
649220ad 6789 (name "btanks")
ca32afac
RW
6790 (version "0.9.8083")
6791 (source
6792 (origin
6793 (method url-fetch)
6794 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6795 "btanks-" version ".tar.bz2"))
6796 (sha256
6797 (base32
6798 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6799 (build-system scons-build-system)
6800 (arguments
6801 `(#:tests? #f ; there are none
6802 #:scons ,scons-python2
6803 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6804 #:phases
6805 (modify-phases %standard-phases
6806 (add-after 'unpack 'replace-removed-scons-syntax
6807 (lambda _
6808 (substitute* "SConstruct"
6809 (("Options") "Variables")
6810 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6811 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6812 #t))
6813 (add-after 'set-paths 'set-sdl-paths
6814 (lambda* (#:key inputs #:allow-other-keys)
6815 (setenv "CPATH"
6816 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6817 "/include/SDL:"
6818 (or (getenv "CPATH") "")))
ca32afac
RW
6819 #t))
6820 (add-after 'unpack 'fix-compilation-errors
6821 (lambda _
6822 (substitute* "mrt/base_file.h"
6823 (("#include <string>" m)
6824 (string-append m "\n#include <sys/types.h>")))
6825 (substitute* '("engine/sl08/sl08.h"
6826 "engine/sl08/sl08.py")
6827 (("signal = NULL") "signal = 0")
6828 (("object\\(NULL\\)") "object(0)")
6829 (("func\\(NULL\\)") "func(0)")
6830 ((" connect\\(signal_ref\\)")
6831 " this->connect(signal_ref)"))
6832 (substitute* "math/range_list.h"
6833 ((" lower_bound\\(value\\)")
6834 " this->lower_bound(value)")
6835 ((" erase\\(i\\)")
6836 " this->erase(i)"))
6837 (substitute* "clunk/source.cpp"
6838 (("using namespace clunk" m)
6839 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6840 #t))
6841 (add-after 'unpack 'find-lua
6842 (lambda _
6843 (substitute* "engine/SConscript"
6844 (("lua5.1") "lua-5.1")
6845 (("bt_libs.append\\(lua\\)")
6846 "bt_libs.append(\"lua\")"))
6847 #t)))))
6848 (inputs
6849 `(("expat" ,expat)
6850 ("glu" ,glu)
6851 ("libsmpeg" ,libsmpeg-with-sdl1)
6852 ("libvorbis" ,libvorbis)
6853 ("lua51" ,lua-5.1)
6854 ("sdl" ,(sdl-union (list sdl
6855 sdl-mixer
6856 sdl-image
6857 sdl-ttf)))
6858 ("zlib" ,zlib)))
6859 (native-inputs
6860 `(("pkg-config" ,pkg-config)
6861 ("zip" ,zip)))
6862 (home-page "http://btanks.sourceforge.net")
6863 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6864 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6865game, where you can choose one of three vehicles and eliminate your enemy
6866using the whole arsenal of weapons. It has original cartoon-like graphics and
6867cool music, it’s fun and dynamic, it has several network modes for deathmatch
6868and cooperative.")
ca32afac
RW
6869 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6870 ;; released under GPLv2 or later. It comes with extra exceptions for the
6871 ;; developers.
6872 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6873
649220ad
NG
6874(define-public battle-tanks
6875 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6876
c06709b8
RW
6877(define-public slingshot
6878 (package
6879 (name "slingshot")
6880 (version "0.9")
6881 (source
6882 (origin
6883 (method git-fetch)
6884 (uri (git-reference
6885 (url "https://github.com/ryanakca/slingshot.git")
6886 (commit version)))
6887 (file-name (git-file-name name version))
6888 (sha256
6889 (base32
6890 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6891 (build-system python-build-system)
6892 (arguments
6893 `(#:python ,python-2))
6894 (inputs
6895 `(("python-pygame" ,python2-pygame)))
6896 (home-page "https://github.com/ryanakca/slingshot")
6897 (synopsis "Simple 2D shooting strategy game set in space")
6898 (description "Slingshot is a two-dimensional strategy game where two
6899players attempt to shoot one another through a section of space populated by
6900planets. The main feature of the game is that the shots, once fired, are
6901affected by the gravity of the planets.")
6902 (license license:gpl2+)))
8ada024b
RW
6903
6904(define-public 4dtris
6905 (package
6906 (name "4dtris")
6907 (version "0.4.3")
6908 (source
6909 (origin
6910 (method url-fetch)
6911 (uri (string-append "https://launchpad.net/4dtris/"
6912 (version-major+minor version)
6913 "/" version "/+download/4dtris_"
6914 version ".orig.tar.gz"))
6915 (sha256
6916 (base32
6917 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6918 (build-system gnu-build-system)
6919 (arguments
6920 `(#:phases
6921 (modify-phases %standard-phases
6922 (add-after 'unpack 'fix-install-directories
6923 (lambda* (#:key outputs #:allow-other-keys)
6924 (let ((out (assoc-ref outputs "out")))
6925 (substitute* "Makefile.in"
6926 (("bindir = /usr/games")
6927 (string-append "bindir = " out "/bin"))
6928 (("/usr/share/applications")
6929 (string-append out "/share/applications"))
6930 (("/usr/share/games/4dtris")
6931 (string-append out "/share/4dtris"))))
6932 #t))
6933 (add-after 'set-paths 'set-sdl-paths
6934 (lambda* (#:key inputs #:allow-other-keys)
6935 (setenv "CPATH"
6936 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6937 "/include/SDL:"
6938 (or (getenv "CPATH") "")))
8ada024b
RW
6939 #t)))))
6940 (inputs
6941 `(("fontconfig" ,fontconfig)
6942 ("freeglut" ,freeglut)
6943 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6944 (home-page "https://launchpad.net/4dtris/")
6945 (synopsis "4D Tetris")
6946 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6947game field is extended to 4D space, which has to filled up by the gamer with
69484D hyper cubes.")
6949 (license license:gpl3)))
6950
8044e584
PN
6951(define-public arx-libertatis
6952 (package
6953 (name "arx-libertatis")
6954 (version "1.1.2")
6955 (source
6956 (origin
6957 (method url-fetch)
6958 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6959 version ".tar.xz"))
6960 (sha256
6961 (base32
6962 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6963 (build-system cmake-build-system)
6964 (outputs '("out" "installer"))
6965 (arguments
6966 '(#:tests? #f ; No tests.
6967 #:phases
6968 (modify-phases %standard-phases
6969 (add-after 'unpack 'fix-install-helper-paths
6970 (lambda* (#:key inputs #:allow-other-keys)
6971 (let ((p7zip (assoc-ref inputs "p7zip"))
6972 (innoextract (assoc-ref inputs "innoextract"))
6973 (wget (assoc-ref inputs "wget"))
6974 (zenity (assoc-ref inputs "zenity")))
6975 (substitute* "scripts/arx-install-data"
6976 (("have innoextract")
6977 (string-append "have " innoextract "/bin/innoextract"))
6978 (("then innoextract")
6979 (string-append "then " innoextract "/bin/innoextract"))
6980 (("else innoextract")
6981 (string-append "else " innoextract "/bin/innoextract"))
6982 (("for _extract_zip_sz in 7za 7z")
6983 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6984 (("else if have 7z")
6985 (string-append "else if have " p7zip "/bin/7za"))
6986 (("7z x -tiso")
6987 (string-append p7zip "/bin/7z x -tiso"))
6988 (("if have wget")
6989 (string-append "if have " wget "/bin/wget"))
6990 (("wget -O")
6991 (string-append wget "/bin/wget -O"))
6992 (("for backend in \\$preferred zenity")
6993 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6994 (("zenity +--title")
6995 (string-append zenity "/bin/zenity --title"))
6996 (("^zenity\\)")
6997 (string-append zenity "/bin/zenity)"))))
6998 #t))
6999 (add-after 'install 'move-installer
7000 (lambda* (#:key outputs #:allow-other-keys)
7001 (let ((out (assoc-ref outputs "out"))
7002 (installer (assoc-ref outputs "installer")))
7003 (mkdir-p (string-append installer "/bin"))
7004 (rename-file (string-append out "/bin/arx-install-data")
7005 (string-append installer "/bin/arx-install-data"))))))))
7006 (inputs
7007 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7008 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7009 ("glew" ,glew)
7010 ("openal" ,openal)
7011 ("zlib" ,zlib)
7012 ("boost" ,boost)
7013 ("glm" ,glm)
7014 ("freetype" ,freetype)
7015 ;; The following are only needed by the arx-install-data script.
7016 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7017 ("zenity" ,zenity) ; GUI for install-helper.
7018 ("wget" ,wget) ; Used by the install-helper to download the patch.
7019 ;; The install-helper needs it to extract the patch.
7020 ("innoextract" ,innoextract)))
7021 (home-page "https://arx-libertatis.org/")
7022 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
7023 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7024first-person role-playing game / dungeon crawler developed by Arkane Studios.
7025This port however does not include the game data, so you need to obtain a copy
7026of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7027features crafting, melee and ranged combat, as well as a unique casting system
7028where the player draws runes in real time to effect the desired spell.")
8044e584 7029 (license license:gpl3+)))
47903653 7030
649220ad 7031(define-public edgar
47903653 7032 (package
649220ad 7033 (name "edgar")
a50d6099 7034 (version "1.32")
47903653 7035 (source
7036 (origin
7037 (method url-fetch)
7038 (uri
7039 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7040 version "/edgar-" version "-1.tar.gz"))
7041 (sha256
a50d6099 7042 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 7043 (build-system gnu-build-system)
067826ab 7044 (arguments '(#:tests? #f ; there are no tests
47903653 7045 #:make-flags
7046 (list "CC=gcc"
7047 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7048 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7049 #:phases
7050 (modify-phases %standard-phases
7051 (delete 'configure)
7052 (add-before 'build 'fix-env
7053 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
7054 (setenv "CPATH"
7055 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
7056 "/include/SDL2:"
7057 (or (getenv "CPATH") "")))
47903653 7058 #t)))))
067826ab
TGR
7059 (inputs
7060 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7061 ("zlib" ,zlib)))
47903653 7062 (native-inputs
7063 `(("pkg-config" ,pkg-config)
7064 ("autoconf" ,autoconf)
7065 ("automake" ,automake)
7066 ("gnu-gettext" ,gnu-gettext)
7067 ("libtool" ,libtool)
7068 ("which" ,which)))
7069 (synopsis "2d action platformer game")
7070 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7071When Edgar's father fails to return home after venturing out one dark and stormy night,
7072Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7073a fortress beyond the forbidden swamp.")
7074 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7075 (license license:gpl2+)))
f95e33a7 7076
649220ad
NG
7077(define-public the-legend-of-edgar
7078 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
7079
7080(define-public openclonk
7081 (package
7082 (name "openclonk")
7083 (version "8.1")
7084 (source (origin
7085 (method url-fetch)
7086 (uri (string-append
7087 "https://www.openclonk.org/builds/release/" version "/"
7088 "openclonk-" version "-src.tar.bz2"))
7089 (sha256
7090 (base32
7091 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7092 (build-system cmake-build-system)
7093 (arguments
7094 `(#:configure-flags '("-DAudio_TK=OpenAL")
7095 #:test-target "tests"
7096 #:phases
7097 (modify-phases %standard-phases
7098 (add-after 'unpack 'prepare-gmock
7099 (lambda* (#:key inputs #:allow-other-keys)
7100 (mkdir "gmock")
7101 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7102 (substitute* "tests/CMakeLists.txt"
7103 (("/usr/src/gmock")
7104 (string-append (getcwd) "/gmock/googlemock"))
7105 (("/usr/src/gtest")
7106 (string-append (getcwd) "/gmock/googletest"))
7107 (("PATH_SUFFIXES \"src\" \"gtest\"")
7108 "PATH_SUFFIXES \"src\""))
7109 #t))
ee9eafc1
MB
7110 (add-after 'unpack 'adjust-backward-cpp-includes
7111 (lambda _
7112 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7113 ;; that includes external libraries such as libdl from glibc.
7114 ;; By default, CMake interface includes are treated as "system
7115 ;; headers", and GCC behaves poorly when glibc is passed as a
7116 ;; system header (causing #include_next failures).
7117
7118 ;; Here we prevent targets that consume the Backward::Backward
7119 ;; interface from treating it as "system includes".
7120 (substitute* "CMakeLists.txt"
7121 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7122 (string-append "set_property(TARGET " target " PROPERTY "
7123 "NO_SYSTEM_FROM_IMPORTED true)\n"
7124 all)))
7125 #t))
4e43e317
NG
7126 (add-after 'unpack 'add-libiberty
7127 ;; Build fails upon linking executables without this.
7128 (lambda _
7129 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7130 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7131 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7132 #t))
7133 (add-after 'add-libiberty 'lax-freealut-requirement
7134 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7135 ;; it as 1.0.1. Force minimal version.
7136 (lambda _
7137 (substitute* "cmake/FindAudio.cmake"
7138 (("freealut>=1.1.0") "freealut>=1.0.1"))
7139 #t))
7140 (add-after 'lax-freealut-requirement 'fix-directories
7141 ;; Prefer "$out/share/openclonk" over
7142 ;; "$out/share/games/openclonk". Also install "openclonk"
7143 ;; binary in "bin/", not "games/".
7144 (lambda _
7145 (substitute* "CMakeLists.txt"
7146 (("share/games/openclonk") "share/openclonk")
7147 (("TARGETS openclonk DESTINATION games")
7148 "TARGETS openclonk DESTINATION bin"))
7149 #t)))))
7150 (native-inputs
7151 `(("googlemock" ,(package-source googletest))
7152 ("googletest" ,googletest)
7153 ("pkg-config" ,pkg-config)))
7154 (inputs
7155 `(("freealut" ,freealut)
7156 ("freetype" ,freetype)
7157 ("glew" ,glew)
7158 ("libiberty" ,libiberty)
7159 ("libjpeg" ,libjpeg-turbo)
7160 ("libogg" ,libogg)
7161 ("libpng" ,libpng)
7162 ("libvorbis" ,libvorbis)
7163 ("libxrandr" ,libxrandr)
7164 ("mesa" ,mesa)
7165 ("miniupnpc" ,miniupnpc)
7166 ("openal" ,openal)
7167 ("qtbase" ,qtbase)
7168 ("readline" ,readline)
7169 ("sdl" ,sdl2)
7170 ("tinyxml" ,tinyxml)
7171 ("zlib" ,zlib)))
7172 (home-page "https://www.openclonk.org/")
7173 (synopsis
7174 "Multiplayer action game where you control small and nimble humanoids")
7175 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7176often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 7177antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
7178robust humanoid beings. The game encourages free play but the normal goal is
7179to either exploit valuable resources from the earth by building a mine or
7180fight each other on an arena-like map.")
7181 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7182 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
7183
7184(define-public flare-engine
7185 (package
7186 (name "flare-engine")
f9622ec7 7187 (version "1.11")
ad4f6442
NG
7188 (source (origin
7189 (method git-fetch)
7190 (uri (git-reference
7191 (url "https://github.com/flareteam/flare-engine.git")
7192 (commit (string-append "v" version))))
7193 (file-name (git-file-name name version))
7194 (sha256
7195 (base32
f9622ec7 7196 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
7197 (build-system cmake-build-system)
7198 (arguments
7199 `(#:tests? #f ;no test
7200 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7201 (inputs
7202 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7203 ("python" ,python-wrapper)
7204 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7205 (home-page "http://www.flarerpg.org/")
7206 (synopsis "Action Roleplaying Engine")
7207 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7208game engine built to handle a very specific kind of game: single-player 2D
7209action RPGs.")
7210 (license license:gpl3+)))
7211
7212(define-public flare-game
7213 (package
7214 (name "flare-game")
ffbaefc7 7215 (version "1.11")
ad4f6442
NG
7216 (source (origin
7217 (method git-fetch)
7218 (uri (git-reference
7219 (url "https://github.com/flareteam/flare-game.git")
7220 (commit (string-append "v" version))))
7221 (file-name (git-file-name name version))
7222 (sha256
7223 (base32
ffbaefc7 7224 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7225 (build-system cmake-build-system)
7226 (arguments
7227 `(#:tests? #f ;no test
7228 #:configure-flags '("-DDATADIR=share/flare")
7229 #:phases
7230 (modify-phases %standard-phases
7231 ;; Flare expects the mods to be located in the same folder.
7232 ;; Yet, "default" mod is in the engine, whereas the others
7233 ;; are in the current package. Merge everything here with
7234 ;; a symlink.
7235 (add-after 'install 'add-default-mod
7236 (lambda* (#:key inputs outputs #:allow-other-keys)
7237 (let* ((out (assoc-ref outputs "out"))
7238 (mods (string-append out "/share/flare/mods")))
7239 (with-directory-excursion mods
7240 (symlink (string-append (assoc-ref inputs "flare-engine")
7241 "/share/flare/mods/default")
7242 "default")))
7243 #t))
7244 (add-after 'install 'install-executable
7245 ;; The package only provides assets for the game, the
7246 ;; executable coming from "flare-engine". Since more than
7247 ;; one game may use the engine, we create a new executable,
7248 ;; "flare-game", which launches the engine with appropriate
7249 ;; parameters.
7250 (lambda* (#:key inputs outputs #:allow-other-keys)
7251 (let* ((out (assoc-ref outputs "out"))
7252 (bash (string-append (assoc-ref inputs "bash")
7253 "/bin/bash"))
7254 (flare (string-append (assoc-ref inputs "flare-engine")
7255 "/bin/flare"))
7256 (script (string-append out "/bin/flare-game")))
7257 (mkdir-p (dirname script))
7258 (call-with-output-file script
7259 (lambda (port)
7260 (format port
7261 "#!~a
7262exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7263 bash
7264 flare
7265 out)))
7266 (chmod script #o755))
7267 #t)))))
7268 (inputs
7269 `(("flare-engine" ,flare-engine)))
7270 (home-page "http://www.flarerpg.org/")
7271 (synopsis "Fantasy action RPG using the FLARE engine")
7272 (description "Flare is a single-player 2D action RPG with
7273fast-paced action and a dark fantasy style.")
7274 (license license:cc-by-sa3.0)))
660e0050
NG
7275
7276(define-public meritous
7277 (package
7278 (name "meritous")
7279 (version "1.5")
7280 (source (origin
7281 (method git-fetch)
7282 (uri (git-reference
7283 (url "https://gitlab.com/meritous/meritous.git")
7284 (commit (string-append "v" version))))
7285 (file-name (git-file-name name version))
7286 (sha256
7287 (base32
7288 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7289 (build-system gnu-build-system)
7290 (arguments
7291 `(#:tests? #f ;no test
7292 #:make-flags
7293 (list "CC=gcc"
7294 (string-append "prefix=" (assoc-ref %outputs "out")))
7295 #:phases
7296 (modify-phases %standard-phases
7297 (delete 'configure)
7298 (add-after 'unpack 'fix-sdl-path
7299 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7300 ;; directory, not SDL-union provided as an input to the package.
7301 ;; We force the latter with "--prefix=" option.
7302 (lambda* (#:key inputs #:allow-other-keys)
7303 (substitute* "Makefile"
7304 (("sdl-config" command)
7305 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7306 #t))
7307 (add-after 'unpack 'fix-crash
7308 ;; XXX: Songs are not present in the repository, due to licensing
7309 ;; issues. Yet, the game tries to load them, and, since it cannot
7310 ;; find them, crashes. Users cannot add them back, the store being
7311 ;; read-only, so we turn off background music altogether.
7312 (lambda _
7313 (substitute* "src/audio.c"
7314 (("PlayBackgroundMusic\\(new_track\\);" all)
7315 (string-append "// " all)))
7316 #t)))))
7317 (native-inputs
7318 `(("intltool" ,intltool)))
7319 (inputs
7320 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7321 ("zlib" ,zlib)))
7322 (home-page "https://gitlab.com/meritous/meritous")
7323 (synopsis "Action-adventure dungeon crawl game")
7324 (description "Far below the surface of the planet is a place of limitless
7325power. Those that seek to control such a utopia will soon bring an end to
7326themselves. Seeking an end to the troubles that plague him, PSI user Merit
7327journeys into the hallowed Orcus Dome in search of answers.
7328
7329Meritous is a action-adventure game with simple controls but a challenge to
7330find a balance of power versus recovery time during real-time battles. Set in
7331a procedurally generated world, the player can explore thousands of rooms in
7332search of powerful artifacts, tools to help them, and to eventually free the
7333Orcus Dome from evil.")
7334 (license license:gpl3+)))
472af999
RW
7335
7336(define-public marble-marcher
7337 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7338 (revision "1"))
7339 (package
7340 (name "marble-marcher")
7341 (version (git-version "0" revision commit))
7342 (source (origin
7343 (method git-fetch)
7344 (uri (git-reference
7345 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7346 (commit commit)))
7347 (file-name (git-file-name name version))
7348 (sha256
7349 (base32
7350 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7351 (build-system cmake-build-system)
7352 (arguments
7353 `(#:tests? #f ; there are none
7354 #:phases
7355 (modify-phases %standard-phases
7356 (add-after 'unpack 'embed-asset-directory
7357 (lambda* (#:key outputs #:allow-other-keys)
7358 (let ((assets (string-append (assoc-ref outputs "out")
7359 "/share/marble-marcher/assets/")))
7360 ;; Some of the files we're patching are
7361 ;; ISO-8859-1-encoded, so choose it as the default
7362 ;; encoding so the byte encoding is preserved.
7363 (with-fluids ((%default-port-encoding #f))
7364 (substitute* "src/Resource.rc"
7365 (("../assets/icon.ico")
7366 (string-append assets "icon.ico")))
7367 (substitute* "src/Res.h"
7368 (("assets/") assets))))
7369 #t))
7370 (replace 'install
7371 (lambda* (#:key outputs #:allow-other-keys)
7372 (let* ((out (assoc-ref outputs "out"))
7373 (assets (string-append out "/share/marble-marcher/assets"))
7374 (bin (string-append out "/bin/")))
7375 (mkdir-p bin)
7376 (mkdir-p assets)
7377 (copy-recursively "../source/assets" assets)
7378 (install-file "MarbleMarcher" bin))
7379 #t)))))
7380 (inputs
7381 `(("eigen" ,eigen)
7382 ("mesa" ,mesa)
7383 ("sfml" ,sfml)))
7384 (native-inputs
7385 `(("pkg-config" ,pkg-config)))
7386 (home-page "https://codeparade.itch.io/marblemarcher")
7387 (synopsis "Guide a marble across fractal landscapes")
7388 (description "Marble Marcher is a video game that uses a fractal physics
7389engine and fully procedural rendering to produce beautiful and unique
7390gameplay. The game is played on the surface of evolving fractals. The goal
7391of the game is to get your marble to the flag as quickly as possible. But be
7392careful not to fall off the level or get crushed by the fractal! There are 24
7393levels to unlock.")
7394 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7395 (license (list license:gpl2+
7396 license:silofl1.1
7397 license:cc-by-sa3.0)))))
20185e4f 7398
a84510f9 7399;; This must be updated together with flightgear.
20185e4f
RW
7400(define simgear
7401 (package
7402 (name "simgear")
7403 (version "2018.3.2")
7404 (source (origin
7405 (method url-fetch)
7406 (uri (string-append "mirror://sourceforge/flightgear/release-"
7407 (version-major+minor version) "/"
7408 "simgear-" version ".tar.bz2"))
7409 (sha256
7410 (base32
7411 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7412 (build-system cmake-build-system)
7413 (arguments
7414 `(#:phases
7415 (modify-phases %standard-phases
7416 (replace 'check
7417 (lambda _
7418 ;; Skip tests that require internet access.
7419 (invoke "ctest" "-E" "(http|dns)"))))))
7420 (inputs
7421 `(("boost" ,boost-for-mysql) ; fails with 1.69
7422 ("curl" ,curl)
7423 ("expat" ,expat)
7424 ("mesa" ,mesa)
7425 ("openal" ,openal)
7426 ("openscenegraph" ,openscenegraph-3.4)
7427 ("zlib" ,zlib)))
7428 (home-page "https://home.flightgear.org/")
7429 (synopsis "Libraries for 3D simulations and games")
7430 (description "SimGear is a set of libraries designed to be used as
7431building blocks for quickly assembling 3D simulations, games, and
7432visualization applications. SimGear is developed by the FlightGear project
7433and also provides the base for the FlightGear Flight Simulator.")
7434 (license license:lgpl2.0+)))
a84510f9
RW
7435
7436(define-public flightgear
7437 (package
7438 (name "flightgear")
7439 (version (package-version simgear))
7440 (source (origin
7441 (method url-fetch)
7442 (uri (string-append "mirror://sourceforge/flightgear/release-"
7443 (version-major+minor version) "/"
7444 "flightgear-" version ".tar.bz2"))
7445 (sha256
7446 (base32
7447 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7448 (modules '((guix build utils)))
7449 (snippet
7450 '(begin
7451 ;; There are some bundled libraries.
7452 (for-each delete-file-recursively
7453 '("3rdparty/sqlite3/"))
7454 #t))))
7455 (build-system cmake-build-system)
7456 (arguments
7457 `(#:configure-flags
7458 (list "-DSYSTEM_SQLITE=ON"
7459 (string-append "-DFG_DATA_DIR="
7460 (assoc-ref %outputs "out")
7461 "/share/flightgear"))
7462 ;; TODO: test cannot be run because the "run_test_suite" executable
7463 ;; does not seem to be built.
7464 #:tests? #f
7465 #:phases
7466 (modify-phases %standard-phases
7467 (add-after 'install 'wrap-executable
7468 (lambda* (#:key inputs outputs #:allow-other-keys)
7469 (let ((out (assoc-ref outputs "out")))
7470 (wrap-program (string-append out "/bin/fgfs")
7471 `("QT_PLUGIN_PATH" ":" prefix
7472 ,(map (lambda (label)
7473 (string-append (assoc-ref inputs label)
7474 "/lib/qt5/plugins"))
7475 '("qtbase" "qtdeclarative" "qtsvg")))
7476 `("QML2_IMPORT_PATH" ":" prefix
7477 ,(map (lambda (label)
7478 (string-append (assoc-ref inputs label)
7479 "/lib/qt5/qml"))
7480 '("qtdeclarative" "qtsvg"))))
7481 #t)))
7482 (add-after 'install 'install-data
7483 (lambda* (#:key inputs outputs #:allow-other-keys)
7484 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7485 (mkdir-p share)
7486 (with-directory-excursion share
7487 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7488 "--strip-components=1")))
7489 #t)))))
7490 (inputs
7491 `(("boost" ,boost-for-mysql) ; same as simgear
7492 ("dbus" ,dbus)
7493 ("eudev" ,eudev)
7494 ("freeglut" ,freeglut)
7495 ("freetype" ,freetype)
7496 ("glew" ,glew)
7497 ("libpng" ,libpng)
7498 ("openal" ,openal)
7499 ("openscenegraph" ,openscenegraph-3.4)
7500 ("plib" ,plib)
7501 ("qtbase" ,qtbase)
7502 ("qtdeclarative" ,qtdeclarative)
7503 ("qtsvg" ,qtsvg)
7504 ("simgear" ,simgear)
7505 ("speexdsp" ,speexdsp)
7506 ("sqlite" ,sqlite)
7507 ("zlib" ,zlib)))
7508 (native-inputs
7509 `(("cppunit" ,cppunit)
7510 ("pkg-config" ,pkg-config)
7511 ("qttools" ,qttools)
7512 ("flightgear-data"
7513 ,(origin
7514 (method url-fetch)
7515 (uri (string-append "mirror://sourceforge/flightgear/release-"
7516 (version-major+minor version) "/"
7517 "FlightGear-" version "-data.tar.bz2"))
7518 (sha256
7519 (base32
7520 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7521 (home-page "https://home.flightgear.org/")
7522 (synopsis "Flight simulator")
7523 (description "The goal of the FlightGear project is to create a
7524sophisticated flight simulator framework for use in research or academic
7525environments, pilot training, as an industry engineering tool, for DIY-ers to
7526pursue their favorite interesting flight simulation idea, and last but
7527certainly not least as a fun, realistic, and challenging desktop flight
7528simulator.")
7529 (license license:gpl2+)))
e8a0696d
NG
7530
7531(define-public jumpnbump
7532 (package
7533 (name "jumpnbump")
60d2aaa5 7534 (version "1.61")
e8a0696d
NG
7535 (source (origin
7536 (method git-fetch)
7537 (uri (git-reference
7538 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7539 (commit version)))
7540 (file-name (git-file-name name version))
7541 (sha256
7542 (base32
60d2aaa5 7543 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7544 (build-system gnu-build-system)
7545 (arguments
7546 `(#:make-flags
7547 (list "CC=gcc"
7548 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7549 #:tests? #f ;no test
7550 #:phases
7551 (modify-phases %standard-phases
7552 (delete 'configure) ;no configure script
7553 (add-after 'unpack 'fix-sdl-path
7554 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7555 ;; directory, not SDL-union provided as an input to the package.
7556 ;; We force the latter with "--prefix=" option.
7557 (lambda* (#:key inputs #:allow-other-keys)
7558 (substitute* "Makefile"
7559 (("sdl2-config" command)
7560 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7561 #t)))))
7562 (inputs
7563 `(("bzip2" ,bzip2)
7564 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7565 ("zlib" ,zlib)))
7566 (native-inputs
7567 `(("gettext" ,gettext-minimal))) ;for msgfmt
7568 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7569 (synopsis "Multiplayer platform game with bunnies")
7570 (description "You, as a bunny, have to jump on your opponents to make them
7571explode. It is a true multiplayer game; you cannot play this alone. You can
7572play with up to four players simultaneously. It has network support.")
7573 (license license:gpl2+)))
a3d4a631
NG
7574
7575(define-public hedgewars
7576 (package
7577 (name "hedgewars")
ea042113 7578 (version "1.0.0")
a3d4a631
NG
7579 (source (origin
7580 (method url-fetch)
7581 (uri (string-append "https://www.hedgewars.org/download/releases/"
7582 "hedgewars-src-" version ".tar.bz2"))
7583 (sha256
7584 (base32
ea042113 7585 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7586 (build-system cmake-build-system)
7587 (arguments
7588 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7589 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7590 ;; a Pascal to C translator and Clang instead.
7591 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7592 #:phases
7593 (modify-phases %standard-phases
a3d4a631 7594 (replace 'check
ea042113 7595 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7596 (inputs
7597 `(("ffmpeg" ,ffmpeg)
7598 ("freeglut" ,freeglut)
7599 ("ghc-entropy" ,ghc-entropy)
7600 ("ghc-hslogger" ,ghc-hslogger)
7601 ("ghc-network" ,ghc-network)
7602 ("ghc-random" ,ghc-random)
7603 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7604 ("ghc-sandi" ,ghc-sandi)
7605 ("ghc-sha" ,ghc-sha)
7606 ("ghc-utf8-string" ,ghc-utf8-string)
7607 ("ghc-vector" ,ghc-vector)
7608 ("ghc-zlib" ,ghc-zlib)
7609 ("glew" ,glew)
7610 ("libpng" ,libpng)
7611 ("lua" ,lua-5.1)
7612 ("physfs" ,physfs)
7613 ("qtbase" ,qtbase)
7614 ("sdl" ,(sdl-union
7615 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7616 (native-inputs
7617 `(("clang" ,clang)
7618 ("ghc" ,ghc)
7619 ("pkg-config" ,pkg-config)
7620 ("qttools" ,qttools)))
7621 (home-page "https://hedgewars.org/")
7622 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7623 (description
7624 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7625featuring the antics of pink hedgehogs with attitude as they battle from the
7626depths of hell to the depths of space.
7627
7628As commander, it's your job to assemble your crack team of hedgehog soldiers
7629and bring the war to your enemy.")
7630 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7631 ;; scripts are distributed under various terms.
7632 (license (list license:gpl2
7633 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7634 license:expat license:fdl1.3+ license:public-domain
7635 license:zlib))))
1bba3e8c
JL
7636
7637(define-public harmonist
7638 (package
7639 (name "harmonist")
9f5cb517 7640 (version "0.3.0")
1bba3e8c
JL
7641 (source (origin
7642 (method git-fetch)
7643 (uri (git-reference
7644 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7645 (commit (string-append "v" version))))
7646 (file-name (git-file-name name version))
7647 (sha256
7648 (base32
9f5cb517 7649 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
7650 (build-system go-build-system)
7651 (arguments
7652 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7653 (inputs
7654 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7655 (home-page "https://harmonist.tuxfamily.org/")
7656 (synopsis "Stealth coffee-break roguelike game")
7657 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7658coffee-break roguelike game. The game has a heavy focus on tactical
7659positioning, light and noise mechanisms, making use of various terrain types
7660and cones of view for monsters. Aiming for a replayable streamlined experience,
7661the game avoids complex inventory management and character building, relying
7662on items and player adaptability for character progression.")
7663 (license license:isc)))
e93352d6 7664
453365bc
JL
7665(define-public harmonist-tk
7666 (package
7667 (inherit harmonist)
7668 (name "harmonist-tk")
7669 (arguments
7670 (append
7671 (package-arguments harmonist)
7672 `(#:phases
7673 (modify-phases %standard-phases
7674 (replace 'build
7675 (lambda _
7676 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7677 "git.tuxfamily.org/harmonist/harmonist")))
7678 (replace 'check
7679 (lambda _
7680 (invoke "go" "test" "--tags" "tk"
7681 "git.tuxfamily.org/harmonist/harmonist")))))))
7682 (inputs
7683 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7684
e93352d6
NG
7685(define-public drascula
7686 (package
7687 (name "drascula")
7688 (version "1.0")
7689 (source (origin
7690 (method url-fetch)
7691 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7692 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7693 "drascula-" version ".zip"))
7694 (sha256
7695 (base32
7696 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7697 (build-system trivial-build-system)
7698 (arguments
7699 `(#:modules ((guix build utils))
7700 #:builder
7701 (begin
7702 (use-modules (guix build utils)
7703 (ice-9 match))
7704 (let* ((out (assoc-ref %outputs "out"))
7705 (share (string-append out "/share/drascula"))
7706 (scummvm (assoc-ref %build-inputs "scummvm")))
7707 ;; Install data.
7708 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7709 "/bin/unzip"))
7710 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7711 (for-each
7712 (lambda (input)
7713 (invoke unzip
7714 "-j"
7715 (assoc-ref %build-inputs input)
7716 "-x" "__MACOSX")
7717 ;; Every input provides "readme.txt", and we want to
7718 ;; preserve them all. Therefore we rename them first.
7719 (match input
7720 ("drascula-int"
7721 (rename-file "readme.txt" "readme-international.txt"))
7722 ("drascula-audio"
7723 (rename-file "readme.txt" "readme-audio.txt"))
7724 (_ #f))
7725 ;; Install documentation.
7726 (for-each (lambda (f) (install-file f doc))
7727 (find-files "." "\\.(txt|doc)$"))
7728 ;; Install data.
7729 (for-each (lambda (f) (install-file f share))
7730 (find-files "." "\\.(ogg|00[0-9])$")))
7731 '("drascula-audio" "drascula-int" "source")))
7732 ;; Create standalone executable.
7733 (let* ((bin (string-append out "/bin"))
7734 (executable (string-append bin "/drascula"))
7735 (bash (string-append (assoc-ref %build-inputs "bash")
7736 "/bin/bash")))
7737 (mkdir-p bin)
7738 (with-output-to-file executable
7739 (lambda ()
7740 (format #t "#!~a~%" bash)
7741 (format #t
7742 "exec ~a/bin/scummvm --path=~a drascula~%"
7743 scummvm share)))
7744 (chmod executable #o755))
7745 ;; Create desktop file. There is no dedicated icon for the
7746 ;; game, so we borrow SCUMMVM's.
7747 (let ((apps (string-append out "/share/applications")))
7748 (mkdir-p apps)
7749 (with-output-to-file (string-append apps "/drascula.desktop")
7750 (lambda _
7751 (format #t
7752 "[Desktop Entry]~@
7753 Name=Drascula: The Vampire Strikes Back~@
7754 GenericName=Drascula~@
7755 Exec=~a/bin/drascula~@
7756 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7757 Categories=AdventureGame;Game;RolePlaying;~@
7758 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7759 Comment=Classic 2D point and click adventure game~@
7760 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7761 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7762 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7763 Type=Application~%"
7764 out scummvm))))
7765 #t))))
7766 (native-inputs
7767 `(("bash" ,bash)
7768 ("unzip" ,unzip)))
7769 (inputs
7770 `(("scummvm" ,scummvm)
7771 ("drascula-int"
7772 ,(let ((version "1.1"))
7773 (origin
7774 (method url-fetch)
7775 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7776 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7777 "drascula-int-" version ".zip"))
7778 (sha256
7779 (base32
7780 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7781 ("drascula-audio"
7782 ,(let ((version "2.0"))
7783 (origin
7784 (method url-fetch)
7785 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7786 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7787 "drascula-audio-" version ".zip"))
7788 (sha256
7789 (base32
7790 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7791 (home-page "https://www.scummvm.org")
7792 (synopsis "Classic 2D point and click adventure game")
7793 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7794point and click adventure game.
7795
7796In Drascula you play the role of John Hacker, a British estate agent, that
7797gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7798Count Drascula and embark on a fun yet dangerous quest to rescue her.
7799Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7800the World and demonstrating that he is even more evil than his brother Vlad.")
7801 ;; Drascula uses a BSD-like license.
7802 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 7803
e7db97db
NG
7804(define (make-lure-package name language hash)
7805 (package
7806 (name name)
7807 (version "1.1")
7808 (source
7809 (origin
7810 (method url-fetch)
7811 (uri (string-append
7812 "mirror://sourceforge/scummvm/extras/"
7813 "Lure%20of%20the%20Temptress/"
7814 name "-" version ".zip"))
7815 (sha256
7816 (base32 hash))))
7817 (build-system trivial-build-system)
7818 (arguments
7819 `(#:modules ((guix build utils))
7820 #:builder
7821 (begin
7822 (use-modules (guix build utils))
7823 (let* ((out (assoc-ref %outputs "out"))
7824 (share (string-append out "/share"))
eca528cc 7825 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
7826 (apps (string-append share "/applications"))
7827 (bin (string-append out "/bin"))
7828 (executable (string-append bin "/" ,name))
7829 (scummvm (assoc-ref %build-inputs "scummvm")))
7830 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7831 "/bin/unzip")))
7832 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 7833 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
7834 (for-each (lambda (f) (install-file f doc))
7835 (find-files "." "\\.(txt|PDF|pdf)$")))
7836 (for-each (lambda (f) (install-file f data))
7837 (find-files "." "\\.(vga|VGA)$"))
7838 ;; Build the executable.
7839 (mkdir-p bin)
7840 (let ((bash (assoc-ref %build-inputs "bash")))
7841 (with-output-to-file executable
7842 (lambda ()
7843 (format #t "#!~a/bin/bash~%" bash)
7844 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7845 scummvm ,language data))))
7846 (chmod executable #o755)
7847 ;; Create desktop file. There is no dedicated
7848 ;; icon for the game, so we borrow SCUMMVM's.
7849 (mkdir-p apps)
7850 (with-output-to-file (string-append apps "/" ,name ".desktop")
7851 (lambda _
7852 (format #t
7853 "[Desktop Entry]~@
7854 Name=Lure of the Temptress~@
7855 GenericName=Lure~@
7856 Exec=~a~@
7857 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7858 Categories=AdventureGame;Game;RolePlaying;~@
7859 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7860 Comment=Classic 2D point and click adventure game~@
7861 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7862 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7863 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7864 Type=Application~%"
7865 executable scummvm)))
7866 #t))))
7867 (native-inputs
eca528cc 7868 `(("unzip" ,unzip)))
e7db97db 7869 (inputs
eca528cc
NG
7870 `(("bash" ,bash)
7871 ("scummvm" ,scummvm)))
e7db97db
NG
7872 (home-page "https://www.scummvm.org")
7873 (synopsis "2D point and click fantasy adventure game")
7874 (description
7875 "Lure of the Temptress is a classic 2D point and click adventure game.
7876
7877You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7878intents and purposes, a good man. After decades of unrest the King has united
7879the warring factions in his kingdom and all his lands are at peace, except
7880a remote region around a town called Turnvale. A revolt has recently taken
7881place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7882Selena, the titular temptress. The king calls together his finest horsemen
7883and heads off (with you in tow) to Turnvale just to witness how hellish
7884mercenary monsters called Skorl are invading the town.
7885
7886The king's men are defeated, the king is killed and you fall of your horse and
7887bang your head heavily on the ground. You have been *unconscious for a while
7888when you realize that you are in a dingy cell guarded by a not so friendly
7889Skorl. Maybe it would be an idea to try and escape...")
7890 (license (license:non-copyleft "file:///README"))))
7891
7892(define-public lure
7893 (make-lure-package
7894 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7895
7896(define-public lure-de
7897 (make-lure-package
7898 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7899
7900(define-public lure-es
7901 (make-lure-package
7902 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7903
7904(define-public lure-fr
7905 (make-lure-package
7906 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7907
7908(define-public lure-it
7909 (make-lure-package
7910 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7911
35cb2ac5
NG
7912(define (make-queen-package name file-prefix release language hash)
7913 (package
7914 (name name)
7915 (version release)
7916 (source
7917 (origin
7918 (method url-fetch)
7919 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7920 "Flight%20of%20the%20Amazon%20Queen/"
7921 file-prefix release ".zip"))
7922 (sha256
7923 (base32 hash))))
7924 (build-system trivial-build-system)
7925 (arguments
7926 `(#:modules ((guix build utils))
7927 #:builder
7928 (begin
7929 (use-modules (guix build utils))
7930 (let* ((out (assoc-ref %outputs "out"))
7931 (share (string-append out "/share"))
7932 (data (string-append share "/" ,name))
7933 (apps (string-append share "/applications"))
7934 (bin (string-append out "/bin"))
7935 (executable (string-append bin "/" ,name))
7936 (scummvm (assoc-ref %build-inputs "scummvm")))
7937 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7938 "/bin/unzip")))
7939 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7940 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7941 (install-file "readme.txt" doc))
7942 (install-file "queen.1c" data)
7943 (mkdir-p bin)
7944 (let ((bash (assoc-ref %build-inputs "bash")))
7945 (with-output-to-file executable
7946 (lambda ()
7947 (format #t "#!~a/bin/bash~%" bash)
7948 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7949 scummvm data))))
7950 (chmod executable #o755)
7951 ;; Create desktop file. There is no dedicated
7952 ;; icon for the game, so we borrow SCUMMVM's.
7953 (mkdir-p apps)
7954 (with-output-to-file (string-append apps "/" ,name ".desktop")
7955 (lambda _
7956 (format #t
7957 "[Desktop Entry]~@
7958 Name=Flight of the Amazon Queen~@
7959 GenericName=Queen~@
7960 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~@
7961 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~@
7962 Type=Application~@
7963 Exec=~a~@
7964 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7965 Categories=AdventureGame;Game;RolePlaying;~@
7966 Keywords=adventure;game;roleplaying;fantasy;~%"
7967 executable scummvm))))
7968 #t)))
7969 (native-inputs
7970 `(("unzip" ,unzip)))
7971 (inputs
7972 `(("bash" ,bash)
7973 ("scummvm" ,scummvm)))
7974 (home-page "https://www.scummvm.org/")
7975 (synopsis "Classic 2D point and click adventure game")
7976 (description "Flight of the Amazon Queen is a 2D point-and-click
7977adventure game set in the 1940s.
7978
7979You assume the role of Joe King, a pilot for hire who is given the job
7980of flying Faye Russell (a famous movie star) into the Amazon jungle
7981for a photo shoot. Of course, things never go according to plans.
7982After an unfortunate turn of events they find themselves stranded in
7983the heart of the Amazon jungle, where Joe will embark on a quest to
7984rescue a kidnapped princess and in the process, discover the true
7985sinister intentions of a suspiciously located Lederhosen company. In
7986a rich 2D environment, Joe will cross paths with a variety of unlikely
7987jungle inhabitants including, but not limited to, a tribe of Amazon
7988women and 6-foot-tall pygmies.")
7989 (license (license:non-copyleft "file:///readme.txt"))))
7990
7991(define-public queen
7992 (make-queen-package
7993 "queen" "FOTAQ_Talkie-" "1.1" "en"
7994 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7995
7996(define-public queen-de
7997 (make-queen-package
7998 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7999 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
8000
8001(define-public queen-fr
8002 (make-queen-package
8003 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8004 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8005
8006(define-public queen-it
8007 (make-queen-package
8008 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8009 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8010
403d9fae
NG
8011(define-public sky
8012 (package
8013 (name "sky")
8014 (version "1.2") ;1.3 is floppy version
8015 (source
8016 (origin
8017 (method url-fetch)
8018 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8019 "Beneath%20a%20Steel%20Sky/"
8020 "bass-cd-" version ".zip"))
8021 (sha256
8022 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8023 (build-system trivial-build-system)
8024 (arguments
8025 `(#:modules ((guix build utils))
8026 #:builder
8027 (begin
8028 (use-modules (guix build utils))
8029 (let* ((out (assoc-ref %outputs "out"))
8030 (share (string-append out "/share"))
8031 (data (string-append share "/" ,name))
8032 (apps (string-append share "/applications"))
8033 (bin (string-append out "/bin"))
8034 (executable (string-append bin "/" ,name))
8035 (scummvm (assoc-ref %build-inputs "scummvm")))
8036 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8037 "/bin/unzip")))
8038 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8039 (let ((doc (string-append share "/doc/bass-" ,version)))
8040 (install-file "readme.txt" doc))
8041 (for-each (lambda (f) (install-file f data))
8042 (find-files "." "^sky\\."))
8043 ;; Build the executable.
8044 (mkdir-p bin)
8045 (let ((bash (assoc-ref %build-inputs "bash")))
8046 (with-output-to-file executable
8047 (lambda ()
8048 (format #t "#!~a/bin/bash~%" bash)
8049 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8050 (chmod executable #o755)
8051 ;; Create desktop file. There is no dedicated
8052 ;; icon for the game, so we borrow SCUMMVM's.
8053 (mkdir-p apps)
8054 (with-output-to-file (string-append apps "/" ,name ".desktop")
8055 (lambda _
8056 (format #t
8057 "[Desktop Entry]~@
8058 Name=Beneath a Steel Sky~@
8059 GenericName=Bass~@
8060 Exec=~a~@
8061 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8062 Categories=AdventureGame;Game;RolePlaying;~@
8063 Keywords=adventure;game;roleplaying;cyberpunk;~@
8064 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8065 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8066angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8067 Type=Application~%"
8068 executable scummvm)))
8069 #t))))
8070 (native-inputs
8071 `(("unzip" ,unzip)))
8072 (inputs
8073 `(("bash" ,bash)
8074 ("scummvm" ,scummvm)))
8075 (home-page "https://www.scummvm.org/")
8076 (synopsis "Classic 2D point an click science-fiction adventure game")
8077 (description
8078 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8079post-apocalyptic vision of the future. It revolves around Union City,
8080where selfishness, rivalry, and corruption by its citizens seems to be
8081all too common, those who can afford it live underground, away from
8082the pollution and social problems which are plaguing the city.
8083
8084You take on the role of Robert Foster, an outcast of sorts from the
8085city since a boy who was raised in a remote environment outside of
8086Union City simply termed ``the gap''. Robert's mother took him away
8087from Union City as a child on their way to ``Hobart'' but the
8088helicopter crashed on its way. Unfortunately, Robert's mother died,
8089but he survived and was left to be raised by a local tribe from the
8090gap.
8091
8092Years later, Union City security drops by and abducts Robert, killing
8093his tribe in the process; upon reaching the city the helicopter taking
8094him there crashes with him escaping, high upon a tower block in the
8095middle of the city. He sets out to discover the truth about his past,
8096and to seek vengeance for the killing of his tribe.")
8097 (license (license:non-copyleft "file:///readme.txt"))))
8098
08c2fb8f
JG
8099(define-public gnurobots
8100 (package
8101 (name "gnurobots")
8102 (version "1.2.0")
8103 (source
8104 (origin
8105 (method url-fetch)
8106 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8107 version ".tar.gz"))
8108 (sha256
8109 (base32
8110 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8111 (build-system gnu-build-system)
8112 (inputs
8113 `(("glib" ,glib)
8114 ("gtk+" ,gtk+-2)
8115 ("vte" ,vte/gtk+-2)
8116 ("readline" ,readline)
8117 ("guile" ,guile-1.8)))
8118 (native-inputs
8119 `(("pkg-config" ,pkg-config)))
8120 (arguments
8121 `(#:make-flags
8122 (list
8123 ;; Do not abort build on "deprecated-declarations" warnings.
8124 "CFLAGS=-Wno-error=deprecated-declarations"
8125 ;; Find readline headers in sub-directory.
8126 (string-append "READLINE_CFLAGS=-I"
8127 (assoc-ref %build-inputs "readline")
8128 "/include/readline/"))
8129 #:phases
8130 (modify-phases %standard-phases
8131 (add-after 'install 'install-doc
8132 (lambda* (#:key outputs #:allow-other-keys)
8133 (install-file "doc/Robots-HOWTO"
8134 (string-append (assoc-ref outputs "out")
8135 "/share/doc/gnurobots-"
8136 ,version))
8137 #t)))))
8138 (home-page "https://www.gnu.org/software/gnurobots/")
8139 (synopsis "Program a little robot and watch it explore a world")
8140 (description
8141 "GNU Robots is a game in which you program a robot to explore a world
8142full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8143the game is to stay alive and collect prizes. The robot program conveniently
8144may be written in a plain text file in the Scheme programming language.")
8145 (license license:gpl3+)))
3745909d
NG
8146
8147(define-public ri-li
8148 (package
8149 (name "ri-li")
8150 (version "2.0.1")
8151 (source (origin
8152 (method url-fetch)
8153 (uri (string-append "mirror://sourceforge/ri-li/"
8154 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8155 "Ri-li-" version ".tar.bz2"))
8156 (sha256
8157 (base32
8158 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8159 ;; Taken from
8160 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8161 ;; It doesn't build otherwise.
8162 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8163 (build-system gnu-build-system)
8164 (arguments
8165 `(#:phases
8166 (modify-phases %standard-phases
8167 ;; Remove "gentoo" subdirectory from Makefile, as it is
8168 ;; missing a make file and generates a build failure.
8169 (add-after 'configure 'fix-build
8170 (lambda _
8171 (substitute* "Makefile"
8172 ((" gentoo") ""))
8173 #t))
8174 (add-after 'install 'install-desktop-file
8175 (lambda* (#:key outputs #:allow-other-keys)
8176 (let* ((out (assoc-ref outputs "out"))
8177 (apps (string-append out "/share/applications"))
8178 (pixmaps (string-append out "/share/pixmaps")))
8179 (for-each (lambda (f) (install-file f pixmaps))
8180 (find-files "data" "\\.(png|ico)$"))
8181 (mkdir-p apps)
8182 (with-output-to-file (string-append apps "/ri-li.desktop")
8183 (lambda _
8184 (format #t
8185 "[Desktop Entry]~@
8186 Name=Ri-li~@
8187 Exec=~a/bin/Ri_li~@
8188 Icon=~a/Ri-li-icon-32x32.png~@
8189 Categories=Game;ArcadeGame;~@
8190 Keywords=toy;train;wooden;snake-like;engine;~@
8191 Comment=a toy simulator game~@
8192 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8193 Comment[fr]=un jeu de petit train~@
8194 Comment[ro_RO]=un joc cu un tren de jucărie~@
8195 Terminal=false~@
8196 Type=Application~%"
8197 out pixmaps))))
8198 #t))
8199 (add-after 'install-desktop-file 'remove-spurious-files
8200 ;; Delete redundant files already installed somewhere else.
8201 (lambda* (#:key outputs #:allow-other-keys)
8202 (let ((out (assoc-ref outputs "out")))
8203 (for-each delete-file
8204 (find-files (string-append out "/share/Ri-li")
8205 "\\.(png|ico)|COPYING"))
8206 #t))))))
8207 (inputs
8208 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8209 (home-page "http://www.ri-li.org")
8210 (synopsis "Toy train simulation game")
8211 (description "Ri-li is a game in which you drive a wooden toy
8212steam locomotive across many levels and collect all the coaches to
8213win.")
8214 ;; The project is dual-licensed GPL2+ and GPL3+.
8215 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
8216
8217(define-public freeorion
8218 (package
8219 (name "freeorion")
f6fdbb05 8220 (version "0.4.9")
562a2a40
JG
8221 (source
8222 (origin
f6fdbb05
TGR
8223 (method url-fetch)
8224 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8225 "download/v" version "/FreeOrion_v" version
8226 "_2020-02-02.db53471_Source.tar.gz"))
562a2a40 8227 (sha256
f6fdbb05 8228 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
562a2a40
JG
8229 (modules '((guix build utils)))
8230 (snippet
8231 '(begin
8232 ;; There are some bundled fonts.
8233 (for-each delete-file-recursively '("default/data/fonts"))
8234 #t))))
8235 (build-system cmake-build-system)
8236 (arguments
8237 '(#:tests? #f ;no test
8238 #:phases
8239 (modify-phases %standard-phases
8240 (add-after 'unpack 'unbundle-fonts
8241 (lambda* (#:key inputs #:allow-other-keys)
8242 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8243 "/share/fonts/truetype/")))
8244 (substitute* "UI/ClientUI.cpp"
7658904a 8245 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 8246 all type)
7658904a 8247 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
8248 #t))))))
8249 (inputs
8250 `(("boost" ,boost)
8251 ("boost_signals" ,boost-signals2)
8252 ("font-dejavu" ,font-dejavu)
8253 ("font-roboto" ,font-google-roboto)
8254 ("freetype2" ,freetype)
8255 ("glew" ,glew)
8256 ("glu" ,glu)
8257 ("libogg" ,libogg)
8258 ("libpng" ,libpng)
8259 ("libvorbis" ,libvorbis)
8260 ("openal" ,openal)
8261 ("python2" ,python-2.7)
8262 ("sdl2" ,sdl2)
8263 ("zlib" ,zlib)))
8264 (home-page "https://www.freeorion.org/index.php/Main_Page")
8265 (synopsis "Turn-based space empire and galactic conquest computer game")
8266 (description
8267 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8268computer game being designed and built by the FreeOrion project. Control an
8269empire with the goal of exploring the galaxy, expanding your territory,
8270exploiting the resources, and exterminating rival alien empires. FreeOrion is
8271inspired by the tradition of the Master of Orion games, but is not a clone or
8272remake of that series or any other game.")
8273 ;; Source code is released under gpl2. Artwork, music and sounds, and
8274 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8275 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8276 ;; released under lgpl2.1+.
8277 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
8278
8279(define-public leela-zero
8280 (package
8281 (name "leela-zero")
8282 (version "0.17")
8283 (source
8284 (origin
8285 (method git-fetch)
8286 (uri (git-reference
8287 (url "https://github.com/leela-zero/leela-zero.git")
8288 (commit (string-append "v" version))))
8289 (file-name (git-file-name name version))
8290 (sha256
8291 (base32
8292 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8293 (patches (search-patches "leela-zero-gtest.patch"))))
8294 (build-system cmake-build-system)
8295 (native-inputs
8296 `(("googletest" ,googletest)))
8297 (inputs
8298 `(("boost" ,boost)
8299 ("ocl-icd" ,ocl-icd)
8300 ("openblas" ,openblas)
8301 ("opencl-headers" ,opencl-headers)
8302 ("qtbase" ,qtbase)
8303 ("zlib" ,zlib)))
8304 (arguments
8305 '(#:configure-flags '("-DUSE_BLAS=YES")
8306 #:phases (modify-phases %standard-phases
8307 (add-before 'configure 'fix-tests
8308 (lambda* (#:key outputs #:allow-other-keys)
8309 (let ((home (getcwd)))
8310 (setenv "HOME" home)
8311 (substitute* "src/tests/gtests.cpp"
8312 (("\\.\\./src/tests/0k\\.txt")
8313 (string-append home "/src/tests/0k.txt"))
8314 (("cfg_gtp_mode = true;")
8315 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8316 #t))
8317 (replace 'check
8318 (lambda _
8319 (invoke "./tests"))))))
8320 (home-page "https://github.com/leela-zero/leela-zero")
8321 (synopsis "Program playing the game of Go")
8322 (description
8323 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8324the AlphaGo Zero paper. The current best network weights file for the engine
8325can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8326 (license license:gpl3+)))
66977719
GLV
8327
8328(define-public q5go
8329 (package
8330 (name "q5go")
8331 (version "1.0")
8332 (source (origin
8333 (method git-fetch)
8334 (uri (git-reference
8335 (url "https://github.com/bernds/q5Go.git")
8336 (commit (string-append "q5go-" version))))
8337 (file-name (git-file-name name version))
8338 (sha256
8339 (base32
8340 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8341 (build-system gnu-build-system)
8342 (native-inputs
8343 `(("pkg-config" ,pkg-config)))
8344 (inputs
8345 `(("qtbase" ,qtbase)
8346 ("qtmultimedia" ,qtmultimedia)
8347 ("qtsvg" ,qtsvg)))
8348 (arguments
8349 '(#:phases
8350 (modify-phases %standard-phases
8351 (add-after 'unpack 'fix-configure-script
8352 (lambda _
8353 ;; Bypass the unavailable qtchooser program.
8354 (substitute* "configure"
8355 (("test -z \"QTCHOOSER\"")
8356 "false")
8357 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8358 command))
8359 #t))
8360 (add-after 'unpack 'fix-paths
8361 (lambda _
8362 (substitute* '("src/pics/Makefile.in"
8363 "src/translations/Makefile.in")
8364 (("\\$\\(datadir\\)/qGo/")
8365 "$(datadir)/q5go/"))
8366 #t))
8367 (add-after 'install 'install-desktop-file
8368 (lambda* (#:key outputs #:allow-other-keys)
8369 (let* ((out (assoc-ref outputs "out"))
8370 (apps (string-append out "/share/applications"))
8371 (pics (string-append out "/share/q5go/pics")))
8372 (delete-file-recursively (string-append out "/share/applnk"))
8373 (delete-file-recursively (string-append out "/share/mimelnk"))
8374 (install-file "../source/src/pics/Bowl.ico" pics)
8375 (mkdir-p apps)
8376 (with-output-to-file (string-append apps "/q5go.desktop")
8377 (lambda _
8378 (format #t
8379 "[Desktop Entry]~@
8380 Name=q5go~@
8381 Exec=~a/bin/q5go~@
8382 Icon=~a/Bowl.ico~@
8383 Categories=Game;~@
8384 Comment=Game of Go~@
8385 Comment[de]=Spiel des Go~@
8386 Comment[eo]=Goo~@
8387 Comment[es]=Juego de Go~@
8388 Comment[fr]=Jeu de Go~@
8389 Comment[ja]=囲碁~@
8390 Comment[ko]=바둑~@
8391 Comment[zh]=围棋~@
8392 Terminal=false~@
8393 Type=Application~%"
8394 out pics))))
8395 #t)))))
8396 (synopsis "Qt GUI to play the game of Go")
8397 (description
8398 "This a tool for Go players which performs the following functions:
8399@itemize
8400@item SGF editor,
8401@item Analysis frontend for Leela Zero (or compatible engines),
8402@item GTP interface (to play against an engine),
8403@item IGS client (to play on the internet),
8404@item Export games to a variety of formats.
8405@end itemize")
8406 (home-page "https://github.com/bernds/q5Go")
8407 (license license:gpl2+)))
3c1c5622
HG
8408
8409(define-public ktuberling
8410 (package
8411 (name "ktuberling")
8412 (version "19.08.3")
8413 (source
8414 (origin
8415 (method url-fetch)
8416 (uri (string-append "mirror://kde/stable/applications/" version
8417 "/src/ktuberling-" version ".tar.xz"))
8418 (sha256
8419 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
8420 (build-system qt-build-system)
8421 (native-inputs
8422 `(("extra-cmake-modules" ,extra-cmake-modules)
8423 ("perl" ,perl)))
8424 (inputs
8425 `(("kcompletion" ,kcompletion)
8426 ("kconfigwidgets" ,kconfigwidgets)
8427 ("kcoreaddons" ,kcoreaddons)
8428 ("kcrash" ,kcrash)
8429 ("kdbusaddons" ,kdbusaddons)
8430 ("kdelibs4support" ,kdelibs4support)
8431 ("ki18n" ,ki18n)
8432 ("kwidgetsaddons" ,kwidgetsaddons)
8433 ("kxmlgui" ,kxmlgui)
8434 ("libkdegames" ,libkdegames)
8435 ("qtbase" ,qtbase)
8436 ("qtmultimedia" ,qtmultimedia)
8437 ("qtdeclarative" ,qtdeclarative)
8438 ("qtsvg" ,qtsvg)))
8439 (home-page "https://games.kde.org/")
8440 (synopsis "Stamp drawing toy")
8441 (description "KTuberling is a drawing toy intended for small children and
8442adults who remain young at heart. The game has no winner; the only purpose is
8443to make the funniest faces you can. Several activites are possible, e.g.:
8444
8445@itemize
8446@item Give the potato a funny face, clothes, and other goodies
8447@item Build a small town, complete with school, zoo, and fire department
8448@item Create a fantastic moonscape with spaceships and aliens
8449@item Top a pizza
8450@end itemize
8451
8452KTuberling can speak the name of each the object in several languages,
8453to assist in learning basic vocabulary.
8454
8455This package is part of the KDE games module.")
8456 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
8457
8458(define-public picmi
8459 (package
8460 (name "picmi")
8461 (version "19.08.3")
8462 (source
8463 (origin
8464 (method url-fetch)
8465 (uri (string-append "mirror://kde/stable/applications/" version
8466 "/src/picmi-" version ".tar.xz"))
8467 (sha256
8468 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
8469 (build-system qt-build-system)
8470 (native-inputs
8471 `(("extra-cmake-modules" ,extra-cmake-modules)
8472 ("kdoctools" ,kdoctools)))
8473 (inputs
8474 `(("kcoreaddons" ,kcoreaddons)
8475 ("kcrash" ,kcrash)
8476 ("kdbusaddons" ,kdbusaddons)
8477 ("kdeclarative" ,kdeclarative)
8478 ("ki18n" ,ki18n)
8479 ("kio" ,kio)
8480 ("knewstuff" ,knewstuff)
8481 ("kxmlgui" ,kxmlgui)
8482 ("libkdegames" ,libkdegames)
8483 ("qtbase" ,qtbase)
8484 ("qtdeclarative" ,qtdeclarative)
8485 ("qtsvg" ,qtsvg)))
8486 (home-page "https://games.kde.org/")
8487 (synopsis "Number logic game")
8488 (description "Picmi is a number logic game in which cells in a grid have
8489to be colored or left blank according to numbers given at the side of the
8490grid. The aim is to reveal a hidden picture.
8491
8492This package is part of the KDE games module.")
8493 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8494
8495(define-public kolf
8496 (package
8497 (name "kolf")
8498 (version "19.08.3")
8499 (source
8500 (origin
8501 (method url-fetch)
8502 (uri (string-append "mirror://kde/stable/applications/" version
8503 "/src/kolf-" version ".tar.xz"))
8504 (sha256
8505 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
8506 (build-system qt-build-system)
8507 (native-inputs
8508 `(("extra-cmake-modules" ,extra-cmake-modules)
8509 ("kdoctools" ,kdoctools)))
8510 (inputs
8511 `(("kcompletion" ,kcompletion)
8512 ("kconfigwidgets" ,kconfigwidgets)
8513 ("kcoreaddons" ,kcoreaddons)
8514 ("kcrash" ,kcrash)
8515 ("kdbusaddons" ,kdbusaddons)
8516 ("ki18n" ,ki18n)
8517 ("kio" ,kio)
8518 ("kwidgetsaddons" ,kwidgetsaddons)
8519 ("kxmlgui" ,kxmlgui)
8520 ("ktextwidgets" ,ktextwidgets)
8521 ("libkdegames" ,libkdegames)
8522 ("qtbase" ,qtbase)
8523 ("qtdeclarative" ,qtdeclarative)))
8524 (home-page "https://games.kde.org/")
8525 (synopsis "Miniature golf game")
8526 (description "Kolf is a miniature golf game for one to ten players. The
8527game is played from an overhead view, with a short bar representing the golf
8528club. Kolf features many different types of objects, such as water hazards,
8529slopes, sand traps, and black holes (warps), among others.
8530
8531Features are:
8532@itemize
8533@item Single and Multi-player (up to ten players) modes
8534@item High scores table
8535@item Dynamic courses
8536@item Third-party courses
8537@item Course editor
8538@end itemize
8539
8540This package is part of the KDE games module.")
8541 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8542
8543(define-public libkmahjongg
8544 (package
8545 (name "libkmahjongg")
8546 (version "19.08.3")
8547 (source
8548 (origin
8549 (method url-fetch)
8550 (uri (string-append "mirror://kde/stable/applications/"
8551 version "/src/libkmahjongg-" version ".tar.xz"))
8552 (sha256
8553 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8554 (build-system qt-build-system)
8555 (native-inputs
8556 `(("extra-cmake-modules" ,extra-cmake-modules)))
8557 (inputs
8558 `(("kauth" ,kauth)
8559 ("kcompletion" ,kcompletion)
8560 ;("kconfig" ,kconfig)
8561 ("kcodecs" ,kcodecs)
8562 ("kconfigwidgets" ,kconfigwidgets)
8563 ("kcoreaddons" ,kcoreaddons)
8564 ("ki18n" ,ki18n)
8565 ("kwidgetsaddons" ,kwidgetsaddons)
8566 ("qtbase" ,qtbase)
8567 ("qtsvg" ,qtsvg)))
8568 (home-page "https://games.kde.org/")
8569 (synopsis "Shared library for kmahjongg and kshisen")
8570 (description "Shared library and common files for kmahjongg, kshisen and
8571other Mah Jongg like games.")
8572 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8573
8574(define-public kmahjongg
8575 (package
8576 (name "kmahjongg")
8577 (version "19.08.3")
8578 (source
8579 (origin
8580 (method url-fetch)
8581 (uri (string-append "mirror://kde/stable/applications/"
8582 version "/src/kmahjongg-" version ".tar.xz"))
8583 (sha256
8584 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
8585 (build-system qt-build-system)
8586 (native-inputs
8587 `(("extra-cmake-modules" ,extra-cmake-modules)
8588 ("kdoctools" ,kdoctools)))
8589 (inputs
8590 `(("kcompletion" ,kcompletion)
8591 ("kcrash" ,kcrash)
8592 ("kdbusaddons" ,kdbusaddons)
8593 ("kdeclarative" ,kdeclarative)
8594 ("ki18n" ,ki18n)
8595 ("knewstuff" ,knewstuff)
8596 ("kxmlgui" ,kxmlgui)
8597 ("libkdegames" ,libkdegames)
8598 ("libkmahjongg" ,libkmahjongg)
8599 ("qtbase" ,qtbase)
8600 ("qtdeclarative" ,qtdeclarative)
8601 ("qtsvg" ,qtsvg)))
8602 (home-page "https://games.kde.org/")
8603 (synopsis "Tile laying patience")
8604 (description "In KMahjongg the tiles are scrambled and staked on top of
8605each other to resemble a certain shape. The player is then expected to remove
8606all the tiles off the game board by locating each tile's matching pair.
8607
8608A variety of tile layouts are included, as well as an editor to create new
8609layouts.
8610
8611This package is part of the KDE games module.")
8612 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8613
8614(define-public kshisen
8615 (package
8616 (name "kshisen")
8617 (version "19.08.3")
8618 (source
8619 (origin
8620 (method url-fetch)
8621 (uri (string-append "mirror://kde/stable/applications/"
8622 version "/src/kshisen-" version ".tar.xz"))
8623 (sha256
8624 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
8625 (build-system qt-build-system)
8626 (native-inputs
8627 `(("extra-cmake-modules" ,extra-cmake-modules)
8628 ;("perl" ,perl)
8629 ;("pkg-config" ,pkg-config)
8630 ("kdoctools" ,kdoctools)))
8631 (inputs
8632 `(("kauth" ,kauth)
8633 ("kcompletion" ,kcompletion)
8634 ("kconfigwidgets" ,kconfigwidgets)
8635 ("kcoreaddons" ,kcoreaddons)
8636 ("kcrash" ,kcrash)
8637 ("kdbusaddons" ,kdbusaddons)
8638 ("ki18n" ,ki18n)
8639 ("kxmlgui" ,kxmlgui)
8640 ("libkdegames" ,libkdegames)
8641 ("libkmahjongg" ,libkmahjongg)
8642 ("qtbase" ,qtbase)
8643 ("qtdeclarative" ,qtdeclarative)))
8644 (home-page "https://games.kde.org/")
8645 (synopsis "Shisen-Sho solitaire game")
8646 (description "KShisen is a solitaire-like game played using the standard
8647set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8648scrambled tiles
8649
8650This package is part of the KDE games module.")
8651 (license license:gpl2+)))
321bd0c3
HG
8652
8653(define-public kajongg
8654 (package
8655 (name "kajongg")
8656 (version "19.08.3")
8657 (source
8658 (origin
8659 (method url-fetch)
8660 (uri (string-append "mirror://kde/stable/applications/"
8661 version "/src/kajongg-" version ".tar.xz"))
8662 (sha256
8663 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
8664 (build-system qt-build-system)
8665 (native-inputs
8666 `(("extra-cmake-modules" ,extra-cmake-modules)
8667 ;("perl" ,perl)
8668 ("kdoctools" ,kdoctools)))
8669 (inputs
8670 `(("kconfig" ,kconfig)
8671 ("kconfigwidgets" ,kconfigwidgets)
8672 ("kcoreaddons" ,kcoreaddons)
8673 ("ki18n" ,ki18n)
8674 ("libkmahjongg" ,libkmahjongg)
8675 ("python" ,python)
8676 ("qtbase" ,qtbase)
8677 ("qtsvg" ,qtsvg)))
8678 (propagated-inputs
8679 `(("python-twisted" ,python-twisted)
8680 ("python-pyqt" ,python-pyqt)))
8681 ;; FIXME: Need to wrap PYTHONPATH
8682 (home-page "https://games.kde.org/")
8683 (synopsis "Classical Mah Jongg game for 4 players")
8684 (description "Kajongg is the ancient Chinese board game for 4 players.
8685
8686If you are looking for the Mah Jongg solitaire please use the application
8687kmahjongg.
8688
8689Kajongg can be used in two different ways: Scoring a manual game where you
8690play as always and use Kajongg for the computation of scores and for
8691bookkeeping. Or you can use Kajongg to play against any combination of other
8692human players or computer players.
8693
8694This package is part of the KDE games module.")
8695 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8696
8697(define-public kbreakout
8698 (package
8699 (name "kbreakout")
8700 (version "19.08.3")
8701 (source
8702 (origin
8703 (method url-fetch)
8704 (uri (string-append "mirror://kde/stable/applications/" version
8705 "/src/kbreakout-" version ".tar.xz"))
8706 (sha256
8707 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
8708 (build-system qt-build-system)
8709 (native-inputs
8710 `(("extra-cmake-modules" ,extra-cmake-modules)
8711 ("kdoctools" ,kdoctools)))
8712 (inputs
8713 `(("kcompletion" ,kcompletion)
8714 ("kconfig" ,kconfig)
8715 ("kconfigwidgets" ,kconfigwidgets)
8716 ("kcoreaddons" ,kcoreaddons)
8717 ("kcrash" ,kcrash)
8718 ("kdbusaddons" ,kdbusaddons)
8719 ("ki18n" ,ki18n)
8720 ("kwidgetsaddons" ,kwidgetsaddons)
8721 ("kxmlgui" ,kxmlgui)
8722 ("libkdegames" ,libkdegames)
8723 ("qtbase" ,qtbase)
8724 ("qtdeclarative" ,qtdeclarative)))
8725 (home-page "https://games.kde.org/")
8726 (synopsis "Breakout like game")
8727 (description "KBreakout is similar to the classics breakout and xboing,
8728featuring a number of added graphical enhancements and effects. You control a
8729paddle at the bottom of the playing-field, and must destroy bricks at the top
8730by bouncing balls against them.
8731
8732This package is part of the KDE games module.")
8733 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8734
8735(define-public kmines
8736 (package
8737 (name "kmines")
8738 (version "19.08.3")
8739 (source
8740 (origin
8741 (method url-fetch)
8742 (uri (string-append "mirror://kde/stable/applications/" version
8743 "/src/kmines-" version ".tar.xz"))
8744 (sha256
8745 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
8746 (build-system qt-build-system)
8747 (native-inputs
8748 `(("extra-cmake-modules" ,extra-cmake-modules)
8749 ("kdoctools" ,kdoctools)))
8750 (inputs
8751 `(("kcompletion" ,kcompletion)
8752 ("kconfig" ,kconfig)
8753 ("kconfigwidgets" ,kconfigwidgets)
8754 ("kcoreaddons" ,kcoreaddons)
8755 ("kcrash" ,kcrash)
8756 ("kdbusaddons" ,kdbusaddons)
8757 ("ki18n" ,ki18n)
8758 ("ktextwidgets" ,ktextwidgets)
8759 ("kwidgetsaddons" ,kwidgetsaddons)
8760 ("kxmlgui" ,kxmlgui)
8761 ("libkdegames" ,libkdegames)
8762 ("qtbase" ,qtbase)
8763 ("qtdeclarative" ,qtdeclarative)))
8764 (home-page "https://games.kde.org/")
8765 (synopsis "Classical mine sweeper game")
8766 (description "KMines is a classic Minesweeper game. The idea is to
8767uncover all the squares without blowing up any mines. When a mine is blown
8768up, the game is over.
8769
8770This package is part of the KDE games module.")
8771 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8772
8773(define-public konquest
8774 (package
8775 (name "konquest")
8776 (version "19.08.3")
8777 (source
8778 (origin
8779 (method url-fetch)
8780 (uri (string-append "mirror://kde/stable/applications/"
8781 version "/src/konquest-" version ".tar.xz"))
8782 (sha256
8783 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
8784 (build-system qt-build-system)
8785 (native-inputs
8786 `(("extra-cmake-modules" ,extra-cmake-modules)
8787 ("kdoctools" ,kdoctools)))
8788 (inputs
8789 `(("kcompletion" ,kcompletion)
8790 ("kconfig" ,kconfig)
8791 ("kcoreaddons" ,kcoreaddons)
8792 ("kcrash" ,kcrash)
8793 ("kdbusaddons" ,kdbusaddons)
8794 ("kguiaddons" ,kguiaddons)
8795 ("ki18n" ,ki18n)
8796 ("kwidgetsaddons" ,kwidgetsaddons)
8797 ("kxmlgui" ,kxmlgui)
8798 ("libkdegames" ,libkdegames)
8799 ("qtbase" ,qtbase)
8800 ("qtdeclarative" ,qtdeclarative)
8801 ("qtsvg" ,qtsvg)))
8802 (home-page "https://games.kde.org/")
8803 (synopsis "Simple turn-based strategy game")
8804 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8805conquer other planets by sending ships to them. The goal is to build an
8806interstellar empire and ultimately conquer all other player's planets. The
8807game can be played with up to nine empires, commanded either by the computer
8808or by puny earthlings.
8809
8810This package is part of the KDE games module.")
8811 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8812
8813(define-public kbounce
8814 (package
8815 (name "kbounce")
8816 (version "19.08.3")
8817 (source
8818 (origin
8819 (method url-fetch)
8820 (uri (string-append "mirror://kde/stable/applications/"
8821 version "/src/kbounce-" version ".tar.xz"))
8822 (sha256
8823 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
8824 (build-system qt-build-system)
8825 (native-inputs
8826 `(("extra-cmake-modules" ,extra-cmake-modules)
8827 ("kdoctools" ,kdoctools)))
8828 (inputs
8829 `(("kcompletion" ,kcompletion)
8830 ("kconfigwidgets" ,kconfigwidgets)
8831 ("kcoreaddons" ,kcoreaddons)
8832 ("kcrash" ,kcrash)
8833 ("kdbusaddons" ,kdbusaddons)
8834 ("ki18n" ,ki18n)
8835 ("kio" ,kio)
8836 ("kwidgetsaddons" ,kwidgetsaddons)
8837 ("kxmlgui" ,kxmlgui)
8838 ("libkdegames" ,libkdegames)
8839 ("qtbase" ,qtbase)
8840 ("qtdeclarative" ,qtdeclarative)
8841 ("qtsvg" ,qtsvg)))
8842 (home-page "https://games.kde.org/")
8843 (synopsis "Jezzball arcade game")
8844 (description "KBounce is a single player arcade game with the elements of
8845puzzle. It is played on a field, surrounded by wall, with two or more balls
8846bouncing around within the walls. The object of the game is to build new
8847walls to decrease the size of the active field.
8848
8849This package is part of the KDE games module.")
8850 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8851
8852(define-public kblocks
8853 (package
8854 (name "kblocks")
8855 (version "19.08.3")
8856 (source
8857 (origin
8858 (method url-fetch)
8859 (uri (string-append "mirror://kde/stable/applications/"
8860 version "/src/kblocks-" version ".tar.xz"))
8861 (sha256
8862 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
8863 (build-system qt-build-system)
8864 (native-inputs
8865 `(("extra-cmake-modules" ,extra-cmake-modules)
8866 ("kdoctools" ,kdoctools)))
8867 (inputs
8868 `(("kcompletion" ,kcompletion)
8869 ("kconfig" ,kconfig)
8870 ("kconfigwidgets" ,kconfigwidgets)
8871 ("kcoreaddons" ,kcoreaddons)
8872 ("kcrash" ,kcrash)
8873 ("kdbusaddons" ,kdbusaddons)
8874 ("ki18n" ,ki18n)
8875 ("kwidgetsaddons" ,kwidgetsaddons)
8876 ("kxmlgui" ,kxmlgui)
8877 ("libkdegames" ,libkdegames)
8878 ("qtbase" ,qtbase)
8879 ("qtdeclarative" ,qtdeclarative)
8880 ("qtsvg" ,qtsvg)))
8881 (home-page "https://games.kde.org/")
8882 (synopsis "Single player falling blocks puzzle game")
8883 (description "KBlocks is the classic Tetris-like falling blocks game.
8884
8885The idea is to stack the falling blocks to create horizontal lines without any
8886gaps. When a line is completed it is removed, and more space is available in
8887the play area. When there is not enough space for blocks to fall, the game is
8888over.
8889
8890This package is part of the KDE games module.")
8891 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8892
8893(define-public ksudoku
8894 (package
8895 (name "ksudoku")
8896 (version "19.08.3")
8897 (source
8898 (origin
8899 (method url-fetch)
8900 (uri (string-append "mirror://kde/stable/applications/"
8901 version "/src/ksudoku-" version ".tar.xz"))
8902 (sha256
8903 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
8904 (build-system qt-build-system)
8905 (native-inputs
8906 `(("extra-cmake-modules" ,extra-cmake-modules)
8907 ("kdoctools" ,kdoctools)))
8908 (inputs
8909 `(("karchive", karchive)
8910 ("kconfig" ,kconfig)
8911 ("kconfigwidgets" ,kconfigwidgets)
8912 ("kcoreaddons" ,kcoreaddons)
8913 ("kcrash" ,kcrash)
8914 ("kguiaddons" ,kguiaddons)
8915 ("ki18n" ,ki18n)
8916 ("kiconthemes" ,kiconthemes)
8917 ("kio" ,kio)
8918 ("kwidgetsaddons" ,kwidgetsaddons)
8919 ("kxmlgui" ,kxmlgui)
8920 ("libkdegames" ,libkdegames)
8921 ("glu" ,glu)
8922 ("qtbase" ,qtbase)
8923 ("qtdeclarative" ,qtdeclarative)
8924 ("qtsvg" ,qtsvg)))
8925 (home-page "https://games.kde.org/")
8926 (synopsis "Sudoku puzzle game and solver")
8927 (description "KSudoku is a Sudoku game and solver, supporting a range of
89282D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8929puzzle sheets and find the solution to any Sudoku puzzle.
8930
8931The word Sudoku means \"single number in an allotted place\" in Japanese.
8932These are the basic rules: Every Sudoku is a square divided into 3x3
8933subsquares with 3x3 cells each.
8934
8935Some cells are filled with a number at the beginning. The remaining ones are
8936to be filled by the player using numbers from 1 to 9, without repeating a
8937number twice on each column, row or subsquare (each of them must contain only
8938one 1, one 2, one 3, and so on). The game requires logic and patience.
8939Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8940and experience.
8941
8942The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8943board we use letters): arithmetic relationships between numbers are
8944irrelevant.
8945
8946This program supports also 16x16 games with numbers from 1 to 16 and 256
8947cells with 16 cols, rows and subsquares!
8948
8949More information at http://en.wikipedia.org/wiki/Sudoku
8950
8951This package is part of the KDE games module.")
8952 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
8953
8954(define-public klines
8955 (package
8956 (name "klines")
8957 (version "19.08.3")
8958 (source
8959 (origin
8960 (method url-fetch)
8961 (uri (string-append "mirror://kde/stable/applications/" version
8962 "/src/klines-" version ".tar.xz"))
8963 (sha256
8964 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
8965 (build-system qt-build-system)
8966 (native-inputs
8967 `(("extra-cmake-modules" ,extra-cmake-modules)
8968 ("kdoctools" ,kdoctools)))
8969 (inputs
8970 `(("kcompletion" ,kcompletion)
8971 ("kconfigwidgets" ,kconfigwidgets)
8972 ("kcoreaddons" ,kcoreaddons)
8973 ("kcrash" ,kcrash)
8974 ("kdbusaddons" ,kdbusaddons)
8975 ("ki18n" ,ki18n)
8976 ("kwidgetsaddons" ,kwidgetsaddons)
8977 ("kxmlgui" ,kxmlgui)
8978 ("libkdegames" ,libkdegames)
8979 ("qtbase" ,qtbase)
8980 ("qtdeclarative" ,qtdeclarative)))
8981 (home-page "https://games.kde.org/")
8982 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8983 (description "KLines is a simple but highly addictive one player game.
8984
8985The player has to move the colored balls around the game board, gathering them
8986into the lines of the same color by five. Once the line is complete it is
8987removed from the board, therefore freeing precious space. In the same time
8988the new balls keep arriving by three after each move, filling up the game
8989board.
8990
8991KLines is a single-player game where the player removes colored balls from the
8992board by arranging them into lines of five or more. However, every time the
8993player moves a ball, three more balls are added to the board.
8994
8995This package is part of the KDE games module.")
8996 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
8997
8998(define-public kgoldrunner
8999 (package
9000 (name "kgoldrunner")
9001 (version "19.08.3")
9002 (source
9003 (origin
9004 (method url-fetch)
9005 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9006 version ".tar.xz"))
9007 (sha256
9008 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
9009 (build-system qt-build-system)
9010 (native-inputs
9011 `(("extra-cmake-modules" ,extra-cmake-modules)
9012 ("kdoctools" ,kdoctools)))
9013 (inputs
9014 `(("kcompletion" ,kcompletion)
9015 ("kcoreaddons" ,kcoreaddons)
9016 ("kcrash" ,kcrash)
9017 ("kdbusaddons" ,kdbusaddons)
9018 ("ki18n" ,ki18n)
9019 ("kio" ,kio)
9020 ("kwidgetsaddons" ,kwidgetsaddons)
9021 ("kxmlgui" ,kxmlgui)
9022 ("libkdegames" ,libkdegames)
9023 ("qtbase" ,qtbase)
9024 ("qtdeclarative" ,qtdeclarative)))
9025 (home-page "https://games.kde.org/")
9026 (synopsis "Action and puzzle solving game")
9027 (description "KGoldrunner is an action game where the hero runs through a
9028maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9029gold nuggets and escape to the next level. Your enemies are also after the
9030gold. Worse still, they are after you!.
9031
9032KGoldrunner is a fast-paced platform game where the player must navigate a
9033maze while collecting gold nuggets and avoiding enemies. A variety of level
9034packs are included, as well as an editor to create new levels.
9035
9036This package is part of the KDE games module.")
9037 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
9038
9039(define-public kdiamond
9040 (package
9041 (name "kdiamond")
9042 (version "19.08.3")
9043 (source
9044 (origin
9045 (method url-fetch)
9046 (uri (string-append "mirror://kde/stable/applications/" version
9047 "/src/kdiamond-" version ".tar.xz"))
9048 (sha256
9049 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
9050 (build-system qt-build-system)
9051 (native-inputs
9052 `(("extra-cmake-modules" ,extra-cmake-modules)
9053 ("kdoctools" ,kdoctools)))
9054 (inputs
9055 `(("kcompletion", kcompletion)
9056 ("kconfig" ,kconfig)
9057 ("kconfigwidgets" ,kconfigwidgets)
9058 ("kcoreaddons" ,kcoreaddons)
9059 ("kcrash" ,kcrash)
9060 ("kdbusaddons" ,kdbusaddons)
9061 ("ki18n" ,ki18n)
9062 ("knotifications" ,knotifications)
9063 ("knotifyconfig" ,knotifyconfig)
9064 ("kwidgetsaddons" ,kwidgetsaddons)
9065 ("kxmlgui" ,kxmlgui)
9066 ("libkdegames" ,libkdegames)
9067 ("qtbase" ,qtbase)
9068 ("qtdeclarative" ,qtdeclarative)))
9069 (home-page "https://games.kde.org/")
9070 (synopsis "Three-in-a-row game")
9071 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9072features unlimited fun with randomly generated games and five difficulty
9073levels with varying number of diamond colors and board sizes.
9074
9075This package is part of the KDE games module.")
9076 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
9077
9078(define-public kfourinline
9079 (package
9080 (name "kfourinline")
9081 (version "19.08.3")
9082 (source
9083 (origin
9084 (method url-fetch)
9085 (uri (string-append "mirror://kde/stable/applications/" version
9086 "/src/kfourinline-" version ".tar.xz"))
9087 (sha256
9088 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
9089 (build-system qt-build-system)
9090 (native-inputs
9091 `(("extra-cmake-modules" ,extra-cmake-modules)
9092 ("kdoctools" ,kdoctools)))
9093 (inputs
9094 `(("kcompletion" ,kcompletion)
9095 ("kconfig" ,kconfig)
9096 ("kconfigwidgets" ,kconfigwidgets)
9097 ("kcoreaddons" ,kcoreaddons)
9098 ("kcrash" ,kcrash)
9099 ("kdelibs4support" ,kdelibs4support)
9100 ("kdnssd" ,kdnssd)
9101 ("ki18n" ,ki18n)
9102 ("kxmlgui" ,kxmlgui)
9103 ("libkdegames" ,libkdegames)
9104 ("qtbase" ,qtbase)
9105 ("qtdeclarative" ,qtdeclarative)
9106 ("qtsvg" ,qtsvg)))
9107 (home-page "https://games.kde.org/")
9108 (synopsis "Place 4 pieces in a row")
9109 (description "KFourInLine is a board game for two players based on the
9110Connect-Four game.
9111
9112KFourInLine is a game where two players take turns dropping pieces into a
9113grid, the winner being the first to place four pieces in a line.
9114
9115This package is part of the KDE games module.")
9116 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
9117
9118(define-public kblackbox
9119 (package
9120 (name "kblackbox")
9121 (version "19.08.3")
9122 (source
9123 (origin
9124 (method url-fetch)
9125 (uri (string-append "mirror://kde/stable/applications/" version
9126 "/src/kblackbox-" version ".tar.xz"))
9127 (sha256
9128 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
9129 (build-system qt-build-system)
9130 (native-inputs
9131 `(("extra-cmake-modules" ,extra-cmake-modules)
9132 ("kdoctools" ,kdoctools)))
9133 (inputs
9134 `(("karchive" ,karchive)
9135 ("kcompletion" ,kcompletion)
9136 ("kconfig" ,kconfig)
9137 ("kcoreaddons" ,kcoreaddons)
9138 ("kcrash" ,kcrash)
9139 ("kdbusaddons" ,kdbusaddons)
9140 ("ki18n" ,ki18n)
9141 ("ktextwidgets" ,ktextwidgets)
9142 ("kxmlgui" ,kxmlgui)
9143 ("libkdegames" ,libkdegames)
9144 ("qtbase" ,qtbase)
9145 ("qtdeclarative" ,qtdeclarative)
9146 ("qtsvg" ,qtsvg)))
9147 (home-page "https://games.kde.org/")
9148 (synopsis "Find atoms in a grid by shooting electrons")
9149 (description "KBlackbox is a game of hide and seek played on a grid of
9150boxes where the computer has hidden several balls. The position of the hidden
9151balls can be deduced by shooting beams into the box
9152
9153KBlackBox is a game of hide and seek played on an grid of boxes, where the
9154player shoots rays into the grid to deduce the positions of hidden objects.
9155
9156This package is part of the KDE games module.")
9157 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
9158
9159(define-public knetwalk
9160 (package
9161 (name "knetwalk")
9162 (version "19.08.3")
9163 (source
9164 (origin
9165 (method url-fetch)
9166 (uri (string-append "mirror://kde/stable/applications/" version
9167 "/src/knetwalk-" version ".tar.xz"))
9168 (sha256
9169 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
9170 (build-system qt-build-system)
9171 (native-inputs
9172 `(("extra-cmake-modules" ,extra-cmake-modules)
9173 ("kdoctools" ,kdoctools)))
9174 (inputs
9175 `(("kcompletion" ,kcompletion)
9176 ("kconfig" ,kconfig)
9177 ("kconfigwidgets" ,kconfigwidgets)
9178 ("kcoreaddons" ,kcoreaddons)
9179 ("kcrash" ,kcrash)
9180 ("kdbusaddons" ,kdbusaddons)
9181 ("ki18n" ,ki18n)
9182 ("ktextwidgets" ,ktextwidgets)
9183 ("kwidgetsaddons" ,kwidgetsaddons)
9184 ("kxmlgui" ,kxmlgui)
9185 ("libkdegames" ,libkdegames)
9186 ("qtbase" ,qtbase)
9187 ("qtdeclarative" ,qtdeclarative)))
9188 (home-page "https://games.kde.org/")
9189 (synopsis "Turn the board pieces to get all computers connected")
9190 (description "KNetWalk is a small game where you have to build up a
9191computer network by rotating the wires to connect the terminals to the server.
9192When the network is build, a highscore-list comes up where competitions can be
9193fought out.
9194
9195KNetwalk is a puzzle game where the player arranges sections of wire to
9196connect all the computers on the board.
9197
9198This package is part of the KDE games module.")
9199 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
9200
9201(define-public bomber
9202 (package
9203 (name "bomber")
9204 (version "19.08.3")
9205 (source
9206 (origin
9207 (method url-fetch)
9208 (uri (string-append "mirror://kde/stable/applications/" version
9209 "/src/bomber-" version ".tar.xz"))
9210 (sha256
9211 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
9212 (build-system qt-build-system)
9213 (native-inputs
9214 `(("extra-cmake-modules" ,extra-cmake-modules)
9215 ("kdoctools" ,kdoctools)))
9216 (inputs
9217 `(("kcompletiom" ,kcompletion)
9218 ("kconfig" ,kconfig)
9219 ("kcoreaddons" ,kcoreaddons)
9220 ("kcrash" ,kcrash)
9221 ("kdbusaddons" ,kdbusaddons)
9222 ("ki18n" ,ki18n)
9223 ("kxmlgui" ,kxmlgui)
9224 ("libkdegames" ,libkdegames)
9225 ("qtbase" ,qtbase)
9226 ("qtdeclarative" ,qtdeclarative)))
9227 (home-page "https://games.kde.org/")
9228 (synopsis "Arcade bombing game")
9229 (description "Bomber is a single player arcade game.
9230
9231The player is invading various cities in a plane that is decreasing in height.
9232The goal of the game is to destroy all the buildings and advance to the next
9233level. Each level gets a bit harder by increasing the speed of the plane and
9234the height of the buildings.
9235
9236Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9237below you. Each pass the spaceship makes, it gets lower and lower. If you've
9238not destroyed a building in your path, you will crash into it.
9239
9240This package is part of the KDE games module.")
9241 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
9242
9243(define-public granatier
9244 (package
9245 (name "granatier")
9246 (version "19.08.3")
9247 (source
9248 (origin
9249 (method url-fetch)
9250 (uri (string-append "mirror://kde/stable/applications/" version
9251 "/src/granatier-" version ".tar.xz"))
9252 (sha256
9253 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
9254 (build-system qt-build-system)
9255 (native-inputs
9256 `(("extra-cmake-modules" ,extra-cmake-modules)
9257 ("kdoctools" ,kdoctools)))
9258 (inputs
9259 `(("kcompletion" ,kcompletion)
9260 ("kconfig" ,kconfig)
9261 ("kconfigwidgets" ,kconfigwidgets)
9262 ("kcoreaddons" ,kcoreaddons)
9263 ("kcrash" ,kcrash)
9264 ("kdbusaddons" ,kdbusaddons)
9265 ("ki18n" ,ki18n)
9266 ("knewstuff" ,knewstuff)
9267 ("kwidgetsaddons" ,kwidgetsaddons)
9268 ("kxmlgui" ,kxmlgui)
9269 ("libkdegames" ,libkdegames)
9270 ("qtbase" ,qtbase)
9271 ("qtdeclarative" ,qtdeclarative)
9272 ("qtsvg" ,qtsvg)))
9273 (home-page "https://games.kde.org/")
9274 (synopsis "Bomberman clone")
9275 (description "Granatier is a clone of the classic Bomberman game,
9276inspired by the work of the Clanbomber clone.
9277
9278This package is part of the KDE games module.")
9279 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
9280
9281(define-public ksirk
9282 (package
9283 (name "ksirk")
9284 (version "19.08.3")
9285 (source
9286 (origin
9287 (method url-fetch)
9288 (uri (string-append "mirror://kde/stable/applications/" version
9289 "/src/ksirk-" version ".tar.xz"))
9290 (sha256
9291 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
9292 (build-system qt-build-system)
9293 (native-inputs
9294 `(("extra-cmake-modules" ,extra-cmake-modules)
9295 ("kdoctools" ,kdoctools)))
9296 (inputs
9297 `(("kcrash" ,kcrash)
9298 ("ki18n" ,ki18n)
9299 ("kiconthemes" ,kiconthemes)
9300 ("kio" ,kio)
9301 ("knewstuff" ,knewstuff)
9302 ("kwallet" ,kwallet)
9303 ("kxmlgui" ,kxmlgui)
9304 ("libkdegames" ,libkdegames)
9305 ("phonon" ,phonon)
9306 ("qca" ,qca)
9307 ("qtbase" ,qtbase)
9308 ("qtdeclarative" ,qtdeclarative)
9309 ("qtsvg" ,qtsvg)
9310 ("zlib" ,zlib)))
9311 (home-page "https://games.kde.org/")
9312 (synopsis "Computerized version of the well known strategy board game
9313'Risk'")
9314 (description "KsirK is a multi-player network-enabled game. The goal of
9315the game is simply to conquer the world by attacking your neighbors with your
9316armies.
9317
9318At the beginning of the game, countries are distributed to all the players.
9319Each country contains one army represented by an infantryman. Each player has
9320some armies to distribute to his countries. On each turn, each player can
9321attack his neighbours, eventually conquering one or more countries. At the
9322end of each turn, some bonus armies are distributed to the players in function
9323of the number of countries they own. The winner is the player that conquered
9324all the world.
9325
9326Features:
9327@itemize
9328@item Support for 1-6 human or computer players
9329@item Multi-player gaming over a network
9330@item You can easily create new skins with SVG graphics and the skin editor
9331@item Hot New Stuff support. You can easily download and install new skins
9332@end itemize
9333
9334This package is part of the KDE games module.")
9335 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
9336
9337(define-public palapeli
9338 (package
9339 (name "palapeli")
9340 (version "19.08.3")
9341 (source
9342 (origin
9343 (method url-fetch)
9344 (uri (string-append "mirror://kde/stable/applications/" version
9345 "/src/palapeli-" version ".tar.xz"))
9346 (sha256
9347 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
9348 (build-system qt-build-system)
9349 (native-inputs
9350 `(("extra-cmake-modules" ,extra-cmake-modules)
9351 ("kdoctools" ,kdoctools)))
9352 (inputs
9353 `(("karchive" ,karchive)
9354 ("kcompletion" ,kcompletion)
9355 ("kconfig" ,kconfig)
9356 ("kconfigwidgets" ,kconfigwidgets)
9357 ("kcoreaddons" ,kcoreaddons)
9358 ("kcrash" ,kcrash)
9359 ("kcrash" ,kcrash)
9360 ("ki18n" ,ki18n)
9361 ("ki18n" ,ki18n)
9362 ("kio" ,kio)
9363 ("kitemviews" ,kitemviews)
9364 ("knotifications" ,knotifications)
9365 ("kservice" ,kservice)
9366 ("kwidgetsaddons" ,kwidgetsaddons)
9367 ("kxmlgui" ,kxmlgui)
9368 ("libkdegames" ,libkdegames)
9369 ("qtbase" ,qtbase)
9370 ("qtdeclarative" ,qtdeclarative)
9371 ("qtsvg" ,qtsvg)
9372 ("shared-mime-info" ,shared-mime-info)))
9373 (home-page "https://games.kde.org/")
9374 (synopsis "Jigsaw puzzle game")
9375 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9376that genre, you are not limited to aligning pieces on imaginary grids. The
9377pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9378everything you do is saved on your disk immediately.
9379
9380Palapeli is the Finnish word for jigsaw puzzle.
9381
9382This package is part of the KDE games module.")
9383 (license license:gpl2+)))
bf6bfdbe
HG
9384
9385(define-public kiriki
9386 (package
9387 (name "kiriki")
9388 (version "19.08.3")
9389 (source
9390 (origin
9391 (method url-fetch)
9392 (uri (string-append "mirror://kde/stable/applications/" version
9393 "/src/kiriki-" version ".tar.xz"))
9394 (sha256
9395 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
9396 (build-system qt-build-system)
9397 (native-inputs
9398 `(("extra-cmake-modules" ,extra-cmake-modules)
9399 ("kdoctools" ,kdoctools)))
9400 (inputs
9401 `(("kcompletion" ,kcompletion)
9402 ("kconfig" ,kconfig)
9403 ("kconfigwidgets" ,kconfigwidgets)
9404 ("kcoreaddons" ,kcoreaddons)
9405 ("kcrash" ,kcrash)
9406 ("kdbusaddons" ,kdbusaddons)
9407 ("ki18n" ,ki18n)
9408 ("kiconthemes" ,kiconthemes)
9409 ("kxmlgui" ,kxmlgui)
9410 ("libkdegames" ,libkdegames)
9411 ("qtbase" ,qtbase)
9412 ("qtdeclarative" ,qtdeclarative)))
9413 (home-page "https://games.kde.org/")
9414 (synopsis "Yahtzee dice game")
9415 (description "Kiriki is an addictive and fun dice game, designed to be
9416played by as many as six players.
9417
9418Participants have to collect points by rolling five dice for up to three times
9419per single turn to make combinations with the highest score.
9420
9421This package is part of the KDE games module.")
9422 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
9423
9424(define-public kigo
9425 (package
9426 (name "kigo")
9427 (version "19.08.3")
9428 (source
9429 (origin
9430 (method url-fetch)
9431 (uri (string-append "mirror://kde/stable/applications/" version
9432 "/src/kigo-" version ".tar.xz"))
9433 (sha256
9434 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
9435 (build-system qt-build-system)
9436 (native-inputs
9437 `(("extra-cmake-modules" ,extra-cmake-modules)
9438 ("kdoctools" ,kdoctools)))
9439 (inputs
9440 `(("kconfig" ,kconfig)
9441 ("kconfigwidgets" ,kconfigwidgets)
9442 ("kcoreaddons" ,kcoreaddons)
9443 ("kcrash" ,kcrash)
9444 ("kdbusaddons" ,kdbusaddons)
9445 ("ki18n" ,ki18n)
9446 ("kio" ,kio)
9447 ("knewstuff", knewstuff)
9448 ("ktextwidgets" ,ktextwidgets)
9449 ("kxmlgui" ,kxmlgui)
9450 ("libkdegames" ,libkdegames)
9451 ("qtbase" ,qtbase)
9452 ("qtdeclarative" ,qtdeclarative)
9453 ("qtsvg" ,qtsvg)))
9454 (home-page "https://games.kde.org/")
9455 (synopsis "Go board game")
9456 (description "Kigo is an open-source implementation of the popular Go
9457game.
9458
9459Go is a strategic board game for two players. It is also known as
9460igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9461for being rich in strategic complexity despite its simple rules. The game is
9462played by two players who alternately place black and white stones (playing
9463pieces, now usually made of glass or plastic) on the vacant intersections of a
9464grid of 19x19 lines (9x9 or 13x13 for easier games).
9465
9466You also need to install a go engine, e.g. @code{gnugo}.
9467
9468This package is part of the KDE games module.")
9469 (license license:gpl3+)))
90e594d3
HG
9470
9471(define-public kubrick
9472 (package
9473 (name "kubrick")
9474 (version "19.08.3")
9475 (source
9476 (origin
9477 (method url-fetch)
9478 (uri (string-append "mirror://kde/stable/applications/" version
9479 "/src/kubrick-" version ".tar.xz"))
9480 (sha256
9481 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
9482 (build-system qt-build-system)
9483 (native-inputs
9484 `(("extra-cmake-modules" ,extra-cmake-modules)
9485 ("kdoctools" ,kdoctools)))
9486 (inputs
9487 `(("glu" ,glu)
9488 ("kconfig" ,kconfig)
9489 ("kconfigwidgets" ,kconfigwidgets)
9490 ("kcoreaddons" ,kcoreaddons)
9491 ("kcrash" ,kcrash)
9492 ("ki18n" ,ki18n)
9493 ("kio" ,kio)
9494 ("kwidgetsaddons" ,kwidgetsaddons)
9495 ("kxmlgui" ,kxmlgui)
9496 ("libkdegames" ,libkdegames)
9497 ("qtbase" ,qtbase)
9498 ("qtdeclarative" ,qtdeclarative)
9499 ("qtsvg" ,qtsvg)))
9500 (home-page "https://games.kde.org/")
9501 (synopsis "Game based on Rubik's Cube")
9502 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9503
9504The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9505\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9506selection of puzzles at several levels of difficulty, as well as demos of
9507pretty patterns and solution moves, or you can make up your own puzzles. The
9508game has unlimited undo, redo, save and reload capabilities.
9509
9510This package is part of the KDE games module.")
9511 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9512
9513(define-public lskat
9514 (package
9515 (name "lskat")
9516 (version "19.08.3")
9517 (source
9518 (origin
9519 (method url-fetch)
9520 (uri (string-append "mirror://kde/stable/applications/" version
9521 "/src/lskat-" version ".tar.xz"))
9522 (sha256
9523 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
9524 (build-system qt-build-system)
9525 (native-inputs
9526 `(("extra-cmake-modules" ,extra-cmake-modules)
9527 ("kdoctools" ,kdoctools)))
9528 (inputs
9529 `(("kcompletion" ,kcompletion)
9530 ("kconfig" ,kconfig)
9531 ("kcoreaddons" ,kcoreaddons)
9532 ("kcrash" ,kcrash)
9533 ("kguiaddons" ,kguiaddons)
9534 ("ki18n" ,ki18n)
9535 ("kwidgetsaddons" ,kwidgetsaddons)
9536 ("kxmlgui" ,kxmlgui)
9537 ("libkdegames" ,libkdegames)
9538 ("qtbase" ,qtbase)
9539 ("qtdeclarative" ,qtdeclarative)
9540 ("qtsvg" ,qtsvg)))
9541 (home-page "https://games.kde.org/")
9542 (synopsis "Lieutnant Skat card game")
9543 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9544engaging card game for two players, where the second player is either live
9545opponent, or a built in artificial intelligence.
9546
9547Lieutnant Skat is a simplified variant of the Skat card game for two players.
9548
9549This package is part of the KDE games module.")
9550 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9551
9552(define-public kapman
9553 (package
9554 (name "kapman")
9555 (version "19.08.3")
9556 (source
9557 (origin
9558 (method url-fetch)
9559 (uri (string-append "mirror://kde/stable/applications/" version
9560 "/src/kapman-" version ".tar.xz"))
9561 (sha256
9562 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
9563 (build-system qt-build-system)
9564 (native-inputs
9565 `(("extra-cmake-modules" ,extra-cmake-modules)
9566 ("kdoctools" ,kdoctools)))
9567 (inputs
9568 `(("kcompletion" ,kcompletion)
9569 ("kconfig" ,kconfig)
9570 ("kconfigwidgets" ,kconfigwidgets)
9571 ("kcoreaddons" ,kcoreaddons)
9572 ("kcrash" ,kcrash)
9573 ("kdbusaddons" ,kdbusaddons)
9574 ("ki18n" ,ki18n)
9575 ("kxmlgui" ,kxmlgui)
9576 ("libkdegames" ,libkdegames)
9577 ("qtbase" ,qtbase)
9578 ("qtdeclarative" ,qtdeclarative)
9579 ("qtsvg" ,qtsvg)))
9580 (home-page "https://games.kde.org/")
9581 (synopsis "Pac-Man clone")
9582 (description "Kapman is a clone of the well known game Pac-Man.
9583
9584You must run through the maze to eat all pills without being captured by a
9585ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9586few seconds. When a stage is cleared of pills and energizer the player is
9587taken to the next stage with slightly increased game speed
9588
9589This package is part of the KDE games module.")
9590 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9591
9592(define-public kspaceduel
9593 (package
9594 (name "kspaceduel")
9595 (version "19.08.3")
9596 (source
9597 (origin
9598 (method url-fetch)
9599 (uri (string-append "mirror://kde/stable/applications/" version
9600 "/src/kspaceduel-" version ".tar.xz"))
9601 (sha256
9602 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
9603 (build-system qt-build-system)
9604 (native-inputs
9605 `(("extra-cmake-modules" ,extra-cmake-modules)
9606 ("kdoctools" ,kdoctools)))
9607 (inputs
9608 `(("kcompletion" ,kcompletion)
9609 ("kconfig" ,kconfig)
9610 ("kconfigwidgets" ,kconfigwidgets)
9611 ("kcoreaddons" ,kcoreaddons)
9612 ("kcrash" ,kcrash)
9613 ("kdbusaddons" ,kdbusaddons)
9614 ("ki18n" ,ki18n)
9615 ("kxmlgui" ,kxmlgui)
9616 ("libkdegames" ,libkdegames)
9617 ("qtbase" ,qtbase)
9618 ("qtdeclarative" ,qtdeclarative)
9619 ("qtsvg" ,qtsvg)))
9620 (home-page "https://games.kde.org/")
9621 (synopsis "Two player game with shooting spaceships flying around a sun")
9622 (description "KSpaceduel is a space battle game for one or two players,
9623where two ships fly around a star in a struggle to be the only survivor.
9624
9625This package is part of the KDE games module.")
9626 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9627
9628(define-public bovo
9629 (package
9630 (name "bovo")
9631 (version "19.08.3")
9632 (source
9633 (origin
9634 (method url-fetch)
9635 (uri (string-append "mirror://kde/stable/applications/" version
9636 "/src/bovo-" version ".tar.xz"))
9637 (sha256
9638 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
9639 (build-system qt-build-system)
9640 (native-inputs
9641 `(("extra-cmake-modules" ,extra-cmake-modules)
9642 ("kdoctools" ,kdoctools)))
9643 (inputs
9644 `(("kcompletion" ,kcompletion)
9645 ("kcoreaddons" ,kcoreaddons)
9646 ("kcrash" ,kcrash)
9647 ("kdbusaddons" ,kdbusaddons)
9648 ("ki18n" ,ki18n)
9649 ("kxmlgui" ,kxmlgui)
9650 ("libkdegames" ,libkdegames)
9651 ("qtbase" ,qtbase)
9652 ("qtdeclarative" ,qtdeclarative)
9653 ("qtsvg" ,qtsvg)))
9654 (home-page "https://games.kde.org/")
9655 (synopsis "Classic pen and paper game: five in a line")
9656 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9657points\") like game for two players, where the opponents alternate in placing
9658their respective pictogram on the game board. The winner is the first to
9659complete a line of five markers. (Also known as: Connect Five, Five in a row,
9660X and O, Naughts and Crosses)
9661
9662This package is part of the KDE games module.")
9663 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9664
9665(define-public killbots
9666 (package
9667 (name "killbots")
9668 (version "19.08.3")
9669 (source
9670 (origin
9671 (method url-fetch)
9672 (uri (string-append "mirror://kde/stable/applications/" version
9673 "/src/killbots-" version ".tar.xz"))
9674 (sha256
9675 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
9676 (build-system qt-build-system)
9677 (native-inputs
9678 `(("extra-cmake-modules" ,extra-cmake-modules)
9679 ("kdoctools" ,kdoctools)))
9680 (inputs
9681 `(("kcompletion" ,kcompletion)
9682 ("kconfig" ,kconfig)
9683 ("kconfigwidgets" ,kconfigwidgets)
9684 ("kcoreaddons" ,kcoreaddons)
9685 ("kcrash" ,kcrash)
9686 ("kdbusaddons" ,kdbusaddons)
9687 ("ki18n" ,ki18n)
9688 ("kwidgetsaddons" ,kwidgetsaddons)
9689 ("kxmlgui" ,kxmlgui)
9690 ("libkdegames" ,libkdegames)
9691 ("qtbase" ,qtbase)
9692 ("qtdeclarative" ,qtdeclarative)))
9693 (home-page "https://games.kde.org/")
9694 (synopsis "Port of the classic BSD console game robots")
9695 (description "Killbots is a simple game of evading killer robots.
9696
9697Who created the robots and why they have been programmed to destroy, no one
9698knows. All that is known is that the robots are numerous and their sole
9699objective is to destroy you. Fortunately for you, their creator has focused
9700on quantity rather than quality and as a result the robots are severely
9701lacking in intelligence. Your superior wit and a fancy teleportation device
9702are your only weapons against the never-ending stream of mindless automatons.
9703
9704This package is part of the KDE games module.")
9705 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9706
9707(define-public ksnakeduel
9708 (package
9709 (name "ksnakeduel")
9710 (version "19.08.3")
9711 (source
9712 (origin
9713 (method url-fetch)
9714 (uri (string-append "mirror://kde/stable/applications/" version
9715 "/src/ksnakeduel-" version ".tar.xz"))
9716 (sha256
9717 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
9718 (build-system qt-build-system)
9719 (native-inputs
9720 `(("extra-cmake-modules" ,extra-cmake-modules)
9721 ("kdoctools" ,kdoctools)))
9722 (inputs
9723 `(("kcompletion" ,kcompletion)
9724 ("kconfig" ,kconfig)
9725 ("kconfigwidgets" ,kconfigwidgets)
9726 ("kcoreaddons" ,kcoreaddons)
9727 ("kcrash" ,kcrash)
9728 ("kdbusaddons" ,kdbusaddons)
9729 ("kguiaddons" ,kguiaddons)
9730 ("ki18n" ,ki18n)
9731 ("kxmlgui" ,kxmlgui)
9732 ("libkdegames" ,libkdegames)
9733 ("qtbase" ,qtbase)
9734 ("qtdeclarative" ,qtdeclarative)
9735 ("qtsvg" ,qtsvg)))
9736 (home-page "https://games.kde.org/")
9737 (synopsis "Snake race played against the computer")
9738 (description "KSnakeDuel is a fast action game where you steer a snake
9739which has to eat food. While eating the snake grows. But once a player
9740collides with the other snake or the wall the game is lost. This becomes of
9741course more and more difficult the longer the snakes grow.
9742
9743This package is part of the KDE games module.")
9744 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9745
9746(define-public kollision
9747 (package
9748 (name "kollision")
9749 (version "19.08.3")
9750 (source
9751 (origin
9752 (method url-fetch)
9753 (uri (string-append "mirror://kde/stable/applications/" version
9754 "/src/kollision-" version ".tar.xz"))
9755 (sha256
9756 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
9757 (build-system qt-build-system)
9758 (native-inputs
9759 `(("extra-cmake-modules" ,extra-cmake-modules)
9760 ("kdoctools" ,kdoctools)))
9761 (inputs
9762 `(("kcompletion" ,kcompletion)
9763 ("kconfig" ,kconfig)
9764 ("kcoreaddons" ,kcoreaddons)
9765 ("kcrash" ,kcrash)
9766 ("kdbusaddons" ,kdbusaddons)
9767 ("ki18n" ,ki18n)
9768 ("kwidgetsaddons" ,kwidgetsaddons)
9769 ("kxmlgui" ,kxmlgui)
9770 ("libkdegames" ,libkdegames)
9771 ("qtbase" ,qtbase)
9772 ("qtdeclarative" ,qtdeclarative)))
9773 (home-page "https://games.kde.org/")
9774 (synopsis "Simple ball dodging game")
9775 (description "In Kollision you use mouse to control a small blue ball in a
9776closed space environment filled with small red balls, which move about
9777chaotically. Your goal is to avoid touching any of those red balls with your
9778blue one, because the moment you do the game will be over. The longer you can
9779stay in game the higher will your score be.
9780
9781This package is part of the KDE games module.")
9782 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9783
9784(define-public knavalbattle
9785 (package
9786 (name "knavalbattle")
9787 (version "19.08.3")
9788 (source
9789 (origin
9790 (method url-fetch)
9791 (uri (string-append "mirror://kde/stable/applications/" version
9792"/src/knavalbattle-" version ".tar.xz"))
9793 (sha256
9794 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
9795 (build-system qt-build-system)
9796 (native-inputs
9797 `(("extra-cmake-modules" ,extra-cmake-modules)
9798 ("kdoctools" ,kdoctools)))
9799 (inputs
9800 `(("kauth" ,kauth)
9801 ("kcompletion" ,kcompletion)
9802 ("kconfig" ,kconfig)
9803 ("kconfigwidgets" ,kconfigwidgets)
9804 ("kcoreaddons" ,kcoreaddons)
9805 ("kcrash" ,kcrash)
9806 ("kdbusaddons" ,kdbusaddons)
9807 ("kdnssd" ,kdnssd)
9808 ("ki18n" ,ki18n)
9809 ("ktextwidgets" ,ktextwidgets)
9810 ("kxmlgui" ,kxmlgui)
9811 ("libkdegames" ,libkdegames)
9812 ("qtbase" ,qtbase)
9813 ("qtdeclarative" ,qtdeclarative)))
9814 (home-page "https://games.kde.org/")
9815 (synopsis "Battleship board game with built-in game server")
9816 (description "KBattleship is a Battle Ship game for KDE.
9817
9818Ships are placed on a board which represents the sea. Players try to hit each
9819others ships in turns without knowing where they are placed. The first player
9820to destroy all ships wins the game.
9821
9822This package is part of the KDE games module.")
9823 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
9824
9825(define-public kreversi
9826 (package
9827 (name "kreversi")
9828 (version "19.08.3")
9829 (source
9830 (origin
9831 (method url-fetch)
9832 (uri (string-append "mirror://kde/stable/applications/" version
9833"/src/kreversi-" version ".tar.xz"))
9834 (sha256
9835 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
9836 (build-system qt-build-system)
9837 (native-inputs
9838 `(("extra-cmake-modules" ,extra-cmake-modules)
9839 ("kdoctools" ,kdoctools)))
9840 (inputs
9841 `(("kconfig" ,kconfig)
9842 ("kconfigwidgets" ,kconfigwidgets)
9843 ("kcoreaddons" ,kcoreaddons)
9844 ("kcrash" ,kcrash)
9845 ("kdbusaddons" ,kdbusaddons)
9846 ("kdeclarative" ,kdeclarative)
9847 ("ki18n" ,ki18n)
9848 ("kiconthemes" ,kiconthemes)
9849 ("kio" ,kio)
9850 ("kxmlgui" ,kxmlgui)
9851 ("libkdegames" ,libkdegames)
9852 ("qtbase" ,qtbase)
9853 ("qtdeclarative" ,qtdeclarative)
9854 ("qtsvg" ,qtsvg)))
9855 (home-page "https://games.kde.org/")
9856 (synopsis "Old reversi board game, also known as othello")
9857 (description "KReversi is a simple one player strategy game played
9858against the computer.
9859
9860If a player's piece is captured by an opposing player, that piece is turned
9861over to reveal the color of that player. A winner is declared when one player
9862has more pieces of his own color on the board and there are no more possible
9863moves.
9864
9865This package is part of the KDE games module.")
9866 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
9867
9868(define-public ksquares
9869 (package
9870 (name "ksquares")
9871 (version "19.08.3")
9872 (source
9873 (origin
9874 (method url-fetch)
9875 (uri (string-append "mirror://kde/stable/applications/" version
9876 "/src/ksquares-" version ".tar.xz"))
9877 (sha256
9878 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
9879 (build-system qt-build-system)
9880 (native-inputs
9881 `(("extra-cmake-modules" ,extra-cmake-modules)
9882 ("kdoctools" ,kdoctools)))
9883 (inputs
9884 `(("kcompletion" ,kcompletion)
9885 ("kconfig" ,kconfig)
9886 ("kconfigwidgets" ,kconfigwidgets)
9887 ("kcoreaddons" ,kcoreaddons)
9888 ("kcrash" ,kcrash)
9889 ("kdbusaddons" ,kdbusaddons)
9890 ("ki18n" ,ki18n)
9891 ("kwidgetsaddons" ,kwidgetsaddons)
9892 ("kxmlgui" ,kxmlgui)
9893 ("libkdegames" ,libkdegames)
9894 ("qtbase" ,qtbase)
9895 ("qtdeclarative" ,qtdeclarative)))
9896 (home-page "https://games.kde.org/")
9897 (synopsis "Dots and Boxes game")
9898 (description "KSquares is an implementation of the popular paper based
9899game Squares. Two players take turns connecting dots on a grid to complete
9900squares, the player with the most squares wins.
9901
9902This package is part of the KDE games module.")
9903 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
9904
9905(define-public kjumpingcube
9906 (package
9907 (name "kjumpingcube")
9908 (version "19.08.3")
9909 (source
9910 (origin
9911 (method url-fetch)
9912 (uri (string-append "mirror://kde/stable/applications/" version
9913 "/src/kjumpingcube-" version ".tar.xz"))
9914 (sha256
9915 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
9916 (build-system qt-build-system)
9917 (native-inputs
9918 `(("extra-cmake-modules" ,extra-cmake-modules)
9919 ("kdoctools" ,kdoctools)))
9920 (inputs
9921 `(("kconfig" ,kconfig)
9922 ("kconfigwidgets" ,kconfigwidgets)
9923 ("kcoreaddons" ,kcoreaddons)
9924 ("kcrash" ,kcrash)
9925 ("kdbusaddons" ,kdbusaddons)
9926 ("ki18n" ,ki18n)
9927 ("kio" ,kio)
9928 ("kwidgetsaddons" ,kwidgetsaddons)
9929 ("kxmlgui" ,kxmlgui)
9930 ("libkdegames" ,libkdegames)
9931 ("qtbase" ,qtbase)
9932 ("qtdeclarative" ,qtdeclarative)
9933 ("qtsvg" ,qtsvg)))
9934 (home-page "https://games.kde.org/")
9935 (synopsis "Simple tactical game for number-crunchers")
9936 (description "KJumpingcube is a simple tactical game for one or two
9937players, played on a grid of numbered squares. Each turn, players compete for
9938control of the board by capturing or adding to one square.
9939
9940This package is part of the KDE games module.")
9941 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
9942
9943(define-public xmoto
9944 (package
9945 (name "xmoto")
9946 (version "0.5.11")
9947 (source
9948 (origin
9949 (method url-fetch)
9950 (uri (string-append
9951 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9952 "xmoto-" version "-src.tar.gz"))
9953 (sha256
9954 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9955 (patches
9956 (search-patches
9957 "xmoto-remove-glext.patch" ;fixes licensing issue
9958 "xmoto-reproducible.patch"
9959 "xmoto-utf8.patch"))
9960 ;; Unbundle ODE.
9961 (modules '((guix build utils)))
9962 (snippet
9963 `(begin
9964 (delete-file-recursively "src/ode")
9965 #t))))
9966 (build-system gnu-build-system)
9967 (arguments
9968 ;; XXX: First flag prevents a build error with GCC7+. The second
9969 ;; flag works around missing text in game. Both are fixed
9970 ;; upstream. Remove once xmoto 0.5.12+ is released.
9971 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9972 #:phases
9973 (modify-phases %standard-phases
9974 (add-after 'install 'install-desktop-file
9975 (lambda* (#:key outputs #:allow-other-keys)
9976 (let* ((out (assoc-ref outputs "out"))
9977 (apps (string-append out "/share/applications"))
9978 (pixmaps (string-append out "/share/pixmaps")))
9979 (install-file "extra/xmoto.desktop" apps)
9980 (install-file "extra/xmoto.xpm" pixmaps)
9981 #t)))
9982 (add-after 'install-desktop-file 'install-fonts
9983 (lambda* (#:key outputs inputs #:allow-other-keys)
9984 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9985 "/share/fonts/truetype/"))
9986 (target-dir (string-append (assoc-ref outputs "out")
9987 "/share/xmoto/Textures/Fonts/")))
9988 (for-each (lambda (f)
9989 (let ((font (string-append font-dir f))
9990 (target (string-append target-dir f)))
9991 (delete-file target)
9992 (symlink font target)))
9993 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9994 #t)))
9995 (add-after 'install-fonts 'install-man-page
9996 (lambda* (#:key outputs #:allow-other-keys)
9997 (install-file "xmoto.6"
9998 (string-append (assoc-ref outputs "out")
9999 "/share/man/man6"))
10000 #t)))))
10001 (native-inputs
10002 `(("gettext" ,gettext-minimal)))
10003 (inputs
10004 `(("curl" ,curl)
10005 ("font-dejavu" ,font-dejavu)
10006 ("glu" ,glu)
10007 ("libjpeg" ,libjpeg)
10008 ("libpng" ,libpng)
10009 ("libxdg-basedir" ,libxdg-basedir)
10010 ("libxml2" ,libxml2)
10011 ("lua" ,lua-5.2)
10012 ("ode" ,ode)
10013 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10014 ("sqlite" ,sqlite)
10015 ("zlib" ,zlib)))
10016 (home-page "https://xmoto.tuxfamily.org/")
10017 (synopsis "2D motocross platform game")
af4796d5
NG
10018 (description "X-Moto is a challenging 2D motocross platform game, where
10019physics play an all important role in the gameplay. You need to control your
10020bike to its limit, if you want to have a chance finishing the more difficult
10021challenges.")
40d2bddd
NG
10022 (license (list license:gpl2+ ;whole project
10023 license:bsd-4 ;src/bzip
10024 license:bsd-3 ;src/md5sum
10025 license:lgpl2.1+ ;src/iqsort.h
10026 license:expat))))
371ca8ca
GLV
10027
10028(define-public eboard
10029 (package
10030 (name "eboard")
10031 (version "1.1.3")
10032 (source
10033 (origin
10034 (method git-fetch)
10035 (uri (git-reference
10036 (url "https://github.com/fbergo/eboard.git")
10037 (commit (string-append "v" version))))
10038 (file-name (git-file-name name version))
10039 (sha256
10040 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10041 (build-system gnu-build-system)
10042 (native-inputs
10043 `(("perl" ,perl)
10044 ("pkg-config" ,pkg-config)))
10045 (inputs
10046 `(("gtk+" ,gtk+-2)
10047 ("libpng" ,libpng)
10048 ("gstreamer" ,gstreamer)))
10049 (arguments
10050 `(#:tests? #f
10051 #:phases
10052 (modify-phases %standard-phases
10053 (replace 'configure
10054 (lambda* (#:key outputs #:allow-other-keys)
10055 (make-file-writable "eboard-config")
10056 (setenv "CC" "gcc")
10057 (invoke "./configure"
10058 (string-append "--prefix=" (assoc-ref outputs "out")))
10059 #t))
10060 (add-before 'install 'make-required-directories
10061 (lambda* (#:key outputs #:allow-other-keys)
10062 (mkdir-p (string-append (assoc-ref outputs "out")
10063 "/share/eboard"))
10064 #t)))))
10065 (synopsis "Graphical user interface to play chess")
10066 (description
10067 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10068and chess engines.")
10069 (home-page "https://www.bergo.eng.br/eboard/")
10070 (license license:gpl2+)))
d8cae6cf
GLV
10071
10072(define-public chessx
10073 (package
10074 (name "chessx")
10075 (version "1.5.0")
10076 (source
10077 (origin
10078 (method url-fetch)
10079 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10080 version "/chessx-" version ".tgz"))
10081 (sha256
10082 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10083 (build-system qt-build-system)
10084 (native-inputs
10085 `(("qttools" ,qttools)))
10086 (inputs
10087 `(("qtbase" ,qtbase)
10088 ("qtmultimedia" ,qtmultimedia)
10089 ("qtsvg" ,qtsvg)
10090 ("zlib" ,zlib)))
10091 (arguments
10092 `(#:tests? #f
10093 #:phases
10094 (modify-phases %standard-phases
10095 (add-after 'unpack 'fix-paths
10096 (lambda* (#:key inputs #:allow-other-keys)
10097 (substitute* "chessx.pro"
10098 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10099 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10100 #t))
10101 (add-after 'fix-paths 'make-qt-deterministic
10102 (lambda _
10103 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10104 #t))
10105 (replace 'configure
10106 (lambda _
10107 (invoke "qmake")
10108 #t))
10109 (replace 'install
10110 (lambda* (#:key outputs #:allow-other-keys)
10111 (let ((out (assoc-ref outputs "out")))
10112 (install-file "release/chessx" (string-append out "/bin"))
10113 (install-file "unix/chessx.desktop"
10114 (string-append out "/share/applications")))
10115 #t)))))
10116 (synopsis "Chess game database")
10117 (description
10118 "ChessX is a chess database. With ChessX you can operate on your
10119collection of chess games in many ways: browse, edit, add, organize, analyze,
10120etc. You can also play games on FICS or against an engine.")
10121 (home-page "http://chessx.sourceforge.net/")
10122 (license license:gpl2+)))
814091ef
GLV
10123
10124(define-public stockfish
10125 (package
10126 (name "stockfish")
10127 (version "11")
10128 (source
10129 (origin
10130 (method git-fetch)
10131 (uri (git-reference
10132 (url "https://github.com/official-stockfish/Stockfish.git")
10133 (commit (string-append "sf_" version))))
10134 (file-name (git-file-name name version))
10135 (sha256
10136 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10137 (build-system gnu-build-system)
10138 (arguments
10139 `(#:tests? #f
10140 #:make-flags (list "-C" "src"
10141 "build"
10142 (string-append "PREFIX="
10143 (assoc-ref %outputs "out"))
10144 (string-append "ARCH="
10145 ,(match (%current-system)
10146 ("x86_64-linux" "x86-64")
10147 ("i686-linux" "x86-32")
10148 ("aarch64-linux" "general-64")
10149 ("armhf-linux" "armv7")
10150 ("mips64el-linux" "general-64")
10151 (_ "general-32"))))
10152 #:phases (modify-phases %standard-phases
10153 (delete 'configure))))
10154 (synopsis "Strong chess engine")
10155 (description
10156 "Stockfish is a very strong chess engines. It is much stronger than the
10157best human chess grandmasters. It can be used with UCI-compatible GUIs like
10158ChessX.")
10159 (home-page "https://stockfishchess.org/")
10160 (license license:gpl3+)))