gnu: fifengine: Fix build with newer Swig and Python.
[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)
4bd428a7 238 ("libjpeg" ,libjpeg-turbo)
4fee5ec0
KK
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)
4bd428a7 686 ("libjpeg" ,libjpeg-turbo)
18995af2
TGR
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 1998 `(("bzip2" ,bzip2)
4bd428a7 1999 ("libjpeg" ,libjpeg-turbo)
7b8a7536
EF
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)))
75c33c88 2057 (home-page "http://mars-game.sourceforge.net/")
c23c50c7
RW
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)
4bd428a7 2146 ("libjpeg" ,libjpeg-turbo)
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"))
5afffbef 2283 (patches (search-patches "fifengine-swig-compat.patch"))
2372a5f9
CB
2284 (sha256
2285 (base32
2286 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2287 (build-system cmake-build-system)
2288 (arguments
2289 `(#:tests? #f ; TODO The test running fails to run some tests.
2290 #:modules ((srfi srfi-1)
2291 (guix build cmake-build-system)
2292 (guix build utils))
2293 #:configure-flags
2294 (list
2295 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2296 (assoc-ref %build-inputs "openal")
2297 "/include/AL")
2298 (string-append "-DPYTHON_SITE_PACKAGES="
2299 (assoc-ref %outputs "out")
5afffbef
MB
2300 "/lib/python"
2301 ,(version-major+minor (package-version python))
2302 "/site-packages"))
2372a5f9
CB
2303 #:phases
2304 (modify-phases %standard-phases
2305 (add-after 'unpack 'patch-run_tests.py
2306 (lambda _
2307 ;; Patch the test runner to exit with a status of 1 if any test
2308 ;; fails, to allow detecting failures.
2309 (substitute* "run_tests.py"
2310 (("ERROR\\. One or more tests failed!'\\)")
2311 "ERROR. One or more tests failed!')
2312\t\texit(1)"))
2313 #t))
2314 ;; Run tests after installation so that we can make use of the built
2315 ;; python modules.
2316 (delete 'check)
2317 (add-after 'install 'check
2318 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2319 (define python-version
2320 (let* ((version (last (string-split
2321 (assoc-ref inputs "python")
2322 #\-)))
2323 (components (string-split version #\.))
2324 (major+minor (take components 2)))
2325 (string-join major+minor ".")))
2326
2327 (when tests?
2328 ;; Set PYTHONPATH so that python finds the installed modules.
2329 (setenv "PYTHONPATH"
2330 (string-append (getenv "PYTHONPATH") ":"
2331 (assoc-ref outputs "out")
2332 "/lib/python"
2333 python-version
2334 "/site-packages"))
2335 ;; The tests require an X server.
2336 (system "Xvfb :1 &")
2337 (setenv "DISPLAY" ":1")
2338 (setenv "XDG_RUNTIME_DIR" "/tmp")
2339 ;; Run tests
2340 (chdir ,(string-append "../" name "-" version))
2341 (invoke "python3" "run_tests.py" "-a"))
2342 #t)))))
2343 (inputs
2344 `(("sdl2" ,sdl2)
2345 ("sdl2-image" ,sdl2-image)
2346 ("sdl2-ttf" ,sdl2-ttf)
2347 ("tinyxml" ,tinyxml)
2348 ("openal" ,openal)
2349 ("libogg" ,libogg)
2350 ("glew" ,glew)
2351 ("libvorbis" ,libvorbis)
2352 ("boost" ,boost)
2353 ("fifechan" ,fifechan)
2354 ("swig" ,swig)
2355 ("python" ,python)))
2356 (native-inputs
2357 `(("python" ,python)
2358 ("swig" ,swig)
2359 ("xvfb" ,xorg-server)))
2360 (propagated-inputs
2361 `(("python-future" ,python-future)))
2362 (home-page "https://www.fifengine.net/")
2363 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2364 (description
2365 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2366isometric game engine. Python bindings are included allowing users to create
2367games using Python as well as C++.")
2368 (license license:lgpl2.1+)))
2369
35481e8b
SB
2370(define-public fizmo
2371 (package
2372 (name "fizmo")
50e1d36c 2373 (version "0.8.5")
35481e8b
SB
2374 (source (origin
2375 (method url-fetch)
6ad191ba 2376 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2377 "fizmo-" version ".tar.gz"))
35481e8b
SB
2378 (sha256
2379 (base32
50e1d36c 2380 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2381 (build-system gnu-build-system)
2382 (arguments
2383 '(#:configure-flags
2384 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2385 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2386 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2387 (native-inputs
2388 `(("pkg-config" ,pkg-config)))
2389 (inputs
32199e9a 2390 `(("freetype" ,freetype)
4bd428a7 2391 ("libjpeg" ,libjpeg-turbo)
35481e8b
SB
2392 ("libpng" ,libpng)
2393 ("libsndfile" ,libsndfile)
2394 ("libxml2" ,libxml2)
2395 ("ncurses" ,ncurses)
32199e9a 2396 ("sdl2" ,sdl2)))
6ad191ba 2397 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2398 (synopsis "Z-machine interpreter")
2399 (description
2400 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2401interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2402either by Infocom or created using the Inform compiler.")
2403 (license license:bsd-3)))
2404
fc936b65
DH
2405(define-public gnugo
2406 (package
2407 (name "gnugo")
2408 (version "3.8")
2409 (source (origin
2410 (method url-fetch)
2411 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2412 ".tar.gz"))
2413 (sha256
2414 (base32
2415 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2416 (build-system gnu-build-system)
2417 (inputs `(("readline" ,readline)))
4cc78cb3 2418 (synopsis "Play the game of Go")
7c125ce0
AK
2419 (description
2420 "GNU Go is a program that plays the game of Go, in which players
2421place stones on a grid to form territory or capture other stones. While
2422it can be played directly from the terminal, rendered in ASCII characters,
2423it is also possible to play GNU Go with 3rd party graphical interfaces or
2424even in Emacs. It supports the standard game storage format (SGF, Smart
2425Game Format) and inter-process communication format (GMP, Go Modem
2426Protocol).")
6fd52309 2427 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2428 (license license:gpl3+)))
67fa7a27
CAW
2429
2430(define-public extremetuxracer
2431 (package
2432 (name "extremetuxracer")
101460d4 2433 (version "0.7.5")
67fa7a27
CAW
2434 (source (origin
2435 (method url-fetch)
2436 (uri (string-append
966a543b 2437 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2438 version "/etr-" version ".tar.xz"))
2439 (sha256
2440 (base32
101460d4 2441 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2442 (build-system gnu-build-system)
2443 (native-inputs
2444 `(("pkg-config" ,pkg-config)))
2445 (inputs
b8a35cce
RW
2446 `(("glu" ,glu)
2447 ("sfml" ,sfml)))
5bc0ac96
TGR
2448 (synopsis "High-speed arctic racing game based on Tux Racer")
2449 ;; Snarfed straight from Debian.
67fa7a27
CAW
2450 (description "Extreme Tux Racer, or etracer as it is called for short, is
2451a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2452game is to slide down a snow- and ice-covered mountain as quickly as possible,
2453avoiding the trees and rocks that will slow you down.
2454
2455Collect herrings and other goodies while sliding down the hill, but avoid fish
2456bones.
2457
2458This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2459 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2460 (license license:gpl2+)))
7a4d0509 2461
1a0633e7
RW
2462(define-public supertuxkart
2463 (package
2464 (name "supertuxkart")
3747ecb1 2465 (version "1.1")
1a0633e7
RW
2466 (source
2467 (origin
2468 (method url-fetch)
2469 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2470 version "/supertuxkart-" version "-src.tar.xz"))
2471 (sha256
2472 (base32
3747ecb1 2473 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
2474 (modules '((guix build utils)))
2475 (snippet
2476 ;; Delete bundled library sources
2477 '(begin
56a48582
PL
2478 ;; Supertuxkart uses modified versions of the Irrlicht engine
2479 ;; and the bullet library. The developers gave an explanation
2480 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 2481 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
2482 (for-each delete-file-recursively
2483 '("lib/zlib"
2484 "lib/libpng"
2485 "lib/jpeglib"
2486 "lib/glew"
56a48582
PL
2487 "lib/wiiuse"
2488 "lib/enet"))
1a0633e7
RW
2489 #t))))
2490 (build-system cmake-build-system)
2491 (arguments
2492 `(#:tests? #f ; no check target
2493 #:configure-flags
2494 (list "-DUSE_WIIUSE=0"
56a48582 2495 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2496 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2497 "-DUSE_SYSTEM_GLEW=TRUE"
2498 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
2499 ;; In order to use the system ENet library, IPv6 support (added in
2500 ;; SuperTuxKart version 1.1) must be disabled.
2501 "-DUSE_IPV6=FALSE"
17c3f776
RH
2502 ;; FIXME: needs libopenglrecorder
2503 "-DBUILD_RECORDER=0"
1a0633e7 2504 ;; Irrlicht returns an integer instead of a boolean
56a48582 2505 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2506 (inputs
2507 `(("glew" ,glew)
2508 ("zlib" ,zlib)
2509 ("openal" ,openal)
2510 ("libvorbis" ,libvorbis)
2511 ("freetype" ,freetype)
2512 ("fribidi" ,fribidi)
3747ecb1 2513 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
2514 ("mesa" ,mesa)
2515 ("libx11" ,libx11)
2516 ("libxrandr" ,libxrandr)
2517 ("curl" ,curl)
2518 ;; The following input is needed to build the bundled and modified
2519 ;; version of irrlicht.
4bd428a7 2520 ("libjpeg" ,libjpeg-turbo)
56a48582
PL
2521 ("openssl" ,openssl)
2522 ("enet" ,enet)))
1a0633e7
RW
2523 (native-inputs
2524 `(("pkg-config" ,pkg-config)))
3747ecb1 2525 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
2526 (synopsis "3D kart racing game")
2527 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2528having fun over realism. You can play with up to 4 friends on one PC, racing
2529against each other or just trying to beat the computer; single-player mode is
2530also available.")
2531 (license license:gpl3+)))
2532
a1c1943b
CB
2533(define-public unknown-horizons
2534 (package
2535 (name "unknown-horizons")
2536 (version "2019.1")
2537 (source (origin
2538 (method url-fetch)
2539 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2540 "unknown-horizons/tar.gz/" version))
2541 (file-name (string-append name "-" version ".tar.gz"))
2542 (sha256
2543 (base32
2544 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2545 (build-system python-build-system)
2546 (arguments
2547 '(#:phases
2548 (modify-phases %standard-phases
2549 (add-before 'build 'set-HOME
2550 (lambda _
2551 (setenv "HOME" "/tmp")))
2552 (add-after 'build 'build-extra
2553 (lambda _
2554 (invoke "python3" "./setup.py" "build_i18n")
2555 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2556 #t))
2557 (add-after 'install 'patch
2558 (lambda* (#:key outputs #:allow-other-keys)
2559 (let ((out (assoc-ref outputs "out")))
2560 (substitute* (string-append out "/bin/unknown-horizons")
2561 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2562 (string-append "os.chdir(\""
2563 (assoc-ref outputs "out")
2564 "/share/unknown-horizons\")"))))
2565 #t))
2566 ;; TODO: Run GUI tests as well
2567 (replace 'check
2568 (lambda _
2569 (substitute* "horizons/constants.py"
2570 (("IS_DEV_VERSION = False")
2571 "IS_DEV_VERSION = True"))
2572 (invoke "pytest" "tests")
2573 (substitute* "horizons/constants.py"
2574 (("IS_DEV_VERSION = True")
2575 "IS_DEV_VERSION = False"))
2576 #t)))))
2577 (inputs
2578 `(("fifengine" ,fifengine)
2579 ("python:tk" ,python "tk")
2580 ("python-pillow" ,python-pillow)
2581 ("python-pyyaml" ,python-pyyaml)))
2582 (native-inputs
2583 `(("intltool" ,intltool)
2584
2585 ;; Required for tests
2586 ("python-greenlet" ,python-greenlet)
2587 ("python-polib" ,python-polib)
2588 ("python-pytest" ,python-pytest)
2589 ("python-pytest-mock" ,python-pytest-mock)))
2590 (home-page "http://unknown-horizons.org/")
2591 (synopsis "Isometric realtime strategy, economy and city building simulation")
2592 (description
2593 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2594on economy and city building. Expand your small settlement to a strong and
2595wealthy colony, collect taxes and supply your inhabitants with valuable
2596goods. Increase your power with a well balanced economy and with strategic
2597trade and diplomacy.")
2598 (license (list
2599 license:gpl2+ ; Covers code
2600 license:expat ; tests/dummy.py, ext/polib.py
2601 license:cc-by-sa3.0 ; Covers some media content
2602 license:cc-by3.0 ; Covers some media content
2603 license:bsd-3)))) ; horizons/ext/speaklater.py
2604
7a4d0509
SB
2605(define-public gnujump
2606 (package
2607 (name "gnujump")
2608 (version "1.0.8")
2609 (source (origin
2610 (method url-fetch)
2611 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2612 version ".tar.gz"))
2613 (sha256
2614 (base32
2615 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2616 (build-system gnu-build-system)
2617 (arguments
2618 '(#:phases
2619 (modify-phases %standard-phases
2620 (add-before
2621 'configure 'link-libm
18a613fb
EF
2622 (lambda _ (setenv "LIBS" "-lm")))
2623 (add-after 'install 'create-desktop-entry
2624 (lambda* (#:key outputs #:allow-other-keys)
2625 (let* ((out (assoc-ref outputs "out"))
2626 (apps (string-append out "/share/applications")))
2627 (mkdir-p apps)
2628 (with-output-to-file
2629 (string-append apps "/gnujump.desktop")
2630 (lambda _
2631 (format #t
2632 "[Desktop Entry]~@
2633 Name=GNUjump~@
2634 Comment=Jump up the tower to survive~@
2635 Exec=~a/bin/gnujump~@
2636 Terminal=false~@
2637 Type=Application~@
2638 Categories=Game;ArcadeGame~%"
2639 out)))))))))
7a4d0509
SB
2640 (inputs
2641 `(("glu" ,glu)
b3546174 2642 ("mesa" ,mesa)
7a4d0509
SB
2643 ("sdl" ,sdl)
2644 ("sdl-image" ,sdl-image)
2645 ("sdl-mixer" ,sdl-mixer)))
2646 (home-page "http://gnujump.es.gnu.org/")
2647 (synopsis
2648 "Game of jumping to the next floor, trying not to fall")
2649 (description
2650 "GNUjump is a simple, yet addictive game in which you must jump from
2651platform to platform to avoid falling, while the platforms drop at faster rates
2652the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2653falling, themeable graphics and sounds, and replays.")
2654 (license license:gpl3+)))
159093a7 2655
649220ad 2656(define-public wesnoth
159093a7 2657 (package
649220ad 2658 (name "wesnoth")
b6f1c6bb 2659 (version "1.14.11")
159093a7
SB
2660 (source (origin
2661 (method url-fetch)
de67e922 2662 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2663 (version-major+minor version)
2664 "/wesnoth-" version "/"
2665 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2666 (sha256
2667 (base32
b6f1c6bb 2668 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
159093a7
SB
2669 (build-system cmake-build-system)
2670 (arguments
53402d43 2671 `(#:tests? #f)) ;no check target
159093a7 2672 (native-inputs
b94a6ca0 2673 `(("gettext" ,gettext-minimal)
159093a7
SB
2674 ("pkg-config" ,pkg-config)))
2675 (inputs
2676 `(("boost" ,boost)
2677 ("dbus" ,dbus)
2678 ("fribidi" ,fribidi)
2679 ("libvorbis" ,libvorbis)
e554d43d 2680 ("openssl" ,openssl)
159093a7 2681 ("pango" ,pango)
e554d43d
AI
2682 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2683 (home-page "https://www.wesnoth.org/")
159093a7
SB
2684 (synopsis "Turn-based strategy game")
2685 (description
2686 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2687with several single player campaigns, and multiplayer games (both networked and
2688local).
2689
2690Battle for control on a range of maps, using variety of units which have
2691advantages and disadvantages against different types of attacks. Units gain
2692experience and advance levels, and are carried over from one scenario to the
2693next campaign.")
2694 (license license:gpl2+)))
c449a076 2695
649220ad
NG
2696(define-public the-battle-for-wesnoth
2697 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2698
649220ad 2699(define-public wesnoth-server
75abd864 2700 (package
649220ad
NG
2701 (inherit wesnoth)
2702 (name "wesnoth-server")
75abd864
AI
2703 (inputs
2704 `(("boost" ,boost)
e554d43d
AI
2705 ("icu4c" ,icu4c)
2706 ("openssl" ,openssl)
2707 ("sdl2" ,sdl2)))
75abd864 2708 (arguments
e554d43d
AI
2709 `(#:configure-flags '("-DENABLE_GAME=OFF")
2710 ,@(package-arguments wesnoth)))
75abd864
AI
2711 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2712 (description "This package contains a dedicated server for @emph{The
2713Battle for Wesnoth}.")))
2714
649220ad
NG
2715(define-public the-battle-for-wesnoth-server
2716 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2717
c449a076
EB
2718(define-public gamine
2719 (package
2720 (name "gamine")
87683add 2721 (version "1.6")
c449a076
EB
2722 (source (origin
2723 (method url-fetch)
2724 (uri (string-append "mirror://sourceforge/gamine-game/"
2725 "gamine-" version ".tar.gz"))
2726 (sha256
2727 (base32
87683add 2728 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2729 (build-system gnu-build-system)
2730 (native-inputs
2731 `(("pkg-config" ,pkg-config)
2732 ("intltool" ,intltool)))
2733 (inputs
2734 `(("gstreamer" ,gstreamer)
87683add
TGR
2735 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2736 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2737 ("gtk+" ,gtk+)))
2738 (arguments
2739 `(#:tests? #f
2740 #:make-flags
2741 (let ((out (assoc-ref %outputs "out")))
2742 (list (string-append "PREFIX=" out)
2743 (string-append "SYSCONFDIR=" out "/etc")))
2744 #:phases
2745 (modify-phases %standard-phases
2746 (delete 'configure)
2747 (add-after
2748 'install 'wrap-gamine
2749 (lambda* (#:key outputs #:allow-other-keys)
2750 (let ((out (assoc-ref outputs "out"))
2751 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2752 (wrap-program (string-append out "/bin/gamine")
2753 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2754 #t)))))
2755 (home-page "http://gamine-game.sourceforge.net/")
2756 (synopsis "Mouse and keyboard discovery for children")
2757 (description
2758 "Gamine is a game designed for young children who are learning to use the
2759mouse and keyboard. The child uses the mouse to draw colored dots and lines
2760on the screen and keyboard to display letters.")
2761 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2762 (license license:gpl3)))
2763
2e2ed3cb
AK
2764(define-public manaplus
2765 (package
2766 (name "manaplus")
2b744c21 2767 (version "1.9.3.23")
2e2ed3cb
AK
2768 (source (origin
2769 (method url-fetch)
2770 (uri (string-append
074dd909 2771 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2772 version "/manaplus-" version ".tar.xz"))
2773 (sha256
2774 (base32
2b744c21 2775 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2776 (build-system gnu-build-system)
2777 (arguments
2778 '(#:configure-flags
2779 (list (string-append "CPPFLAGS=-I"
2780 (assoc-ref %build-inputs "sdl-union")
2781 "/include/SDL"))))
2782 (native-inputs
2783 `(("pkg-config" ,pkg-config)))
2784 (inputs
2785 `(("glu" ,glu)
2786 ("curl" ,curl)
2787 ("libxml2" ,libxml2)
2788 ("mesa" ,mesa)
2e2ed3cb 2789 ("sdl-union" ,(sdl-union))))
074dd909 2790 (home-page "https://manaplus.org")
2e2ed3cb
AK
2791 (synopsis "Client for 'The Mana World' and similar games")
2792 (description
2793 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2794fully supported client for @uref{http://www.themanaworld.org, The mana
2795world}, @uref{http://evolonline.org, Evol Online} and
2796@uref{http://landoffire.org, Land of fire}.")
2797 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2798 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2799 ;; The rest is under GPL2+.
2800 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2801
e9687748
AS
2802(define openttd-engine
2803 (package
2804 (name "openttd-engine")
532dba49 2805 (version "1.9.3")
e9687748
AS
2806 (source
2807 (origin (method url-fetch)
532dba49 2808 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2809 version "/openttd-" version "-source.tar.xz"))
2810 (sha256
2811 (base32
532dba49 2812 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2813 (modules '((guix build utils)))
2814 (snippet
2815 ;; The DOS port contains proprietary software.
6cbee49d
MW
2816 '(begin
2817 (delete-file-recursively "os/dos")
2818 #t))))
e9687748
AS
2819 (build-system gnu-build-system)
2820 (arguments
2821 `(#:tests? #f ; no "check" target
2822 #:phases
2823 (modify-phases %standard-phases
2824 ;; The build process fails if the configure script is passed the
2825 ;; option "--enable-fast-install".
2826 (replace 'configure
857b2f53
AI
2827 (lambda* (#:key inputs outputs (configure-flags '())
2828 #:allow-other-keys)
e9687748
AS
2829 (let ((out (assoc-ref outputs "out"))
2830 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2831 (apply invoke "./configure"
2832 (string-append "--prefix=" out)
2833 ;; Provide the "lzo" path.
2834 (string-append "--with-liblzo2="
2835 lzo "/lib/liblzo2.a")
2836 ;; Put the binary in 'bin' instead of 'games'.
2837 "--binary-dir=bin"
2838 configure-flags)))))))
e9687748
AS
2839 (native-inputs `(("pkg-config" ,pkg-config)))
2840 (inputs
3a48d055 2841 `(("allegro" ,allegro)
e9687748
AS
2842 ("fontconfig" ,fontconfig)
2843 ("freetype" ,freetype)
2844 ("icu4c" ,icu4c)
2845 ("libpng" ,libpng)
2846 ("lzo" ,lzo)
2847 ("sdl" ,sdl)
2848 ("xz" ,xz)
2849 ("zlib" ,zlib)))
4cb0b5bf 2850 (synopsis "Transportation economics simulator game")
e9687748
AS
2851 (description "OpenTTD is a game in which you transport goods and
2852passengers by land, water and air. It is a re-implementation of Transport
2853Tycoon Deluxe with many enhancements including multiplayer mode,
2854internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2855autoreplace and autoupdate vehicles. This package only includes the game
2856engine. When you start it you will be prompted to download a graphics set.")
532dba49 2857 (home-page "https://www.openttd.org/")
e9687748
AS
2858 ;; This package is GPLv2, except for a few files located in
2859 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2860 ;; licenses. In addition, this software contains an in-game downloader
2861 ;; from which the user may find non-functional data licensed under
2862 ;; different terms.
2863 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2864
4df9495e
KK
2865(define openttd-opengfx
2866 (package
2867 (name "openttd-opengfx")
894fbb33 2868 (version "0.5.5")
4df9495e
KK
2869 (source
2870 (origin
2871 (method url-fetch)
2872 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2873 version "/opengfx-" version "-source.tar.xz"))
2874 (sha256
2875 (base32
894fbb33 2876 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2877 (build-system gnu-build-system)
2878 (arguments
2879 '(#:make-flags (list "CC=gcc"
2880 (string-append "INSTALL_DIR="
2881 (assoc-ref %outputs "out")
857b2f53 2882 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2883 #:phases
2884 (modify-phases %standard-phases
2885 (replace 'configure
2886 (lambda _
2887 ;; Make sure HOME is writable for GIMP.
2888 (setenv "HOME" (getcwd))
2889
2890 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2891 ;; dos2unix from receiving its version information as a flag.
2892 (substitute* "Makefile"
2893 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2894 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2895 ;; The check phase for this package only checks the md5sums of the built
2896 ;; GRF files against the md5sums of the release versions. Because we use
2897 ;; different software versions than upstream does, some of the md5sums
2898 ;; are different. However, the package is still reproducible, it's safe
2899 ;; to disable this test.
c0959cc9
AI
2900 #:tests? #f
2901 #:parallel-build? #f))
4df9495e
KK
2902 (native-inputs `(("dos2unix" ,dos2unix)
2903 ("gimp" ,gimp)
2904 ("grfcodec" ,grfcodec)
2905 ("nml" ,nml)
2906 ("python" ,python-2)))
2907 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2908 (synopsis "Base graphics set for OpenTTD")
2909 (description
2910 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2911set that aims to ensure the best possible out-of-the-box experience.
2912
2913OpenGFX provides you with...
2914@enumerate
2915@item All graphics you need to enjoy OpenTTD.
2916@item Uniquely drawn rail vehicles for every climate.
2917@item Completely snow-aware rivers.
2918@item Different river and sea water.
2919@item Snow-aware buoys.
2920@end enumerate")
2921 (license license:gpl2)))
2922
c17b0790
AI
2923(define openttd-opensfx
2924 (package
2925 (name "openttd-opensfx")
2926 (version "0.2.3")
2927 (source
2928 (origin
2929 (method url-fetch)
2930 (uri (string-append
2931 "https://binaries.openttd.org/extra/opensfx/"
2932 version "/opensfx-" version "-source.tar.gz"))
2933 (sha256
2934 (base32
2935 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2936 (build-system gnu-build-system)
2937 (native-inputs
2938 `(("catcodec" ,catcodec)
61506fe5 2939 ("python" ,python-2)))
c17b0790
AI
2940 (arguments
2941 `(#:make-flags
2942 (list (string-append "INSTALL_DIR=" %output
2943 "/share/games/openttd/baseset/opensfx"))
2944 #:phases
2945 (modify-phases %standard-phases
2946 (add-after 'unpack 'make-reproducible
2947 (lambda _
2948 ;; Remove the time dependency of the installed tarball by setting
2949 ;; the modification times if its members to 0.
2950 (substitute* "scripts/Makefile.def"
2951 (("-cf") " --mtime=@0 -cf"))
2952 #t))
2953 (delete 'configure))))
2954 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2955 (synopsis "Base sounds for OpenTTD")
2956 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2957it possible to play OpenTTD without requiring the proprietary sound files from
2958the original Transport Tycoon Deluxe.")
2959 (license license:cc-sampling-plus-1.0)))
2960
823e1218
AI
2961(define openttd-openmsx
2962 (package
2963 (name "openttd-openmsx")
2964 (version "0.3.1")
2965 (source
2966 (origin
2967 (method url-fetch)
2968 (uri (string-append
2969 "https://binaries.openttd.org/extra/openmsx/"
2970 version "/openmsx-" version "-source.tar.gz"))
2971 (sha256
2972 (base32
2973 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2974 (build-system gnu-build-system)
2975 (native-inputs
61506fe5 2976 `(("python" ,python-2)))
823e1218
AI
2977 (arguments
2978 `(#:make-flags
2979 (list (string-append "INSTALL_DIR=" %output
2980 "/share/games/openttd/baseset"))
2981 #:phases
2982 (modify-phases %standard-phases
2983 (delete 'configure)
2984 (add-after 'install 'post-install
2985 ;; Rename openmsx-version to openmsx
2986 (lambda* (#:key outputs #:allow-other-keys)
2987 (let ((install-directory (string-append (assoc-ref outputs "out")
2988 "/share/games/openttd/baseset")))
2989 (rename-file (string-append install-directory "/openmsx-" ,version)
2990 (string-append install-directory "/openmsx"))
2991 #t))))))
2992 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2993 (synopsis "Music set for OpenTTD")
2994 (description "OpenMSX is a music set for OpenTTD which makes it possible
2995to play OpenTTD without requiring the proprietary music from the original
2996Transport Tycoon Deluxe.")
2997 (license license:gpl2)))
2998
e9687748
AS
2999(define-public openttd
3000 (package
3001 (inherit openttd-engine)
ca508f1c
KK
3002 (name "openttd")
3003 (arguments
857b2f53
AI
3004 `(#:configure-flags
3005 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3006 "/bin/timidity"))
3007 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3008 ((#:phases phases)
3009 `(modify-phases ,phases
3010 (add-after 'install 'install-data
3011 (lambda* (#:key inputs outputs #:allow-other-keys)
3012 (for-each
3013 (lambda (input)
3014 (copy-recursively (assoc-ref inputs input)
3015 (assoc-ref outputs "out")))
3016 (list "opengfx" "openmsx" "opensfx"))
3017 #t)))))))
3018 (inputs
3019 `(("timidity++" ,timidity++)
3020 ,@(package-inputs openttd-engine)))
ca508f1c
KK
3021 (native-inputs
3022 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
3023 ("openmsx" ,openttd-openmsx)
3024 ("opensfx" ,openttd-opensfx)
ca508f1c 3025 ,@(package-native-inputs openttd-engine)))))
e9687748 3026
0c6ade0b
RH
3027(define openrct2-title-sequences
3028 (package
3029 (name "openrct2-title-sequences")
3030 (version "0.1.2")
3031 (source
3032 (origin
3033 (method url-fetch)
3034 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3035 version "/title-sequence-v" version ".zip"))
3036 (file-name (string-append name "-" version ".zip"))
3037 (sha256
3038 (base32
3039 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3040 (build-system trivial-build-system)
3041 (native-inputs
3042 `(("bash" ,bash)
3043 ("coreutils" ,coreutils)
3044 ("unzip" ,unzip)))
3045 (arguments
3046 `(#:modules ((guix build utils))
3047 #:builder
3048 (begin
3049 (use-modules (guix build utils))
3050 (let* ((out (assoc-ref %outputs "out"))
3051 (openrct2-title-sequences (string-append out
3052 "/share/openrct2/title-sequences"))
3053 (source (assoc-ref %build-inputs "source"))
3054 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3055 (copy-file source (string-append ,name "-" ,version ".zip"))
3056 (invoke unzip (string-append ,name "-" ,version ".zip"))
3057 (delete-file (string-append ,name "-" ,version ".zip"))
3058 (mkdir-p openrct2-title-sequences)
3059 (copy-recursively "."
3060 openrct2-title-sequences)
3061 #t))))
3062 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3063 (synopsis "Title sequences for OpenRCT2")
3064 (description
3065 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3066 (license license:gpl3+)))
3067
3068(define openrct2-objects
3069 (package
3070 (name "openrct2-objects")
924e6993 3071 (version "1.0.9")
0c6ade0b
RH
3072 (source
3073 (origin
3074 (method url-fetch)
3075 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3076 version "/objects.zip"))
3077 (file-name (string-append name "-" version ".zip"))
3078 (sha256
924e6993 3079 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
3080 (build-system trivial-build-system)
3081 (native-inputs
3082 `(("bash" ,bash)
3083 ("coreutils" ,coreutils)
3084 ("unzip" ,unzip)))
3085 (arguments
3086 `(#:modules ((guix build utils))
3087 #:builder
3088 (begin
3089 (use-modules (guix build utils))
3090 (let* ((out (assoc-ref %outputs "out"))
3091 (openrct2-objects (string-append out
3092 "/share/openrct2/objects"))
3093 (source (assoc-ref %build-inputs "source"))
3094 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3095 (copy-file source (string-append ,name "-" ,version ".zip"))
3096 (invoke unzip (string-append ,name "-" ,version ".zip"))
3097 (delete-file (string-append ,name "-" ,version ".zip"))
3098 (mkdir-p openrct2-objects)
3099 (copy-recursively "."
3100 openrct2-objects)
3101 #t))))
3102 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3103 (synopsis "Objects for OpenRCT2")
3104 (description
3105 "openrct2-objects is a set of objects for OpenRCT2.")
3106 (license license:gpl3+)))
3107
7aafb3b3
RH
3108(define-public openrct2
3109 (package
3110 (name "openrct2")
b6909d47 3111 (version "0.2.4")
7aafb3b3
RH
3112 (source
3113 (origin
2e5a0690
TGR
3114 (method git-fetch)
3115 (uri (git-reference
3116 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3117 (commit (string-append "v" version))))
3118 (file-name (git-file-name name version))
7aafb3b3 3119 (sha256
b6909d47 3120 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
3121 (build-system cmake-build-system)
3122 (arguments
940c2c5c
RH
3123 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3124 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 3125 #:tests? #f ; tests require network access
7aafb3b3 3126 #:phases
6457509c
TGR
3127 (modify-phases %standard-phases
3128 (add-after 'unpack 'fix-usr-share-paths&add-data
3129 (lambda* (#:key inputs outputs #:allow-other-keys)
3130 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3131 (objects (assoc-ref inputs "openrct2-objects")))
3132 ;; Fix some references to /usr/share.
3133 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3134 (("/usr/share")
3135 (string-append (assoc-ref %outputs "out") "/share")))
3136 (copy-recursively
3137 (string-append titles "/share/openrct2/title-sequences")
3138 "data/title")
3139 (copy-recursively
3140 (string-append objects "/share/openrct2/objects")
3141 "data/object"))))
8c14f7f8 3142 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
3143 (lambda _
3144 ;; Don't treat warnings as errors.
3145 (substitute* "CMakeLists.txt"
8c14f7f8
MB
3146 (("-Werror") ""))
3147 #t)))))
c695fb76
TGR
3148 (inputs `(("curl" ,curl)
3149 ("fontconfig" ,fontconfig)
3150 ("freetype" ,freetype)
0c6ade0b 3151 ("icu4c" ,icu4c)
c695fb76
TGR
3152 ("jansson" ,jansson)
3153 ("libpng" ,libpng)
3154 ("libzip" ,libzip)
3155 ("mesa" ,mesa)
0c6ade0b
RH
3156 ("openrct2-objects" ,openrct2-objects)
3157 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
3158 ("openssl" ,openssl)
3159 ("sdl2" ,sdl2)
3160 ("speexdsp" ,speexdsp)
3161 ("zlib" ,zlib)))
7aafb3b3 3162 (native-inputs
63d4ef52 3163 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
3164 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3165 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3166 (description "OpenRCT2 is a free software re-implementation of
3167RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3168maintaining an amusement park containing attractions, shops and facilities.
3169
3170Note that this package does @emph{not} provide the game assets (sounds,
3171images, etc.)")
3172 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3173 ;; regarding assets.
3174 (license license:gpl3+)))
3175
e3f755f4
EB
3176(define-public pinball
3177 (package
3178 (name "pinball")
3179 (version "0.3.1")
3180 (source
3181 (origin (method url-fetch)
3182 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3183 "pinball-" version "/"
3184 "pinball-" version ".tar.gz"))
3185 (sha256
3186 (base32
3187 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3188 (patches (search-patches "pinball-const-fix.patch"
3189 "pinball-cstddef.patch"
3190 "pinball-missing-separators.patch"
3191 "pinball-src-deps.patch"
3192 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3193 (build-system gnu-build-system)
3194 (inputs
3195 `(("glu" ,glu)
3196 ("mesa" ,mesa)
3197 ("sdl" ,sdl)
3198 ("sdl-image" ,sdl-image)
3199 ("sdl-mixer" ,sdl-mixer)))
3200 (arguments
3201 '(#:configure-flags
3202 (list (string-append "CPPFLAGS=-I"
3203 (assoc-ref %build-inputs "sdl-image")
3204 "/include/SDL -I"
3205 (assoc-ref %build-inputs "sdl-mixer")
3206 "/include/SDL"))))
3207 (home-page "http://pinball.sourceforge.net")
3208 (synopsis "Pinball simulator")
3209 (description "The Emilia Pinball Project is a pinball simulator. There
3210are only two levels to play with, but they are very addictive.")
3211 (license license:gpl2)))
7e2e1155
RF
3212
3213(define-public pioneers
3214 (package
3215 (name "pioneers")
59e8a57d 3216 (version "15.5")
7e2e1155
RF
3217 (source (origin
3218 (method url-fetch)
3219 (uri (string-append "http://downloads.sourceforge.net/pio/"
3220 "pioneers-" version ".tar.gz"))
3221 (sha256
3222 (base32
59e8a57d 3223 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3224 (build-system gnu-build-system)
59e8a57d
TGR
3225 (inputs `(("avahi" ,avahi)
3226 ("gtk+" ,gtk+)
3227 ("librsvg" ,librsvg)))
7e2e1155 3228 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3229 ("itstool" ,itstool)
3230 ("libxml2" ,libxml2)
7e2e1155
RF
3231 ("pkg-config" ,pkg-config)))
3232 (synopsis "Board game inspired by The Settlers of Catan")
3233 (description "Pioneers is an emulation of the board game The Settlers of
3234Catan. It can be played on a local network, on the internet, and with AI
3235players.")
3236 (home-page "http://pio.sourceforge.net/")
8763fdf8 3237 (license license:gpl2+)))
fea1f275 3238
d7c4619b
AE
3239(define-public einstein
3240 (package
3241 (name "einstein")
3242 (version "2.0")
3243 (source (origin
3244 (method url-fetch)
d4cf5b01 3245 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3246 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3247 (sha256
3248 (base32
3249 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3250 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3251 (build-system gnu-build-system)
3252 (inputs
3253 `(("freetype" ,freetype)
3254 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3255 ("zlib" ,zlib)))
3256 (native-inputs
3257 `(("font-dejavu" ,font-dejavu)))
3258 (arguments
3259 `(#:tests? #f ; no check target
3260 #:phases
3261 (modify-phases %standard-phases
3262 (replace 'configure
3263 (lambda* (#:key outputs inputs #:allow-other-keys)
3264 (let ((out (assoc-ref outputs "out"))
3265 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3266 "/share/fonts/truetype/DejaVuSans.ttf")))
3267 (substitute* "Makefile"
3268 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3269 ;; The patch above registers a free font for use by the binary,
3270 ;; but the font is copied during the compile phase into a
3271 ;; resources file, so we need to make the ttf file available.
3272 (symlink dejavu "res/DejaVuSans.ttf")
3273 #t))))))
3274 (synopsis "Logic puzzle game")
3275 (description "The goal of this logic game is to open all cards in a 6x6
3276grid, using a number of hints as to their relative position. The game idea
3277is attributed to Albert Einstein.")
3278 ;; The original home page has disappeared.
3279 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3280 "http://games.flowix.com/en/index.html"))
3281 ;; License according to
3282 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3283 ;; The source code is a DFSG-sanitized tarball and does not contain any
3284 ;; license information.
3285 (license license:gpl3+)))
3286
d381962f 3287(define-public powwow
3288 (package
3289 (name "powwow")
90d37add 3290 (version "1.2.19")
d381962f 3291 (source (origin
3292 (method url-fetch)
3293 (uri (string-append
cc30a472 3294 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3295 version ".tar.gz"))
d381962f 3296 (sha256
3297 (base32
90d37add 3298 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3299 (inputs
3300 `(("ncurses" ,ncurses)))
3301 (build-system gnu-build-system)
36aff81a 3302 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3303 (synopsis "MUD and telnet client")
3304 (description
3305 "POWWOW is a client software which can be used for telnet as well as for
3306@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3307the chat server psyced with the specific config located at
3308http://lavachat.symlynx.com/unix/")
3309 (license license:gpl2+)))
158f5734 3310
5ef819cc 3311(define-public red-eclipse
7fa9a685
KK
3312 (let ((release "2.0.0")
3313 (revision 0))
158f5734 3314 (package
5b8a8543 3315 (name "red-eclipse")
42abb842
AFN
3316 (version (if (zero? revision)
3317 release
3318 (string-append release "-"
3319 (number->string revision))))
bb7c071b
TGR
3320 (source
3321 (origin
3322 (method git-fetch)
3323 (uri (git-reference
7fa9a685
KK
3324 (url "https://github.com/redeclipse/base.git")
3325 (commit (string-append "v" release))
3326 (recursive? #t))) ; for game data
bb7c071b
TGR
3327 (file-name (git-file-name name version))
3328 (sha256
dc4469e9
KK
3329 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3330 (modules '((guix build utils)))
3331 (snippet
3332 ;; Remove proprietary libraries and other pre-compiled binaries.
3333 '(begin
3334 (delete-file-recursively "bin")
3335 #t))))
158f5734
KY
3336 (build-system gnu-build-system)
3337 (arguments
3338 `(#:tests? #f ; no check target
3339 #:make-flags (list "CC=gcc" "-Csrc"
3340 (string-append "INSTDIR="
42abb842
AFN
3341 (assoc-ref %outputs "out") "/bin")
3342 (string-append "prefix="
3343 (assoc-ref %outputs "out")))
158f5734
KY
3344 #:phases
3345 (modify-phases %standard-phases
7fa9a685 3346 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
3347 (lambda* (#:key outputs #:allow-other-keys)
3348 (substitute* "src/engine/server.cpp"
7fa9a685
KK
3349 (("data = \"data\"")
3350 (string-append "data = \""
42abb842 3351 (assoc-ref outputs "out")
7fa9a685 3352 "/share/redeclipse/data\"")))
42abb842 3353 #t))
158f5734
KY
3354 (delete 'configure) ; no configure script
3355 (add-after 'set-paths 'set-sdl-paths
3356 (lambda* (#:key inputs #:allow-other-keys)
3357 (setenv "CPATH"
3358 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3359 "/include/SDL2:"
3360 (or (getenv "CPATH") "")))
158f5734
KY
3361 #t))
3362 (add-after 'install 'copy-data
3363 (lambda* (#:key outputs #:allow-other-keys)
3364 (let ((out (assoc-ref outputs "out")))
3365 (copy-recursively "config"
3366 (string-append out "/config"))
66c65aaf
KK
3367 (copy-file "doc/examples/servinit.cfg"
3368 (string-append out "/config/servinit.cfg"))
158f5734 3369 (copy-recursively "data"
42abb842
AFN
3370 (string-append out "/share/redeclipse/data"))
3371 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3372 (symlink (string-append out "/share/redeclipse/data")
3373 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3374 #t))
3375 (add-after 'copy-data 'wrap-program
3376 (lambda* (#:key inputs outputs #:allow-other-keys)
3377 (let* ((out (assoc-ref outputs "out"))
3378 (bin (string-append out "/bin")))
3379 (with-directory-excursion bin
3380 (rename-file "redeclipse_linux"
3381 ".redeclipse_linux-real")
3382 (rename-file "redeclipse_server_linux"
3383 ".redeclipse_server_linux-real")
3384 (call-with-output-file "redeclipse_linux"
3385 (lambda (port)
3386 (format port "#!~a/bin/sh
3387# Run the thing from its home, otherwise it just bails out.
3388cd \"~a\"
3389exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3390 (assoc-ref inputs "bash") ;implicit input
3391 (string-append out)
3392 (string-append bin))))
3393 (call-with-output-file "redeclipse_server_linux"
3394 (lambda (port)
3395 (format port "#!~a/bin/sh
3396# Run the thing from its home, otherwise it just bails out.
3397cd \"~a\"
3398exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3399 (assoc-ref inputs "bash") ;implicit input
3400 (string-append out)
3401 (string-append bin))))
3402 (chmod "redeclipse_linux" #o555)
3403 (chmod "redeclipse_server_linux" #o555)))
3404 #t)))))
631b20f9
TGR
3405 (native-inputs
3406 `(("pkg-config" ,pkg-config)))
158f5734
KY
3407 (inputs
3408 `(("curl" ,curl)
7fa9a685 3409 ("freetype" ,freetype)
158f5734 3410 ("glu" ,glu)
14b865dc
KK
3411 ("sdl-union" ,(sdl-union (list sdl2
3412 sdl2-image
7fa9a685 3413 sdl2-mixer)))))
dc4469e9 3414 (home-page "https://redeclipse.net/")
158f5734
KY
3415 (synopsis "Arena shooter derived from the Cube 2 engine")
3416 (description
3417 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3418Offering an innovative parkour system and distinct but all potent weapons,
3419Red Eclipse provides fast paced and accessible gameplay.")
3420 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 3421 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
3422 (license (list license:expat
3423 license:zlib
dc4469e9 3424 license:cc-by-sa4.0
158f5734
KY
3425 license:cc-by-sa3.0
3426 license:cc-by3.0
dc4469e9
KK
3427 license:cc0
3428 license:public-domain
3429 license:silofl1.1)))))
bcd2982f 3430
0fb9a15b
LC
3431(define-public grue-hunter
3432 (package
3433 (name "grue-hunter")
3434 (version "1.0")
3435 (source (origin
3436 (method url-fetch)
c41b2ffb 3437 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3438 (sha256
3439 (base32
3440 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3441 (build-system trivial-build-system) ; no Makefile.PL
3442 (arguments `(#:modules ((guix build utils))
3443 #:builder
3444 (begin
3445 (use-modules (guix build utils))
3446 (use-modules (srfi srfi-1))
3447
3448 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3449 (perl (string-append (assoc-ref %build-inputs
3450 "perl")
3451 "/bin"))
5edf2f05 3452 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3453 "gzip")
5edf2f05 3454 "/bin/gzip"))
0fb9a15b
LC
3455 (tar (string-append (assoc-ref %build-inputs
3456 "tar")
3457 "/bin/tar"))
3458 (out (assoc-ref %outputs "out"))
3459 (bin (string-append out "/bin"))
6d57723a
TGR
3460 (doc (string-append out
3461 "/share/doc/grue-hunter")))
e3cfef22
MW
3462 (copy-file tarball "grue-hunter.tar.gz")
3463 (invoke gzip "-d" "grue-hunter.tar.gz")
3464 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3465
e3cfef22
MW
3466 (mkdir-p bin)
3467 (copy-file "grue-hunter/gh.pl"
3468 (string-append bin "/grue-hunter"))
3469 (patch-shebang (string-append bin "/grue-hunter")
3470 (list perl))
3471
3472 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3473
e3cfef22 3474 #t))))
0fb9a15b
LC
3475 (inputs `(("perl" ,perl)
3476 ("tar" ,tar)
3477 ("gzip" ,gzip)
3478 ("tarball" ,source)))
3479 (home-page "http://jxself.org/grue-hunter.shtml")
3480 (synopsis "Text adventure game")
3481 (description
3482 "Grue Hunter is a text adventure game written in Perl. You must make
3483your way through an underground cave system in search of the Grue. Can you
3484capture it and get out alive?")
3485 (license license:agpl3+)))
f317aeb4 3486
ffed9eab
MB
3487(define-public lierolibre
3488 (package
3489 (name "lierolibre")
3490 (version "0.5")
3491 (source (origin
3492 (method url-fetch)
3493 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3494 version "/+download/lierolibre-"
3495 version ".tar.xz"))
3496 (sha256
3497 (base32
3498 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3499 (patches
3500 (search-patches "lierolibre-check-unaligned-access.patch"
3501 "lierolibre-try-building-other-arch.patch"
3502 "lierolibre-remove-arch-warning.patch"
3503 "lierolibre-newer-libconfig.patch"
3504 "lierolibre-is-free-software.patch"))
3505 (modules '((guix build utils)))
3506 (snippet
3507 '(begin
3508 ;; Delete pre-compiled files.
3509 (delete-file "data/LIERO.CHR")
3510 (delete-file "data/LIERO.SND")
3511 #t))))
3512 (build-system gnu-build-system)
3513 (native-inputs
3514 `(("imagemagick" ,imagemagick)
3515 ("pkg-config" ,pkg-config)
3516 ("util-linux" ,util-linux)
3517 ("sox" ,sox)))
3518 (inputs
3519 `(("boost" ,boost)
3520 ("libconfig" ,libconfig)
3521 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3522 ("zlib" ,zlib)))
3523 (home-page "https://gitlab.com/lierolibre/lierolibre")
3524 (synopsis "Old-school earthworm action game")
3525 (description
3526 "lierolibre is an earthworm action game where you fight another player
3527(or the computer) underground using a wide array of weapons.
3528
3529Features:
3530@itemize
3531@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3532and Game of Tag, plus AI-players without true intelligence!
3533@item Dat nostalgia.
3534@item Extensions via a hidden F1 menu:
3535@itemize
3536@item Replays
3537@item Game controller support
3538@item Powerlevel palettes
3539@end itemize
3540@item Ability to write game variables to plain text files.
3541@item Ability to load game variables from both EXE and plain text files.
3542@item Scripts to extract and repack graphics, sounds and levels.
3543@end itemize
3544
3545To switch between different window sizes, use F6, F7 and F8, to switch to
3546fullscreen, use F5 or Alt+Enter.")
3547 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3548 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3549
f317aeb4
KK
3550(define-public warzone2100
3551 (package
3552 (name "warzone2100")
f475b90c 3553 (version "3.2.3")
d8f4aefe
TGR
3554 (source
3555 (origin
3556 (method url-fetch)
3557 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3558 "unsupported/Warzone2100-"
3559 (version-major+minor version) "/" version
3560 "/warzone2100-" version ".tar.xz"))
3561 (sha256
3562 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3563 (build-system gnu-build-system)
3564 (arguments
f475b90c
KK
3565 `(#:configure-flags '("--with-distributor=Guix")
3566 #:phases
c5d17d50
RW
3567 (modify-phases %standard-phases
3568 (add-after 'unpack 'link-tests-with-qt
3569 (lambda _
3570 (substitute* "tests/Makefile.in"
3571 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3572 (string-append prefix "$(QT5_LIBS) ")))
3573 #t))
f475b90c 3574 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3575 (lambda _
f475b90c
KK
3576 (substitute* "tests/ivis_linktest.cpp"
3577 (("iV_DrawTextRotated.*;")
3578 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3579 "100, 100, 0.0f, font_regular);")))
c5d17d50 3580 #t)))))
f475b90c
KK
3581 (native-inputs `(("gettext" ,gettext-minimal)
3582 ("pkg-config" ,pkg-config)
f317aeb4
KK
3583 ("unzip" ,unzip)
3584 ("zip" ,zip)))
3585 (inputs `(("fontconfig" ,fontconfig)
3586 ("freetype" ,freetype)
3587 ("fribidi" ,fribidi)
3588 ("glew" ,glew)
f475b90c 3589 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3590 ("libtheora" ,libtheora)
3591 ("libvorbis" ,libvorbis)
3592 ("libxrandr" ,libxrandr)
3593 ("openal" ,openal)
3594 ("physfs" ,physfs)
77c729ba
RW
3595 ("qtbase" ,qtbase)
3596 ("qtscript" ,qtscript)
c5d17d50 3597 ("openssl" ,openssl)
c5d17d50 3598 ("sdl2" ,sdl2)))
d3eae3f1 3599 (home-page "https://wz2100.net")
f317aeb4
KK
3600 (synopsis "3D Real-time strategy and real-time tactics game")
3601 (description
3602 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3603modes. An extensive tech tree with over 400 different technologies, combined
3604with the unit design system, allows for a wide variety of possible units and
3605tactics.")
3606 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3607 (license (list license:bsd-3
3608 license:cc0
3609 license:cc-by-sa3.0
3610 license:expat
3611 license:gpl2+
3612 license:lgpl2.1+))))
4b670539 3613
649220ad 3614(define-public starfighter
4b670539 3615 (package
649220ad 3616 (name "starfighter")
8172ab2d 3617 (version "2.0.0.3")
4b670539 3618 (source (origin
8172ab2d
KK
3619 (method url-fetch)
3620 (uri (string-append
3621 "https://github.com/pr-starfighter/starfighter/releases"
3622 "/download/v" version "/starfighter-"
3623 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3624 (sha256
3625 (base32
8172ab2d 3626 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3627 (build-system gnu-build-system)
4b670539 3628 (native-inputs
8172ab2d 3629 `(("pkg-config" ,pkg-config)))
4b670539 3630 (inputs
1fe84f5d
KK
3631 `(("pango" ,pango)
3632 ("sdl2" ,sdl2)
4b670539 3633 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3634 ("sdl2-mixer" ,sdl2-mixer)
3635 ("sdl2-ttf" ,sdl2-ttf)))
3636 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3637 (synopsis "2D scrolling shooter game")
3638 (description
3639 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3640dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3641their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3642way, you will encounter new foes, make new allies, and assist local rebels
3643in strikes against the evil corporation.")
3644 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3645 (license (list license:gpl3+
3646 license:cc-by3.0
3647 license:cc-by-sa3.0
3648 license:cc0
3649 license:public-domain))))
35e2e495 3650
649220ad
NG
3651(define-public project-starfighter
3652 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3653
35e2e495
KK
3654(define-public chromium-bsu
3655 (package
3656 (name "chromium-bsu")
08722837 3657 (version "0.9.16.1")
35e2e495
KK
3658 (source (origin
3659 (method url-fetch)
e464bd60 3660 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3661 "/Chromium B.S.U. source code/"
e464bd60 3662 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3663 (sha256
3664 (base32
08722837 3665 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3666 (build-system gnu-build-system)
35e2e495 3667 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3668 (inputs `(("gettext" ,gettext-minimal)
08722837 3669 ("glu" ,glu)
35e2e495
KK
3670 ("quesoglc" ,quesoglc)
3671 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3672 (home-page "http://chromium-bsu.sourceforge.net/")
3673 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3674 (description
3675 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3676are responsible for delivering supplies to the troops on the front line. Your
3677ship has a small fleet of robotic fighters which you control from the relative
3678safety of the Chromium vessel.")
3679 ;; Clarified Artistic License for everything but sound, which is covered
3680 ;; by the Expat License.
3681 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3682
3683(define-public tuxpaint
3684 (package
3685 (name "tuxpaint")
c6aa2ee2 3686 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3687 (source
3688 (origin
3689 (method url-fetch)
3690 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3691 version "/tuxpaint-" version ".tar.gz"))
3692 (sha256
3693 (base32
c6aa2ee2 3694 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3695 (modules '((guix build utils)))
3696 (snippet
3697 '(begin
3698 ;; Remove win32 directory which contains binary dll's and the
3699 ;; deprecated visualc directory.
3700 (for-each delete-file-recursively '("win32" "visualc"))
3701 (substitute* "Makefile"
3702 ;; Do not rely on $(GPERF) being an absolute file name
3703 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3704 "$(GPERF) --version >/dev/null 2>&1"))
3705 #t))
9b1ada4e
EB
3706 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3707 (build-system gnu-build-system)
3708 (native-inputs
3709 `(("gperf" ,gperf)
3710 ("pkg-config" ,pkg-config)))
3711 (inputs
3712 `(("cairo" ,cairo)
3713 ("fribidi" ,fribidi)
b94a6ca0 3714 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3715 ("libpng" ,libpng)
3716 ("librsvg" ,librsvg)
3717 ("libpaper" ,libpaper)
3718 ("netpbm" ,netpbm)
3719 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3720 ;; TODO: Use system fonts rather than those in data/fonts
3721 (arguments
c6aa2ee2 3722 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3723 "GPERF=gperf" "CC=gcc"
3724 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3725 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3726 "KDE_PREFIX=$(PREFIX)/share/applications"
3727 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3728 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3729 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3730 #:tests? #f ;No tests
3731 #:phases (modify-phases %standard-phases
3732 (delete 'configure) ;no configure phase
f88c0ab8
EB
3733 (add-before 'install 'no-sys-cache
3734 (lambda _ ;do not rebuild system conf cache
3735 (substitute* "Makefile"
3736 (("kbuildsycoca4") ""))
3737 #t))
9b1ada4e
EB
3738 (add-after 'install 'fix-import
3739 (lambda* (#:key inputs outputs #:allow-other-keys)
3740 (let* ((out (assoc-ref outputs "out"))
3741 (net (assoc-ref inputs "netpbm"))
3742 (tpi (string-append out "/bin/tuxpaint-import")))
3743 (substitute* tpi
3744 ;; Point to installation prefix so that the default
3745 ;; configure file is found.
3746 (("/usr/local") out))
3747 ;; tuxpaint-import uses a bunch of programs from
3748 ;; netpbm, so make sure it knows where those are
3749 (wrap-program tpi
3750 `("PATH" ":" prefix
3751 (,(string-append net "/bin"))))))))))
3752 (native-search-paths
3753 (list (search-path-specification
3754 (variable "TUXPAINT_STAMPS_PATH")
3755 (files '("share/tuxpaint/stamps")))))
3756 (home-page "http://www.tuxpaint.org")
3757 (synopsis "Drawing software for children")
3758 (description
3759 "Tux Paint is a free drawing program designed for young children (kids
3760ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3761and an encouraging cartoon mascot who helps guide children as they use the
3762program. It provides a blank canvas and a variety of drawing tools to help
3763your child be creative.")
3764 (license license:gpl2+)))
c3d850f2
EB
3765
3766(define-public tuxpaint-stamps
3767 (package
3768 (name "tuxpaint-stamps")
6ade82c2 3769 (version "2018.09.01")
c3d850f2
EB
3770 (source
3771 (origin
3772 (method url-fetch)
3773 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3774 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3775 "/tuxpaint-stamps-" version ".tar.gz"))
3776 (sha256
3777 (base32
6ade82c2 3778 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3779 (build-system trivial-build-system)
3780 (native-inputs
3781 `(("tar" ,tar)
3782 ("gzip" ,gzip)))
3783 (arguments
3784 `(#:modules ((guix build utils))
3785 #:builder (begin
3786 (use-modules (guix build utils))
3787 (setenv "PATH"
3788 (string-append
3789 (assoc-ref %build-inputs "tar") "/bin" ":"
3790 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3791 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3792 (chdir (string-append ,name "-" ,version))
3793 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3794 (mkdir-p dir)
e3cfef22
MW
3795 (copy-recursively "stamps" dir))
3796 #t)))
c3d850f2
EB
3797 (home-page (package-home-page tuxpaint))
3798 (synopsis "Stamp images for Tux Paint")
3799 (description
3800 "This package contains a set of \"Rubber Stamp\" images which can be used
3801with the \"Stamp\" tool within Tux Paint.")
3802 (license license:gpl2+)))
d2563973
EB
3803
3804(define-public tuxpaint-config
3805 (package
3806 (name "tuxpaint-config")
7b05e957 3807 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3808 (source
3809 (origin
3810 (method url-fetch)
3811 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3812 version "/tuxpaint-config-" version ".tar.gz"))
3813 (sha256
3814 (base32
7b05e957 3815 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3816 (build-system gnu-build-system)
3817 (native-inputs
b94a6ca0 3818 `(("gettext" ,gettext-minimal)))
d2563973
EB
3819 (inputs
3820 `(("fltk" ,fltk)
3821 ("libpaper" ,libpaper)
3822 ;; TODO: Should the following be propagated by fltk?
3823 ("libx11" ,libx11)
3824 ("libxft" ,libxft)
3825 ("mesa" ,mesa)))
3826 (arguments
7b05e957 3827 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3828 "CONFDIR=/etc/tuxpaint" ;don't write to store
3829 ,(string-append "PREFIX=" %output)
3830 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3831 #:parallel-build? #f ;race conditions
d2563973
EB
3832 #:tests? #f ;no tests
3833 #:phases (modify-phases %standard-phases
3834 (delete 'configure) ;no configure phase
3835 (add-before 'install 'gzip-no-name
3836 (lambda* _
3837 (substitute* "Makefile"
3838 ;; tuxpaint-config compresses its own documentation;
3839 ;; make sure it uses flags for reproducibility.
3840 (("gzip") "gzip --no-name"))))
3841 (add-before 'install 'make-install-dirs
3842 (lambda* (#:key outputs #:allow-other-keys)
3843 (let ((out (assoc-ref outputs "out")))
3844 (mkdir-p (string-append out "/bin"))
3845 #t))))))
3846 (home-page (package-home-page tuxpaint))
3847 (synopsis "Configure Tux Paint")
3848 (description
3849 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3850 (license license:gpl2))) ;no "or later" present
826a3ca2 3851
3852(define-public supertux
3853 (package
3854 (name "supertux")
54a80259 3855 (version "0.6.1")
826a3ca2 3856 (source (origin
3857 (method url-fetch)
d910d584
RW
3858 (uri (string-append "https://github.com/SuperTux/supertux/"
3859 "releases/download/v" version "/SuperTux-v"
3860 version "-Source.tar.gz"))
8698d986 3861 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3862 (sha256
3863 (base32
54a80259 3864 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
8698d986 3865 (patches
57d87f43 3866 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3867 (arguments
3868 '(#:tests? #f
3869 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3870 "-DUSE_SYSTEM_PHYSFS=ON")
3871 #:phases
3872 (modify-phases %standard-phases
3873 (add-after 'unpack 'patch-squirrel-path
3874 (lambda* (#:key inputs #:allow-other-keys)
3875 (let ((squirrel (assoc-ref inputs "squirrel")))
3876 (substitute* "CMakeLists.txt"
3877 (("set\\(SQUIRREL_PREFIX.*")
3878 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3879 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3880 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3881 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3882 #t)))))
826a3ca2 3883 (build-system cmake-build-system)
3884 (inputs `(("sdl2" ,sdl2)
3885 ("sdl2-image" ,sdl2-image)
3886 ("sdl2-mixer" ,sdl2-mixer)
3887 ("openal" ,openal)
3888 ("mesa" ,mesa)
3889 ("glew" ,glew)
3890 ("libvorbis" ,libvorbis)
3891 ("libogg" ,libogg)
3892 ("physfs" ,physfs)
3893 ("curl" ,curl)
8698d986
KK
3894 ("boost" ,boost)
3895 ("freetype" ,freetype)
3896 ("squirrel" ,squirrel)))
8b03b1a1
NG
3897 (native-inputs
3898 `(("pkg-config" ,pkg-config)))
826a3ca2 3899 (synopsis "2D platformer game")
8b03b1a1
NG
3900 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3901a style similar to the original Super Mario games.")
cac6c3ba 3902 (home-page "https://supertux.org/")
826a3ca2 3903 (license license:gpl3+)))
b3de5ff2 3904
751c7040 3905(define-public tintin++
3906 (package
3907 (name "tintin++")
23174b49 3908 (version "2.02.00")
fffe4870
TGR
3909 (source
3910 (origin
3911 (method url-fetch)
3912 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 3913 (string-drop-right version 1)
fffe4870
TGR
3914 "/tintin-" version ".tar.gz"))
3915 (sha256
3916 (base32
23174b49 3917 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
751c7040 3918 (inputs
3919 `(("gnutls" ,gnutls)
3920 ("pcre" ,pcre)
3921 ("readline" ,readline)
3922 ("zlib" ,zlib)))
3923 (arguments
fffe4870 3924 '(#:tests? #f ; no test suite
751c7040 3925 #:phases
3926 (modify-phases %standard-phases
3927 ;; The source is in tt/src.
3928 (add-before 'configure 'chdir
3929 (lambda _
3930 (chdir "src")
3931 #t)))))
3932 (build-system gnu-build-system)
23174b49 3933 (home-page "https://tintin.mudhalla.net/")
751c7040 3934 (synopsis "MUD client")
3935 (description
5b9c2690
KK
3936 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3937Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3938options used by MUDs, as well as those required to login via telnet on
3939Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 3940 (license license:gpl3+)))
751c7040 3941
b3de5ff2
JN
3942(define-public laby
3943 (package
3944 (name "laby")
3945 (version "0.6.4")
3946 (source
6484b091
EF
3947 (origin (method git-fetch)
3948 (uri (git-reference
3949 (url "https://github.com/sgimenez/laby.git")
3950 (commit (string-append name "-" version))))
3951 (file-name (git-file-name name version))
b3de5ff2
JN
3952 (sha256
3953 (base32
6484b091 3954 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3955 (patches (search-patches "laby-make-install.patch"))))
3956 (build-system gnu-build-system)
3957 (inputs
3958 `(("lablgtk" ,lablgtk)
3959 ("ocaml" ,ocaml)
a8f52ad7
TGR
3960 ("ocaml-findlib" ,ocaml-findlib)
3961 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3962 (arguments
3963 '(#:phases
3964 (modify-phases %standard-phases
3965 (delete 'configure)
a8f52ad7
TGR
3966 (add-before 'build 'allow-unsafe-strings
3967 ;; Fix a build failure with ocaml >=4.06.0.
3968 ;; See <https://github.com/sgimenez/laby/issues/53>.
3969 (lambda _
3970 (setenv "OCAMLPARAM" "safe-string=0,_")
3971 #t))
3972 (add-before 'build 'set-library-path
b3de5ff2
JN
3973 (lambda* (#:key inputs #:allow-other-keys)
3974 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3975 (setenv "LD_LIBRARY_PATH"
3976 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3977 #:tests? #f ; no 'check' target
3978 #:make-flags
3979 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3980 (home-page "https://sgimenez.github.io/laby/")
3981 (synopsis "Programming game")
3982 (description "Learn programming, playing with ants and spider webs ;-)
3983Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3984Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3985programmers may also add their own favorite language.")
3986 (license license:gpl3+)))
b0488fe5
EF
3987
3988(define-public bambam
3989 (package
3990 (name "bambam")
8e77da0d 3991 (version "1.0.0")
b0488fe5
EF
3992 (source
3993 (origin
63e708f4
TGR
3994 (method git-fetch)
3995 (uri (git-reference
3996 (url "https://github.com/porridge/bambam")
8e77da0d 3997 (commit (string-append "v" version))))
63e708f4 3998 (file-name (git-file-name name version))
b0488fe5 3999 (sha256
8e77da0d 4000 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
4001 (build-system python-build-system)
4002 (arguments
8e77da0d 4003 `(#:tests? #f ; no tests
b0488fe5
EF
4004 #:phases
4005 (modify-phases %standard-phases
8e77da0d 4006 (delete 'build) ; nothing to build
b0488fe5
EF
4007 (replace 'install
4008 (lambda* (#:key outputs #:allow-other-keys)
4009 (let* ((out (assoc-ref outputs "out"))
4010 (bin (string-append out "/bin"))
4011 (share (string-append out "/share")))
4012 (mkdir-p bin)
4013 (copy-file "bambam.py" (string-append bin "/bambam"))
4014 (install-file "bambam.6" (string-append share "/man/man6"))
4015 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
4016 #t)))))
4017 (inputs
4018 `(("python-pygame" ,python-pygame)))
4019 (home-page "https://github.com/porridge/bambam")
46a06224 4020 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
4021 (description "Bambam is a simple baby keyboard (and gamepad) masher
4022application that locks the keyboard and mouse and instead displays bright
4023colors, pictures, and sounds.")
4024 (license license:gpl3+)))
6b87c10f 4025
3110c74b
TGR
4026(define-public mrrescue
4027 (package
4028 (name "mrrescue")
4029 (version "1.02e")
4030 (source (origin
4031 (method url-fetch)
4032 (uri (string-append
4033 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 4034 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
4035 (file-name (string-append name "-" version ".love"))
4036 (sha256
4037 (base32
4038 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4039 (build-system trivial-build-system)
4040 (arguments
8893218a 4041 `(#:modules ((guix build utils))
3110c74b
TGR
4042 #:builder
4043 (begin
4044 (use-modules (guix build utils))
8893218a
TGR
4045 (let* ((out (assoc-ref %outputs "out"))
4046 (script (string-append out "/bin/" ,name))
4047 (data (string-append out "/share/" ,name))
4048 (source (assoc-ref %build-inputs "source"))
4049 (unzip (string-append (assoc-ref %build-inputs "unzip")
4050 "/bin/unzip"))
4051 (patch (string-append (assoc-ref %build-inputs "patch")
4052 "/bin/patch"))
4053 (bash (string-append (assoc-ref %build-inputs "bash")
4054 "/bin/bash"))
4055 (love (string-append (assoc-ref %build-inputs "love")
4056 "/bin/love")))
4057
4058 (mkdir-p (dirname script))
4059 (with-output-to-file script
3110c74b
TGR
4060 (lambda ()
4061 (format #t "#!~a~%" bash)
8893218a
TGR
4062 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4063 (chmod script #o755)
4064
4065 ;; The better way to package this game would be to install *only* the
4066 ;; script above, pointing to the unextracted .love file in the store.
4067 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4068 ;; Instead of extracting the .love file, patching it, and re-zipping
4069 ;; it to the store, simply point the script to the extracted patched
4070 ;; data directory directly.
4071 (mkdir-p data)
4072 (with-directory-excursion data
4073 (invoke unzip source)
4074 (invoke patch "-p1" "-i"
4075 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 4076 #t))))
8893218a
TGR
4077 (native-inputs
4078 `(("unzip" ,unzip)
4079 ("patch" ,patch)
4080 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
4081 (inputs
4082 `(("bash" ,bash)
4083 ("love" ,love)))
e2f28609 4084 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
4085 (synopsis "Arcade-style fire fighting game")
4086 (description
4087 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
4088civilians from burning buildings. The game features fast-paced fire
4089extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
4090throwing people around in pseudo-randomly generated buildings.")
4091 (license (list license:zlib ; for source code
4092 license:cc-by-sa3.0)))) ; for graphics and music assets
4093
cd1869cd
KK
4094(define-public hyperrogue
4095 (package
4096 (name "hyperrogue")
70b6b238 4097 (version "11.2q")
f8279ba4
KK
4098 ;; When updating this package, be sure to update the "hyperrogue-data"
4099 ;; origin in native-inputs.
cd1869cd
KK
4100 (source (origin
4101 (method url-fetch)
4102 (uri (string-append
a01aea7d
TGR
4103 "https://www.roguetemple.com/z/hyper/hyperrogue"
4104 (string-join (string-split version #\.) "")
f8279ba4 4105 "-src.tgz"))
cd1869cd
KK
4106 (sha256
4107 (base32
70b6b238 4108 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
cd1869cd
KK
4109 (build-system gnu-build-system)
4110 (arguments
f8279ba4 4111 `(#:tests? #f ; no check target
82402f76
KK
4112 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4113 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
4114 #:phases
4115 (modify-phases %standard-phases
4116 (add-after 'set-paths 'set-sdl-paths
4117 (lambda* (#:key inputs #:allow-other-keys)
4118 (setenv "CPATH"
b6c2805c
MB
4119 (string-append (getenv "CPATH") ":"
4120 (assoc-ref inputs "sdl-union")
cd1869cd 4121 "/include/SDL"))))
cd1869cd
KK
4122 (replace 'configure
4123 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4124 (let* ((out (assoc-ref outputs "out"))
4125 (share-dir (string-append out "/share/hyperrogue"))
4126 (dejavu-dir (string-append
4127 (assoc-ref inputs "font-dejavu")
4128 "/share/fonts/truetype"))
4129 (dejavu-font "DejaVuSans-Bold.ttf")
4130 (music-file "hyperrogue-music.txt"))
1bb962b4 4131 ;; Fix font and music paths.
89c9445a 4132 (substitute* "basegraph.cpp"
f8279ba4
KK
4133 ((dejavu-font)
4134 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
4135 (substitute* music-file
4136 (("\\*/")
82402f76
KK
4137 (string-append share-dir "/sounds/")))
4138 (substitute* "sound.cpp"
4139 (("musicfile = \"\"")
4140 (string-append "musicfile = \""
4141 share-dir "/" music-file "\"")))
4142 ;; Disable build machine CPU optimizations and warnings treated
4143 ;; as errors.
4144 (substitute* "Makefile"
4145 (("-march=native") "")
4146 (("-Werror") "")))
cd1869cd
KK
4147 #t))
4148 (replace 'install
4149 (lambda* (#:key inputs outputs #:allow-other-keys)
4150 (let* ((out (assoc-ref outputs "out"))
4151 (bin (string-append out "/bin"))
4152 (share-dir (string-append out "/share/hyperrogue")))
4153 (mkdir-p bin)
82402f76 4154 (install-file "hyperrogue" bin)
f8279ba4
KK
4155 (install-file "hyperrogue-music.txt" share-dir))
4156 #t))
4157 (add-after 'install 'install-data
4158 (lambda* (#:key inputs outputs #:allow-other-keys)
4159 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4160 (out (assoc-ref outputs "out"))
4161 (sounds (string-append out "/share/hyperrogue/sounds"))
4162 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4163 ;; Extract media license information into sounds directory.
4164 (invoke unzip "-j" data
4165 (string-append
4166 "hyperrogue"
4167 (string-join (string-split ,version #\.) "")
4168 "/sounds/credits.txt") "-d" sounds)
4169 ;; Extract sounds and music into sounds directory.
4170 (invoke "unzip" "-j" data
4171 (string-append
4172 "hyperrogue"
4173 (string-join (string-split ,version #\.) "")
4174 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4175 (native-inputs
4176 `(("hyperrogue-data"
4177 ,(origin
4178 (method url-fetch)
4179 (uri
4180 (string-append
07de94d6 4181 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4182 (string-join (string-split version #\.) "")
4183 "-win.zip"))
4184 (sha256
4185 (base32
70b6b238 4186 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
f8279ba4 4187 ("unzip" ,unzip)))
cd1869cd
KK
4188 (inputs
4189 `(("font-dejavu" ,font-dejavu)
4190 ("glew" ,glew)
4191 ("libpng" ,libpng)
4192 ("sdl-union" ,(sdl-union (list sdl
4193 sdl-gfx
4194 sdl-mixer
4195 sdl-ttf)))))
4cae7e67 4196 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4197 (synopsis "Non-euclidean graphical rogue-like game")
4198 (description
4199 "HyperRogue is a game in which the player collects treasures and fights
4200monsters -- rogue-like but for the fact that it is played on the hyperbolic
4201plane and not in euclidean space.
4202
4203In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4204are home to particular creatures and may be subject to their own rules of
4205\"physics\".
cd1869cd 4206
a53a6b6f
TGR
4207While the game can use ASCII characters to display the the classical rogue
4208symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4209 (license (list license:bsd-3 ; glew.c, mtrand.*
4210 license:cc-by-sa3.0 ; music
4211 license:cc-by-sa4.0 ; sounds
4212 license:cc0
4213 license:public-domain ; direntx.*, some sounds
4214 license:zlib ; savepng.*
cd1869cd 4215 license:gpl2+)))) ; remaining files
a56145e1
SW
4216
4217(define-public kobodeluxe
4218 (package
4219 (name "kobodeluxe")
4220 (version "0.5.1")
4221 (source (origin
4222 (method url-fetch)
4223 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4224 version ".tar.bz2"))
4225 (sha256
4226 (base32
4227 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4228 (patches (search-patches
4229 "kobodeluxe-const-charp-conversion.patch"
4230 "kobodeluxe-enemies-pipe-decl.patch"
4231 "kobodeluxe-graphics-window-signed-char.patch"
4232 "kobodeluxe-manpage-minus-not-hyphen.patch"
4233 "kobodeluxe-midicon-segmentation-fault.patch"
4234 "kobodeluxe-paths.patch"))))
4235 (build-system gnu-build-system)
4236 (arguments
4237 '(#:configure-flags
4238 (list (string-append "CPPFLAGS=-I"
4239 (assoc-ref %build-inputs "sdl-union")
4240 "/include/SDL"))))
cf07ec20
MB
4241 (inputs
4242 `(("glu" ,glu)
4243 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
4244 (synopsis "Shooter with space station destruction")
4245 (description
4246 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4247for Un*x systems with X11.")
4248 (home-page "http://olofson.net/kobodl/")
4249 (license license:gpl2+)))
5430dbd9
AI
4250
4251(define-public freeciv
4252 (package
4253 (name "freeciv")
4445b3a7 4254 (version "2.6.2")
5430dbd9
AI
4255 (source
4256 (origin
4257 (method url-fetch)
b92e8da0
EF
4258 (uri (list (string-append
4259 "http://files.freeciv.org/stable/freeciv-"
4260 version ".tar.bz2")
4261 (string-append
4262 "mirror://sourceforge/freeciv/Freeciv%20"
4263 (version-major+minor version) "/" version
4264 "/freeciv-" version ".tar.bz2")))
5430dbd9 4265 (sha256
4445b3a7 4266 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
4267 (build-system gnu-build-system)
4268 (inputs
4269 `(("curl" ,curl)
4270 ("cyrus-sasl" ,cyrus-sasl)
4271 ("gtk+" ,gtk+)
4272 ("sdl-mixer" ,sdl-mixer)
4273 ("zlib" ,zlib)))
4274 (native-inputs
4275 `(("pkg-config" ,pkg-config)))
4276 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
4277 (synopsis "Turn-based empire building strategy game")
4278 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
4279inspired by the history of human civilization. The game commences in
4280prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 4281into the Space Age.")
5430dbd9 4282 (license license:gpl2+)))
345504c7 4283
4284(define-public no-more-secrets
4285 (package
4286 (name "no-more-secrets")
4c4f1871 4287 (version "0.3.3")
345504c7 4288 (source
4289 (origin
146a4459
TGR
4290 (method git-fetch)
4291 (uri (git-reference
4292 (url "https://github.com/bartobri/no-more-secrets.git")
4293 (commit (string-append "v" version))))
4294 (file-name (git-file-name name version))
345504c7 4295 (sha256
146a4459 4296 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4297 (build-system gnu-build-system)
4298 (arguments
4299 `(#:tests? #f
4300 #:make-flags (list "CC=gcc" "all-ncurses"
4301 (string-append "prefix="
4302 (assoc-ref %outputs "out")))
4303 #:phases
4304 (modify-phases %standard-phases
4305 (delete 'configure))))
4306 (inputs
4307 `(("ncurses" ,ncurses)))
4308 (home-page "https://github.com/bartobri/no-more-secrets")
4309 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4310 (description
4311 "@code{No More Secrets} provides a command line tool called \"nms\"
4312that recreates the famous data decryption effect seen on screen in the 1992
4313movie \"Sneakers\".
4314
4315This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4316it will apply the hollywood effect, initially showing encrypted data, then
4317starting a decryption sequence to reveal the original plaintext characters.")
4318 (license license:expat)))
fb731c92
AI
4319
4320(define-public megaglest-data
4321 (package
4322 (name "megaglest-data")
4323 (version "3.13.0")
4324 (source
4325 (origin
4326 (method url-fetch)
4327 (uri (string-append
4328 "https://github.com/MegaGlest/megaglest-data"
4329 "/releases/download/" version "/megaglest-data-"
4330 version ".tar.xz"))
4331 (sha256
4332 (base32
4333 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4334 (build-system cmake-build-system)
4335 (arguments
4336 `(#:tests? #f))
4337 (home-page "https://megaglest.org/")
4338 (synopsis "Data files for MegaGlest")
4339 (description "This package contains the data files required for MegaGlest.")
4340 (license license:cc-by-sa3.0)))
0b608ec4
AI
4341
4342(define-public megaglest
4343 (package
4344 (name "megaglest")
4345 (version "3.13.0")
4346 (source
4347 (origin
4348 (method url-fetch)
4349 (uri (string-append
4350 "https://github.com/MegaGlest/megaglest-source"
4351 "/releases/download/" version "/megaglest-source-"
4352 version ".tar.xz"))
4353 (sha256
4354 (base32
4355 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4356 (build-system cmake-build-system)
4357 (inputs
4358 `(("curl" ,curl)
4359 ("fontconfig" ,fontconfig)
4360 ("ftgl" ,ftgl)
4361 ("glew" ,glew)
4362 ("libjpeg-turbo" ,libjpeg-turbo)
4363 ("megaglest-data" ,megaglest-data)
4364 ("mesa" ,mesa)
4365 ("miniupnpc" ,miniupnpc)
4366 ("openal" ,openal)
4367 ("libircclient" ,libircclient)
4368 ("libpng" ,libpng)
4369 ("libvorbis" ,libvorbis)
4370 ("lua" ,lua)
4371 ("sdl2" ,sdl2)
4372 ("wxwidgets" ,wxwidgets)))
4373 (native-inputs
4374 `(("cppunit" ,cppunit)
4375 ("pkg-config" ,pkg-config)))
4376 (arguments
4377 `(#:configure-flags
4378 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4379 (assoc-ref %build-inputs "megaglest-data")
4380 "/share/megaglest")
4381 "-DBUILD_MEGAGLEST_TESTS=ON")
4382 #:phases
4383 (modify-phases %standard-phases
4384 (add-after 'unpack 'fix-ini-search-path
4385 (lambda* (#:key outputs #:allow-other-keys)
4386 (substitute* "source/glest_game/global/config.cpp"
4387 (("/usr/share/megaglest/")
4388 (string-append (assoc-ref outputs "out")
4389 "/share/megaglest/"))))))
4390 #:test-target "megaglest_tests"))
4391 (home-page "https://megaglest.org/")
4392 (synopsis "3D real-time strategy (RTS) game")
4393 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4394game, where you control the armies of one of seven different factions: Tech,
4395Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4396 (license license:gpl2+)))
6bb9c854
RW
4397
4398(define-public freegish
4399 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4400 (revision "1"))
4401 (package
4402 (name "freegish")
4403 (version (string-append "0-" revision "." (string-take commit 9)))
4404 (source (origin
4405 (method git-fetch)
4406 (uri (git-reference
4407 (url "https://github.com/freegish/freegish.git")
4408 (commit commit)))
661ad6f0 4409 (file-name (git-file-name name version))
6bb9c854
RW
4410 (sha256
4411 (base32
4412 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4413 (modules '((guix build utils)))
4414 ;; The audio files in the "music" directory are licensed under
4415 ;; CC-BY-NC, so we delete them.
4416 (snippet
4417 '(begin
4418 (delete-file-recursively "music")
4419 #t))))
4420 (build-system cmake-build-system)
4421 (arguments
4422 `(#:tests? #f ; no tests included
4423 #:configure-flags
4424 (list "-DCMAKE_INSTALL_FHS=ON")
4425 #:phases
4426 (modify-phases %standard-phases
4427 (add-after 'unpack 'set-DATAPATH
4428 (lambda* (#:key outputs #:allow-other-keys)
4429 (substitute* "CMakeLists.txt"
4430 (("^option\\(INSTALL_FHS" line)
4431 (string-append "add_definitions(-DDATAPATH=\""
4432 (assoc-ref outputs "out") "/share/freegish\")\n"
4433 line)))
4434 #t)))))
4435 (inputs
4436 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4437 ("openal" ,openal)
4438 ("libvorbis" ,libvorbis)
4439 ("libogg" ,libogg)
4440 ("mesa" ,mesa)
4441 ("libpng" ,libpng)
4442 ("zlib" ,zlib)))
4443 (home-page "https://github.com/freegish/freegish")
4444 (synopsis "Side-scrolling physics platformer with a ball of tar")
4445 (description "In FreeGish you control Gish, a ball of tar who lives
4446happily with his girlfriend Brea, until one day a mysterious dark creature
4447emerges from a sewer hole and pulls her below ground.")
4448 ;; The textures are available under the Expat license. All other assets
4449 ;; (including levels) are covered under CC-BY-SA or public domain. The
4450 ;; source code is under GPLv2+.
4451 (license (list license:gpl2+
4452 license:expat
4453 license:public-domain
4454 license:cc-by-sa3.0)))))
f0f7bf95
RW
4455
4456(define-public cdogs-sdl
6e65eb3c
TGR
4457 (package
4458 (name "cdogs-sdl")
acfb7357 4459 (version "0.6.9")
6e65eb3c
TGR
4460 (source (origin
4461 (method git-fetch)
4462 (uri (git-reference
4463 (url "https://github.com/cxong/cdogs-sdl.git")
4464 (commit version)))
4465 (file-name (git-file-name name version))
4466 (sha256
4467 (base32
acfb7357 4468 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4469 (build-system cmake-build-system)
4470 (arguments
4471 `(#:configure-flags
4472 (list (string-append "-DCDOGS_DATA_DIR="
4473 (assoc-ref %outputs "out")
4474 "/share/cdogs-sdl/"))))
4475 (inputs
4476 `(("mesa" ,mesa)
4477 ("sdl2" ,sdl2)
4478 ("sdl2-image" ,sdl2-image)
4479 ("sdl2-mixer" ,sdl2-mixer)))
4480 (home-page "https://cxong.github.io/cdogs-sdl/")
4481 (synopsis "Classic overhead run-and-gun game")
4482 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4483supporting up to 4 players in co-op and deathmatch modes. Customize your
4484player, choose from many weapons, and blast, slide and slash your way through
4485over 100 user-created campaigns.")
6e65eb3c
TGR
4486 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4487 ;; CC0/CC-BY/CC-BY-SA for assets.
4488 (license (list license:gpl2+
4489 license:bsd-2
4490 license:bsd-3
4491 license:cc0
4492 license:cc-by3.0
4493 license:cc-by-sa3.0))))
bd71525b 4494
649220ad 4495(define-public kiki
bd71525b 4496 (package
649220ad 4497 (name "kiki")
bd71525b
RW
4498 (version "1.0.2")
4499 (source (origin
4500 (method url-fetch)
4501 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4502 version "/kiki-" version "-src.tgz"))
4503 (sha256
4504 (base32
4505 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4506 (modules '((guix build utils)))
4507 (snippet
4508 '(begin
4509 (for-each delete-file (find-files "." "\\.dll$"))
4510 #t))
4511 (patches
4512 (search-patches "kiki-level-selection-crash.patch"
4513 "kiki-makefile.patch"
4514 "kiki-missing-includes.patch"
4515 "kiki-portability-64bit.patch"))))
4516 (build-system gnu-build-system)
4517 (arguments
4518 `(#:tests? #f ; there are no tests
4519 #:make-flags '("CXX=g++")
4520 #:phases
4521 (modify-phases %standard-phases
4522 (replace 'configure
4523 (lambda* (#:key inputs outputs #:allow-other-keys)
4524 (setenv "CPLUS_INCLUDE_PATH"
4525 (string-append (assoc-ref inputs "sdl-union")
4526 "/include/SDL:"
4527 (assoc-ref inputs "python")
97149c57 4528 "/include/python2.7"))
bd71525b
RW
4529 (substitute* "src/main/main.cpp"
4530 (("#include <SDL.h>" line)
4531 (string-append line "
4532#define K_INCLUDE_GLUT
4533#include \"KIncludeTools.h\""))
4534 (("// initialize SDL" line)
4535 (string-append "glutInit(&argc,argv);\n" line)))
4536 (substitute* "src/main/KikiController.cpp"
4537 (("getenv\\(\"KIKI_HOME\"\\)")
4538 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4539 (substitute* "linux/Makefile"
4540 (("CXXOPTS =" line)
4541 (string-append line " -fpermissive"))
4542 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4543 (("PYTHONHOME =.*")
4544 (string-append "PYTHONHOME = "
4545 (assoc-ref inputs "python")
4546 "/lib/python2.7/"))
4547 (("\\$\\(GLLIBS\\)" line)
4548 (string-append line " -lm -lpython2.7")))
4549 (substitute* "src/main/KikiPythonWidget.h"
4550 (("#define __KikiPythonWidget" line)
4551 (string-append line "\n#include \"KikiPython.h\"")))
4552 #t))
4553 (add-before 'build 'build-kodilib
4554 (lambda* (#:key make-flags #:allow-other-keys)
4555 (with-directory-excursion "kodilib/linux"
ff61aee8 4556 (apply invoke "make" make-flags))))
bd71525b
RW
4557 (add-after 'build-kodilib 'chdir
4558 (lambda _ (chdir "linux") #t))
4559 (replace 'install
4560 (lambda* (#:key outputs #:allow-other-keys)
4561 (let* ((out (assoc-ref outputs "out"))
4562 (bin (string-append out "/bin"))
4563 (share (string-append out "/share/kiki")))
4564 (mkdir-p bin)
4565 (mkdir-p share)
4566 (install-file "kiki" bin)
4567 (copy-recursively "../py" (string-append share "/py"))
4568 (copy-recursively "../sound" (string-append share "/sound"))
4569 #t))))))
4570 (inputs
4571 `(("glu" ,glu)
4572 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4573 ("freeglut" ,freeglut-2.8)
4574 ("sdl-union" ,(sdl-union (list sdl
4575 sdl-mixer
4576 sdl-image)))
4577 ("python" ,python-2)))
4578 (native-inputs
4579 `(("swig" ,swig)))
4580 (home-page "http://kiki.sourceforge.net/")
4581 (synopsis "3D puzzle game")
4582 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4583mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4584small robot living in the nano world, repair its maker.")
4585 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4586 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4587 ;; for a statement from the author.
4588 (license license:public-domain)))
b77e3a1c 4589
649220ad
NG
4590(define-public kiki-the-nano-bot
4591 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4592
b77e3a1c
RW
4593(define-public teeworlds
4594 (package
4595 (name "teeworlds")
b74f7f06 4596 (version "0.7.4")
b77e3a1c 4597 (source (origin
f9e5caf9
AV
4598 (method git-fetch)
4599 (uri (git-reference
4600 (url "https://github.com/teeworlds/teeworlds.git")
4601 (commit version)))
4602 (file-name (git-file-name name version))
b77e3a1c
RW
4603 (sha256
4604 (base32
b74f7f06 4605 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
f9e5caf9
AV
4606 (modules '((guix build utils)
4607 (ice-9 ftw)
4608 (ice-9 regex)
4609 (srfi srfi-1)
4610 (srfi srfi-26)))
4611 (snippet ; remove bundled libraries except md5
4612 '(let ((base-dir "src/engine/external/"))
4613 (for-each (compose (cut delete-file-recursively <>)
4614 (cut string-append base-dir <>))
4615 (remove (cut string-match "(^.)|(^md5$)" <>)
4616 (scandir base-dir)))
b74f7f06 4617 #t))))
b77e3a1c
RW
4618 (build-system gnu-build-system)
4619 (arguments
7aed8b8a 4620 `(#:tests? #f ; no tests included
f9e5caf9
AV
4621 #:modules ((guix build gnu-build-system)
4622 (guix build utils)
4623 (srfi srfi-26))
b77e3a1c
RW
4624 #:phases
4625 (modify-phases %standard-phases
4626 (replace 'configure
4627 (lambda* (#:key outputs #:allow-other-keys)
4628 ;; Embed path to assets.
4629 (substitute* "src/engine/shared/storage.cpp"
4630 (("#define DATA_DIR.*")
4631 (string-append "#define DATA_DIR \""
4632 (assoc-ref outputs "out")
4633 "/share/teeworlds/data"
4634 "\"")))
4635
4636 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4637 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4638 (find-files "."))
4639
4640 ;; Do not use bundled libraries.
4641 (substitute* "bam.lua"
f9e5caf9
AV
4642 (("local json = Compile.+$")
4643 "local json = nil
4644settings.link.libs:Add(\"jsonparser\")")
4645 (("local png = Compile.+$")
4646 "local png = nil
4647settings.link.libs:Add(\"pnglite\")")
4648 (("local wavpack = Compile.+$")
4649 "local wavpack = nil
4650settings.link.libs:Add(\"wavpack\")")
4651 (("if config\\.zlib\\.value == 1")
4652 "if config.zlib.value"))
4653 (substitute* "src/engine/client/graphics_threaded.cpp"
4654 (("engine/external/pnglite/pnglite\\.h")
4655 "pnglite.h"))
b77e3a1c 4656 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4657 (("engine/external/wavpack/wavpack\\.h")
4658 "wavpack/wavpack.h"))
b77e3a1c
RW
4659 #t))
4660 (replace 'build
4661 (lambda _
f9e5caf9 4662 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4663 (replace 'install
4664 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4665 (let* ((arch ,(system->linux-architecture
4666 (or (%current-target-system)
4667 (%current-system))))
076fe846
OP
4668 (build (string-append "build/" (if (string=? arch "i386")
4669 "x86" arch)
4670 "/release/"))
f9e5caf9
AV
4671 (data-built (string-append build "data/"))
4672 (out (assoc-ref outputs "out"))
4673 (bin (string-append out "/bin/"))
4674 (data (string-append out "/share/teeworlds/data/")))
4675 (for-each (cut install-file <> bin)
4676 (map (cut string-append build <>)
4677 '("teeworlds" "teeworlds_srv")))
4678 (copy-recursively data-built data)
b77e3a1c 4679 #t))))))
b77e3a1c
RW
4680 (inputs
4681 `(("freetype" ,freetype)
4682 ("glu" ,glu)
f9e5caf9 4683 ("json-parser" ,json-parser)
b77e3a1c 4684 ("mesa" ,mesa)
f9e5caf9
AV
4685 ("pnglite" ,pnglite)
4686 ("sdl2" ,sdl2)
4687 ("sdl2-image" ,sdl2-image)
4688 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4689 ("wavpack" ,wavpack)
4690 ("zlib" ,zlib)))
4691 (native-inputs
4692 `(("bam" ,bam)
f9e5caf9 4693 ("python" ,python-wrapper)
e402a66b 4694 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4695 (home-page "https://www.teeworlds.com")
4696 (synopsis "2D retro multiplayer shooter game")
4697 (description "Teeworlds is an online multiplayer game. Battle with up to
469816 players in a variety of game modes, including Team Deathmatch and Capture
4699The Flag. You can even design your own maps!")
4700 (license license:bsd-3)))
e02f1663 4701
162a4a03
RW
4702(define-public enigma
4703 (package
4704 (name "enigma")
4705 (version "1.21")
4706 (source (origin
4707 (method url-fetch)
4708 (uri (string-append "mirror://sourceforge/enigma-game/"
4709 "Release%20" version "/enigma-"
4710 version ".tar.gz"))
4711 (sha256
4712 (base32
4713 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4714 (build-system gnu-build-system)
4715 (arguments
4716 `(#:configure-flags
4717 (list "--with-system-enet")
4718 #:phases
4719 (modify-phases %standard-phases
4720 (add-after 'unpack 'find-sdl
4721 (lambda _
4722 (substitute* "configure"
4723 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4724 (substitute* '("tools/ttf2bmf.cc"
4725 "lib-src/enigma-core/ecl_font.cc"
4726 "lib-src/enigma-core/ecl_video.cc"
4727 "lib-src/enigma-core/ecl_buffer.hh"
4728 "src/SoundEngine.cc"
4729 "src/SoundEngine.hh"
4730 "src/MusicManager.cc"
4731 "src/MusicManager.hh"
4732 "src/d_models.cc"
4733 "src/main.cc"
4734 "src/network.cc")
4735 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4736 (string-append "#include \"SDL/SDL_" header ".h\"")))
4737 (substitute* "src/main.cc"
4738 (("#include <SDL_(image|ttf|mixer).h>" line header)
4739 (string-append "#include \"SDL/SDL_" header ".h\"")))
4740 #t)))))
4741 (inputs
4742 `(("xerces-c" ,xerces-c)
4743 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4744 ("curl" ,curl)
4745 ("enet" ,enet)))
4746 (native-inputs
4747 `(("pkg-config" ,pkg-config)
4748 ("imagemagick" ,imagemagick)))
340978d7 4749 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4750 (synopsis "Puzzle game with a dexterity component")
4751 (description "Enigma is a puzzle game with 550 unique levels. The object
4752of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4753Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4754and most of all, countless hairy puzzles usually block your direct way to the
4755Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4756get bored) interact in many unexpected ways, and since many of them follow the
4757laws of physics (Enigma’s special laws of physics, that is), controlling them
4758with the mouse isn’t always trivial.")
4759 (license license:gpl2+)))
4760
10d53153
CLW
4761(define-public chroma
4762 (package
4763 (name "chroma")
9cf65f05 4764 (version "1.17")
10d53153
CLW
4765 (source (origin
4766 (method url-fetch)
4767 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4768 version ".tar.bz2"))
4769 (sha256
4770 (base32
9cf65f05 4771 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4772 (build-system gnu-build-system)
4773 (arguments
5479dbf9 4774 `(#:tests? #f)) ; no tests included
10d53153
CLW
4775 (inputs
4776 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4777 ("freetype" ,freetype)
4778 ("ncurses" ,ncurses)
4779 ("fontconfig" ,fontconfig)
4780 ("libxft" ,libxft)))
4781 (native-inputs
4782 `(("pkg-config" ,pkg-config)))
4783 (home-page "http://level7.org.uk/chroma/")
4784 (synopsis "Abstract puzzle game")
4785 (description "Chroma is an abstract puzzle game. A variety of colourful
4786shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
4787fiendish traps that must be disarmed and mysterious puzzles that must be
4788manipulated in order to give up their subtle secrets. Initially so
4789straightforward that anyone can pick it up and begin to play, yet gradually
4790becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
4791 (license license:gpl2+)))
4792
649220ad 4793(define-public fillets-ng
e02f1663 4794 (package
649220ad 4795 (name "fillets-ng")
e02f1663
RW
4796 (version "1.0.1")
4797 (source (origin
4798 (method url-fetch)
4799 (uri (string-append "mirror://sourceforge/fillets/"
4800 "Fish%20Fillets%20-%20Next%20Generation/"
4801 version "/fillets-ng-" version ".tar.gz"))
4802 (sha256
4803 (base32
4804 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4805 (build-system gnu-build-system)
4806 (arguments
4807 `(#:configure-flags
4808 (list (string-append "--with-lua="
4809 (assoc-ref %build-inputs "lua")))
4810 #:make-flags
4811 (list (string-append "CFLAGS=-I"
4812 (assoc-ref %build-inputs "sdl-union")
4813 "/include/SDL")
4814 (string-append "CXXFLAGS=-I"
4815 (assoc-ref %build-inputs "sdl-union")
4816 "/include/SDL"))
4817 #:phases
4818 (modify-phases %standard-phases
4819 ;; Lua 5.1 does not provide it.
4820 (add-after 'unpack 'do-not-link-with-lualib
4821 (lambda _
4822 (substitute* "configure"
4823 (("-llualib") ""))
4824 #t))
4825 (add-after 'install 'install-data
4826 (lambda* (#:key inputs outputs #:allow-other-keys)
4827 (let ((data (string-append (assoc-ref outputs "out")
4828 "/share/games/fillets-ng")))
4829 (mkdir-p data)
f08d34a0
RW
4830 (invoke "tar" "-xvf"
4831 (assoc-ref inputs "fillets-ng-data")
4832 "--strip-components=1"
4833 "-C" data)))))))
e02f1663
RW
4834 (inputs
4835 `(("sdl-union" ,(sdl-union (list sdl
4836 sdl-mixer
4837 sdl-image
4838 sdl-ttf)))
4839 ("fribidi" ,fribidi)
4840 ("libx11" ,libx11)
4841 ("lua" ,lua-5.1)))
4842 (native-inputs
4843 `(("pkg-config" ,pkg-config)
4844 ("fillets-ng-data"
4845 ,(origin
4846 (method url-fetch)
4847 (uri (string-append "mirror://sourceforge/fillets/"
4848 "Fish%20Fillets%20-%20Next%20Generation/"
4849 version "/fillets-ng-data-" version ".tar.gz"))
4850 (sha256
4851 (base32
4852 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4853 (home-page "http://fillets.sourceforge.net/")
4854 (synopsis "Puzzle game")
4855 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4856every of the seventy levels is always the same: find a safe way out. The fish
4857utter witty remarks about their surroundings, the various inhabitants of their
4858underwater realm quarrel among themselves or comment on the efforts of your
4859fish. The whole game is accompanied by quiet, comforting music.")
4860 (license license:gpl2+)))
dd37a545 4861
649220ad
NG
4862(define-public fish-fillets-ng
4863 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4864
649220ad 4865(define-public crawl
dd37a545 4866 (package
649220ad 4867 (name "crawl")
af48a200 4868 (version "0.24.0")
dd37a545 4869 (source
4870 (origin
4871 (method url-fetch)
4872 (uri (list
4873 ;; Older releases get moved into a versioned directory
4874 (string-append "http://crawl.develz.org/release/"
4875 (version-major+minor version) "/stone_soup-"
4876 version "-nodeps.tar.xz")
4877 ;; Only the latest release is in this directory
4878 (string-append "http://crawl.develz.org/release/stone_soup-"
4879 version "-nodeps.tar.xz")))
4880 (sha256
af48a200 4881 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4882 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4883 (build-system gnu-build-system)
4884 (inputs
4885 `(("lua51" ,lua-5.1)
4886 ("ncurses" ,ncurses)
4887 ("sqlite" ,sqlite)
4888 ("zlib" ,zlib)))
4889 (native-inputs
4890 `(("bison" ,bison)
4891 ("flex" ,flex)
4892 ("perl" ,perl)
fc7d6bc6 4893 ("python" ,python-wrapper)
e366521a 4894 ("python-pyyaml" ,python-pyyaml)
dd37a545 4895 ("pkg-config" ,pkg-config)))
4896 (arguments
a5c8460a 4897 `(#:make-flags
dd37a545 4898 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4899 (out (assoc-ref %outputs "out")))
4900 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4901 (string-append "prefix=" out)
4902 "SAVEDIR=~/.crawl"
564df7e5 4903 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4904 ,@(match (%current-system)
4905 ((or "i686-linux" "x86_64-linux")
4906 '())
4907 (_ '("NOSSE=TRUE")))
dd37a545 4908 ;; don't build any bundled dependencies
4909 "BUILD_LUA="
4910 "BUILD_SQLITE="
4911 "BUILD_ZLIB="
4912 "-Csource"))
4913 #:phases
4914 (modify-phases %standard-phases
606c1987
EF
4915 (add-after 'unpack 'find-SDL-image
4916 (lambda _
4917 (substitute* "source/windowmanager-sdl.cc"
4918 (("SDL_image.h") "SDL2/SDL_image.h"))
4919 #t))
dd37a545 4920 (delete 'configure)
e366521a 4921 (replace 'check
dd37a545 4922 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4923 (setenv "HOME" (getcwd))
4924 ;; Fake a terminal for the test cases.
4925 (setenv "TERM" "xterm-256color")
e366521a
KK
4926 ;; Run the tests that don't require a debug build.
4927 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4928 (format #f "-j~d" (parallel-job-count))
4929 ;; Force command line build for test cases.
4930 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4931 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4932 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4933for short) is a roguelike adventure through dungeons filled with dangerous
4934monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4935 (home-page "https://crawl.develz.org")
4936 (license (list license:gpl2+
4937 license:bsd-2
4938 license:bsd-3
4939 license:cc0
4940 license:expat
4941 license:zlib
4942 license:asl2.0))))
cae491ab 4943
649220ad
NG
4944(define-public dungeon-crawl-stone-soup
4945 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4946
1243aaac 4947;; The linter here claims that patch file names should start with the package
4948;; name. But, in this case, the patches are inherited from crawl with the
4949;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4950(define-public crawl-tiles
ae548434 4951 (package
649220ad
NG
4952 (inherit crawl)
4953 (name "crawl-tiles")
ae548434 4954 (arguments
4955 (substitute-keyword-arguments
4956 (package-arguments crawl)
4957 ((#:make-flags flags)
4958 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4959 (cons*
4960 (string-append "PROPORTIONAL_FONT=" dejavu
4961 "/share/fonts/truetype/DejaVuSans.ttf")
4962 (string-append "MONOSPACED_FONT=" dejavu
4963 "/share/fonts/truetype/DejaVuSansMono.ttf")
4964 "TILES=y"
4965 ;; Rename the executable to allow parallel installation with crawl.
4966 "GAME=crawl-tiles"
4967 ,flags)))))
4968 (inputs
4969 `(,@(package-inputs crawl)
4970 ("font-dejavu" ,font-dejavu)
4971 ("freetype6" ,freetype)
4972 ("glu" ,glu)
4973 ("libpng" ,libpng)
4974 ("sdl2" ,sdl2)
4975 ("sdl2-image" ,sdl2-image)
4976 ("sdl2-mixer" ,sdl2-mixer)))
4977 (native-inputs
4978 `(,@(package-native-inputs crawl)
6438a468 4979 ("pngcrush" ,pngcrush)
ae548434 4980 ("which" ,which)))
4981 (synopsis "Graphical roguelike dungeon crawler game")))
4982
649220ad
NG
4983(define-public dungeon-crawl-stone-soup-tiles
4984 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4985
cae491ab
JL
4986(define-public lugaru
4987 (package
4988 (name "lugaru")
4989 (version "1.2")
4990 (source (origin
4991 (method url-fetch)
4992 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 4993 "lugaru-" version ".tar.xz"))
cae491ab
JL
4994 (sha256
4995 (base32
4996 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4997 (build-system cmake-build-system)
4998 (arguments
4999 `(#:configure-flags
5000 (list "-DSYSTEM_INSTALL=ON")
5001 ;; no test target
5002 #:tests? #f))
5003 (native-inputs
5004 `(("pkg-config" ,pkg-config)))
5005 (inputs
5006 `(("sdl2" ,sdl2)
5007 ("glu" ,glu)
5008 ("libjpeg" ,libjpeg-turbo)
5009 ("libpng" ,libpng)
5010 ("openal" ,openal)
5011 ("vorbis" ,libvorbis)
5012 ("zlib" ,zlib)))
5013 (home-page "https://osslugaru.gitlab.io")
5014 (synopsis "Cross-platform third-person action game")
5015 (description "Lugaru is a third-person action game. The main character,
5016Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5017In his quest to find those responsible for slaughtering his village, he uncovers
5018a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5019and the starving wolves from a nearby den. Turner takes it upon himself to
5020fight against their plot and save his fellow rabbits from slavery.")
5021 (license (list license:gpl2+ ; code
5022 ;; assets:
5023 license:cc-by-sa3.0
5024 license:cc-by-sa4.0))))
bff33e6c
CL
5025
5026(define-public 0ad-data
5027 (package
5028 (name "0ad-data")
8c00379c 5029 (version "0.0.23b-alpha")
bff33e6c
CL
5030 (source
5031 (origin
5032 (method url-fetch)
706d6190 5033 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5034 version "-unix-data.tar.xz"))
5035 (file-name (string-append name "-" version ".tar.xz"))
5036 (sha256
5037 (base32
8c00379c 5038 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
5039 (modules '((guix build utils)))
5040 (snippet
5041 #~(begin
6cbee49d
MW
5042 (for-each (lambda (name)
5043 (let* ((dir (string-append "binaries/data/mods/" name))
5044 (file (string-append dir "/" name ".zip"))
5045 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 5046 (invoke unzip "-d" dir file)
6cbee49d
MW
5047 (delete-file file)))
5048 '("mod" "public"))
bff33e6c
CL
5049 #t))))
5050 (build-system trivial-build-system)
5051 (native-inputs `(("tar" ,tar)
5052 ("xz" ,xz)))
5053 (arguments
5054 `(#:modules ((guix build utils))
5055 #:builder
5056 (begin
5057 (use-modules (guix build utils))
5058 (let ((out (assoc-ref %outputs "out"))
5059 (source (assoc-ref %build-inputs "source"))
5060 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5061 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5062 (setenv "PATH" xz-path)
5063 (mkdir out)
e3cfef22 5064 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
5065 (synopsis "Data files for 0ad")
5066 (description "0ad-data provides the data files required by the game 0ad.")
5067 (home-page "https://play0ad.com")
5068 (license (list (license:fsdg-compatible
5069 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
5070 "Similar to the license of the Bitstream Vera fonts.")
5071 (license:fsdg-compatible
5072 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
5073 license:cc-by-sa3.0
5074 license:expat
5075 license:gfl1.0
5076 license:gpl2+
5077 license:gpl3+))))
5078
5079(define-public 0ad
5080 (package
5081 (name "0ad")
8c00379c 5082 (version "0.0.23b-alpha")
bff33e6c
CL
5083 (source
5084 (origin
5085 (method url-fetch)
706d6190 5086 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5087 version "-unix-build.tar.xz"))
5088 (file-name (string-append name "-" version ".tar.xz"))
5089 (sha256
5090 (base32
8c00379c 5091 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
5092 ;; A snippet here would cause a build failure because of timestamps
5093 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
5094 (inputs
5095 `(("0ad-data" ,0ad-data)
5096 ("curl" ,curl)
5097 ("enet" ,enet)
5098 ("gloox" ,gloox)
5099 ("icu4c" ,icu4c)
5100 ("libpng" ,libpng)
706d6190 5101 ("libsodium" ,libsodium)
bff33e6c
CL
5102 ("libvorbis" ,libvorbis)
5103 ("libxcursor" ,libxcursor)
5104 ("libxml2" ,libxml2)
5105 ("miniupnpc" ,miniupnpc)
5106 ("mozjs-38" ,mozjs-38)
5107 ("openal" ,openal)
5108 ("sdl2" ,sdl2)
5109 ("wxwidgets" ,wxwidgets)
5110 ("zlib" ,zlib)))
5111 (native-inputs
5112 `(("boost" ,boost)
c69959f0 5113 ("cmake" ,cmake-minimal)
bff33e6c
CL
5114 ("mesa" ,mesa)
5115 ("pkg-config" ,pkg-config)
5116 ("python-2" ,python-2)))
5117 (build-system gnu-build-system)
5118 (arguments
809b8842
CB
5119 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5120 #:phases
bff33e6c
CL
5121 (modify-phases %standard-phases
5122 (add-after 'unpack 'delete-bundles
5123 (lambda _
5124 (delete-file-recursively "libraries/source/spidermonkey")
5125 #t))
5126 (add-after 'unpack 'fix-x11-includes
5127 (lambda _
5128 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5129 (("<Xlib.h>") "<X11/Xlib.h>"))
5130 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5131 (("<Xatom.h>") "<X11/Xatom.h>"))
5132 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5133 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5134 #t))
5135 (replace 'configure
5136 (lambda* (#:key inputs outputs #:allow-other-keys)
5137 (let* ((jobs (number->string (parallel-job-count)))
5138 (out (assoc-ref outputs "out"))
5139 (lib (string-append out "/lib"))
5140 (data (string-append out "/share/0ad")))
5141 (setenv "JOBS" (string-append "-j" jobs))
5142 (setenv "CC" "gcc")
5143 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5144 (invoke "./update-workspaces.sh"
5145 (string-append "--libdir=" lib)
5146 (string-append "--datadir=" data)
5147 ;; TODO: "--with-system-nvtt"
5148 "--with-system-mozjs38")))))
bff33e6c
CL
5149 (delete 'check)
5150 (replace 'install
5151 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5152 (chdir "binaries")
bff33e6c
CL
5153 (let* ((out (assoc-ref outputs "out"))
5154 (bin (string-append out "/bin"))
5155 (lib (string-append out "/lib"))
5156 (data (string-append out "/share/0ad"))
5157 (applications (string-append out "/share/applications"))
5158 (pixmaps (string-append out "/share/pixmaps"))
5159 (0ad-data (assoc-ref inputs "0ad-data")))
5160 ;; data
5161 (copy-recursively "data" data)
5162 (for-each (lambda (file)
5163 (symlink (string-append 0ad-data "/" file)
5164 (string-append data "/" file)))
5165 '("config" "mods/mod" "mods/public" "tools"))
5166 ;; libraries
5167 (for-each (lambda (file)
5168 (install-file file lib))
5169 (find-files "system" "\\.so$"))
5170 ;; binaries
5171 (install-file "system/pyrogenesis" bin)
5172 (with-directory-excursion bin
5173 (symlink "pyrogenesis" "0ad"))
5174 ;; resources
5175 (with-directory-excursion "../build/resources"
5176 (install-file "0ad.desktop" applications)
5177 (install-file "0ad.png" pixmaps))
5178 #t)))
5179 (add-after 'install 'check
5180 (lambda _
5181 (with-directory-excursion "system"
7b67bb1f 5182 (invoke "./test")))))))
bff33e6c
CL
5183 (home-page "https://play0ad.com")
5184 (synopsis "3D real-time strategy game of ancient warfare")
5185 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5186warfare. It's a historically-based war/economy game that allows players to
5187relive or rewrite the history of twelve ancient civilizations, each depicted
5188at their peak of economic growth and military prowess.
5189
51900ad needs a window manager that supports 'Extended Window Manager Hints'.")
5191 (license (list license:bsd-2
5192 license:bsd-3
5193 license:expat
5194 license:gpl2+
5195 license:ibmpl1.0
5196 license:isc
5197 license:lgpl2.1
5198 license:lgpl3
5199 license:mpl2.0
5200 license:zlib))))
dec63df4 5201
5202;; There have been no official releases.
5203(define-public open-adventure
be6e2c30 5204 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5205 (revision "2"))
dec63df4 5206 (package
5207 (name "open-adventure")
5208 (version (string-append "2.5-" revision "." (string-take commit 7)))
5209 (source (origin
5210 (method git-fetch)
5211 (uri (git-reference
5212 (url "https://gitlab.com/esr/open-adventure")
5213 (commit commit)))
5214 (file-name (string-append name "-" version "-checkout"))
5215 (sha256
5216 (base32
be6e2c30 5217 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5218 (build-system gnu-build-system)
5219 (arguments
5220 `(#:make-flags (list "CC=gcc")
5221 #:parallel-build? #f ; not supported
5222 #:phases
5223 (modify-phases %standard-phases
be6e2c30 5224 (replace 'configure
5225 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5226 ;; Linenoise is meant to be included, so we have to
5227 ;; copy it into the working directory.
be6e2c30 5228 (let* ((linenoise (assoc-ref inputs "linenoise"))
5229 (noisepath (string-append linenoise "/include/linenoise"))
5230 (out (assoc-ref outputs "out")))
5231 (copy-recursively noisepath "linenoise"))
5232 #t))
dec63df4 5233 (add-before 'build 'use-echo
5234 (lambda _
5235 (substitute* "tests/Makefile"
5236 (("/bin/echo") (which "echo")))
5237 #t))
5238 (add-after 'build 'build-manpage
5239 (lambda _
5240 ;; This target is missing a dependency
5241 (substitute* "Makefile"
be6e2c30 5242 ((".adoc.6:" line)
5243 (string-append line " advent.adoc")))
27cd31e6 5244 (invoke "make" ".adoc.6")))
dec63df4 5245 ;; There is no install target
5246 (replace 'install
5247 (lambda* (#:key outputs #:allow-other-keys)
5248 (let* ((out (assoc-ref outputs "out"))
5249 (bin (string-append out "/bin"))
5250 (man (string-append out "/share/man/man6")))
5251 (install-file "advent" bin)
5252 (install-file "advent.6" man))
5253 #t)))))
5254 (native-inputs
be6e2c30 5255 `(("asciidoc" ,asciidoc)
5256 ("linenoise" ,linenoise)
5257 ("python" ,python)
5258 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5259 (home-page "https://gitlab.com/esr/open-adventure")
5260 (synopsis "Colossal Cave Adventure")
5261 (description "The original Colossal Cave Adventure from 1976 was the
5262origin of all text adventures, dungeon-crawl (computer) games, and
5263computer-hosted roleplaying games. This is the last version released by
5264Crowther & Woods, its original authors, in 1995. It has been known as
5265\"adventure 2.5\" and \"430-point adventure\".")
5266 (license license:bsd-2))))
1f88f189 5267
649220ad 5268(define-public tome4
1f88f189 5269 (package
649220ad 5270 (name "tome4")
f894ffd8 5271 (version "1.6.7")
1f88f189
OP
5272 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5273 (source
5274 (origin
5275 (method url-fetch)
5276 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5277 version ".tar.bz2"))
5278 (sha256
f894ffd8 5279 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
1f88f189
OP
5280 (modules '((guix build utils)))
5281 (snippet
6cbee49d
MW
5282 '(begin
5283 (substitute* '("src/music.h" "src/tSDL.h")
5284 (("#elif defined(__FreeBSD__)" line)
5285 (string-append
5286 line " || defined(__GNUC__)")))
19c0cdb9
OP
5287 (substitute* '("src/tgl.h")
5288 (("#include <GL/glext.h>") ""))
6cbee49d 5289 #t))))
1f88f189
OP
5290 (build-system gnu-build-system)
5291 (native-inputs
5292 `(("unzip" ,unzip)))
5293 (inputs
5294 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5295 ("glu" ,glu)
5296 ("premake4" ,premake4)
5297 ("openal" ,openal)
5298 ("vorbis" ,libvorbis)
5299 ("luajit" ,luajit)))
5300 (arguments
5301 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5302 ;; XXX: Building in parallel occasionally causes this build failure:
5303 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5304 ;; No such file or directory
5305 #:parallel-build? #f
1f88f189 5306 #:phases (modify-phases %standard-phases
972b87b1 5307 (delete 'bootstrap)
1f88f189
OP
5308 (replace 'configure
5309 (lambda _
13a504af 5310 (invoke "premake4" "gmake")
1f88f189
OP
5311 #t))
5312 (add-after 'set-paths 'set-sdl-paths
5313 (lambda* (#:key inputs #:allow-other-keys)
5314 (setenv "CPATH"
5315 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5316 "/include/SDL2:"
5317 (getenv "CPATH")))
1f88f189
OP
5318 #t))
5319 (delete 'check)
5320 ;; premake doesn't provide install target
5321 (replace 'install
5322 (lambda* (#:key inputs outputs #:allow-other-keys)
5323 (let* ((out (assoc-ref outputs "out"))
5324 (usr (string-append out "/usr"))
5325 (bin (string-append out "/bin"))
5326 (licenses (string-append out "/share/licenses"))
5327 (documents (string-append out "/share/doc"))
5328 (pixmaps (string-append out "/share/pixmaps"))
5329 (icon "te4-icon.png")
5330 (data (string-append out "/share/" ,name))
5331 (applications (string-append
5332 out "/share/applications"))
5333 (unzip (string-append
5334 (assoc-ref inputs "unzip") "/bin/unzip"))
5335 (wrapper (string-append bin "/" ,name)))
5336 ;; icon
5337 (mkdir-p pixmaps)
26d52476
OP
5338 (invoke unzip "-j"
5339 (string-append
5340 "game/engines/te4-" ,version ".teae")
5341 (string-append
5342 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
5343 ;; game executable
5344 (install-file "t-engine" data)
5345 (mkdir-p bin)
5346 (with-output-to-file wrapper
5347 (lambda ()
5348 (display
5349 (string-append
5350 "#!/bin/sh\n"
5351 ;; No bootstrap code found,
5352 ;; defaulting to working directory
5353 ;; for engine code!
5354 "cd " data "\n"
5355 "exec -a tome4 ./t-engine \"$@\"\n"))))
5356 (chmod wrapper #o555)
5357 ;; licenses
5358 (for-each (lambda (file)
5359 (install-file file licenses))
5360 '("COPYING" "COPYING-MEDIA"))
5361 ;; documents
5362 (for-each (lambda (file)
5363 (install-file file documents))
5364 '("CONTRIBUTING" "CREDITS"))
5365 ;; data
5366 (copy-recursively "bootstrap" (string-append
5367 data "/bootstrap"))
5368 (copy-recursively "game" (string-append data "/game"))
5369 ;; launcher
5370 (mkdir-p applications)
96a320e5
PN
5371 (make-desktop-entry-file
5372 (string-append applications "/" ,name ".desktop")
5373 #:name "ToME4"
5374 #:comment ,synopsis
5375 #:exec ,name
5376 #:icon icon
5377 #:categories '("Game" "RolePlaying")))
1f88f189
OP
5378 #t)))))
5379 (home-page "https://te4.org")
5380 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5381combat and advanced character building. Play as one of many unique races and
5382classes in the lore-filled world of Eyal, exploring random dungeons, facing
5383challenging battles, and developing characters with your own tailored mix of
5384abilities and powers. With a modern graphical and customisable interface,
5385intuitive mouse control, streamlined mechanics and deep, challenging combat,
5386Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5387 (license license:gpl3+)))
7a070f02 5388
649220ad
NG
5389(define-public tales-of-maj-eyal
5390 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5391
7a070f02 5392(define-public quakespasm
5393 (package
5394 (name "quakespasm")
18bbaf67 5395 (version "0.93.2")
7a070f02 5396 (source
5397 (origin
5398 (method url-fetch)
5399 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5400 version ".tgz"))
5401 (sha256
18bbaf67 5402 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 5403 (arguments
5404 `(#:tests? #f
5405 #:make-flags '("CC=gcc"
5406 "MP3LIB=mpg123"
5407 "USE_CODEC_FLAC=1"
5408 "USE_CODEC_MIKMOD=1"
5409 "USE_SDL2=1"
5410 "-CQuake")
5411 #:phases (modify-phases %standard-phases
5412 (delete 'configure)
5413 (add-after 'unpack 'fix-makefile-paths
5414 (lambda* (#:key outputs #:allow-other-keys)
5415 (let ((out (assoc-ref outputs "out")))
5416 (mkdir-p (string-append out "/bin"))
5417 (substitute* "Quake/Makefile"
5418 (("/usr/local/games")
5419 (string-append out "/bin")))
5420 #t))))))
5421 (build-system gnu-build-system)
5422 (inputs `(("libmikmod" ,libmikmod)
5423 ("libvorbis" ,libvorbis)
5424 ("flac" ,flac)
5425 ("mesa" ,mesa)
5426 ("mpg123" ,mpg123)
5427 ("sdl2" ,sdl2)))
5428 (synopsis "First person shooter engine for Quake 1")
5429 (description "Quakespasm is a modern engine for id software's Quake 1.
5430It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5431some graphical niceities, and numerous bug-fixes and other improvements.")
5432 (home-page "http://quakespasm.sourceforge.net/")
5433 (license license:gpl2+)))
916bb947 5434
7a6be5b9
RH
5435(define-public vkquake
5436 (package
5437 (inherit quakespasm)
5438 (name "vkquake")
3e7b376e 5439 (version "1.01.0")
7a6be5b9
RH
5440 (source
5441 (origin
f5e1a0e5
TGR
5442 (method git-fetch)
5443 (uri (git-reference
5444 (url "https://github.com/Novum/vkQuake.git")
5445 (commit version)))
5446 (file-name (git-file-name name version))
7a6be5b9 5447 (sha256
f5e1a0e5 5448 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5449 (arguments
5450 `(#:make-flags
5451 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5452 "vulkan-loader") "/lib")))
7a6be5b9
RH
5453 (list "CC=gcc"
5454 "MP3LIB=mpg123"
5455 "USE_CODEC_FLAC=1"
5456 "USE_CODEC_MIKMOD=1"
5457 "USE_SDL2=1"
5458 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5459 "-CQuake"))
5460 #:phases (modify-phases %standard-phases
5461 (delete 'configure)
5462 (add-after 'unpack 'fix-makefile-paths
5463 (lambda* (#:key outputs #:allow-other-keys)
5464 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5465 "vulkan-loader"))
7a6be5b9
RH
5466 (out (assoc-ref outputs "out")))
5467 (mkdir-p (string-append out "/bin"))
5468 (substitute* "Quake/Makefile" ((" /usr")
5469 (string-append " " out)))
5470 (substitute* "Quake/Makefile" (("/games")
5471 (string-append "/bin")))
5472 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5473 #t))))
5474 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5475 (package-arguments quakespasm))))
4108886b
RH
5476 (inputs `(("vulkan-headers" ,vulkan-headers)
5477 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5478 ,@(package-inputs quakespasm)))
5479 (description "vkquake is a modern engine for id software's Quake 1.
5480It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5481some graphical niceities, and numerous bug-fixes and other improvements.")
5482 (home-page "https://github.com/Novum/vkQuake")))
5483
916bb947 5484(define-public yamagi-quake2
5485 (package
5486 (name "yamagi-quake2")
5487 (version "7.10")
5488 (source
5489 (origin
5490 (method url-fetch)
5491 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5492 version ".tar.xz"))
5493 (sha256
5494 (base32
5495 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5496 (build-system gnu-build-system)
5497 (arguments
5498 `(#:tests? #f
5499 #:make-flags
5500 (list "CC=gcc"
5501 ;; link openAL instead of using dlopen at runtime
5502 "DLOPEN_OPENAL=\"no\""
5503 ;; an optional directory where it will look for quake2 data files
5504 ;; in addition to the current working directory
5505 "WITH_SYSTEMWIDE=yes"
5506 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5507 #:phases
5508 (modify-phases %standard-phases
5509 (delete 'configure)
5510 (replace 'install
5511 (lambda* (#:key outputs #:allow-other-keys)
5512 (let ((out (assoc-ref outputs "out")))
5513 (mkdir-p (string-append out "/lib"))
5514 (mkdir-p (string-append out "/bin"))
5515 ;; The yamagi-quake2 binary must be in the same directory
5516 ;; as it's engine libraries, but symlinking it to /bin is okay
5517 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5518 (copy-recursively "release"
5519 (string-append out "/lib/yamagi-quake2"))
5520 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5521 (string-append out "/bin/yamagi-quake2"))
5522 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5523 (string-append out "/bin/yamagi-q2ded"))))))))
5524 (inputs `(("sdl2" ,sdl2)
5525 ("mesa" ,mesa)
5526 ("libvorbis" ,libvorbis)
5527 ("zlib" ,zlib)
5528 ("openal" ,openal)))
5529 (native-inputs `(("pkg-config" ,pkg-config)))
5530 (synopsis "First person shooter engine based on quake2")
5531 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5532The main focus is an unchanged single player experience like back in 1997,
5533thus the gameplay and the graphics are unaltered. However the user may use one
5534of the unofficial retexturing packs. In comparison with the official client,
5535over 1000 bugs were fixed and an extensive code audit done,
5536making Yamagi Quake II one of the most solid Quake II implementations available.")
5537 (home-page "https://www.yamagi.org/quake2/")
5538 (license (list license:gpl2+ ; game and server
5539 (license:non-copyleft ; info-zip
5540 "file://LICENSE"
5541 "See Info-Zip section.")
5542 license:public-domain)))) ; stb
c1228231 5543
e7448859
MIP
5544(define-public nudoku
5545 (package
5546 (name "nudoku")
5547 (version "1.0.0")
5548 (source (origin
5549 (method url-fetch)
5550 (uri (string-append "https://github.com/jubalh/nudoku/"
5551 "releases/download/" version
5552 "/nudoku-" version ".tar.xz"))
5553 (sha256
5554 (base32
5555 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5556 (build-system gnu-build-system)
5557 (inputs `(("ncurses" ,ncurses)))
5558 (home-page "https://jubalh.github.io/nudoku/")
5559 (synopsis "Sudoku for your terminal")
5560 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5561 (license license:gpl3+)))
5562
c1228231
NG
5563(define-public the-butterfly-effect
5564 (package
5565 (name "the-butterfly-effect")
5566 (version "0.9.3.1")
5567 (source
5568 (origin
089c6b00
EF
5569 (method git-fetch)
5570 (uri (git-reference
5571 (url "https://github.com/the-butterfly-effect/tbe.git")
5572 (commit (string-append "v" version))))
5573 (file-name (git-file-name name version))
c1228231
NG
5574 (sha256
5575 (base32
089c6b00 5576 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5577 (build-system gnu-build-system)
5578 (arguments
5579 `(#:phases
5580 (modify-phases %standard-phases
5581 (delete 'configure)
5582 ;; There is no "install" phase. By default, tbe is installed
5583 ;; in the build directory. Provide our own installation.
5584 (replace 'install
5585 (lambda* (#:key outputs #:allow-other-keys)
5586 (let* ((out (assoc-ref outputs "out"))
5587 (bin (string-append out "/bin"))
5588 (share (string-append out "/share")))
5589 (install-file "usr/games/tbe" bin)
5590 (mkdir-p share)
5591 (copy-recursively "usr/share" share)
5592 #t))))
5593 ;; Test suite requires a running Xorg server. Even when
5594 ;; provided, it fails with "D-Bus library appears to be
5595 ;; incorrectly set up; failed to read machine uuid: Failed to
5596 ;; open "/etc/machine-id": No such file or directory" along
5597 ;; with multiple "QPainter:: ... Painter not active" warnings.
5598 #:tests? #f))
5599 (inputs
5600 `(("qtbase" ,qtbase)
5601 ("qtsvg" ,qtsvg)))
5602 (native-inputs
c69959f0 5603 `(("cmake" ,cmake-minimal)
c1228231
NG
5604 ("gettext-minimal" ,gettext-minimal)
5605 ("qttools" ,qttools)))
5606 (synopsis "Realistic physics puzzle game")
5607 (description "The Butterfly Effect (tbe) is a game that uses
5608realistic physics simulations to combine lots of simple mechanical
5609elements to achieve a simple goal in the most complex way possible.")
5610 (home-page "http://the-butterfly-effect.org/")
5611 ;; Main license is GPL2-only. However, artwork is distributed
5612 ;; under various licenses, listed here.
5613 (license (list license:gpl2 license:public-domain license:expat
5614 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5615
5616(define-public pioneer
5617 (package
5618 (name "pioneer")
8f33b76e 5619 (version "20200203")
aac1aa75 5620 (source (origin
6a03ccf4
EB
5621 (method git-fetch)
5622 (uri (git-reference
5623 (url "https://github.com/pioneerspacesim/pioneer.git")
5624 (commit version)))
5625 (file-name (git-file-name name version))
aac1aa75
EB
5626 (sha256
5627 (base32
8f33b76e 5628 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 5629 (build-system cmake-build-system)
aac1aa75 5630 (native-inputs
ed3e7b72 5631 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5632 (inputs
5633 `(("assimp" ,assimp)
5634 ("curl" ,curl)
5635 ("freetype" ,freetype)
ed3e7b72 5636 ("glew" ,glew)
aac1aa75
EB
5637 ("glu" ,glu)
5638 ("libpng" ,libpng)
5639 ("libsigc++" ,libsigc++)
5640 ("libvorbis" ,libvorbis)
5641 ("lua" ,lua-5.2) ;not compatible with 5.3
5642 ("mesa" ,mesa)
5643 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5644 (arguments
5645 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5646 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5647 (string-append "-DPIONEER_DATA_DIR="
5648 %output "/share/games/pioneer"))))
aac1aa75
EB
5649 (home-page "http://pioneerspacesim.net")
5650 (synopsis "Game of lonely space adventure")
5651 (description
5652 "Pioneer is a space adventure game set in our galaxy at the turn of the
565331st century. The game is open-ended, and you are free to eke out whatever
5654kind of space-faring existence you can think of. Look for fame or fortune by
5655exploring the millions of star systems. Turn to a life of crime as a pirate,
5656smuggler or bounty hunter. Forge and break alliances with the various
5657factions fighting for power, freedom or self-determination. The universe is
5658whatever you make of it.")
5659 (license license:gpl3)))
57f9671d 5660
5661(define-public badass
5662 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5663 (revision "0"))
5664 (package
5665 (name "badass")
5666 (version (git-version "0.0" revision commit))
5667 (source (origin
5668 (method git-fetch)
5669 (uri (git-reference
5670 (url "https://github.com/umayr/badass.git")
5671 (commit commit)))
5672 (file-name (git-file-name name version))
5673 (sha256
5674 (base32
5675 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5676 (build-system go-build-system)
5677 (arguments
5678 '(#:import-path "github.com/umayr/badass"))
5679 (synopsis "Hacking contribution graphs in git")
5680 (description
5681 "Badass generates false commits for a range of dates, essentially
5682hacking the gamification of contribution graphs on platforms such as
5683Github or Gitlab.")
5684 (home-page "https://github.com/umayr/badass")
5685 (license license:expat))))
fa7d8ea1
NG
5686
5687(define-public colobot
5688 (package
5689 (name "colobot")
2dad4c91 5690 (version "0.1.12-alpha")
fa7d8ea1
NG
5691 (source
5692 (origin
2dad4c91
NG
5693 (method git-fetch)
5694 (uri (git-reference
5695 (url "https://github.com/colobot/colobot.git")
5696 (commit (string-append "colobot-gold-" version))
5697 (recursive? #t))) ;for "data/" subdir
5698 (file-name (git-file-name name version))
fa7d8ea1
NG
5699 (sha256
5700 (base32
2dad4c91 5701 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5702 (build-system cmake-build-system)
5703 (arguments
5704 `(#:tests? #f ;no test
5705 #:phases
5706 (modify-phases %standard-phases
2dad4c91
NG
5707 (add-after 'unpack 'make-git-checkout-writable
5708 (lambda _
5709 (for-each make-file-writable (find-files "."))
5710 #t))
5711 (add-after 'unpack 'fix-directories
5712 (lambda _
5713 (substitute* "CMakeLists.txt"
5714 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5715 (string-append prefix "/bin"))
5716 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5717 (string-append prefix "/colobot")))
5718 #t))
5719 (add-after 'fix-directories 'install-music
5720 ;; Retrieve and install music files.
fa7d8ea1
NG
5721 (lambda* (#:key inputs #:allow-other-keys)
5722 ;; Installation process tries to download music files using
2dad4c91
NG
5723 ;; "wget" if not already present. Since we are going another
5724 ;; route, skip "wget" command check.
fa7d8ea1
NG
5725 (substitute* "data/music/CMakeLists.txt"
5726 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5727 ;; Populate "music/" directory.
fa7d8ea1 5728 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5729 (invoke "tar" "-xvf" data "-Cdata/music"))
5730 #t)))))
fa7d8ea1 5731 (native-inputs
2dad4c91 5732 `(("colobot-music"
fa7d8ea1
NG
5733 ,(origin
5734 (method url-fetch)
5735 (uri (string-append "https://colobot.info/files/music/"
5736 "colobot-music_ogg_" version ".tar.gz"))
5737 (sha256
5738 (base32
5739 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5740 ("gettext" ,gettext-minimal)
5741 ("librsvg" ,librsvg)
5742 ("po4a" ,po4a)
5743 ("python" ,python-wrapper)))
5744 (inputs
5745 `(("boost" ,boost)
5746 ("glew" ,glew)
5747 ("libogg" ,libogg)
5748 ("libpng" ,libpng)
5749 ("libsndfile" ,libsndfile)
5750 ("libvorbis" ,libvorbis)
5751 ("openal" ,openal)
5752 ("physfs" ,physfs)
5753 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5754 (synopsis "Educational programming strategy game")
5755 (description "Colobot: Gold Edition is a real-time strategy game, where
5756you can program your units (bots) in a language called CBOT, which is similar
5757to C++ and Java. Your mission is to find a new planet to live and survive.
5758You can save humanity and get programming skills!")
5759 (home-page "https://colobot.info")
5760 (license license:gpl3+)))
2922852e 5761
5762(define-public gzdoom
5763 (package
5764 (name "gzdoom")
570b89f4
TGR
5765 (version "4.3.2")
5766 (source
5767 (origin
5768 (method git-fetch)
5769 (uri (git-reference
5770 (url "https://github.com/coelckers/gzdoom.git")
5771 (commit (string-append "g" version))))
5772 (file-name (git-file-name name version))
5773 (sha256
5774 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5775 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5776 "gzdoom-find-system-libgme.patch"))
5777 (modules '((guix build utils)))
5778 (snippet
5779 '(begin
5780 ;; Remove some bundled libraries. XXX There are more, but removing
5781 ;; them would require, at least, patching the build system.
5782 (with-directory-excursion "libraries"
5783 (delete-file-recursively "bzip2")
5784 (delete-file-recursively "game-music-emu")
5785 (delete-file-recursively "jpeg")
5786 (delete-file-recursively "zlib"))
5787 #t))))
2922852e 5788 (arguments
5789 '(#:tests? #f
5790 #:configure-flags
5791 (let ((out (assoc-ref %outputs "out")))
5792 (list
5793 (string-append
5794 "-DCMAKE_CXX_FLAGS:="
5795 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5796 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
5797
5798 ;; The build requires some extra convincing not to use the bundled
5799 ;; libgme previously deleted in the soure snippet.
5800 "-DFORCE_INTERNAL_GME=OFF"
5801
5802 ;; Link libraries at build time instead of loading them at run time.
2922852e 5803 "-DDYN_OPENAL=OFF"
5804 "-DDYN_FLUIDSYNTH=OFF"
5805 "-DDYN_GTK=OFF"
5806 "-DDYN_MPG123=OFF"
5807 "-DDYN_SNDFILE=OFF"))
5808 #:phases
5809 (modify-phases %standard-phases
5810 (add-before 'configure 'fix-referenced-paths
5811 (lambda* (#:key inputs outputs #:allow-other-keys)
5812 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5813 (timidity++ (assoc-ref inputs "timidity++"))
5814 (out (assoc-ref outputs "out")))
5815
5816 (substitute*
5817 "src/CMakeLists.txt"
5818 (("COMMAND /bin/sh")
5819 (string-append "COMMAND " (which "sh"))))
5820
5821 (substitute*
570b89f4 5822 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 5823 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5824 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5825
5826 (substitute*
570b89f4 5827 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 5828 (("exename = \"timidity\"")
5829 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5830 #t))))))
5831 (build-system cmake-build-system)
5832 (inputs `(("bzip2" ,bzip2)
5833 ("fluid-3" ,fluid-3)
570b89f4 5834 ("fluidsynth" ,fluidsynth)
2922852e 5835 ("gtk+3" ,gtk+)
5836 ("libgme" ,libgme)
4bd428a7 5837 ("libjpeg" ,libjpeg-turbo)
2922852e 5838 ("libsndfile" ,libsndfile)
5839 ("mesa" ,mesa)
5840 ("mpg123" ,mpg123)
5841 ("openal" ,openal)
5842 ("sdl2" ,sdl2)
5843 ("timidity++" ,timidity++)
5844 ("zlib" ,zlib)))
5845 (native-inputs `(("pkg-config" ,pkg-config)
5846 ("unzip" ,unzip)))
5847 (synopsis "Modern Doom 2 source port")
5848 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5849renderer. It improves modding support with ZDoom's advanced mapping features
5850and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5851Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5852 (home-page "https://zdoom.org/index")
642b195a
EF
5853 ;; The source uses x86 assembly
5854 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5855 (license (list license:gpl3+ ; gzdoom game
5856 license:lgpl3+ ; gzdoom renderer
5857 license:expat ; gdtoa
5858 (license:non-copyleft ; modified dumb
5859 "file://dumb/licence.txt"
5860 "Dumb license, explicitly GPL compatible.")))))
b1642338 5861
6f565d6c
P
5862(define-public odamex
5863 (package
5864 (name "odamex")
5448b16e 5865 (version "0.8.1")
6f565d6c
P
5866 (source
5867 (origin
5868 (method url-fetch)
5869 (uri (string-append
5870 "mirror://sourceforge/odamex/Odamex/" version "/"
5871 "odamex-src-" version ".tar.gz"))
5872 (sha256
5448b16e 5873 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 5874 (build-system cmake-build-system)
5448b16e 5875 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
5876 (inputs
5877 `(("sdl" ,sdl)
5878 ("sdl-mixer" ,sdl-mixer)
5879 ("zlib" ,zlib)
5880 ("libpng" ,libpng)
5881 ("alsa-lib" ,alsa-lib)))
5882 (home-page "https://odamex.net/")
5883 (synopsis "Multiplayer Doom port")
5884 (description "Odamex is a modification of the Doom engine that
5885allows players to easily join servers dedicated to playing Doom
5886online.")
5887 (license license:gpl2+)))
5888
fc16bbb7
JK
5889(define-public chocolate-doom
5890 (package
5891 (name "chocolate-doom")
5892 (version "3.0.0")
5893 (source (origin
5894 (method url-fetch)
5895 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5896 version
5897 "/chocolate-doom-"
5898 version
5899 ".tar.gz"))
5900 (sha256
5901 (base32
5902 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5903 (build-system gnu-build-system)
5904 (inputs `(("sdl2-net" ,sdl2-net)
5905 ("sdl2-mixer" , sdl2-mixer)
5906 ("sdl2" ,sdl2)))
5907 (native-inputs
5908 `(("pkg-config" ,pkg-config)))
5909 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5910Doom")
5911 (description
5912 "Chocolate Doom takes a different approach to other source ports. Its
5913aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5914a conservative, historically accurate Doom source port, which is compatible
5915with the thousands of mods and levels that were made before the Doom source
5916code was released. Rather than flashy new graphics, Chocolate Doom's main
5917features are its accurate reproduction of the game as it was played in the
59181990s. The project is developed around a carefully-considered philosophy that
5919intentionally restricts which features may be added (and rejects any that
5920affect gameplay).")
5921 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5922 (license license:gpl2)))
5923
3f9a027c
DF
5924(define-public crispy-doom
5925 (package
5926 (inherit chocolate-doom)
5927 (name "crispy-doom")
e884c205 5928 (version "5.7.1")
3f9a027c
DF
5929 (source (origin
5930 (method git-fetch)
5931 (uri (git-reference
5932 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5933 (commit (string-append "crispy-doom-" version))))
5934 (file-name (git-file-name name version))
5935 (sha256
e884c205 5936 (base32 "1gqivy4pxasy7phyznixsagylf9f70bk33b0knpfzzlks6cc6zzj"))))
3f9a027c
DF
5937 (native-inputs
5938 (append
5939 (package-native-inputs chocolate-doom)
5940 `(("automake" ,automake)
5941 ("autoreconf" ,autoconf))))
5942 (arguments
5943 `(#:phases
5944 (modify-phases %standard-phases
5945 (replace 'bootstrap
17cb06a6 5946 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
5947 (lambda _ (invoke "autoreconf" "-vif"))))))
5948 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5949Chocolate Doom")
5950 (description
5951 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5952display resolution, removes the static limits of the Doom engine and offers
5953further optional visual, tactical and physical enhancements while remaining
5954entirely config file, savegame, netplay and demo compatible with the
5955original.")
5956 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5957
64b47a29
OP
5958(define shlomif-cmake-modules
5959 (origin
5960 (method url-fetch)
5961 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5962 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5963 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5964 (sha256
5965 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
5966
5967(define-public rinutils
5968 (package
5969 (name "rinutils")
5970 (version "0.2.0")
5971 (source (origin
5972 (method git-fetch)
5973 (uri (git-reference
5974 (url "https://github.com/shlomif/rinutils.git")
5975 (commit version)))
5976 (file-name (git-file-name name version))
5977 (sha256
5978 (base32
5979 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5980 (native-inputs
5981 `(("perl" ,perl)
5982 ;; The following is only needed for tests.
5983 ("perl-file-find-object" ,perl-file-find-object)
5984 ("perl-test-differences" ,perl-test-differences)
5985 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
5986 ("perl-io-all" ,perl-io-all)
5987 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
5988 ("cmake-rules" ,shlomif-cmake-modules)
5989 ("pkg-config" ,pkg-config)))
5990 (inputs
5991 `(("cmocka" ,cmocka)
5992 ("perl-env-path", perl-env-path)
5993 ("perl-inline" ,perl-inline)
5994 ("perl-inline-c" ,perl-inline-c)
5995 ("perl-string-shellquote" ,perl-string-shellquote)
5996 ("perl-test-trailingspace" ,perl-test-trailingspace)
5997 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
5998 ("perl-text-glob" ,perl-text-glob)
5999 ("perl-number-compare" ,perl-number-compare)
6000 ("perl-moo" ,perl-moo)))
6001 (arguments
6002 `(#:phases
6003 (modify-phases %standard-phases
6004 (add-after 'unpack 'fix-build-env
6005 (lambda* (#:key inputs #:allow-other-keys)
6006 (use-modules (guix build utils))
6007 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6008 (copy-file cmake-rules
6009 (string-append "cmake/"
6010 (strip-store-file-name cmake-rules)))
6011 #t)))
6012 (replace 'check
6013 (lambda _
6014 (with-directory-excursion "../source"
6015 (setenv "FCS_TEST_BUILD" "1")
6016 (setenv "RINUTILS_TEST_BUILD" "1")
6017 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6018 ;; which requires tidy-all.
6019 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6020 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6021 (build-system cmake-build-system)
6022 (home-page "https://www.shlomifish.org/open-source/projects/")
6023 (synopsis "C11 / gnu11 utilities C library")
6024 (description "This package provides C11 / gnu11 utilities C library")
6025 (license license:expat)))
6026
b1642338
PN
6027(define-public fortune-mod
6028 (package
6029 (name "fortune-mod")
815e12f3 6030 (version "2.12.0")
7e1d376d
TGR
6031 (source
6032 (origin
6033 (method git-fetch)
6034 (uri (git-reference
6035 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 6036 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
6037 (file-name (git-file-name name version))
6038 (sha256
6039 (base32
815e12f3 6040 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
b1642338
PN
6041 (build-system cmake-build-system)
6042 (arguments
6043 `(#:test-target "check"
6044 #:phases
6045 (modify-phases %standard-phases
6046 (add-after 'unpack 'fix-build-env
6047 (lambda* (#:key inputs #:allow-other-keys)
6048 (use-modules (guix build utils))
6049 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6050 (copy-file cmake-rules
6051 (string-append "fortune-mod/cmake/"
6052 (strip-store-file-name cmake-rules)))
abf06df2 6053 (chdir "fortune-mod")
61857323
PN
6054 ;; TODO: Valgrind tests fail for some reason.
6055 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6056 (delete-file "tests/t/valgrind.t")
abf06df2 6057 #t)))
b1642338 6058 (add-after 'install 'fix-install-directory
b1642338 6059 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
6060 ;; Move binary from "games/" to "bin/" and remove the latter. This
6061 ;; is easier than patching CMakeLists.txt since the tests hard-code
6062 ;; the location as well.
6063 (let* ((out (assoc-ref outputs "out"))
6064 (bin (string-append out "/bin"))
6065 (games (string-append out "/games")))
6066 (rename-file (string-append games "/fortune")
6067 (string-append bin "/fortune"))
6068 (rmdir games)
b1642338
PN
6069 #t))))))
6070 (inputs `(("recode" ,recode)))
6071 (native-inputs
6072 `(("perl" ,perl)
6073 ;; The following is only needed for tests.
6074 ("perl-file-find-object" ,perl-file-find-object)
6075 ("perl-test-differences" ,perl-test-differences)
6076 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6077 ("perl-io-all" ,perl-io-all)
6078 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
6079 ("cmake-rules" ,shlomif-cmake-modules)
6080 ("rinutils" ,rinutils)))
b1642338
PN
6081 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
6082 (synopsis "The Fortune Cookie program from BSD games")
6083 (description "Fortune is a command-line utility which displays a random
6084quotation from a collection of quotes.")
6085 (license license:bsd-4)))
dc70ff2a 6086
6087(define xonotic-data
6088 (package
6089 (name "xonotic-data")
6090 (version "0.8.2")
6091 (source
6092 (origin
6093 (method url-fetch)
6094 (uri (string-append "http://dl.xonotic.org/xonotic-"
6095 version ".zip"))
6096 (file-name (string-append name "-" version ".zip"))
6097 (sha256
6098 (base32
6099 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6100 (build-system trivial-build-system)
6101 (native-inputs
6102 `(("unzip" ,unzip)))
6103 (arguments
6104 `(#:modules ((guix build utils))
6105 #:builder
6106 (begin
6107 (use-modules (guix build utils))
6108 (let* ((out (assoc-ref %outputs "out"))
6109 (xonotic (string-append out "/share/xonotic"))
6110 (source (assoc-ref %build-inputs "source"))
6111 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6112 (copy-file source (string-append ,name "-" ,version ".zip"))
6113 (invoke unzip (string-append ,name "-" ,version ".zip"))
6114 (mkdir-p out)
6115 (mkdir-p xonotic)
6116 (chdir "Xonotic")
6117 (copy-recursively "data"
6118 (string-append xonotic "/data"))
6119 (copy-recursively "server"
6120 (string-append xonotic "/server"))
6121 (install-file "key_0.d0pk" xonotic)))))
6122 (home-page "http://xonotic.org")
6123 (synopsis "Data files for Xonotic")
6124 (description
6125 "Xonotic-data provides the data files required by the game Xonotic.")
6126 (license (list license:gpl2+
9b9db6c4 6127 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 6128
6129(define-public xonotic
6130 (package
6131 (name "xonotic")
6132 (version "0.8.2")
6133 (source
6134 (origin
6135 (method url-fetch)
6136 (uri (string-append "http://dl.xonotic.org/xonotic-"
6137 version "-source.zip"))
6138 (file-name (string-append name "-" version ".zip"))
6139 (sha256
6140 (base32
6141 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6142 (build-system gnu-build-system)
6143 (arguments
6144 `(#:configure-flags (list (string-append "--prefix="
6145 (assoc-ref %outputs "out"))
6146 "--disable-rijndael")
6147 #:phases
6148 (modify-phases %standard-phases
6149 (add-before 'configure 'make-darkplaces
6150 (lambda* (#:key outputs #:allow-other-keys)
6151 (let* ((out (assoc-ref outputs "out"))
6152 (sharedir (string-append out "/share/xonotic/")))
6153 (invoke "make" "-C" "source/darkplaces"
6154 (string-append "DP_FS_BASEDIR="
6155 sharedir)
6156 "DP_LINK_TO_LIBJPEG=1"
6157 "DP_SOUND_API=ALSA"
6158 "CC=gcc"
6159 "-f" "makefile"
6160 "cl-release")
6161 (invoke "make" "-C" "source/darkplaces"
6162 (string-append "DP_FS_BASEDIR="
6163 sharedir)
6164 "DP_LINK_TO_LIBJPEG=1"
6165 "DP_SOUND_API=ALSA"
6166 "CC=gcc"
6167 "-f" "makefile"
6168 "sdl-release")
6169 (invoke "make" "-C" "source/darkplaces"
6170 (string-append "DP_FS_BASEDIR="
6171 sharedir)
6172 "DP_LINK_TO_LIBJPEG=1"
6173 "DP_SOUND_API=ALSA"
6174 "CC=gcc"
6175 "-f" "makefile"
6176 "sv-release"))))
6177 (add-before 'configure 'bootstrap
6178 (lambda _
6179 (chdir "source/d0_blind_id")
6180 (invoke "sh" "autogen.sh")))
6181 (add-after 'build 'install-desktop-entry
6182 (lambda* (#:key outputs #:allow-other-keys)
6183 ;; Add .desktop files for the 2 variants and the symlink
6184 (let* ((output (assoc-ref outputs "out"))
6185 (apps (string-append output "/share/applications")))
6186 (mkdir-p apps)
6187 (with-output-to-file
6188 (string-append apps "/xonotic-glx.desktop")
6189 (lambda _
6190 (format #t
6191 "[Desktop Entry]~@
6192 Name=xonotic-glx~@
6193 Comment=Xonotic glx~@
6194 Exec=~a/bin/xonotic-glx~@
6195 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6196 Icon=xonotic~@
6197 Categories=Game~@
dc70ff2a 6198 Type=Application~%"
6199 output)))
6200 (with-output-to-file
6201 (string-append apps "/xonotic-sdl.desktop")
6202 (lambda _
6203 (format #t
6204 "[Desktop Entry]~@
6205 Name=xonotic-sdl~@
6206 Comment=Xonotic sdl~@
6207 Exec=~a/bin/xonotic-sdl~@
6208 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6209 Icon=xonotic~@
6210 Categories=Game~@
dc70ff2a 6211 Type=Application~%"
6212 output)))
6213 (with-output-to-file
6214 (string-append apps "/xonotic.desktop")
6215 (lambda _
6216 (format #t
6217 "[Desktop Entry]~@
6218 Name=xonotic~@
6219 Comment=Xonotic~@
6220 Exec=~a/bin/xonotic-glx~@
6221 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6222 Icon=xonotic~@
6223 Categories=Game~@
dc70ff2a 6224 Type=Application~%"
6225 output)))
6226 #t)))
6227 (add-after 'install-desktop-entry 'install-icons
6228 (lambda* (#:key outputs #:allow-other-keys)
6229 (let ((out (assoc-ref outputs "out")))
6230 (with-directory-excursion "../../misc/logos/icons_png/"
6231 (for-each
6232 (lambda (file)
6233 (let* ((size (string-filter char-numeric? file))
6234 (icons (string-append out "/share/icons/hicolor/"
6235 size "x" size "/apps")))
6236 (mkdir-p icons)
6237 (copy-file file (string-append icons "/xonotic.png"))))
6238 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6239 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6240 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6241 (add-after 'install-icons 'install-binaries
6242 (lambda* (#:key outputs #:allow-other-keys)
6243 (let ((out (assoc-ref outputs "out")))
6244 (define (install src dst)
6245 (let ((dst (string-append out dst)))
6246 (mkdir-p (dirname dst))
6247 (copy-file src dst)))
6248 (mkdir-p (string-append out "/bin"))
6249 (install "../darkplaces/darkplaces-dedicated"
6250 "/bin/xonotic-dedicated")
6251 (install "../darkplaces/darkplaces-glx"
6252 "/bin/xonotic-glx")
6253 (install "../darkplaces/darkplaces-sdl"
6254 "/bin/xonotic-sdl")
6255 ;; Provide a default xonotic executable, defaulting to SDL.
6256 (symlink (string-append out "/bin/xonotic-sdl")
6257 (string-append out "/bin/xonotic"))
6258 #t)))
6259 (add-after 'install-binaries 'install-data
6260 (lambda* (#:key outputs inputs #:allow-other-keys)
6261 (let* ((out (assoc-ref outputs "out"))
6262 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6263 (symlink (string-append data "/share/xonotic")
6264 (string-append out "/share/xonotic"))
dc70ff2a 6265 #t)))
6266 (add-after 'install-binaries 'wrap-binaries
6267 (lambda* (#:key outputs inputs #:allow-other-keys)
6268 ;; Curl and libvorbis need to be wrapped so that we get
6269 ;; sound and networking.
6270 (let* ((out (assoc-ref outputs "out"))
6271 (bin (string-append out "/bin/xonotic"))
6272 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6273 (bin-glx (string-append out "/bin/xonotic-glx"))
6274 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6275 (curl (assoc-ref inputs "curl"))
6276 (vorbis (assoc-ref inputs "libvorbis")))
6277 (wrap-program bin
6278 `("LD_LIBRARY_PATH" ":" prefix
6279 (,(string-append curl "/lib:" vorbis "/lib"))))
6280 (wrap-program bin-sdl
6281 `("LD_LIBRARY_PATH" ":" prefix
6282 (,(string-append curl "/lib:" vorbis "/lib"))))
6283 (wrap-program bin-glx
6284 `("LD_LIBRARY_PATH" ":" prefix
6285 (,(string-append curl "/lib:" vorbis "/lib"))))
6286 (wrap-program bin-dedicated
6287 `("LD_LIBRARY_PATH" ":" prefix
6288 (,(string-append curl "/lib:" vorbis "/lib"))))
6289 #t))))))
6290 (inputs
6291 `(("xonotic-data" ,xonotic-data)
6292 ("alsa-lib" ,alsa-lib)
6293 ("curl" ,curl)
4bd428a7 6294 ("libjpeg" ,libjpeg-turbo)
dc70ff2a 6295 ("libmodplug" ,libmodplug)
6296 ("libvorbis" ,libvorbis)
6297 ("libogg" ,libogg)
6298 ("libxpm" ,libxpm)
6299 ("libxxf86dga" ,libxxf86dga)
6300 ("libxxf86vm" ,libxxf86vm)
6301 ("libx11" ,libx11)
6302 ("libxext" ,libxext)
6303 ("libxau" ,libxau)
6304 ("libxdmcp" ,libxdmcp)
6305 ("mesa" ,mesa)
6306 ("glu" ,glu)
6307 ("freetype" ,freetype)
6308 ("sdl2" ,sdl2)
6309 ("libpng" ,libpng)
6310 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6311 (native-inputs
6312 `(("unzip" ,unzip)
6313 ("autoconf" ,autoconf)
6314 ("automake" ,automake)
6315 ("pkg-config" ,pkg-config)
6316 ("libtool" ,libtool)
6317 ("gmp" ,gmp)))
6318 (home-page "http://xonotic.org")
6319 (synopsis "Fast-paced first-person shooter game")
6320 (description
6321 "Xonotic is a free, fast-paced first-person shooter.
6322The project is geared towards providing addictive arena shooter
6323gameplay which is all spawned and driven by the community itself.
6324Xonotic is a direct successor of the Nexuiz project with years of
6325development between them, and it aims to become the best possible
6326open-source FPS of its kind.")
6327 (license (list license:gpl2+
6328 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6329 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6330
6331(define-public frotz
6332 (package
6333 (name "frotz")
6334 (version "2.44")
6335 (source (origin
6336 (method url-fetch)
6337 (uri (list (string-append
6338 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6339 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6340 (string-append
6341 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6342 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6343 (sha256
6344 (base32
6345 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6346 (build-system gnu-build-system)
6347 (arguments
6348 `(#:tests? #f ; there are no tests
6349 #:phases
6350 (modify-phases %standard-phases
6351 (delete 'configure)
6352 (add-before 'build 'curses
6353 (lambda _
6354 (substitute* "Makefile"
6355 (("lcurses") "lncurses"))
6356 #t))
6357 (replace 'install
6358 (lambda* (#:key outputs #:allow-other-keys)
6359 (let* ((out (assoc-ref outputs "out"))
6360 (bin (string-append out "/bin"))
6361 (man (string-append out "/share/man/man6")))
6362 (install-file "frotz" bin)
6363 (mkdir-p man)
6364 (install-file "doc/frotz.6" man)
6365 #t))))))
6366 (inputs `(("libmodplug" ,libmodplug)
6367 ("libsamplerate" ,libsamplerate)
6368 ("libsndfile" ,libsndfile)
6369 ("libvorbis" ,libvorbis)
6370 ("ncurses" ,ncurses)))
6371 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6372 (description "Frotz is an interpreter for Infocom games and other Z-machine
6373games in the text adventure/interactive fiction genre. This version of Frotz
6374complies with standard 1.0 of Graham Nelson's specification. It plays all
6375Z-code games V1-V8, including V6, with sound support through libao, and uses
6376ncurses for text display.")
6377 (home-page "http://frotz.sourceforge.net")
6378 (license license:gpl2+)))
6379
6380(define-public frotz-dumb-terminal
6381 (package
6382 (name "frotz-dumb-terminal")
6383 (version "2.44")
6384 (source (origin
6385 (method url-fetch)
6386 (uri (list (string-append
6387 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6388 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6389 (string-append
6390 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6391 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6392 (sha256
6393 (base32
6394 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6395 (build-system gnu-build-system)
6396 (arguments
6397 `(#:tests? #f ; there are no tests
6398 #:phases
6399 (modify-phases %standard-phases
6400 (delete 'configure)
6401 (replace 'build
6402 (lambda _
6403 (invoke "make" "dumb")))
6404 (replace 'install
6405 (lambda* (#:key outputs #:allow-other-keys)
6406 (let* ((out (assoc-ref outputs "out"))
6407 (bin (string-append out "/bin"))
6408 (man (string-append out "/share/man/man6")))
6409 (install-file "dfrotz" bin)
6410 (mkdir-p man)
6411 (install-file "doc/dfrotz.6" man)
6412 #t))))))
6413 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6414 (description "Frotz is an interpreter for Infocom games and
6415other Z-machine games in the text adventure/interactive fiction genre.
6416dfrotz is the dumb interface version. You get no screen control; everything
6417is just printed to the terminal line by line. The terminal handles all the
6418scrolling. Maybe you'd like to experience what it's like to play Adventure on
6419a teletype. A much cooler use for compiling Frotz with the dumb interface is
6420that it can be wrapped in CGI scripting, PHP, and the like to allow people
6421to play games on webpages. It can also be made into a chat bot.")
6422 (home-page "http://frotz.sourceforge.net")
6423 (license license:gpl2+)))
6424
6425(define-public frotz-sdl
6426 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6427 (package
6428 (name "frotz-sdl")
6429 (version "2.45pre")
6430 (source (origin
6431 (method git-fetch)
6432 (uri (git-reference
6433 (url "https://gitlab.com/DavidGriffith/frotz")
6434 (commit commit)))
6435 (sha256
6436 (base32
6437 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6438 (file-name (git-file-name name version))))
6439 (build-system gnu-build-system)
6440 (arguments
6441 `(#:tests? #f ; there are no tests
6442 #:phases
6443 (modify-phases %standard-phases
6444 (delete 'configure)
6445 (add-before 'build 'patch-makefile
6446 (lambda _
6447 (substitute* "Makefile"
6448 (("lcurses") "lncurses")
6449 (("^BUILD_DATE_TIME =.*$")
6450 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6451 #t))
6452 (replace 'build
6453 (lambda _
6454 (invoke "make" "sdl")))
6455 (replace 'install
6456 (lambda* (#:key outputs #:allow-other-keys)
6457 (let* ((out (assoc-ref outputs "out"))
6458 (bin (string-append out "/bin"))
6459 (man (string-append out "/share/man/man6")))
6460 (install-file "sfrotz" bin)
6461 (mkdir-p man)
6462 (install-file "doc/sfrotz.6" man)
6463 #t))))))
6464 (native-inputs
6465 `(("pkg-config" ,pkg-config)
6466 ("which" ,which)
6467 ("perl" ,perl)))
6468 (inputs `(("sdl2" ,sdl2)
6469 ("sdl2-mixer" ,sdl2-mixer)
6470 ("libmodplug" ,libmodplug)
6471 ("libsamplerate" ,libsamplerate)
6472 ("libsndfile" ,libsndfile)
6473 ("libvorbis" ,libvorbis)
6474 ("ncurses" ,ncurses)
6475 ("freetype" ,freetype)
6476 ("libjpeg-turbo" ,libjpeg-turbo)))
6477 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6478 (description "Frotz is an interpreter for Infocom games and other Z-machine
6479games in the text adventure/interactive fiction genre. This version of Frotz
6480using SDL fully supports all these versions of the Z-Machine including the
6481graphical version 6. Graphics and sound are created through the use of the SDL
6482libraries. AIFF sound effects and music in MOD and OGG formats are supported
6483when packaged in Blorb container files or optionally from individual files.")
6484 (home-page "http://frotz.sourceforge.net")
6485 (license license:gpl2+))))
18ebaa9e
EB
6486
6487(define-public libmanette
6488 (package
6489 (name "libmanette")
737e32a4 6490 (version "0.2.3")
18ebaa9e
EB
6491 (source (origin
6492 (method url-fetch)
5b35bdaa 6493 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6494 (version-major+minor version) "/"
5b35bdaa 6495 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6496 (sha256
6497 (base32
737e32a4 6498 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6499 (build-system meson-build-system)
6500 (native-inputs
6501 `(("glib" ,glib "bin") ; for glib-compile-resources
6502 ("gobject-introspection" ,gobject-introspection)
6503 ("pkg-config" ,pkg-config)
6504 ("vala" ,vala)))
6505 (inputs
6506 `(("libevdev" ,libevdev)
6507 ("libgudev" ,libgudev)))
6508 (home-page "https://wiki.gnome.org/Apps/Games")
6509 (synopsis "Game controller library")
6510 (description "Libmanette is a small GObject library giving you simple
6511access to game controllers. It supports the de-facto standard gamepads as
6512defined by the W3C standard Gamepad specification or as implemented by the SDL
6513GameController.")
6514 (license license:lgpl2.1+)))
39c676c4
EB
6515
6516(define-public quadrapassel
6517 (package
6518 (name "quadrapassel")
8a5bfb26 6519 (version "3.32.0")
39c676c4
EB
6520 (source (origin
6521 (method url-fetch)
49598564 6522 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6523 (version-major+minor version) "/"
49598564 6524 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6525 (sha256
6526 (base32
8a5bfb26
KK
6527 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6528 (build-system meson-build-system)
6529 (arguments
6530 '(#:glib-or-gtk? #t
6531 #:phases
6532 (modify-phases %standard-phases
6533 (add-after 'unpack 'skip-gtk-update-icon-cache
6534 ;; Don't create 'icon-theme.cache'.
6535 (lambda _
6536 (substitute* "build-aux/meson_post_install.py"
6537 (("gtk-update-icon-cache") (which "true")))
6538 #t)))))
39c676c4
EB
6539 (native-inputs
6540 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6541 ("gettext" ,gnu-gettext)
6542 ("glib" ,glib "bin") ;for glib-compile-resources
6543 ("itstool" ,itstool)
6544 ("libxml2" ,libxml2) ;for xmllint
6545 ("pkg-config" ,pkg-config)
6546 ("vala" ,vala)))
6547 (inputs
6548 `(("clutter" ,clutter)
6549 ("clutter-gtk" ,clutter-gtk)
6550 ("gtk+" ,gtk+)
6551 ("libcanberra" ,libcanberra)
6552 ("libmanette" ,libmanette)
6553 ("librsvg" ,librsvg)))
6554 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6555 (synopsis "GNOME version of Tetris")
6556 (description "Quadrapassel comes from the classic falling-block game,
6557Tetris. The goal of the game is to create complete horizontal lines of
6558blocks, which will disappear. The blocks come in seven different shapes made
6559from four blocks each: one straight, two L-shaped, one square, and two
6560S-shaped. The blocks fall from the top center of the screen in a random
6561order. You rotate the blocks and move them across the screen to drop them in
6562complete lines. You score by dropping blocks fast and completing lines. As
6563your score gets higher, you level up and the blocks fall faster.")
6564 (license license:gpl2+)))
560df540
EF
6565
6566(define-public endless-sky
6567 (package
6568 (name "endless-sky")
aa641984 6569 (version "0.9.10")
560df540
EF
6570 (source
6571 (origin
6572 (method git-fetch)
6573 (uri (git-reference
6574 (url "https://github.com/endless-sky/endless-sky")
6575 (commit (string-append "v" version))))
6576 (file-name (git-file-name name version))
6577 (sha256
6578 (base32
aa641984 6579 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6580 (build-system scons-build-system)
6581 (arguments
6582 `(#:scons ,scons-python2
6583 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6584 #:tests? #f ; no tests
6585 #:phases
6586 (modify-phases %standard-phases
6587 (add-after 'unpack 'patch-resource-locations
6588 (lambda* (#:key outputs #:allow-other-keys)
6589 (substitute* "source/Files.cpp"
6590 (("/usr/local/")
6591 (string-append (assoc-ref outputs "out") "/")))
6592 #t))
6593 (add-after 'unpack 'patch-scons
6594 (lambda _
6595 (substitute* "SConstruct"
6596 ;; Keep environmental variables
6597 (("Environment\\(\\)")
6598 "Environment(ENV = os.environ)")
6599 ;; Install into %out/bin
6600 (("games\"") "bin\""))
6601 #t)))))
6602 (inputs
6603 `(("glew" ,glew)
6604 ("libjpeg" ,libjpeg-turbo)
6605 ("libmad" ,libmad)
6606 ("libpng" ,libpng)
6607 ("openal" ,openal)
6608 ("sdl2" ,sdl2)))
6609 (home-page "https://endless-sky.github.io/")
6610 (synopsis "2D space trading and combat game")
6611 (description "Endless Sky is a 2D space trading and combat game. Explore
6612other star systems. Earn money by trading, carrying passengers, or completing
6613missions. Use your earnings to buy a better ship or to upgrade the weapons and
6614engines on your current one. Blow up pirates. Take sides in a civil war. Or
6615leave human space behind and hope to find friendly aliens whose culture is more
6616civilized than your own.")
6617 (license (list license:gpl3+
6618 license:cc-by-sa3.0
6619 license:cc-by-sa4.0
6620 license:public-domain))))
1faf0a04
NG
6621
6622(define-public stepmania
6623 (package
6624 (name "stepmania")
6625 (version "5.1.0-b2")
6626 (source
6627 (origin
6628 (method git-fetch)
6629 (uri (git-reference
6630 (url "https://github.com/stepmania/stepmania.git")
6631 (commit (string-append "v" version))))
6632 (file-name (git-file-name name version))
6633 (sha256
6634 (base32
6635 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6636 (modules '((guix build utils)))
6637 (snippet
6638 '(begin
6639 ;; Remove song files, which are licensed under a non-commercial
6640 ;; clause, and a course pointing to them.
6641 (for-each delete-file-recursively
6642 '("Songs/StepMania 5/Goin' Under"
6643 "Songs/StepMania 5/MechaTribe Assault"
6644 "Songs/StepMania 5/Springtime"))
6645 (for-each delete-file '("Courses/Default/Jupiter.crs"
6646 "Courses/Default/Jupiter.png"))
6647 ;; Unbundle libpng.
6648 (substitute* "extern/CMakeLists.txt"
6649 (("include\\(CMakeProject-png.cmake\\)") ""))
6650 (delete-file-recursively "extern/libpng")
6651 #t))))
6652 (build-system cmake-build-system)
6653 (arguments
6654 `(#:tests? #f ;FIXME: couldn't find how to run tests
6655 #:build-type "Release"
6656 #:out-of-source? #f ;for the 'install-desktop' phase
6657 #:configure-flags
6658 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6659 ;; SSE instructions are available on Intel systems only.
6660 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6661 (%current-system)))
6662 '("x64_64" "i686"))
6663 '()
6664 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6665 ;; Configuration cannot find GTK2 without the two following
6666 ;; flags.
6667 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6668 (assoc-ref %build-inputs "gtk+")
6669 "/lib/gtk-2.0/include")
6670 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6671 (assoc-ref %build-inputs "glib")
6672 "/lib/glib-2.0/include"))
6673 #:phases
6674 (modify-phases %standard-phases
47746772 6675 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6676 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6677 (let ((out (assoc-ref outputs "out")))
6678 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6679 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6680 (string-append "\"" out
6681 "/share/stepmania/GtkModule.so\"")))
6682 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6683 (("Root = sDirOfExecutable")
6684 (string-append "Root = \"" out "/share/stepmania/\""))
6685 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6686 (string-append "\"" out "/share/stepmania/" dir "\"")))
6687 (substitute* "src/RageFileManager.cpp"
6688 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6689 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6690 #t))
1faf0a04
NG
6691 (add-after 'unpack 'fix-install-subdir
6692 ;; Installation would be done in "%out/stepmania-X.Y", but we
6693 ;; prefer the more common layout "%out/share/stepmania".
6694 (lambda _
6695 (substitute* "src/CMakeLists.txt"
6696 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6697 #t))
6698 (add-after 'unpack 'unbundle-libpng
6699 (lambda* (#:key inputs #:allow-other-keys)
6700 (substitute* "src/CMakeLists.txt"
6701 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6702 (string-append (assoc-ref inputs "libpng") "/include")))
6703 #t))
6704 (add-after 'install 'install-executable
6705 (lambda* (#:key outputs #:allow-other-keys)
6706 (let* ((out (assoc-ref outputs "out"))
6707 (bin (string-append out "/bin"))
6708 (exe (string-append out "/share/stepmania/stepmania")))
6709 (mkdir-p bin)
6710 (symlink exe (string-append bin "/stepmania"))
6711 #t)))
6712 (add-after 'install-executable 'install-desktop
6713 (lambda* (#:key outputs #:allow-other-keys)
6714 (let* ((out (assoc-ref outputs "out"))
6715 (share (string-append out "/share"))
6716 (applications (string-append share "/applications"))
6717 (icons (string-append share "/icons")))
6718 (install-file "stepmania.desktop" applications)
6719 (mkdir-p icons)
6720 (copy-recursively "icons" icons)
6721 #t)))
6722 ;; Move documentation in a more usual place, i.e.,
6723 ;; "%out/share/doc/stepmania/".
6724 (add-after 'install-desktop 'install-doc
6725 (lambda* (#:key outputs #:allow-other-keys)
6726 (let* ((out (assoc-ref outputs "out"))
6727 (share (string-append out "/share")))
6728 (with-directory-excursion share
6729 (mkdir-p "doc")
6730 (symlink "../stepmania/Docs" "doc/stepmania"))
6731 #t))))))
6732 (native-inputs
6733 `(("pkg-config" ,pkg-config)
6734 ("yasm" ,yasm)))
6735 (inputs
6736 `(("alsa-lib" ,alsa-lib)
6737 ;; Per upstream, StepMania is only guaranteed to work with a very
6738 ;; specific FFmpeg version, which is included in the repository as
6739 ;; a Git submodule. This particular version requirement usually
6740 ;; changes every few years.
6741 ("ffmpeg" ,ffmpeg-for-stepmania)
6742 ("glib" ,glib)
6743 ("glew" ,glew)
6744 ("gtk+" ,gtk+-2)
6745 ("jsoncpp" ,jsoncpp)
6746 ("libpng" ,libpng)
96738cb1 6747 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
6748 ("libmad" ,libmad)
6749 ("libogg" ,libogg)
6750 ("libva" ,libva)
6751 ("libvorbis" ,libvorbis)
6752 ("libxinerama" ,libxinerama)
6753 ("libxrandr" ,libxrandr)
6754 ("mesa" ,mesa)
6755 ("pcre" ,pcre)
6756 ("pulseaudio" ,pulseaudio)
6757 ("sdl" ,sdl2)
6758 ("udev" ,eudev)
6759 ("zlib" ,zlib)))
6760 (synopsis "Advanced rhythm game designed for both home and arcade use")
6761 (description "StepMania is a dance and rhythm game. It features 3D
6762graphics, keyboard and dance pad support, and an editor for creating your own
6763steps.
6764
6765This package provides the core application, but no song is shipped. You need
6766to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6767 (home-page "https://www.stepmania.com")
6768 (license license:expat)))
6769
649220ad 6770(define-public btanks
ca32afac 6771 (package
649220ad 6772 (name "btanks")
ca32afac
RW
6773 (version "0.9.8083")
6774 (source
6775 (origin
6776 (method url-fetch)
6777 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6778 "btanks-" version ".tar.bz2"))
6779 (sha256
6780 (base32
6781 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6782 (build-system scons-build-system)
6783 (arguments
6784 `(#:tests? #f ; there are none
6785 #:scons ,scons-python2
6786 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6787 #:phases
6788 (modify-phases %standard-phases
6789 (add-after 'unpack 'replace-removed-scons-syntax
6790 (lambda _
6791 (substitute* "SConstruct"
6792 (("Options") "Variables")
6793 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6794 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6795 #t))
6796 (add-after 'set-paths 'set-sdl-paths
6797 (lambda* (#:key inputs #:allow-other-keys)
6798 (setenv "CPATH"
6799 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6800 "/include/SDL:"
6801 (or (getenv "CPATH") "")))
ca32afac
RW
6802 #t))
6803 (add-after 'unpack 'fix-compilation-errors
6804 (lambda _
6805 (substitute* "mrt/base_file.h"
6806 (("#include <string>" m)
6807 (string-append m "\n#include <sys/types.h>")))
6808 (substitute* '("engine/sl08/sl08.h"
6809 "engine/sl08/sl08.py")
6810 (("signal = NULL") "signal = 0")
6811 (("object\\(NULL\\)") "object(0)")
6812 (("func\\(NULL\\)") "func(0)")
6813 ((" connect\\(signal_ref\\)")
6814 " this->connect(signal_ref)"))
6815 (substitute* "math/range_list.h"
6816 ((" lower_bound\\(value\\)")
6817 " this->lower_bound(value)")
6818 ((" erase\\(i\\)")
6819 " this->erase(i)"))
6820 (substitute* "clunk/source.cpp"
6821 (("using namespace clunk" m)
6822 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6823 #t))
6824 (add-after 'unpack 'find-lua
6825 (lambda _
6826 (substitute* "engine/SConscript"
6827 (("lua5.1") "lua-5.1")
6828 (("bt_libs.append\\(lua\\)")
6829 "bt_libs.append(\"lua\")"))
6830 #t)))))
6831 (inputs
6832 `(("expat" ,expat)
6833 ("glu" ,glu)
6834 ("libsmpeg" ,libsmpeg-with-sdl1)
6835 ("libvorbis" ,libvorbis)
6836 ("lua51" ,lua-5.1)
6837 ("sdl" ,(sdl-union (list sdl
6838 sdl-mixer
6839 sdl-image
6840 sdl-ttf)))
6841 ("zlib" ,zlib)))
6842 (native-inputs
6843 `(("pkg-config" ,pkg-config)
6844 ("zip" ,zip)))
6845 (home-page "http://btanks.sourceforge.net")
6846 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6847 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6848game, where you can choose one of three vehicles and eliminate your enemy
6849using the whole arsenal of weapons. It has original cartoon-like graphics and
6850cool music, it’s fun and dynamic, it has several network modes for deathmatch
6851and cooperative.")
ca32afac
RW
6852 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6853 ;; released under GPLv2 or later. It comes with extra exceptions for the
6854 ;; developers.
6855 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6856
649220ad
NG
6857(define-public battle-tanks
6858 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6859
c06709b8
RW
6860(define-public slingshot
6861 (package
6862 (name "slingshot")
6863 (version "0.9")
6864 (source
6865 (origin
6866 (method git-fetch)
6867 (uri (git-reference
6868 (url "https://github.com/ryanakca/slingshot.git")
6869 (commit version)))
6870 (file-name (git-file-name name version))
6871 (sha256
6872 (base32
6873 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6874 (build-system python-build-system)
6875 (arguments
6876 `(#:python ,python-2))
6877 (inputs
6878 `(("python-pygame" ,python2-pygame)))
6879 (home-page "https://github.com/ryanakca/slingshot")
6880 (synopsis "Simple 2D shooting strategy game set in space")
6881 (description "Slingshot is a two-dimensional strategy game where two
6882players attempt to shoot one another through a section of space populated by
6883planets. The main feature of the game is that the shots, once fired, are
6884affected by the gravity of the planets.")
6885 (license license:gpl2+)))
8ada024b
RW
6886
6887(define-public 4dtris
6888 (package
6889 (name "4dtris")
6890 (version "0.4.3")
6891 (source
6892 (origin
6893 (method url-fetch)
6894 (uri (string-append "https://launchpad.net/4dtris/"
6895 (version-major+minor version)
6896 "/" version "/+download/4dtris_"
6897 version ".orig.tar.gz"))
6898 (sha256
6899 (base32
6900 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6901 (build-system gnu-build-system)
6902 (arguments
6903 `(#:phases
6904 (modify-phases %standard-phases
6905 (add-after 'unpack 'fix-install-directories
6906 (lambda* (#:key outputs #:allow-other-keys)
6907 (let ((out (assoc-ref outputs "out")))
6908 (substitute* "Makefile.in"
6909 (("bindir = /usr/games")
6910 (string-append "bindir = " out "/bin"))
6911 (("/usr/share/applications")
6912 (string-append out "/share/applications"))
6913 (("/usr/share/games/4dtris")
6914 (string-append out "/share/4dtris"))))
6915 #t))
6916 (add-after 'set-paths 'set-sdl-paths
6917 (lambda* (#:key inputs #:allow-other-keys)
6918 (setenv "CPATH"
6919 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6920 "/include/SDL:"
6921 (or (getenv "CPATH") "")))
8ada024b
RW
6922 #t)))))
6923 (inputs
6924 `(("fontconfig" ,fontconfig)
6925 ("freeglut" ,freeglut)
6926 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6927 (home-page "https://launchpad.net/4dtris/")
6928 (synopsis "4D Tetris")
6929 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6930game field is extended to 4D space, which has to filled up by the gamer with
69314D hyper cubes.")
6932 (license license:gpl3)))
6933
8044e584
PN
6934(define-public arx-libertatis
6935 (package
6936 (name "arx-libertatis")
6937 (version "1.1.2")
6938 (source
6939 (origin
6940 (method url-fetch)
6941 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6942 version ".tar.xz"))
6943 (sha256
6944 (base32
6945 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6946 (build-system cmake-build-system)
6947 (outputs '("out" "installer"))
6948 (arguments
6949 '(#:tests? #f ; No tests.
6950 #:phases
6951 (modify-phases %standard-phases
6952 (add-after 'unpack 'fix-install-helper-paths
6953 (lambda* (#:key inputs #:allow-other-keys)
6954 (let ((p7zip (assoc-ref inputs "p7zip"))
6955 (innoextract (assoc-ref inputs "innoextract"))
6956 (wget (assoc-ref inputs "wget"))
6957 (zenity (assoc-ref inputs "zenity")))
6958 (substitute* "scripts/arx-install-data"
6959 (("have innoextract")
6960 (string-append "have " innoextract "/bin/innoextract"))
6961 (("then innoextract")
6962 (string-append "then " innoextract "/bin/innoextract"))
6963 (("else innoextract")
6964 (string-append "else " innoextract "/bin/innoextract"))
6965 (("for _extract_zip_sz in 7za 7z")
6966 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6967 (("else if have 7z")
6968 (string-append "else if have " p7zip "/bin/7za"))
6969 (("7z x -tiso")
6970 (string-append p7zip "/bin/7z x -tiso"))
6971 (("if have wget")
6972 (string-append "if have " wget "/bin/wget"))
6973 (("wget -O")
6974 (string-append wget "/bin/wget -O"))
6975 (("for backend in \\$preferred zenity")
6976 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6977 (("zenity +--title")
6978 (string-append zenity "/bin/zenity --title"))
6979 (("^zenity\\)")
6980 (string-append zenity "/bin/zenity)"))))
6981 #t))
6982 (add-after 'install 'move-installer
6983 (lambda* (#:key outputs #:allow-other-keys)
6984 (let ((out (assoc-ref outputs "out"))
6985 (installer (assoc-ref outputs "installer")))
6986 (mkdir-p (string-append installer "/bin"))
6987 (rename-file (string-append out "/bin/arx-install-data")
6988 (string-append installer "/bin/arx-install-data"))))))))
6989 (inputs
6990 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
6991 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
6992 ("glew" ,glew)
6993 ("openal" ,openal)
6994 ("zlib" ,zlib)
6995 ("boost" ,boost)
6996 ("glm" ,glm)
6997 ("freetype" ,freetype)
6998 ;; The following are only needed by the arx-install-data script.
6999 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7000 ("zenity" ,zenity) ; GUI for install-helper.
7001 ("wget" ,wget) ; Used by the install-helper to download the patch.
7002 ;; The install-helper needs it to extract the patch.
7003 ("innoextract" ,innoextract)))
7004 (home-page "https://arx-libertatis.org/")
7005 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
7006 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7007first-person role-playing game / dungeon crawler developed by Arkane Studios.
7008This port however does not include the game data, so you need to obtain a copy
7009of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7010features crafting, melee and ranged combat, as well as a unique casting system
7011where the player draws runes in real time to effect the desired spell.")
8044e584 7012 (license license:gpl3+)))
47903653 7013
649220ad 7014(define-public edgar
47903653 7015 (package
649220ad 7016 (name "edgar")
a50d6099 7017 (version "1.32")
47903653 7018 (source
7019 (origin
7020 (method url-fetch)
7021 (uri
7022 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7023 version "/edgar-" version "-1.tar.gz"))
7024 (sha256
a50d6099 7025 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 7026 (build-system gnu-build-system)
067826ab 7027 (arguments '(#:tests? #f ; there are no tests
47903653 7028 #:make-flags
7029 (list "CC=gcc"
7030 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7031 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7032 #:phases
7033 (modify-phases %standard-phases
7034 (delete 'configure)
7035 (add-before 'build 'fix-env
7036 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
7037 (setenv "CPATH"
7038 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
7039 "/include/SDL2:"
7040 (or (getenv "CPATH") "")))
47903653 7041 #t)))))
067826ab
TGR
7042 (inputs
7043 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7044 ("zlib" ,zlib)))
47903653 7045 (native-inputs
7046 `(("pkg-config" ,pkg-config)
7047 ("autoconf" ,autoconf)
7048 ("automake" ,automake)
7049 ("gnu-gettext" ,gnu-gettext)
7050 ("libtool" ,libtool)
7051 ("which" ,which)))
7052 (synopsis "2d action platformer game")
7053 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7054When Edgar's father fails to return home after venturing out one dark and stormy night,
7055Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7056a fortress beyond the forbidden swamp.")
7057 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7058 (license license:gpl2+)))
f95e33a7 7059
649220ad
NG
7060(define-public the-legend-of-edgar
7061 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
7062
7063(define-public openclonk
7064 (package
7065 (name "openclonk")
7066 (version "8.1")
7067 (source (origin
7068 (method url-fetch)
7069 (uri (string-append
7070 "https://www.openclonk.org/builds/release/" version "/"
7071 "openclonk-" version "-src.tar.bz2"))
7072 (sha256
7073 (base32
7074 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7075 (build-system cmake-build-system)
7076 (arguments
7077 `(#:configure-flags '("-DAudio_TK=OpenAL")
7078 #:test-target "tests"
7079 #:phases
7080 (modify-phases %standard-phases
7081 (add-after 'unpack 'prepare-gmock
7082 (lambda* (#:key inputs #:allow-other-keys)
7083 (mkdir "gmock")
7084 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7085 (substitute* "tests/CMakeLists.txt"
7086 (("/usr/src/gmock")
7087 (string-append (getcwd) "/gmock/googlemock"))
7088 (("/usr/src/gtest")
7089 (string-append (getcwd) "/gmock/googletest"))
7090 (("PATH_SUFFIXES \"src\" \"gtest\"")
7091 "PATH_SUFFIXES \"src\""))
7092 #t))
ee9eafc1
MB
7093 (add-after 'unpack 'adjust-backward-cpp-includes
7094 (lambda _
7095 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7096 ;; that includes external libraries such as libdl from glibc.
7097 ;; By default, CMake interface includes are treated as "system
7098 ;; headers", and GCC behaves poorly when glibc is passed as a
7099 ;; system header (causing #include_next failures).
7100
7101 ;; Here we prevent targets that consume the Backward::Backward
7102 ;; interface from treating it as "system includes".
7103 (substitute* "CMakeLists.txt"
7104 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7105 (string-append "set_property(TARGET " target " PROPERTY "
7106 "NO_SYSTEM_FROM_IMPORTED true)\n"
7107 all)))
7108 #t))
4e43e317
NG
7109 (add-after 'unpack 'add-libiberty
7110 ;; Build fails upon linking executables without this.
7111 (lambda _
7112 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7113 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7114 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7115 #t))
7116 (add-after 'add-libiberty 'lax-freealut-requirement
7117 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7118 ;; it as 1.0.1. Force minimal version.
7119 (lambda _
7120 (substitute* "cmake/FindAudio.cmake"
7121 (("freealut>=1.1.0") "freealut>=1.0.1"))
7122 #t))
7123 (add-after 'lax-freealut-requirement 'fix-directories
7124 ;; Prefer "$out/share/openclonk" over
7125 ;; "$out/share/games/openclonk". Also install "openclonk"
7126 ;; binary in "bin/", not "games/".
7127 (lambda _
7128 (substitute* "CMakeLists.txt"
7129 (("share/games/openclonk") "share/openclonk")
7130 (("TARGETS openclonk DESTINATION games")
7131 "TARGETS openclonk DESTINATION bin"))
7132 #t)))))
7133 (native-inputs
7134 `(("googlemock" ,(package-source googletest))
7135 ("googletest" ,googletest)
7136 ("pkg-config" ,pkg-config)))
7137 (inputs
7138 `(("freealut" ,freealut)
7139 ("freetype" ,freetype)
7140 ("glew" ,glew)
7141 ("libiberty" ,libiberty)
7142 ("libjpeg" ,libjpeg-turbo)
7143 ("libogg" ,libogg)
7144 ("libpng" ,libpng)
7145 ("libvorbis" ,libvorbis)
7146 ("libxrandr" ,libxrandr)
7147 ("mesa" ,mesa)
7148 ("miniupnpc" ,miniupnpc)
7149 ("openal" ,openal)
7150 ("qtbase" ,qtbase)
7151 ("readline" ,readline)
7152 ("sdl" ,sdl2)
7153 ("tinyxml" ,tinyxml)
7154 ("zlib" ,zlib)))
7155 (home-page "https://www.openclonk.org/")
7156 (synopsis
7157 "Multiplayer action game where you control small and nimble humanoids")
7158 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7159often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 7160antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
7161robust humanoid beings. The game encourages free play but the normal goal is
7162to either exploit valuable resources from the earth by building a mine or
7163fight each other on an arena-like map.")
7164 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7165 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
7166
7167(define-public flare-engine
7168 (package
7169 (name "flare-engine")
f9622ec7 7170 (version "1.11")
ad4f6442
NG
7171 (source (origin
7172 (method git-fetch)
7173 (uri (git-reference
7174 (url "https://github.com/flareteam/flare-engine.git")
7175 (commit (string-append "v" version))))
7176 (file-name (git-file-name name version))
7177 (sha256
7178 (base32
f9622ec7 7179 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
7180 (build-system cmake-build-system)
7181 (arguments
7182 `(#:tests? #f ;no test
7183 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7184 (inputs
7185 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7186 ("python" ,python-wrapper)
7187 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7188 (home-page "http://www.flarerpg.org/")
7189 (synopsis "Action Roleplaying Engine")
7190 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7191game engine built to handle a very specific kind of game: single-player 2D
7192action RPGs.")
7193 (license license:gpl3+)))
7194
7195(define-public flare-game
7196 (package
7197 (name "flare-game")
ffbaefc7 7198 (version "1.11")
ad4f6442
NG
7199 (source (origin
7200 (method git-fetch)
7201 (uri (git-reference
7202 (url "https://github.com/flareteam/flare-game.git")
7203 (commit (string-append "v" version))))
7204 (file-name (git-file-name name version))
7205 (sha256
7206 (base32
ffbaefc7 7207 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7208 (build-system cmake-build-system)
7209 (arguments
7210 `(#:tests? #f ;no test
7211 #:configure-flags '("-DDATADIR=share/flare")
7212 #:phases
7213 (modify-phases %standard-phases
7214 ;; Flare expects the mods to be located in the same folder.
7215 ;; Yet, "default" mod is in the engine, whereas the others
7216 ;; are in the current package. Merge everything here with
7217 ;; a symlink.
7218 (add-after 'install 'add-default-mod
7219 (lambda* (#:key inputs outputs #:allow-other-keys)
7220 (let* ((out (assoc-ref outputs "out"))
7221 (mods (string-append out "/share/flare/mods")))
7222 (with-directory-excursion mods
7223 (symlink (string-append (assoc-ref inputs "flare-engine")
7224 "/share/flare/mods/default")
7225 "default")))
7226 #t))
7227 (add-after 'install 'install-executable
7228 ;; The package only provides assets for the game, the
7229 ;; executable coming from "flare-engine". Since more than
7230 ;; one game may use the engine, we create a new executable,
7231 ;; "flare-game", which launches the engine with appropriate
7232 ;; parameters.
7233 (lambda* (#:key inputs outputs #:allow-other-keys)
7234 (let* ((out (assoc-ref outputs "out"))
7235 (bash (string-append (assoc-ref inputs "bash")
7236 "/bin/bash"))
7237 (flare (string-append (assoc-ref inputs "flare-engine")
7238 "/bin/flare"))
7239 (script (string-append out "/bin/flare-game")))
7240 (mkdir-p (dirname script))
7241 (call-with-output-file script
7242 (lambda (port)
7243 (format port
7244 "#!~a
7245exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7246 bash
7247 flare
7248 out)))
7249 (chmod script #o755))
7250 #t)))))
7251 (inputs
7252 `(("flare-engine" ,flare-engine)))
7253 (home-page "http://www.flarerpg.org/")
7254 (synopsis "Fantasy action RPG using the FLARE engine")
7255 (description "Flare is a single-player 2D action RPG with
7256fast-paced action and a dark fantasy style.")
7257 (license license:cc-by-sa3.0)))
660e0050
NG
7258
7259(define-public meritous
7260 (package
7261 (name "meritous")
7262 (version "1.5")
7263 (source (origin
7264 (method git-fetch)
7265 (uri (git-reference
7266 (url "https://gitlab.com/meritous/meritous.git")
7267 (commit (string-append "v" version))))
7268 (file-name (git-file-name name version))
7269 (sha256
7270 (base32
7271 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7272 (build-system gnu-build-system)
7273 (arguments
7274 `(#:tests? #f ;no test
7275 #:make-flags
7276 (list "CC=gcc"
7277 (string-append "prefix=" (assoc-ref %outputs "out")))
7278 #:phases
7279 (modify-phases %standard-phases
7280 (delete 'configure)
7281 (add-after 'unpack 'fix-sdl-path
7282 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7283 ;; directory, not SDL-union provided as an input to the package.
7284 ;; We force the latter with "--prefix=" option.
7285 (lambda* (#:key inputs #:allow-other-keys)
7286 (substitute* "Makefile"
7287 (("sdl-config" command)
7288 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7289 #t))
7290 (add-after 'unpack 'fix-crash
7291 ;; XXX: Songs are not present in the repository, due to licensing
7292 ;; issues. Yet, the game tries to load them, and, since it cannot
7293 ;; find them, crashes. Users cannot add them back, the store being
7294 ;; read-only, so we turn off background music altogether.
7295 (lambda _
7296 (substitute* "src/audio.c"
7297 (("PlayBackgroundMusic\\(new_track\\);" all)
7298 (string-append "// " all)))
7299 #t)))))
7300 (native-inputs
7301 `(("intltool" ,intltool)))
7302 (inputs
7303 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7304 ("zlib" ,zlib)))
7305 (home-page "https://gitlab.com/meritous/meritous")
7306 (synopsis "Action-adventure dungeon crawl game")
7307 (description "Far below the surface of the planet is a place of limitless
7308power. Those that seek to control such a utopia will soon bring an end to
7309themselves. Seeking an end to the troubles that plague him, PSI user Merit
7310journeys into the hallowed Orcus Dome in search of answers.
7311
7312Meritous is a action-adventure game with simple controls but a challenge to
7313find a balance of power versus recovery time during real-time battles. Set in
7314a procedurally generated world, the player can explore thousands of rooms in
7315search of powerful artifacts, tools to help them, and to eventually free the
7316Orcus Dome from evil.")
7317 (license license:gpl3+)))
472af999
RW
7318
7319(define-public marble-marcher
7320 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7321 (revision "1"))
7322 (package
7323 (name "marble-marcher")
7324 (version (git-version "0" revision commit))
7325 (source (origin
7326 (method git-fetch)
7327 (uri (git-reference
7328 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7329 (commit commit)))
7330 (file-name (git-file-name name version))
7331 (sha256
7332 (base32
7333 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7334 (build-system cmake-build-system)
7335 (arguments
7336 `(#:tests? #f ; there are none
7337 #:phases
7338 (modify-phases %standard-phases
7339 (add-after 'unpack 'embed-asset-directory
7340 (lambda* (#:key outputs #:allow-other-keys)
7341 (let ((assets (string-append (assoc-ref outputs "out")
7342 "/share/marble-marcher/assets/")))
7343 ;; Some of the files we're patching are
7344 ;; ISO-8859-1-encoded, so choose it as the default
7345 ;; encoding so the byte encoding is preserved.
7346 (with-fluids ((%default-port-encoding #f))
7347 (substitute* "src/Resource.rc"
7348 (("../assets/icon.ico")
7349 (string-append assets "icon.ico")))
7350 (substitute* "src/Res.h"
7351 (("assets/") assets))))
7352 #t))
7353 (replace 'install
7354 (lambda* (#:key outputs #:allow-other-keys)
7355 (let* ((out (assoc-ref outputs "out"))
7356 (assets (string-append out "/share/marble-marcher/assets"))
7357 (bin (string-append out "/bin/")))
7358 (mkdir-p bin)
7359 (mkdir-p assets)
7360 (copy-recursively "../source/assets" assets)
7361 (install-file "MarbleMarcher" bin))
7362 #t)))))
7363 (inputs
7364 `(("eigen" ,eigen)
7365 ("mesa" ,mesa)
7366 ("sfml" ,sfml)))
7367 (native-inputs
7368 `(("pkg-config" ,pkg-config)))
7369 (home-page "https://codeparade.itch.io/marblemarcher")
7370 (synopsis "Guide a marble across fractal landscapes")
7371 (description "Marble Marcher is a video game that uses a fractal physics
7372engine and fully procedural rendering to produce beautiful and unique
7373gameplay. The game is played on the surface of evolving fractals. The goal
7374of the game is to get your marble to the flag as quickly as possible. But be
7375careful not to fall off the level or get crushed by the fractal! There are 24
7376levels to unlock.")
7377 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7378 (license (list license:gpl2+
7379 license:silofl1.1
7380 license:cc-by-sa3.0)))))
20185e4f 7381
a84510f9 7382;; This must be updated together with flightgear.
20185e4f
RW
7383(define simgear
7384 (package
7385 (name "simgear")
7386 (version "2018.3.2")
7387 (source (origin
7388 (method url-fetch)
7389 (uri (string-append "mirror://sourceforge/flightgear/release-"
7390 (version-major+minor version) "/"
7391 "simgear-" version ".tar.bz2"))
7392 (sha256
7393 (base32
7394 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7395 (build-system cmake-build-system)
7396 (arguments
7397 `(#:phases
7398 (modify-phases %standard-phases
7399 (replace 'check
7400 (lambda _
7401 ;; Skip tests that require internet access.
7402 (invoke "ctest" "-E" "(http|dns)"))))))
7403 (inputs
7404 `(("boost" ,boost-for-mysql) ; fails with 1.69
7405 ("curl" ,curl)
7406 ("expat" ,expat)
7407 ("mesa" ,mesa)
7408 ("openal" ,openal)
7409 ("openscenegraph" ,openscenegraph-3.4)
7410 ("zlib" ,zlib)))
7411 (home-page "https://home.flightgear.org/")
7412 (synopsis "Libraries for 3D simulations and games")
7413 (description "SimGear is a set of libraries designed to be used as
7414building blocks for quickly assembling 3D simulations, games, and
7415visualization applications. SimGear is developed by the FlightGear project
7416and also provides the base for the FlightGear Flight Simulator.")
7417 (license license:lgpl2.0+)))
a84510f9
RW
7418
7419(define-public flightgear
7420 (package
7421 (name "flightgear")
7422 (version (package-version simgear))
7423 (source (origin
7424 (method url-fetch)
7425 (uri (string-append "mirror://sourceforge/flightgear/release-"
7426 (version-major+minor version) "/"
7427 "flightgear-" version ".tar.bz2"))
7428 (sha256
7429 (base32
7430 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7431 (modules '((guix build utils)))
7432 (snippet
7433 '(begin
7434 ;; There are some bundled libraries.
7435 (for-each delete-file-recursively
7436 '("3rdparty/sqlite3/"))
7437 #t))))
7438 (build-system cmake-build-system)
7439 (arguments
7440 `(#:configure-flags
7441 (list "-DSYSTEM_SQLITE=ON"
7442 (string-append "-DFG_DATA_DIR="
7443 (assoc-ref %outputs "out")
7444 "/share/flightgear"))
7445 ;; TODO: test cannot be run because the "run_test_suite" executable
7446 ;; does not seem to be built.
7447 #:tests? #f
7448 #:phases
7449 (modify-phases %standard-phases
7450 (add-after 'install 'wrap-executable
7451 (lambda* (#:key inputs outputs #:allow-other-keys)
7452 (let ((out (assoc-ref outputs "out")))
7453 (wrap-program (string-append out "/bin/fgfs")
7454 `("QT_PLUGIN_PATH" ":" prefix
7455 ,(map (lambda (label)
7456 (string-append (assoc-ref inputs label)
7457 "/lib/qt5/plugins"))
7458 '("qtbase" "qtdeclarative" "qtsvg")))
7459 `("QML2_IMPORT_PATH" ":" prefix
7460 ,(map (lambda (label)
7461 (string-append (assoc-ref inputs label)
7462 "/lib/qt5/qml"))
7463 '("qtdeclarative" "qtsvg"))))
7464 #t)))
7465 (add-after 'install 'install-data
7466 (lambda* (#:key inputs outputs #:allow-other-keys)
7467 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7468 (mkdir-p share)
7469 (with-directory-excursion share
7470 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7471 "--strip-components=1")))
7472 #t)))))
7473 (inputs
7474 `(("boost" ,boost-for-mysql) ; same as simgear
7475 ("dbus" ,dbus)
7476 ("eudev" ,eudev)
7477 ("freeglut" ,freeglut)
7478 ("freetype" ,freetype)
7479 ("glew" ,glew)
7480 ("libpng" ,libpng)
7481 ("openal" ,openal)
7482 ("openscenegraph" ,openscenegraph-3.4)
7483 ("plib" ,plib)
7484 ("qtbase" ,qtbase)
7485 ("qtdeclarative" ,qtdeclarative)
7486 ("qtsvg" ,qtsvg)
7487 ("simgear" ,simgear)
7488 ("speexdsp" ,speexdsp)
7489 ("sqlite" ,sqlite)
7490 ("zlib" ,zlib)))
7491 (native-inputs
7492 `(("cppunit" ,cppunit)
7493 ("pkg-config" ,pkg-config)
7494 ("qttools" ,qttools)
7495 ("flightgear-data"
7496 ,(origin
7497 (method url-fetch)
7498 (uri (string-append "mirror://sourceforge/flightgear/release-"
7499 (version-major+minor version) "/"
7500 "FlightGear-" version "-data.tar.bz2"))
7501 (sha256
7502 (base32
7503 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7504 (home-page "https://home.flightgear.org/")
7505 (synopsis "Flight simulator")
7506 (description "The goal of the FlightGear project is to create a
7507sophisticated flight simulator framework for use in research or academic
7508environments, pilot training, as an industry engineering tool, for DIY-ers to
7509pursue their favorite interesting flight simulation idea, and last but
7510certainly not least as a fun, realistic, and challenging desktop flight
7511simulator.")
7512 (license license:gpl2+)))
e8a0696d
NG
7513
7514(define-public jumpnbump
7515 (package
7516 (name "jumpnbump")
60d2aaa5 7517 (version "1.61")
e8a0696d
NG
7518 (source (origin
7519 (method git-fetch)
7520 (uri (git-reference
7521 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7522 (commit version)))
7523 (file-name (git-file-name name version))
7524 (sha256
7525 (base32
60d2aaa5 7526 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7527 (build-system gnu-build-system)
7528 (arguments
7529 `(#:make-flags
7530 (list "CC=gcc"
7531 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7532 #:tests? #f ;no test
7533 #:phases
7534 (modify-phases %standard-phases
7535 (delete 'configure) ;no configure script
7536 (add-after 'unpack 'fix-sdl-path
7537 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7538 ;; directory, not SDL-union provided as an input to the package.
7539 ;; We force the latter with "--prefix=" option.
7540 (lambda* (#:key inputs #:allow-other-keys)
7541 (substitute* "Makefile"
7542 (("sdl2-config" command)
7543 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7544 #t)))))
7545 (inputs
7546 `(("bzip2" ,bzip2)
7547 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7548 ("zlib" ,zlib)))
7549 (native-inputs
7550 `(("gettext" ,gettext-minimal))) ;for msgfmt
7551 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7552 (synopsis "Multiplayer platform game with bunnies")
7553 (description "You, as a bunny, have to jump on your opponents to make them
7554explode. It is a true multiplayer game; you cannot play this alone. You can
7555play with up to four players simultaneously. It has network support.")
7556 (license license:gpl2+)))
a3d4a631
NG
7557
7558(define-public hedgewars
7559 (package
7560 (name "hedgewars")
ea042113 7561 (version "1.0.0")
a3d4a631
NG
7562 (source (origin
7563 (method url-fetch)
7564 (uri (string-append "https://www.hedgewars.org/download/releases/"
7565 "hedgewars-src-" version ".tar.bz2"))
7566 (sha256
7567 (base32
ea042113 7568 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7569 (build-system cmake-build-system)
7570 (arguments
7571 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7572 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7573 ;; a Pascal to C translator and Clang instead.
7574 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7575 #:phases
7576 (modify-phases %standard-phases
a3d4a631 7577 (replace 'check
ea042113 7578 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7579 (inputs
7580 `(("ffmpeg" ,ffmpeg)
7581 ("freeglut" ,freeglut)
7582 ("ghc-entropy" ,ghc-entropy)
7583 ("ghc-hslogger" ,ghc-hslogger)
7584 ("ghc-network" ,ghc-network)
7585 ("ghc-random" ,ghc-random)
7586 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7587 ("ghc-sandi" ,ghc-sandi)
7588 ("ghc-sha" ,ghc-sha)
7589 ("ghc-utf8-string" ,ghc-utf8-string)
7590 ("ghc-vector" ,ghc-vector)
7591 ("ghc-zlib" ,ghc-zlib)
7592 ("glew" ,glew)
7593 ("libpng" ,libpng)
7594 ("lua" ,lua-5.1)
7595 ("physfs" ,physfs)
7596 ("qtbase" ,qtbase)
7597 ("sdl" ,(sdl-union
7598 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7599 (native-inputs
7600 `(("clang" ,clang)
7601 ("ghc" ,ghc)
7602 ("pkg-config" ,pkg-config)
7603 ("qttools" ,qttools)))
7604 (home-page "https://hedgewars.org/")
7605 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7606 (description
7607 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7608featuring the antics of pink hedgehogs with attitude as they battle from the
7609depths of hell to the depths of space.
7610
7611As commander, it's your job to assemble your crack team of hedgehog soldiers
7612and bring the war to your enemy.")
7613 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7614 ;; scripts are distributed under various terms.
7615 (license (list license:gpl2
7616 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7617 license:expat license:fdl1.3+ license:public-domain
7618 license:zlib))))
1bba3e8c
JL
7619
7620(define-public harmonist
7621 (package
7622 (name "harmonist")
9f5cb517 7623 (version "0.3.0")
1bba3e8c
JL
7624 (source (origin
7625 (method git-fetch)
7626 (uri (git-reference
7627 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7628 (commit (string-append "v" version))))
7629 (file-name (git-file-name name version))
7630 (sha256
7631 (base32
9f5cb517 7632 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
7633 (build-system go-build-system)
7634 (arguments
7635 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7636 (inputs
7637 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7638 (home-page "https://harmonist.tuxfamily.org/")
7639 (synopsis "Stealth coffee-break roguelike game")
7640 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7641coffee-break roguelike game. The game has a heavy focus on tactical
7642positioning, light and noise mechanisms, making use of various terrain types
7643and cones of view for monsters. Aiming for a replayable streamlined experience,
7644the game avoids complex inventory management and character building, relying
7645on items and player adaptability for character progression.")
7646 (license license:isc)))
e93352d6 7647
453365bc
JL
7648(define-public harmonist-tk
7649 (package
7650 (inherit harmonist)
7651 (name "harmonist-tk")
7652 (arguments
7653 (append
7654 (package-arguments harmonist)
7655 `(#:phases
7656 (modify-phases %standard-phases
7657 (replace 'build
7658 (lambda _
7659 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7660 "git.tuxfamily.org/harmonist/harmonist")))
7661 (replace 'check
7662 (lambda _
7663 (invoke "go" "test" "--tags" "tk"
7664 "git.tuxfamily.org/harmonist/harmonist")))))))
7665 (inputs
7666 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7667
e93352d6
NG
7668(define-public drascula
7669 (package
7670 (name "drascula")
7671 (version "1.0")
7672 (source (origin
7673 (method url-fetch)
7674 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7675 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7676 "drascula-" version ".zip"))
7677 (sha256
7678 (base32
7679 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7680 (build-system trivial-build-system)
7681 (arguments
7682 `(#:modules ((guix build utils))
7683 #:builder
7684 (begin
7685 (use-modules (guix build utils)
7686 (ice-9 match))
7687 (let* ((out (assoc-ref %outputs "out"))
7688 (share (string-append out "/share/drascula"))
7689 (scummvm (assoc-ref %build-inputs "scummvm")))
7690 ;; Install data.
7691 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7692 "/bin/unzip"))
7693 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7694 (for-each
7695 (lambda (input)
7696 (invoke unzip
7697 "-j"
7698 (assoc-ref %build-inputs input)
7699 "-x" "__MACOSX")
7700 ;; Every input provides "readme.txt", and we want to
7701 ;; preserve them all. Therefore we rename them first.
7702 (match input
7703 ("drascula-int"
7704 (rename-file "readme.txt" "readme-international.txt"))
7705 ("drascula-audio"
7706 (rename-file "readme.txt" "readme-audio.txt"))
7707 (_ #f))
7708 ;; Install documentation.
7709 (for-each (lambda (f) (install-file f doc))
7710 (find-files "." "\\.(txt|doc)$"))
7711 ;; Install data.
7712 (for-each (lambda (f) (install-file f share))
7713 (find-files "." "\\.(ogg|00[0-9])$")))
7714 '("drascula-audio" "drascula-int" "source")))
7715 ;; Create standalone executable.
7716 (let* ((bin (string-append out "/bin"))
7717 (executable (string-append bin "/drascula"))
7718 (bash (string-append (assoc-ref %build-inputs "bash")
7719 "/bin/bash")))
7720 (mkdir-p bin)
7721 (with-output-to-file executable
7722 (lambda ()
7723 (format #t "#!~a~%" bash)
7724 (format #t
7725 "exec ~a/bin/scummvm --path=~a drascula~%"
7726 scummvm share)))
7727 (chmod executable #o755))
7728 ;; Create desktop file. There is no dedicated icon for the
7729 ;; game, so we borrow SCUMMVM's.
7730 (let ((apps (string-append out "/share/applications")))
7731 (mkdir-p apps)
47f4df15
PN
7732 (make-desktop-entry-file
7733 (string-append apps "/drascula.desktop")
7734 #:name "Drascula: The Vampire Strikes Back"
7735 #:generic-name "Drascula"
7736 #:exec (string-append out "/bin/drascula")
7737 #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg")
7738 #:categories '("AdventureGame" "Game" "RolePlaying")
7739 #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy")
7740 #:comment '((#f "Classic 2D point and click adventure game")
7741 ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier")
7742 ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D")
7743 ("it" "Gioco classico di avventura punta e clicca 2D"))))
e93352d6
NG
7744 #t))))
7745 (native-inputs
7746 `(("bash" ,bash)
7747 ("unzip" ,unzip)))
7748 (inputs
7749 `(("scummvm" ,scummvm)
7750 ("drascula-int"
7751 ,(let ((version "1.1"))
7752 (origin
7753 (method url-fetch)
7754 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7755 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7756 "drascula-int-" version ".zip"))
7757 (sha256
7758 (base32
7759 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7760 ("drascula-audio"
7761 ,(let ((version "2.0"))
7762 (origin
7763 (method url-fetch)
7764 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7765 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7766 "drascula-audio-" version ".zip"))
7767 (sha256
7768 (base32
7769 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7770 (home-page "https://www.scummvm.org")
7771 (synopsis "Classic 2D point and click adventure game")
7772 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7773point and click adventure game.
7774
7775In Drascula you play the role of John Hacker, a British estate agent, that
7776gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7777Count Drascula and embark on a fun yet dangerous quest to rescue her.
7778Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7779the World and demonstrating that he is even more evil than his brother Vlad.")
7780 ;; Drascula uses a BSD-like license.
7781 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 7782
e7db97db
NG
7783(define (make-lure-package name language hash)
7784 (package
7785 (name name)
7786 (version "1.1")
7787 (source
7788 (origin
7789 (method url-fetch)
7790 (uri (string-append
7791 "mirror://sourceforge/scummvm/extras/"
7792 "Lure%20of%20the%20Temptress/"
7793 name "-" version ".zip"))
7794 (sha256
7795 (base32 hash))))
7796 (build-system trivial-build-system)
7797 (arguments
7798 `(#:modules ((guix build utils))
7799 #:builder
7800 (begin
7801 (use-modules (guix build utils))
7802 (let* ((out (assoc-ref %outputs "out"))
7803 (share (string-append out "/share"))
eca528cc 7804 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
7805 (apps (string-append share "/applications"))
7806 (bin (string-append out "/bin"))
7807 (executable (string-append bin "/" ,name))
7808 (scummvm (assoc-ref %build-inputs "scummvm")))
7809 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7810 "/bin/unzip")))
7811 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 7812 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
7813 (for-each (lambda (f) (install-file f doc))
7814 (find-files "." "\\.(txt|PDF|pdf)$")))
7815 (for-each (lambda (f) (install-file f data))
7816 (find-files "." "\\.(vga|VGA)$"))
7817 ;; Build the executable.
7818 (mkdir-p bin)
7819 (let ((bash (assoc-ref %build-inputs "bash")))
7820 (with-output-to-file executable
7821 (lambda ()
7822 (format #t "#!~a/bin/bash~%" bash)
7823 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7824 scummvm ,language data))))
7825 (chmod executable #o755)
7826 ;; Create desktop file. There is no dedicated
7827 ;; icon for the game, so we borrow SCUMMVM's.
7828 (mkdir-p apps)
7829 (with-output-to-file (string-append apps "/" ,name ".desktop")
7830 (lambda _
7831 (format #t
7832 "[Desktop Entry]~@
7833 Name=Lure of the Temptress~@
7834 GenericName=Lure~@
7835 Exec=~a~@
7836 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7837 Categories=AdventureGame;Game;RolePlaying;~@
7838 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7839 Comment=Classic 2D point and click adventure game~@
7840 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7841 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7842 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7843 Type=Application~%"
7844 executable scummvm)))
7845 #t))))
7846 (native-inputs
eca528cc 7847 `(("unzip" ,unzip)))
e7db97db 7848 (inputs
eca528cc
NG
7849 `(("bash" ,bash)
7850 ("scummvm" ,scummvm)))
e7db97db
NG
7851 (home-page "https://www.scummvm.org")
7852 (synopsis "2D point and click fantasy adventure game")
7853 (description
7854 "Lure of the Temptress is a classic 2D point and click adventure game.
7855
7856You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7857intents and purposes, a good man. After decades of unrest the King has united
7858the warring factions in his kingdom and all his lands are at peace, except
7859a remote region around a town called Turnvale. A revolt has recently taken
7860place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7861Selena, the titular temptress. The king calls together his finest horsemen
7862and heads off (with you in tow) to Turnvale just to witness how hellish
7863mercenary monsters called Skorl are invading the town.
7864
7865The king's men are defeated, the king is killed and you fall of your horse and
7866bang your head heavily on the ground. You have been *unconscious for a while
7867when you realize that you are in a dingy cell guarded by a not so friendly
7868Skorl. Maybe it would be an idea to try and escape...")
7869 (license (license:non-copyleft "file:///README"))))
7870
7871(define-public lure
7872 (make-lure-package
7873 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7874
7875(define-public lure-de
7876 (make-lure-package
7877 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7878
7879(define-public lure-es
7880 (make-lure-package
7881 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7882
7883(define-public lure-fr
7884 (make-lure-package
7885 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7886
7887(define-public lure-it
7888 (make-lure-package
7889 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7890
35cb2ac5
NG
7891(define (make-queen-package name file-prefix release language hash)
7892 (package
7893 (name name)
7894 (version release)
7895 (source
7896 (origin
7897 (method url-fetch)
7898 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7899 "Flight%20of%20the%20Amazon%20Queen/"
7900 file-prefix release ".zip"))
7901 (sha256
7902 (base32 hash))))
7903 (build-system trivial-build-system)
7904 (arguments
7905 `(#:modules ((guix build utils))
7906 #:builder
7907 (begin
7908 (use-modules (guix build utils))
7909 (let* ((out (assoc-ref %outputs "out"))
7910 (share (string-append out "/share"))
7911 (data (string-append share "/" ,name))
7912 (apps (string-append share "/applications"))
7913 (bin (string-append out "/bin"))
7914 (executable (string-append bin "/" ,name))
7915 (scummvm (assoc-ref %build-inputs "scummvm")))
7916 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7917 "/bin/unzip")))
7918 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7919 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7920 (install-file "readme.txt" doc))
7921 (install-file "queen.1c" data)
7922 (mkdir-p bin)
7923 (let ((bash (assoc-ref %build-inputs "bash")))
7924 (with-output-to-file executable
7925 (lambda ()
7926 (format #t "#!~a/bin/bash~%" bash)
7927 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7928 scummvm data))))
7929 (chmod executable #o755)
7930 ;; Create desktop file. There is no dedicated
7931 ;; icon for the game, so we borrow SCUMMVM's.
7932 (mkdir-p apps)
7933 (with-output-to-file (string-append apps "/" ,name ".desktop")
7934 (lambda _
7935 (format #t
7936 "[Desktop Entry]~@
7937 Name=Flight of the Amazon Queen~@
7938 GenericName=Queen~@
7939 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~@
7940 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~@
7941 Type=Application~@
7942 Exec=~a~@
7943 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7944 Categories=AdventureGame;Game;RolePlaying;~@
7945 Keywords=adventure;game;roleplaying;fantasy;~%"
7946 executable scummvm))))
7947 #t)))
7948 (native-inputs
7949 `(("unzip" ,unzip)))
7950 (inputs
7951 `(("bash" ,bash)
7952 ("scummvm" ,scummvm)))
7953 (home-page "https://www.scummvm.org/")
7954 (synopsis "Classic 2D point and click adventure game")
7955 (description "Flight of the Amazon Queen is a 2D point-and-click
7956adventure game set in the 1940s.
7957
7958You assume the role of Joe King, a pilot for hire who is given the job
7959of flying Faye Russell (a famous movie star) into the Amazon jungle
7960for a photo shoot. Of course, things never go according to plans.
7961After an unfortunate turn of events they find themselves stranded in
7962the heart of the Amazon jungle, where Joe will embark on a quest to
7963rescue a kidnapped princess and in the process, discover the true
7964sinister intentions of a suspiciously located Lederhosen company. In
7965a rich 2D environment, Joe will cross paths with a variety of unlikely
7966jungle inhabitants including, but not limited to, a tribe of Amazon
7967women and 6-foot-tall pygmies.")
7968 (license (license:non-copyleft "file:///readme.txt"))))
7969
7970(define-public queen
7971 (make-queen-package
7972 "queen" "FOTAQ_Talkie-" "1.1" "en"
7973 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7974
7975(define-public queen-de
7976 (make-queen-package
7977 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7978 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
7979
7980(define-public queen-fr
7981 (make-queen-package
7982 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
7983 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
7984
7985(define-public queen-it
7986 (make-queen-package
7987 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
7988 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
7989
403d9fae
NG
7990(define-public sky
7991 (package
7992 (name "sky")
7993 (version "1.2") ;1.3 is floppy version
7994 (source
7995 (origin
7996 (method url-fetch)
7997 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7998 "Beneath%20a%20Steel%20Sky/"
7999 "bass-cd-" version ".zip"))
8000 (sha256
8001 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8002 (build-system trivial-build-system)
8003 (arguments
8004 `(#:modules ((guix build utils))
8005 #:builder
8006 (begin
8007 (use-modules (guix build utils))
8008 (let* ((out (assoc-ref %outputs "out"))
8009 (share (string-append out "/share"))
8010 (data (string-append share "/" ,name))
8011 (apps (string-append share "/applications"))
8012 (bin (string-append out "/bin"))
8013 (executable (string-append bin "/" ,name))
8014 (scummvm (assoc-ref %build-inputs "scummvm")))
8015 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8016 "/bin/unzip")))
8017 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8018 (let ((doc (string-append share "/doc/bass-" ,version)))
8019 (install-file "readme.txt" doc))
8020 (for-each (lambda (f) (install-file f data))
8021 (find-files "." "^sky\\."))
8022 ;; Build the executable.
8023 (mkdir-p bin)
8024 (let ((bash (assoc-ref %build-inputs "bash")))
8025 (with-output-to-file executable
8026 (lambda ()
8027 (format #t "#!~a/bin/bash~%" bash)
8028 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8029 (chmod executable #o755)
8030 ;; Create desktop file. There is no dedicated
8031 ;; icon for the game, so we borrow SCUMMVM's.
8032 (mkdir-p apps)
8033 (with-output-to-file (string-append apps "/" ,name ".desktop")
8034 (lambda _
8035 (format #t
8036 "[Desktop Entry]~@
8037 Name=Beneath a Steel Sky~@
8038 GenericName=Bass~@
8039 Exec=~a~@
8040 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8041 Categories=AdventureGame;Game;RolePlaying;~@
8042 Keywords=adventure;game;roleplaying;cyberpunk;~@
8043 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8044 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8045angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8046 Type=Application~%"
8047 executable scummvm)))
8048 #t))))
8049 (native-inputs
8050 `(("unzip" ,unzip)))
8051 (inputs
8052 `(("bash" ,bash)
8053 ("scummvm" ,scummvm)))
8054 (home-page "https://www.scummvm.org/")
8055 (synopsis "Classic 2D point an click science-fiction adventure game")
8056 (description
8057 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8058post-apocalyptic vision of the future. It revolves around Union City,
8059where selfishness, rivalry, and corruption by its citizens seems to be
8060all too common, those who can afford it live underground, away from
8061the pollution and social problems which are plaguing the city.
8062
8063You take on the role of Robert Foster, an outcast of sorts from the
8064city since a boy who was raised in a remote environment outside of
8065Union City simply termed ``the gap''. Robert's mother took him away
8066from Union City as a child on their way to ``Hobart'' but the
8067helicopter crashed on its way. Unfortunately, Robert's mother died,
8068but he survived and was left to be raised by a local tribe from the
8069gap.
8070
8071Years later, Union City security drops by and abducts Robert, killing
8072his tribe in the process; upon reaching the city the helicopter taking
8073him there crashes with him escaping, high upon a tower block in the
8074middle of the city. He sets out to discover the truth about his past,
8075and to seek vengeance for the killing of his tribe.")
8076 (license (license:non-copyleft "file:///readme.txt"))))
8077
08c2fb8f
JG
8078(define-public gnurobots
8079 (package
8080 (name "gnurobots")
8081 (version "1.2.0")
8082 (source
8083 (origin
8084 (method url-fetch)
8085 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8086 version ".tar.gz"))
8087 (sha256
8088 (base32
8089 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8090 (build-system gnu-build-system)
8091 (inputs
8092 `(("glib" ,glib)
8093 ("gtk+" ,gtk+-2)
8094 ("vte" ,vte/gtk+-2)
8095 ("readline" ,readline)
8096 ("guile" ,guile-1.8)))
8097 (native-inputs
8098 `(("pkg-config" ,pkg-config)))
8099 (arguments
8100 `(#:make-flags
8101 (list
8102 ;; Do not abort build on "deprecated-declarations" warnings.
8103 "CFLAGS=-Wno-error=deprecated-declarations"
8104 ;; Find readline headers in sub-directory.
8105 (string-append "READLINE_CFLAGS=-I"
8106 (assoc-ref %build-inputs "readline")
8107 "/include/readline/"))
8108 #:phases
8109 (modify-phases %standard-phases
8110 (add-after 'install 'install-doc
8111 (lambda* (#:key outputs #:allow-other-keys)
8112 (install-file "doc/Robots-HOWTO"
8113 (string-append (assoc-ref outputs "out")
8114 "/share/doc/gnurobots-"
8115 ,version))
8116 #t)))))
8117 (home-page "https://www.gnu.org/software/gnurobots/")
8118 (synopsis "Program a little robot and watch it explore a world")
8119 (description
8120 "GNU Robots is a game in which you program a robot to explore a world
8121full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8122the game is to stay alive and collect prizes. The robot program conveniently
8123may be written in a plain text file in the Scheme programming language.")
8124 (license license:gpl3+)))
3745909d
NG
8125
8126(define-public ri-li
8127 (package
8128 (name "ri-li")
8129 (version "2.0.1")
8130 (source (origin
8131 (method url-fetch)
8132 (uri (string-append "mirror://sourceforge/ri-li/"
8133 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8134 "Ri-li-" version ".tar.bz2"))
8135 (sha256
8136 (base32
8137 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8138 ;; Taken from
8139 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8140 ;; It doesn't build otherwise.
8141 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8142 (build-system gnu-build-system)
8143 (arguments
8144 `(#:phases
8145 (modify-phases %standard-phases
8146 ;; Remove "gentoo" subdirectory from Makefile, as it is
8147 ;; missing a make file and generates a build failure.
8148 (add-after 'configure 'fix-build
8149 (lambda _
8150 (substitute* "Makefile"
8151 ((" gentoo") ""))
8152 #t))
8153 (add-after 'install 'install-desktop-file
8154 (lambda* (#:key outputs #:allow-other-keys)
8155 (let* ((out (assoc-ref outputs "out"))
8156 (apps (string-append out "/share/applications"))
8157 (pixmaps (string-append out "/share/pixmaps")))
8158 (for-each (lambda (f) (install-file f pixmaps))
8159 (find-files "data" "\\.(png|ico)$"))
8160 (mkdir-p apps)
8161 (with-output-to-file (string-append apps "/ri-li.desktop")
8162 (lambda _
8163 (format #t
8164 "[Desktop Entry]~@
8165 Name=Ri-li~@
8166 Exec=~a/bin/Ri_li~@
8167 Icon=~a/Ri-li-icon-32x32.png~@
8168 Categories=Game;ArcadeGame;~@
8169 Keywords=toy;train;wooden;snake-like;engine;~@
8170 Comment=a toy simulator game~@
8171 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8172 Comment[fr]=un jeu de petit train~@
8173 Comment[ro_RO]=un joc cu un tren de jucărie~@
8174 Terminal=false~@
8175 Type=Application~%"
8176 out pixmaps))))
8177 #t))
8178 (add-after 'install-desktop-file 'remove-spurious-files
8179 ;; Delete redundant files already installed somewhere else.
8180 (lambda* (#:key outputs #:allow-other-keys)
8181 (let ((out (assoc-ref outputs "out")))
8182 (for-each delete-file
8183 (find-files (string-append out "/share/Ri-li")
8184 "\\.(png|ico)|COPYING"))
8185 #t))))))
8186 (inputs
8187 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8188 (home-page "http://www.ri-li.org")
8189 (synopsis "Toy train simulation game")
8190 (description "Ri-li is a game in which you drive a wooden toy
8191steam locomotive across many levels and collect all the coaches to
8192win.")
8193 ;; The project is dual-licensed GPL2+ and GPL3+.
8194 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
8195
8196(define-public freeorion
8197 (package
8198 (name "freeorion")
f6fdbb05 8199 (version "0.4.9")
562a2a40
JG
8200 (source
8201 (origin
f6fdbb05
TGR
8202 (method url-fetch)
8203 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8204 "download/v" version "/FreeOrion_v" version
8205 "_2020-02-02.db53471_Source.tar.gz"))
562a2a40 8206 (sha256
f6fdbb05 8207 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
562a2a40
JG
8208 (modules '((guix build utils)))
8209 (snippet
8210 '(begin
8211 ;; There are some bundled fonts.
8212 (for-each delete-file-recursively '("default/data/fonts"))
8213 #t))))
8214 (build-system cmake-build-system)
8215 (arguments
8216 '(#:tests? #f ;no test
8217 #:phases
8218 (modify-phases %standard-phases
8219 (add-after 'unpack 'unbundle-fonts
8220 (lambda* (#:key inputs #:allow-other-keys)
8221 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8222 "/share/fonts/truetype/")))
8223 (substitute* "UI/ClientUI.cpp"
7658904a 8224 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 8225 all type)
7658904a 8226 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
8227 #t))))))
8228 (inputs
8229 `(("boost" ,boost)
8230 ("boost_signals" ,boost-signals2)
8231 ("font-dejavu" ,font-dejavu)
8232 ("font-roboto" ,font-google-roboto)
8233 ("freetype2" ,freetype)
8234 ("glew" ,glew)
8235 ("glu" ,glu)
8236 ("libogg" ,libogg)
8237 ("libpng" ,libpng)
8238 ("libvorbis" ,libvorbis)
8239 ("openal" ,openal)
8240 ("python2" ,python-2.7)
8241 ("sdl2" ,sdl2)
8242 ("zlib" ,zlib)))
8243 (home-page "https://www.freeorion.org/index.php/Main_Page")
8244 (synopsis "Turn-based space empire and galactic conquest computer game")
8245 (description
8246 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8247computer game being designed and built by the FreeOrion project. Control an
8248empire with the goal of exploring the galaxy, expanding your territory,
8249exploiting the resources, and exterminating rival alien empires. FreeOrion is
8250inspired by the tradition of the Master of Orion games, but is not a clone or
8251remake of that series or any other game.")
8252 ;; Source code is released under gpl2. Artwork, music and sounds, and
8253 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8254 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8255 ;; released under lgpl2.1+.
8256 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
8257
8258(define-public leela-zero
8259 (package
8260 (name "leela-zero")
8261 (version "0.17")
8262 (source
8263 (origin
8264 (method git-fetch)
8265 (uri (git-reference
8266 (url "https://github.com/leela-zero/leela-zero.git")
8267 (commit (string-append "v" version))))
8268 (file-name (git-file-name name version))
8269 (sha256
8270 (base32
8271 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8272 (patches (search-patches "leela-zero-gtest.patch"))))
8273 (build-system cmake-build-system)
8274 (native-inputs
8275 `(("googletest" ,googletest)))
8276 (inputs
8277 `(("boost" ,boost)
8278 ("ocl-icd" ,ocl-icd)
8279 ("openblas" ,openblas)
8280 ("opencl-headers" ,opencl-headers)
8281 ("qtbase" ,qtbase)
8282 ("zlib" ,zlib)))
8283 (arguments
8284 '(#:configure-flags '("-DUSE_BLAS=YES")
8285 #:phases (modify-phases %standard-phases
8286 (add-before 'configure 'fix-tests
8287 (lambda* (#:key outputs #:allow-other-keys)
8288 (let ((home (getcwd)))
8289 (setenv "HOME" home)
8290 (substitute* "src/tests/gtests.cpp"
8291 (("\\.\\./src/tests/0k\\.txt")
8292 (string-append home "/src/tests/0k.txt"))
8293 (("cfg_gtp_mode = true;")
8294 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8295 #t))
8296 (replace 'check
8297 (lambda _
8298 (invoke "./tests"))))))
8299 (home-page "https://github.com/leela-zero/leela-zero")
8300 (synopsis "Program playing the game of Go")
8301 (description
8302 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8303the AlphaGo Zero paper. The current best network weights file for the engine
8304can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8305 (license license:gpl3+)))
66977719
GLV
8306
8307(define-public q5go
8308 (package
8309 (name "q5go")
8310 (version "1.0")
8311 (source (origin
8312 (method git-fetch)
8313 (uri (git-reference
8314 (url "https://github.com/bernds/q5Go.git")
8315 (commit (string-append "q5go-" version))))
8316 (file-name (git-file-name name version))
8317 (sha256
8318 (base32
8319 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8320 (build-system gnu-build-system)
8321 (native-inputs
8322 `(("pkg-config" ,pkg-config)))
8323 (inputs
8324 `(("qtbase" ,qtbase)
8325 ("qtmultimedia" ,qtmultimedia)
8326 ("qtsvg" ,qtsvg)))
8327 (arguments
8328 '(#:phases
8329 (modify-phases %standard-phases
8330 (add-after 'unpack 'fix-configure-script
8331 (lambda _
8332 ;; Bypass the unavailable qtchooser program.
8333 (substitute* "configure"
8334 (("test -z \"QTCHOOSER\"")
8335 "false")
8336 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8337 command))
8338 #t))
8339 (add-after 'unpack 'fix-paths
8340 (lambda _
8341 (substitute* '("src/pics/Makefile.in"
8342 "src/translations/Makefile.in")
8343 (("\\$\\(datadir\\)/qGo/")
8344 "$(datadir)/q5go/"))
8345 #t))
8346 (add-after 'install 'install-desktop-file
8347 (lambda* (#:key outputs #:allow-other-keys)
8348 (let* ((out (assoc-ref outputs "out"))
8349 (apps (string-append out "/share/applications"))
8350 (pics (string-append out "/share/q5go/pics")))
8351 (delete-file-recursively (string-append out "/share/applnk"))
8352 (delete-file-recursively (string-append out "/share/mimelnk"))
8353 (install-file "../source/src/pics/Bowl.ico" pics)
8354 (mkdir-p apps)
8355 (with-output-to-file (string-append apps "/q5go.desktop")
8356 (lambda _
8357 (format #t
8358 "[Desktop Entry]~@
8359 Name=q5go~@
8360 Exec=~a/bin/q5go~@
8361 Icon=~a/Bowl.ico~@
8362 Categories=Game;~@
8363 Comment=Game of Go~@
8364 Comment[de]=Spiel des Go~@
8365 Comment[eo]=Goo~@
8366 Comment[es]=Juego de Go~@
8367 Comment[fr]=Jeu de Go~@
8368 Comment[ja]=囲碁~@
8369 Comment[ko]=바둑~@
8370 Comment[zh]=围棋~@
8371 Terminal=false~@
8372 Type=Application~%"
8373 out pics))))
8374 #t)))))
8375 (synopsis "Qt GUI to play the game of Go")
8376 (description
8377 "This a tool for Go players which performs the following functions:
8378@itemize
8379@item SGF editor,
8380@item Analysis frontend for Leela Zero (or compatible engines),
8381@item GTP interface (to play against an engine),
8382@item IGS client (to play on the internet),
8383@item Export games to a variety of formats.
8384@end itemize")
8385 (home-page "https://github.com/bernds/q5Go")
8386 (license license:gpl2+)))
3c1c5622
HG
8387
8388(define-public ktuberling
8389 (package
8390 (name "ktuberling")
8391 (version "19.08.3")
8392 (source
8393 (origin
8394 (method url-fetch)
8395 (uri (string-append "mirror://kde/stable/applications/" version
8396 "/src/ktuberling-" version ".tar.xz"))
8397 (sha256
8398 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
8399 (build-system qt-build-system)
8400 (native-inputs
8401 `(("extra-cmake-modules" ,extra-cmake-modules)
8402 ("perl" ,perl)))
8403 (inputs
8404 `(("kcompletion" ,kcompletion)
8405 ("kconfigwidgets" ,kconfigwidgets)
8406 ("kcoreaddons" ,kcoreaddons)
8407 ("kcrash" ,kcrash)
8408 ("kdbusaddons" ,kdbusaddons)
8409 ("kdelibs4support" ,kdelibs4support)
8410 ("ki18n" ,ki18n)
8411 ("kwidgetsaddons" ,kwidgetsaddons)
8412 ("kxmlgui" ,kxmlgui)
8413 ("libkdegames" ,libkdegames)
8414 ("qtbase" ,qtbase)
8415 ("qtmultimedia" ,qtmultimedia)
8416 ("qtdeclarative" ,qtdeclarative)
8417 ("qtsvg" ,qtsvg)))
8418 (home-page "https://games.kde.org/")
8419 (synopsis "Stamp drawing toy")
8420 (description "KTuberling is a drawing toy intended for small children and
8421adults who remain young at heart. The game has no winner; the only purpose is
8422to make the funniest faces you can. Several activites are possible, e.g.:
8423
8424@itemize
8425@item Give the potato a funny face, clothes, and other goodies
8426@item Build a small town, complete with school, zoo, and fire department
8427@item Create a fantastic moonscape with spaceships and aliens
8428@item Top a pizza
8429@end itemize
8430
8431KTuberling can speak the name of each the object in several languages,
8432to assist in learning basic vocabulary.
8433
8434This package is part of the KDE games module.")
8435 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
8436
8437(define-public picmi
8438 (package
8439 (name "picmi")
8440 (version "19.08.3")
8441 (source
8442 (origin
8443 (method url-fetch)
8444 (uri (string-append "mirror://kde/stable/applications/" version
8445 "/src/picmi-" version ".tar.xz"))
8446 (sha256
8447 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
8448 (build-system qt-build-system)
8449 (native-inputs
8450 `(("extra-cmake-modules" ,extra-cmake-modules)
8451 ("kdoctools" ,kdoctools)))
8452 (inputs
8453 `(("kcoreaddons" ,kcoreaddons)
8454 ("kcrash" ,kcrash)
8455 ("kdbusaddons" ,kdbusaddons)
8456 ("kdeclarative" ,kdeclarative)
8457 ("ki18n" ,ki18n)
8458 ("kio" ,kio)
8459 ("knewstuff" ,knewstuff)
8460 ("kxmlgui" ,kxmlgui)
8461 ("libkdegames" ,libkdegames)
8462 ("qtbase" ,qtbase)
8463 ("qtdeclarative" ,qtdeclarative)
8464 ("qtsvg" ,qtsvg)))
8465 (home-page "https://games.kde.org/")
8466 (synopsis "Number logic game")
8467 (description "Picmi is a number logic game in which cells in a grid have
8468to be colored or left blank according to numbers given at the side of the
8469grid. The aim is to reveal a hidden picture.
8470
8471This package is part of the KDE games module.")
8472 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8473
8474(define-public kolf
8475 (package
8476 (name "kolf")
8477 (version "19.08.3")
8478 (source
8479 (origin
8480 (method url-fetch)
8481 (uri (string-append "mirror://kde/stable/applications/" version
8482 "/src/kolf-" version ".tar.xz"))
8483 (sha256
8484 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
8485 (build-system qt-build-system)
8486 (native-inputs
8487 `(("extra-cmake-modules" ,extra-cmake-modules)
8488 ("kdoctools" ,kdoctools)))
8489 (inputs
8490 `(("kcompletion" ,kcompletion)
8491 ("kconfigwidgets" ,kconfigwidgets)
8492 ("kcoreaddons" ,kcoreaddons)
8493 ("kcrash" ,kcrash)
8494 ("kdbusaddons" ,kdbusaddons)
8495 ("ki18n" ,ki18n)
8496 ("kio" ,kio)
8497 ("kwidgetsaddons" ,kwidgetsaddons)
8498 ("kxmlgui" ,kxmlgui)
8499 ("ktextwidgets" ,ktextwidgets)
8500 ("libkdegames" ,libkdegames)
8501 ("qtbase" ,qtbase)
8502 ("qtdeclarative" ,qtdeclarative)))
8503 (home-page "https://games.kde.org/")
8504 (synopsis "Miniature golf game")
8505 (description "Kolf is a miniature golf game for one to ten players. The
8506game is played from an overhead view, with a short bar representing the golf
8507club. Kolf features many different types of objects, such as water hazards,
8508slopes, sand traps, and black holes (warps), among others.
8509
8510Features are:
8511@itemize
8512@item Single and Multi-player (up to ten players) modes
8513@item High scores table
8514@item Dynamic courses
8515@item Third-party courses
8516@item Course editor
8517@end itemize
8518
8519This package is part of the KDE games module.")
8520 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8521
8522(define-public libkmahjongg
8523 (package
8524 (name "libkmahjongg")
8525 (version "19.08.3")
8526 (source
8527 (origin
8528 (method url-fetch)
8529 (uri (string-append "mirror://kde/stable/applications/"
8530 version "/src/libkmahjongg-" version ".tar.xz"))
8531 (sha256
8532 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8533 (build-system qt-build-system)
8534 (native-inputs
8535 `(("extra-cmake-modules" ,extra-cmake-modules)))
8536 (inputs
8537 `(("kauth" ,kauth)
8538 ("kcompletion" ,kcompletion)
8539 ;("kconfig" ,kconfig)
8540 ("kcodecs" ,kcodecs)
8541 ("kconfigwidgets" ,kconfigwidgets)
8542 ("kcoreaddons" ,kcoreaddons)
8543 ("ki18n" ,ki18n)
8544 ("kwidgetsaddons" ,kwidgetsaddons)
8545 ("qtbase" ,qtbase)
8546 ("qtsvg" ,qtsvg)))
8547 (home-page "https://games.kde.org/")
8548 (synopsis "Shared library for kmahjongg and kshisen")
8549 (description "Shared library and common files for kmahjongg, kshisen and
8550other Mah Jongg like games.")
8551 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8552
8553(define-public kmahjongg
8554 (package
8555 (name "kmahjongg")
8556 (version "19.08.3")
8557 (source
8558 (origin
8559 (method url-fetch)
8560 (uri (string-append "mirror://kde/stable/applications/"
8561 version "/src/kmahjongg-" version ".tar.xz"))
8562 (sha256
8563 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
8564 (build-system qt-build-system)
8565 (native-inputs
8566 `(("extra-cmake-modules" ,extra-cmake-modules)
8567 ("kdoctools" ,kdoctools)))
8568 (inputs
8569 `(("kcompletion" ,kcompletion)
8570 ("kcrash" ,kcrash)
8571 ("kdbusaddons" ,kdbusaddons)
8572 ("kdeclarative" ,kdeclarative)
8573 ("ki18n" ,ki18n)
8574 ("knewstuff" ,knewstuff)
8575 ("kxmlgui" ,kxmlgui)
8576 ("libkdegames" ,libkdegames)
8577 ("libkmahjongg" ,libkmahjongg)
8578 ("qtbase" ,qtbase)
8579 ("qtdeclarative" ,qtdeclarative)
8580 ("qtsvg" ,qtsvg)))
8581 (home-page "https://games.kde.org/")
8582 (synopsis "Tile laying patience")
8583 (description "In KMahjongg the tiles are scrambled and staked on top of
8584each other to resemble a certain shape. The player is then expected to remove
8585all the tiles off the game board by locating each tile's matching pair.
8586
8587A variety of tile layouts are included, as well as an editor to create new
8588layouts.
8589
8590This package is part of the KDE games module.")
8591 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8592
8593(define-public kshisen
8594 (package
8595 (name "kshisen")
8596 (version "19.08.3")
8597 (source
8598 (origin
8599 (method url-fetch)
8600 (uri (string-append "mirror://kde/stable/applications/"
8601 version "/src/kshisen-" version ".tar.xz"))
8602 (sha256
8603 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
8604 (build-system qt-build-system)
8605 (native-inputs
8606 `(("extra-cmake-modules" ,extra-cmake-modules)
8607 ;("perl" ,perl)
8608 ;("pkg-config" ,pkg-config)
8609 ("kdoctools" ,kdoctools)))
8610 (inputs
8611 `(("kauth" ,kauth)
8612 ("kcompletion" ,kcompletion)
8613 ("kconfigwidgets" ,kconfigwidgets)
8614 ("kcoreaddons" ,kcoreaddons)
8615 ("kcrash" ,kcrash)
8616 ("kdbusaddons" ,kdbusaddons)
8617 ("ki18n" ,ki18n)
8618 ("kxmlgui" ,kxmlgui)
8619 ("libkdegames" ,libkdegames)
8620 ("libkmahjongg" ,libkmahjongg)
8621 ("qtbase" ,qtbase)
8622 ("qtdeclarative" ,qtdeclarative)))
8623 (home-page "https://games.kde.org/")
8624 (synopsis "Shisen-Sho solitaire game")
8625 (description "KShisen is a solitaire-like game played using the standard
8626set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8627scrambled tiles
8628
8629This package is part of the KDE games module.")
8630 (license license:gpl2+)))
321bd0c3
HG
8631
8632(define-public kajongg
8633 (package
8634 (name "kajongg")
8635 (version "19.08.3")
8636 (source
8637 (origin
8638 (method url-fetch)
8639 (uri (string-append "mirror://kde/stable/applications/"
8640 version "/src/kajongg-" version ".tar.xz"))
8641 (sha256
8642 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
8643 (build-system qt-build-system)
8644 (native-inputs
8645 `(("extra-cmake-modules" ,extra-cmake-modules)
8646 ;("perl" ,perl)
8647 ("kdoctools" ,kdoctools)))
8648 (inputs
8649 `(("kconfig" ,kconfig)
8650 ("kconfigwidgets" ,kconfigwidgets)
8651 ("kcoreaddons" ,kcoreaddons)
8652 ("ki18n" ,ki18n)
8653 ("libkmahjongg" ,libkmahjongg)
8654 ("python" ,python)
8655 ("qtbase" ,qtbase)
8656 ("qtsvg" ,qtsvg)))
8657 (propagated-inputs
8658 `(("python-twisted" ,python-twisted)
8659 ("python-pyqt" ,python-pyqt)))
8660 ;; FIXME: Need to wrap PYTHONPATH
8661 (home-page "https://games.kde.org/")
8662 (synopsis "Classical Mah Jongg game for 4 players")
8663 (description "Kajongg is the ancient Chinese board game for 4 players.
8664
8665If you are looking for the Mah Jongg solitaire please use the application
8666kmahjongg.
8667
8668Kajongg can be used in two different ways: Scoring a manual game where you
8669play as always and use Kajongg for the computation of scores and for
8670bookkeeping. Or you can use Kajongg to play against any combination of other
8671human players or computer players.
8672
8673This package is part of the KDE games module.")
8674 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8675
8676(define-public kbreakout
8677 (package
8678 (name "kbreakout")
8679 (version "19.08.3")
8680 (source
8681 (origin
8682 (method url-fetch)
8683 (uri (string-append "mirror://kde/stable/applications/" version
8684 "/src/kbreakout-" version ".tar.xz"))
8685 (sha256
8686 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
8687 (build-system qt-build-system)
8688 (native-inputs
8689 `(("extra-cmake-modules" ,extra-cmake-modules)
8690 ("kdoctools" ,kdoctools)))
8691 (inputs
8692 `(("kcompletion" ,kcompletion)
8693 ("kconfig" ,kconfig)
8694 ("kconfigwidgets" ,kconfigwidgets)
8695 ("kcoreaddons" ,kcoreaddons)
8696 ("kcrash" ,kcrash)
8697 ("kdbusaddons" ,kdbusaddons)
8698 ("ki18n" ,ki18n)
8699 ("kwidgetsaddons" ,kwidgetsaddons)
8700 ("kxmlgui" ,kxmlgui)
8701 ("libkdegames" ,libkdegames)
8702 ("qtbase" ,qtbase)
8703 ("qtdeclarative" ,qtdeclarative)))
8704 (home-page "https://games.kde.org/")
8705 (synopsis "Breakout like game")
8706 (description "KBreakout is similar to the classics breakout and xboing,
8707featuring a number of added graphical enhancements and effects. You control a
8708paddle at the bottom of the playing-field, and must destroy bricks at the top
8709by bouncing balls against them.
8710
8711This package is part of the KDE games module.")
8712 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8713
8714(define-public kmines
8715 (package
8716 (name "kmines")
8717 (version "19.08.3")
8718 (source
8719 (origin
8720 (method url-fetch)
8721 (uri (string-append "mirror://kde/stable/applications/" version
8722 "/src/kmines-" version ".tar.xz"))
8723 (sha256
8724 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
8725 (build-system qt-build-system)
8726 (native-inputs
8727 `(("extra-cmake-modules" ,extra-cmake-modules)
8728 ("kdoctools" ,kdoctools)))
8729 (inputs
8730 `(("kcompletion" ,kcompletion)
8731 ("kconfig" ,kconfig)
8732 ("kconfigwidgets" ,kconfigwidgets)
8733 ("kcoreaddons" ,kcoreaddons)
8734 ("kcrash" ,kcrash)
8735 ("kdbusaddons" ,kdbusaddons)
8736 ("ki18n" ,ki18n)
8737 ("ktextwidgets" ,ktextwidgets)
8738 ("kwidgetsaddons" ,kwidgetsaddons)
8739 ("kxmlgui" ,kxmlgui)
8740 ("libkdegames" ,libkdegames)
8741 ("qtbase" ,qtbase)
8742 ("qtdeclarative" ,qtdeclarative)))
8743 (home-page "https://games.kde.org/")
8744 (synopsis "Classical mine sweeper game")
8745 (description "KMines is a classic Minesweeper game. The idea is to
8746uncover all the squares without blowing up any mines. When a mine is blown
8747up, the game is over.
8748
8749This package is part of the KDE games module.")
8750 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8751
8752(define-public konquest
8753 (package
8754 (name "konquest")
8755 (version "19.08.3")
8756 (source
8757 (origin
8758 (method url-fetch)
8759 (uri (string-append "mirror://kde/stable/applications/"
8760 version "/src/konquest-" version ".tar.xz"))
8761 (sha256
8762 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
8763 (build-system qt-build-system)
8764 (native-inputs
8765 `(("extra-cmake-modules" ,extra-cmake-modules)
8766 ("kdoctools" ,kdoctools)))
8767 (inputs
8768 `(("kcompletion" ,kcompletion)
8769 ("kconfig" ,kconfig)
8770 ("kcoreaddons" ,kcoreaddons)
8771 ("kcrash" ,kcrash)
8772 ("kdbusaddons" ,kdbusaddons)
8773 ("kguiaddons" ,kguiaddons)
8774 ("ki18n" ,ki18n)
8775 ("kwidgetsaddons" ,kwidgetsaddons)
8776 ("kxmlgui" ,kxmlgui)
8777 ("libkdegames" ,libkdegames)
8778 ("qtbase" ,qtbase)
8779 ("qtdeclarative" ,qtdeclarative)
8780 ("qtsvg" ,qtsvg)))
8781 (home-page "https://games.kde.org/")
8782 (synopsis "Simple turn-based strategy game")
8783 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8784conquer other planets by sending ships to them. The goal is to build an
8785interstellar empire and ultimately conquer all other player's planets. The
8786game can be played with up to nine empires, commanded either by the computer
8787or by puny earthlings.
8788
8789This package is part of the KDE games module.")
8790 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8791
8792(define-public kbounce
8793 (package
8794 (name "kbounce")
8795 (version "19.08.3")
8796 (source
8797 (origin
8798 (method url-fetch)
8799 (uri (string-append "mirror://kde/stable/applications/"
8800 version "/src/kbounce-" version ".tar.xz"))
8801 (sha256
8802 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
8803 (build-system qt-build-system)
8804 (native-inputs
8805 `(("extra-cmake-modules" ,extra-cmake-modules)
8806 ("kdoctools" ,kdoctools)))
8807 (inputs
8808 `(("kcompletion" ,kcompletion)
8809 ("kconfigwidgets" ,kconfigwidgets)
8810 ("kcoreaddons" ,kcoreaddons)
8811 ("kcrash" ,kcrash)
8812 ("kdbusaddons" ,kdbusaddons)
8813 ("ki18n" ,ki18n)
8814 ("kio" ,kio)
8815 ("kwidgetsaddons" ,kwidgetsaddons)
8816 ("kxmlgui" ,kxmlgui)
8817 ("libkdegames" ,libkdegames)
8818 ("qtbase" ,qtbase)
8819 ("qtdeclarative" ,qtdeclarative)
8820 ("qtsvg" ,qtsvg)))
8821 (home-page "https://games.kde.org/")
8822 (synopsis "Jezzball arcade game")
8823 (description "KBounce is a single player arcade game with the elements of
8824puzzle. It is played on a field, surrounded by wall, with two or more balls
8825bouncing around within the walls. The object of the game is to build new
8826walls to decrease the size of the active field.
8827
8828This package is part of the KDE games module.")
8829 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8830
8831(define-public kblocks
8832 (package
8833 (name "kblocks")
8834 (version "19.08.3")
8835 (source
8836 (origin
8837 (method url-fetch)
8838 (uri (string-append "mirror://kde/stable/applications/"
8839 version "/src/kblocks-" version ".tar.xz"))
8840 (sha256
8841 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
8842 (build-system qt-build-system)
8843 (native-inputs
8844 `(("extra-cmake-modules" ,extra-cmake-modules)
8845 ("kdoctools" ,kdoctools)))
8846 (inputs
8847 `(("kcompletion" ,kcompletion)
8848 ("kconfig" ,kconfig)
8849 ("kconfigwidgets" ,kconfigwidgets)
8850 ("kcoreaddons" ,kcoreaddons)
8851 ("kcrash" ,kcrash)
8852 ("kdbusaddons" ,kdbusaddons)
8853 ("ki18n" ,ki18n)
8854 ("kwidgetsaddons" ,kwidgetsaddons)
8855 ("kxmlgui" ,kxmlgui)
8856 ("libkdegames" ,libkdegames)
8857 ("qtbase" ,qtbase)
8858 ("qtdeclarative" ,qtdeclarative)
8859 ("qtsvg" ,qtsvg)))
8860 (home-page "https://games.kde.org/")
8861 (synopsis "Single player falling blocks puzzle game")
8862 (description "KBlocks is the classic Tetris-like falling blocks game.
8863
8864The idea is to stack the falling blocks to create horizontal lines without any
8865gaps. When a line is completed it is removed, and more space is available in
8866the play area. When there is not enough space for blocks to fall, the game is
8867over.
8868
8869This package is part of the KDE games module.")
8870 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8871
8872(define-public ksudoku
8873 (package
8874 (name "ksudoku")
8875 (version "19.08.3")
8876 (source
8877 (origin
8878 (method url-fetch)
8879 (uri (string-append "mirror://kde/stable/applications/"
8880 version "/src/ksudoku-" version ".tar.xz"))
8881 (sha256
8882 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
8883 (build-system qt-build-system)
8884 (native-inputs
8885 `(("extra-cmake-modules" ,extra-cmake-modules)
8886 ("kdoctools" ,kdoctools)))
8887 (inputs
8888 `(("karchive", karchive)
8889 ("kconfig" ,kconfig)
8890 ("kconfigwidgets" ,kconfigwidgets)
8891 ("kcoreaddons" ,kcoreaddons)
8892 ("kcrash" ,kcrash)
8893 ("kguiaddons" ,kguiaddons)
8894 ("ki18n" ,ki18n)
8895 ("kiconthemes" ,kiconthemes)
8896 ("kio" ,kio)
8897 ("kwidgetsaddons" ,kwidgetsaddons)
8898 ("kxmlgui" ,kxmlgui)
8899 ("libkdegames" ,libkdegames)
8900 ("glu" ,glu)
8901 ("qtbase" ,qtbase)
8902 ("qtdeclarative" ,qtdeclarative)
8903 ("qtsvg" ,qtsvg)))
8904 (home-page "https://games.kde.org/")
8905 (synopsis "Sudoku puzzle game and solver")
8906 (description "KSudoku is a Sudoku game and solver, supporting a range of
89072D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8908puzzle sheets and find the solution to any Sudoku puzzle.
8909
8910The word Sudoku means \"single number in an allotted place\" in Japanese.
8911These are the basic rules: Every Sudoku is a square divided into 3x3
8912subsquares with 3x3 cells each.
8913
8914Some cells are filled with a number at the beginning. The remaining ones are
8915to be filled by the player using numbers from 1 to 9, without repeating a
8916number twice on each column, row or subsquare (each of them must contain only
8917one 1, one 2, one 3, and so on). The game requires logic and patience.
8918Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8919and experience.
8920
8921The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8922board we use letters): arithmetic relationships between numbers are
8923irrelevant.
8924
8925This program supports also 16x16 games with numbers from 1 to 16 and 256
8926cells with 16 cols, rows and subsquares!
8927
8928More information at http://en.wikipedia.org/wiki/Sudoku
8929
8930This package is part of the KDE games module.")
8931 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
8932
8933(define-public klines
8934 (package
8935 (name "klines")
8936 (version "19.08.3")
8937 (source
8938 (origin
8939 (method url-fetch)
8940 (uri (string-append "mirror://kde/stable/applications/" version
8941 "/src/klines-" version ".tar.xz"))
8942 (sha256
8943 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
8944 (build-system qt-build-system)
8945 (native-inputs
8946 `(("extra-cmake-modules" ,extra-cmake-modules)
8947 ("kdoctools" ,kdoctools)))
8948 (inputs
8949 `(("kcompletion" ,kcompletion)
8950 ("kconfigwidgets" ,kconfigwidgets)
8951 ("kcoreaddons" ,kcoreaddons)
8952 ("kcrash" ,kcrash)
8953 ("kdbusaddons" ,kdbusaddons)
8954 ("ki18n" ,ki18n)
8955 ("kwidgetsaddons" ,kwidgetsaddons)
8956 ("kxmlgui" ,kxmlgui)
8957 ("libkdegames" ,libkdegames)
8958 ("qtbase" ,qtbase)
8959 ("qtdeclarative" ,qtdeclarative)))
8960 (home-page "https://games.kde.org/")
8961 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8962 (description "KLines is a simple but highly addictive one player game.
8963
8964The player has to move the colored balls around the game board, gathering them
8965into the lines of the same color by five. Once the line is complete it is
8966removed from the board, therefore freeing precious space. In the same time
8967the new balls keep arriving by three after each move, filling up the game
8968board.
8969
8970KLines is a single-player game where the player removes colored balls from the
8971board by arranging them into lines of five or more. However, every time the
8972player moves a ball, three more balls are added to the board.
8973
8974This package is part of the KDE games module.")
8975 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
8976
8977(define-public kgoldrunner
8978 (package
8979 (name "kgoldrunner")
8980 (version "19.08.3")
8981 (source
8982 (origin
8983 (method url-fetch)
8984 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
8985 version ".tar.xz"))
8986 (sha256
8987 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
8988 (build-system qt-build-system)
8989 (native-inputs
8990 `(("extra-cmake-modules" ,extra-cmake-modules)
8991 ("kdoctools" ,kdoctools)))
8992 (inputs
8993 `(("kcompletion" ,kcompletion)
8994 ("kcoreaddons" ,kcoreaddons)
8995 ("kcrash" ,kcrash)
8996 ("kdbusaddons" ,kdbusaddons)
8997 ("ki18n" ,ki18n)
8998 ("kio" ,kio)
8999 ("kwidgetsaddons" ,kwidgetsaddons)
9000 ("kxmlgui" ,kxmlgui)
9001 ("libkdegames" ,libkdegames)
9002 ("qtbase" ,qtbase)
9003 ("qtdeclarative" ,qtdeclarative)))
9004 (home-page "https://games.kde.org/")
9005 (synopsis "Action and puzzle solving game")
9006 (description "KGoldrunner is an action game where the hero runs through a
9007maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9008gold nuggets and escape to the next level. Your enemies are also after the
9009gold. Worse still, they are after you!.
9010
9011KGoldrunner is a fast-paced platform game where the player must navigate a
9012maze while collecting gold nuggets and avoiding enemies. A variety of level
9013packs are included, as well as an editor to create new levels.
9014
9015This package is part of the KDE games module.")
9016 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
9017
9018(define-public kdiamond
9019 (package
9020 (name "kdiamond")
9021 (version "19.08.3")
9022 (source
9023 (origin
9024 (method url-fetch)
9025 (uri (string-append "mirror://kde/stable/applications/" version
9026 "/src/kdiamond-" version ".tar.xz"))
9027 (sha256
9028 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
9029 (build-system qt-build-system)
9030 (native-inputs
9031 `(("extra-cmake-modules" ,extra-cmake-modules)
9032 ("kdoctools" ,kdoctools)))
9033 (inputs
9034 `(("kcompletion", kcompletion)
9035 ("kconfig" ,kconfig)
9036 ("kconfigwidgets" ,kconfigwidgets)
9037 ("kcoreaddons" ,kcoreaddons)
9038 ("kcrash" ,kcrash)
9039 ("kdbusaddons" ,kdbusaddons)
9040 ("ki18n" ,ki18n)
9041 ("knotifications" ,knotifications)
9042 ("knotifyconfig" ,knotifyconfig)
9043 ("kwidgetsaddons" ,kwidgetsaddons)
9044 ("kxmlgui" ,kxmlgui)
9045 ("libkdegames" ,libkdegames)
9046 ("qtbase" ,qtbase)
9047 ("qtdeclarative" ,qtdeclarative)))
9048 (home-page "https://games.kde.org/")
9049 (synopsis "Three-in-a-row game")
9050 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9051features unlimited fun with randomly generated games and five difficulty
9052levels with varying number of diamond colors and board sizes.
9053
9054This package is part of the KDE games module.")
9055 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
9056
9057(define-public kfourinline
9058 (package
9059 (name "kfourinline")
9060 (version "19.08.3")
9061 (source
9062 (origin
9063 (method url-fetch)
9064 (uri (string-append "mirror://kde/stable/applications/" version
9065 "/src/kfourinline-" version ".tar.xz"))
9066 (sha256
9067 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
9068 (build-system qt-build-system)
9069 (native-inputs
9070 `(("extra-cmake-modules" ,extra-cmake-modules)
9071 ("kdoctools" ,kdoctools)))
9072 (inputs
9073 `(("kcompletion" ,kcompletion)
9074 ("kconfig" ,kconfig)
9075 ("kconfigwidgets" ,kconfigwidgets)
9076 ("kcoreaddons" ,kcoreaddons)
9077 ("kcrash" ,kcrash)
9078 ("kdelibs4support" ,kdelibs4support)
9079 ("kdnssd" ,kdnssd)
9080 ("ki18n" ,ki18n)
9081 ("kxmlgui" ,kxmlgui)
9082 ("libkdegames" ,libkdegames)
9083 ("qtbase" ,qtbase)
9084 ("qtdeclarative" ,qtdeclarative)
9085 ("qtsvg" ,qtsvg)))
9086 (home-page "https://games.kde.org/")
9087 (synopsis "Place 4 pieces in a row")
9088 (description "KFourInLine is a board game for two players based on the
9089Connect-Four game.
9090
9091KFourInLine is a game where two players take turns dropping pieces into a
9092grid, the winner being the first to place four pieces in a line.
9093
9094This package is part of the KDE games module.")
9095 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
9096
9097(define-public kblackbox
9098 (package
9099 (name "kblackbox")
9100 (version "19.08.3")
9101 (source
9102 (origin
9103 (method url-fetch)
9104 (uri (string-append "mirror://kde/stable/applications/" version
9105 "/src/kblackbox-" version ".tar.xz"))
9106 (sha256
9107 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
9108 (build-system qt-build-system)
9109 (native-inputs
9110 `(("extra-cmake-modules" ,extra-cmake-modules)
9111 ("kdoctools" ,kdoctools)))
9112 (inputs
9113 `(("karchive" ,karchive)
9114 ("kcompletion" ,kcompletion)
9115 ("kconfig" ,kconfig)
9116 ("kcoreaddons" ,kcoreaddons)
9117 ("kcrash" ,kcrash)
9118 ("kdbusaddons" ,kdbusaddons)
9119 ("ki18n" ,ki18n)
9120 ("ktextwidgets" ,ktextwidgets)
9121 ("kxmlgui" ,kxmlgui)
9122 ("libkdegames" ,libkdegames)
9123 ("qtbase" ,qtbase)
9124 ("qtdeclarative" ,qtdeclarative)
9125 ("qtsvg" ,qtsvg)))
9126 (home-page "https://games.kde.org/")
9127 (synopsis "Find atoms in a grid by shooting electrons")
9128 (description "KBlackbox is a game of hide and seek played on a grid of
9129boxes where the computer has hidden several balls. The position of the hidden
9130balls can be deduced by shooting beams into the box
9131
9132KBlackBox is a game of hide and seek played on an grid of boxes, where the
9133player shoots rays into the grid to deduce the positions of hidden objects.
9134
9135This package is part of the KDE games module.")
9136 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
9137
9138(define-public knetwalk
9139 (package
9140 (name "knetwalk")
9141 (version "19.08.3")
9142 (source
9143 (origin
9144 (method url-fetch)
9145 (uri (string-append "mirror://kde/stable/applications/" version
9146 "/src/knetwalk-" version ".tar.xz"))
9147 (sha256
9148 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
9149 (build-system qt-build-system)
9150 (native-inputs
9151 `(("extra-cmake-modules" ,extra-cmake-modules)
9152 ("kdoctools" ,kdoctools)))
9153 (inputs
9154 `(("kcompletion" ,kcompletion)
9155 ("kconfig" ,kconfig)
9156 ("kconfigwidgets" ,kconfigwidgets)
9157 ("kcoreaddons" ,kcoreaddons)
9158 ("kcrash" ,kcrash)
9159 ("kdbusaddons" ,kdbusaddons)
9160 ("ki18n" ,ki18n)
9161 ("ktextwidgets" ,ktextwidgets)
9162 ("kwidgetsaddons" ,kwidgetsaddons)
9163 ("kxmlgui" ,kxmlgui)
9164 ("libkdegames" ,libkdegames)
9165 ("qtbase" ,qtbase)
9166 ("qtdeclarative" ,qtdeclarative)))
9167 (home-page "https://games.kde.org/")
9168 (synopsis "Turn the board pieces to get all computers connected")
9169 (description "KNetWalk is a small game where you have to build up a
9170computer network by rotating the wires to connect the terminals to the server.
9171When the network is build, a highscore-list comes up where competitions can be
9172fought out.
9173
9174KNetwalk is a puzzle game where the player arranges sections of wire to
9175connect all the computers on the board.
9176
9177This package is part of the KDE games module.")
9178 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
9179
9180(define-public bomber
9181 (package
9182 (name "bomber")
9183 (version "19.08.3")
9184 (source
9185 (origin
9186 (method url-fetch)
9187 (uri (string-append "mirror://kde/stable/applications/" version
9188 "/src/bomber-" version ".tar.xz"))
9189 (sha256
9190 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
9191 (build-system qt-build-system)
9192 (native-inputs
9193 `(("extra-cmake-modules" ,extra-cmake-modules)
9194 ("kdoctools" ,kdoctools)))
9195 (inputs
9196 `(("kcompletiom" ,kcompletion)
9197 ("kconfig" ,kconfig)
9198 ("kcoreaddons" ,kcoreaddons)
9199 ("kcrash" ,kcrash)
9200 ("kdbusaddons" ,kdbusaddons)
9201 ("ki18n" ,ki18n)
9202 ("kxmlgui" ,kxmlgui)
9203 ("libkdegames" ,libkdegames)
9204 ("qtbase" ,qtbase)
9205 ("qtdeclarative" ,qtdeclarative)))
9206 (home-page "https://games.kde.org/")
9207 (synopsis "Arcade bombing game")
9208 (description "Bomber is a single player arcade game.
9209
9210The player is invading various cities in a plane that is decreasing in height.
9211The goal of the game is to destroy all the buildings and advance to the next
9212level. Each level gets a bit harder by increasing the speed of the plane and
9213the height of the buildings.
9214
9215Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9216below you. Each pass the spaceship makes, it gets lower and lower. If you've
9217not destroyed a building in your path, you will crash into it.
9218
9219This package is part of the KDE games module.")
9220 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
9221
9222(define-public granatier
9223 (package
9224 (name "granatier")
9225 (version "19.08.3")
9226 (source
9227 (origin
9228 (method url-fetch)
9229 (uri (string-append "mirror://kde/stable/applications/" version
9230 "/src/granatier-" version ".tar.xz"))
9231 (sha256
9232 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
9233 (build-system qt-build-system)
9234 (native-inputs
9235 `(("extra-cmake-modules" ,extra-cmake-modules)
9236 ("kdoctools" ,kdoctools)))
9237 (inputs
9238 `(("kcompletion" ,kcompletion)
9239 ("kconfig" ,kconfig)
9240 ("kconfigwidgets" ,kconfigwidgets)
9241 ("kcoreaddons" ,kcoreaddons)
9242 ("kcrash" ,kcrash)
9243 ("kdbusaddons" ,kdbusaddons)
9244 ("ki18n" ,ki18n)
9245 ("knewstuff" ,knewstuff)
9246 ("kwidgetsaddons" ,kwidgetsaddons)
9247 ("kxmlgui" ,kxmlgui)
9248 ("libkdegames" ,libkdegames)
9249 ("qtbase" ,qtbase)
9250 ("qtdeclarative" ,qtdeclarative)
9251 ("qtsvg" ,qtsvg)))
9252 (home-page "https://games.kde.org/")
9253 (synopsis "Bomberman clone")
9254 (description "Granatier is a clone of the classic Bomberman game,
9255inspired by the work of the Clanbomber clone.
9256
9257This package is part of the KDE games module.")
9258 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
9259
9260(define-public ksirk
9261 (package
9262 (name "ksirk")
9263 (version "19.08.3")
9264 (source
9265 (origin
9266 (method url-fetch)
9267 (uri (string-append "mirror://kde/stable/applications/" version
9268 "/src/ksirk-" version ".tar.xz"))
9269 (sha256
9270 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
9271 (build-system qt-build-system)
9272 (native-inputs
9273 `(("extra-cmake-modules" ,extra-cmake-modules)
9274 ("kdoctools" ,kdoctools)))
9275 (inputs
9276 `(("kcrash" ,kcrash)
9277 ("ki18n" ,ki18n)
9278 ("kiconthemes" ,kiconthemes)
9279 ("kio" ,kio)
9280 ("knewstuff" ,knewstuff)
9281 ("kwallet" ,kwallet)
9282 ("kxmlgui" ,kxmlgui)
9283 ("libkdegames" ,libkdegames)
9284 ("phonon" ,phonon)
9285 ("qca" ,qca)
9286 ("qtbase" ,qtbase)
9287 ("qtdeclarative" ,qtdeclarative)
9288 ("qtsvg" ,qtsvg)
9289 ("zlib" ,zlib)))
9290 (home-page "https://games.kde.org/")
9291 (synopsis "Computerized version of the well known strategy board game
9292'Risk'")
9293 (description "KsirK is a multi-player network-enabled game. The goal of
9294the game is simply to conquer the world by attacking your neighbors with your
9295armies.
9296
9297At the beginning of the game, countries are distributed to all the players.
9298Each country contains one army represented by an infantryman. Each player has
9299some armies to distribute to his countries. On each turn, each player can
9300attack his neighbours, eventually conquering one or more countries. At the
9301end of each turn, some bonus armies are distributed to the players in function
9302of the number of countries they own. The winner is the player that conquered
9303all the world.
9304
9305Features:
9306@itemize
9307@item Support for 1-6 human or computer players
9308@item Multi-player gaming over a network
9309@item You can easily create new skins with SVG graphics and the skin editor
9310@item Hot New Stuff support. You can easily download and install new skins
9311@end itemize
9312
9313This package is part of the KDE games module.")
9314 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
9315
9316(define-public palapeli
9317 (package
9318 (name "palapeli")
9319 (version "19.08.3")
9320 (source
9321 (origin
9322 (method url-fetch)
9323 (uri (string-append "mirror://kde/stable/applications/" version
9324 "/src/palapeli-" version ".tar.xz"))
9325 (sha256
9326 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
9327 (build-system qt-build-system)
9328 (native-inputs
9329 `(("extra-cmake-modules" ,extra-cmake-modules)
9330 ("kdoctools" ,kdoctools)))
9331 (inputs
9332 `(("karchive" ,karchive)
9333 ("kcompletion" ,kcompletion)
9334 ("kconfig" ,kconfig)
9335 ("kconfigwidgets" ,kconfigwidgets)
9336 ("kcoreaddons" ,kcoreaddons)
9337 ("kcrash" ,kcrash)
9338 ("kcrash" ,kcrash)
9339 ("ki18n" ,ki18n)
9340 ("ki18n" ,ki18n)
9341 ("kio" ,kio)
9342 ("kitemviews" ,kitemviews)
9343 ("knotifications" ,knotifications)
9344 ("kservice" ,kservice)
9345 ("kwidgetsaddons" ,kwidgetsaddons)
9346 ("kxmlgui" ,kxmlgui)
9347 ("libkdegames" ,libkdegames)
9348 ("qtbase" ,qtbase)
9349 ("qtdeclarative" ,qtdeclarative)
9350 ("qtsvg" ,qtsvg)
9351 ("shared-mime-info" ,shared-mime-info)))
9352 (home-page "https://games.kde.org/")
9353 (synopsis "Jigsaw puzzle game")
9354 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9355that genre, you are not limited to aligning pieces on imaginary grids. The
9356pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9357everything you do is saved on your disk immediately.
9358
9359Palapeli is the Finnish word for jigsaw puzzle.
9360
9361This package is part of the KDE games module.")
9362 (license license:gpl2+)))
bf6bfdbe
HG
9363
9364(define-public kiriki
9365 (package
9366 (name "kiriki")
9367 (version "19.08.3")
9368 (source
9369 (origin
9370 (method url-fetch)
9371 (uri (string-append "mirror://kde/stable/applications/" version
9372 "/src/kiriki-" version ".tar.xz"))
9373 (sha256
9374 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
9375 (build-system qt-build-system)
9376 (native-inputs
9377 `(("extra-cmake-modules" ,extra-cmake-modules)
9378 ("kdoctools" ,kdoctools)))
9379 (inputs
9380 `(("kcompletion" ,kcompletion)
9381 ("kconfig" ,kconfig)
9382 ("kconfigwidgets" ,kconfigwidgets)
9383 ("kcoreaddons" ,kcoreaddons)
9384 ("kcrash" ,kcrash)
9385 ("kdbusaddons" ,kdbusaddons)
9386 ("ki18n" ,ki18n)
9387 ("kiconthemes" ,kiconthemes)
9388 ("kxmlgui" ,kxmlgui)
9389 ("libkdegames" ,libkdegames)
9390 ("qtbase" ,qtbase)
9391 ("qtdeclarative" ,qtdeclarative)))
9392 (home-page "https://games.kde.org/")
9393 (synopsis "Yahtzee dice game")
9394 (description "Kiriki is an addictive and fun dice game, designed to be
9395played by as many as six players.
9396
9397Participants have to collect points by rolling five dice for up to three times
9398per single turn to make combinations with the highest score.
9399
9400This package is part of the KDE games module.")
9401 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
9402
9403(define-public kigo
9404 (package
9405 (name "kigo")
9406 (version "19.08.3")
9407 (source
9408 (origin
9409 (method url-fetch)
9410 (uri (string-append "mirror://kde/stable/applications/" version
9411 "/src/kigo-" version ".tar.xz"))
9412 (sha256
9413 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
9414 (build-system qt-build-system)
9415 (native-inputs
9416 `(("extra-cmake-modules" ,extra-cmake-modules)
9417 ("kdoctools" ,kdoctools)))
9418 (inputs
9419 `(("kconfig" ,kconfig)
9420 ("kconfigwidgets" ,kconfigwidgets)
9421 ("kcoreaddons" ,kcoreaddons)
9422 ("kcrash" ,kcrash)
9423 ("kdbusaddons" ,kdbusaddons)
9424 ("ki18n" ,ki18n)
9425 ("kio" ,kio)
9426 ("knewstuff", knewstuff)
9427 ("ktextwidgets" ,ktextwidgets)
9428 ("kxmlgui" ,kxmlgui)
9429 ("libkdegames" ,libkdegames)
9430 ("qtbase" ,qtbase)
9431 ("qtdeclarative" ,qtdeclarative)
9432 ("qtsvg" ,qtsvg)))
9433 (home-page "https://games.kde.org/")
9434 (synopsis "Go board game")
9435 (description "Kigo is an open-source implementation of the popular Go
9436game.
9437
9438Go is a strategic board game for two players. It is also known as
9439igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9440for being rich in strategic complexity despite its simple rules. The game is
9441played by two players who alternately place black and white stones (playing
9442pieces, now usually made of glass or plastic) on the vacant intersections of a
9443grid of 19x19 lines (9x9 or 13x13 for easier games).
9444
9445You also need to install a go engine, e.g. @code{gnugo}.
9446
9447This package is part of the KDE games module.")
9448 (license license:gpl3+)))
90e594d3
HG
9449
9450(define-public kubrick
9451 (package
9452 (name "kubrick")
9453 (version "19.08.3")
9454 (source
9455 (origin
9456 (method url-fetch)
9457 (uri (string-append "mirror://kde/stable/applications/" version
9458 "/src/kubrick-" version ".tar.xz"))
9459 (sha256
9460 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
9461 (build-system qt-build-system)
9462 (native-inputs
9463 `(("extra-cmake-modules" ,extra-cmake-modules)
9464 ("kdoctools" ,kdoctools)))
9465 (inputs
9466 `(("glu" ,glu)
9467 ("kconfig" ,kconfig)
9468 ("kconfigwidgets" ,kconfigwidgets)
9469 ("kcoreaddons" ,kcoreaddons)
9470 ("kcrash" ,kcrash)
9471 ("ki18n" ,ki18n)
9472 ("kio" ,kio)
9473 ("kwidgetsaddons" ,kwidgetsaddons)
9474 ("kxmlgui" ,kxmlgui)
9475 ("libkdegames" ,libkdegames)
9476 ("qtbase" ,qtbase)
9477 ("qtdeclarative" ,qtdeclarative)
9478 ("qtsvg" ,qtsvg)))
9479 (home-page "https://games.kde.org/")
9480 (synopsis "Game based on Rubik's Cube")
9481 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9482
9483The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9484\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9485selection of puzzles at several levels of difficulty, as well as demos of
9486pretty patterns and solution moves, or you can make up your own puzzles. The
9487game has unlimited undo, redo, save and reload capabilities.
9488
9489This package is part of the KDE games module.")
9490 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9491
9492(define-public lskat
9493 (package
9494 (name "lskat")
9495 (version "19.08.3")
9496 (source
9497 (origin
9498 (method url-fetch)
9499 (uri (string-append "mirror://kde/stable/applications/" version
9500 "/src/lskat-" version ".tar.xz"))
9501 (sha256
9502 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
9503 (build-system qt-build-system)
9504 (native-inputs
9505 `(("extra-cmake-modules" ,extra-cmake-modules)
9506 ("kdoctools" ,kdoctools)))
9507 (inputs
9508 `(("kcompletion" ,kcompletion)
9509 ("kconfig" ,kconfig)
9510 ("kcoreaddons" ,kcoreaddons)
9511 ("kcrash" ,kcrash)
9512 ("kguiaddons" ,kguiaddons)
9513 ("ki18n" ,ki18n)
9514 ("kwidgetsaddons" ,kwidgetsaddons)
9515 ("kxmlgui" ,kxmlgui)
9516 ("libkdegames" ,libkdegames)
9517 ("qtbase" ,qtbase)
9518 ("qtdeclarative" ,qtdeclarative)
9519 ("qtsvg" ,qtsvg)))
9520 (home-page "https://games.kde.org/")
9521 (synopsis "Lieutnant Skat card game")
9522 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9523engaging card game for two players, where the second player is either live
9524opponent, or a built in artificial intelligence.
9525
9526Lieutnant Skat is a simplified variant of the Skat card game for two players.
9527
9528This package is part of the KDE games module.")
9529 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9530
9531(define-public kapman
9532 (package
9533 (name "kapman")
9534 (version "19.08.3")
9535 (source
9536 (origin
9537 (method url-fetch)
9538 (uri (string-append "mirror://kde/stable/applications/" version
9539 "/src/kapman-" version ".tar.xz"))
9540 (sha256
9541 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
9542 (build-system qt-build-system)
9543 (native-inputs
9544 `(("extra-cmake-modules" ,extra-cmake-modules)
9545 ("kdoctools" ,kdoctools)))
9546 (inputs
9547 `(("kcompletion" ,kcompletion)
9548 ("kconfig" ,kconfig)
9549 ("kconfigwidgets" ,kconfigwidgets)
9550 ("kcoreaddons" ,kcoreaddons)
9551 ("kcrash" ,kcrash)
9552 ("kdbusaddons" ,kdbusaddons)
9553 ("ki18n" ,ki18n)
9554 ("kxmlgui" ,kxmlgui)
9555 ("libkdegames" ,libkdegames)
9556 ("qtbase" ,qtbase)
9557 ("qtdeclarative" ,qtdeclarative)
9558 ("qtsvg" ,qtsvg)))
9559 (home-page "https://games.kde.org/")
9560 (synopsis "Pac-Man clone")
9561 (description "Kapman is a clone of the well known game Pac-Man.
9562
9563You must run through the maze to eat all pills without being captured by a
9564ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9565few seconds. When a stage is cleared of pills and energizer the player is
9566taken to the next stage with slightly increased game speed
9567
9568This package is part of the KDE games module.")
9569 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9570
9571(define-public kspaceduel
9572 (package
9573 (name "kspaceduel")
9574 (version "19.08.3")
9575 (source
9576 (origin
9577 (method url-fetch)
9578 (uri (string-append "mirror://kde/stable/applications/" version
9579 "/src/kspaceduel-" version ".tar.xz"))
9580 (sha256
9581 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
9582 (build-system qt-build-system)
9583 (native-inputs
9584 `(("extra-cmake-modules" ,extra-cmake-modules)
9585 ("kdoctools" ,kdoctools)))
9586 (inputs
9587 `(("kcompletion" ,kcompletion)
9588 ("kconfig" ,kconfig)
9589 ("kconfigwidgets" ,kconfigwidgets)
9590 ("kcoreaddons" ,kcoreaddons)
9591 ("kcrash" ,kcrash)
9592 ("kdbusaddons" ,kdbusaddons)
9593 ("ki18n" ,ki18n)
9594 ("kxmlgui" ,kxmlgui)
9595 ("libkdegames" ,libkdegames)
9596 ("qtbase" ,qtbase)
9597 ("qtdeclarative" ,qtdeclarative)
9598 ("qtsvg" ,qtsvg)))
9599 (home-page "https://games.kde.org/")
9600 (synopsis "Two player game with shooting spaceships flying around a sun")
9601 (description "KSpaceduel is a space battle game for one or two players,
9602where two ships fly around a star in a struggle to be the only survivor.
9603
9604This package is part of the KDE games module.")
9605 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9606
9607(define-public bovo
9608 (package
9609 (name "bovo")
9610 (version "19.08.3")
9611 (source
9612 (origin
9613 (method url-fetch)
9614 (uri (string-append "mirror://kde/stable/applications/" version
9615 "/src/bovo-" version ".tar.xz"))
9616 (sha256
9617 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
9618 (build-system qt-build-system)
9619 (native-inputs
9620 `(("extra-cmake-modules" ,extra-cmake-modules)
9621 ("kdoctools" ,kdoctools)))
9622 (inputs
9623 `(("kcompletion" ,kcompletion)
9624 ("kcoreaddons" ,kcoreaddons)
9625 ("kcrash" ,kcrash)
9626 ("kdbusaddons" ,kdbusaddons)
9627 ("ki18n" ,ki18n)
9628 ("kxmlgui" ,kxmlgui)
9629 ("libkdegames" ,libkdegames)
9630 ("qtbase" ,qtbase)
9631 ("qtdeclarative" ,qtdeclarative)
9632 ("qtsvg" ,qtsvg)))
9633 (home-page "https://games.kde.org/")
9634 (synopsis "Classic pen and paper game: five in a line")
9635 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9636points\") like game for two players, where the opponents alternate in placing
9637their respective pictogram on the game board. The winner is the first to
9638complete a line of five markers. (Also known as: Connect Five, Five in a row,
9639X and O, Naughts and Crosses)
9640
9641This package is part of the KDE games module.")
9642 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9643
9644(define-public killbots
9645 (package
9646 (name "killbots")
9647 (version "19.08.3")
9648 (source
9649 (origin
9650 (method url-fetch)
9651 (uri (string-append "mirror://kde/stable/applications/" version
9652 "/src/killbots-" version ".tar.xz"))
9653 (sha256
9654 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
9655 (build-system qt-build-system)
9656 (native-inputs
9657 `(("extra-cmake-modules" ,extra-cmake-modules)
9658 ("kdoctools" ,kdoctools)))
9659 (inputs
9660 `(("kcompletion" ,kcompletion)
9661 ("kconfig" ,kconfig)
9662 ("kconfigwidgets" ,kconfigwidgets)
9663 ("kcoreaddons" ,kcoreaddons)
9664 ("kcrash" ,kcrash)
9665 ("kdbusaddons" ,kdbusaddons)
9666 ("ki18n" ,ki18n)
9667 ("kwidgetsaddons" ,kwidgetsaddons)
9668 ("kxmlgui" ,kxmlgui)
9669 ("libkdegames" ,libkdegames)
9670 ("qtbase" ,qtbase)
9671 ("qtdeclarative" ,qtdeclarative)))
9672 (home-page "https://games.kde.org/")
9673 (synopsis "Port of the classic BSD console game robots")
9674 (description "Killbots is a simple game of evading killer robots.
9675
9676Who created the robots and why they have been programmed to destroy, no one
9677knows. All that is known is that the robots are numerous and their sole
9678objective is to destroy you. Fortunately for you, their creator has focused
9679on quantity rather than quality and as a result the robots are severely
9680lacking in intelligence. Your superior wit and a fancy teleportation device
9681are your only weapons against the never-ending stream of mindless automatons.
9682
9683This package is part of the KDE games module.")
9684 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9685
9686(define-public ksnakeduel
9687 (package
9688 (name "ksnakeduel")
9689 (version "19.08.3")
9690 (source
9691 (origin
9692 (method url-fetch)
9693 (uri (string-append "mirror://kde/stable/applications/" version
9694 "/src/ksnakeduel-" version ".tar.xz"))
9695 (sha256
9696 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
9697 (build-system qt-build-system)
9698 (native-inputs
9699 `(("extra-cmake-modules" ,extra-cmake-modules)
9700 ("kdoctools" ,kdoctools)))
9701 (inputs
9702 `(("kcompletion" ,kcompletion)
9703 ("kconfig" ,kconfig)
9704 ("kconfigwidgets" ,kconfigwidgets)
9705 ("kcoreaddons" ,kcoreaddons)
9706 ("kcrash" ,kcrash)
9707 ("kdbusaddons" ,kdbusaddons)
9708 ("kguiaddons" ,kguiaddons)
9709 ("ki18n" ,ki18n)
9710 ("kxmlgui" ,kxmlgui)
9711 ("libkdegames" ,libkdegames)
9712 ("qtbase" ,qtbase)
9713 ("qtdeclarative" ,qtdeclarative)
9714 ("qtsvg" ,qtsvg)))
9715 (home-page "https://games.kde.org/")
9716 (synopsis "Snake race played against the computer")
9717 (description "KSnakeDuel is a fast action game where you steer a snake
9718which has to eat food. While eating the snake grows. But once a player
9719collides with the other snake or the wall the game is lost. This becomes of
9720course more and more difficult the longer the snakes grow.
9721
9722This package is part of the KDE games module.")
9723 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9724
9725(define-public kollision
9726 (package
9727 (name "kollision")
9728 (version "19.08.3")
9729 (source
9730 (origin
9731 (method url-fetch)
9732 (uri (string-append "mirror://kde/stable/applications/" version
9733 "/src/kollision-" version ".tar.xz"))
9734 (sha256
9735 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
9736 (build-system qt-build-system)
9737 (native-inputs
9738 `(("extra-cmake-modules" ,extra-cmake-modules)
9739 ("kdoctools" ,kdoctools)))
9740 (inputs
9741 `(("kcompletion" ,kcompletion)
9742 ("kconfig" ,kconfig)
9743 ("kcoreaddons" ,kcoreaddons)
9744 ("kcrash" ,kcrash)
9745 ("kdbusaddons" ,kdbusaddons)
9746 ("ki18n" ,ki18n)
9747 ("kwidgetsaddons" ,kwidgetsaddons)
9748 ("kxmlgui" ,kxmlgui)
9749 ("libkdegames" ,libkdegames)
9750 ("qtbase" ,qtbase)
9751 ("qtdeclarative" ,qtdeclarative)))
9752 (home-page "https://games.kde.org/")
9753 (synopsis "Simple ball dodging game")
9754 (description "In Kollision you use mouse to control a small blue ball in a
9755closed space environment filled with small red balls, which move about
9756chaotically. Your goal is to avoid touching any of those red balls with your
9757blue one, because the moment you do the game will be over. The longer you can
9758stay in game the higher will your score be.
9759
9760This package is part of the KDE games module.")
9761 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9762
9763(define-public knavalbattle
9764 (package
9765 (name "knavalbattle")
9766 (version "19.08.3")
9767 (source
9768 (origin
9769 (method url-fetch)
9770 (uri (string-append "mirror://kde/stable/applications/" version
9771"/src/knavalbattle-" version ".tar.xz"))
9772 (sha256
9773 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
9774 (build-system qt-build-system)
9775 (native-inputs
9776 `(("extra-cmake-modules" ,extra-cmake-modules)
9777 ("kdoctools" ,kdoctools)))
9778 (inputs
9779 `(("kauth" ,kauth)
9780 ("kcompletion" ,kcompletion)
9781 ("kconfig" ,kconfig)
9782 ("kconfigwidgets" ,kconfigwidgets)
9783 ("kcoreaddons" ,kcoreaddons)
9784 ("kcrash" ,kcrash)
9785 ("kdbusaddons" ,kdbusaddons)
9786 ("kdnssd" ,kdnssd)
9787 ("ki18n" ,ki18n)
9788 ("ktextwidgets" ,ktextwidgets)
9789 ("kxmlgui" ,kxmlgui)
9790 ("libkdegames" ,libkdegames)
9791 ("qtbase" ,qtbase)
9792 ("qtdeclarative" ,qtdeclarative)))
9793 (home-page "https://games.kde.org/")
9794 (synopsis "Battleship board game with built-in game server")
9795 (description "KBattleship is a Battle Ship game for KDE.
9796
9797Ships are placed on a board which represents the sea. Players try to hit each
9798others ships in turns without knowing where they are placed. The first player
9799to destroy all ships wins the game.
9800
9801This package is part of the KDE games module.")
9802 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
9803
9804(define-public kreversi
9805 (package
9806 (name "kreversi")
9807 (version "19.08.3")
9808 (source
9809 (origin
9810 (method url-fetch)
9811 (uri (string-append "mirror://kde/stable/applications/" version
9812"/src/kreversi-" version ".tar.xz"))
9813 (sha256
9814 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
9815 (build-system qt-build-system)
9816 (native-inputs
9817 `(("extra-cmake-modules" ,extra-cmake-modules)
9818 ("kdoctools" ,kdoctools)))
9819 (inputs
9820 `(("kconfig" ,kconfig)
9821 ("kconfigwidgets" ,kconfigwidgets)
9822 ("kcoreaddons" ,kcoreaddons)
9823 ("kcrash" ,kcrash)
9824 ("kdbusaddons" ,kdbusaddons)
9825 ("kdeclarative" ,kdeclarative)
9826 ("ki18n" ,ki18n)
9827 ("kiconthemes" ,kiconthemes)
9828 ("kio" ,kio)
9829 ("kxmlgui" ,kxmlgui)
9830 ("libkdegames" ,libkdegames)
9831 ("qtbase" ,qtbase)
9832 ("qtdeclarative" ,qtdeclarative)
9833 ("qtsvg" ,qtsvg)))
9834 (home-page "https://games.kde.org/")
9835 (synopsis "Old reversi board game, also known as othello")
9836 (description "KReversi is a simple one player strategy game played
9837against the computer.
9838
9839If a player's piece is captured by an opposing player, that piece is turned
9840over to reveal the color of that player. A winner is declared when one player
9841has more pieces of his own color on the board and there are no more possible
9842moves.
9843
9844This package is part of the KDE games module.")
9845 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
9846
9847(define-public ksquares
9848 (package
9849 (name "ksquares")
9850 (version "19.08.3")
9851 (source
9852 (origin
9853 (method url-fetch)
9854 (uri (string-append "mirror://kde/stable/applications/" version
9855 "/src/ksquares-" version ".tar.xz"))
9856 (sha256
9857 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
9858 (build-system qt-build-system)
9859 (native-inputs
9860 `(("extra-cmake-modules" ,extra-cmake-modules)
9861 ("kdoctools" ,kdoctools)))
9862 (inputs
9863 `(("kcompletion" ,kcompletion)
9864 ("kconfig" ,kconfig)
9865 ("kconfigwidgets" ,kconfigwidgets)
9866 ("kcoreaddons" ,kcoreaddons)
9867 ("kcrash" ,kcrash)
9868 ("kdbusaddons" ,kdbusaddons)
9869 ("ki18n" ,ki18n)
9870 ("kwidgetsaddons" ,kwidgetsaddons)
9871 ("kxmlgui" ,kxmlgui)
9872 ("libkdegames" ,libkdegames)
9873 ("qtbase" ,qtbase)
9874 ("qtdeclarative" ,qtdeclarative)))
9875 (home-page "https://games.kde.org/")
9876 (synopsis "Dots and Boxes game")
9877 (description "KSquares is an implementation of the popular paper based
9878game Squares. Two players take turns connecting dots on a grid to complete
9879squares, the player with the most squares wins.
9880
9881This package is part of the KDE games module.")
9882 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
9883
9884(define-public kjumpingcube
9885 (package
9886 (name "kjumpingcube")
9887 (version "19.08.3")
9888 (source
9889 (origin
9890 (method url-fetch)
9891 (uri (string-append "mirror://kde/stable/applications/" version
9892 "/src/kjumpingcube-" version ".tar.xz"))
9893 (sha256
9894 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
9895 (build-system qt-build-system)
9896 (native-inputs
9897 `(("extra-cmake-modules" ,extra-cmake-modules)
9898 ("kdoctools" ,kdoctools)))
9899 (inputs
9900 `(("kconfig" ,kconfig)
9901 ("kconfigwidgets" ,kconfigwidgets)
9902 ("kcoreaddons" ,kcoreaddons)
9903 ("kcrash" ,kcrash)
9904 ("kdbusaddons" ,kdbusaddons)
9905 ("ki18n" ,ki18n)
9906 ("kio" ,kio)
9907 ("kwidgetsaddons" ,kwidgetsaddons)
9908 ("kxmlgui" ,kxmlgui)
9909 ("libkdegames" ,libkdegames)
9910 ("qtbase" ,qtbase)
9911 ("qtdeclarative" ,qtdeclarative)
9912 ("qtsvg" ,qtsvg)))
9913 (home-page "https://games.kde.org/")
9914 (synopsis "Simple tactical game for number-crunchers")
9915 (description "KJumpingcube is a simple tactical game for one or two
9916players, played on a grid of numbered squares. Each turn, players compete for
9917control of the board by capturing or adding to one square.
9918
9919This package is part of the KDE games module.")
9920 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
9921
9922(define-public xmoto
9923 (package
9924 (name "xmoto")
9925 (version "0.5.11")
9926 (source
9927 (origin
9928 (method url-fetch)
9929 (uri (string-append
9930 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9931 "xmoto-" version "-src.tar.gz"))
9932 (sha256
9933 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9934 (patches
9935 (search-patches
9936 "xmoto-remove-glext.patch" ;fixes licensing issue
9937 "xmoto-reproducible.patch"
9938 "xmoto-utf8.patch"))
9939 ;; Unbundle ODE.
9940 (modules '((guix build utils)))
9941 (snippet
9942 `(begin
9943 (delete-file-recursively "src/ode")
9944 #t))))
9945 (build-system gnu-build-system)
9946 (arguments
9947 ;; XXX: First flag prevents a build error with GCC7+. The second
9948 ;; flag works around missing text in game. Both are fixed
9949 ;; upstream. Remove once xmoto 0.5.12+ is released.
9950 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9951 #:phases
9952 (modify-phases %standard-phases
9953 (add-after 'install 'install-desktop-file
9954 (lambda* (#:key outputs #:allow-other-keys)
9955 (let* ((out (assoc-ref outputs "out"))
9956 (apps (string-append out "/share/applications"))
9957 (pixmaps (string-append out "/share/pixmaps")))
9958 (install-file "extra/xmoto.desktop" apps)
9959 (install-file "extra/xmoto.xpm" pixmaps)
9960 #t)))
9961 (add-after 'install-desktop-file 'install-fonts
9962 (lambda* (#:key outputs inputs #:allow-other-keys)
9963 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9964 "/share/fonts/truetype/"))
9965 (target-dir (string-append (assoc-ref outputs "out")
9966 "/share/xmoto/Textures/Fonts/")))
9967 (for-each (lambda (f)
9968 (let ((font (string-append font-dir f))
9969 (target (string-append target-dir f)))
9970 (delete-file target)
9971 (symlink font target)))
9972 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9973 #t)))
9974 (add-after 'install-fonts 'install-man-page
9975 (lambda* (#:key outputs #:allow-other-keys)
9976 (install-file "xmoto.6"
9977 (string-append (assoc-ref outputs "out")
9978 "/share/man/man6"))
9979 #t)))))
9980 (native-inputs
9981 `(("gettext" ,gettext-minimal)))
9982 (inputs
9983 `(("curl" ,curl)
9984 ("font-dejavu" ,font-dejavu)
9985 ("glu" ,glu)
4bd428a7 9986 ("libjpeg" ,libjpeg-turbo)
40d2bddd
NG
9987 ("libpng" ,libpng)
9988 ("libxdg-basedir" ,libxdg-basedir)
9989 ("libxml2" ,libxml2)
9990 ("lua" ,lua-5.2)
9991 ("ode" ,ode)
9992 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
9993 ("sqlite" ,sqlite)
9994 ("zlib" ,zlib)))
9995 (home-page "https://xmoto.tuxfamily.org/")
9996 (synopsis "2D motocross platform game")
af4796d5
NG
9997 (description "X-Moto is a challenging 2D motocross platform game, where
9998physics play an all important role in the gameplay. You need to control your
9999bike to its limit, if you want to have a chance finishing the more difficult
10000challenges.")
40d2bddd
NG
10001 (license (list license:gpl2+ ;whole project
10002 license:bsd-4 ;src/bzip
10003 license:bsd-3 ;src/md5sum
10004 license:lgpl2.1+ ;src/iqsort.h
10005 license:expat))))
371ca8ca
GLV
10006
10007(define-public eboard
10008 (package
10009 (name "eboard")
10010 (version "1.1.3")
10011 (source
10012 (origin
10013 (method git-fetch)
10014 (uri (git-reference
10015 (url "https://github.com/fbergo/eboard.git")
10016 (commit (string-append "v" version))))
10017 (file-name (git-file-name name version))
10018 (sha256
10019 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10020 (build-system gnu-build-system)
10021 (native-inputs
10022 `(("perl" ,perl)
10023 ("pkg-config" ,pkg-config)))
10024 (inputs
10025 `(("gtk+" ,gtk+-2)
10026 ("libpng" ,libpng)
10027 ("gstreamer" ,gstreamer)))
10028 (arguments
10029 `(#:tests? #f
10030 #:phases
10031 (modify-phases %standard-phases
10032 (replace 'configure
10033 (lambda* (#:key outputs #:allow-other-keys)
10034 (make-file-writable "eboard-config")
10035 (setenv "CC" "gcc")
10036 (invoke "./configure"
10037 (string-append "--prefix=" (assoc-ref outputs "out")))
10038 #t))
10039 (add-before 'install 'make-required-directories
10040 (lambda* (#:key outputs #:allow-other-keys)
10041 (mkdir-p (string-append (assoc-ref outputs "out")
10042 "/share/eboard"))
10043 #t)))))
10044 (synopsis "Graphical user interface to play chess")
10045 (description
10046 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10047and chess engines.")
10048 (home-page "https://www.bergo.eng.br/eboard/")
10049 (license license:gpl2+)))
d8cae6cf
GLV
10050
10051(define-public chessx
10052 (package
10053 (name "chessx")
10054 (version "1.5.0")
10055 (source
10056 (origin
10057 (method url-fetch)
10058 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10059 version "/chessx-" version ".tgz"))
10060 (sha256
10061 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10062 (build-system qt-build-system)
10063 (native-inputs
10064 `(("qttools" ,qttools)))
10065 (inputs
10066 `(("qtbase" ,qtbase)
10067 ("qtmultimedia" ,qtmultimedia)
10068 ("qtsvg" ,qtsvg)
10069 ("zlib" ,zlib)))
10070 (arguments
10071 `(#:tests? #f
10072 #:phases
10073 (modify-phases %standard-phases
10074 (add-after 'unpack 'fix-paths
10075 (lambda* (#:key inputs #:allow-other-keys)
10076 (substitute* "chessx.pro"
10077 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10078 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10079 #t))
10080 (add-after 'fix-paths 'make-qt-deterministic
10081 (lambda _
10082 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10083 #t))
10084 (replace 'configure
10085 (lambda _
10086 (invoke "qmake")
10087 #t))
10088 (replace 'install
10089 (lambda* (#:key outputs #:allow-other-keys)
10090 (let ((out (assoc-ref outputs "out")))
10091 (install-file "release/chessx" (string-append out "/bin"))
10092 (install-file "unix/chessx.desktop"
10093 (string-append out "/share/applications")))
10094 #t)))))
10095 (synopsis "Chess game database")
10096 (description
10097 "ChessX is a chess database. With ChessX you can operate on your
10098collection of chess games in many ways: browse, edit, add, organize, analyze,
10099etc. You can also play games on FICS or against an engine.")
10100 (home-page "http://chessx.sourceforge.net/")
10101 (license license:gpl2+)))
814091ef
GLV
10102
10103(define-public stockfish
10104 (package
10105 (name "stockfish")
10106 (version "11")
10107 (source
10108 (origin
10109 (method git-fetch)
10110 (uri (git-reference
10111 (url "https://github.com/official-stockfish/Stockfish.git")
10112 (commit (string-append "sf_" version))))
10113 (file-name (git-file-name name version))
10114 (sha256
10115 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10116 (build-system gnu-build-system)
10117 (arguments
10118 `(#:tests? #f
10119 #:make-flags (list "-C" "src"
10120 "build"
10121 (string-append "PREFIX="
10122 (assoc-ref %outputs "out"))
10123 (string-append "ARCH="
10124 ,(match (%current-system)
10125 ("x86_64-linux" "x86-64")
10126 ("i686-linux" "x86-32")
10127 ("aarch64-linux" "general-64")
10128 ("armhf-linux" "armv7")
10129 ("mips64el-linux" "general-64")
10130 (_ "general-32"))))
10131 #:phases (modify-phases %standard-phases
10132 (delete 'configure))))
10133 (synopsis "Strong chess engine")
10134 (description
10135 "Stockfish is a very strong chess engines. It is much stronger than the
10136best human chess grandmasters. It can be used with UCI-compatible GUIs like
10137ChessX.")
10138 (home-page "https://stockfishchess.org/")
10139 (license license:gpl3+)))