gnu: java-iq80-snappy: Don't use unstable tarball.
[jackhill/guix/guix.git] / gnu / packages / games.scm
CommitLineData
490c6528
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 John Darrington <jmd@gnu.org>
5edf2f05 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
1a6734ed 4;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
8f33b76e 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
3cf118a1 6;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
bb3b71ce 7;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
e23f2ff1 8;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
ab0c796b 10;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
d7c4619b 11;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
fc936b65 12;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
10d53153 13;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
ca32afac 14;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
eccfa301 15;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
e11b2752 16;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
365950ce 17;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
47956fa0 18;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
e9687748 19;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
4fee5ec0 20;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
aa206271 21;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
560df540 22;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
b3de5ff2 23;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
a56145e1 24;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
42abb842 25;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
75abd864 26;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
4dbc3c2c 27;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
47903653 28;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
bff33e6c 29;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
ee9eafc1 30;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
1be6f488 31;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
a70d06b5 32;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
40d2bddd 33;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
2922852e 34;;; Copyright © 2018 okapi <okapi@firemail.cc>
e402a66b 35;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
e7448859 36;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
39b5d8fd 37;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
f9e5caf9 38;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
a953423a 39;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
26d52476 40;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
60af1822 41;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
1bba3e8c 42;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
08c2fb8f 43;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
3f9a027c 44;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
d24881e4 45;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
299e15c1 46;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
894fbb33 47;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
3c1c5622 48;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
490c6528
JD
49;;;
50;;; This file is part of GNU Guix.
51;;;
52;;; GNU Guix is free software; you can redistribute it and/or modify it
53;;; under the terms of the GNU General Public License as published by
54;;; the Free Software Foundation; either version 3 of the License, or (at
55;;; your option) any later version.
56;;;
57;;; GNU Guix is distributed in the hope that it will be useful, but
58;;; WITHOUT ANY WARRANTY; without even the implied warranty of
59;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60;;; GNU General Public License for more details.
61;;;
62;;; You should have received a copy of the GNU General Public License
63;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
64
65(define-module (gnu packages games)
158f5734 66 #:use-module (ice-9 match)
024e2c17
DT
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix utils)
490c6528
JD
69 #:use-module (guix packages)
70 #:use-module (guix download)
c23c50c7 71 #:use-module (guix git-download)
e11b2752 72 #:use-module (guix svn-download)
bff33e6c 73 #:use-module (guix gexp)
a83c6a64 74 #:use-module (gnu packages)
3307c787 75 #:use-module (gnu packages algebra)
e11b2752 76 #:use-module (gnu packages autotools)
03d521f9 77 #:use-module (gnu packages backup)
7e51e5bc 78 #:use-module (gnu packages base)
b77e3a1c 79 #:use-module (gnu packages build-tools)
11c38cbe 80 #:use-module (gnu packages admin)
f2fac359 81 #:use-module (gnu packages audio)
7e2e1155 82 #:use-module (gnu packages avahi)
1faf0a04 83 #:use-module (gnu packages assembly)
35d5fa76
EF
84 #:use-module (gnu packages bash)
85 #:use-module (gnu packages bison)
a83c6a64 86 #:use-module (gnu packages boost)
35d5fa76
EF
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages cmake)
89 #:use-module (gnu packages compression)
90 #:use-module (gnu packages curl)
706d6190 91 #:use-module (gnu packages crypto)
35d5fa76 92 #:use-module (gnu packages cyrus-sasl)
0b5d078f 93 #:use-module (gnu packages documentation)
dec63df4 94 #:use-module (gnu packages docbook)
e93352d6 95 #:use-module (gnu packages emulators)
35d5fa76 96 #:use-module (gnu packages flex)
d2563973 97 #:use-module (gnu packages fltk)
35d5fa76
EF
98 #:use-module (gnu packages fonts)
99 #:use-module (gnu packages fontutils)
540dd1c8 100 #:use-module (gnu packages freedesktop)
c23c50c7
RW
101 #:use-module (gnu packages fribidi)
102 #:use-module (gnu packages game-development)
940c2c5c 103 #:use-module (gnu packages gcc)
490c6528 104 #:use-module (gnu packages gettext)
9b1ada4e 105 #:use-module (gnu packages ghostscript)
4df9495e 106 #:use-module (gnu packages gimp)
490c6528 107 #:use-module (gnu packages gl)
bf0018cd 108 #:use-module (gnu packages glib)
490c6528 109 #:use-module (gnu packages gnome)
35d5fa76 110 #:use-module (gnu packages gnuzilla)
9b1ada4e 111 #:use-module (gnu packages gperf)
aac1aa75 112 #:use-module (gnu packages graphics)
35d5fa76 113 #:use-module (gnu packages gstreamer)
490c6528
JD
114 #:use-module (gnu packages gtk)
115 #:use-module (gnu packages guile)
1abe2e2a
NG
116 #:use-module (gnu packages haskell)
117 #:use-module (gnu packages haskell-crypto)
dddbc90c 118 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
119 #:use-module (gnu packages icu4c)
120 #:use-module (gnu packages image)
0b5d078f 121 #:use-module (gnu packages imagemagick)
3c1c5622
HG
122 #:use-module (gnu packages kde)
123 #:use-module (gnu packages kde-frameworks)
3bd0d186 124 #:use-module (gnu packages less)
bf0018cd 125 #:use-module (gnu packages libcanberra)
721e1987 126 #:use-module (gnu packages libedit)
67fa7a27 127 #:use-module (gnu packages libunwind)
35d5fa76 128 #:use-module (gnu packages linux)
fdd9ab37 129 #:use-module (gnu packages llvm)
35d5fa76 130 #:use-module (gnu packages lua)
a9249f58
KK
131 #:use-module (gnu packages man)
132 #:use-module (gnu packages maths)
c23c50c7 133 #:use-module (gnu packages mp3)
26a657f0 134 #:use-module (gnu packages music)
dc70ff2a 135 #:use-module (gnu packages multiprecision)
3cf118a1 136 #:use-module (gnu packages ncurses)
9b1ada4e 137 #:use-module (gnu packages netpbm)
162a4a03 138 #:use-module (gnu packages networking)
b3de5ff2 139 #:use-module (gnu packages ocaml)
fbfc07bd 140 #:use-module (gnu packages opencl)
35d5fa76
EF
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages perl-check)
144 #:use-module (gnu packages pkg-config)
145 #:use-module (gnu packages pulseaudio)
bf0018cd 146 #:use-module (gnu packages python)
44d10b1f 147 #:use-module (gnu packages python-xyz)
35d5fa76 148 #:use-module (gnu packages qt)
bf0018cd 149 #:use-module (gnu packages readline)
be6e2c30 150 #:use-module (gnu packages shells)
3da5dca3 151 #:use-module (gnu packages sdl)
7fc90282 152 #:use-module (gnu packages serialization)
cd0322a3 153 #:use-module (gnu packages sqlite)
8698d986 154 #:use-module (gnu packages squirrel)
bd71525b 155 #:use-module (gnu packages swig)
67fa7a27 156 #:use-module (gnu packages tcl)
1bba3e8c 157 #:use-module (gnu packages terminals)
35d5fa76
EF
158 #:use-module (gnu packages texinfo)
159 #:use-module (gnu packages textutils)
751c7040 160 #:use-module (gnu packages tls)
0b608ec4 161 #:use-module (gnu packages upnp)
35d5fa76 162 #:use-module (gnu packages video)
01564e5a 163 #:use-module (gnu packages vulkan)
7aafb3b3 164 #:use-module (gnu packages web)
8044e584 165 #:use-module (gnu packages wget)
35d5fa76
EF
166 #:use-module (gnu packages wxwidgets)
167 #:use-module (gnu packages xdisorg)
168 #:use-module (gnu packages xorg)
169 #:use-module (gnu packages xiph)
170 #:use-module (gnu packages xml)
171 #:use-module (gnu packages messaging)
172 #:use-module (gnu packages networking)
39c676c4 173 #:use-module (guix build-system glib-or-gtk)
a6b55314 174 #:use-module (guix build-system gnu)
57f9671d 175 #:use-module (guix build-system go)
18ebaa9e 176 #:use-module (guix build-system meson)
560df540 177 #:use-module (guix build-system scons)
b0488fe5 178 #:use-module (guix build-system python)
19b396bf 179 #:use-module (guix build-system cmake)
3c1c5622 180 #:use-module (guix build-system qt)
296c8484
EF
181 #:use-module (guix build-system trivial)
182 #:use-module ((srfi srfi-1) #:hide (zip))
183 #:use-module (srfi srfi-26))
490c6528 184
4fee5ec0
KK
185;; Data package for adanaxisgpl.
186(define adanaxis-mush
187 (let ((version "1.1.0"))
188 (origin
189 (method url-fetch)
190 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
191 version ".tar.gz"))
192 (sha256
193 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
194
195(define-public adanaxisgpl
196 (package
197 (name "adanaxisgpl")
198 (version "1.2.5")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
203 version ".tar.gz"))
204 (sha256
205 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
206 (modules '((guix build utils)))
207 (snippet
208 '(begin
209 ;; Necessary for building with gcc >=4.7.
210 (substitute* "src/Mushcore/MushcoreSingleton.h"
211 (("SingletonPtrSet\\(new SingletonType\\);")
212 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
213 ;; Avoid an "invalid conversion from const char* to char*" error.
214 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
215 (("char \\*end, \\*result;")
216 (string-append "const char *end;"
217 "\n"
218 "char *result;")))
219 #t))))
220 (build-system gnu-build-system)
221 (arguments
222 `(#:tests? #f ; no check target
223 #:phases
224 (modify-phases %standard-phases
225 (add-after 'install 'install-data
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let ((data (assoc-ref inputs "adanaxis-mush"))
228 (share (string-append (assoc-ref outputs "out")
229 "/share/" ,name "-" ,version)))
230 (mkdir-p share)
231 (invoke "tar" "xvf" data "-C" share)))))))
232 (native-inputs
233 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
234 (inputs
235 `(("expat" ,expat)
236 ("freeglut" ,freeglut)
237 ("glu" ,glu)
238 ("libjpeg" ,libjpeg)
239 ("libogg" ,libogg)
240 ("libtiff" ,libtiff)
241 ("libvorbis" ,libvorbis)
242 ("libx11" ,libx11)
243 ("libxext" ,libxext)
244 ("pcre" ,pcre)
245 ("sdl" ,sdl)
246 ("sdl-mixer" ,sdl-mixer)))
247 (home-page "https://www.mushware.com")
248 (synopsis "Action game in four spatial dimensions")
249 (description
250 "Adanaxis is a fast-moving first person shooter set in deep space, where
251the fundamentals of space itself are changed. By adding another dimension to
252space this game provides an environment with movement in four directions and
253six planes of rotation. Initially the game explains the 4D control system via
254a graphical sequence, before moving on to 30 levels of gameplay with numerous
255enemy, ally, weapon and mission types. Features include simulated 4D texturing,
256mouse and joystick control, and original music.")
257 (license license:gpl2)))
258
f9fee46f
KK
259(define-public alex4
260 (package
261 (name "alex4")
8ef3f2e3 262 (version "1.2.1")
f9fee46f
KK
263 (source
264 (origin
359a57b6
TGR
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/carstene1ns/alex4.git")
268 (commit version)))
269 (file-name (git-file-name name version))
f9fee46f 270 (sha256
8ef3f2e3 271 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
272 (build-system gnu-build-system)
273 (arguments
359a57b6 274 `(#:tests? #f ; no check target
f9fee46f 275 #:make-flags
8ef3f2e3 276 (list "CC=gcc"
f9fee46f 277 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
278 (string-append "PREFIX=" (assoc-ref %outputs "out")))
279 #:phases
280 (modify-phases %standard-phases
8ef3f2e3 281 (delete 'configure) ; no configure script
f9fee46f
KK
282 (add-after 'install 'install-data
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((share (string-append (assoc-ref outputs "out")
285 "/share/" ,name)))
286 (install-file "alex4.ini" share)
287 #t))))))
288 (inputs
289 `(("allegro" ,allegro-4)
290 ("dumb" ,dumb-allegro4)))
291 (home-page "http://allegator.sourceforge.net/")
292 (synopsis "Retro platform game")
293 (description
294 "Guide Alex the Allegator through the jungle in order to save his
295girlfriend Lola from evil humans who want to make a pair of shoes out of her.
296Plenty of classic platforming in four nice colors guaranteed!
297
298The game includes a built-in editor so you can design and share your own maps.")
299 (license license:gpl2+)))
300
649220ad 301(define-public armagetronad
a70d06b5 302 (package
649220ad 303 (name "armagetronad")
06271fe3 304 (version "0.2.8.3.5")
a70d06b5
RJ
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
06271fe3 311 "1z266haq22n5b0733h7qsg1rpzhz8lvm82f7wd06r008iiar7jdl"))))
a70d06b5
RJ
312 (build-system gnu-build-system)
313 (inputs
314 `(("libxml2" ,libxml2)
315 ("sdl" ,sdl)
316 ("sdl-image" ,sdl-image)
317 ("freeglut" ,freeglut)
318 ("libpng" ,libpng)
319 ("libjpeg-turbo" ,libjpeg-turbo)))
320 (home-page "http://www.armagetronad.org")
321 (synopsis "Tron clone in 3D")
df42e0f9
PN
322 (description "Armagetron Advanced is a multiplayer game in 3d that
323attempts to emulate and expand on the lightcycle sequence from the movie Tron.
324It's an old school arcade game slung into the 21st century. Highlights
325include a customizable playing arena, HUD, unique graphics, and AI bots. For
326the more advanced player there are new game modes and a wide variety of
327physics settings to tweak as well.")
a70d06b5
RJ
328 (license license:gpl2+)))
329
649220ad
NG
330(define-public armagetron-advanced
331 (deprecated-package "armagetron-advanced" armagetronad))
df42e0f9 332
fc473814
TGR
333(define-public bastet
334 (package
335 (name "bastet")
336 (version "0.43.2")
337 (source
338 (origin
339 (method git-fetch)
340 (uri (git-reference
341 (url "https://github.com/fph/bastet.git")
342 (commit version)))
343 (file-name (git-file-name name version))
344 (sha256
345 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
346 (patches
347 (search-patches "bastet-change-source-of-unordered_set.patch"))))
348 (build-system gnu-build-system)
349 (arguments
350 `(#:make-flags
351 (list (string-append "CXXFLAGS=-I"
352 (assoc-ref %build-inputs "boost") "/include"))
353 #:phases
354 (modify-phases %standard-phases
355 (delete 'configure) ; no configure script
356 (replace 'check
357 ;; The 'Test' target builds the tests, but doesn't actually run them.
358 (lambda* (#:key make-flags #:allow-other-keys)
359 (apply invoke "make" "Test" make-flags)
360 (setenv "HOME" ".")
361 (invoke "./Test")))
362 (replace 'install
363 (lambda* (#:key outputs #:allow-other-keys)
364 (let* ((out (assoc-ref outputs "out"))
365 (share (string-append out "/share"))
366 (hicolor (string-append share "/icons/hicolor")))
367 (install-file "bastet"
368 (string-append out "/bin"))
369
370 (install-file "bastet.desktop"
371 (string-append share "/applications"))
372 (install-file "bastet.svg"
373 (string-append hicolor "/scalable/apps"))
374
375 (install-file "bastet.appdata.xml"
376 (string-append share "/appdata"))
377
378 (install-file "bastet.6"
379 (string-append out "/share/man/man6"))
380 #t))))))
381 (native-inputs
382 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
383 (inputs
384 `(("boost" ,boost)
385 ("ncurses" ,ncurses)))
386 (home-page "http://fph.altervista.org/prog/bastet.html")
387 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
388 (description
389 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
390game. Unlike normal Tetris, Bastet does not choose the next brick at random.
391Instead, it uses a special algorithm to choose the worst brick possible.
392
393Playing bastet can be a painful experience, especially if you usually make
394canyons and wait for the long I-shaped block to clear four rows at a time.")
395 (license license:gpl3+)))
396
649220ad 397(define-public cataclysm-dda
1c4d4196 398 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
529701aa
KK
399 (package
400 (name "cataclysm-dda")
1c4d4196 401 (version "0.D")
529701aa
KK
402 (source (origin
403 (method git-fetch)
404 (uri (git-reference
405 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
406 (commit commit)))
407 (sha256
408 (base32
1c4d4196 409 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
529701aa
KK
410 (file-name (git-file-name name version))))
411 (build-system gnu-build-system)
412 (arguments
413 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
28407818
NG
414 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
415 "LOCALIZE=1" "LANGUAGES=all")
529701aa
KK
416 #:phases
417 (modify-phases %standard-phases
418 (delete 'configure)
419 (add-after 'build 'build-tiles
420 (lambda* (#:key make-flags outputs #:allow-other-keys)
421 ;; Change prefix directory and enable tile graphics and sound.
422 (apply invoke "make" "TILES=1" "SOUND=1"
423 (string-append "PREFIX="
424 (assoc-ref outputs "tiles"))
425 (cdr make-flags))))
426 (add-after 'install 'install-tiles
427 (lambda* (#:key make-flags outputs #:allow-other-keys)
428 (apply invoke "make" "install" "TILES=1" "SOUND=1"
429 (string-append "PREFIX="
430 (assoc-ref outputs "tiles"))
431 (cdr make-flags)))))
432 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
433 ;; input in order to support tests.
434 #:tests? #f))
435 (outputs '("out"
436 "tiles")) ; For tile graphics and sound support.
437 (native-inputs
438 `(("gettext" ,gettext-minimal)
439 ("pkg-config" ,pkg-config)))
440 (inputs
441 `(("freetype" ,freetype)
442 ("libogg" ,libogg)
443 ("libvorbis" ,libvorbis)
444 ("ncurses" ,ncurses)
445 ("sdl2" ,sdl2)
446 ("sdl2-image" ,sdl2-image)
447 ("sdl2-ttf" ,sdl2-ttf)
448 ("sdl2-mixer" ,sdl2-mixer)))
39604beb 449 (home-page "https://cataclysmdda.org/")
529701aa
KK
450 (synopsis "Survival horror roguelike video game")
451 (description
973bd8a6
PN
452 "Cataclysm: Dark Days Ahead (or \"DDA\" for short) is a roguelike set
453in a post-apocalyptic world. Struggle to survive in a harsh, persistent,
454procedurally generated world. Scavenge the remnants of a dead civilization
455for food, equipment, or, if you are lucky, a vehicle with a full tank of gas
456to get you out of Dodge. Fight to defeat or escape from a wide variety of
457powerful monstrosities, from zombies to giant insects to killer robots and
458things far stranger and deadlier, and against the others like yourself, that
459want what you have.")
529701aa 460 (license license:cc-by-sa3.0))))
20214f71 461
649220ad
NG
462(define-public cataclysm-dark-days-ahead
463 (deprecated-package "cataclysm-dark-days-ahead" cataclysm-dda))
973bd8a6 464
57b6caef
TL
465(define-public corsix-th
466 (package
467 (name "corsix-th")
468 (version "0.63")
469 (source
470 (origin
471 (method git-fetch)
472 (uri (git-reference
473 (url "https://github.com/CorsixTH/CorsixTH.git")
474 (commit (string-append "v" version))))
475 (file-name (git-file-name name version))
476 (sha256
477 (base32 "1rkyk8g55xny276s0hr5k8mq6f4nzz56d3k2mp09dzfymrqb8hgi"))))
478 (build-system cmake-build-system)
479 (arguments
480 `(#:phases
481 (modify-phases %standard-phases
482 (add-after 'install 'wrap-binary
483 (lambda _
484 ;; Set Lua module paths and default MIDI soundfont on startup.
485 (let* ((out (assoc-ref %outputs "out"))
486 (fluid (assoc-ref %build-inputs "fluid-3"))
487 (lua-version ,(version-major+minor (package-version lua)))
488 (lua-cpath
489 (map (lambda (lib)
490 (string-append
491 (assoc-ref %build-inputs (string-append "lua-" lib))
492 "/lib/lua/" lua-version "/?.so"))
493 '("filesystem" "lpeg"))))
494 (wrap-program (string-append out "/bin/corsix-th")
495 `("LUA_CPATH" ";" = ,lua-cpath)
496 `("SDL_SOUNDFONTS" ":" suffix
497 (,(string-append fluid "/share/soundfonts/FluidR3Mono_GM.sf3")))))
498 #t)))
499 #:tests? #f)) ; TODO need busted package to run tests
500 ;; Omit Lua-Socket dependency to disable automatic updates.
501 (inputs
502 `(("ffmpeg" ,ffmpeg)
503 ("fluid-3" ,fluid-3)
504 ("freetype" ,freetype)
505 ("lua" ,lua)
506 ("lua-filesystem" ,lua-filesystem)
507 ("lua-lpeg" ,lua-lpeg)
508 ("sdl2" ,sdl2)
509 ("sdl2-mixer" ,sdl2-mixer)))
510 (home-page "https://corsixth.com")
511 (synopsis "Implementation of the @i{Theme Hospital} game engine")
512 (description
513 "This package provides a reimplementation of the 1997 Bullfrog business
514simulation game @i{Theme Hospital}. As well as faithfully recreating the
515original engine, CorsixTH adds support for high resolutions, custom levels and
516more. This package does @emph{not} provide the game assets.")
517 (license (list
518 license:expat ; main license
519 license:bsd-3)))) ; CorsixTH/Src/random.c
520
620b0468
RW
521(define-public cowsay
522 (package
523 (name "cowsay")
46ba5337 524 (version "3.04")
620b0468 525 (source (origin
7afb97fd
EF
526 (method git-fetch)
527 (uri (git-reference
528 (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
529 (commit (string-append name "-" version))))
530 (file-name (git-file-name name version))
620b0468
RW
531 (sha256
532 (base32
7afb97fd 533 "06455kq37hvq1xb7adyiwrx0djs50arsxvjgixyxks16lm1rlc7n"))))
620b0468
RW
534 (build-system gnu-build-system)
535 (arguments
536 `(#:phases
537 (modify-phases %standard-phases
6c0c1752
TGR
538 (delete 'configure) ; no configure script
539 (delete 'build) ; nothing to be built
540 (replace 'install
620b0468 541 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
542 (invoke "sh" "install.sh"
543 (assoc-ref outputs "out"))))
1ee3079d
EF
544 (delete 'check)
545 (add-after 'install 'check
620b0468 546 (lambda* (#:key outputs #:allow-other-keys)
482bdf25
RW
547 (invoke (string-append (assoc-ref outputs "out")
548 "/bin/cowsay")
549 "We're done!"))))))
620b0468
RW
550 (inputs
551 `(("perl" ,perl)))
552 (home-page (string-append "https://web.archive.org/web/20071026043648/"
46ba5337 553 "http://www.nog.net:80/~tony/warez/cowsay.shtml"))
620b0468
RW
554 (synopsis "Speaking cow text filter")
555 (description "Cowsay is basically a text filter. Send some text into it,
556and you get a cow saying your text. If you think a talking cow isn't enough,
46ba5337
TGR
557cows can think too: all you have to do is run @command{cowthink}. If you're
558tired of cows, a variety of other ASCII-art messengers are available.")
620b0468
RW
559 (license license:gpl3+)))
560
4dbd704d
LP
561(define-public lolcat
562 (let ((commit "35dca3d0a381496d7195cd78f5b24aa7b62f2154")
563 (revision "0"))
564 (package
565 (name "lolcat")
566 (version (git-version "1.0" revision commit))
567 (source
568 (origin
569 (method git-fetch)
570 (uri (git-reference
571 (url "https://github.com/jaseg/lolcat.git")
572 (commit commit)))
573 (sha256
574 (base32
575 "0jjbkqcc2ikjxd1xgdyv4rb0vsw218181h89f2ywg29ffs3ypd8g"))
576 (file-name (git-file-name name version))))
577 (build-system gnu-build-system)
578 (arguments
579 `(#:tests? #f ;; no check target
580 #:make-flags (list "CC=gcc")
581 #:phases
582 (modify-phases %standard-phases
583 (delete 'bootstrap)
584 (delete 'configure)
585 (replace 'install
586 (lambda* (#:key outputs #:allow-other-keys)
587 (let* ((out (assoc-ref outputs "out"))
588 (dest (string-append out "/bin")))
589 (mkdir-p dest)
590 (install-file "lolcat" dest)
591 (install-file "censor" dest)
592 #t))))))
593 (home-page "https://github.com/jaseg/lolcat")
594 (synopsis "Rainbow coloring effect for text console display")
595 (description "@command{lolcat} concatenates files and streams like
596regular @command{cat}, but it also adds terminal escape codes between
597characters and lines resulting in a rainbow effect.")
598 (license license:wtfpl2))))
599
0b5d078f
KK
600(define-public freedoom
601 (package
9303b09a 602 (name "freedoom")
78a3da3d 603 (version "0.12.1")
9303b09a
TGR
604 (source
605 (origin
606 (method git-fetch)
607 (uri (git-reference
608 (url "https://github.com/freedoom/freedoom.git")
609 (commit (string-append "v" version))))
610 (file-name (git-file-name name version))
611 (sha256
78a3da3d 612 (base32 "1mq60lfwaaxmch7hsz8403pwafnlsmsd5z2df2j77ppwndwcrypb"))))
9303b09a
TGR
613 (build-system gnu-build-system)
614 (arguments
615 '(#:make-flags
616 (list (string-append "prefix=" (assoc-ref %outputs "out")))
9303b09a
TGR
617 #:tests? #f ; no check target
618 #:phases
619 (modify-phases %standard-phases
620 (delete 'bootstrap)
621 (replace 'configure
622 (lambda* (#:key inputs outputs #:allow-other-keys)
78a3da3d 623 (let* ((freedoom (assoc-ref outputs "out"))
9303b09a 624 (wad-dir (string-append freedoom "/share/games/doom")))
9303b09a
TGR
625 ;; Make sure that the install scripts know where to find
626 ;; the appropriate WAD files.
627 (substitute* "dist/freedoom"
628 (("IWAD=freedm.wad")
629 (string-append "IWAD=" wad-dir "/freedm.wad"))
630 (("IWAD=freedoom1.wad")
631 (string-append "IWAD=" wad-dir "/freedoom1.wad"))
632 (("IWAD=freedoom2.wad")
633 (string-append "IWAD=" wad-dir "/freedoom2.wad")))
634 #t))))))
635 (native-inputs
636 `(("asciidoc" ,asciidoc)
637 ("deutex" ,deutex)
78a3da3d
KK
638 ("python" ,python)
639 ("python-pillow" ,python-pillow)))
9303b09a
TGR
640 (home-page "https://freedoom.github.io/")
641 (synopsis "Free content game based on the Doom engine")
642 (native-search-paths
643 (list (search-path-specification
644 (variable "DOOMWADDIR")
645 (files '("share/games/doom")))
646 (search-path-specification
647 (variable "DOOMWADPATH")
648 (files '("share/games/doom")))))
649 (description
650 "The Freedoom project aims to create a complete free content first person
0b5d078f
KK
651shooter game. Freedoom by itself is just the raw material for a game: it must
652be paired with a compatible game engine (such as @code{prboom-plus}) to be
653played. Freedoom complements the Doom engine with free levels, artwork, sound
654effects and music to make a completely free game.")
9303b09a 655 (license license:bsd-3)))
0b5d078f 656
18995af2
TGR
657(define-public freedroidrpg
658 (package
659 (name "freedroidrpg")
660 (version "0.16.1")
661 (source
662 (origin
663 (method url-fetch)
664 (uri (string-append "http://ftp.osuosl.org/pub/freedroid/"
665 "freedroidRPG-" (version-major+minor version) "/"
666 "freedroidRPG-" version ".tar.gz"))
667 (sha256
668 (base32 "0n4kn38ncmcy3lrxmq8fjry6c1z50z4q1zcqfig0j4jb0dsz2va2"))))
669 (build-system gnu-build-system)
670 (arguments
671 `(#:configure-flags
672 (list
673 (string-append "CFLAGS="
674 "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
675 "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
676 "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
677 "--enable-opengl")
678 ;; FIXME: the test suite fails with the following error output:
679 ;; 4586 Segmentation fault env SDL_VIDEODRIVER=dummy \
680 ;; SDL_AUDIODRIVER=dummy ./src/freedroidRPG -nb text
681 #:tests? #f))
682 (native-inputs
683 `(("pkg-config" ,pkg-config)))
684 (inputs
685 `(("glu" ,glu)
686 ("libjpeg" ,libjpeg)
687 ("libogg" ,libogg)
688 ("libpng" ,libpng)
689 ("libvorbis" ,libvorbis)
690 ("mesa" ,mesa)
691 ("python" ,python-wrapper)
692 ("sdl" ,sdl)
693 ("sdl-gfx" ,sdl-gfx)
694 ("sdl-image" ,sdl-image)
695 ("sdl-mixer" ,sdl-mixer)
696 ("zlib" ,zlib)))
697 (home-page "http://www.freedroid.org/")
698 (synopsis "Isometric role-playing game against killer robots")
699 (description
700 "Freedroid RPG is an @dfn{RPG} (Role-Playing Game) with isometric graphics.
701The game tells the story of a world destroyed by a conflict between robots and
702their human masters. To restore peace to humankind, the player must complete
703numerous quests while fighting off rebelling robots---either by taking control
704of them, or by simply blasting them to pieces with melee and ranged weapons in
705real-time combat.")
706 (license (list license:expat ; lua/
707 license:gpl3 ; src/gen_savestruct.py
708 license:gpl2+)))) ; the rest
709
06f5f0b1
KK
710(define-public golly
711 (package
712 (name "golly")
106c6aa5 713 (version "3.3")
06f5f0b1
KK
714 (source (origin
715 (method url-fetch)
04e7b1e7 716 (uri (string-append "mirror://sourceforge/golly/golly/golly-"
06f5f0b1
KK
717 version "/golly-" version
718 "-src.tar.gz"))
719 (sha256
720 (base32
106c6aa5 721 "1j3ksnar4rdam4xiyspgyrs1pifbvxfxkrn65brkwxpx39mpgzc8"))))
06f5f0b1
KK
722 (build-system gnu-build-system)
723 (arguments
724 '(#:make-flags (list "CC=gcc"
725 (string-append "GOLLYDIR="
726 (assoc-ref %outputs "out")
727 "/share/golly"))
728 #:tests? #f ; no check target
729 #:phases
730 (modify-phases %standard-phases
731 (replace 'configure
732 (lambda* (#:key inputs #:allow-other-keys)
733 ;; For some reason, setting the PYTHON_SHLIB make flag doesn't
734 ;; properly set the path to the Python shared library. This
735 ;; substitution acheives the same end by different means.
736 (substitute* "gui-wx/wxprefs.cpp"
737 (("pythonlib = wxT\\(STRINGIFY\\(PYTHON_SHLIB\\)\\)")
738 (string-append "pythonlib = \""
739 (assoc-ref inputs "python")
740 "/lib/libpython-2.7.so\"")))
741 #t))
742 (replace 'build
743 (lambda* (#:key make-flags outputs #:allow-other-keys)
744 (with-directory-excursion "gui-wx"
745 (apply invoke `("make" ,@make-flags "-f" "makefile-gtk")))))
746 (replace 'install
747 (lambda* (#:key outputs #:allow-other-keys)
748 (let* ((out (assoc-ref outputs "out"))
749 (bin (string-append out "/bin"))
750 (doc (string-append out "/share/doc/golly"))
751 (pixmaps (string-append out "/share/pixmaps"))
752 (share (string-append out "/share/golly")))
753 (for-each (lambda (binary)
754 (install-file binary bin))
755 '("bgolly" "golly"))
756 (for-each (lambda (document)
757 (install-file
758 (string-append "docs/" document ".html")
759 doc))
760 '("License" "ReadMe" "ToDo"))
761 (install-file "gui-wx/icons/appicon.xpm" pixmaps)
762 (for-each (lambda (folder)
763 (copy-recursively
764 folder
765 (string-append share "/" folder)))
766 '("Help" "Patterns" "Rules" "Scripts")))
767 #t)))))
768 (native-inputs
769 `(("lua" ,lua)))
770 (inputs
771 `(("glu" ,glu)
772 ("mesa" ,mesa)
773 ("python" ,python-2)
774 ("wxwidgets" ,wxwidgets-gtk2)
775 ("zlib" ,zlib)))
776 (home-page "http://golly.sourceforge.net/")
777 (synopsis "Software for exploring cellular automata")
778 (description
779 "Golly simulates Conway's Game of Life and many other types of cellular
780automata. The following features are available:
781@enumerate
782@item Support for bounded and unbounded universes, with cells of up to 256
783 states.
784@item Support for multiple algorithms, including Bill Gosper's Hashlife
785 algorithm.
786@item Loading patterns from BMP, PNG, GIF and TIFF image files.
787@item Reading RLE, macrocell, Life 1.05/1.06, dblife and MCell files.
788@item Scriptable via Lua or Python.
789@item Extracting patterns, rules and scripts from zip files.
790@item Downloading patterns, rules and scripts from online archives.
791@item Pasting patterns from the clipboard.
792@item Unlimited undo/redo.
793@item Configurable keyboard shortcuts.
794@item Auto fit option to keep patterns within the view.
795@end enumerate")
796 (license license:gpl2+)))
797
299e15c1
TL
798(define-public julius
799 (package
800 (name "julius")
45cf3c30 801 (version "1.3.0")
299e15c1
TL
802 (source
803 (origin
804 (method git-fetch)
805 (uri (git-reference
806 (url "https://github.com/bvschaik/julius.git")
807 (commit (string-append "v" version))))
808 (file-name (git-file-name name version))
809 (sha256
45cf3c30 810 (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
299e15c1
TL
811 (build-system cmake-build-system)
812 (inputs
813 `(("sdl2" ,sdl2)
814 ("sdl2-mixer" ,sdl2-mixer)))
815 (home-page "https://github.com/bvschaik/julius")
816 (synopsis "Re-implementation of Caesar III game engine")
817 (description
818 "Engine for Caesar III, a city-building real-time strategy game.
819Julius includes some UI enhancements while preserving the logic (including
820bugs) of the original game, so that saved games are compatible. This package
821does not include game data.")
822 (license (list license:agpl3
823 license:expat ; ext/dirent
824 license:zlib)))) ; ext/tinyfiledialogs
825
5145001a
RW
826(define-public meandmyshadow
827 (package
828 (name "meandmyshadow")
b70ff03e 829 (version "0.5a")
5145001a
RW
830 (source (origin
831 (method url-fetch)
832 (uri (string-append "mirror://sourceforge/meandmyshadow/"
833 version "/meandmyshadow-" version
834 "-src.tar.gz"))
835 (sha256
836 (base32
b70ff03e 837 "0i98v6cgmpsxy7mbb0s2y6f6qq6mkwzk2nrv1nz39ncf948aky2h"))))
5145001a
RW
838 (build-system cmake-build-system)
839 (arguments
1d9a9d27 840 `(#:tests? #f)) ; there are no tests
5145001a
RW
841 (native-inputs
842 `(("pkg-config" ,pkg-config)))
843 (inputs
1d9a9d27 844 `(("curl" ,curl)
5145001a 845 ("libarchive" ,libarchive)
1d9a9d27
TGR
846 ("lua" ,lua)
847 ("sdl" ,(sdl-union (list sdl2
848 sdl2-image
849 sdl2-mixer
850 sdl2-ttf)))))
b590951f 851 (home-page "https://acmepjz.github.io/meandmyshadow/")
5145001a
RW
852 (synopsis "Puzzle/platform game")
853 (description "Me and My Shadow is a puzzle/platform game in which you try
854to reach the exit by solving puzzles. Spikes, moving blocks, fragile blocks
855and much more stand between you and the exit. Record your moves and let your
856shadow mimic them to reach blocks you couldn't reach alone.")
857 (license license:gpl3+)))
858
a02ca033
TL
859(define-public opensurge
860 (package
861 (name "opensurge")
862 (version "0.5.1.2")
863 (source
864 (origin
865 (method git-fetch)
866 (uri (git-reference
867 (url "https://github.com/alemart/opensurge.git")
868 (commit (string-append "v" version))))
869 (file-name (git-file-name name version))
870 (sha256
871 (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
872 (build-system cmake-build-system)
873 (arguments
874 `(#:tests? #f ;there are no tests
875 #:configure-flags
876 (let* ((out (assoc-ref %outputs "out"))
877 (share (string-append out "/share")))
878 (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
879 (string-append "-DGAME_DATADIR=" share "/" ,name)
880 (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
881 (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
882 (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
883 #:phases
884 (modify-phases %standard-phases
885 (add-after 'unpack 'fix-xdg-open-path
886 (lambda* (#:key inputs #:allow-other-keys)
887 ;; Look for xdg-open in the store.
888 (substitute* "src/core/web.c"
889 (("/usr(/bin/xdg-open)" _ bin)
890 (string-append (assoc-ref inputs "xdg-utils") bin)))
891 #t))
892 (add-after 'unpack 'unbundle-fonts
893 (lambda* (#:key inputs #:allow-other-keys)
894 ;; Replace bundled Roboto fonts with links to the store.
895 (with-directory-excursion "fonts"
896 (let ((roboto-dir (string-append
897 (assoc-ref inputs "font-google-roboto")
898 "/share/fonts/truetype/")))
899 (for-each
900 (lambda (font)
901 (delete-file font)
902 (symlink (string-append roboto-dir font) font))
903 '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
904 #t))))))
905 (inputs
906 `(("allegro" ,allegro)
907 ("font-google-roboto" ,font-google-roboto)
908 ("surgescript" ,surgescript)
909 ("xdg-utils" ,xdg-utils)))
910 (home-page "https://opensurge2d.org")
911 (synopsis "2D retro side-scrolling game")
912 (description "@code{Open Surge} is a 2D retro side-scrolling platformer
913inspired by the Sonic games. The player runs at high speeds through each
914level while collecting items and avoiding obstacles. The game includes a
915built-in level editor.")
916 (license
917 ;; Code is under GPL 3+, assets are under various licenses.
918 ;; See src/misc/credits.c for details.
919 (list license:gpl3+
920 license:cc0
921 license:cc-by3.0
922 license:cc-by-sa3.0
923 license:expat
924 license:public-domain
925 license:silofl1.1))))
926
02345c96
RW
927(define-public knights
928 (package
929 (name "knights")
930 (version "025")
931 (source (origin
932 (method url-fetch)
933 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
934 version "_src.tar.gz"))
935 (sha256
936 (base32
937 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
938 (build-system gnu-build-system)
939 (arguments
940 '(#:make-flags
941 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
942 #:phases
943 (modify-phases %standard-phases
944 ;; No configure script.
945 (delete 'configure))
946 #:tests? #f)) ;; No check target.
947 (inputs
948 `(("boost" ,boost)
949 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
950 ("freetype" ,freetype)
951 ("fontconfig" ,fontconfig)
952 ("curl" ,curl)))
6730d895
RW
953 (native-inputs
954 `(("pkg-config" ,pkg-config)))
02345c96
RW
955 (home-page "http://www.knightsgame.org.uk/")
956 (synopsis "Multiplayer dungeon game involving knights and quests")
957 (description "Knights is a multiplayer game involving several knights who
958must run around a dungeon and complete various quests. Each game revolves
959around a quest – for example, you might have to find some items and carry them
960back to your starting point. This may sound easy, but as there are only
961enough items in the dungeon for one player to win, you may end up having to
962kill your opponents to get their stuff! Other quests involve escaping from
963the dungeon, fighting a duel to the death against the enemy knights, or
964destroying an ancient book using a special wand.")
965 ;; This package includes modified sources of lua (X11), enet (Expat), and
966 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
967 ;; license. The whole package is released under GPLv3+.
968 (license license:gpl3+)))
969
e23f2ff1 970(define-public gnubg
bf0018cd 971 (package
e23f2ff1 972 (name "gnubg")
d5ddb484 973 (version "1.06.002")
bf0018cd
JD
974 (source
975 (origin
976 (method url-fetch)
d24881e4
GLV
977 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
978 version "-sources.tar.gz"))
bf0018cd
JD
979 (sha256
980 (base32
d5ddb484 981 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
982 (build-system gnu-build-system)
983 (inputs `(("glib" ,glib)
984 ("readline" ,readline)
985 ("gtk+" ,gtk+-2)
986 ("mesa" ,mesa)
6a95024c 987 ("glu" ,glu)
bf0018cd
JD
988 ("gtkglext" ,gtkglext)
989 ("sqlite" ,sqlite)
990 ("libcanberra" ,libcanberra)))
991 (native-inputs `(("python-2" ,python-2)
992 ("pkg-config" ,pkg-config)))
93605bfd
GLV
993 (arguments
994 `(#:phases
995 (modify-phases %standard-phases
996 (add-after 'install 'install-desktop-file
997 (lambda* (#:key outputs #:allow-other-keys)
998 (let* ((out (assoc-ref outputs "out"))
999 (apps (string-append out "/share/applications")))
1000 (mkdir-p apps)
1001 (with-output-to-file (string-append apps "/gnubg.desktop")
1002 (lambda _
1003 (format #t
1004 "[Desktop Entry]~@
1005 Name=GNU Backgammon~@
1006 Exec=~a/bin/gnubg -w~@
1007 Icon=gnubg~@
1008 Categories=Game;~@
1009 Terminal=false~@
1010 Type=Application~%"
1011 out))))
1012 #t)))))
d24881e4 1013 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 1014 (synopsis "Backgammon game")
c97e4d8b
PN
1015 (description "The GNU backgammon application (also known as \"gnubg\") can
1016be used for playing, analyzing and teaching the game. It has an advanced
1017evaluation engine based on artificial neural networks suitable for both
1018beginners and advanced players. In addition to a command-line interface, it
1019also features an attractive, 3D representation of the playing board.")
024e2c17 1020 (license license:gpl3+)))
bf0018cd 1021
e23f2ff1
LC
1022(define-public gnubackgammon
1023 (deprecated-package "gnubackgammon" gnubg))
c97e4d8b 1024
490c6528
JD
1025(define-public gnubik
1026 (package
1027 (name "gnubik")
ecc39b3f 1028 (version "2.4.3")
490c6528
JD
1029 (source
1030 (origin
1031 (method url-fetch)
1032 (uri (string-append "mirror://gnu/gnubik/gnubik-"
1033 version ".tar.gz"))
1034 (sha256
1035 (base32
ecc39b3f 1036 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
1037 (build-system gnu-build-system)
1038 (inputs `(("gtk+" ,gtk+-2)
1039 ("mesa" ,mesa)
276a8f71 1040 ("glu" ,glu)
490c6528
JD
1041 ("libx11" ,libx11)
1042 ("guile" ,guile-2.0)
1043 ("gtkglext" ,gtkglext)))
b94a6ca0 1044 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
1045 ("pkg-config" ,pkg-config)))
1046 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
1047 (synopsis "3d Rubik's cube game")
1048 (description
1049 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
1050each of its faces have a uniform color. The game is customizable, allowing
1051you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 1052You may even apply photos to the faces instead of colors. The game is
490c6528 1053scriptable with Guile.")
024e2c17 1054 (license license:gpl3+)))
3da5dca3 1055
a20b084a
JD
1056(define-public gnushogi
1057 (package
1058 (name "gnushogi")
1059 (version "1.4.2")
1060 (source
1061 (origin
1062 (method url-fetch)
1063 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
1064 version ".tar.gz"))
1065 (sha256
1066 (base32
1067 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1068 (arguments `(#:tests? #f)) ;; No check target.
1069 (build-system gnu-build-system)
6fd52309 1070 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1071 (synopsis "The game of Shogi (Japanese chess)")
1072 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1073Chess). It is similar to standard chess but this variant is far more complicated.")
1074 (license license:gpl3+)))
1075
e664200c
KK
1076(define-public ltris
1077 (package
1078 (name "ltris")
1079 (version "1.0.19")
1080 (source
1081 (origin
1082 (method url-fetch)
1083 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 1084 "ltris-" version ".tar.gz"))
e664200c
KK
1085 (sha256
1086 (base32
1087 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1088 (build-system gnu-build-system)
1089 (arguments
1090 '(;; The code in LTris uses traditional GNU semantics for inline functions
1091 #:configure-flags '("CFLAGS=-fgnu89-inline")
1092 #:phases
1093 (modify-phases %standard-phases
1094 (add-after 'set-paths 'set-sdl-paths
1095 (lambda* (#:key inputs #:allow-other-keys)
1096 (setenv "CPATH"
1097 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1098 "/include/SDL:"
1099 (or (getenv "CPATH") "")))
e664200c
KK
1100 #t)))))
1101 (inputs
1102 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1103 (home-page "http://lgames.sourceforge.net/LTris/")
1104 (synopsis "Tetris clone based on the SDL library")
1105 (description
1106 "LTris is a tetris clone: differently shaped blocks are falling down the
1107rectangular playing field and can be moved sideways or rotated by 90 degree
1108units with the aim of building lines without gaps which then disappear (causing
1109any block above the deleted line to fall down). LTris has three game modes: In
1110Classic you play until the stack of blocks reaches the top of the playing field
1111and no new blocks can enter. In Figures the playing field is reset to a new
1112figure each level and later on tiles and lines suddenly appear. In Multiplayer
1113up to three players (either human or CPU) compete with each other sending
1114removed lines to all opponents. There is also a Demo mode in which you can
1115watch your CPU playing while enjoying a cup of tea!")
1116 (license license:gpl2+)))
3bd0d186
A
1117
1118(define-public nethack
1119 (package
1120 (name "nethack")
9d9da65f 1121 (version "3.6.6")
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
9d9da65f 1129 (base32 "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"))))
3bd0d186
A
1130 (inputs
1131 `(("ncurses" ,ncurses)
1132 ("bison" ,bison)
1133 ("flex" ,flex)
1134 ("less" ,less)))
1135 (build-system gnu-build-system)
1136 (arguments
1137 '(#:make-flags
1138 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1139 #:phases
1140 (modify-phases %standard-phases
1141 (add-before 'configure 'patch-paths
1142 (lambda _
1143 (substitute* "sys/unix/nethack.sh"
1144 (("^ *cd .*$") ""))
1145 (substitute* "sys/unix/Makefile.utl"
1146 (("^YACC *=.*$") "YACC = bison -y\n")
1147 (("^LEX *=.*$") "LEX = flex\n")
1148 (("^# CC = gcc") "CC = gcc"))
1149 (substitute* "sys/unix/hints/linux"
1150 (("/bin/gzip") (string-append
1151 (assoc-ref %build-inputs "gzip")
1152 "/bin/gzip"))
1153 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1154 (substitute* "include/config.h"
df35e715
LC
1155 (("^.*define CHDIR.*$") "")
1156 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1157 ;; Honor SOURCE_DATE_EPOCH.
1158 "#define REPRODUCIBLE_BUILD"))
1159
1160 ;; Note: 'makedefs' rejects and ignores dates that are too old
1161 ;; or too new, so we must choose something reasonable here.
1162 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1163
3bd0d186
A
1164 (substitute* "sys/unix/Makefile.src"
1165 (("^# CC = gcc") "CC = gcc"))
1166 #t))
1167 (replace 'configure
1168 (lambda _
1169 (let ((bash (string-append
1170 (assoc-ref %build-inputs "bash")
1171 "/bin/bash")))
1172 (with-directory-excursion "sys/unix"
1173 (substitute* "setup.sh" (("/bin/sh") bash))
1174 (invoke bash "setup.sh" "hints/linux"))
1175 #t)))
1176 (add-after 'install 'fixup-paths
1177 (lambda _
1178 (let* ((output (assoc-ref %outputs "out"))
1179 (nethack-script (string-append output "/bin/nethack")))
1180 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1181 (for-each
1182 (lambda (file)
1183 (rename-file
1184 (string-append output "/games/lib/nethackdir/" file)
1185 (string-append output "/games/lib/nethackuserdir/"
1186 file)))
1187 '("xlogfile" "logfile" "perm" "record" "save"))
1188 (mkdir-p (string-append output "/bin"))
1189 (call-with-output-file nethack-script
1190 (lambda (port)
1191 (format port "#!~a/bin/sh
1192PATH=~a:$PATH
1193if [ ! -d ~~/.config/nethack ]; then
1194 mkdir -p ~~/.config/nethack
1195 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1196 chmod -R +w ~~/.config/nethack
1197fi
1198
1199RUNDIR=$(mktemp -d)
1200
1201cleanup() {
1202 rm -rf $RUNDIR
1203}
1204trap cleanup EXIT
1205
1206cd $RUNDIR
1207for i in ~~/.config/nethack/*; do
1208 ln -s $i $(basename $i)
1209done
1210for i in ~a/games/lib/nethackdir/*; do
1211 ln -s $i $(basename $i)
1212done
1213~a/games/nethack"
1214 (assoc-ref %build-inputs "bash")
1215 (list->search-path-as-string
1216 (list
1217 (string-append
1218 (assoc-ref %build-inputs "coreutils") "/bin")
1219 (string-append
1220 (assoc-ref %build-inputs "less") "/bin"))
1221 ":")
1222 output
1223 output
1224 output)))
1225 (chmod nethack-script #o555)
1226 #t)))
1227 (delete 'check))))
1228 (home-page "https://nethack.org")
1229 (synopsis "Classic dungeon crawl game")
1230 (description "NetHack is a single player dungeon exploration game that runs
1231on a wide variety of computer systems, with a variety of graphical and text
1232interfaces all using the same game engine. Unlike many other Dungeons &
1233Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1234the dungeon and not simply killing everything in sight - in fact, killing
1235everything in sight is a good way to die quickly. Each game presents a
1236different landscape - the random number generator provides an essentially
1237unlimited number of variations of the dungeon and its denizens to be discovered
1238by the player in one of a number of characters: you can pick your race, your
1239role, and your gender.")
1240 (license
1241 (license:fsdg-compatible
1242 "https://nethack.org/common/license.html"))))
e664200c 1243
82943626
TGR
1244(define-public pipewalker
1245 (package
1246 (name "pipewalker")
1247 (version "0.9.4")
1248 (source
1249 (origin
1250 (method url-fetch)
1251 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1252 "pipewalker-" version ".tar.gz"))
82943626 1253 (sha256
96848ecc 1254 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1255 (build-system gnu-build-system)
1256 (arguments
1257 `(#:configure-flags
1258 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1259 "/share/doc/" ,name "-" ,version))
1260 #:phases
1261 (modify-phases %standard-phases
1262 (add-after 'configure 'patch-docdir
1263 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1264 (lambda _
1265 (substitute* "Makefile"
1266 (("(pkgdocdatadir = ).*" _ assignment)
1267 (string-append assignment "$(docdir)\n")))
1268 #t)))))
1269 (inputs
1270 `(("libpng" ,libpng)
1271 ("mesa" ,mesa)
1272 ("sdl" ,sdl)))
1273 (home-page "http://pipewalker.sourceforge.net/")
1274 (synopsis "Logical tile puzzle")
1275 (description
1276 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1277computers to one network server, bring water from a source to the taps, etc.
1278The underlying mechanism is always the same: you must turn each tile in the
1279grid in the right direction to combine all components into a single circuit.
1280Every puzzle has a complete solution, although there may be more than one.")
1281 (license license:gpl3+)))
1282
26a657f0
KK
1283(define-public prboom-plus
1284 (package
1285 (name "prboom-plus")
1286 (version "2.5.1.4")
1287 (source (origin
1288 (method url-fetch)
a8a96bbe
TGR
1289 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1290 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1291 (sha256
a8a96bbe 1292 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1293 (modules '((guix build utils)))
1294 (snippet
6cbee49d
MW
1295 '(begin
1296 (substitute* "src/version.c"
1297 (("__DATE__") "")
1298 (("__TIME__") ""))
1299 #t))))
26a657f0
KK
1300 (build-system gnu-build-system)
1301 (arguments
1302 '(#:configure-flags '("--disable-cpu-opt")
1303 #:make-flags `(,(string-append "gamesdir="
1304 (assoc-ref %outputs "out") "/bin"))
1305 #:phases
1306 (modify-phases %standard-phases
1307 (add-after 'set-paths 'set-sdl'paths
1308 (lambda* (#:key inputs #:allow-other-keys)
1309 (setenv "CPATH"
1310 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1311 "/include/SDL:"
1312 (or (getenv "CPATH") "")))
26a657f0
KK
1313 #t)))))
1314 (inputs
1315 `(("fluidsynth" ,fluidsynth)
1316 ("glu" ,glu)
1317 ("libmad" ,libmad)
1318 ("libpng" ,libpng)
1319 ("libvorbis" ,libvorbis)
1320 ("pcre" ,pcre)
1321 ("portmidi" ,portmidi)
1322 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1323 (home-page "http://prboom-plus.sourceforge.net/")
1324 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1325 (description
1326 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1327 (license license:gpl2+)))
1328
519bfc65
KK
1329(define-public retux
1330 (package
1331 (name "retux")
b286e3b3 1332 (version "1.3.6")
519bfc65
KK
1333 (source (origin
1334 (method url-fetch)
1335 (uri (string-append "mirror://savannah/retux/"
1336 (version-major+minor version) "/retux-"
1337 version "-src.tar.gz"))
1338 (sha256
1339 (base32
b286e3b3 1340 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1341 (build-system python-build-system)
1342 (arguments
1343 `(#:tests? #f ; no check target
1344 #:phases
1345 (modify-phases %standard-phases
1346 ;; no setup.py script
1347 (delete 'build)
1348 (replace 'install
1349 (lambda* (#:key outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (bin (string-append out "/bin"))
1352 (data (string-append out "/share/retux"))
1353 (doc (string-append out "/share/doc/retux")))
1354 (mkdir-p bin)
1355
1356 (substitute* "retux.py"
1357 ;; Use the correct data directory.
1358 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1359 (string-append "\"" data "\","))
1360 ;; Use Python 3 so the patch-shebangs phase works properly.
1361 ((".*python2.*") "#!/usr/bin/python3"))
1362
1363 (copy-file "retux.py" (string-append bin "/retux"))
1364
1365 (copy-recursively "data" data)
1366
fbc3b802
KK
1367 (install-file "COPYING" doc)
1368 #t))))))
519bfc65
KK
1369 (inputs
1370 `(("python-sge-pygame" ,python-sge-pygame)
1371 ("python-six" ,python-six)
1372 ("python-xsge" ,python-xsge)))
1373 (home-page "http://retux.nongnu.org")
1374 (synopsis "Action platformer game")
1375 (description
1376 "ReTux is an action platformer loosely inspired by the Mario games,
1377utilizing the art assets from the @code{SuperTux} project.")
1378 ;; GPL version 3 or later is the license for the code and some art.
1379 ;; The rest of the licenses are for the art exclusively, as listed in
1380 ;; data/LICENSES.
1381 (license (list license:cc0
1382 license:cc-by3.0
1383 license:cc-by-sa3.0
1384 license:cc-by-sa4.0
1385 license:gpl2+
1386 license:gpl3+))))
07f3b379
KK
1387
1388(define-public roguebox-adventures
1697048f
KK
1389 (package
1390 (name "roguebox-adventures")
98f79040 1391 (version "3.0.1")
1697048f
KK
1392 (source
1393 (origin
1394 (method url-fetch)
1395 (uri (string-append
1396 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1397 (string-join (string-split version #\.) "_") "_Source.zip"))
1398 (file-name (string-append name "-" version ".zip"))
1399 (sha256
1400 (base32
98f79040 1401 "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
1697048f
KK
1402 (build-system python-build-system)
1403 (arguments
1404 `(#:tests? #f ; no check target
1405 #:phases
1406 (modify-phases %standard-phases
1407 (replace 'unpack
1408 (lambda* (#:key source #:allow-other-keys)
1409 (and (invoke "unzip" source)
1410 ;; The actual source is buried a few directories deep.
1411 (chdir (string-append "RogueBoxAdventures_v"
1412 (string-join
1413 (string-split ,version #\.) "_")
1414 "_Source")))))
1415 ;; no setup.py script
1416 (replace 'build
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (let* ((out (assoc-ref outputs "out"))
1419 (data (string-append
1420 out "/share/games/roguebox-adventures")))
1421 ;; Use the correct data directory.
1422 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1423 (("basic_path + os\\.sep + 'DATA'")
1424 (string-append "'" data "'"))
1425 (("^basic_path.*$")
1426 (string-append "basic_path ='" data "'\n")))
98f79040
KK
1427 (substitute* "LIB/dialog.py"
1428 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
1429 (string-append "d_path = '" data "'")))
1697048f
KK
1430 (substitute* "LIB/gra_files.py"
1431 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1432 (string-append "basic_path ='" data "'\n")))
07f3b379 1433
1697048f
KK
1434 ;; The game must save in the user's home directory because
1435 ;; the store is read-only.
1436 (substitute* "main.py"
1437 (("home_save = False") "home_save = True")
1438 (("'icon_small.png'")
1439 (string-append "'" data "/icon_small.png'"))))
1440 #t))
1441 (replace 'install
1442 (lambda* (#:key outputs #:allow-other-keys)
1443 (let* ((out (assoc-ref outputs "out"))
1444 (bin (string-append out "/bin"))
1445 (roguebox-adventures
1446 (string-append bin "/roguebox-adventures"))
1447 (data (string-append
1448 out "/share/games/roguebox-adventures"))
1449 (lib (string-append data "/LIB"))
1450 (doc (string-append
1451 out "/share/doc/roguebox-adventures")))
1452 (mkdir-p bin)
1453 (mkdir-p doc)
07f3b379 1454
1697048f
KK
1455 (for-each (lambda (file)
1456 (copy-recursively file
1457 (string-append data "/" file)))
1458 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1459 "icon_big.png" "icon_small.png"))
1460 (for-each (lambda (file)
1461 (chmod file #o555)
1462 (install-file file lib))
1463 '("main.py" "run.py"))
07f3b379 1464
1697048f 1465 (copy-recursively "DOC" doc)
07f3b379 1466
1697048f
KK
1467 (call-with-output-file
1468 roguebox-adventures
1469 (lambda (p)
1470 (format p "\
1471#!~a
1472export PYTHONPATH=~a/LIB:~a
1473exec -a \"~a\" ~a \"$@\"\n"
1474 (which "bash") data (getenv "PYTHONPATH")
1475 (which "python3")
1476 (string-append lib "/main.py"))))
1477 (chmod roguebox-adventures #o555))
1478 #t)))))
1479 (native-inputs
1480 `(("unzip" ,unzip)))
1481 (inputs
1482 `(("python-pygame" ,python-pygame)
1483 ("python-tmx" ,python-tmx)))
1484 (home-page "https://rogueboxadventures.tuxfamily.org")
1485 (synopsis "A classical roguelike/sandbox game")
1486 (description
1487 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1488from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1489Adventures is to offer the player a kind of roguelike toy-world. This world
1490can be explored and changed freely.")
1697048f
KK
1491 ;; The GPL3+ is for code, the rest are for art.
1492 (license (list license:cc0
1493 license:cc-by3.0
1494 license:gpl3+
1495 license:silofl1.1))))
519bfc65 1496
a20b084a
JD
1497(define-public xshogi
1498 (package
1499 (name "xshogi")
1500 (version "1.4.2")
1501 (source
1502 (origin
1503 (method url-fetch)
1504 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1505 version ".tar.gz"))
1506 (sha256
1507 (base32
1508 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1509 (build-system gnu-build-system)
1510 (inputs
1511 `(("libxaw" ,libxaw)
1512 ("libxt" ,libxt)))
6fd52309 1513 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1514 (synopsis "User interface for gnushogi")
a20b084a
JD
1515 (description "A graphical user interface for the package @code{gnushogi}.")
1516 ;; Contains a copy of GPLv3 but the licence notices simply
1517 ;; state "GNU General Public Licence" without specifying a version.
1518 (license license:gpl1+)))
1519
649220ad 1520(define-public abbaye
3da5dca3 1521 (package
649220ad 1522 (name "abbaye")
efc12a81 1523 (version "2.0.1")
3da5dca3
DT
1524 (source
1525 (origin
feb50ac6
TGR
1526 (method git-fetch)
1527 (uri (git-reference
1528 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1529 (commit (string-append "v" version))))
1530 (file-name (git-file-name name version))
3da5dca3 1531 (sha256
feb50ac6 1532 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1533 (modules '((guix build utils)))
1534 (snippet
1535 ;; Unbundle fonts.
6cbee49d
MW
1536 '(begin
1537 (delete-file-recursively "fonts")
1538 #t))))
3da5dca3
DT
1539 (build-system gnu-build-system)
1540 (arguments
efc12a81 1541 '(#:make-flags '("CC=gcc")
aec05972
AK
1542 #:phases (modify-phases %standard-phases
1543 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1544 (lambda* (#:key inputs #:allow-other-keys)
1545 (setenv "CPATH"
1546 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1547 "/include/SDL:"
1548 (or (getenv "CPATH") "")))))
aec05972
AK
1549 (add-after 'patch-source-shebangs 'patch-makefile
1550 (lambda* (#:key outputs #:allow-other-keys)
1551 ;; Replace /usr with package output directory.
efc12a81
AFN
1552 (substitute* "Makefile"
1553 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1554 (add-before 'install 'make-install-dirs
1555 (lambda* (#:key outputs #:allow-other-keys)
1556 (let ((prefix (assoc-ref outputs "out")))
1557 ;; Create directories that the makefile assumes exist.
1558 (mkdir-p (string-append prefix "/bin"))
1559 (mkdir-p (string-append prefix "/share/applications"))
1560 (mkdir-p (string-append prefix "/share/pixmaps")))))
1561 ;; No configure script.
1562 (delete 'configure))
3da5dca3
DT
1563 #:tests? #f)) ;; No check target.
1564 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1565 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1566 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1567 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1568 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1569France. The Cathars, who preach about good Christian beliefs, were being
1570expelled by the Catholic Church out of the Languedoc region in France. One of
1571them, called Jean Raymond, found an old church in which to hide, not knowing
1572that beneath its ruins lay buried an ancient evil.")
efc12a81 1573 (license license:gpl3)))
a83c6a64 1574
649220ad
NG
1575(define-public l-abbaye-des-morts
1576 (deprecated-package "l-abbaye-des-morts" abbaye))
c91ed484 1577
b76c94e6
CAW
1578(define-public angband
1579 (package
1580 (name "angband")
e5e24819 1581 (version "4.2.0")
b76c94e6
CAW
1582 (source
1583 (origin
1584 (method url-fetch)
9a0d324a
EF
1585 (uri (string-append "http://rephial.org/downloads/"
1586 (version-major+minor version)
1587 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1588 (sha256
1589 (base32
e5e24819 1590 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1591 (modules '((guix build utils)))
1592 (snippet
1593 ;; So, some of the sounds/graphics/tilesets are under different
1594 ;; licenses... some of them even nonfree! This is a console-only
1595 ;; version of this package so we just remove them.
1596 ;; In the future, if someone tries to make a graphical variant of
1597 ;; this package, they can deal with that mess themselves. :)
1598 '(begin
6cbee49d
MW
1599 (for-each (lambda (subdir)
1600 (let ((lib-subdir (string-append "lib/" subdir)))
1601 (delete-file-recursively lib-subdir)))
1602 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1603 (substitute* "lib/Makefile"
e5e24819 1604 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1605 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1606 "gamedata customize help screens user"))
1607 #t))))
b76c94e6
CAW
1608 (build-system gnu-build-system)
1609 (arguments
aeb6d9a6 1610 `(#:tests? #f ; no check target
b76c94e6
CAW
1611 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1612 #:phases
1613 (modify-phases %standard-phases
9a0d324a 1614 (replace 'bootstrap
b76c94e6
CAW
1615 (lambda _
1616 (substitute* "acinclude.m4"
1617 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1618 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1619 (native-inputs
1620 `(("autoconf" ,autoconf)
1621 ("automake" ,automake)))
1622 (inputs `(("ncurses" ,ncurses)))
1623 (home-page "http://rephial.org/")
1624 (synopsis "Dungeon exploration roguelike")
1625 (description "Angband is a Classic dungeon exploration roguelike. Explore
1626the depths below Angband, seeking riches, fighting monsters, and preparing to
1627fight Morgoth, the Lord of Darkness.")
1628 (license license:gpl2)))
1629
a83c6a64
EB
1630(define-public pingus
1631 (package
1632 (name "pingus")
1633 (version "0.7.6")
1634 (source
1635 (origin
472c36bd
EF
1636 (method git-fetch)
1637 (uri (git-reference
4b889d3a 1638 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1639 (commit (string-append "v" version))))
1640 (file-name (git-file-name name version))
a83c6a64
EB
1641 (sha256
1642 (base32
472c36bd
EF
1643 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1644 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1645 "pingus-sdl-libs-config.patch"))
1646 (modules '((guix build utils)))
1647 (snippet
1648 '(begin
1649 (substitute* "src/pingus/screens/demo_session.cpp"
1650 (("#include <iostream>")
1651 ;; std::function moved to <functional> with C++ 11.
1652 ;; Remove this for versions newer than 0.7.6.
1653 "#include <iostream>\n#include <functional>"))
1654 #t))))
a83c6a64
EB
1655 (build-system gnu-build-system)
1656 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1657 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1658 (inputs `(("sdl" ,sdl)
1659 ("sdl-image" ,sdl-image)
1660 ("sdl-mixer" ,sdl-mixer)
1661 ("mesa" ,mesa)
00c09300 1662 ("glu" ,glu)
a83c6a64
EB
1663 ("libpng" ,libpng)
1664 ("boost" ,boost)))
1665 (arguments
3f3f8f49
AI
1666 '(#:make-flags (list (string-append "PREFIX=" %output))
1667 #:tests? #f ; no check target
a83c6a64 1668 #:phases
3f127147 1669 (modify-phases %standard-phases
3f3f8f49 1670 (delete 'configure)))) ; no configure script
5f578231 1671 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1672 (synopsis "Lemmings clone")
1673 (description
1674 "Pingus is a free Lemmings-like puzzle game in which the player takes
1675command of a bunch of small animals and has to guide them through levels.
1676Since the animals walk on their own, the player can only influence them by
1677giving them commands, like build a bridge, dig a hole, or redirect all animals
1678in the other direction. Multiple such commands are necessary to reach the
1679level's exit. The game is presented in a 2D side view.")
1680 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1681 (license license:gpl3+)))
dff62423
JD
1682
1683(define-public talkfilters
1684 (package
1685 (name "talkfilters")
1686 (version "2.3.8")
1687 (source
1688 (origin
1689 (method url-fetch)
1690 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1691 name "-" version ".tar.gz"))
dff62423
JD
1692 (sha256
1693 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1694 (build-system gnu-build-system)
6fd52309 1695 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1696 (synopsis "Convert English text to humorous dialects")
1697 (description "The GNU Talk Filters are programs that convert English text
1698into stereotyped or otherwise humorous dialects. The filters are provided as
1699a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1700 (license license:gpl2+)))
1701
3cf118a1
CS
1702(define-public cmatrix
1703 (package
1704 (name "cmatrix")
14736727 1705 (version "2.0")
3cf118a1
CS
1706 (source
1707 (origin
14736727
OP
1708 (method git-fetch)
1709 (uri (git-reference
1710 (url "https://github.com/abishekvashok/cmatrix.git")
1711 (commit (string-append "v" version))))
1712 (file-name (git-file-name name version))
3cf118a1
CS
1713 (sha256
1714 (base32
14736727 1715 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 1716 (build-system gnu-build-system)
14736727
OP
1717 (native-inputs
1718 `(("autoconf" ,autoconf)
1719 ("automake" ,automake)))
3cf118a1
CS
1720 (arguments
1721 '(#:phases
3f127147
TGR
1722 (modify-phases %standard-phases
1723 (replace 'configure
1724 (lambda* (#:key outputs #:allow-other-keys)
1725 ;; This old ‘configure’ script doesn't support
1726 ;; variables passed as arguments.
1727 (let ((out (assoc-ref outputs "out")))
1728 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1729 (invoke "./configure"
1730 (string-append "--prefix=" out))))))))
3cf118a1 1731 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1732 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1733 (synopsis "Simulate the display from \"The Matrix\"")
1734 (description "CMatrix simulates the display from \"The Matrix\" and is
1735based on the screensaver from the movie's website. It works with terminal
1736settings up to 132x300 and can scroll lines all at the same rate or
1737asynchronously and at a user-defined speed.")
024e2c17 1738 (license license:gpl2+)))
ae9cb418
JD
1739
1740(define-public chess
1741 (package
1742 (name "chess")
16fb1e79 1743 (version "6.2.5")
ae9cb418
JD
1744 (source
1745 (origin
1746 (method url-fetch)
1747 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1748 ".tar.gz"))
1749 (sha256
1750 (base32
16fb1e79 1751 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1752 (build-system gnu-build-system)
6fd52309 1753 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1754 (synopsis "Full chess implementation")
1755 (description "GNU Chess is a chess engine. It allows you to compete
1756against the computer in a game of chess, either through the default terminal
1757interface or via an external visual interface such as GNU XBoard.")
024e2c17 1758 (license license:gpl3+)))
ae9cb418 1759
a6b55314 1760(define freedink-engine
bb3b71ce
SB
1761 (package
1762 (name "freedink-engine")
2ee05bb9 1763 (version "109.6")
bb3b71ce
SB
1764 (source (origin
1765 (method url-fetch)
1766 (uri (string-append "mirror://gnu/freedink/freedink-" version
1767 ".tar.gz"))
1768 (sha256
1769 (base32
2ee05bb9 1770 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1771 (build-system gnu-build-system)
a9249f58
KK
1772 (arguments
1773 `(#:configure-flags '("--disable-embedded-resources")
1774 #:phases
1775 (modify-phases %standard-phases
1776 (add-after 'unpack 'disable-graphical-tests
1777 (lambda _
1778 ;; These tests require a graphical interface.
1779 (substitute* "src/Makefile.am"
1780 (("test_gfx_fonts TestIOGfxDisplay") ""))
1781 #t)))))
1782 (native-inputs `(("autoconf" ,autoconf)
1783 ("automake" ,automake)
1784 ("cxxtest" ,cxxtest)
1785 ("gettext" ,gettext-minimal)
1786 ("help2man" ,help2man)
bb3b71ce 1787 ("pkg-config" ,pkg-config)))
a9249f58
KK
1788 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1789 sdl2-ttf sdl2-gfx)))
bb3b71ce 1790 ("fontconfig" ,fontconfig)
a9249f58 1791 ("glm" ,glm)))
f9eab0be
EF
1792 (properties '((ftp-directory . "/freedink")
1793 (upstream-name . "freedink")))
6fd52309 1794 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1795 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1796 (description
1797 "GNU FreeDink is a free and portable re-implementation of the engine
1798for the role-playing game Dink Smallwood. It supports not only the original
1799game data files but it also supports user-produced game mods or \"D-Mods\".
1800To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1801 (license license:gpl3+)))
bb3b71ce 1802
a6b55314 1803(define freedink-data
bb3b71ce
SB
1804 (package
1805 (name "freedink-data")
32d92d2c 1806 (version "1.08.20190120")
bb3b71ce
SB
1807 (source (origin
1808 (method url-fetch)
1809 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1810 version ".tar.gz"))
bb3b71ce
SB
1811 (sha256
1812 (base32
32d92d2c 1813 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1814 (build-system gnu-build-system)
1815 (arguments
3f127147
TGR
1816 `(#:phases
1817 (modify-phases %standard-phases
1818 (delete 'configure) ; no configure script
1819 (delete 'check)) ; no tests
bb3b71ce 1820 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1821 (properties '((ftp-directory . "/freedink")))
6fd52309 1822 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1823 (synopsis "Game data for GNU Freedink")
1824 (description
1825 "This package contains the game data of GNU Freedink.")
024e2c17 1826 (license license:gpl3+)))
bb3b71ce 1827
2926e950
KK
1828(define-public freedink-dfarc
1829 (package
1830 (name "freedink-dfarc")
1831 (version "3.14")
1832 (source (origin
1833 (method url-fetch)
1834 (uri (string-append "mirror://gnu/freedink/dfarc-"
1835 version ".tar.gz"))
1836 (sha256
1837 (base32
1838 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1839 (build-system gnu-build-system)
1840 (native-inputs
1841 `(("intltool" ,intltool)))
1842 (inputs
1843 `(("bzip2" ,bzip2)
1844 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1845 (properties '((ftp-directory . "/freedink")
1846 (upstream-name . "dfarc")))
2926e950
KK
1847 (home-page "https://www.gnu.org/software/freedink/")
1848 (synopsis "Front-end for managing and playing Dink Modules")
1849 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1850and its numerous D-Mods.")
1851 (license license:gpl3+)))
bb3b71ce 1852
a6b55314
LC
1853(define-public freedink
1854 ;; This is a wrapper that tells the engine where to find the data.
1855 (package (inherit freedink-engine)
1856 (name "freedink")
1857 (build-system trivial-build-system)
1858 (arguments
1859 '(#:builder (begin
1860 (use-modules (guix build utils))
1861
1862 (let* ((output (assoc-ref %outputs "out"))
1863 (bin (string-append output "/bin"))
1864 (executable (string-append bin "/freedink")))
1865 (mkdir-p bin)
1866 (call-with-output-file executable
1867 (lambda (port)
1868 (format port "#!~a/bin/sh
1869exec ~a/bin/freedink -refdir ~a/share/dink\n"
1870 (assoc-ref %build-inputs "bash")
1871 (assoc-ref %build-inputs "engine")
1872 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1873 (chmod port #o777)))
1874 #t))
a6b55314
LC
1875 #:modules ((guix build utils))))
1876 (inputs `(("engine" ,freedink-engine)
1877 ("data" ,freedink-data)
1878 ("bash" ,bash)))
1879 (native-inputs '())))
1880
ae9cb418
JD
1881(define-public xboard
1882 (package
1883 (name "xboard")
9835458f 1884 (version "4.9.1")
ae9cb418
JD
1885 (source
1886 (origin
1887 (method url-fetch)
1888 (uri (string-append "mirror://gnu/xboard/xboard-" version
1889 ".tar.gz"))
1890 (sha256
1891 (base32
9835458f 1892 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1893 (build-system gnu-build-system)
4e530049
SB
1894 (inputs
1895 `(("gtk+" ,gtk+-2)
1896 ("librsvg" ,librsvg)))
9835458f
EF
1897 (native-inputs
1898 `(("texinfo" ,texinfo)
1899 ("pkg-config" ,pkg-config)))
6fd52309 1900 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1901 (synopsis "Graphical user interface for chess programs")
1902 (description "GNU XBoard is a graphical board for all varieties of chess,
1903including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1904and Makruk. Several lesser-known variants are also supported. It presents a
1905fully interactive graphical interface and it can load and save games in the
1906Portable Game Notation.")
024e2c17 1907 (license license:gpl3+)))
11c38cbe 1908
a21b42e2
SB
1909(define-public gtypist
1910 (package
1911 (name "gtypist")
1912 (version "2.9.5")
1913 (source (origin
1914 (method url-fetch)
1915 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1916 version ".tar.xz"))
1917 (sha256
1918 (base32
1919 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1920 (modules '((guix build utils)))
1921 (snippet
1922 ;; We do not provide `ncurses.h' within an `ncursesw'
1923 ;; sub-directory, so patch the source accordingly. See
1924 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
1925 '(begin
1926 (for-each (lambda (file)
1927 (substitute* file
1928 (("ncursesw/ncurses.h")
1929 "ncurses.h")))
1930 (find-files "." "configure$|\\.c$"))
1931 #t))))
a21b42e2
SB
1932 (build-system gnu-build-system)
1933 (inputs `(("ncurses" ,ncurses)
1934 ("perl" ,perl)))
6fd52309 1935 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1936 (synopsis "Typing tutor")
1937 (description
1938 "GNU Typist is a universal typing tutor. It can be used to learn and
1939practice touch-typing. Several tutorials are included; in addition to
1940tutorials for the standard QWERTY layout, there are also tutorials for the
1941alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1942are primarily in English, however some in other languages are provided.")
024e2c17 1943 (license license:gpl3+)))
13d18626 1944
024e2c17
DT
1945(define-public irrlicht
1946 (package
1947 (name "irrlicht")
f90b2dbd 1948 (version "1.8.4")
024e2c17
DT
1949 (source (origin
1950 (method url-fetch)
1951 (uri (string-append
1952 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1953 (version-major+minor version)
1954 "/" version "/irrlicht-" version ".zip"))
1955 (sha256
1956 (base32
7b8a7536
EF
1957 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1958 (patches (search-patches "irrlicht-use-system-libs.patch"))
1959 (modules '((guix build utils)))
1960 (snippet
1961 '(begin
1962 (for-each delete-file-recursively
1963 '("bin" ; bundled compiled Windows binaries"
1964 "source/Irrlicht/MacOSX"
1965 "source/Irrlicht/bzip2"
1966 "source/Irrlicht/jpeglib"
1967 "source/Irrlicht/libpng"
1968 "source/Irrlicht/lzma"
1969 "source/Irrlicht/zlib"))
1970 (delete-file "source/Irrlicht/glext.h")
1971 (delete-file "source/Irrlicht/glxext.h")
1972 (delete-file "source/Irrlicht/wglext.h")
1973 #t))))
024e2c17
DT
1974 (build-system gnu-build-system)
1975 (arguments
3f127147
TGR
1976 `(#:phases
1977 (modify-phases %standard-phases
7b8a7536
EF
1978 (add-after 'unpack 'chdir-to-source
1979 (lambda _
1980 ;; The actual source is buried a few directories deep.
1981 (chdir "source/Irrlicht/")
1982 #t))
1983 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
1984 (lambda* (#:key outputs #:allow-other-keys)
1985 (let ((out (assoc-ref outputs "out")))
1986 (substitute* "Makefile"
1987 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
1988 (string-append "INSTALL_DIR = " out "/lib"))
1989 ;; Add '-fpermissive' to the CXXFLAGS
1990 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
1991 ;; The Makefile assumes these directories exist.
1992 (mkdir-p (string-append out "/lib"))
1993 (mkdir-p (string-append out "/include")))))
3f127147
TGR
1994 (delete 'configure)) ; no configure script
1995 #:tests? #f ; no check target
024e2c17 1996 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 1997 (inputs
7b8a7536
EF
1998 `(("bzip2" ,bzip2)
1999 ("libjpeg" ,libjpeg)
2000 ("libpng" ,libpng)
2001 ("libx11" ,libx11)
2002 ("libxxf86vm" ,libxxf86vm)
2003 ("mesa" ,mesa)))
024e2c17
DT
2004 (synopsis "3D game engine written in C++")
2005 (description
2006 "The Irrlicht Engine is a high performance realtime 3D engine written in
2007C++. Features include an OpenGL renderer, extensible materials, scene graph
2008management, character animation, particle and other special effects, support
2009for common mesh file formats, and collision detection.")
2010 (home-page "http://irrlicht.sourceforge.net/")
2011 (license license:zlib)))
7e51e5bc 2012
c23c50c7
RW
2013(define-public mars
2014 ;; The latest release on SourceForge relies on an unreleased version of SFML
2015 ;; with a different API, so we take the latest version from the official
2016 ;; repository on Github.
698bd297 2017 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
2018 (revision "1"))
2019 (package
2020 (name "mars")
698bd297 2021 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
2022 (source (origin
2023 (method git-fetch)
2024 (uri (git-reference
2025 (url "https://github.com/thelaui/M.A.R.S..git")
2026 (commit commit)))
00a82e83 2027 (file-name (git-file-name name version))
c23c50c7
RW
2028 (sha256
2029 (base32
2030 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
2031 (patches (search-patches "mars-sfml-2.3.patch"
2032 "mars-install.patch"))))
c23c50c7
RW
2033 (build-system cmake-build-system)
2034 (arguments
2035 `(#:tests? #f ; There are no tests
2036 #:phases
2037 (modify-phases %standard-phases
2038 (add-after 'unpack 'fix-install-path
2039 (lambda _
2040 (substitute* "src/CMakeLists.txt"
2041 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
2042 "${CMAKE_INSTALL_PREFIX}/bin"))
2043 #t))
2044 (add-after 'unpack 'fix-data-path
2045 (lambda* (#:key outputs #:allow-other-keys)
2046 (substitute* "src/System/settings.cpp"
2047 (("C_dataPath = \"./data/\";")
2048 (string-append "C_dataPath = \""
2049 (assoc-ref outputs "out")
2050 "/share/games/marsshooter/\";")))
2051 #t)))))
2052 (inputs
2053 `(("mesa" ,mesa)
2054 ("fribidi" ,fribidi)
2055 ("taglib" ,taglib)
2056 ("sfml" ,sfml)))
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)
c463dd47 2146 ("libjpeg" ,libjpeg)
7fc90282 2147 ("libpng" ,libpng)
6e206ac7
DT
2148 ("libogg" ,libogg)
2149 ("libvorbis" ,libvorbis)
7fc90282 2150 ("libxxf86vm" ,libxxf86vm)
6e206ac7 2151 ("luajit" ,luajit)
7fc90282 2152 ("mesa" ,mesa)
165dc8bd 2153 ("ncurses" ,ncurses)
7fc90282 2154 ("openal" ,openal)
6e206ac7
DT
2155 ("sqlite" ,sqlite)))
2156 (propagated-inputs
2157 `(("minetest-data" ,minetest-data)))
2158 (synopsis "Infinite-world block sandbox game")
2159 (description
2160 "Minetest is a sandbox construction game. Players can create and destroy
2161various types of blocks in a three-dimensional open world. This allows
2162forming structures in every possible creation, on multiplayer servers or as a
2163single player. Mods and texture packs allow players to personalize the game
2164in different ways.")
b7388a08 2165 (home-page "https://www.minetest.net/")
6e206ac7 2166 (license license:lgpl2.1+)))
77264d15
SB
2167
2168(define glkterm
2169 (package
2170 (name "glkterm")
2171 (version "1.0.4")
2172 (source
2173 (origin
2174 (method url-fetch)
2175 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2176 "glk/implementations/glkterm-104.tar.gz"))
2177 (sha256
2178 (base32
2179 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2180 (build-system gnu-build-system)
2181 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2182 (arguments
2183 '(#:tests? #f ; no check target
2184 #:phases
3f127147
TGR
2185 (modify-phases %standard-phases
2186 (replace 'install
2187 (lambda* (#:key outputs #:allow-other-keys)
2188 (let* ((out (assoc-ref outputs "out"))
2189 (inc (string-append out "/include"))
2190 (lib (string-append out "/lib")))
3f127147
TGR
2191 (for-each
2192 (lambda (file)
2193 (install-file file inc))
2194 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
2195 (install-file "libglkterm.a" lib))
2196 #t))
2197 (delete 'configure)))) ; no configure script
77264d15
SB
2198 (home-page "http://www.eblong.com/zarf/glk/")
2199 (synopsis "Curses Implementation of the Glk API")
2200 (description
2201 "Glk defines a portable API for applications with text UIs. It was
2202primarily designed for interactive fiction, but it should be suitable for many
2203interactive text utilities, particularly those based on a command line.
2204This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 2205using the @code{curses.h} library for screen control.")
77264d15
SB
2206 (license (license:fsf-free "file://README"))))
2207
2208(define-public glulxe
2209 (package
2210 (name "glulxe")
b2e3d59c 2211 (version "0.5.4")
77264d15
SB
2212 (source
2213 (origin
2214 (method url-fetch)
2215 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 2216 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2217 (sha256
2218 (base32
b2e3d59c 2219 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2220 (build-system gnu-build-system)
2221 (inputs `(("glk" ,glkterm)))
2222 (arguments
3f127147 2223 '(#:tests? #f ; no check target
77264d15
SB
2224 #:make-flags
2225 (let* ((glk (assoc-ref %build-inputs "glk")))
2226 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2227 (string-append "GLKLIBDIR=" glk "/lib")
2228 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2229 #:phases
3f127147
TGR
2230 (modify-phases %standard-phases
2231 (replace 'install
2232 (lambda* (#:key outputs #:allow-other-keys)
2233 (let* ((out (assoc-ref outputs "out"))
2234 (bin (string-append out "/bin")))
3f127147
TGR
2235 (install-file "glulxe" bin))
2236 #t))
2237 (delete 'configure)))) ; no configure script
bac03797 2238 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
2239 (synopsis "Interpreter for Glulx VM")
2240 (description
2241 "Glulx is a 32-bit portable virtual machine intended for writing and
2242playing interactive fiction. It was designed by Andrew Plotkin to relieve
2243some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2244reference interpreter, using the Glk API.")
b2e3d59c 2245 (license license:expat)))
72b703cd 2246
ce94fcfd
CB
2247(define-public fifechan
2248 (package
2249 (name "fifechan")
2250 (version "0.1.5")
2251 (source (origin
2252 (method url-fetch)
2253 (uri (string-append "https://codeload.github.com/fifengine/"
2254 "fifechan/tar.gz/" version))
2255 (file-name (string-append name "-" version ".tar.gz"))
2256 (sha256
2257 (base32
2258 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2259 (build-system cmake-build-system)
2260 (inputs
2261 `(("sdl2" ,sdl2)
2262 ("sdl2-image" ,sdl2-image)
2263 ("mesa" ,mesa)))
2264 (arguments
2265 '(#:tests? #f)) ; No included tests
2266 (home-page "https://fifengine.github.io/fifechan/")
2267 (synopsis "Cross platform GUI library specifically for games")
2268 (description
2269 "Fifechan is a lightweight cross platform GUI library written in C++
2270specifically designed for games. It has a built in set of extendable GUI
2271Widgets, and allows users to create more.")
2272 (license license:lgpl2.1+)))
2273
2372a5f9
CB
2274(define-public fifengine
2275 (package
2276 (name "fifengine")
2277 (version "0.4.2")
2278 (source (origin
2279 (method url-fetch)
2280 (uri (string-append "https://codeload.github.com/fifengine/"
2281 "fifengine/tar.gz/" version))
2282 (file-name (string-append name "-" version ".tar.gz"))
2283 (sha256
2284 (base32
2285 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2286 (build-system cmake-build-system)
2287 (arguments
2288 `(#:tests? #f ; TODO The test running fails to run some tests.
2289 #:modules ((srfi srfi-1)
2290 (guix build cmake-build-system)
2291 (guix build utils))
2292 #:configure-flags
2293 (list
2294 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2295 (assoc-ref %build-inputs "openal")
2296 "/include/AL")
2297 (string-append "-DPYTHON_SITE_PACKAGES="
2298 (assoc-ref %outputs "out")
2299 "/lib/python3.7/site-packages"))
2300 #:phases
2301 (modify-phases %standard-phases
2302 (add-after 'unpack 'patch-run_tests.py
2303 (lambda _
2304 ;; Patch the test runner to exit with a status of 1 if any test
2305 ;; fails, to allow detecting failures.
2306 (substitute* "run_tests.py"
2307 (("ERROR\\. One or more tests failed!'\\)")
2308 "ERROR. One or more tests failed!')
2309\t\texit(1)"))
2310 #t))
2311 ;; Run tests after installation so that we can make use of the built
2312 ;; python modules.
2313 (delete 'check)
2314 (add-after 'install 'check
2315 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2316 (define python-version
2317 (let* ((version (last (string-split
2318 (assoc-ref inputs "python")
2319 #\-)))
2320 (components (string-split version #\.))
2321 (major+minor (take components 2)))
2322 (string-join major+minor ".")))
2323
2324 (when tests?
2325 ;; Set PYTHONPATH so that python finds the installed modules.
2326 (setenv "PYTHONPATH"
2327 (string-append (getenv "PYTHONPATH") ":"
2328 (assoc-ref outputs "out")
2329 "/lib/python"
2330 python-version
2331 "/site-packages"))
2332 ;; The tests require an X server.
2333 (system "Xvfb :1 &")
2334 (setenv "DISPLAY" ":1")
2335 (setenv "XDG_RUNTIME_DIR" "/tmp")
2336 ;; Run tests
2337 (chdir ,(string-append "../" name "-" version))
2338 (invoke "python3" "run_tests.py" "-a"))
2339 #t)))))
2340 (inputs
2341 `(("sdl2" ,sdl2)
2342 ("sdl2-image" ,sdl2-image)
2343 ("sdl2-ttf" ,sdl2-ttf)
2344 ("tinyxml" ,tinyxml)
2345 ("openal" ,openal)
2346 ("libogg" ,libogg)
2347 ("glew" ,glew)
2348 ("libvorbis" ,libvorbis)
2349 ("boost" ,boost)
2350 ("fifechan" ,fifechan)
2351 ("swig" ,swig)
2352 ("python" ,python)))
2353 (native-inputs
2354 `(("python" ,python)
2355 ("swig" ,swig)
2356 ("xvfb" ,xorg-server)))
2357 (propagated-inputs
2358 `(("python-future" ,python-future)))
2359 (home-page "https://www.fifengine.net/")
2360 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2361 (description
2362 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2363isometric game engine. Python bindings are included allowing users to create
2364games using Python as well as C++.")
2365 (license license:lgpl2.1+)))
2366
35481e8b
SB
2367(define-public fizmo
2368 (package
2369 (name "fizmo")
50e1d36c 2370 (version "0.8.5")
35481e8b
SB
2371 (source (origin
2372 (method url-fetch)
6ad191ba 2373 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2374 "fizmo-" version ".tar.gz"))
35481e8b
SB
2375 (sha256
2376 (base32
50e1d36c 2377 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2378 (build-system gnu-build-system)
2379 (arguments
2380 '(#:configure-flags
2381 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2382 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2383 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2384 (native-inputs
2385 `(("pkg-config" ,pkg-config)))
2386 (inputs
32199e9a
KK
2387 `(("freetype" ,freetype)
2388 ("libjpeg" ,libjpeg)
35481e8b
SB
2389 ("libpng" ,libpng)
2390 ("libsndfile" ,libsndfile)
2391 ("libxml2" ,libxml2)
2392 ("ncurses" ,ncurses)
32199e9a 2393 ("sdl2" ,sdl2)))
6ad191ba 2394 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2395 (synopsis "Z-machine interpreter")
2396 (description
2397 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2398interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2399either by Infocom or created using the Inform compiler.")
2400 (license license:bsd-3)))
2401
fc936b65
DH
2402(define-public gnugo
2403 (package
2404 (name "gnugo")
2405 (version "3.8")
2406 (source (origin
2407 (method url-fetch)
2408 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2409 ".tar.gz"))
2410 (sha256
2411 (base32
2412 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2413 (build-system gnu-build-system)
2414 (inputs `(("readline" ,readline)))
4cc78cb3 2415 (synopsis "Play the game of Go")
7c125ce0
AK
2416 (description
2417 "GNU Go is a program that plays the game of Go, in which players
2418place stones on a grid to form territory or capture other stones. While
2419it can be played directly from the terminal, rendered in ASCII characters,
2420it is also possible to play GNU Go with 3rd party graphical interfaces or
2421even in Emacs. It supports the standard game storage format (SGF, Smart
2422Game Format) and inter-process communication format (GMP, Go Modem
2423Protocol).")
6fd52309 2424 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2425 (license license:gpl3+)))
67fa7a27
CAW
2426
2427(define-public extremetuxracer
2428 (package
2429 (name "extremetuxracer")
101460d4 2430 (version "0.7.5")
67fa7a27
CAW
2431 (source (origin
2432 (method url-fetch)
2433 (uri (string-append
966a543b 2434 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2435 version "/etr-" version ".tar.xz"))
2436 (sha256
2437 (base32
101460d4 2438 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2439 (build-system gnu-build-system)
2440 (native-inputs
2441 `(("pkg-config" ,pkg-config)))
2442 (inputs
b8a35cce
RW
2443 `(("glu" ,glu)
2444 ("sfml" ,sfml)))
5bc0ac96
TGR
2445 (synopsis "High-speed arctic racing game based on Tux Racer")
2446 ;; Snarfed straight from Debian.
67fa7a27
CAW
2447 (description "Extreme Tux Racer, or etracer as it is called for short, is
2448a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2449game is to slide down a snow- and ice-covered mountain as quickly as possible,
2450avoiding the trees and rocks that will slow you down.
2451
2452Collect herrings and other goodies while sliding down the hill, but avoid fish
2453bones.
2454
2455This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2456 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2457 (license license:gpl2+)))
7a4d0509 2458
1a0633e7
RW
2459(define-public supertuxkart
2460 (package
2461 (name "supertuxkart")
3747ecb1 2462 (version "1.1")
1a0633e7
RW
2463 (source
2464 (origin
2465 (method url-fetch)
2466 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2467 version "/supertuxkart-" version "-src.tar.xz"))
2468 (sha256
2469 (base32
3747ecb1 2470 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
2471 (modules '((guix build utils)))
2472 (snippet
2473 ;; Delete bundled library sources
2474 '(begin
56a48582
PL
2475 ;; Supertuxkart uses modified versions of the Irrlicht engine
2476 ;; and the bullet library. The developers gave an explanation
2477 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 2478 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
2479 (for-each delete-file-recursively
2480 '("lib/zlib"
2481 "lib/libpng"
2482 "lib/jpeglib"
2483 "lib/glew"
56a48582
PL
2484 "lib/wiiuse"
2485 "lib/enet"))
1a0633e7
RW
2486 #t))))
2487 (build-system cmake-build-system)
2488 (arguments
2489 `(#:tests? #f ; no check target
2490 #:configure-flags
2491 (list "-DUSE_WIIUSE=0"
56a48582 2492 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2493 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2494 "-DUSE_SYSTEM_GLEW=TRUE"
2495 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
2496 ;; In order to use the system ENet library, IPv6 support (added in
2497 ;; SuperTuxKart version 1.1) must be disabled.
2498 "-DUSE_IPV6=FALSE"
17c3f776
RH
2499 ;; FIXME: needs libopenglrecorder
2500 "-DBUILD_RECORDER=0"
1a0633e7 2501 ;; Irrlicht returns an integer instead of a boolean
56a48582 2502 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2503 (inputs
2504 `(("glew" ,glew)
2505 ("zlib" ,zlib)
2506 ("openal" ,openal)
2507 ("libvorbis" ,libvorbis)
2508 ("freetype" ,freetype)
2509 ("fribidi" ,fribidi)
3747ecb1 2510 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
2511 ("mesa" ,mesa)
2512 ("libx11" ,libx11)
2513 ("libxrandr" ,libxrandr)
2514 ("curl" ,curl)
2515 ;; The following input is needed to build the bundled and modified
2516 ;; version of irrlicht.
60af1822 2517 ("libjpeg" ,libjpeg)
56a48582
PL
2518 ("openssl" ,openssl)
2519 ("enet" ,enet)))
1a0633e7
RW
2520 (native-inputs
2521 `(("pkg-config" ,pkg-config)))
3747ecb1 2522 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
2523 (synopsis "3D kart racing game")
2524 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2525having fun over realism. You can play with up to 4 friends on one PC, racing
2526against each other or just trying to beat the computer; single-player mode is
2527also available.")
2528 (license license:gpl3+)))
2529
a1c1943b
CB
2530(define-public unknown-horizons
2531 (package
2532 (name "unknown-horizons")
2533 (version "2019.1")
2534 (source (origin
2535 (method url-fetch)
2536 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2537 "unknown-horizons/tar.gz/" version))
2538 (file-name (string-append name "-" version ".tar.gz"))
2539 (sha256
2540 (base32
2541 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2542 (build-system python-build-system)
2543 (arguments
2544 '(#:phases
2545 (modify-phases %standard-phases
2546 (add-before 'build 'set-HOME
2547 (lambda _
2548 (setenv "HOME" "/tmp")))
2549 (add-after 'build 'build-extra
2550 (lambda _
2551 (invoke "python3" "./setup.py" "build_i18n")
2552 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2553 #t))
2554 (add-after 'install 'patch
2555 (lambda* (#:key outputs #:allow-other-keys)
2556 (let ((out (assoc-ref outputs "out")))
2557 (substitute* (string-append out "/bin/unknown-horizons")
2558 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2559 (string-append "os.chdir(\""
2560 (assoc-ref outputs "out")
2561 "/share/unknown-horizons\")"))))
2562 #t))
2563 ;; TODO: Run GUI tests as well
2564 (replace 'check
2565 (lambda _
2566 (substitute* "horizons/constants.py"
2567 (("IS_DEV_VERSION = False")
2568 "IS_DEV_VERSION = True"))
2569 (invoke "pytest" "tests")
2570 (substitute* "horizons/constants.py"
2571 (("IS_DEV_VERSION = True")
2572 "IS_DEV_VERSION = False"))
2573 #t)))))
2574 (inputs
2575 `(("fifengine" ,fifengine)
2576 ("python:tk" ,python "tk")
2577 ("python-pillow" ,python-pillow)
2578 ("python-pyyaml" ,python-pyyaml)))
2579 (native-inputs
2580 `(("intltool" ,intltool)
2581
2582 ;; Required for tests
2583 ("python-greenlet" ,python-greenlet)
2584 ("python-polib" ,python-polib)
2585 ("python-pytest" ,python-pytest)
2586 ("python-pytest-mock" ,python-pytest-mock)))
2587 (home-page "http://unknown-horizons.org/")
2588 (synopsis "Isometric realtime strategy, economy and city building simulation")
2589 (description
2590 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2591on economy and city building. Expand your small settlement to a strong and
2592wealthy colony, collect taxes and supply your inhabitants with valuable
2593goods. Increase your power with a well balanced economy and with strategic
2594trade and diplomacy.")
2595 (license (list
2596 license:gpl2+ ; Covers code
2597 license:expat ; tests/dummy.py, ext/polib.py
2598 license:cc-by-sa3.0 ; Covers some media content
2599 license:cc-by3.0 ; Covers some media content
2600 license:bsd-3)))) ; horizons/ext/speaklater.py
2601
7a4d0509
SB
2602(define-public gnujump
2603 (package
2604 (name "gnujump")
2605 (version "1.0.8")
2606 (source (origin
2607 (method url-fetch)
2608 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2609 version ".tar.gz"))
2610 (sha256
2611 (base32
2612 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2613 (build-system gnu-build-system)
2614 (arguments
2615 '(#:phases
2616 (modify-phases %standard-phases
2617 (add-before
2618 'configure 'link-libm
18a613fb
EF
2619 (lambda _ (setenv "LIBS" "-lm")))
2620 (add-after 'install 'create-desktop-entry
2621 (lambda* (#:key outputs #:allow-other-keys)
2622 (let* ((out (assoc-ref outputs "out"))
2623 (apps (string-append out "/share/applications")))
2624 (mkdir-p apps)
2625 (with-output-to-file
2626 (string-append apps "/gnujump.desktop")
2627 (lambda _
2628 (format #t
2629 "[Desktop Entry]~@
2630 Name=GNUjump~@
2631 Comment=Jump up the tower to survive~@
2632 Exec=~a/bin/gnujump~@
2633 Terminal=false~@
2634 Type=Application~@
2635 Categories=Game;ArcadeGame~%"
2636 out)))))))))
7a4d0509
SB
2637 (inputs
2638 `(("glu" ,glu)
b3546174 2639 ("mesa" ,mesa)
7a4d0509
SB
2640 ("sdl" ,sdl)
2641 ("sdl-image" ,sdl-image)
2642 ("sdl-mixer" ,sdl-mixer)))
2643 (home-page "http://gnujump.es.gnu.org/")
2644 (synopsis
2645 "Game of jumping to the next floor, trying not to fall")
2646 (description
2647 "GNUjump is a simple, yet addictive game in which you must jump from
2648platform to platform to avoid falling, while the platforms drop at faster rates
2649the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2650falling, themeable graphics and sounds, and replays.")
2651 (license license:gpl3+)))
159093a7 2652
649220ad 2653(define-public wesnoth
159093a7 2654 (package
649220ad 2655 (name "wesnoth")
b6f1c6bb 2656 (version "1.14.11")
159093a7
SB
2657 (source (origin
2658 (method url-fetch)
de67e922 2659 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2660 (version-major+minor version)
2661 "/wesnoth-" version "/"
2662 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2663 (sha256
2664 (base32
b6f1c6bb 2665 "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
159093a7
SB
2666 (build-system cmake-build-system)
2667 (arguments
03f0b5e2
MB
2668 `(#:tests? #f ;no check target
2669 #:phases (modify-phases %standard-phases
2670 (add-before 'configure 'treat-boost-as-system-header
2671 (lambda* (#:key inputs #:allow-other-keys)
2672 (let ((boost (assoc-ref inputs "boost")))
2673 ;; Ensure Boost is treated as "system headers" to
2674 ;; pacify compiler warnings induced by Boost headers.
2675 (for-each (lambda (variable)
2676 (setenv variable
2677 (string-append boost "/include:"
2678 (or (getenv variable)
2679 ""))))
2680 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2681 #t))))))
159093a7 2682 (native-inputs
b94a6ca0 2683 `(("gettext" ,gettext-minimal)
159093a7
SB
2684 ("pkg-config" ,pkg-config)))
2685 (inputs
2686 `(("boost" ,boost)
2687 ("dbus" ,dbus)
2688 ("fribidi" ,fribidi)
2689 ("libvorbis" ,libvorbis)
e554d43d 2690 ("openssl" ,openssl)
159093a7 2691 ("pango" ,pango)
e554d43d
AI
2692 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2693 (home-page "https://www.wesnoth.org/")
159093a7
SB
2694 (synopsis "Turn-based strategy game")
2695 (description
2696 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2697with several single player campaigns, and multiplayer games (both networked and
2698local).
2699
2700Battle for control on a range of maps, using variety of units which have
2701advantages and disadvantages against different types of attacks. Units gain
2702experience and advance levels, and are carried over from one scenario to the
2703next campaign.")
2704 (license license:gpl2+)))
c449a076 2705
649220ad
NG
2706(define-public the-battle-for-wesnoth
2707 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2708
649220ad 2709(define-public wesnoth-server
75abd864 2710 (package
649220ad
NG
2711 (inherit wesnoth)
2712 (name "wesnoth-server")
75abd864
AI
2713 (inputs
2714 `(("boost" ,boost)
e554d43d
AI
2715 ("icu4c" ,icu4c)
2716 ("openssl" ,openssl)
2717 ("sdl2" ,sdl2)))
75abd864 2718 (arguments
e554d43d
AI
2719 `(#:configure-flags '("-DENABLE_GAME=OFF")
2720 ,@(package-arguments wesnoth)))
75abd864
AI
2721 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2722 (description "This package contains a dedicated server for @emph{The
2723Battle for Wesnoth}.")))
2724
649220ad
NG
2725(define-public the-battle-for-wesnoth-server
2726 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2727
c449a076
EB
2728(define-public gamine
2729 (package
2730 (name "gamine")
87683add 2731 (version "1.6")
c449a076
EB
2732 (source (origin
2733 (method url-fetch)
2734 (uri (string-append "mirror://sourceforge/gamine-game/"
2735 "gamine-" version ".tar.gz"))
2736 (sha256
2737 (base32
87683add 2738 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2739 (build-system gnu-build-system)
2740 (native-inputs
2741 `(("pkg-config" ,pkg-config)
2742 ("intltool" ,intltool)))
2743 (inputs
2744 `(("gstreamer" ,gstreamer)
87683add
TGR
2745 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2746 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2747 ("gtk+" ,gtk+)))
2748 (arguments
2749 `(#:tests? #f
2750 #:make-flags
2751 (let ((out (assoc-ref %outputs "out")))
2752 (list (string-append "PREFIX=" out)
2753 (string-append "SYSCONFDIR=" out "/etc")))
2754 #:phases
2755 (modify-phases %standard-phases
2756 (delete 'configure)
2757 (add-after
2758 'install 'wrap-gamine
2759 (lambda* (#:key outputs #:allow-other-keys)
2760 (let ((out (assoc-ref outputs "out"))
2761 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2762 (wrap-program (string-append out "/bin/gamine")
2763 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2764 #t)))))
2765 (home-page "http://gamine-game.sourceforge.net/")
2766 (synopsis "Mouse and keyboard discovery for children")
2767 (description
2768 "Gamine is a game designed for young children who are learning to use the
2769mouse and keyboard. The child uses the mouse to draw colored dots and lines
2770on the screen and keyboard to display letters.")
2771 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2772 (license license:gpl3)))
2773
2e2ed3cb
AK
2774(define-public manaplus
2775 (package
2776 (name "manaplus")
2b744c21 2777 (version "1.9.3.23")
2e2ed3cb
AK
2778 (source (origin
2779 (method url-fetch)
2780 (uri (string-append
074dd909 2781 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2782 version "/manaplus-" version ".tar.xz"))
2783 (sha256
2784 (base32
2b744c21 2785 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2786 (build-system gnu-build-system)
2787 (arguments
2788 '(#:configure-flags
2789 (list (string-append "CPPFLAGS=-I"
2790 (assoc-ref %build-inputs "sdl-union")
2791 "/include/SDL"))))
2792 (native-inputs
2793 `(("pkg-config" ,pkg-config)))
2794 (inputs
2795 `(("glu" ,glu)
2796 ("curl" ,curl)
2797 ("libxml2" ,libxml2)
2798 ("mesa" ,mesa)
2e2ed3cb 2799 ("sdl-union" ,(sdl-union))))
074dd909 2800 (home-page "https://manaplus.org")
2e2ed3cb
AK
2801 (synopsis "Client for 'The Mana World' and similar games")
2802 (description
2803 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2804fully supported client for @uref{http://www.themanaworld.org, The mana
2805world}, @uref{http://evolonline.org, Evol Online} and
2806@uref{http://landoffire.org, Land of fire}.")
2807 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2808 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2809 ;; The rest is under GPL2+.
2810 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2811
e9687748
AS
2812(define openttd-engine
2813 (package
2814 (name "openttd-engine")
532dba49 2815 (version "1.9.3")
e9687748
AS
2816 (source
2817 (origin (method url-fetch)
532dba49 2818 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2819 version "/openttd-" version "-source.tar.xz"))
2820 (sha256
2821 (base32
532dba49 2822 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2823 (modules '((guix build utils)))
2824 (snippet
2825 ;; The DOS port contains proprietary software.
6cbee49d
MW
2826 '(begin
2827 (delete-file-recursively "os/dos")
2828 #t))))
e9687748
AS
2829 (build-system gnu-build-system)
2830 (arguments
2831 `(#:tests? #f ; no "check" target
2832 #:phases
2833 (modify-phases %standard-phases
2834 ;; The build process fails if the configure script is passed the
2835 ;; option "--enable-fast-install".
2836 (replace 'configure
857b2f53
AI
2837 (lambda* (#:key inputs outputs (configure-flags '())
2838 #:allow-other-keys)
e9687748
AS
2839 (let ((out (assoc-ref outputs "out"))
2840 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2841 (apply invoke "./configure"
2842 (string-append "--prefix=" out)
2843 ;; Provide the "lzo" path.
2844 (string-append "--with-liblzo2="
2845 lzo "/lib/liblzo2.a")
2846 ;; Put the binary in 'bin' instead of 'games'.
2847 "--binary-dir=bin"
2848 configure-flags)))))))
e9687748
AS
2849 (native-inputs `(("pkg-config" ,pkg-config)))
2850 (inputs
3a48d055 2851 `(("allegro" ,allegro)
e9687748
AS
2852 ("fontconfig" ,fontconfig)
2853 ("freetype" ,freetype)
2854 ("icu4c" ,icu4c)
2855 ("libpng" ,libpng)
2856 ("lzo" ,lzo)
2857 ("sdl" ,sdl)
2858 ("xz" ,xz)
2859 ("zlib" ,zlib)))
4cb0b5bf 2860 (synopsis "Transportation economics simulator game")
e9687748
AS
2861 (description "OpenTTD is a game in which you transport goods and
2862passengers by land, water and air. It is a re-implementation of Transport
2863Tycoon Deluxe with many enhancements including multiplayer mode,
2864internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2865autoreplace and autoupdate vehicles. This package only includes the game
2866engine. When you start it you will be prompted to download a graphics set.")
532dba49 2867 (home-page "https://www.openttd.org/")
e9687748
AS
2868 ;; This package is GPLv2, except for a few files located in
2869 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2870 ;; licenses. In addition, this software contains an in-game downloader
2871 ;; from which the user may find non-functional data licensed under
2872 ;; different terms.
2873 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2874
4df9495e
KK
2875(define openttd-opengfx
2876 (package
2877 (name "openttd-opengfx")
894fbb33 2878 (version "0.5.5")
4df9495e
KK
2879 (source
2880 (origin
2881 (method url-fetch)
2882 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2883 version "/opengfx-" version "-source.tar.xz"))
2884 (sha256
2885 (base32
894fbb33 2886 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2887 (build-system gnu-build-system)
2888 (arguments
2889 '(#:make-flags (list "CC=gcc"
2890 (string-append "INSTALL_DIR="
2891 (assoc-ref %outputs "out")
857b2f53 2892 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2893 #:phases
2894 (modify-phases %standard-phases
2895 (replace 'configure
2896 (lambda _
2897 ;; Make sure HOME is writable for GIMP.
2898 (setenv "HOME" (getcwd))
2899
2900 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2901 ;; dos2unix from receiving its version information as a flag.
2902 (substitute* "Makefile"
2903 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2904 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2905 ;; The check phase for this package only checks the md5sums of the built
2906 ;; GRF files against the md5sums of the release versions. Because we use
2907 ;; different software versions than upstream does, some of the md5sums
2908 ;; are different. However, the package is still reproducible, it's safe
2909 ;; to disable this test.
c0959cc9
AI
2910 #:tests? #f
2911 #:parallel-build? #f))
4df9495e
KK
2912 (native-inputs `(("dos2unix" ,dos2unix)
2913 ("gimp" ,gimp)
2914 ("grfcodec" ,grfcodec)
2915 ("nml" ,nml)
2916 ("python" ,python-2)))
2917 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2918 (synopsis "Base graphics set for OpenTTD")
2919 (description
2920 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2921set that aims to ensure the best possible out-of-the-box experience.
2922
2923OpenGFX provides you with...
2924@enumerate
2925@item All graphics you need to enjoy OpenTTD.
2926@item Uniquely drawn rail vehicles for every climate.
2927@item Completely snow-aware rivers.
2928@item Different river and sea water.
2929@item Snow-aware buoys.
2930@end enumerate")
2931 (license license:gpl2)))
2932
c17b0790
AI
2933(define openttd-opensfx
2934 (package
2935 (name "openttd-opensfx")
2936 (version "0.2.3")
2937 (source
2938 (origin
2939 (method url-fetch)
2940 (uri (string-append
2941 "https://binaries.openttd.org/extra/opensfx/"
2942 version "/opensfx-" version "-source.tar.gz"))
2943 (sha256
2944 (base32
2945 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2946 (build-system gnu-build-system)
2947 (native-inputs
2948 `(("catcodec" ,catcodec)
61506fe5 2949 ("python" ,python-2)))
c17b0790
AI
2950 (arguments
2951 `(#:make-flags
2952 (list (string-append "INSTALL_DIR=" %output
2953 "/share/games/openttd/baseset/opensfx"))
2954 #:phases
2955 (modify-phases %standard-phases
2956 (add-after 'unpack 'make-reproducible
2957 (lambda _
2958 ;; Remove the time dependency of the installed tarball by setting
2959 ;; the modification times if its members to 0.
2960 (substitute* "scripts/Makefile.def"
2961 (("-cf") " --mtime=@0 -cf"))
2962 #t))
2963 (delete 'configure))))
2964 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2965 (synopsis "Base sounds for OpenTTD")
2966 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2967it possible to play OpenTTD without requiring the proprietary sound files from
2968the original Transport Tycoon Deluxe.")
2969 (license license:cc-sampling-plus-1.0)))
2970
823e1218
AI
2971(define openttd-openmsx
2972 (package
2973 (name "openttd-openmsx")
2974 (version "0.3.1")
2975 (source
2976 (origin
2977 (method url-fetch)
2978 (uri (string-append
2979 "https://binaries.openttd.org/extra/openmsx/"
2980 version "/openmsx-" version "-source.tar.gz"))
2981 (sha256
2982 (base32
2983 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2984 (build-system gnu-build-system)
2985 (native-inputs
61506fe5 2986 `(("python" ,python-2)))
823e1218
AI
2987 (arguments
2988 `(#:make-flags
2989 (list (string-append "INSTALL_DIR=" %output
2990 "/share/games/openttd/baseset"))
2991 #:phases
2992 (modify-phases %standard-phases
2993 (delete 'configure)
2994 (add-after 'install 'post-install
2995 ;; Rename openmsx-version to openmsx
2996 (lambda* (#:key outputs #:allow-other-keys)
2997 (let ((install-directory (string-append (assoc-ref outputs "out")
2998 "/share/games/openttd/baseset")))
2999 (rename-file (string-append install-directory "/openmsx-" ,version)
3000 (string-append install-directory "/openmsx"))
3001 #t))))))
3002 (home-page "http://dev.openttdcoop.org/projects/openmsx")
3003 (synopsis "Music set for OpenTTD")
3004 (description "OpenMSX is a music set for OpenTTD which makes it possible
3005to play OpenTTD without requiring the proprietary music from the original
3006Transport Tycoon Deluxe.")
3007 (license license:gpl2)))
3008
e9687748
AS
3009(define-public openttd
3010 (package
3011 (inherit openttd-engine)
ca508f1c
KK
3012 (name "openttd")
3013 (arguments
857b2f53
AI
3014 `(#:configure-flags
3015 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
3016 "/bin/timidity"))
3017 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
3018 ((#:phases phases)
3019 `(modify-phases ,phases
3020 (add-after 'install 'install-data
3021 (lambda* (#:key inputs outputs #:allow-other-keys)
3022 (for-each
3023 (lambda (input)
3024 (copy-recursively (assoc-ref inputs input)
3025 (assoc-ref outputs "out")))
3026 (list "opengfx" "openmsx" "opensfx"))
3027 #t)))))))
3028 (inputs
3029 `(("timidity++" ,timidity++)
3030 ,@(package-inputs openttd-engine)))
ca508f1c
KK
3031 (native-inputs
3032 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
3033 ("openmsx" ,openttd-openmsx)
3034 ("opensfx" ,openttd-opensfx)
ca508f1c 3035 ,@(package-native-inputs openttd-engine)))))
e9687748 3036
0c6ade0b
RH
3037(define openrct2-title-sequences
3038 (package
3039 (name "openrct2-title-sequences")
3040 (version "0.1.2")
3041 (source
3042 (origin
3043 (method url-fetch)
3044 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
3045 version "/title-sequence-v" version ".zip"))
3046 (file-name (string-append name "-" version ".zip"))
3047 (sha256
3048 (base32
3049 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
3050 (build-system trivial-build-system)
3051 (native-inputs
3052 `(("bash" ,bash)
3053 ("coreutils" ,coreutils)
3054 ("unzip" ,unzip)))
3055 (arguments
3056 `(#:modules ((guix build utils))
3057 #:builder
3058 (begin
3059 (use-modules (guix build utils))
3060 (let* ((out (assoc-ref %outputs "out"))
3061 (openrct2-title-sequences (string-append out
3062 "/share/openrct2/title-sequences"))
3063 (source (assoc-ref %build-inputs "source"))
3064 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3065 (copy-file source (string-append ,name "-" ,version ".zip"))
3066 (invoke unzip (string-append ,name "-" ,version ".zip"))
3067 (delete-file (string-append ,name "-" ,version ".zip"))
3068 (mkdir-p openrct2-title-sequences)
3069 (copy-recursively "."
3070 openrct2-title-sequences)
3071 #t))))
3072 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3073 (synopsis "Title sequences for OpenRCT2")
3074 (description
3075 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3076 (license license:gpl3+)))
3077
3078(define openrct2-objects
3079 (package
3080 (name "openrct2-objects")
924e6993 3081 (version "1.0.9")
0c6ade0b
RH
3082 (source
3083 (origin
3084 (method url-fetch)
3085 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3086 version "/objects.zip"))
3087 (file-name (string-append name "-" version ".zip"))
3088 (sha256
924e6993 3089 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
3090 (build-system trivial-build-system)
3091 (native-inputs
3092 `(("bash" ,bash)
3093 ("coreutils" ,coreutils)
3094 ("unzip" ,unzip)))
3095 (arguments
3096 `(#:modules ((guix build utils))
3097 #:builder
3098 (begin
3099 (use-modules (guix build utils))
3100 (let* ((out (assoc-ref %outputs "out"))
3101 (openrct2-objects (string-append out
3102 "/share/openrct2/objects"))
3103 (source (assoc-ref %build-inputs "source"))
3104 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3105 (copy-file source (string-append ,name "-" ,version ".zip"))
3106 (invoke unzip (string-append ,name "-" ,version ".zip"))
3107 (delete-file (string-append ,name "-" ,version ".zip"))
3108 (mkdir-p openrct2-objects)
3109 (copy-recursively "."
3110 openrct2-objects)
3111 #t))))
3112 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3113 (synopsis "Objects for OpenRCT2")
3114 (description
3115 "openrct2-objects is a set of objects for OpenRCT2.")
3116 (license license:gpl3+)))
3117
7aafb3b3
RH
3118(define-public openrct2
3119 (package
3120 (name "openrct2")
b6909d47 3121 (version "0.2.4")
7aafb3b3
RH
3122 (source
3123 (origin
2e5a0690
TGR
3124 (method git-fetch)
3125 (uri (git-reference
3126 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3127 (commit (string-append "v" version))))
3128 (file-name (git-file-name name version))
7aafb3b3 3129 (sha256
b6909d47 3130 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
3131 (build-system cmake-build-system)
3132 (arguments
940c2c5c
RH
3133 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3134 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 3135 #:tests? #f ; tests require network access
7aafb3b3 3136 #:phases
6457509c
TGR
3137 (modify-phases %standard-phases
3138 (add-after 'unpack 'fix-usr-share-paths&add-data
3139 (lambda* (#:key inputs outputs #:allow-other-keys)
3140 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3141 (objects (assoc-ref inputs "openrct2-objects")))
3142 ;; Fix some references to /usr/share.
3143 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3144 (("/usr/share")
3145 (string-append (assoc-ref %outputs "out") "/share")))
3146 (copy-recursively
3147 (string-append titles "/share/openrct2/title-sequences")
3148 "data/title")
3149 (copy-recursively
3150 (string-append objects "/share/openrct2/objects")
3151 "data/object"))))
8c14f7f8 3152 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
3153 (lambda _
3154 ;; Don't treat warnings as errors.
3155 (substitute* "CMakeLists.txt"
8c14f7f8
MB
3156 (("-Werror") ""))
3157 #t)))))
c695fb76
TGR
3158 (inputs `(("curl" ,curl)
3159 ("fontconfig" ,fontconfig)
3160 ("freetype" ,freetype)
0c6ade0b 3161 ("icu4c" ,icu4c)
c695fb76
TGR
3162 ("jansson" ,jansson)
3163 ("libpng" ,libpng)
3164 ("libzip" ,libzip)
3165 ("mesa" ,mesa)
0c6ade0b
RH
3166 ("openrct2-objects" ,openrct2-objects)
3167 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
3168 ("openssl" ,openssl)
3169 ("sdl2" ,sdl2)
3170 ("speexdsp" ,speexdsp)
3171 ("zlib" ,zlib)))
7aafb3b3 3172 (native-inputs
63d4ef52 3173 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
3174 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3175 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3176 (description "OpenRCT2 is a free software re-implementation of
3177RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3178maintaining an amusement park containing attractions, shops and facilities.
3179
3180Note that this package does @emph{not} provide the game assets (sounds,
3181images, etc.)")
3182 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3183 ;; regarding assets.
3184 (license license:gpl3+)))
3185
e3f755f4
EB
3186(define-public pinball
3187 (package
3188 (name "pinball")
3189 (version "0.3.1")
3190 (source
3191 (origin (method url-fetch)
3192 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3193 "pinball-" version "/"
3194 "pinball-" version ".tar.gz"))
3195 (sha256
3196 (base32
3197 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3198 (patches (search-patches "pinball-const-fix.patch"
3199 "pinball-cstddef.patch"
3200 "pinball-missing-separators.patch"
3201 "pinball-src-deps.patch"
3202 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3203 (build-system gnu-build-system)
3204 (inputs
3205 `(("glu" ,glu)
3206 ("mesa" ,mesa)
3207 ("sdl" ,sdl)
3208 ("sdl-image" ,sdl-image)
3209 ("sdl-mixer" ,sdl-mixer)))
3210 (arguments
3211 '(#:configure-flags
3212 (list (string-append "CPPFLAGS=-I"
3213 (assoc-ref %build-inputs "sdl-image")
3214 "/include/SDL -I"
3215 (assoc-ref %build-inputs "sdl-mixer")
3216 "/include/SDL"))))
3217 (home-page "http://pinball.sourceforge.net")
3218 (synopsis "Pinball simulator")
3219 (description "The Emilia Pinball Project is a pinball simulator. There
3220are only two levels to play with, but they are very addictive.")
3221 (license license:gpl2)))
7e2e1155
RF
3222
3223(define-public pioneers
3224 (package
3225 (name "pioneers")
59e8a57d 3226 (version "15.5")
7e2e1155
RF
3227 (source (origin
3228 (method url-fetch)
3229 (uri (string-append "http://downloads.sourceforge.net/pio/"
3230 "pioneers-" version ".tar.gz"))
3231 (sha256
3232 (base32
59e8a57d 3233 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3234 (build-system gnu-build-system)
59e8a57d
TGR
3235 (inputs `(("avahi" ,avahi)
3236 ("gtk+" ,gtk+)
3237 ("librsvg" ,librsvg)))
7e2e1155 3238 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3239 ("itstool" ,itstool)
3240 ("libxml2" ,libxml2)
7e2e1155
RF
3241 ("pkg-config" ,pkg-config)))
3242 (synopsis "Board game inspired by The Settlers of Catan")
3243 (description "Pioneers is an emulation of the board game The Settlers of
3244Catan. It can be played on a local network, on the internet, and with AI
3245players.")
3246 (home-page "http://pio.sourceforge.net/")
8763fdf8 3247 (license license:gpl2+)))
fea1f275 3248
d7c4619b
AE
3249(define-public einstein
3250 (package
3251 (name "einstein")
3252 (version "2.0")
3253 (source (origin
3254 (method url-fetch)
d4cf5b01 3255 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3256 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3257 (sha256
3258 (base32
3259 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3260 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3261 (build-system gnu-build-system)
3262 (inputs
3263 `(("freetype" ,freetype)
3264 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3265 ("zlib" ,zlib)))
3266 (native-inputs
3267 `(("font-dejavu" ,font-dejavu)))
3268 (arguments
3269 `(#:tests? #f ; no check target
3270 #:phases
3271 (modify-phases %standard-phases
3272 (replace 'configure
3273 (lambda* (#:key outputs inputs #:allow-other-keys)
3274 (let ((out (assoc-ref outputs "out"))
3275 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3276 "/share/fonts/truetype/DejaVuSans.ttf")))
3277 (substitute* "Makefile"
3278 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3279 ;; The patch above registers a free font for use by the binary,
3280 ;; but the font is copied during the compile phase into a
3281 ;; resources file, so we need to make the ttf file available.
3282 (symlink dejavu "res/DejaVuSans.ttf")
3283 #t))))))
3284 (synopsis "Logic puzzle game")
3285 (description "The goal of this logic game is to open all cards in a 6x6
3286grid, using a number of hints as to their relative position. The game idea
3287is attributed to Albert Einstein.")
3288 ;; The original home page has disappeared.
3289 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3290 "http://games.flowix.com/en/index.html"))
3291 ;; License according to
3292 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3293 ;; The source code is a DFSG-sanitized tarball and does not contain any
3294 ;; license information.
3295 (license license:gpl3+)))
3296
d381962f 3297(define-public powwow
3298 (package
3299 (name "powwow")
90d37add 3300 (version "1.2.19")
d381962f 3301 (source (origin
3302 (method url-fetch)
3303 (uri (string-append
cc30a472 3304 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3305 version ".tar.gz"))
d381962f 3306 (sha256
3307 (base32
90d37add 3308 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3309 (inputs
3310 `(("ncurses" ,ncurses)))
3311 (build-system gnu-build-system)
36aff81a 3312 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3313 (synopsis "MUD and telnet client")
3314 (description
3315 "POWWOW is a client software which can be used for telnet as well as for
3316@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3317the chat server psyced with the specific config located at
3318http://lavachat.symlynx.com/unix/")
3319 (license license:gpl2+)))
158f5734 3320
5ef819cc 3321(define-public red-eclipse
7fa9a685
KK
3322 (let ((release "2.0.0")
3323 (revision 0))
158f5734 3324 (package
5b8a8543 3325 (name "red-eclipse")
42abb842
AFN
3326 (version (if (zero? revision)
3327 release
3328 (string-append release "-"
3329 (number->string revision))))
bb7c071b
TGR
3330 (source
3331 (origin
3332 (method git-fetch)
3333 (uri (git-reference
7fa9a685
KK
3334 (url "https://github.com/redeclipse/base.git")
3335 (commit (string-append "v" release))
3336 (recursive? #t))) ; for game data
bb7c071b
TGR
3337 (file-name (git-file-name name version))
3338 (sha256
dc4469e9
KK
3339 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3340 (modules '((guix build utils)))
3341 (snippet
3342 ;; Remove proprietary libraries and other pre-compiled binaries.
3343 '(begin
3344 (delete-file-recursively "bin")
3345 #t))))
158f5734
KY
3346 (build-system gnu-build-system)
3347 (arguments
3348 `(#:tests? #f ; no check target
3349 #:make-flags (list "CC=gcc" "-Csrc"
3350 (string-append "INSTDIR="
42abb842
AFN
3351 (assoc-ref %outputs "out") "/bin")
3352 (string-append "prefix="
3353 (assoc-ref %outputs "out")))
158f5734
KY
3354 #:phases
3355 (modify-phases %standard-phases
7fa9a685 3356 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
3357 (lambda* (#:key outputs #:allow-other-keys)
3358 (substitute* "src/engine/server.cpp"
7fa9a685
KK
3359 (("data = \"data\"")
3360 (string-append "data = \""
42abb842 3361 (assoc-ref outputs "out")
7fa9a685 3362 "/share/redeclipse/data\"")))
42abb842 3363 #t))
158f5734
KY
3364 (delete 'configure) ; no configure script
3365 (add-after 'set-paths 'set-sdl-paths
3366 (lambda* (#:key inputs #:allow-other-keys)
3367 (setenv "CPATH"
3368 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3369 "/include/SDL2:"
3370 (or (getenv "CPATH") "")))
158f5734
KY
3371 #t))
3372 (add-after 'install 'copy-data
3373 (lambda* (#:key outputs #:allow-other-keys)
3374 (let ((out (assoc-ref outputs "out")))
3375 (copy-recursively "config"
3376 (string-append out "/config"))
66c65aaf
KK
3377 (copy-file "doc/examples/servinit.cfg"
3378 (string-append out "/config/servinit.cfg"))
158f5734 3379 (copy-recursively "data"
42abb842
AFN
3380 (string-append out "/share/redeclipse/data"))
3381 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3382 (symlink (string-append out "/share/redeclipse/data")
3383 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3384 #t))
3385 (add-after 'copy-data 'wrap-program
3386 (lambda* (#:key inputs outputs #:allow-other-keys)
3387 (let* ((out (assoc-ref outputs "out"))
3388 (bin (string-append out "/bin")))
3389 (with-directory-excursion bin
3390 (rename-file "redeclipse_linux"
3391 ".redeclipse_linux-real")
3392 (rename-file "redeclipse_server_linux"
3393 ".redeclipse_server_linux-real")
3394 (call-with-output-file "redeclipse_linux"
3395 (lambda (port)
3396 (format port "#!~a/bin/sh
3397# Run the thing from its home, otherwise it just bails out.
3398cd \"~a\"
3399exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3400 (assoc-ref inputs "bash") ;implicit input
3401 (string-append out)
3402 (string-append bin))))
3403 (call-with-output-file "redeclipse_server_linux"
3404 (lambda (port)
3405 (format port "#!~a/bin/sh
3406# Run the thing from its home, otherwise it just bails out.
3407cd \"~a\"
3408exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3409 (assoc-ref inputs "bash") ;implicit input
3410 (string-append out)
3411 (string-append bin))))
3412 (chmod "redeclipse_linux" #o555)
3413 (chmod "redeclipse_server_linux" #o555)))
3414 #t)))))
631b20f9
TGR
3415 (native-inputs
3416 `(("pkg-config" ,pkg-config)))
158f5734
KY
3417 (inputs
3418 `(("curl" ,curl)
7fa9a685 3419 ("freetype" ,freetype)
158f5734 3420 ("glu" ,glu)
14b865dc
KK
3421 ("sdl-union" ,(sdl-union (list sdl2
3422 sdl2-image
7fa9a685 3423 sdl2-mixer)))))
dc4469e9 3424 (home-page "https://redeclipse.net/")
158f5734
KY
3425 (synopsis "Arena shooter derived from the Cube 2 engine")
3426 (description
3427 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3428Offering an innovative parkour system and distinct but all potent weapons,
3429Red Eclipse provides fast paced and accessible gameplay.")
3430 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 3431 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
3432 (license (list license:expat
3433 license:zlib
dc4469e9 3434 license:cc-by-sa4.0
158f5734
KY
3435 license:cc-by-sa3.0
3436 license:cc-by3.0
dc4469e9
KK
3437 license:cc0
3438 license:public-domain
3439 license:silofl1.1)))))
bcd2982f 3440
0fb9a15b
LC
3441(define-public grue-hunter
3442 (package
3443 (name "grue-hunter")
3444 (version "1.0")
3445 (source (origin
3446 (method url-fetch)
c41b2ffb 3447 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3448 (sha256
3449 (base32
3450 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3451 (build-system trivial-build-system) ; no Makefile.PL
3452 (arguments `(#:modules ((guix build utils))
3453 #:builder
3454 (begin
3455 (use-modules (guix build utils))
3456 (use-modules (srfi srfi-1))
3457
3458 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3459 (perl (string-append (assoc-ref %build-inputs
3460 "perl")
3461 "/bin"))
5edf2f05 3462 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3463 "gzip")
5edf2f05 3464 "/bin/gzip"))
0fb9a15b
LC
3465 (tar (string-append (assoc-ref %build-inputs
3466 "tar")
3467 "/bin/tar"))
3468 (out (assoc-ref %outputs "out"))
3469 (bin (string-append out "/bin"))
6d57723a
TGR
3470 (doc (string-append out
3471 "/share/doc/grue-hunter")))
e3cfef22
MW
3472 (copy-file tarball "grue-hunter.tar.gz")
3473 (invoke gzip "-d" "grue-hunter.tar.gz")
3474 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3475
e3cfef22
MW
3476 (mkdir-p bin)
3477 (copy-file "grue-hunter/gh.pl"
3478 (string-append bin "/grue-hunter"))
3479 (patch-shebang (string-append bin "/grue-hunter")
3480 (list perl))
3481
3482 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3483
e3cfef22 3484 #t))))
0fb9a15b
LC
3485 (inputs `(("perl" ,perl)
3486 ("tar" ,tar)
3487 ("gzip" ,gzip)
3488 ("tarball" ,source)))
6c82576e 3489 (home-page "https://jxself.org/grue-hunter.shtml")
0fb9a15b
LC
3490 (synopsis "Text adventure game")
3491 (description
3492 "Grue Hunter is a text adventure game written in Perl. You must make
3493your way through an underground cave system in search of the Grue. Can you
3494capture it and get out alive?")
3495 (license license:agpl3+)))
f317aeb4 3496
ffed9eab
MB
3497(define-public lierolibre
3498 (package
3499 (name "lierolibre")
3500 (version "0.5")
3501 (source (origin
3502 (method url-fetch)
3503 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3504 version "/+download/lierolibre-"
3505 version ".tar.xz"))
3506 (sha256
3507 (base32
3508 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3509 (patches
3510 (search-patches "lierolibre-check-unaligned-access.patch"
3511 "lierolibre-try-building-other-arch.patch"
3512 "lierolibre-remove-arch-warning.patch"
3513 "lierolibre-newer-libconfig.patch"
3514 "lierolibre-is-free-software.patch"))
3515 (modules '((guix build utils)))
3516 (snippet
3517 '(begin
3518 ;; Delete pre-compiled files.
3519 (delete-file "data/LIERO.CHR")
3520 (delete-file "data/LIERO.SND")
3521 #t))))
3522 (build-system gnu-build-system)
3523 (native-inputs
3524 `(("imagemagick" ,imagemagick)
3525 ("pkg-config" ,pkg-config)
3526 ("util-linux" ,util-linux)
3527 ("sox" ,sox)))
3528 (inputs
3529 `(("boost" ,boost)
3530 ("libconfig" ,libconfig)
3531 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3532 ("zlib" ,zlib)))
3533 (home-page "https://gitlab.com/lierolibre/lierolibre")
3534 (synopsis "Old-school earthworm action game")
3535 (description
3536 "lierolibre is an earthworm action game where you fight another player
3537(or the computer) underground using a wide array of weapons.
3538
3539Features:
3540@itemize
3541@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3542and Game of Tag, plus AI-players without true intelligence!
3543@item Dat nostalgia.
3544@item Extensions via a hidden F1 menu:
3545@itemize
3546@item Replays
3547@item Game controller support
3548@item Powerlevel palettes
3549@end itemize
3550@item Ability to write game variables to plain text files.
3551@item Ability to load game variables from both EXE and plain text files.
3552@item Scripts to extract and repack graphics, sounds and levels.
3553@end itemize
3554
3555To switch between different window sizes, use F6, F7 and F8, to switch to
3556fullscreen, use F5 or Alt+Enter.")
3557 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3558 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3559
f317aeb4
KK
3560(define-public warzone2100
3561 (package
3562 (name "warzone2100")
f475b90c 3563 (version "3.2.3")
d8f4aefe
TGR
3564 (source
3565 (origin
3566 (method url-fetch)
3567 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3568 "unsupported/Warzone2100-"
3569 (version-major+minor version) "/" version
3570 "/warzone2100-" version ".tar.xz"))
3571 (sha256
3572 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3573 (build-system gnu-build-system)
3574 (arguments
f475b90c
KK
3575 `(#:configure-flags '("--with-distributor=Guix")
3576 #:phases
c5d17d50
RW
3577 (modify-phases %standard-phases
3578 (add-after 'unpack 'link-tests-with-qt
3579 (lambda _
3580 (substitute* "tests/Makefile.in"
3581 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3582 (string-append prefix "$(QT5_LIBS) ")))
3583 #t))
f475b90c 3584 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3585 (lambda _
f475b90c
KK
3586 (substitute* "tests/ivis_linktest.cpp"
3587 (("iV_DrawTextRotated.*;")
3588 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3589 "100, 100, 0.0f, font_regular);")))
c5d17d50 3590 #t)))))
f475b90c
KK
3591 (native-inputs `(("gettext" ,gettext-minimal)
3592 ("pkg-config" ,pkg-config)
f317aeb4
KK
3593 ("unzip" ,unzip)
3594 ("zip" ,zip)))
3595 (inputs `(("fontconfig" ,fontconfig)
3596 ("freetype" ,freetype)
3597 ("fribidi" ,fribidi)
3598 ("glew" ,glew)
f475b90c 3599 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3600 ("libtheora" ,libtheora)
3601 ("libvorbis" ,libvorbis)
3602 ("libxrandr" ,libxrandr)
3603 ("openal" ,openal)
3604 ("physfs" ,physfs)
77c729ba
RW
3605 ("qtbase" ,qtbase)
3606 ("qtscript" ,qtscript)
c5d17d50 3607 ("openssl" ,openssl)
c5d17d50 3608 ("sdl2" ,sdl2)))
d3eae3f1 3609 (home-page "https://wz2100.net")
f317aeb4
KK
3610 (synopsis "3D Real-time strategy and real-time tactics game")
3611 (description
3612 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3613modes. An extensive tech tree with over 400 different technologies, combined
3614with the unit design system, allows for a wide variety of possible units and
3615tactics.")
3616 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3617 (license (list license:bsd-3
3618 license:cc0
3619 license:cc-by-sa3.0
3620 license:expat
3621 license:gpl2+
3622 license:lgpl2.1+))))
4b670539 3623
649220ad 3624(define-public starfighter
4b670539 3625 (package
649220ad 3626 (name "starfighter")
8172ab2d 3627 (version "2.0.0.3")
4b670539 3628 (source (origin
8172ab2d
KK
3629 (method url-fetch)
3630 (uri (string-append
3631 "https://github.com/pr-starfighter/starfighter/releases"
3632 "/download/v" version "/starfighter-"
3633 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3634 (sha256
3635 (base32
8172ab2d 3636 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3637 (build-system gnu-build-system)
4b670539 3638 (native-inputs
8172ab2d 3639 `(("pkg-config" ,pkg-config)))
4b670539 3640 (inputs
1fe84f5d
KK
3641 `(("pango" ,pango)
3642 ("sdl2" ,sdl2)
4b670539 3643 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3644 ("sdl2-mixer" ,sdl2-mixer)
3645 ("sdl2-ttf" ,sdl2-ttf)))
3646 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3647 (synopsis "2D scrolling shooter game")
3648 (description
3649 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3650dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3651their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3652way, you will encounter new foes, make new allies, and assist local rebels
3653in strikes against the evil corporation.")
3654 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3655 (license (list license:gpl3+
3656 license:cc-by3.0
3657 license:cc-by-sa3.0
3658 license:cc0
3659 license:public-domain))))
35e2e495 3660
649220ad
NG
3661(define-public project-starfighter
3662 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3663
35e2e495
KK
3664(define-public chromium-bsu
3665 (package
3666 (name "chromium-bsu")
08722837 3667 (version "0.9.16.1")
35e2e495
KK
3668 (source (origin
3669 (method url-fetch)
e464bd60 3670 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3671 "/Chromium B.S.U. source code/"
e464bd60 3672 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3673 (sha256
3674 (base32
08722837 3675 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3676 (build-system gnu-build-system)
35e2e495 3677 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3678 (inputs `(("gettext" ,gettext-minimal)
08722837 3679 ("glu" ,glu)
35e2e495
KK
3680 ("quesoglc" ,quesoglc)
3681 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3682 (home-page "http://chromium-bsu.sourceforge.net/")
3683 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3684 (description
3685 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3686are responsible for delivering supplies to the troops on the front line. Your
3687ship has a small fleet of robotic fighters which you control from the relative
3688safety of the Chromium vessel.")
3689 ;; Clarified Artistic License for everything but sound, which is covered
3690 ;; by the Expat License.
3691 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3692
3693(define-public tuxpaint
3694 (package
3695 (name "tuxpaint")
c6aa2ee2 3696 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3697 (source
3698 (origin
3699 (method url-fetch)
3700 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3701 version "/tuxpaint-" version ".tar.gz"))
3702 (sha256
3703 (base32
c6aa2ee2 3704 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3705 (modules '((guix build utils)))
3706 (snippet
3707 '(begin
3708 ;; Remove win32 directory which contains binary dll's and the
3709 ;; deprecated visualc directory.
3710 (for-each delete-file-recursively '("win32" "visualc"))
3711 (substitute* "Makefile"
3712 ;; Do not rely on $(GPERF) being an absolute file name
3713 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3714 "$(GPERF) --version >/dev/null 2>&1"))
3715 #t))
9b1ada4e
EB
3716 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3717 (build-system gnu-build-system)
3718 (native-inputs
3719 `(("gperf" ,gperf)
3720 ("pkg-config" ,pkg-config)))
3721 (inputs
3722 `(("cairo" ,cairo)
3723 ("fribidi" ,fribidi)
b94a6ca0 3724 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3725 ("libpng" ,libpng)
3726 ("librsvg" ,librsvg)
3727 ("libpaper" ,libpaper)
3728 ("netpbm" ,netpbm)
3729 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3730 ;; TODO: Use system fonts rather than those in data/fonts
3731 (arguments
c6aa2ee2 3732 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3733 "GPERF=gperf" "CC=gcc"
3734 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3735 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3736 "KDE_PREFIX=$(PREFIX)/share/applications"
3737 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3738 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3739 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3740 #:tests? #f ;No tests
3741 #:phases (modify-phases %standard-phases
3742 (delete 'configure) ;no configure phase
f88c0ab8
EB
3743 (add-before 'install 'no-sys-cache
3744 (lambda _ ;do not rebuild system conf cache
3745 (substitute* "Makefile"
3746 (("kbuildsycoca4") ""))
3747 #t))
9b1ada4e
EB
3748 (add-after 'install 'fix-import
3749 (lambda* (#:key inputs outputs #:allow-other-keys)
3750 (let* ((out (assoc-ref outputs "out"))
3751 (net (assoc-ref inputs "netpbm"))
3752 (tpi (string-append out "/bin/tuxpaint-import")))
3753 (substitute* tpi
3754 ;; Point to installation prefix so that the default
3755 ;; configure file is found.
3756 (("/usr/local") out))
3757 ;; tuxpaint-import uses a bunch of programs from
3758 ;; netpbm, so make sure it knows where those are
3759 (wrap-program tpi
3760 `("PATH" ":" prefix
3761 (,(string-append net "/bin"))))))))))
3762 (native-search-paths
3763 (list (search-path-specification
3764 (variable "TUXPAINT_STAMPS_PATH")
3765 (files '("share/tuxpaint/stamps")))))
3766 (home-page "http://www.tuxpaint.org")
3767 (synopsis "Drawing software for children")
3768 (description
3769 "Tux Paint is a free drawing program designed for young children (kids
3770ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3771and an encouraging cartoon mascot who helps guide children as they use the
3772program. It provides a blank canvas and a variety of drawing tools to help
3773your child be creative.")
3774 (license license:gpl2+)))
c3d850f2
EB
3775
3776(define-public tuxpaint-stamps
3777 (package
3778 (name "tuxpaint-stamps")
6ade82c2 3779 (version "2018.09.01")
c3d850f2
EB
3780 (source
3781 (origin
3782 (method url-fetch)
3783 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3784 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3785 "/tuxpaint-stamps-" version ".tar.gz"))
3786 (sha256
3787 (base32
6ade82c2 3788 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3789 (build-system trivial-build-system)
3790 (native-inputs
3791 `(("tar" ,tar)
3792 ("gzip" ,gzip)))
3793 (arguments
3794 `(#:modules ((guix build utils))
3795 #:builder (begin
3796 (use-modules (guix build utils))
3797 (setenv "PATH"
3798 (string-append
3799 (assoc-ref %build-inputs "tar") "/bin" ":"
3800 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3801 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3802 (chdir (string-append ,name "-" ,version))
3803 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3804 (mkdir-p dir)
e3cfef22
MW
3805 (copy-recursively "stamps" dir))
3806 #t)))
c3d850f2
EB
3807 (home-page (package-home-page tuxpaint))
3808 (synopsis "Stamp images for Tux Paint")
3809 (description
3810 "This package contains a set of \"Rubber Stamp\" images which can be used
3811with the \"Stamp\" tool within Tux Paint.")
3812 (license license:gpl2+)))
d2563973
EB
3813
3814(define-public tuxpaint-config
3815 (package
3816 (name "tuxpaint-config")
7b05e957 3817 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3818 (source
3819 (origin
3820 (method url-fetch)
3821 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3822 version "/tuxpaint-config-" version ".tar.gz"))
3823 (sha256
3824 (base32
7b05e957 3825 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3826 (build-system gnu-build-system)
3827 (native-inputs
b94a6ca0 3828 `(("gettext" ,gettext-minimal)))
d2563973
EB
3829 (inputs
3830 `(("fltk" ,fltk)
3831 ("libpaper" ,libpaper)
3832 ;; TODO: Should the following be propagated by fltk?
3833 ("libx11" ,libx11)
3834 ("libxft" ,libxft)
3835 ("mesa" ,mesa)))
3836 (arguments
7b05e957 3837 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3838 "CONFDIR=/etc/tuxpaint" ;don't write to store
3839 ,(string-append "PREFIX=" %output)
3840 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3841 #:parallel-build? #f ;race conditions
d2563973
EB
3842 #:tests? #f ;no tests
3843 #:phases (modify-phases %standard-phases
3844 (delete 'configure) ;no configure phase
3845 (add-before 'install 'gzip-no-name
3846 (lambda* _
3847 (substitute* "Makefile"
3848 ;; tuxpaint-config compresses its own documentation;
3849 ;; make sure it uses flags for reproducibility.
3850 (("gzip") "gzip --no-name"))))
3851 (add-before 'install 'make-install-dirs
3852 (lambda* (#:key outputs #:allow-other-keys)
3853 (let ((out (assoc-ref outputs "out")))
3854 (mkdir-p (string-append out "/bin"))
3855 #t))))))
3856 (home-page (package-home-page tuxpaint))
3857 (synopsis "Configure Tux Paint")
3858 (description
3859 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3860 (license license:gpl2))) ;no "or later" present
826a3ca2 3861
3862(define-public supertux
3863 (package
3864 (name "supertux")
54a80259 3865 (version "0.6.1")
826a3ca2 3866 (source (origin
3867 (method url-fetch)
d910d584
RW
3868 (uri (string-append "https://github.com/SuperTux/supertux/"
3869 "releases/download/v" version "/SuperTux-v"
3870 version "-Source.tar.gz"))
8698d986 3871 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3872 (sha256
3873 (base32
54a80259 3874 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
8698d986 3875 (patches
57d87f43 3876 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3877 (arguments
3878 '(#:tests? #f
3879 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3880 "-DUSE_SYSTEM_PHYSFS=ON")
3881 #:phases
3882 (modify-phases %standard-phases
3883 (add-after 'unpack 'patch-squirrel-path
3884 (lambda* (#:key inputs #:allow-other-keys)
3885 (let ((squirrel (assoc-ref inputs "squirrel")))
3886 (substitute* "CMakeLists.txt"
3887 (("set\\(SQUIRREL_PREFIX.*")
3888 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3889 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3890 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3891 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3892 #t)))))
826a3ca2 3893 (build-system cmake-build-system)
3894 (inputs `(("sdl2" ,sdl2)
3895 ("sdl2-image" ,sdl2-image)
3896 ("sdl2-mixer" ,sdl2-mixer)
3897 ("openal" ,openal)
3898 ("mesa" ,mesa)
3899 ("glew" ,glew)
3900 ("libvorbis" ,libvorbis)
3901 ("libogg" ,libogg)
3902 ("physfs" ,physfs)
3903 ("curl" ,curl)
8698d986
KK
3904 ("boost" ,boost)
3905 ("freetype" ,freetype)
3906 ("squirrel" ,squirrel)))
8b03b1a1
NG
3907 (native-inputs
3908 `(("pkg-config" ,pkg-config)))
826a3ca2 3909 (synopsis "2D platformer game")
8b03b1a1
NG
3910 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3911a style similar to the original Super Mario games.")
cac6c3ba 3912 (home-page "https://supertux.org/")
826a3ca2 3913 (license license:gpl3+)))
b3de5ff2 3914
751c7040 3915(define-public tintin++
3916 (package
3917 (name "tintin++")
23174b49 3918 (version "2.02.00")
fffe4870
TGR
3919 (source
3920 (origin
3921 (method url-fetch)
3922 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 3923 (string-drop-right version 1)
fffe4870
TGR
3924 "/tintin-" version ".tar.gz"))
3925 (sha256
3926 (base32
23174b49 3927 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
751c7040 3928 (inputs
3929 `(("gnutls" ,gnutls)
3930 ("pcre" ,pcre)
3931 ("readline" ,readline)
3932 ("zlib" ,zlib)))
3933 (arguments
fffe4870 3934 '(#:tests? #f ; no test suite
751c7040 3935 #:phases
3936 (modify-phases %standard-phases
3937 ;; The source is in tt/src.
3938 (add-before 'configure 'chdir
3939 (lambda _
3940 (chdir "src")
3941 #t)))))
3942 (build-system gnu-build-system)
23174b49 3943 (home-page "https://tintin.mudhalla.net/")
751c7040 3944 (synopsis "MUD client")
3945 (description
5b9c2690
KK
3946 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3947Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3948options used by MUDs, as well as those required to login via telnet on
3949Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 3950 (license license:gpl3+)))
751c7040 3951
b3de5ff2
JN
3952(define-public laby
3953 (package
3954 (name "laby")
3955 (version "0.6.4")
3956 (source
6484b091
EF
3957 (origin (method git-fetch)
3958 (uri (git-reference
3959 (url "https://github.com/sgimenez/laby.git")
3960 (commit (string-append name "-" version))))
3961 (file-name (git-file-name name version))
b3de5ff2
JN
3962 (sha256
3963 (base32
6484b091 3964 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3965 (patches (search-patches "laby-make-install.patch"))))
3966 (build-system gnu-build-system)
3967 (inputs
3968 `(("lablgtk" ,lablgtk)
3969 ("ocaml" ,ocaml)
a8f52ad7
TGR
3970 ("ocaml-findlib" ,ocaml-findlib)
3971 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3972 (arguments
3973 '(#:phases
3974 (modify-phases %standard-phases
3975 (delete 'configure)
a8f52ad7
TGR
3976 (add-before 'build 'allow-unsafe-strings
3977 ;; Fix a build failure with ocaml >=4.06.0.
3978 ;; See <https://github.com/sgimenez/laby/issues/53>.
3979 (lambda _
3980 (setenv "OCAMLPARAM" "safe-string=0,_")
3981 #t))
3982 (add-before 'build 'set-library-path
b3de5ff2
JN
3983 (lambda* (#:key inputs #:allow-other-keys)
3984 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3985 (setenv "LD_LIBRARY_PATH"
3986 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3987 #:tests? #f ; no 'check' target
3988 #:make-flags
3989 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3990 (home-page "https://sgimenez.github.io/laby/")
3991 (synopsis "Programming game")
3992 (description "Learn programming, playing with ants and spider webs ;-)
3993Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3994Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3995programmers may also add their own favorite language.")
3996 (license license:gpl3+)))
b0488fe5
EF
3997
3998(define-public bambam
3999 (package
4000 (name "bambam")
8e77da0d 4001 (version "1.0.0")
b0488fe5
EF
4002 (source
4003 (origin
63e708f4
TGR
4004 (method git-fetch)
4005 (uri (git-reference
4006 (url "https://github.com/porridge/bambam")
8e77da0d 4007 (commit (string-append "v" version))))
63e708f4 4008 (file-name (git-file-name name version))
b0488fe5 4009 (sha256
8e77da0d 4010 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
4011 (build-system python-build-system)
4012 (arguments
8e77da0d 4013 `(#:tests? #f ; no tests
b0488fe5
EF
4014 #:phases
4015 (modify-phases %standard-phases
8e77da0d 4016 (delete 'build) ; nothing to build
b0488fe5
EF
4017 (replace 'install
4018 (lambda* (#:key outputs #:allow-other-keys)
4019 (let* ((out (assoc-ref outputs "out"))
4020 (bin (string-append out "/bin"))
4021 (share (string-append out "/share")))
4022 (mkdir-p bin)
4023 (copy-file "bambam.py" (string-append bin "/bambam"))
4024 (install-file "bambam.6" (string-append share "/man/man6"))
4025 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
4026 #t)))))
4027 (inputs
4028 `(("python-pygame" ,python-pygame)))
4029 (home-page "https://github.com/porridge/bambam")
46a06224 4030 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
4031 (description "Bambam is a simple baby keyboard (and gamepad) masher
4032application that locks the keyboard and mouse and instead displays bright
4033colors, pictures, and sounds.")
4034 (license license:gpl3+)))
6b87c10f 4035
3110c74b
TGR
4036(define-public mrrescue
4037 (package
4038 (name "mrrescue")
4039 (version "1.02e")
4040 (source (origin
4041 (method url-fetch)
4042 (uri (string-append
4043 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 4044 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
4045 (file-name (string-append name "-" version ".love"))
4046 (sha256
4047 (base32
4048 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
4049 (build-system trivial-build-system)
4050 (arguments
8893218a 4051 `(#:modules ((guix build utils))
3110c74b
TGR
4052 #:builder
4053 (begin
4054 (use-modules (guix build utils))
8893218a
TGR
4055 (let* ((out (assoc-ref %outputs "out"))
4056 (script (string-append out "/bin/" ,name))
4057 (data (string-append out "/share/" ,name))
4058 (source (assoc-ref %build-inputs "source"))
4059 (unzip (string-append (assoc-ref %build-inputs "unzip")
4060 "/bin/unzip"))
4061 (patch (string-append (assoc-ref %build-inputs "patch")
4062 "/bin/patch"))
4063 (bash (string-append (assoc-ref %build-inputs "bash")
4064 "/bin/bash"))
4065 (love (string-append (assoc-ref %build-inputs "love")
4066 "/bin/love")))
4067
4068 (mkdir-p (dirname script))
4069 (with-output-to-file script
3110c74b
TGR
4070 (lambda ()
4071 (format #t "#!~a~%" bash)
8893218a
TGR
4072 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4073 (chmod script #o755)
4074
4075 ;; The better way to package this game would be to install *only* the
4076 ;; script above, pointing to the unextracted .love file in the store.
4077 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4078 ;; Instead of extracting the .love file, patching it, and re-zipping
4079 ;; it to the store, simply point the script to the extracted patched
4080 ;; data directory directly.
4081 (mkdir-p data)
4082 (with-directory-excursion data
4083 (invoke unzip source)
4084 (invoke patch "-p1" "-i"
4085 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 4086 #t))))
8893218a
TGR
4087 (native-inputs
4088 `(("unzip" ,unzip)
4089 ("patch" ,patch)
4090 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
4091 (inputs
4092 `(("bash" ,bash)
4093 ("love" ,love)))
e2f28609 4094 (home-page "https://tangramgames.dk/games/mrrescue")
3110c74b
TGR
4095 (synopsis "Arcade-style fire fighting game")
4096 (description
4097 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
4098civilians from burning buildings. The game features fast-paced fire
4099extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
4100throwing people around in pseudo-randomly generated buildings.")
4101 (license (list license:zlib ; for source code
4102 license:cc-by-sa3.0)))) ; for graphics and music assets
4103
cd1869cd
KK
4104(define-public hyperrogue
4105 (package
4106 (name "hyperrogue")
70b6b238 4107 (version "11.2q")
f8279ba4
KK
4108 ;; When updating this package, be sure to update the "hyperrogue-data"
4109 ;; origin in native-inputs.
cd1869cd
KK
4110 (source (origin
4111 (method url-fetch)
4112 (uri (string-append
a01aea7d
TGR
4113 "https://www.roguetemple.com/z/hyper/hyperrogue"
4114 (string-join (string-split version #\.) "")
f8279ba4 4115 "-src.tgz"))
cd1869cd
KK
4116 (sha256
4117 (base32
70b6b238 4118 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
cd1869cd
KK
4119 (build-system gnu-build-system)
4120 (arguments
f8279ba4 4121 `(#:tests? #f ; no check target
82402f76
KK
4122 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4123 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
4124 #:phases
4125 (modify-phases %standard-phases
4126 (add-after 'set-paths 'set-sdl-paths
4127 (lambda* (#:key inputs #:allow-other-keys)
4128 (setenv "CPATH"
b6c2805c
MB
4129 (string-append (getenv "CPATH") ":"
4130 (assoc-ref inputs "sdl-union")
cd1869cd 4131 "/include/SDL"))))
cd1869cd
KK
4132 (replace 'configure
4133 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4134 (let* ((out (assoc-ref outputs "out"))
4135 (share-dir (string-append out "/share/hyperrogue"))
4136 (dejavu-dir (string-append
4137 (assoc-ref inputs "font-dejavu")
4138 "/share/fonts/truetype"))
4139 (dejavu-font "DejaVuSans-Bold.ttf")
4140 (music-file "hyperrogue-music.txt"))
1bb962b4 4141 ;; Fix font and music paths.
89c9445a 4142 (substitute* "basegraph.cpp"
f8279ba4
KK
4143 ((dejavu-font)
4144 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
4145 (substitute* music-file
4146 (("\\*/")
82402f76
KK
4147 (string-append share-dir "/sounds/")))
4148 (substitute* "sound.cpp"
4149 (("musicfile = \"\"")
4150 (string-append "musicfile = \""
4151 share-dir "/" music-file "\"")))
4152 ;; Disable build machine CPU optimizations and warnings treated
4153 ;; as errors.
4154 (substitute* "Makefile"
4155 (("-march=native") "")
4156 (("-Werror") "")))
cd1869cd
KK
4157 #t))
4158 (replace 'install
4159 (lambda* (#:key inputs outputs #:allow-other-keys)
4160 (let* ((out (assoc-ref outputs "out"))
4161 (bin (string-append out "/bin"))
4162 (share-dir (string-append out "/share/hyperrogue")))
4163 (mkdir-p bin)
82402f76 4164 (install-file "hyperrogue" bin)
f8279ba4
KK
4165 (install-file "hyperrogue-music.txt" share-dir))
4166 #t))
4167 (add-after 'install 'install-data
4168 (lambda* (#:key inputs outputs #:allow-other-keys)
4169 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4170 (out (assoc-ref outputs "out"))
4171 (sounds (string-append out "/share/hyperrogue/sounds"))
4172 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4173 ;; Extract media license information into sounds directory.
4174 (invoke unzip "-j" data
4175 (string-append
4176 "hyperrogue"
4177 (string-join (string-split ,version #\.) "")
4178 "/sounds/credits.txt") "-d" sounds)
4179 ;; Extract sounds and music into sounds directory.
4180 (invoke "unzip" "-j" data
4181 (string-append
4182 "hyperrogue"
4183 (string-join (string-split ,version #\.) "")
4184 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4185 (native-inputs
4186 `(("hyperrogue-data"
4187 ,(origin
4188 (method url-fetch)
4189 (uri
4190 (string-append
07de94d6 4191 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4192 (string-join (string-split version #\.) "")
4193 "-win.zip"))
4194 (sha256
4195 (base32
70b6b238 4196 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
f8279ba4 4197 ("unzip" ,unzip)))
cd1869cd
KK
4198 (inputs
4199 `(("font-dejavu" ,font-dejavu)
4200 ("glew" ,glew)
4201 ("libpng" ,libpng)
4202 ("sdl-union" ,(sdl-union (list sdl
4203 sdl-gfx
4204 sdl-mixer
4205 sdl-ttf)))))
4cae7e67 4206 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4207 (synopsis "Non-euclidean graphical rogue-like game")
4208 (description
4209 "HyperRogue is a game in which the player collects treasures and fights
4210monsters -- rogue-like but for the fact that it is played on the hyperbolic
4211plane and not in euclidean space.
4212
4213In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4214are home to particular creatures and may be subject to their own rules of
4215\"physics\".
cd1869cd 4216
a53a6b6f
TGR
4217While the game can use ASCII characters to display the the classical rogue
4218symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4219 (license (list license:bsd-3 ; glew.c, mtrand.*
4220 license:cc-by-sa3.0 ; music
4221 license:cc-by-sa4.0 ; sounds
4222 license:cc0
4223 license:public-domain ; direntx.*, some sounds
4224 license:zlib ; savepng.*
cd1869cd 4225 license:gpl2+)))) ; remaining files
a56145e1
SW
4226
4227(define-public kobodeluxe
4228 (package
4229 (name "kobodeluxe")
4230 (version "0.5.1")
4231 (source (origin
4232 (method url-fetch)
4233 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4234 version ".tar.bz2"))
4235 (sha256
4236 (base32
4237 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4238 (patches (search-patches
4239 "kobodeluxe-const-charp-conversion.patch"
4240 "kobodeluxe-enemies-pipe-decl.patch"
4241 "kobodeluxe-graphics-window-signed-char.patch"
4242 "kobodeluxe-manpage-minus-not-hyphen.patch"
4243 "kobodeluxe-midicon-segmentation-fault.patch"
4244 "kobodeluxe-paths.patch"))))
4245 (build-system gnu-build-system)
4246 (arguments
4247 '(#:configure-flags
4248 (list (string-append "CPPFLAGS=-I"
4249 (assoc-ref %build-inputs "sdl-union")
4250 "/include/SDL"))))
cf07ec20
MB
4251 (inputs
4252 `(("glu" ,glu)
4253 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
4254 (synopsis "Shooter with space station destruction")
4255 (description
4256 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4257for Un*x systems with X11.")
4258 (home-page "http://olofson.net/kobodl/")
4259 (license license:gpl2+)))
5430dbd9
AI
4260
4261(define-public freeciv
4262 (package
4263 (name "freeciv")
4445b3a7 4264 (version "2.6.2")
5430dbd9
AI
4265 (source
4266 (origin
4267 (method url-fetch)
b92e8da0
EF
4268 (uri (list (string-append
4269 "http://files.freeciv.org/stable/freeciv-"
4270 version ".tar.bz2")
4271 (string-append
4272 "mirror://sourceforge/freeciv/Freeciv%20"
4273 (version-major+minor version) "/" version
4274 "/freeciv-" version ".tar.bz2")))
5430dbd9 4275 (sha256
4445b3a7 4276 (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
5430dbd9
AI
4277 (build-system gnu-build-system)
4278 (inputs
4279 `(("curl" ,curl)
4280 ("cyrus-sasl" ,cyrus-sasl)
4281 ("gtk+" ,gtk+)
4282 ("sdl-mixer" ,sdl-mixer)
4283 ("zlib" ,zlib)))
4284 (native-inputs
4285 `(("pkg-config" ,pkg-config)))
4286 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
4287 (synopsis "Turn-based empire building strategy game")
4288 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
4289inspired by the history of human civilization. The game commences in
4290prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 4291into the Space Age.")
5430dbd9 4292 (license license:gpl2+)))
345504c7 4293
4294(define-public no-more-secrets
4295 (package
4296 (name "no-more-secrets")
4c4f1871 4297 (version "0.3.3")
345504c7 4298 (source
4299 (origin
146a4459
TGR
4300 (method git-fetch)
4301 (uri (git-reference
4302 (url "https://github.com/bartobri/no-more-secrets.git")
4303 (commit (string-append "v" version))))
4304 (file-name (git-file-name name version))
345504c7 4305 (sha256
146a4459 4306 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4307 (build-system gnu-build-system)
4308 (arguments
4309 `(#:tests? #f
4310 #:make-flags (list "CC=gcc" "all-ncurses"
4311 (string-append "prefix="
4312 (assoc-ref %outputs "out")))
4313 #:phases
4314 (modify-phases %standard-phases
4315 (delete 'configure))))
4316 (inputs
4317 `(("ncurses" ,ncurses)))
4318 (home-page "https://github.com/bartobri/no-more-secrets")
4319 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4320 (description
4321 "@code{No More Secrets} provides a command line tool called \"nms\"
4322that recreates the famous data decryption effect seen on screen in the 1992
4323movie \"Sneakers\".
4324
4325This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4326it will apply the hollywood effect, initially showing encrypted data, then
4327starting a decryption sequence to reveal the original plaintext characters.")
4328 (license license:expat)))
fb731c92
AI
4329
4330(define-public megaglest-data
4331 (package
4332 (name "megaglest-data")
4333 (version "3.13.0")
4334 (source
4335 (origin
4336 (method url-fetch)
4337 (uri (string-append
4338 "https://github.com/MegaGlest/megaglest-data"
4339 "/releases/download/" version "/megaglest-data-"
4340 version ".tar.xz"))
4341 (sha256
4342 (base32
4343 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4344 (build-system cmake-build-system)
4345 (arguments
4346 `(#:tests? #f))
4347 (home-page "https://megaglest.org/")
4348 (synopsis "Data files for MegaGlest")
4349 (description "This package contains the data files required for MegaGlest.")
4350 (license license:cc-by-sa3.0)))
0b608ec4
AI
4351
4352(define-public megaglest
4353 (package
4354 (name "megaglest")
4355 (version "3.13.0")
4356 (source
4357 (origin
4358 (method url-fetch)
4359 (uri (string-append
4360 "https://github.com/MegaGlest/megaglest-source"
4361 "/releases/download/" version "/megaglest-source-"
4362 version ".tar.xz"))
4363 (sha256
4364 (base32
4365 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4366 (build-system cmake-build-system)
4367 (inputs
4368 `(("curl" ,curl)
4369 ("fontconfig" ,fontconfig)
4370 ("ftgl" ,ftgl)
4371 ("glew" ,glew)
4372 ("libjpeg-turbo" ,libjpeg-turbo)
4373 ("megaglest-data" ,megaglest-data)
4374 ("mesa" ,mesa)
4375 ("miniupnpc" ,miniupnpc)
4376 ("openal" ,openal)
4377 ("libircclient" ,libircclient)
4378 ("libpng" ,libpng)
4379 ("libvorbis" ,libvorbis)
4380 ("lua" ,lua)
4381 ("sdl2" ,sdl2)
4382 ("wxwidgets" ,wxwidgets)))
4383 (native-inputs
4384 `(("cppunit" ,cppunit)
4385 ("pkg-config" ,pkg-config)))
4386 (arguments
4387 `(#:configure-flags
4388 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4389 (assoc-ref %build-inputs "megaglest-data")
4390 "/share/megaglest")
4391 "-DBUILD_MEGAGLEST_TESTS=ON")
4392 #:phases
4393 (modify-phases %standard-phases
4394 (add-after 'unpack 'fix-ini-search-path
4395 (lambda* (#:key outputs #:allow-other-keys)
4396 (substitute* "source/glest_game/global/config.cpp"
4397 (("/usr/share/megaglest/")
4398 (string-append (assoc-ref outputs "out")
4399 "/share/megaglest/"))))))
4400 #:test-target "megaglest_tests"))
4401 (home-page "https://megaglest.org/")
4402 (synopsis "3D real-time strategy (RTS) game")
4403 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4404game, where you control the armies of one of seven different factions: Tech,
4405Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4406 (license license:gpl2+)))
6bb9c854
RW
4407
4408(define-public freegish
4409 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4410 (revision "1"))
4411 (package
4412 (name "freegish")
4413 (version (string-append "0-" revision "." (string-take commit 9)))
4414 (source (origin
4415 (method git-fetch)
4416 (uri (git-reference
4417 (url "https://github.com/freegish/freegish.git")
4418 (commit commit)))
661ad6f0 4419 (file-name (git-file-name name version))
6bb9c854
RW
4420 (sha256
4421 (base32
4422 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4423 (modules '((guix build utils)))
4424 ;; The audio files in the "music" directory are licensed under
4425 ;; CC-BY-NC, so we delete them.
4426 (snippet
4427 '(begin
4428 (delete-file-recursively "music")
4429 #t))))
4430 (build-system cmake-build-system)
4431 (arguments
4432 `(#:tests? #f ; no tests included
4433 #:configure-flags
4434 (list "-DCMAKE_INSTALL_FHS=ON")
4435 #:phases
4436 (modify-phases %standard-phases
4437 (add-after 'unpack 'set-DATAPATH
4438 (lambda* (#:key outputs #:allow-other-keys)
4439 (substitute* "CMakeLists.txt"
4440 (("^option\\(INSTALL_FHS" line)
4441 (string-append "add_definitions(-DDATAPATH=\""
4442 (assoc-ref outputs "out") "/share/freegish\")\n"
4443 line)))
4444 #t)))))
4445 (inputs
4446 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4447 ("openal" ,openal)
4448 ("libvorbis" ,libvorbis)
4449 ("libogg" ,libogg)
4450 ("mesa" ,mesa)
4451 ("libpng" ,libpng)
4452 ("zlib" ,zlib)))
4453 (home-page "https://github.com/freegish/freegish")
4454 (synopsis "Side-scrolling physics platformer with a ball of tar")
4455 (description "In FreeGish you control Gish, a ball of tar who lives
4456happily with his girlfriend Brea, until one day a mysterious dark creature
4457emerges from a sewer hole and pulls her below ground.")
4458 ;; The textures are available under the Expat license. All other assets
4459 ;; (including levels) are covered under CC-BY-SA or public domain. The
4460 ;; source code is under GPLv2+.
4461 (license (list license:gpl2+
4462 license:expat
4463 license:public-domain
4464 license:cc-by-sa3.0)))))
f0f7bf95
RW
4465
4466(define-public cdogs-sdl
6e65eb3c
TGR
4467 (package
4468 (name "cdogs-sdl")
acfb7357 4469 (version "0.6.9")
6e65eb3c
TGR
4470 (source (origin
4471 (method git-fetch)
4472 (uri (git-reference
4473 (url "https://github.com/cxong/cdogs-sdl.git")
4474 (commit version)))
4475 (file-name (git-file-name name version))
4476 (sha256
4477 (base32
acfb7357 4478 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4479 (build-system cmake-build-system)
4480 (arguments
4481 `(#:configure-flags
4482 (list (string-append "-DCDOGS_DATA_DIR="
4483 (assoc-ref %outputs "out")
4484 "/share/cdogs-sdl/"))))
4485 (inputs
4486 `(("mesa" ,mesa)
4487 ("sdl2" ,sdl2)
4488 ("sdl2-image" ,sdl2-image)
4489 ("sdl2-mixer" ,sdl2-mixer)))
4490 (home-page "https://cxong.github.io/cdogs-sdl/")
4491 (synopsis "Classic overhead run-and-gun game")
4492 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4493supporting up to 4 players in co-op and deathmatch modes. Customize your
4494player, choose from many weapons, and blast, slide and slash your way through
4495over 100 user-created campaigns.")
6e65eb3c
TGR
4496 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4497 ;; CC0/CC-BY/CC-BY-SA for assets.
4498 (license (list license:gpl2+
4499 license:bsd-2
4500 license:bsd-3
4501 license:cc0
4502 license:cc-by3.0
4503 license:cc-by-sa3.0))))
bd71525b 4504
649220ad 4505(define-public kiki
bd71525b 4506 (package
649220ad 4507 (name "kiki")
bd71525b
RW
4508 (version "1.0.2")
4509 (source (origin
4510 (method url-fetch)
4511 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4512 version "/kiki-" version "-src.tgz"))
4513 (sha256
4514 (base32
4515 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4516 (modules '((guix build utils)))
4517 (snippet
4518 '(begin
4519 (for-each delete-file (find-files "." "\\.dll$"))
4520 #t))
4521 (patches
4522 (search-patches "kiki-level-selection-crash.patch"
4523 "kiki-makefile.patch"
4524 "kiki-missing-includes.patch"
4525 "kiki-portability-64bit.patch"))))
4526 (build-system gnu-build-system)
4527 (arguments
4528 `(#:tests? #f ; there are no tests
4529 #:make-flags '("CXX=g++")
4530 #:phases
4531 (modify-phases %standard-phases
4532 (replace 'configure
4533 (lambda* (#:key inputs outputs #:allow-other-keys)
4534 (setenv "CPLUS_INCLUDE_PATH"
4535 (string-append (assoc-ref inputs "sdl-union")
4536 "/include/SDL:"
4537 (assoc-ref inputs "python")
97149c57 4538 "/include/python2.7"))
bd71525b
RW
4539 (substitute* "src/main/main.cpp"
4540 (("#include <SDL.h>" line)
4541 (string-append line "
4542#define K_INCLUDE_GLUT
4543#include \"KIncludeTools.h\""))
4544 (("// initialize SDL" line)
4545 (string-append "glutInit(&argc,argv);\n" line)))
4546 (substitute* "src/main/KikiController.cpp"
4547 (("getenv\\(\"KIKI_HOME\"\\)")
4548 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4549 (substitute* "linux/Makefile"
4550 (("CXXOPTS =" line)
4551 (string-append line " -fpermissive"))
4552 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4553 (("PYTHONHOME =.*")
4554 (string-append "PYTHONHOME = "
4555 (assoc-ref inputs "python")
4556 "/lib/python2.7/"))
4557 (("\\$\\(GLLIBS\\)" line)
4558 (string-append line " -lm -lpython2.7")))
4559 (substitute* "src/main/KikiPythonWidget.h"
4560 (("#define __KikiPythonWidget" line)
4561 (string-append line "\n#include \"KikiPython.h\"")))
4562 #t))
4563 (add-before 'build 'build-kodilib
4564 (lambda* (#:key make-flags #:allow-other-keys)
4565 (with-directory-excursion "kodilib/linux"
ff61aee8 4566 (apply invoke "make" make-flags))))
bd71525b
RW
4567 (add-after 'build-kodilib 'chdir
4568 (lambda _ (chdir "linux") #t))
4569 (replace 'install
4570 (lambda* (#:key outputs #:allow-other-keys)
4571 (let* ((out (assoc-ref outputs "out"))
4572 (bin (string-append out "/bin"))
4573 (share (string-append out "/share/kiki")))
4574 (mkdir-p bin)
4575 (mkdir-p share)
4576 (install-file "kiki" bin)
4577 (copy-recursively "../py" (string-append share "/py"))
4578 (copy-recursively "../sound" (string-append share "/sound"))
4579 #t))))))
4580 (inputs
4581 `(("glu" ,glu)
4582 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4583 ("freeglut" ,freeglut-2.8)
4584 ("sdl-union" ,(sdl-union (list sdl
4585 sdl-mixer
4586 sdl-image)))
4587 ("python" ,python-2)))
4588 (native-inputs
4589 `(("swig" ,swig)))
4590 (home-page "http://kiki.sourceforge.net/")
4591 (synopsis "3D puzzle game")
4592 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4593mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4594small robot living in the nano world, repair its maker.")
4595 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4596 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4597 ;; for a statement from the author.
4598 (license license:public-domain)))
b77e3a1c 4599
649220ad
NG
4600(define-public kiki-the-nano-bot
4601 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4602
b77e3a1c
RW
4603(define-public teeworlds
4604 (package
4605 (name "teeworlds")
b74f7f06 4606 (version "0.7.4")
b77e3a1c 4607 (source (origin
f9e5caf9
AV
4608 (method git-fetch)
4609 (uri (git-reference
4610 (url "https://github.com/teeworlds/teeworlds.git")
4611 (commit version)))
4612 (file-name (git-file-name name version))
b77e3a1c
RW
4613 (sha256
4614 (base32
b74f7f06 4615 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
f9e5caf9
AV
4616 (modules '((guix build utils)
4617 (ice-9 ftw)
4618 (ice-9 regex)
4619 (srfi srfi-1)
4620 (srfi srfi-26)))
4621 (snippet ; remove bundled libraries except md5
4622 '(let ((base-dir "src/engine/external/"))
4623 (for-each (compose (cut delete-file-recursively <>)
4624 (cut string-append base-dir <>))
4625 (remove (cut string-match "(^.)|(^md5$)" <>)
4626 (scandir base-dir)))
b74f7f06 4627 #t))))
b77e3a1c
RW
4628 (build-system gnu-build-system)
4629 (arguments
7aed8b8a 4630 `(#:tests? #f ; no tests included
f9e5caf9
AV
4631 #:modules ((guix build gnu-build-system)
4632 (guix build utils)
4633 (srfi srfi-26))
b77e3a1c
RW
4634 #:phases
4635 (modify-phases %standard-phases
4636 (replace 'configure
4637 (lambda* (#:key outputs #:allow-other-keys)
4638 ;; Embed path to assets.
4639 (substitute* "src/engine/shared/storage.cpp"
4640 (("#define DATA_DIR.*")
4641 (string-append "#define DATA_DIR \""
4642 (assoc-ref outputs "out")
4643 "/share/teeworlds/data"
4644 "\"")))
4645
4646 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4647 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4648 (find-files "."))
4649
4650 ;; Do not use bundled libraries.
4651 (substitute* "bam.lua"
f9e5caf9
AV
4652 (("local json = Compile.+$")
4653 "local json = nil
4654settings.link.libs:Add(\"jsonparser\")")
4655 (("local png = Compile.+$")
4656 "local png = nil
4657settings.link.libs:Add(\"pnglite\")")
4658 (("local wavpack = Compile.+$")
4659 "local wavpack = nil
4660settings.link.libs:Add(\"wavpack\")")
4661 (("if config\\.zlib\\.value == 1")
4662 "if config.zlib.value"))
4663 (substitute* "src/engine/client/graphics_threaded.cpp"
4664 (("engine/external/pnglite/pnglite\\.h")
4665 "pnglite.h"))
b77e3a1c 4666 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4667 (("engine/external/wavpack/wavpack\\.h")
4668 "wavpack/wavpack.h"))
b77e3a1c
RW
4669 #t))
4670 (replace 'build
4671 (lambda _
f9e5caf9 4672 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4673 (replace 'install
4674 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4675 (let* ((arch ,(system->linux-architecture
4676 (or (%current-target-system)
4677 (%current-system))))
076fe846
OP
4678 (build (string-append "build/" (if (string=? arch "i386")
4679 "x86" arch)
4680 "/release/"))
f9e5caf9
AV
4681 (data-built (string-append build "data/"))
4682 (out (assoc-ref outputs "out"))
4683 (bin (string-append out "/bin/"))
4684 (data (string-append out "/share/teeworlds/data/")))
4685 (for-each (cut install-file <> bin)
4686 (map (cut string-append build <>)
4687 '("teeworlds" "teeworlds_srv")))
4688 (copy-recursively data-built data)
b77e3a1c 4689 #t))))))
b77e3a1c
RW
4690 (inputs
4691 `(("freetype" ,freetype)
4692 ("glu" ,glu)
f9e5caf9 4693 ("json-parser" ,json-parser)
b77e3a1c 4694 ("mesa" ,mesa)
f9e5caf9
AV
4695 ("pnglite" ,pnglite)
4696 ("sdl2" ,sdl2)
4697 ("sdl2-image" ,sdl2-image)
4698 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4699 ("wavpack" ,wavpack)
4700 ("zlib" ,zlib)))
4701 (native-inputs
4702 `(("bam" ,bam)
f9e5caf9 4703 ("python" ,python-wrapper)
e402a66b 4704 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4705 (home-page "https://www.teeworlds.com")
4706 (synopsis "2D retro multiplayer shooter game")
4707 (description "Teeworlds is an online multiplayer game. Battle with up to
470816 players in a variety of game modes, including Team Deathmatch and Capture
4709The Flag. You can even design your own maps!")
4710 (license license:bsd-3)))
e02f1663 4711
162a4a03
RW
4712(define-public enigma
4713 (package
4714 (name "enigma")
4715 (version "1.21")
4716 (source (origin
4717 (method url-fetch)
4718 (uri (string-append "mirror://sourceforge/enigma-game/"
4719 "Release%20" version "/enigma-"
4720 version ".tar.gz"))
4721 (sha256
4722 (base32
4723 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4724 (build-system gnu-build-system)
4725 (arguments
4726 `(#:configure-flags
4727 (list "--with-system-enet")
4728 #:phases
4729 (modify-phases %standard-phases
4730 (add-after 'unpack 'find-sdl
4731 (lambda _
4732 (substitute* "configure"
4733 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4734 (substitute* '("tools/ttf2bmf.cc"
4735 "lib-src/enigma-core/ecl_font.cc"
4736 "lib-src/enigma-core/ecl_video.cc"
4737 "lib-src/enigma-core/ecl_buffer.hh"
4738 "src/SoundEngine.cc"
4739 "src/SoundEngine.hh"
4740 "src/MusicManager.cc"
4741 "src/MusicManager.hh"
4742 "src/d_models.cc"
4743 "src/main.cc"
4744 "src/network.cc")
4745 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4746 (string-append "#include \"SDL/SDL_" header ".h\"")))
4747 (substitute* "src/main.cc"
4748 (("#include <SDL_(image|ttf|mixer).h>" line header)
4749 (string-append "#include \"SDL/SDL_" header ".h\"")))
4750 #t)))))
4751 (inputs
4752 `(("xerces-c" ,xerces-c)
4753 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4754 ("curl" ,curl)
4755 ("enet" ,enet)))
4756 (native-inputs
4757 `(("pkg-config" ,pkg-config)
4758 ("imagemagick" ,imagemagick)))
340978d7 4759 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4760 (synopsis "Puzzle game with a dexterity component")
4761 (description "Enigma is a puzzle game with 550 unique levels. The object
4762of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4763Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4764and most of all, countless hairy puzzles usually block your direct way to the
4765Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4766get bored) interact in many unexpected ways, and since many of them follow the
4767laws of physics (Enigma’s special laws of physics, that is), controlling them
4768with the mouse isn’t always trivial.")
4769 (license license:gpl2+)))
4770
10d53153
CLW
4771(define-public chroma
4772 (package
4773 (name "chroma")
9cf65f05 4774 (version "1.17")
10d53153
CLW
4775 (source (origin
4776 (method url-fetch)
4777 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4778 version ".tar.bz2"))
4779 (sha256
4780 (base32
9cf65f05 4781 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4782 (build-system gnu-build-system)
4783 (arguments
5479dbf9 4784 `(#:tests? #f)) ; no tests included
10d53153
CLW
4785 (inputs
4786 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4787 ("freetype" ,freetype)
4788 ("ncurses" ,ncurses)
4789 ("fontconfig" ,fontconfig)
4790 ("libxft" ,libxft)))
4791 (native-inputs
4792 `(("pkg-config" ,pkg-config)))
4793 (home-page "http://level7.org.uk/chroma/")
4794 (synopsis "Abstract puzzle game")
4795 (description "Chroma is an abstract puzzle game. A variety of colourful
4796shapes are arranged in a series of increasingly complex patterns, forming
371a647e
NG
4797fiendish traps that must be disarmed and mysterious puzzles that must be
4798manipulated in order to give up their subtle secrets. Initially so
4799straightforward that anyone can pick it up and begin to play, yet gradually
4800becoming difficult enough to tax even the brightest of minds.")
10d53153
CLW
4801 (license license:gpl2+)))
4802
649220ad 4803(define-public fillets-ng
e02f1663 4804 (package
649220ad 4805 (name "fillets-ng")
e02f1663
RW
4806 (version "1.0.1")
4807 (source (origin
4808 (method url-fetch)
4809 (uri (string-append "mirror://sourceforge/fillets/"
4810 "Fish%20Fillets%20-%20Next%20Generation/"
4811 version "/fillets-ng-" version ".tar.gz"))
4812 (sha256
4813 (base32
4814 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4815 (build-system gnu-build-system)
4816 (arguments
4817 `(#:configure-flags
4818 (list (string-append "--with-lua="
4819 (assoc-ref %build-inputs "lua")))
4820 #:make-flags
4821 (list (string-append "CFLAGS=-I"
4822 (assoc-ref %build-inputs "sdl-union")
4823 "/include/SDL")
4824 (string-append "CXXFLAGS=-I"
4825 (assoc-ref %build-inputs "sdl-union")
4826 "/include/SDL"))
4827 #:phases
4828 (modify-phases %standard-phases
4829 ;; Lua 5.1 does not provide it.
4830 (add-after 'unpack 'do-not-link-with-lualib
4831 (lambda _
4832 (substitute* "configure"
4833 (("-llualib") ""))
4834 #t))
4835 (add-after 'install 'install-data
4836 (lambda* (#:key inputs outputs #:allow-other-keys)
4837 (let ((data (string-append (assoc-ref outputs "out")
4838 "/share/games/fillets-ng")))
4839 (mkdir-p data)
f08d34a0
RW
4840 (invoke "tar" "-xvf"
4841 (assoc-ref inputs "fillets-ng-data")
4842 "--strip-components=1"
4843 "-C" data)))))))
e02f1663
RW
4844 (inputs
4845 `(("sdl-union" ,(sdl-union (list sdl
4846 sdl-mixer
4847 sdl-image
4848 sdl-ttf)))
4849 ("fribidi" ,fribidi)
4850 ("libx11" ,libx11)
4851 ("lua" ,lua-5.1)))
4852 (native-inputs
4853 `(("pkg-config" ,pkg-config)
4854 ("fillets-ng-data"
4855 ,(origin
4856 (method url-fetch)
4857 (uri (string-append "mirror://sourceforge/fillets/"
4858 "Fish%20Fillets%20-%20Next%20Generation/"
4859 version "/fillets-ng-data-" version ".tar.gz"))
4860 (sha256
4861 (base32
4862 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4863 (home-page "http://fillets.sourceforge.net/")
4864 (synopsis "Puzzle game")
4865 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4866every of the seventy levels is always the same: find a safe way out. The fish
4867utter witty remarks about their surroundings, the various inhabitants of their
4868underwater realm quarrel among themselves or comment on the efforts of your
4869fish. The whole game is accompanied by quiet, comforting music.")
4870 (license license:gpl2+)))
dd37a545 4871
649220ad
NG
4872(define-public fish-fillets-ng
4873 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4874
649220ad 4875(define-public crawl
dd37a545 4876 (package
649220ad 4877 (name "crawl")
af48a200 4878 (version "0.24.0")
dd37a545 4879 (source
4880 (origin
4881 (method url-fetch)
4882 (uri (list
4883 ;; Older releases get moved into a versioned directory
4884 (string-append "http://crawl.develz.org/release/"
4885 (version-major+minor version) "/stone_soup-"
4886 version "-nodeps.tar.xz")
4887 ;; Only the latest release is in this directory
4888 (string-append "http://crawl.develz.org/release/stone_soup-"
4889 version "-nodeps.tar.xz")))
4890 (sha256
af48a200 4891 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4892 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4893 (build-system gnu-build-system)
4894 (inputs
4895 `(("lua51" ,lua-5.1)
4896 ("ncurses" ,ncurses)
4897 ("sqlite" ,sqlite)
4898 ("zlib" ,zlib)))
4899 (native-inputs
4900 `(("bison" ,bison)
4901 ("flex" ,flex)
4902 ("perl" ,perl)
fc7d6bc6 4903 ("python" ,python-wrapper)
e366521a 4904 ("python-pyyaml" ,python-pyyaml)
dd37a545 4905 ("pkg-config" ,pkg-config)))
4906 (arguments
a5c8460a 4907 `(#:make-flags
dd37a545 4908 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4909 (out (assoc-ref %outputs "out")))
4910 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4911 (string-append "prefix=" out)
4912 "SAVEDIR=~/.crawl"
564df7e5 4913 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4914 ,@(match (%current-system)
4915 ((or "i686-linux" "x86_64-linux")
4916 '())
4917 (_ '("NOSSE=TRUE")))
dd37a545 4918 ;; don't build any bundled dependencies
4919 "BUILD_LUA="
4920 "BUILD_SQLITE="
4921 "BUILD_ZLIB="
4922 "-Csource"))
4923 #:phases
4924 (modify-phases %standard-phases
606c1987
EF
4925 (add-after 'unpack 'find-SDL-image
4926 (lambda _
4927 (substitute* "source/windowmanager-sdl.cc"
4928 (("SDL_image.h") "SDL2/SDL_image.h"))
4929 #t))
dd37a545 4930 (delete 'configure)
e366521a 4931 (replace 'check
dd37a545 4932 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4933 (setenv "HOME" (getcwd))
4934 ;; Fake a terminal for the test cases.
4935 (setenv "TERM" "xterm-256color")
e366521a
KK
4936 ;; Run the tests that don't require a debug build.
4937 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4938 (format #f "-j~d" (parallel-job-count))
4939 ;; Force command line build for test cases.
4940 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4941 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4942 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4943for short) is a roguelike adventure through dungeons filled with dangerous
4944monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4945 (home-page "https://crawl.develz.org")
4946 (license (list license:gpl2+
4947 license:bsd-2
4948 license:bsd-3
4949 license:cc0
4950 license:expat
4951 license:zlib
4952 license:asl2.0))))
cae491ab 4953
649220ad
NG
4954(define-public dungeon-crawl-stone-soup
4955 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4956
1243aaac 4957;; The linter here claims that patch file names should start with the package
4958;; name. But, in this case, the patches are inherited from crawl with the
4959;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4960(define-public crawl-tiles
ae548434 4961 (package
649220ad
NG
4962 (inherit crawl)
4963 (name "crawl-tiles")
ae548434 4964 (arguments
4965 (substitute-keyword-arguments
4966 (package-arguments crawl)
4967 ((#:make-flags flags)
4968 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4969 (cons*
4970 (string-append "PROPORTIONAL_FONT=" dejavu
4971 "/share/fonts/truetype/DejaVuSans.ttf")
4972 (string-append "MONOSPACED_FONT=" dejavu
4973 "/share/fonts/truetype/DejaVuSansMono.ttf")
4974 "TILES=y"
4975 ;; Rename the executable to allow parallel installation with crawl.
4976 "GAME=crawl-tiles"
4977 ,flags)))))
4978 (inputs
4979 `(,@(package-inputs crawl)
4980 ("font-dejavu" ,font-dejavu)
4981 ("freetype6" ,freetype)
4982 ("glu" ,glu)
4983 ("libpng" ,libpng)
4984 ("sdl2" ,sdl2)
4985 ("sdl2-image" ,sdl2-image)
4986 ("sdl2-mixer" ,sdl2-mixer)))
4987 (native-inputs
4988 `(,@(package-native-inputs crawl)
6438a468 4989 ("pngcrush" ,pngcrush)
ae548434 4990 ("which" ,which)))
4991 (synopsis "Graphical roguelike dungeon crawler game")))
4992
649220ad
NG
4993(define-public dungeon-crawl-stone-soup-tiles
4994 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4995
cae491ab
JL
4996(define-public lugaru
4997 (package
4998 (name "lugaru")
4999 (version "1.2")
5000 (source (origin
5001 (method url-fetch)
5002 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 5003 "lugaru-" version ".tar.xz"))
cae491ab
JL
5004 (sha256
5005 (base32
5006 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
5007 (build-system cmake-build-system)
5008 (arguments
5009 `(#:configure-flags
5010 (list "-DSYSTEM_INSTALL=ON")
5011 ;; no test target
5012 #:tests? #f))
5013 (native-inputs
5014 `(("pkg-config" ,pkg-config)))
5015 (inputs
5016 `(("sdl2" ,sdl2)
5017 ("glu" ,glu)
5018 ("libjpeg" ,libjpeg-turbo)
5019 ("libpng" ,libpng)
5020 ("openal" ,openal)
5021 ("vorbis" ,libvorbis)
5022 ("zlib" ,zlib)))
5023 (home-page "https://osslugaru.gitlab.io")
5024 (synopsis "Cross-platform third-person action game")
5025 (description "Lugaru is a third-person action game. The main character,
5026Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
5027In his quest to find those responsible for slaughtering his village, he uncovers
5028a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
5029and the starving wolves from a nearby den. Turner takes it upon himself to
5030fight against their plot and save his fellow rabbits from slavery.")
5031 (license (list license:gpl2+ ; code
5032 ;; assets:
5033 license:cc-by-sa3.0
5034 license:cc-by-sa4.0))))
bff33e6c
CL
5035
5036(define-public 0ad-data
5037 (package
5038 (name "0ad-data")
8c00379c 5039 (version "0.0.23b-alpha")
bff33e6c
CL
5040 (source
5041 (origin
5042 (method url-fetch)
706d6190 5043 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5044 version "-unix-data.tar.xz"))
5045 (file-name (string-append name "-" version ".tar.xz"))
5046 (sha256
5047 (base32
8c00379c 5048 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
5049 (modules '((guix build utils)))
5050 (snippet
5051 #~(begin
6cbee49d
MW
5052 (for-each (lambda (name)
5053 (let* ((dir (string-append "binaries/data/mods/" name))
5054 (file (string-append dir "/" name ".zip"))
5055 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 5056 (invoke unzip "-d" dir file)
6cbee49d
MW
5057 (delete-file file)))
5058 '("mod" "public"))
bff33e6c
CL
5059 #t))))
5060 (build-system trivial-build-system)
5061 (native-inputs `(("tar" ,tar)
5062 ("xz" ,xz)))
5063 (arguments
5064 `(#:modules ((guix build utils))
5065 #:builder
5066 (begin
5067 (use-modules (guix build utils))
5068 (let ((out (assoc-ref %outputs "out"))
5069 (source (assoc-ref %build-inputs "source"))
5070 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5071 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5072 (setenv "PATH" xz-path)
5073 (mkdir out)
e3cfef22 5074 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
5075 (synopsis "Data files for 0ad")
5076 (description "0ad-data provides the data files required by the game 0ad.")
5077 (home-page "https://play0ad.com")
5078 (license (list (license:fsdg-compatible
5079 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
5080 "Similar to the license of the Bitstream Vera fonts.")
5081 (license:fsdg-compatible
5082 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
5083 license:cc-by-sa3.0
5084 license:expat
5085 license:gfl1.0
5086 license:gpl2+
5087 license:gpl3+))))
5088
5089(define-public 0ad
5090 (package
5091 (name "0ad")
8c00379c 5092 (version "0.0.23b-alpha")
bff33e6c
CL
5093 (source
5094 (origin
5095 (method url-fetch)
706d6190 5096 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5097 version "-unix-build.tar.xz"))
5098 (file-name (string-append name "-" version ".tar.xz"))
5099 (sha256
5100 (base32
8c00379c 5101 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
5102 ;; A snippet here would cause a build failure because of timestamps
5103 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
5104 (inputs
5105 `(("0ad-data" ,0ad-data)
5106 ("curl" ,curl)
5107 ("enet" ,enet)
5108 ("gloox" ,gloox)
5109 ("icu4c" ,icu4c)
5110 ("libpng" ,libpng)
706d6190 5111 ("libsodium" ,libsodium)
bff33e6c
CL
5112 ("libvorbis" ,libvorbis)
5113 ("libxcursor" ,libxcursor)
5114 ("libxml2" ,libxml2)
5115 ("miniupnpc" ,miniupnpc)
5116 ("mozjs-38" ,mozjs-38)
5117 ("openal" ,openal)
5118 ("sdl2" ,sdl2)
5119 ("wxwidgets" ,wxwidgets)
5120 ("zlib" ,zlib)))
5121 (native-inputs
5122 `(("boost" ,boost)
c69959f0 5123 ("cmake" ,cmake-minimal)
bff33e6c
CL
5124 ("mesa" ,mesa)
5125 ("pkg-config" ,pkg-config)
5126 ("python-2" ,python-2)))
5127 (build-system gnu-build-system)
5128 (arguments
809b8842
CB
5129 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5130 #:phases
bff33e6c
CL
5131 (modify-phases %standard-phases
5132 (add-after 'unpack 'delete-bundles
5133 (lambda _
5134 (delete-file-recursively "libraries/source/spidermonkey")
5135 #t))
5136 (add-after 'unpack 'fix-x11-includes
5137 (lambda _
5138 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5139 (("<Xlib.h>") "<X11/Xlib.h>"))
5140 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5141 (("<Xatom.h>") "<X11/Xatom.h>"))
5142 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5143 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5144 #t))
5145 (replace 'configure
5146 (lambda* (#:key inputs outputs #:allow-other-keys)
5147 (let* ((jobs (number->string (parallel-job-count)))
5148 (out (assoc-ref outputs "out"))
5149 (lib (string-append out "/lib"))
5150 (data (string-append out "/share/0ad")))
5151 (setenv "JOBS" (string-append "-j" jobs))
5152 (setenv "CC" "gcc")
5153 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5154 (invoke "./update-workspaces.sh"
5155 (string-append "--libdir=" lib)
5156 (string-append "--datadir=" data)
5157 ;; TODO: "--with-system-nvtt"
5158 "--with-system-mozjs38")))))
bff33e6c
CL
5159 (delete 'check)
5160 (replace 'install
5161 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5162 (chdir "binaries")
bff33e6c
CL
5163 (let* ((out (assoc-ref outputs "out"))
5164 (bin (string-append out "/bin"))
5165 (lib (string-append out "/lib"))
5166 (data (string-append out "/share/0ad"))
5167 (applications (string-append out "/share/applications"))
5168 (pixmaps (string-append out "/share/pixmaps"))
5169 (0ad-data (assoc-ref inputs "0ad-data")))
5170 ;; data
5171 (copy-recursively "data" data)
5172 (for-each (lambda (file)
5173 (symlink (string-append 0ad-data "/" file)
5174 (string-append data "/" file)))
5175 '("config" "mods/mod" "mods/public" "tools"))
5176 ;; libraries
5177 (for-each (lambda (file)
5178 (install-file file lib))
5179 (find-files "system" "\\.so$"))
5180 ;; binaries
5181 (install-file "system/pyrogenesis" bin)
5182 (with-directory-excursion bin
5183 (symlink "pyrogenesis" "0ad"))
5184 ;; resources
5185 (with-directory-excursion "../build/resources"
5186 (install-file "0ad.desktop" applications)
5187 (install-file "0ad.png" pixmaps))
5188 #t)))
5189 (add-after 'install 'check
5190 (lambda _
5191 (with-directory-excursion "system"
7b67bb1f 5192 (invoke "./test")))))))
bff33e6c
CL
5193 (home-page "https://play0ad.com")
5194 (synopsis "3D real-time strategy game of ancient warfare")
5195 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5196warfare. It's a historically-based war/economy game that allows players to
5197relive or rewrite the history of twelve ancient civilizations, each depicted
5198at their peak of economic growth and military prowess.
5199
52000ad needs a window manager that supports 'Extended Window Manager Hints'.")
5201 (license (list license:bsd-2
5202 license:bsd-3
5203 license:expat
5204 license:gpl2+
5205 license:ibmpl1.0
5206 license:isc
5207 license:lgpl2.1
5208 license:lgpl3
5209 license:mpl2.0
5210 license:zlib))))
dec63df4 5211
5212;; There have been no official releases.
5213(define-public open-adventure
be6e2c30 5214 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5215 (revision "2"))
dec63df4 5216 (package
5217 (name "open-adventure")
5218 (version (string-append "2.5-" revision "." (string-take commit 7)))
5219 (source (origin
5220 (method git-fetch)
5221 (uri (git-reference
5222 (url "https://gitlab.com/esr/open-adventure")
5223 (commit commit)))
5224 (file-name (string-append name "-" version "-checkout"))
5225 (sha256
5226 (base32
be6e2c30 5227 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5228 (build-system gnu-build-system)
5229 (arguments
5230 `(#:make-flags (list "CC=gcc")
5231 #:parallel-build? #f ; not supported
5232 #:phases
5233 (modify-phases %standard-phases
be6e2c30 5234 (replace 'configure
5235 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5236 ;; Linenoise is meant to be included, so we have to
5237 ;; copy it into the working directory.
be6e2c30 5238 (let* ((linenoise (assoc-ref inputs "linenoise"))
5239 (noisepath (string-append linenoise "/include/linenoise"))
5240 (out (assoc-ref outputs "out")))
5241 (copy-recursively noisepath "linenoise"))
5242 #t))
dec63df4 5243 (add-before 'build 'use-echo
5244 (lambda _
5245 (substitute* "tests/Makefile"
5246 (("/bin/echo") (which "echo")))
5247 #t))
5248 (add-after 'build 'build-manpage
5249 (lambda _
5250 ;; This target is missing a dependency
5251 (substitute* "Makefile"
be6e2c30 5252 ((".adoc.6:" line)
5253 (string-append line " advent.adoc")))
27cd31e6 5254 (invoke "make" ".adoc.6")))
dec63df4 5255 ;; There is no install target
5256 (replace 'install
5257 (lambda* (#:key outputs #:allow-other-keys)
5258 (let* ((out (assoc-ref outputs "out"))
5259 (bin (string-append out "/bin"))
5260 (man (string-append out "/share/man/man6")))
5261 (install-file "advent" bin)
5262 (install-file "advent.6" man))
5263 #t)))))
5264 (native-inputs
be6e2c30 5265 `(("asciidoc" ,asciidoc)
5266 ("linenoise" ,linenoise)
5267 ("python" ,python)
5268 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5269 (home-page "https://gitlab.com/esr/open-adventure")
5270 (synopsis "Colossal Cave Adventure")
5271 (description "The original Colossal Cave Adventure from 1976 was the
5272origin of all text adventures, dungeon-crawl (computer) games, and
5273computer-hosted roleplaying games. This is the last version released by
5274Crowther & Woods, its original authors, in 1995. It has been known as
5275\"adventure 2.5\" and \"430-point adventure\".")
5276 (license license:bsd-2))))
1f88f189 5277
649220ad 5278(define-public tome4
1f88f189 5279 (package
649220ad 5280 (name "tome4")
f894ffd8 5281 (version "1.6.7")
1f88f189
OP
5282 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5283 (source
5284 (origin
5285 (method url-fetch)
5286 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5287 version ".tar.bz2"))
5288 (sha256
f894ffd8 5289 (base32 "0283hvms5hr29zr0grd6gq059k0hg8hcz3fsmwjmysiih8790i68"))
1f88f189
OP
5290 (modules '((guix build utils)))
5291 (snippet
6cbee49d
MW
5292 '(begin
5293 (substitute* '("src/music.h" "src/tSDL.h")
5294 (("#elif defined(__FreeBSD__)" line)
5295 (string-append
5296 line " || defined(__GNUC__)")))
19c0cdb9
OP
5297 (substitute* '("src/tgl.h")
5298 (("#include <GL/glext.h>") ""))
6cbee49d 5299 #t))))
1f88f189
OP
5300 (build-system gnu-build-system)
5301 (native-inputs
5302 `(("unzip" ,unzip)))
5303 (inputs
5304 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5305 ("glu" ,glu)
5306 ("premake4" ,premake4)
5307 ("openal" ,openal)
5308 ("vorbis" ,libvorbis)
5309 ("luajit" ,luajit)))
5310 (arguments
5311 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5312 ;; XXX: Building in parallel occasionally causes this build failure:
5313 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5314 ;; No such file or directory
5315 #:parallel-build? #f
1f88f189 5316 #:phases (modify-phases %standard-phases
972b87b1 5317 (delete 'bootstrap)
1f88f189
OP
5318 (replace 'configure
5319 (lambda _
13a504af 5320 (invoke "premake4" "gmake")
1f88f189
OP
5321 #t))
5322 (add-after 'set-paths 'set-sdl-paths
5323 (lambda* (#:key inputs #:allow-other-keys)
5324 (setenv "CPATH"
5325 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5326 "/include/SDL2:"
5327 (getenv "CPATH")))
1f88f189
OP
5328 #t))
5329 (delete 'check)
5330 ;; premake doesn't provide install target
5331 (replace 'install
5332 (lambda* (#:key inputs outputs #:allow-other-keys)
5333 (let* ((out (assoc-ref outputs "out"))
5334 (usr (string-append out "/usr"))
5335 (bin (string-append out "/bin"))
5336 (licenses (string-append out "/share/licenses"))
5337 (documents (string-append out "/share/doc"))
5338 (pixmaps (string-append out "/share/pixmaps"))
5339 (icon "te4-icon.png")
5340 (data (string-append out "/share/" ,name))
5341 (applications (string-append
5342 out "/share/applications"))
5343 (unzip (string-append
5344 (assoc-ref inputs "unzip") "/bin/unzip"))
5345 (wrapper (string-append bin "/" ,name)))
5346 ;; icon
5347 (mkdir-p pixmaps)
26d52476
OP
5348 (invoke unzip "-j"
5349 (string-append
5350 "game/engines/te4-" ,version ".teae")
5351 (string-append
5352 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
5353 ;; game executable
5354 (install-file "t-engine" data)
5355 (mkdir-p bin)
5356 (with-output-to-file wrapper
5357 (lambda ()
5358 (display
5359 (string-append
5360 "#!/bin/sh\n"
5361 ;; No bootstrap code found,
5362 ;; defaulting to working directory
5363 ;; for engine code!
5364 "cd " data "\n"
5365 "exec -a tome4 ./t-engine \"$@\"\n"))))
5366 (chmod wrapper #o555)
5367 ;; licenses
5368 (for-each (lambda (file)
5369 (install-file file licenses))
5370 '("COPYING" "COPYING-MEDIA"))
5371 ;; documents
5372 (for-each (lambda (file)
5373 (install-file file documents))
5374 '("CONTRIBUTING" "CREDITS"))
5375 ;; data
5376 (copy-recursively "bootstrap" (string-append
5377 data "/bootstrap"))
5378 (copy-recursively "game" (string-append data "/game"))
5379 ;; launcher
5380 (mkdir-p applications)
5381 (with-output-to-file (string-append applications "/"
5382 ,name ".desktop")
5383 (lambda ()
5384 (display
5385 (string-append
5386 "[Desktop Entry]
5387Name=ToME4
5388Comment=" ,synopsis "\n"
5389"Exec=" ,name "\n"
5390"Icon=" icon "\n"
5391"Terminal=false
5392Type=Application
5393Categories=Game;RolePlaying;\n")))))
5394 #t)))))
5395 (home-page "https://te4.org")
5396 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5397combat and advanced character building. Play as one of many unique races and
5398classes in the lore-filled world of Eyal, exploring random dungeons, facing
5399challenging battles, and developing characters with your own tailored mix of
5400abilities and powers. With a modern graphical and customisable interface,
5401intuitive mouse control, streamlined mechanics and deep, challenging combat,
5402Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5403 (license license:gpl3+)))
7a070f02 5404
649220ad
NG
5405(define-public tales-of-maj-eyal
5406 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5407
7a070f02 5408(define-public quakespasm
5409 (package
5410 (name "quakespasm")
18bbaf67 5411 (version "0.93.2")
7a070f02 5412 (source
5413 (origin
5414 (method url-fetch)
5415 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5416 version ".tgz"))
5417 (sha256
18bbaf67 5418 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 5419 (arguments
5420 `(#:tests? #f
5421 #:make-flags '("CC=gcc"
5422 "MP3LIB=mpg123"
5423 "USE_CODEC_FLAC=1"
5424 "USE_CODEC_MIKMOD=1"
5425 "USE_SDL2=1"
5426 "-CQuake")
5427 #:phases (modify-phases %standard-phases
5428 (delete 'configure)
5429 (add-after 'unpack 'fix-makefile-paths
5430 (lambda* (#:key outputs #:allow-other-keys)
5431 (let ((out (assoc-ref outputs "out")))
5432 (mkdir-p (string-append out "/bin"))
5433 (substitute* "Quake/Makefile"
5434 (("/usr/local/games")
5435 (string-append out "/bin")))
5436 #t))))))
5437 (build-system gnu-build-system)
5438 (inputs `(("libmikmod" ,libmikmod)
5439 ("libvorbis" ,libvorbis)
5440 ("flac" ,flac)
5441 ("mesa" ,mesa)
5442 ("mpg123" ,mpg123)
5443 ("sdl2" ,sdl2)))
5444 (synopsis "First person shooter engine for Quake 1")
5445 (description "Quakespasm is a modern engine for id software's Quake 1.
5446It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5447some graphical niceities, and numerous bug-fixes and other improvements.")
5448 (home-page "http://quakespasm.sourceforge.net/")
5449 (license license:gpl2+)))
916bb947 5450
7a6be5b9
RH
5451(define-public vkquake
5452 (package
5453 (inherit quakespasm)
5454 (name "vkquake")
3e7b376e 5455 (version "1.01.0")
7a6be5b9
RH
5456 (source
5457 (origin
f5e1a0e5
TGR
5458 (method git-fetch)
5459 (uri (git-reference
5460 (url "https://github.com/Novum/vkQuake.git")
5461 (commit version)))
5462 (file-name (git-file-name name version))
7a6be5b9 5463 (sha256
f5e1a0e5 5464 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5465 (arguments
5466 `(#:make-flags
5467 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5468 "vulkan-loader") "/lib")))
7a6be5b9
RH
5469 (list "CC=gcc"
5470 "MP3LIB=mpg123"
5471 "USE_CODEC_FLAC=1"
5472 "USE_CODEC_MIKMOD=1"
5473 "USE_SDL2=1"
5474 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5475 "-CQuake"))
5476 #:phases (modify-phases %standard-phases
5477 (delete 'configure)
5478 (add-after 'unpack 'fix-makefile-paths
5479 (lambda* (#:key outputs #:allow-other-keys)
5480 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5481 "vulkan-loader"))
7a6be5b9
RH
5482 (out (assoc-ref outputs "out")))
5483 (mkdir-p (string-append out "/bin"))
5484 (substitute* "Quake/Makefile" ((" /usr")
5485 (string-append " " out)))
5486 (substitute* "Quake/Makefile" (("/games")
5487 (string-append "/bin")))
5488 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5489 #t))))
5490 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5491 (package-arguments quakespasm))))
4108886b
RH
5492 (inputs `(("vulkan-headers" ,vulkan-headers)
5493 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5494 ,@(package-inputs quakespasm)))
5495 (description "vkquake is a modern engine for id software's Quake 1.
5496It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5497some graphical niceities, and numerous bug-fixes and other improvements.")
5498 (home-page "https://github.com/Novum/vkQuake")))
5499
916bb947 5500(define-public yamagi-quake2
5501 (package
5502 (name "yamagi-quake2")
5503 (version "7.10")
5504 (source
5505 (origin
5506 (method url-fetch)
5507 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5508 version ".tar.xz"))
5509 (sha256
5510 (base32
5511 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5512 (build-system gnu-build-system)
5513 (arguments
5514 `(#:tests? #f
5515 #:make-flags
5516 (list "CC=gcc"
5517 ;; link openAL instead of using dlopen at runtime
5518 "DLOPEN_OPENAL=\"no\""
5519 ;; an optional directory where it will look for quake2 data files
5520 ;; in addition to the current working directory
5521 "WITH_SYSTEMWIDE=yes"
5522 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5523 #:phases
5524 (modify-phases %standard-phases
5525 (delete 'configure)
5526 (replace 'install
5527 (lambda* (#:key outputs #:allow-other-keys)
5528 (let ((out (assoc-ref outputs "out")))
5529 (mkdir-p (string-append out "/lib"))
5530 (mkdir-p (string-append out "/bin"))
5531 ;; The yamagi-quake2 binary must be in the same directory
5532 ;; as it's engine libraries, but symlinking it to /bin is okay
5533 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5534 (copy-recursively "release"
5535 (string-append out "/lib/yamagi-quake2"))
5536 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5537 (string-append out "/bin/yamagi-quake2"))
5538 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5539 (string-append out "/bin/yamagi-q2ded"))))))))
5540 (inputs `(("sdl2" ,sdl2)
5541 ("mesa" ,mesa)
5542 ("libvorbis" ,libvorbis)
5543 ("zlib" ,zlib)
5544 ("openal" ,openal)))
5545 (native-inputs `(("pkg-config" ,pkg-config)))
5546 (synopsis "First person shooter engine based on quake2")
5547 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5548The main focus is an unchanged single player experience like back in 1997,
5549thus the gameplay and the graphics are unaltered. However the user may use one
5550of the unofficial retexturing packs. In comparison with the official client,
5551over 1000 bugs were fixed and an extensive code audit done,
5552making Yamagi Quake II one of the most solid Quake II implementations available.")
5553 (home-page "https://www.yamagi.org/quake2/")
5554 (license (list license:gpl2+ ; game and server
5555 (license:non-copyleft ; info-zip
5556 "file://LICENSE"
5557 "See Info-Zip section.")
5558 license:public-domain)))) ; stb
c1228231 5559
e7448859
MIP
5560(define-public nudoku
5561 (package
5562 (name "nudoku")
5563 (version "1.0.0")
5564 (source (origin
5565 (method url-fetch)
5566 (uri (string-append "https://github.com/jubalh/nudoku/"
5567 "releases/download/" version
5568 "/nudoku-" version ".tar.xz"))
5569 (sha256
5570 (base32
5571 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5572 (build-system gnu-build-system)
5573 (inputs `(("ncurses" ,ncurses)))
5574 (home-page "https://jubalh.github.io/nudoku/")
5575 (synopsis "Sudoku for your terminal")
5576 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5577 (license license:gpl3+)))
5578
c1228231
NG
5579(define-public the-butterfly-effect
5580 (package
5581 (name "the-butterfly-effect")
5582 (version "0.9.3.1")
5583 (source
5584 (origin
089c6b00
EF
5585 (method git-fetch)
5586 (uri (git-reference
5587 (url "https://github.com/the-butterfly-effect/tbe.git")
5588 (commit (string-append "v" version))))
5589 (file-name (git-file-name name version))
c1228231
NG
5590 (sha256
5591 (base32
089c6b00 5592 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5593 (build-system gnu-build-system)
5594 (arguments
5595 `(#:phases
5596 (modify-phases %standard-phases
5597 (delete 'configure)
5598 ;; There is no "install" phase. By default, tbe is installed
5599 ;; in the build directory. Provide our own installation.
5600 (replace 'install
5601 (lambda* (#:key outputs #:allow-other-keys)
5602 (let* ((out (assoc-ref outputs "out"))
5603 (bin (string-append out "/bin"))
5604 (share (string-append out "/share")))
5605 (install-file "usr/games/tbe" bin)
5606 (mkdir-p share)
5607 (copy-recursively "usr/share" share)
5608 #t))))
5609 ;; Test suite requires a running Xorg server. Even when
5610 ;; provided, it fails with "D-Bus library appears to be
5611 ;; incorrectly set up; failed to read machine uuid: Failed to
5612 ;; open "/etc/machine-id": No such file or directory" along
5613 ;; with multiple "QPainter:: ... Painter not active" warnings.
5614 #:tests? #f))
5615 (inputs
5616 `(("qtbase" ,qtbase)
5617 ("qtsvg" ,qtsvg)))
5618 (native-inputs
c69959f0 5619 `(("cmake" ,cmake-minimal)
c1228231
NG
5620 ("gettext-minimal" ,gettext-minimal)
5621 ("qttools" ,qttools)))
5622 (synopsis "Realistic physics puzzle game")
5623 (description "The Butterfly Effect (tbe) is a game that uses
5624realistic physics simulations to combine lots of simple mechanical
5625elements to achieve a simple goal in the most complex way possible.")
5626 (home-page "http://the-butterfly-effect.org/")
5627 ;; Main license is GPL2-only. However, artwork is distributed
5628 ;; under various licenses, listed here.
5629 (license (list license:gpl2 license:public-domain license:expat
5630 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5631
5632(define-public pioneer
5633 (package
5634 (name "pioneer")
8f33b76e 5635 (version "20200203")
aac1aa75 5636 (source (origin
6a03ccf4
EB
5637 (method git-fetch)
5638 (uri (git-reference
5639 (url "https://github.com/pioneerspacesim/pioneer.git")
5640 (commit version)))
5641 (file-name (git-file-name name version))
aac1aa75
EB
5642 (sha256
5643 (base32
8f33b76e 5644 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 5645 (build-system cmake-build-system)
aac1aa75 5646 (native-inputs
ed3e7b72 5647 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5648 (inputs
5649 `(("assimp" ,assimp)
5650 ("curl" ,curl)
5651 ("freetype" ,freetype)
ed3e7b72 5652 ("glew" ,glew)
aac1aa75
EB
5653 ("glu" ,glu)
5654 ("libpng" ,libpng)
5655 ("libsigc++" ,libsigc++)
5656 ("libvorbis" ,libvorbis)
5657 ("lua" ,lua-5.2) ;not compatible with 5.3
5658 ("mesa" ,mesa)
5659 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5660 (arguments
5661 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5662 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5663 (string-append "-DPIONEER_DATA_DIR="
5664 %output "/share/games/pioneer"))))
aac1aa75
EB
5665 (home-page "http://pioneerspacesim.net")
5666 (synopsis "Game of lonely space adventure")
5667 (description
5668 "Pioneer is a space adventure game set in our galaxy at the turn of the
566931st century. The game is open-ended, and you are free to eke out whatever
5670kind of space-faring existence you can think of. Look for fame or fortune by
5671exploring the millions of star systems. Turn to a life of crime as a pirate,
5672smuggler or bounty hunter. Forge and break alliances with the various
5673factions fighting for power, freedom or self-determination. The universe is
5674whatever you make of it.")
5675 (license license:gpl3)))
57f9671d 5676
5677(define-public badass
5678 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5679 (revision "0"))
5680 (package
5681 (name "badass")
5682 (version (git-version "0.0" revision commit))
5683 (source (origin
5684 (method git-fetch)
5685 (uri (git-reference
5686 (url "https://github.com/umayr/badass.git")
5687 (commit commit)))
5688 (file-name (git-file-name name version))
5689 (sha256
5690 (base32
5691 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5692 (build-system go-build-system)
5693 (arguments
5694 '(#:import-path "github.com/umayr/badass"))
5695 (synopsis "Hacking contribution graphs in git")
5696 (description
5697 "Badass generates false commits for a range of dates, essentially
5698hacking the gamification of contribution graphs on platforms such as
5699Github or Gitlab.")
5700 (home-page "https://github.com/umayr/badass")
5701 (license license:expat))))
fa7d8ea1
NG
5702
5703(define-public colobot
5704 (package
5705 (name "colobot")
2dad4c91 5706 (version "0.1.12-alpha")
fa7d8ea1
NG
5707 (source
5708 (origin
2dad4c91
NG
5709 (method git-fetch)
5710 (uri (git-reference
5711 (url "https://github.com/colobot/colobot.git")
5712 (commit (string-append "colobot-gold-" version))
5713 (recursive? #t))) ;for "data/" subdir
5714 (file-name (git-file-name name version))
fa7d8ea1
NG
5715 (sha256
5716 (base32
2dad4c91 5717 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5718 (build-system cmake-build-system)
5719 (arguments
5720 `(#:tests? #f ;no test
5721 #:phases
5722 (modify-phases %standard-phases
2dad4c91
NG
5723 (add-after 'unpack 'make-git-checkout-writable
5724 (lambda _
5725 (for-each make-file-writable (find-files "."))
5726 #t))
5727 (add-after 'unpack 'fix-directories
5728 (lambda _
5729 (substitute* "CMakeLists.txt"
5730 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5731 (string-append prefix "/bin"))
5732 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5733 (string-append prefix "/colobot")))
5734 #t))
5735 (add-after 'fix-directories 'install-music
5736 ;; Retrieve and install music files.
fa7d8ea1
NG
5737 (lambda* (#:key inputs #:allow-other-keys)
5738 ;; Installation process tries to download music files using
2dad4c91
NG
5739 ;; "wget" if not already present. Since we are going another
5740 ;; route, skip "wget" command check.
fa7d8ea1
NG
5741 (substitute* "data/music/CMakeLists.txt"
5742 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5743 ;; Populate "music/" directory.
fa7d8ea1 5744 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5745 (invoke "tar" "-xvf" data "-Cdata/music"))
5746 #t)))))
fa7d8ea1 5747 (native-inputs
2dad4c91 5748 `(("colobot-music"
fa7d8ea1
NG
5749 ,(origin
5750 (method url-fetch)
5751 (uri (string-append "https://colobot.info/files/music/"
5752 "colobot-music_ogg_" version ".tar.gz"))
5753 (sha256
5754 (base32
5755 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5756 ("gettext" ,gettext-minimal)
5757 ("librsvg" ,librsvg)
5758 ("po4a" ,po4a)
5759 ("python" ,python-wrapper)))
5760 (inputs
5761 `(("boost" ,boost)
5762 ("glew" ,glew)
5763 ("libogg" ,libogg)
5764 ("libpng" ,libpng)
5765 ("libsndfile" ,libsndfile)
5766 ("libvorbis" ,libvorbis)
5767 ("openal" ,openal)
5768 ("physfs" ,physfs)
5769 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5770 (synopsis "Educational programming strategy game")
5771 (description "Colobot: Gold Edition is a real-time strategy game, where
5772you can program your units (bots) in a language called CBOT, which is similar
5773to C++ and Java. Your mission is to find a new planet to live and survive.
5774You can save humanity and get programming skills!")
5775 (home-page "https://colobot.info")
5776 (license license:gpl3+)))
2922852e 5777
5778(define-public gzdoom
5779 (package
5780 (name "gzdoom")
570b89f4
TGR
5781 (version "4.3.2")
5782 (source
5783 (origin
5784 (method git-fetch)
5785 (uri (git-reference
5786 (url "https://github.com/coelckers/gzdoom.git")
5787 (commit (string-append "g" version))))
5788 (file-name (git-file-name name version))
5789 (sha256
5790 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5791 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5792 "gzdoom-find-system-libgme.patch"))
5793 (modules '((guix build utils)))
5794 (snippet
5795 '(begin
5796 ;; Remove some bundled libraries. XXX There are more, but removing
5797 ;; them would require, at least, patching the build system.
5798 (with-directory-excursion "libraries"
5799 (delete-file-recursively "bzip2")
5800 (delete-file-recursively "game-music-emu")
5801 (delete-file-recursively "jpeg")
5802 (delete-file-recursively "zlib"))
5803 #t))))
2922852e 5804 (arguments
5805 '(#:tests? #f
5806 #:configure-flags
5807 (let ((out (assoc-ref %outputs "out")))
5808 (list
5809 (string-append
5810 "-DCMAKE_CXX_FLAGS:="
5811 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5812 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
5813
5814 ;; The build requires some extra convincing not to use the bundled
5815 ;; libgme previously deleted in the soure snippet.
5816 "-DFORCE_INTERNAL_GME=OFF"
5817
5818 ;; Link libraries at build time instead of loading them at run time.
2922852e 5819 "-DDYN_OPENAL=OFF"
5820 "-DDYN_FLUIDSYNTH=OFF"
5821 "-DDYN_GTK=OFF"
5822 "-DDYN_MPG123=OFF"
5823 "-DDYN_SNDFILE=OFF"))
5824 #:phases
5825 (modify-phases %standard-phases
5826 (add-before 'configure 'fix-referenced-paths
5827 (lambda* (#:key inputs outputs #:allow-other-keys)
5828 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5829 (timidity++ (assoc-ref inputs "timidity++"))
5830 (out (assoc-ref outputs "out")))
5831
5832 (substitute*
5833 "src/CMakeLists.txt"
5834 (("COMMAND /bin/sh")
5835 (string-append "COMMAND " (which "sh"))))
5836
5837 (substitute*
570b89f4 5838 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 5839 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5840 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5841
5842 (substitute*
570b89f4 5843 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 5844 (("exename = \"timidity\"")
5845 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5846 #t))))))
5847 (build-system cmake-build-system)
5848 (inputs `(("bzip2" ,bzip2)
5849 ("fluid-3" ,fluid-3)
570b89f4 5850 ("fluidsynth" ,fluidsynth)
2922852e 5851 ("gtk+3" ,gtk+)
5852 ("libgme" ,libgme)
5853 ("libjpeg" ,libjpeg)
5854 ("libsndfile" ,libsndfile)
5855 ("mesa" ,mesa)
5856 ("mpg123" ,mpg123)
5857 ("openal" ,openal)
5858 ("sdl2" ,sdl2)
5859 ("timidity++" ,timidity++)
5860 ("zlib" ,zlib)))
5861 (native-inputs `(("pkg-config" ,pkg-config)
5862 ("unzip" ,unzip)))
5863 (synopsis "Modern Doom 2 source port")
5864 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5865renderer. It improves modding support with ZDoom's advanced mapping features
5866and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5867Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5868 (home-page "https://zdoom.org/index")
642b195a
EF
5869 ;; The source uses x86 assembly
5870 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5871 (license (list license:gpl3+ ; gzdoom game
5872 license:lgpl3+ ; gzdoom renderer
5873 license:expat ; gdtoa
5874 (license:non-copyleft ; modified dumb
5875 "file://dumb/licence.txt"
5876 "Dumb license, explicitly GPL compatible.")))))
b1642338 5877
6f565d6c
P
5878(define-public odamex
5879 (package
5880 (name "odamex")
5448b16e 5881 (version "0.8.1")
6f565d6c
P
5882 (source
5883 (origin
5884 (method url-fetch)
5885 (uri (string-append
5886 "mirror://sourceforge/odamex/Odamex/" version "/"
5887 "odamex-src-" version ".tar.gz"))
5888 (sha256
5448b16e 5889 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 5890 (build-system cmake-build-system)
5448b16e 5891 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
5892 (inputs
5893 `(("sdl" ,sdl)
5894 ("sdl-mixer" ,sdl-mixer)
5895 ("zlib" ,zlib)
5896 ("libpng" ,libpng)
5897 ("alsa-lib" ,alsa-lib)))
5898 (home-page "https://odamex.net/")
5899 (synopsis "Multiplayer Doom port")
5900 (description "Odamex is a modification of the Doom engine that
5901allows players to easily join servers dedicated to playing Doom
5902online.")
5903 (license license:gpl2+)))
5904
fc16bbb7
JK
5905(define-public chocolate-doom
5906 (package
5907 (name "chocolate-doom")
5908 (version "3.0.0")
5909 (source (origin
5910 (method url-fetch)
5911 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5912 version
5913 "/chocolate-doom-"
5914 version
5915 ".tar.gz"))
5916 (sha256
5917 (base32
5918 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5919 (build-system gnu-build-system)
5920 (inputs `(("sdl2-net" ,sdl2-net)
5921 ("sdl2-mixer" , sdl2-mixer)
5922 ("sdl2" ,sdl2)))
5923 (native-inputs
5924 `(("pkg-config" ,pkg-config)))
5925 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5926Doom")
5927 (description
5928 "Chocolate Doom takes a different approach to other source ports. Its
5929aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5930a conservative, historically accurate Doom source port, which is compatible
5931with the thousands of mods and levels that were made before the Doom source
5932code was released. Rather than flashy new graphics, Chocolate Doom's main
5933features are its accurate reproduction of the game as it was played in the
59341990s. The project is developed around a carefully-considered philosophy that
5935intentionally restricts which features may be added (and rejects any that
5936affect gameplay).")
5937 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5938 (license license:gpl2)))
5939
3f9a027c
DF
5940(define-public crispy-doom
5941 (package
5942 (inherit chocolate-doom)
5943 (name "crispy-doom")
e884c205 5944 (version "5.7.1")
3f9a027c
DF
5945 (source (origin
5946 (method git-fetch)
5947 (uri (git-reference
5948 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5949 (commit (string-append "crispy-doom-" version))))
5950 (file-name (git-file-name name version))
5951 (sha256
e884c205 5952 (base32 "1gqivy4pxasy7phyznixsagylf9f70bk33b0knpfzzlks6cc6zzj"))))
3f9a027c
DF
5953 (native-inputs
5954 (append
5955 (package-native-inputs chocolate-doom)
5956 `(("automake" ,automake)
5957 ("autoreconf" ,autoconf))))
5958 (arguments
5959 `(#:phases
5960 (modify-phases %standard-phases
5961 (replace 'bootstrap
17cb06a6 5962 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
5963 (lambda _ (invoke "autoreconf" "-vif"))))))
5964 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5965Chocolate Doom")
5966 (description
5967 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5968display resolution, removes the static limits of the Doom engine and offers
5969further optional visual, tactical and physical enhancements while remaining
5970entirely config file, savegame, netplay and demo compatible with the
5971original.")
5972 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5973
64b47a29
OP
5974(define shlomif-cmake-modules
5975 (origin
5976 (method url-fetch)
5977 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5978 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5979 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5980 (sha256
5981 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
5982
5983(define-public rinutils
5984 (package
5985 (name "rinutils")
5986 (version "0.2.0")
5987 (source (origin
5988 (method git-fetch)
5989 (uri (git-reference
5990 (url "https://github.com/shlomif/rinutils.git")
5991 (commit version)))
5992 (file-name (git-file-name name version))
5993 (sha256
5994 (base32
5995 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5996 (native-inputs
5997 `(("perl" ,perl)
5998 ;; The following is only needed for tests.
5999 ("perl-file-find-object" ,perl-file-find-object)
6000 ("perl-test-differences" ,perl-test-differences)
6001 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6002 ("perl-io-all" ,perl-io-all)
6003 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
6004 ("cmake-rules" ,shlomif-cmake-modules)
6005 ("pkg-config" ,pkg-config)))
6006 (inputs
6007 `(("cmocka" ,cmocka)
6008 ("perl-env-path", perl-env-path)
6009 ("perl-inline" ,perl-inline)
6010 ("perl-inline-c" ,perl-inline-c)
6011 ("perl-string-shellquote" ,perl-string-shellquote)
6012 ("perl-test-trailingspace" ,perl-test-trailingspace)
6013 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
6014 ("perl-text-glob" ,perl-text-glob)
6015 ("perl-number-compare" ,perl-number-compare)
6016 ("perl-moo" ,perl-moo)))
6017 (arguments
6018 `(#:phases
6019 (modify-phases %standard-phases
6020 (add-after 'unpack 'fix-build-env
6021 (lambda* (#:key inputs #:allow-other-keys)
6022 (use-modules (guix build utils))
6023 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6024 (copy-file cmake-rules
6025 (string-append "cmake/"
6026 (strip-store-file-name cmake-rules)))
6027 #t)))
6028 (replace 'check
6029 (lambda _
6030 (with-directory-excursion "../source"
6031 (setenv "FCS_TEST_BUILD" "1")
6032 (setenv "RINUTILS_TEST_BUILD" "1")
6033 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
6034 ;; which requires tidy-all.
6035 ;; (setenv "RINUTILS_TEST_TIDY" "1")
6036 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
6037 (build-system cmake-build-system)
6038 (home-page "https://www.shlomifish.org/open-source/projects/")
6039 (synopsis "C11 / gnu11 utilities C library")
6040 (description "This package provides C11 / gnu11 utilities C library")
6041 (license license:expat)))
6042
b1642338
PN
6043(define-public fortune-mod
6044 (package
6045 (name "fortune-mod")
815e12f3 6046 (version "2.12.0")
7e1d376d
TGR
6047 (source
6048 (origin
6049 (method git-fetch)
6050 (uri (git-reference
6051 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 6052 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
6053 (file-name (git-file-name name version))
6054 (sha256
6055 (base32
815e12f3 6056 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
b1642338
PN
6057 (build-system cmake-build-system)
6058 (arguments
6059 `(#:test-target "check"
6060 #:phases
6061 (modify-phases %standard-phases
6062 (add-after 'unpack 'fix-build-env
6063 (lambda* (#:key inputs #:allow-other-keys)
6064 (use-modules (guix build utils))
6065 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
6066 (copy-file cmake-rules
6067 (string-append "fortune-mod/cmake/"
6068 (strip-store-file-name cmake-rules)))
abf06df2 6069 (chdir "fortune-mod")
61857323
PN
6070 ;; TODO: Valgrind tests fail for some reason.
6071 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6072 (delete-file "tests/t/valgrind.t")
abf06df2 6073 #t)))
b1642338 6074 (add-after 'install 'fix-install-directory
b1642338 6075 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
6076 ;; Move binary from "games/" to "bin/" and remove the latter. This
6077 ;; is easier than patching CMakeLists.txt since the tests hard-code
6078 ;; the location as well.
6079 (let* ((out (assoc-ref outputs "out"))
6080 (bin (string-append out "/bin"))
6081 (games (string-append out "/games")))
6082 (rename-file (string-append games "/fortune")
6083 (string-append bin "/fortune"))
6084 (rmdir games)
b1642338
PN
6085 #t))))))
6086 (inputs `(("recode" ,recode)))
6087 (native-inputs
6088 `(("perl" ,perl)
6089 ;; The following is only needed for tests.
6090 ("perl-file-find-object" ,perl-file-find-object)
6091 ("perl-test-differences" ,perl-test-differences)
6092 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6093 ("perl-io-all" ,perl-io-all)
6094 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
6095 ("cmake-rules" ,shlomif-cmake-modules)
6096 ("rinutils" ,rinutils)))
6ef143ef 6097 (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
b1642338
PN
6098 (synopsis "The Fortune Cookie program from BSD games")
6099 (description "Fortune is a command-line utility which displays a random
6100quotation from a collection of quotes.")
6101 (license license:bsd-4)))
dc70ff2a 6102
6103(define xonotic-data
6104 (package
6105 (name "xonotic-data")
6106 (version "0.8.2")
6107 (source
6108 (origin
6109 (method url-fetch)
6110 (uri (string-append "http://dl.xonotic.org/xonotic-"
6111 version ".zip"))
6112 (file-name (string-append name "-" version ".zip"))
6113 (sha256
6114 (base32
6115 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6116 (build-system trivial-build-system)
6117 (native-inputs
6118 `(("unzip" ,unzip)))
6119 (arguments
6120 `(#:modules ((guix build utils))
6121 #:builder
6122 (begin
6123 (use-modules (guix build utils))
6124 (let* ((out (assoc-ref %outputs "out"))
6125 (xonotic (string-append out "/share/xonotic"))
6126 (source (assoc-ref %build-inputs "source"))
6127 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6128 (copy-file source (string-append ,name "-" ,version ".zip"))
6129 (invoke unzip (string-append ,name "-" ,version ".zip"))
6130 (mkdir-p out)
6131 (mkdir-p xonotic)
6132 (chdir "Xonotic")
6133 (copy-recursively "data"
6134 (string-append xonotic "/data"))
6135 (copy-recursively "server"
6136 (string-append xonotic "/server"))
6137 (install-file "key_0.d0pk" xonotic)))))
6138 (home-page "http://xonotic.org")
6139 (synopsis "Data files for Xonotic")
6140 (description
6141 "Xonotic-data provides the data files required by the game Xonotic.")
6142 (license (list license:gpl2+
9b9db6c4 6143 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 6144
6145(define-public xonotic
6146 (package
6147 (name "xonotic")
6148 (version "0.8.2")
6149 (source
6150 (origin
6151 (method url-fetch)
6152 (uri (string-append "http://dl.xonotic.org/xonotic-"
6153 version "-source.zip"))
6154 (file-name (string-append name "-" version ".zip"))
6155 (sha256
6156 (base32
6157 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6158 (build-system gnu-build-system)
6159 (arguments
6160 `(#:configure-flags (list (string-append "--prefix="
6161 (assoc-ref %outputs "out"))
6162 "--disable-rijndael")
6163 #:phases
6164 (modify-phases %standard-phases
6165 (add-before 'configure 'make-darkplaces
6166 (lambda* (#:key outputs #:allow-other-keys)
6167 (let* ((out (assoc-ref outputs "out"))
6168 (sharedir (string-append out "/share/xonotic/")))
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 "cl-release")
6177 (invoke "make" "-C" "source/darkplaces"
6178 (string-append "DP_FS_BASEDIR="
6179 sharedir)
6180 "DP_LINK_TO_LIBJPEG=1"
6181 "DP_SOUND_API=ALSA"
6182 "CC=gcc"
6183 "-f" "makefile"
6184 "sdl-release")
6185 (invoke "make" "-C" "source/darkplaces"
6186 (string-append "DP_FS_BASEDIR="
6187 sharedir)
6188 "DP_LINK_TO_LIBJPEG=1"
6189 "DP_SOUND_API=ALSA"
6190 "CC=gcc"
6191 "-f" "makefile"
6192 "sv-release"))))
6193 (add-before 'configure 'bootstrap
6194 (lambda _
6195 (chdir "source/d0_blind_id")
6196 (invoke "sh" "autogen.sh")))
6197 (add-after 'build 'install-desktop-entry
6198 (lambda* (#:key outputs #:allow-other-keys)
6199 ;; Add .desktop files for the 2 variants and the symlink
6200 (let* ((output (assoc-ref outputs "out"))
6201 (apps (string-append output "/share/applications")))
6202 (mkdir-p apps)
6203 (with-output-to-file
6204 (string-append apps "/xonotic-glx.desktop")
6205 (lambda _
6206 (format #t
6207 "[Desktop Entry]~@
6208 Name=xonotic-glx~@
6209 Comment=Xonotic glx~@
6210 Exec=~a/bin/xonotic-glx~@
6211 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6212 Icon=xonotic~@
6213 Categories=Game~@
dc70ff2a 6214 Type=Application~%"
6215 output)))
6216 (with-output-to-file
6217 (string-append apps "/xonotic-sdl.desktop")
6218 (lambda _
6219 (format #t
6220 "[Desktop Entry]~@
6221 Name=xonotic-sdl~@
6222 Comment=Xonotic sdl~@
6223 Exec=~a/bin/xonotic-sdl~@
6224 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6225 Icon=xonotic~@
6226 Categories=Game~@
dc70ff2a 6227 Type=Application~%"
6228 output)))
6229 (with-output-to-file
6230 (string-append apps "/xonotic.desktop")
6231 (lambda _
6232 (format #t
6233 "[Desktop Entry]~@
6234 Name=xonotic~@
6235 Comment=Xonotic~@
6236 Exec=~a/bin/xonotic-glx~@
6237 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6238 Icon=xonotic~@
6239 Categories=Game~@
dc70ff2a 6240 Type=Application~%"
6241 output)))
6242 #t)))
6243 (add-after 'install-desktop-entry 'install-icons
6244 (lambda* (#:key outputs #:allow-other-keys)
6245 (let ((out (assoc-ref outputs "out")))
6246 (with-directory-excursion "../../misc/logos/icons_png/"
6247 (for-each
6248 (lambda (file)
6249 (let* ((size (string-filter char-numeric? file))
6250 (icons (string-append out "/share/icons/hicolor/"
6251 size "x" size "/apps")))
6252 (mkdir-p icons)
6253 (copy-file file (string-append icons "/xonotic.png"))))
6254 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6255 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6256 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6257 (add-after 'install-icons 'install-binaries
6258 (lambda* (#:key outputs #:allow-other-keys)
6259 (let ((out (assoc-ref outputs "out")))
6260 (define (install src dst)
6261 (let ((dst (string-append out dst)))
6262 (mkdir-p (dirname dst))
6263 (copy-file src dst)))
6264 (mkdir-p (string-append out "/bin"))
6265 (install "../darkplaces/darkplaces-dedicated"
6266 "/bin/xonotic-dedicated")
6267 (install "../darkplaces/darkplaces-glx"
6268 "/bin/xonotic-glx")
6269 (install "../darkplaces/darkplaces-sdl"
6270 "/bin/xonotic-sdl")
6271 ;; Provide a default xonotic executable, defaulting to SDL.
6272 (symlink (string-append out "/bin/xonotic-sdl")
6273 (string-append out "/bin/xonotic"))
6274 #t)))
6275 (add-after 'install-binaries 'install-data
6276 (lambda* (#:key outputs inputs #:allow-other-keys)
6277 (let* ((out (assoc-ref outputs "out"))
6278 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6279 (symlink (string-append data "/share/xonotic")
6280 (string-append out "/share/xonotic"))
dc70ff2a 6281 #t)))
6282 (add-after 'install-binaries 'wrap-binaries
6283 (lambda* (#:key outputs inputs #:allow-other-keys)
6284 ;; Curl and libvorbis need to be wrapped so that we get
6285 ;; sound and networking.
6286 (let* ((out (assoc-ref outputs "out"))
6287 (bin (string-append out "/bin/xonotic"))
6288 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6289 (bin-glx (string-append out "/bin/xonotic-glx"))
6290 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6291 (curl (assoc-ref inputs "curl"))
6292 (vorbis (assoc-ref inputs "libvorbis")))
6293 (wrap-program bin
6294 `("LD_LIBRARY_PATH" ":" prefix
6295 (,(string-append curl "/lib:" vorbis "/lib"))))
6296 (wrap-program bin-sdl
6297 `("LD_LIBRARY_PATH" ":" prefix
6298 (,(string-append curl "/lib:" vorbis "/lib"))))
6299 (wrap-program bin-glx
6300 `("LD_LIBRARY_PATH" ":" prefix
6301 (,(string-append curl "/lib:" vorbis "/lib"))))
6302 (wrap-program bin-dedicated
6303 `("LD_LIBRARY_PATH" ":" prefix
6304 (,(string-append curl "/lib:" vorbis "/lib"))))
6305 #t))))))
6306 (inputs
6307 `(("xonotic-data" ,xonotic-data)
6308 ("alsa-lib" ,alsa-lib)
6309 ("curl" ,curl)
6310 ("libjpeg" ,libjpeg)
6311 ("libmodplug" ,libmodplug)
6312 ("libvorbis" ,libvorbis)
6313 ("libogg" ,libogg)
6314 ("libxpm" ,libxpm)
6315 ("libxxf86dga" ,libxxf86dga)
6316 ("libxxf86vm" ,libxxf86vm)
6317 ("libx11" ,libx11)
6318 ("libxext" ,libxext)
6319 ("libxau" ,libxau)
6320 ("libxdmcp" ,libxdmcp)
6321 ("mesa" ,mesa)
6322 ("glu" ,glu)
6323 ("freetype" ,freetype)
6324 ("sdl2" ,sdl2)
6325 ("libpng" ,libpng)
6326 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6327 (native-inputs
6328 `(("unzip" ,unzip)
6329 ("autoconf" ,autoconf)
6330 ("automake" ,automake)
6331 ("pkg-config" ,pkg-config)
6332 ("libtool" ,libtool)
6333 ("gmp" ,gmp)))
6334 (home-page "http://xonotic.org")
6335 (synopsis "Fast-paced first-person shooter game")
6336 (description
6337 "Xonotic is a free, fast-paced first-person shooter.
6338The project is geared towards providing addictive arena shooter
6339gameplay which is all spawned and driven by the community itself.
6340Xonotic is a direct successor of the Nexuiz project with years of
6341development between them, and it aims to become the best possible
6342open-source FPS of its kind.")
6343 (license (list license:gpl2+
6344 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6345 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6346
6347(define-public frotz
6348 (package
6349 (name "frotz")
6350 (version "2.44")
6351 (source (origin
6352 (method url-fetch)
6353 (uri (list (string-append
6354 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6355 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6356 (string-append
6357 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6358 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6359 (sha256
6360 (base32
6361 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6362 (build-system gnu-build-system)
6363 (arguments
6364 `(#:tests? #f ; there are no tests
6365 #:phases
6366 (modify-phases %standard-phases
6367 (delete 'configure)
6368 (add-before 'build 'curses
6369 (lambda _
6370 (substitute* "Makefile"
6371 (("lcurses") "lncurses"))
6372 #t))
6373 (replace 'install
6374 (lambda* (#:key outputs #:allow-other-keys)
6375 (let* ((out (assoc-ref outputs "out"))
6376 (bin (string-append out "/bin"))
6377 (man (string-append out "/share/man/man6")))
6378 (install-file "frotz" bin)
6379 (mkdir-p man)
6380 (install-file "doc/frotz.6" man)
6381 #t))))))
6382 (inputs `(("libmodplug" ,libmodplug)
6383 ("libsamplerate" ,libsamplerate)
6384 ("libsndfile" ,libsndfile)
6385 ("libvorbis" ,libvorbis)
6386 ("ncurses" ,ncurses)))
6387 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6388 (description "Frotz is an interpreter for Infocom games and other Z-machine
6389games in the text adventure/interactive fiction genre. This version of Frotz
6390complies with standard 1.0 of Graham Nelson's specification. It plays all
6391Z-code games V1-V8, including V6, with sound support through libao, and uses
6392ncurses for text display.")
6393 (home-page "http://frotz.sourceforge.net")
6394 (license license:gpl2+)))
6395
6396(define-public frotz-dumb-terminal
6397 (package
6398 (name "frotz-dumb-terminal")
6399 (version "2.44")
6400 (source (origin
6401 (method url-fetch)
6402 (uri (list (string-append
6403 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6404 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6405 (string-append
6406 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6407 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6408 (sha256
6409 (base32
6410 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6411 (build-system gnu-build-system)
6412 (arguments
6413 `(#:tests? #f ; there are no tests
6414 #:phases
6415 (modify-phases %standard-phases
6416 (delete 'configure)
6417 (replace 'build
6418 (lambda _
6419 (invoke "make" "dumb")))
6420 (replace 'install
6421 (lambda* (#:key outputs #:allow-other-keys)
6422 (let* ((out (assoc-ref outputs "out"))
6423 (bin (string-append out "/bin"))
6424 (man (string-append out "/share/man/man6")))
6425 (install-file "dfrotz" bin)
6426 (mkdir-p man)
6427 (install-file "doc/dfrotz.6" man)
6428 #t))))))
6429 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6430 (description "Frotz is an interpreter for Infocom games and
6431other Z-machine games in the text adventure/interactive fiction genre.
6432dfrotz is the dumb interface version. You get no screen control; everything
6433is just printed to the terminal line by line. The terminal handles all the
6434scrolling. Maybe you'd like to experience what it's like to play Adventure on
6435a teletype. A much cooler use for compiling Frotz with the dumb interface is
6436that it can be wrapped in CGI scripting, PHP, and the like to allow people
6437to play games on webpages. It can also be made into a chat bot.")
6438 (home-page "http://frotz.sourceforge.net")
6439 (license license:gpl2+)))
6440
6441(define-public frotz-sdl
6442 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6443 (package
6444 (name "frotz-sdl")
6445 (version "2.45pre")
6446 (source (origin
6447 (method git-fetch)
6448 (uri (git-reference
6449 (url "https://gitlab.com/DavidGriffith/frotz")
6450 (commit commit)))
6451 (sha256
6452 (base32
6453 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6454 (file-name (git-file-name name version))))
6455 (build-system gnu-build-system)
6456 (arguments
6457 `(#:tests? #f ; there are no tests
6458 #:phases
6459 (modify-phases %standard-phases
6460 (delete 'configure)
6461 (add-before 'build 'patch-makefile
6462 (lambda _
6463 (substitute* "Makefile"
6464 (("lcurses") "lncurses")
6465 (("^BUILD_DATE_TIME =.*$")
6466 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6467 #t))
6468 (replace 'build
6469 (lambda _
6470 (invoke "make" "sdl")))
6471 (replace 'install
6472 (lambda* (#:key outputs #:allow-other-keys)
6473 (let* ((out (assoc-ref outputs "out"))
6474 (bin (string-append out "/bin"))
6475 (man (string-append out "/share/man/man6")))
6476 (install-file "sfrotz" bin)
6477 (mkdir-p man)
6478 (install-file "doc/sfrotz.6" man)
6479 #t))))))
6480 (native-inputs
6481 `(("pkg-config" ,pkg-config)
6482 ("which" ,which)
6483 ("perl" ,perl)))
6484 (inputs `(("sdl2" ,sdl2)
6485 ("sdl2-mixer" ,sdl2-mixer)
6486 ("libmodplug" ,libmodplug)
6487 ("libsamplerate" ,libsamplerate)
6488 ("libsndfile" ,libsndfile)
6489 ("libvorbis" ,libvorbis)
6490 ("ncurses" ,ncurses)
6491 ("freetype" ,freetype)
6492 ("libjpeg-turbo" ,libjpeg-turbo)))
6493 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6494 (description "Frotz is an interpreter for Infocom games and other Z-machine
6495games in the text adventure/interactive fiction genre. This version of Frotz
6496using SDL fully supports all these versions of the Z-Machine including the
6497graphical version 6. Graphics and sound are created through the use of the SDL
6498libraries. AIFF sound effects and music in MOD and OGG formats are supported
6499when packaged in Blorb container files or optionally from individual files.")
6500 (home-page "http://frotz.sourceforge.net")
6501 (license license:gpl2+))))
18ebaa9e
EB
6502
6503(define-public libmanette
6504 (package
6505 (name "libmanette")
737e32a4 6506 (version "0.2.3")
18ebaa9e
EB
6507 (source (origin
6508 (method url-fetch)
5b35bdaa 6509 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6510 (version-major+minor version) "/"
5b35bdaa 6511 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6512 (sha256
6513 (base32
737e32a4 6514 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6515 (build-system meson-build-system)
6516 (native-inputs
6517 `(("glib" ,glib "bin") ; for glib-compile-resources
6518 ("gobject-introspection" ,gobject-introspection)
6519 ("pkg-config" ,pkg-config)
6520 ("vala" ,vala)))
6521 (inputs
6522 `(("libevdev" ,libevdev)
6523 ("libgudev" ,libgudev)))
6524 (home-page "https://wiki.gnome.org/Apps/Games")
6525 (synopsis "Game controller library")
6526 (description "Libmanette is a small GObject library giving you simple
6527access to game controllers. It supports the de-facto standard gamepads as
6528defined by the W3C standard Gamepad specification or as implemented by the SDL
6529GameController.")
6530 (license license:lgpl2.1+)))
39c676c4
EB
6531
6532(define-public quadrapassel
6533 (package
6534 (name "quadrapassel")
8a5bfb26 6535 (version "3.32.0")
39c676c4
EB
6536 (source (origin
6537 (method url-fetch)
49598564 6538 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6539 (version-major+minor version) "/"
49598564 6540 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6541 (sha256
6542 (base32
8a5bfb26
KK
6543 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6544 (build-system meson-build-system)
6545 (arguments
6546 '(#:glib-or-gtk? #t
6547 #:phases
6548 (modify-phases %standard-phases
6549 (add-after 'unpack 'skip-gtk-update-icon-cache
6550 ;; Don't create 'icon-theme.cache'.
6551 (lambda _
6552 (substitute* "build-aux/meson_post_install.py"
6553 (("gtk-update-icon-cache") (which "true")))
6554 #t)))))
39c676c4
EB
6555 (native-inputs
6556 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6557 ("gettext" ,gnu-gettext)
6558 ("glib" ,glib "bin") ;for glib-compile-resources
6559 ("itstool" ,itstool)
6560 ("libxml2" ,libxml2) ;for xmllint
6561 ("pkg-config" ,pkg-config)
6562 ("vala" ,vala)))
6563 (inputs
6564 `(("clutter" ,clutter)
6565 ("clutter-gtk" ,clutter-gtk)
6566 ("gtk+" ,gtk+)
6567 ("libcanberra" ,libcanberra)
6568 ("libmanette" ,libmanette)
6569 ("librsvg" ,librsvg)))
6570 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6571 (synopsis "GNOME version of Tetris")
6572 (description "Quadrapassel comes from the classic falling-block game,
6573Tetris. The goal of the game is to create complete horizontal lines of
6574blocks, which will disappear. The blocks come in seven different shapes made
6575from four blocks each: one straight, two L-shaped, one square, and two
6576S-shaped. The blocks fall from the top center of the screen in a random
6577order. You rotate the blocks and move them across the screen to drop them in
6578complete lines. You score by dropping blocks fast and completing lines. As
6579your score gets higher, you level up and the blocks fall faster.")
6580 (license license:gpl2+)))
560df540
EF
6581
6582(define-public endless-sky
6583 (package
6584 (name "endless-sky")
aa641984 6585 (version "0.9.10")
560df540
EF
6586 (source
6587 (origin
6588 (method git-fetch)
6589 (uri (git-reference
6590 (url "https://github.com/endless-sky/endless-sky")
6591 (commit (string-append "v" version))))
6592 (file-name (git-file-name name version))
6593 (sha256
6594 (base32
aa641984 6595 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6596 (build-system scons-build-system)
6597 (arguments
6598 `(#:scons ,scons-python2
6599 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6600 #:tests? #f ; no tests
6601 #:phases
6602 (modify-phases %standard-phases
6603 (add-after 'unpack 'patch-resource-locations
6604 (lambda* (#:key outputs #:allow-other-keys)
6605 (substitute* "source/Files.cpp"
6606 (("/usr/local/")
6607 (string-append (assoc-ref outputs "out") "/")))
6608 #t))
6609 (add-after 'unpack 'patch-scons
6610 (lambda _
6611 (substitute* "SConstruct"
6612 ;; Keep environmental variables
6613 (("Environment\\(\\)")
6614 "Environment(ENV = os.environ)")
6615 ;; Install into %out/bin
6616 (("games\"") "bin\""))
6617 #t)))))
6618 (inputs
6619 `(("glew" ,glew)
6620 ("libjpeg" ,libjpeg-turbo)
6621 ("libmad" ,libmad)
6622 ("libpng" ,libpng)
6623 ("openal" ,openal)
6624 ("sdl2" ,sdl2)))
6625 (home-page "https://endless-sky.github.io/")
6626 (synopsis "2D space trading and combat game")
6627 (description "Endless Sky is a 2D space trading and combat game. Explore
6628other star systems. Earn money by trading, carrying passengers, or completing
6629missions. Use your earnings to buy a better ship or to upgrade the weapons and
6630engines on your current one. Blow up pirates. Take sides in a civil war. Or
6631leave human space behind and hope to find friendly aliens whose culture is more
6632civilized than your own.")
6633 (license (list license:gpl3+
6634 license:cc-by-sa3.0
6635 license:cc-by-sa4.0
6636 license:public-domain))))
1faf0a04
NG
6637
6638(define-public stepmania
6639 (package
6640 (name "stepmania")
6641 (version "5.1.0-b2")
6642 (source
6643 (origin
6644 (method git-fetch)
6645 (uri (git-reference
6646 (url "https://github.com/stepmania/stepmania.git")
6647 (commit (string-append "v" version))))
6648 (file-name (git-file-name name version))
6649 (sha256
6650 (base32
6651 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6652 (modules '((guix build utils)))
6653 (snippet
6654 '(begin
6655 ;; Remove song files, which are licensed under a non-commercial
6656 ;; clause, and a course pointing to them.
6657 (for-each delete-file-recursively
6658 '("Songs/StepMania 5/Goin' Under"
6659 "Songs/StepMania 5/MechaTribe Assault"
6660 "Songs/StepMania 5/Springtime"))
6661 (for-each delete-file '("Courses/Default/Jupiter.crs"
6662 "Courses/Default/Jupiter.png"))
6663 ;; Unbundle libpng.
6664 (substitute* "extern/CMakeLists.txt"
6665 (("include\\(CMakeProject-png.cmake\\)") ""))
6666 (delete-file-recursively "extern/libpng")
6667 #t))))
6668 (build-system cmake-build-system)
6669 (arguments
6670 `(#:tests? #f ;FIXME: couldn't find how to run tests
6671 #:build-type "Release"
6672 #:out-of-source? #f ;for the 'install-desktop' phase
6673 #:configure-flags
6674 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6675 ;; SSE instructions are available on Intel systems only.
6676 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6677 (%current-system)))
6678 '("x64_64" "i686"))
6679 '()
6680 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6681 ;; Configuration cannot find GTK2 without the two following
6682 ;; flags.
6683 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6684 (assoc-ref %build-inputs "gtk+")
6685 "/lib/gtk-2.0/include")
6686 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6687 (assoc-ref %build-inputs "glib")
6688 "/lib/glib-2.0/include"))
6689 #:phases
6690 (modify-phases %standard-phases
47746772 6691 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6692 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6693 (let ((out (assoc-ref outputs "out")))
6694 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6695 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6696 (string-append "\"" out
6697 "/share/stepmania/GtkModule.so\"")))
6698 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6699 (("Root = sDirOfExecutable")
6700 (string-append "Root = \"" out "/share/stepmania/\""))
6701 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6702 (string-append "\"" out "/share/stepmania/" dir "\"")))
6703 (substitute* "src/RageFileManager.cpp"
6704 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6705 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6706 #t))
1faf0a04
NG
6707 (add-after 'unpack 'fix-install-subdir
6708 ;; Installation would be done in "%out/stepmania-X.Y", but we
6709 ;; prefer the more common layout "%out/share/stepmania".
6710 (lambda _
6711 (substitute* "src/CMakeLists.txt"
6712 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6713 #t))
6714 (add-after 'unpack 'unbundle-libpng
6715 (lambda* (#:key inputs #:allow-other-keys)
6716 (substitute* "src/CMakeLists.txt"
6717 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6718 (string-append (assoc-ref inputs "libpng") "/include")))
6719 #t))
6720 (add-after 'install 'install-executable
6721 (lambda* (#:key outputs #:allow-other-keys)
6722 (let* ((out (assoc-ref outputs "out"))
6723 (bin (string-append out "/bin"))
6724 (exe (string-append out "/share/stepmania/stepmania")))
6725 (mkdir-p bin)
6726 (symlink exe (string-append bin "/stepmania"))
6727 #t)))
6728 (add-after 'install-executable 'install-desktop
6729 (lambda* (#:key outputs #:allow-other-keys)
6730 (let* ((out (assoc-ref outputs "out"))
6731 (share (string-append out "/share"))
6732 (applications (string-append share "/applications"))
6733 (icons (string-append share "/icons")))
6734 (install-file "stepmania.desktop" applications)
6735 (mkdir-p icons)
6736 (copy-recursively "icons" icons)
6737 #t)))
6738 ;; Move documentation in a more usual place, i.e.,
6739 ;; "%out/share/doc/stepmania/".
6740 (add-after 'install-desktop 'install-doc
6741 (lambda* (#:key outputs #:allow-other-keys)
6742 (let* ((out (assoc-ref outputs "out"))
6743 (share (string-append out "/share")))
6744 (with-directory-excursion share
6745 (mkdir-p "doc")
6746 (symlink "../stepmania/Docs" "doc/stepmania"))
6747 #t))))))
6748 (native-inputs
6749 `(("pkg-config" ,pkg-config)
6750 ("yasm" ,yasm)))
6751 (inputs
6752 `(("alsa-lib" ,alsa-lib)
6753 ;; Per upstream, StepMania is only guaranteed to work with a very
6754 ;; specific FFmpeg version, which is included in the repository as
6755 ;; a Git submodule. This particular version requirement usually
6756 ;; changes every few years.
6757 ("ffmpeg" ,ffmpeg-for-stepmania)
6758 ("glib" ,glib)
6759 ("glew" ,glew)
6760 ("gtk+" ,gtk+-2)
6761 ("jsoncpp" ,jsoncpp)
6762 ("libpng" ,libpng)
96738cb1 6763 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
6764 ("libmad" ,libmad)
6765 ("libogg" ,libogg)
6766 ("libva" ,libva)
6767 ("libvorbis" ,libvorbis)
6768 ("libxinerama" ,libxinerama)
6769 ("libxrandr" ,libxrandr)
6770 ("mesa" ,mesa)
6771 ("pcre" ,pcre)
6772 ("pulseaudio" ,pulseaudio)
6773 ("sdl" ,sdl2)
6774 ("udev" ,eudev)
6775 ("zlib" ,zlib)))
6776 (synopsis "Advanced rhythm game designed for both home and arcade use")
6777 (description "StepMania is a dance and rhythm game. It features 3D
6778graphics, keyboard and dance pad support, and an editor for creating your own
6779steps.
6780
6781This package provides the core application, but no song is shipped. You need
6782to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6783 (home-page "https://www.stepmania.com")
6784 (license license:expat)))
6785
649220ad 6786(define-public btanks
ca32afac 6787 (package
649220ad 6788 (name "btanks")
ca32afac
RW
6789 (version "0.9.8083")
6790 (source
6791 (origin
6792 (method url-fetch)
6793 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6794 "btanks-" version ".tar.bz2"))
6795 (sha256
6796 (base32
6797 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6798 (build-system scons-build-system)
6799 (arguments
6800 `(#:tests? #f ; there are none
6801 #:scons ,scons-python2
6802 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6803 #:phases
6804 (modify-phases %standard-phases
6805 (add-after 'unpack 'replace-removed-scons-syntax
6806 (lambda _
6807 (substitute* "SConstruct"
6808 (("Options") "Variables")
6809 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6810 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6811 #t))
6812 (add-after 'set-paths 'set-sdl-paths
6813 (lambda* (#:key inputs #:allow-other-keys)
6814 (setenv "CPATH"
6815 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6816 "/include/SDL:"
6817 (or (getenv "CPATH") "")))
ca32afac
RW
6818 #t))
6819 (add-after 'unpack 'fix-compilation-errors
6820 (lambda _
6821 (substitute* "mrt/base_file.h"
6822 (("#include <string>" m)
6823 (string-append m "\n#include <sys/types.h>")))
6824 (substitute* '("engine/sl08/sl08.h"
6825 "engine/sl08/sl08.py")
6826 (("signal = NULL") "signal = 0")
6827 (("object\\(NULL\\)") "object(0)")
6828 (("func\\(NULL\\)") "func(0)")
6829 ((" connect\\(signal_ref\\)")
6830 " this->connect(signal_ref)"))
6831 (substitute* "math/range_list.h"
6832 ((" lower_bound\\(value\\)")
6833 " this->lower_bound(value)")
6834 ((" erase\\(i\\)")
6835 " this->erase(i)"))
6836 (substitute* "clunk/source.cpp"
6837 (("using namespace clunk" m)
6838 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6839 #t))
6840 (add-after 'unpack 'find-lua
6841 (lambda _
6842 (substitute* "engine/SConscript"
6843 (("lua5.1") "lua-5.1")
6844 (("bt_libs.append\\(lua\\)")
6845 "bt_libs.append(\"lua\")"))
6846 #t)))))
6847 (inputs
6848 `(("expat" ,expat)
6849 ("glu" ,glu)
6850 ("libsmpeg" ,libsmpeg-with-sdl1)
6851 ("libvorbis" ,libvorbis)
6852 ("lua51" ,lua-5.1)
6853 ("sdl" ,(sdl-union (list sdl
6854 sdl-mixer
6855 sdl-image
6856 sdl-ttf)))
6857 ("zlib" ,zlib)))
6858 (native-inputs
6859 `(("pkg-config" ,pkg-config)
6860 ("zip" ,zip)))
6861 (home-page "http://btanks.sourceforge.net")
6862 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6863 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6864game, where you can choose one of three vehicles and eliminate your enemy
6865using the whole arsenal of weapons. It has original cartoon-like graphics and
6866cool music, it’s fun and dynamic, it has several network modes for deathmatch
6867and cooperative.")
ca32afac
RW
6868 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6869 ;; released under GPLv2 or later. It comes with extra exceptions for the
6870 ;; developers.
6871 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6872
649220ad
NG
6873(define-public battle-tanks
6874 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6875
c06709b8
RW
6876(define-public slingshot
6877 (package
6878 (name "slingshot")
6879 (version "0.9")
6880 (source
6881 (origin
6882 (method git-fetch)
6883 (uri (git-reference
6884 (url "https://github.com/ryanakca/slingshot.git")
6885 (commit version)))
6886 (file-name (git-file-name name version))
6887 (sha256
6888 (base32
6889 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6890 (build-system python-build-system)
6891 (arguments
6892 `(#:python ,python-2))
6893 (inputs
6894 `(("python-pygame" ,python2-pygame)))
6895 (home-page "https://github.com/ryanakca/slingshot")
6896 (synopsis "Simple 2D shooting strategy game set in space")
6897 (description "Slingshot is a two-dimensional strategy game where two
6898players attempt to shoot one another through a section of space populated by
6899planets. The main feature of the game is that the shots, once fired, are
6900affected by the gravity of the planets.")
6901 (license license:gpl2+)))
8ada024b
RW
6902
6903(define-public 4dtris
6904 (package
6905 (name "4dtris")
6906 (version "0.4.3")
6907 (source
6908 (origin
6909 (method url-fetch)
6910 (uri (string-append "https://launchpad.net/4dtris/"
6911 (version-major+minor version)
6912 "/" version "/+download/4dtris_"
6913 version ".orig.tar.gz"))
6914 (sha256
6915 (base32
6916 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6917 (build-system gnu-build-system)
6918 (arguments
6919 `(#:phases
6920 (modify-phases %standard-phases
6921 (add-after 'unpack 'fix-install-directories
6922 (lambda* (#:key outputs #:allow-other-keys)
6923 (let ((out (assoc-ref outputs "out")))
6924 (substitute* "Makefile.in"
6925 (("bindir = /usr/games")
6926 (string-append "bindir = " out "/bin"))
6927 (("/usr/share/applications")
6928 (string-append out "/share/applications"))
6929 (("/usr/share/games/4dtris")
6930 (string-append out "/share/4dtris"))))
6931 #t))
6932 (add-after 'set-paths 'set-sdl-paths
6933 (lambda* (#:key inputs #:allow-other-keys)
6934 (setenv "CPATH"
6935 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6936 "/include/SDL:"
6937 (or (getenv "CPATH") "")))
8ada024b
RW
6938 #t)))))
6939 (inputs
6940 `(("fontconfig" ,fontconfig)
6941 ("freeglut" ,freeglut)
6942 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6943 (home-page "https://launchpad.net/4dtris/")
6944 (synopsis "4D Tetris")
6945 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6946game field is extended to 4D space, which has to filled up by the gamer with
69474D hyper cubes.")
6948 (license license:gpl3)))
6949
8044e584
PN
6950(define-public arx-libertatis
6951 (package
6952 (name "arx-libertatis")
6953 (version "1.1.2")
6954 (source
6955 (origin
6956 (method url-fetch)
6957 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6958 version ".tar.xz"))
6959 (sha256
6960 (base32
6961 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6962 (build-system cmake-build-system)
6963 (outputs '("out" "installer"))
6964 (arguments
6965 '(#:tests? #f ; No tests.
6966 #:phases
6967 (modify-phases %standard-phases
6968 (add-after 'unpack 'fix-install-helper-paths
6969 (lambda* (#:key inputs #:allow-other-keys)
6970 (let ((p7zip (assoc-ref inputs "p7zip"))
6971 (innoextract (assoc-ref inputs "innoextract"))
6972 (wget (assoc-ref inputs "wget"))
6973 (zenity (assoc-ref inputs "zenity")))
6974 (substitute* "scripts/arx-install-data"
6975 (("have innoextract")
6976 (string-append "have " innoextract "/bin/innoextract"))
6977 (("then innoextract")
6978 (string-append "then " innoextract "/bin/innoextract"))
6979 (("else innoextract")
6980 (string-append "else " innoextract "/bin/innoextract"))
6981 (("for _extract_zip_sz in 7za 7z")
6982 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6983 (("else if have 7z")
6984 (string-append "else if have " p7zip "/bin/7za"))
6985 (("7z x -tiso")
6986 (string-append p7zip "/bin/7z x -tiso"))
6987 (("if have wget")
6988 (string-append "if have " wget "/bin/wget"))
6989 (("wget -O")
6990 (string-append wget "/bin/wget -O"))
6991 (("for backend in \\$preferred zenity")
6992 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6993 (("zenity +--title")
6994 (string-append zenity "/bin/zenity --title"))
6995 (("^zenity\\)")
6996 (string-append zenity "/bin/zenity)"))))
6997 #t))
6998 (add-after 'install 'move-installer
6999 (lambda* (#:key outputs #:allow-other-keys)
7000 (let ((out (assoc-ref outputs "out"))
7001 (installer (assoc-ref outputs "installer")))
7002 (mkdir-p (string-append installer "/bin"))
7003 (rename-file (string-append out "/bin/arx-install-data")
7004 (string-append installer "/bin/arx-install-data"))))))))
7005 (inputs
7006 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
7007 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
7008 ("glew" ,glew)
7009 ("openal" ,openal)
7010 ("zlib" ,zlib)
7011 ("boost" ,boost)
7012 ("glm" ,glm)
7013 ("freetype" ,freetype)
7014 ;; The following are only needed by the arx-install-data script.
7015 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
7016 ("zenity" ,zenity) ; GUI for install-helper.
7017 ("wget" ,wget) ; Used by the install-helper to download the patch.
7018 ;; The install-helper needs it to extract the patch.
7019 ("innoextract" ,innoextract)))
7020 (home-page "https://arx-libertatis.org/")
7021 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
7022 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
7023first-person role-playing game / dungeon crawler developed by Arkane Studios.
7024This port however does not include the game data, so you need to obtain a copy
7025of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
7026features crafting, melee and ranged combat, as well as a unique casting system
7027where the player draws runes in real time to effect the desired spell.")
8044e584 7028 (license license:gpl3+)))
47903653 7029
649220ad 7030(define-public edgar
47903653 7031 (package
649220ad 7032 (name "edgar")
a50d6099 7033 (version "1.32")
47903653 7034 (source
7035 (origin
7036 (method url-fetch)
7037 (uri
7038 (string-append "https://github.com/riksweeney/edgar/releases/download/"
7039 version "/edgar-" version "-1.tar.gz"))
7040 (sha256
a50d6099 7041 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 7042 (build-system gnu-build-system)
067826ab 7043 (arguments '(#:tests? #f ; there are no tests
47903653 7044 #:make-flags
7045 (list "CC=gcc"
7046 (string-append "PREFIX=" (assoc-ref %outputs "out"))
7047 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
7048 #:phases
7049 (modify-phases %standard-phases
7050 (delete 'configure)
7051 (add-before 'build 'fix-env
7052 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
7053 (setenv "CPATH"
7054 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
7055 "/include/SDL2:"
7056 (or (getenv "CPATH") "")))
47903653 7057 #t)))))
067826ab
TGR
7058 (inputs
7059 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
7060 ("zlib" ,zlib)))
47903653 7061 (native-inputs
7062 `(("pkg-config" ,pkg-config)
7063 ("autoconf" ,autoconf)
7064 ("automake" ,automake)
7065 ("gnu-gettext" ,gnu-gettext)
7066 ("libtool" ,libtool)
7067 ("which" ,which)))
7068 (synopsis "2d action platformer game")
7069 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7070When Edgar's father fails to return home after venturing out one dark and stormy night,
7071Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7072a fortress beyond the forbidden swamp.")
7073 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7074 (license license:gpl2+)))
f95e33a7 7075
649220ad
NG
7076(define-public the-legend-of-edgar
7077 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
7078
7079(define-public openclonk
7080 (package
7081 (name "openclonk")
7082 (version "8.1")
7083 (source (origin
7084 (method url-fetch)
7085 (uri (string-append
7086 "https://www.openclonk.org/builds/release/" version "/"
7087 "openclonk-" version "-src.tar.bz2"))
7088 (sha256
7089 (base32
7090 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7091 (build-system cmake-build-system)
7092 (arguments
7093 `(#:configure-flags '("-DAudio_TK=OpenAL")
7094 #:test-target "tests"
7095 #:phases
7096 (modify-phases %standard-phases
7097 (add-after 'unpack 'prepare-gmock
7098 (lambda* (#:key inputs #:allow-other-keys)
7099 (mkdir "gmock")
7100 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7101 (substitute* "tests/CMakeLists.txt"
7102 (("/usr/src/gmock")
7103 (string-append (getcwd) "/gmock/googlemock"))
7104 (("/usr/src/gtest")
7105 (string-append (getcwd) "/gmock/googletest"))
7106 (("PATH_SUFFIXES \"src\" \"gtest\"")
7107 "PATH_SUFFIXES \"src\""))
7108 #t))
ee9eafc1
MB
7109 (add-after 'unpack 'adjust-backward-cpp-includes
7110 (lambda _
7111 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7112 ;; that includes external libraries such as libdl from glibc.
7113 ;; By default, CMake interface includes are treated as "system
7114 ;; headers", and GCC behaves poorly when glibc is passed as a
7115 ;; system header (causing #include_next failures).
7116
7117 ;; Here we prevent targets that consume the Backward::Backward
7118 ;; interface from treating it as "system includes".
7119 (substitute* "CMakeLists.txt"
7120 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7121 (string-append "set_property(TARGET " target " PROPERTY "
7122 "NO_SYSTEM_FROM_IMPORTED true)\n"
7123 all)))
7124 #t))
4e43e317
NG
7125 (add-after 'unpack 'add-libiberty
7126 ;; Build fails upon linking executables without this.
7127 (lambda _
7128 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7129 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7130 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7131 #t))
7132 (add-after 'add-libiberty 'lax-freealut-requirement
7133 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7134 ;; it as 1.0.1. Force minimal version.
7135 (lambda _
7136 (substitute* "cmake/FindAudio.cmake"
7137 (("freealut>=1.1.0") "freealut>=1.0.1"))
7138 #t))
7139 (add-after 'lax-freealut-requirement 'fix-directories
7140 ;; Prefer "$out/share/openclonk" over
7141 ;; "$out/share/games/openclonk". Also install "openclonk"
7142 ;; binary in "bin/", not "games/".
7143 (lambda _
7144 (substitute* "CMakeLists.txt"
7145 (("share/games/openclonk") "share/openclonk")
7146 (("TARGETS openclonk DESTINATION games")
7147 "TARGETS openclonk DESTINATION bin"))
7148 #t)))))
7149 (native-inputs
7150 `(("googlemock" ,(package-source googletest))
7151 ("googletest" ,googletest)
7152 ("pkg-config" ,pkg-config)))
7153 (inputs
7154 `(("freealut" ,freealut)
7155 ("freetype" ,freetype)
7156 ("glew" ,glew)
7157 ("libiberty" ,libiberty)
7158 ("libjpeg" ,libjpeg-turbo)
7159 ("libogg" ,libogg)
7160 ("libpng" ,libpng)
7161 ("libvorbis" ,libvorbis)
7162 ("libxrandr" ,libxrandr)
7163 ("mesa" ,mesa)
7164 ("miniupnpc" ,miniupnpc)
7165 ("openal" ,openal)
7166 ("qtbase" ,qtbase)
7167 ("readline" ,readline)
7168 ("sdl" ,sdl2)
7169 ("tinyxml" ,tinyxml)
7170 ("zlib" ,zlib)))
7171 (home-page "https://www.openclonk.org/")
7172 (synopsis
7173 "Multiplayer action game where you control small and nimble humanoids")
7174 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7175often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 7176antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
7177robust humanoid beings. The game encourages free play but the normal goal is
7178to either exploit valuable resources from the earth by building a mine or
7179fight each other on an arena-like map.")
7180 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7181 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
7182
7183(define-public flare-engine
7184 (package
7185 (name "flare-engine")
f9622ec7 7186 (version "1.11")
ad4f6442
NG
7187 (source (origin
7188 (method git-fetch)
7189 (uri (git-reference
7190 (url "https://github.com/flareteam/flare-engine.git")
7191 (commit (string-append "v" version))))
7192 (file-name (git-file-name name version))
7193 (sha256
7194 (base32
f9622ec7 7195 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
7196 (build-system cmake-build-system)
7197 (arguments
7198 `(#:tests? #f ;no test
7199 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7200 (inputs
7201 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7202 ("python" ,python-wrapper)
7203 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7204 (home-page "http://www.flarerpg.org/")
7205 (synopsis "Action Roleplaying Engine")
7206 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7207game engine built to handle a very specific kind of game: single-player 2D
7208action RPGs.")
7209 (license license:gpl3+)))
7210
7211(define-public flare-game
7212 (package
7213 (name "flare-game")
ffbaefc7 7214 (version "1.11")
ad4f6442
NG
7215 (source (origin
7216 (method git-fetch)
7217 (uri (git-reference
7218 (url "https://github.com/flareteam/flare-game.git")
7219 (commit (string-append "v" version))))
7220 (file-name (git-file-name name version))
7221 (sha256
7222 (base32
ffbaefc7 7223 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7224 (build-system cmake-build-system)
7225 (arguments
7226 `(#:tests? #f ;no test
7227 #:configure-flags '("-DDATADIR=share/flare")
7228 #:phases
7229 (modify-phases %standard-phases
7230 ;; Flare expects the mods to be located in the same folder.
7231 ;; Yet, "default" mod is in the engine, whereas the others
7232 ;; are in the current package. Merge everything here with
7233 ;; a symlink.
7234 (add-after 'install 'add-default-mod
7235 (lambda* (#:key inputs outputs #:allow-other-keys)
7236 (let* ((out (assoc-ref outputs "out"))
7237 (mods (string-append out "/share/flare/mods")))
7238 (with-directory-excursion mods
7239 (symlink (string-append (assoc-ref inputs "flare-engine")
7240 "/share/flare/mods/default")
7241 "default")))
7242 #t))
7243 (add-after 'install 'install-executable
7244 ;; The package only provides assets for the game, the
7245 ;; executable coming from "flare-engine". Since more than
7246 ;; one game may use the engine, we create a new executable,
7247 ;; "flare-game", which launches the engine with appropriate
7248 ;; parameters.
7249 (lambda* (#:key inputs outputs #:allow-other-keys)
7250 (let* ((out (assoc-ref outputs "out"))
7251 (bash (string-append (assoc-ref inputs "bash")
7252 "/bin/bash"))
7253 (flare (string-append (assoc-ref inputs "flare-engine")
7254 "/bin/flare"))
7255 (script (string-append out "/bin/flare-game")))
7256 (mkdir-p (dirname script))
7257 (call-with-output-file script
7258 (lambda (port)
7259 (format port
7260 "#!~a
7261exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7262 bash
7263 flare
7264 out)))
7265 (chmod script #o755))
7266 #t)))))
7267 (inputs
7268 `(("flare-engine" ,flare-engine)))
7269 (home-page "http://www.flarerpg.org/")
7270 (synopsis "Fantasy action RPG using the FLARE engine")
7271 (description "Flare is a single-player 2D action RPG with
7272fast-paced action and a dark fantasy style.")
7273 (license license:cc-by-sa3.0)))
660e0050
NG
7274
7275(define-public meritous
7276 (package
7277 (name "meritous")
7278 (version "1.5")
7279 (source (origin
7280 (method git-fetch)
7281 (uri (git-reference
7282 (url "https://gitlab.com/meritous/meritous.git")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7285 (sha256
7286 (base32
7287 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7288 (build-system gnu-build-system)
7289 (arguments
7290 `(#:tests? #f ;no test
7291 #:make-flags
7292 (list "CC=gcc"
7293 (string-append "prefix=" (assoc-ref %outputs "out")))
7294 #:phases
7295 (modify-phases %standard-phases
7296 (delete 'configure)
7297 (add-after 'unpack 'fix-sdl-path
7298 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7299 ;; directory, not SDL-union provided as an input to the package.
7300 ;; We force the latter with "--prefix=" option.
7301 (lambda* (#:key inputs #:allow-other-keys)
7302 (substitute* "Makefile"
7303 (("sdl-config" command)
7304 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7305 #t))
7306 (add-after 'unpack 'fix-crash
7307 ;; XXX: Songs are not present in the repository, due to licensing
7308 ;; issues. Yet, the game tries to load them, and, since it cannot
7309 ;; find them, crashes. Users cannot add them back, the store being
7310 ;; read-only, so we turn off background music altogether.
7311 (lambda _
7312 (substitute* "src/audio.c"
7313 (("PlayBackgroundMusic\\(new_track\\);" all)
7314 (string-append "// " all)))
7315 #t)))))
7316 (native-inputs
7317 `(("intltool" ,intltool)))
7318 (inputs
7319 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7320 ("zlib" ,zlib)))
7321 (home-page "https://gitlab.com/meritous/meritous")
7322 (synopsis "Action-adventure dungeon crawl game")
7323 (description "Far below the surface of the planet is a place of limitless
7324power. Those that seek to control such a utopia will soon bring an end to
7325themselves. Seeking an end to the troubles that plague him, PSI user Merit
7326journeys into the hallowed Orcus Dome in search of answers.
7327
7328Meritous is a action-adventure game with simple controls but a challenge to
7329find a balance of power versus recovery time during real-time battles. Set in
7330a procedurally generated world, the player can explore thousands of rooms in
7331search of powerful artifacts, tools to help them, and to eventually free the
7332Orcus Dome from evil.")
7333 (license license:gpl3+)))
472af999
RW
7334
7335(define-public marble-marcher
7336 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7337 (revision "1"))
7338 (package
7339 (name "marble-marcher")
7340 (version (git-version "0" revision commit))
7341 (source (origin
7342 (method git-fetch)
7343 (uri (git-reference
7344 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7345 (commit commit)))
7346 (file-name (git-file-name name version))
7347 (sha256
7348 (base32
7349 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7350 (build-system cmake-build-system)
7351 (arguments
7352 `(#:tests? #f ; there are none
7353 #:phases
7354 (modify-phases %standard-phases
7355 (add-after 'unpack 'embed-asset-directory
7356 (lambda* (#:key outputs #:allow-other-keys)
7357 (let ((assets (string-append (assoc-ref outputs "out")
7358 "/share/marble-marcher/assets/")))
7359 ;; Some of the files we're patching are
7360 ;; ISO-8859-1-encoded, so choose it as the default
7361 ;; encoding so the byte encoding is preserved.
7362 (with-fluids ((%default-port-encoding #f))
7363 (substitute* "src/Resource.rc"
7364 (("../assets/icon.ico")
7365 (string-append assets "icon.ico")))
7366 (substitute* "src/Res.h"
7367 (("assets/") assets))))
7368 #t))
7369 (replace 'install
7370 (lambda* (#:key outputs #:allow-other-keys)
7371 (let* ((out (assoc-ref outputs "out"))
7372 (assets (string-append out "/share/marble-marcher/assets"))
7373 (bin (string-append out "/bin/")))
7374 (mkdir-p bin)
7375 (mkdir-p assets)
7376 (copy-recursively "../source/assets" assets)
7377 (install-file "MarbleMarcher" bin))
7378 #t)))))
7379 (inputs
7380 `(("eigen" ,eigen)
7381 ("mesa" ,mesa)
7382 ("sfml" ,sfml)))
7383 (native-inputs
7384 `(("pkg-config" ,pkg-config)))
7385 (home-page "https://codeparade.itch.io/marblemarcher")
7386 (synopsis "Guide a marble across fractal landscapes")
7387 (description "Marble Marcher is a video game that uses a fractal physics
7388engine and fully procedural rendering to produce beautiful and unique
7389gameplay. The game is played on the surface of evolving fractals. The goal
7390of the game is to get your marble to the flag as quickly as possible. But be
7391careful not to fall off the level or get crushed by the fractal! There are 24
7392levels to unlock.")
7393 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7394 (license (list license:gpl2+
7395 license:silofl1.1
7396 license:cc-by-sa3.0)))))
20185e4f 7397
a84510f9 7398;; This must be updated together with flightgear.
20185e4f
RW
7399(define simgear
7400 (package
7401 (name "simgear")
7402 (version "2018.3.2")
7403 (source (origin
7404 (method url-fetch)
7405 (uri (string-append "mirror://sourceforge/flightgear/release-"
7406 (version-major+minor version) "/"
7407 "simgear-" version ".tar.bz2"))
7408 (sha256
7409 (base32
7410 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7411 (build-system cmake-build-system)
7412 (arguments
7413 `(#:phases
7414 (modify-phases %standard-phases
7415 (replace 'check
7416 (lambda _
7417 ;; Skip tests that require internet access.
7418 (invoke "ctest" "-E" "(http|dns)"))))))
7419 (inputs
7420 `(("boost" ,boost-for-mysql) ; fails with 1.69
7421 ("curl" ,curl)
7422 ("expat" ,expat)
7423 ("mesa" ,mesa)
7424 ("openal" ,openal)
7425 ("openscenegraph" ,openscenegraph-3.4)
7426 ("zlib" ,zlib)))
7427 (home-page "https://home.flightgear.org/")
7428 (synopsis "Libraries for 3D simulations and games")
7429 (description "SimGear is a set of libraries designed to be used as
7430building blocks for quickly assembling 3D simulations, games, and
7431visualization applications. SimGear is developed by the FlightGear project
7432and also provides the base for the FlightGear Flight Simulator.")
7433 (license license:lgpl2.0+)))
a84510f9
RW
7434
7435(define-public flightgear
7436 (package
7437 (name "flightgear")
7438 (version (package-version simgear))
7439 (source (origin
7440 (method url-fetch)
7441 (uri (string-append "mirror://sourceforge/flightgear/release-"
7442 (version-major+minor version) "/"
7443 "flightgear-" version ".tar.bz2"))
7444 (sha256
7445 (base32
7446 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7447 (modules '((guix build utils)))
7448 (snippet
7449 '(begin
7450 ;; There are some bundled libraries.
7451 (for-each delete-file-recursively
7452 '("3rdparty/sqlite3/"))
7453 #t))))
7454 (build-system cmake-build-system)
7455 (arguments
7456 `(#:configure-flags
7457 (list "-DSYSTEM_SQLITE=ON"
7458 (string-append "-DFG_DATA_DIR="
7459 (assoc-ref %outputs "out")
7460 "/share/flightgear"))
7461 ;; TODO: test cannot be run because the "run_test_suite" executable
7462 ;; does not seem to be built.
7463 #:tests? #f
7464 #:phases
7465 (modify-phases %standard-phases
7466 (add-after 'install 'wrap-executable
7467 (lambda* (#:key inputs outputs #:allow-other-keys)
7468 (let ((out (assoc-ref outputs "out")))
7469 (wrap-program (string-append out "/bin/fgfs")
7470 `("QT_PLUGIN_PATH" ":" prefix
7471 ,(map (lambda (label)
7472 (string-append (assoc-ref inputs label)
7473 "/lib/qt5/plugins"))
7474 '("qtbase" "qtdeclarative" "qtsvg")))
7475 `("QML2_IMPORT_PATH" ":" prefix
7476 ,(map (lambda (label)
7477 (string-append (assoc-ref inputs label)
7478 "/lib/qt5/qml"))
7479 '("qtdeclarative" "qtsvg"))))
7480 #t)))
7481 (add-after 'install 'install-data
7482 (lambda* (#:key inputs outputs #:allow-other-keys)
7483 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7484 (mkdir-p share)
7485 (with-directory-excursion share
7486 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7487 "--strip-components=1")))
7488 #t)))))
7489 (inputs
7490 `(("boost" ,boost-for-mysql) ; same as simgear
7491 ("dbus" ,dbus)
7492 ("eudev" ,eudev)
7493 ("freeglut" ,freeglut)
7494 ("freetype" ,freetype)
7495 ("glew" ,glew)
7496 ("libpng" ,libpng)
7497 ("openal" ,openal)
7498 ("openscenegraph" ,openscenegraph-3.4)
7499 ("plib" ,plib)
7500 ("qtbase" ,qtbase)
7501 ("qtdeclarative" ,qtdeclarative)
7502 ("qtsvg" ,qtsvg)
7503 ("simgear" ,simgear)
7504 ("speexdsp" ,speexdsp)
7505 ("sqlite" ,sqlite)
7506 ("zlib" ,zlib)))
7507 (native-inputs
7508 `(("cppunit" ,cppunit)
7509 ("pkg-config" ,pkg-config)
7510 ("qttools" ,qttools)
7511 ("flightgear-data"
7512 ,(origin
7513 (method url-fetch)
7514 (uri (string-append "mirror://sourceforge/flightgear/release-"
7515 (version-major+minor version) "/"
7516 "FlightGear-" version "-data.tar.bz2"))
7517 (sha256
7518 (base32
7519 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7520 (home-page "https://home.flightgear.org/")
7521 (synopsis "Flight simulator")
7522 (description "The goal of the FlightGear project is to create a
7523sophisticated flight simulator framework for use in research or academic
7524environments, pilot training, as an industry engineering tool, for DIY-ers to
7525pursue their favorite interesting flight simulation idea, and last but
7526certainly not least as a fun, realistic, and challenging desktop flight
7527simulator.")
7528 (license license:gpl2+)))
e8a0696d
NG
7529
7530(define-public jumpnbump
7531 (package
7532 (name "jumpnbump")
60d2aaa5 7533 (version "1.61")
e8a0696d
NG
7534 (source (origin
7535 (method git-fetch)
7536 (uri (git-reference
7537 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7538 (commit version)))
7539 (file-name (git-file-name name version))
7540 (sha256
7541 (base32
60d2aaa5 7542 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7543 (build-system gnu-build-system)
7544 (arguments
7545 `(#:make-flags
7546 (list "CC=gcc"
7547 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7548 #:tests? #f ;no test
7549 #:phases
7550 (modify-phases %standard-phases
7551 (delete 'configure) ;no configure script
7552 (add-after 'unpack 'fix-sdl-path
7553 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7554 ;; directory, not SDL-union provided as an input to the package.
7555 ;; We force the latter with "--prefix=" option.
7556 (lambda* (#:key inputs #:allow-other-keys)
7557 (substitute* "Makefile"
7558 (("sdl2-config" command)
7559 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7560 #t)))))
7561 (inputs
7562 `(("bzip2" ,bzip2)
7563 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7564 ("zlib" ,zlib)))
7565 (native-inputs
7566 `(("gettext" ,gettext-minimal))) ;for msgfmt
7567 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7568 (synopsis "Multiplayer platform game with bunnies")
7569 (description "You, as a bunny, have to jump on your opponents to make them
7570explode. It is a true multiplayer game; you cannot play this alone. You can
7571play with up to four players simultaneously. It has network support.")
7572 (license license:gpl2+)))
a3d4a631
NG
7573
7574(define-public hedgewars
7575 (package
7576 (name "hedgewars")
ea042113 7577 (version "1.0.0")
a3d4a631
NG
7578 (source (origin
7579 (method url-fetch)
7580 (uri (string-append "https://www.hedgewars.org/download/releases/"
7581 "hedgewars-src-" version ".tar.bz2"))
7582 (sha256
7583 (base32
ea042113 7584 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7585 (build-system cmake-build-system)
7586 (arguments
7587 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7588 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7589 ;; a Pascal to C translator and Clang instead.
7590 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7591 #:phases
7592 (modify-phases %standard-phases
a3d4a631 7593 (replace 'check
ea042113 7594 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7595 (inputs
7596 `(("ffmpeg" ,ffmpeg)
7597 ("freeglut" ,freeglut)
7598 ("ghc-entropy" ,ghc-entropy)
7599 ("ghc-hslogger" ,ghc-hslogger)
7600 ("ghc-network" ,ghc-network)
7601 ("ghc-random" ,ghc-random)
7602 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7603 ("ghc-sandi" ,ghc-sandi)
7604 ("ghc-sha" ,ghc-sha)
7605 ("ghc-utf8-string" ,ghc-utf8-string)
7606 ("ghc-vector" ,ghc-vector)
7607 ("ghc-zlib" ,ghc-zlib)
7608 ("glew" ,glew)
7609 ("libpng" ,libpng)
7610 ("lua" ,lua-5.1)
7611 ("physfs" ,physfs)
7612 ("qtbase" ,qtbase)
7613 ("sdl" ,(sdl-union
7614 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7615 (native-inputs
7616 `(("clang" ,clang)
7617 ("ghc" ,ghc)
7618 ("pkg-config" ,pkg-config)
7619 ("qttools" ,qttools)))
7620 (home-page "https://hedgewars.org/")
7621 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7622 (description
7623 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7624featuring the antics of pink hedgehogs with attitude as they battle from the
7625depths of hell to the depths of space.
7626
7627As commander, it's your job to assemble your crack team of hedgehog soldiers
7628and bring the war to your enemy.")
7629 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7630 ;; scripts are distributed under various terms.
7631 (license (list license:gpl2
7632 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7633 license:expat license:fdl1.3+ license:public-domain
7634 license:zlib))))
1bba3e8c
JL
7635
7636(define-public harmonist
7637 (package
7638 (name "harmonist")
9f5cb517 7639 (version "0.3.0")
1bba3e8c
JL
7640 (source (origin
7641 (method git-fetch)
7642 (uri (git-reference
7643 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7644 (commit (string-append "v" version))))
7645 (file-name (git-file-name name version))
7646 (sha256
7647 (base32
9f5cb517 7648 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
7649 (build-system go-build-system)
7650 (arguments
7651 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7652 (inputs
7653 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7654 (home-page "https://harmonist.tuxfamily.org/")
7655 (synopsis "Stealth coffee-break roguelike game")
7656 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7657coffee-break roguelike game. The game has a heavy focus on tactical
7658positioning, light and noise mechanisms, making use of various terrain types
7659and cones of view for monsters. Aiming for a replayable streamlined experience,
7660the game avoids complex inventory management and character building, relying
7661on items and player adaptability for character progression.")
7662 (license license:isc)))
e93352d6 7663
453365bc
JL
7664(define-public harmonist-tk
7665 (package
7666 (inherit harmonist)
7667 (name "harmonist-tk")
7668 (arguments
7669 (append
7670 (package-arguments harmonist)
7671 `(#:phases
7672 (modify-phases %standard-phases
7673 (replace 'build
7674 (lambda _
7675 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7676 "git.tuxfamily.org/harmonist/harmonist")))
7677 (replace 'check
7678 (lambda _
7679 (invoke "go" "test" "--tags" "tk"
7680 "git.tuxfamily.org/harmonist/harmonist")))))))
7681 (inputs
7682 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7683
e93352d6
NG
7684(define-public drascula
7685 (package
7686 (name "drascula")
7687 (version "1.0")
7688 (source (origin
7689 (method url-fetch)
7690 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7691 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7692 "drascula-" version ".zip"))
7693 (sha256
7694 (base32
7695 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7696 (build-system trivial-build-system)
7697 (arguments
7698 `(#:modules ((guix build utils))
7699 #:builder
7700 (begin
7701 (use-modules (guix build utils)
7702 (ice-9 match))
7703 (let* ((out (assoc-ref %outputs "out"))
7704 (share (string-append out "/share/drascula"))
7705 (scummvm (assoc-ref %build-inputs "scummvm")))
7706 ;; Install data.
7707 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7708 "/bin/unzip"))
7709 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7710 (for-each
7711 (lambda (input)
7712 (invoke unzip
7713 "-j"
7714 (assoc-ref %build-inputs input)
7715 "-x" "__MACOSX")
7716 ;; Every input provides "readme.txt", and we want to
7717 ;; preserve them all. Therefore we rename them first.
7718 (match input
7719 ("drascula-int"
7720 (rename-file "readme.txt" "readme-international.txt"))
7721 ("drascula-audio"
7722 (rename-file "readme.txt" "readme-audio.txt"))
7723 (_ #f))
7724 ;; Install documentation.
7725 (for-each (lambda (f) (install-file f doc))
7726 (find-files "." "\\.(txt|doc)$"))
7727 ;; Install data.
7728 (for-each (lambda (f) (install-file f share))
7729 (find-files "." "\\.(ogg|00[0-9])$")))
7730 '("drascula-audio" "drascula-int" "source")))
7731 ;; Create standalone executable.
7732 (let* ((bin (string-append out "/bin"))
7733 (executable (string-append bin "/drascula"))
7734 (bash (string-append (assoc-ref %build-inputs "bash")
7735 "/bin/bash")))
7736 (mkdir-p bin)
7737 (with-output-to-file executable
7738 (lambda ()
7739 (format #t "#!~a~%" bash)
7740 (format #t
7741 "exec ~a/bin/scummvm --path=~a drascula~%"
7742 scummvm share)))
7743 (chmod executable #o755))
7744 ;; Create desktop file. There is no dedicated icon for the
7745 ;; game, so we borrow SCUMMVM's.
7746 (let ((apps (string-append out "/share/applications")))
7747 (mkdir-p apps)
7748 (with-output-to-file (string-append apps "/drascula.desktop")
7749 (lambda _
7750 (format #t
7751 "[Desktop Entry]~@
7752 Name=Drascula: The Vampire Strikes Back~@
7753 GenericName=Drascula~@
7754 Exec=~a/bin/drascula~@
7755 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7756 Categories=AdventureGame;Game;RolePlaying;~@
7757 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7758 Comment=Classic 2D point and click adventure game~@
7759 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7760 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7761 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7762 Type=Application~%"
7763 out scummvm))))
7764 #t))))
7765 (native-inputs
7766 `(("bash" ,bash)
7767 ("unzip" ,unzip)))
7768 (inputs
7769 `(("scummvm" ,scummvm)
7770 ("drascula-int"
7771 ,(let ((version "1.1"))
7772 (origin
7773 (method url-fetch)
7774 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7775 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7776 "drascula-int-" version ".zip"))
7777 (sha256
7778 (base32
7779 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7780 ("drascula-audio"
7781 ,(let ((version "2.0"))
7782 (origin
7783 (method url-fetch)
7784 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7785 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7786 "drascula-audio-" version ".zip"))
7787 (sha256
7788 (base32
7789 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7790 (home-page "https://www.scummvm.org")
7791 (synopsis "Classic 2D point and click adventure game")
7792 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7793point and click adventure game.
7794
7795In Drascula you play the role of John Hacker, a British estate agent, that
7796gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7797Count Drascula and embark on a fun yet dangerous quest to rescue her.
7798Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7799the World and demonstrating that he is even more evil than his brother Vlad.")
7800 ;; Drascula uses a BSD-like license.
7801 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 7802
e7db97db
NG
7803(define (make-lure-package name language hash)
7804 (package
7805 (name name)
7806 (version "1.1")
7807 (source
7808 (origin
7809 (method url-fetch)
7810 (uri (string-append
7811 "mirror://sourceforge/scummvm/extras/"
7812 "Lure%20of%20the%20Temptress/"
7813 name "-" version ".zip"))
7814 (sha256
7815 (base32 hash))))
7816 (build-system trivial-build-system)
7817 (arguments
7818 `(#:modules ((guix build utils))
7819 #:builder
7820 (begin
7821 (use-modules (guix build utils))
7822 (let* ((out (assoc-ref %outputs "out"))
7823 (share (string-append out "/share"))
eca528cc 7824 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
7825 (apps (string-append share "/applications"))
7826 (bin (string-append out "/bin"))
7827 (executable (string-append bin "/" ,name))
7828 (scummvm (assoc-ref %build-inputs "scummvm")))
7829 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7830 "/bin/unzip")))
7831 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 7832 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
7833 (for-each (lambda (f) (install-file f doc))
7834 (find-files "." "\\.(txt|PDF|pdf)$")))
7835 (for-each (lambda (f) (install-file f data))
7836 (find-files "." "\\.(vga|VGA)$"))
7837 ;; Build the executable.
7838 (mkdir-p bin)
7839 (let ((bash (assoc-ref %build-inputs "bash")))
7840 (with-output-to-file executable
7841 (lambda ()
7842 (format #t "#!~a/bin/bash~%" bash)
7843 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7844 scummvm ,language data))))
7845 (chmod executable #o755)
7846 ;; Create desktop file. There is no dedicated
7847 ;; icon for the game, so we borrow SCUMMVM's.
7848 (mkdir-p apps)
7849 (with-output-to-file (string-append apps "/" ,name ".desktop")
7850 (lambda _
7851 (format #t
7852 "[Desktop Entry]~@
7853 Name=Lure of the Temptress~@
7854 GenericName=Lure~@
7855 Exec=~a~@
7856 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7857 Categories=AdventureGame;Game;RolePlaying;~@
7858 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7859 Comment=Classic 2D point and click adventure game~@
7860 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7861 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7862 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7863 Type=Application~%"
7864 executable scummvm)))
7865 #t))))
7866 (native-inputs
eca528cc 7867 `(("unzip" ,unzip)))
e7db97db 7868 (inputs
eca528cc
NG
7869 `(("bash" ,bash)
7870 ("scummvm" ,scummvm)))
e7db97db
NG
7871 (home-page "https://www.scummvm.org")
7872 (synopsis "2D point and click fantasy adventure game")
7873 (description
7874 "Lure of the Temptress is a classic 2D point and click adventure game.
7875
7876You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7877intents and purposes, a good man. After decades of unrest the King has united
7878the warring factions in his kingdom and all his lands are at peace, except
7879a remote region around a town called Turnvale. A revolt has recently taken
7880place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7881Selena, the titular temptress. The king calls together his finest horsemen
7882and heads off (with you in tow) to Turnvale just to witness how hellish
7883mercenary monsters called Skorl are invading the town.
7884
7885The king's men are defeated, the king is killed and you fall of your horse and
7886bang your head heavily on the ground. You have been *unconscious for a while
7887when you realize that you are in a dingy cell guarded by a not so friendly
7888Skorl. Maybe it would be an idea to try and escape...")
7889 (license (license:non-copyleft "file:///README"))))
7890
7891(define-public lure
7892 (make-lure-package
7893 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7894
7895(define-public lure-de
7896 (make-lure-package
7897 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7898
7899(define-public lure-es
7900 (make-lure-package
7901 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7902
7903(define-public lure-fr
7904 (make-lure-package
7905 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7906
7907(define-public lure-it
7908 (make-lure-package
7909 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7910
35cb2ac5
NG
7911(define (make-queen-package name file-prefix release language hash)
7912 (package
7913 (name name)
7914 (version release)
7915 (source
7916 (origin
7917 (method url-fetch)
7918 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7919 "Flight%20of%20the%20Amazon%20Queen/"
7920 file-prefix release ".zip"))
7921 (sha256
7922 (base32 hash))))
7923 (build-system trivial-build-system)
7924 (arguments
7925 `(#:modules ((guix build utils))
7926 #:builder
7927 (begin
7928 (use-modules (guix build utils))
7929 (let* ((out (assoc-ref %outputs "out"))
7930 (share (string-append out "/share"))
7931 (data (string-append share "/" ,name))
7932 (apps (string-append share "/applications"))
7933 (bin (string-append out "/bin"))
7934 (executable (string-append bin "/" ,name))
7935 (scummvm (assoc-ref %build-inputs "scummvm")))
7936 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7937 "/bin/unzip")))
7938 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7939 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7940 (install-file "readme.txt" doc))
7941 (install-file "queen.1c" data)
7942 (mkdir-p bin)
7943 (let ((bash (assoc-ref %build-inputs "bash")))
7944 (with-output-to-file executable
7945 (lambda ()
7946 (format #t "#!~a/bin/bash~%" bash)
7947 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7948 scummvm data))))
7949 (chmod executable #o755)
7950 ;; Create desktop file. There is no dedicated
7951 ;; icon for the game, so we borrow SCUMMVM's.
7952 (mkdir-p apps)
7953 (with-output-to-file (string-append apps "/" ,name ".desktop")
7954 (lambda _
7955 (format #t
7956 "[Desktop Entry]~@
7957 Name=Flight of the Amazon Queen~@
7958 GenericName=Queen~@
7959 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~@
7960 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~@
7961 Type=Application~@
7962 Exec=~a~@
7963 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7964 Categories=AdventureGame;Game;RolePlaying;~@
7965 Keywords=adventure;game;roleplaying;fantasy;~%"
7966 executable scummvm))))
7967 #t)))
7968 (native-inputs
7969 `(("unzip" ,unzip)))
7970 (inputs
7971 `(("bash" ,bash)
7972 ("scummvm" ,scummvm)))
7973 (home-page "https://www.scummvm.org/")
7974 (synopsis "Classic 2D point and click adventure game")
7975 (description "Flight of the Amazon Queen is a 2D point-and-click
7976adventure game set in the 1940s.
7977
7978You assume the role of Joe King, a pilot for hire who is given the job
7979of flying Faye Russell (a famous movie star) into the Amazon jungle
7980for a photo shoot. Of course, things never go according to plans.
7981After an unfortunate turn of events they find themselves stranded in
7982the heart of the Amazon jungle, where Joe will embark on a quest to
7983rescue a kidnapped princess and in the process, discover the true
7984sinister intentions of a suspiciously located Lederhosen company. In
7985a rich 2D environment, Joe will cross paths with a variety of unlikely
7986jungle inhabitants including, but not limited to, a tribe of Amazon
7987women and 6-foot-tall pygmies.")
7988 (license (license:non-copyleft "file:///readme.txt"))))
7989
7990(define-public queen
7991 (make-queen-package
7992 "queen" "FOTAQ_Talkie-" "1.1" "en"
7993 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7994
7995(define-public queen-de
7996 (make-queen-package
7997 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7998 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
7999
8000(define-public queen-fr
8001 (make-queen-package
8002 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
8003 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
8004
8005(define-public queen-it
8006 (make-queen-package
8007 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
8008 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
8009
403d9fae
NG
8010(define-public sky
8011 (package
8012 (name "sky")
8013 (version "1.2") ;1.3 is floppy version
8014 (source
8015 (origin
8016 (method url-fetch)
8017 (uri (string-append "mirror://sourceforge/scummvm/extras/"
8018 "Beneath%20a%20Steel%20Sky/"
8019 "bass-cd-" version ".zip"))
8020 (sha256
8021 (base32 "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k"))))
8022 (build-system trivial-build-system)
8023 (arguments
8024 `(#:modules ((guix build utils))
8025 #:builder
8026 (begin
8027 (use-modules (guix build utils))
8028 (let* ((out (assoc-ref %outputs "out"))
8029 (share (string-append out "/share"))
8030 (data (string-append share "/" ,name))
8031 (apps (string-append share "/applications"))
8032 (bin (string-append out "/bin"))
8033 (executable (string-append bin "/" ,name))
8034 (scummvm (assoc-ref %build-inputs "scummvm")))
8035 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
8036 "/bin/unzip")))
8037 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
8038 (let ((doc (string-append share "/doc/bass-" ,version)))
8039 (install-file "readme.txt" doc))
8040 (for-each (lambda (f) (install-file f data))
8041 (find-files "." "^sky\\."))
8042 ;; Build the executable.
8043 (mkdir-p bin)
8044 (let ((bash (assoc-ref %build-inputs "bash")))
8045 (with-output-to-file executable
8046 (lambda ()
8047 (format #t "#!~a/bin/bash~%" bash)
8048 (format #t "exec ~a/bin/scummvm -p ~a sky~%" scummvm data))))
8049 (chmod executable #o755)
8050 ;; Create desktop file. There is no dedicated
8051 ;; icon for the game, so we borrow SCUMMVM's.
8052 (mkdir-p apps)
8053 (with-output-to-file (string-append apps "/" ,name ".desktop")
8054 (lambda _
8055 (format #t
8056 "[Desktop Entry]~@
8057 Name=Beneath a Steel Sky~@
8058 GenericName=Bass~@
8059 Exec=~a~@
8060 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
8061 Categories=AdventureGame;Game;RolePlaying;~@
8062 Keywords=adventure;game;roleplaying;cyberpunk;~@
8063 Comment=A science-fiction adventure game set in a bleak post-apocalyptic vision of the future~@
8064 Comment[de]=Ein Science-Fiction-Abenteuerspiel \
8065angesiedelt in einer düsteren, postapokalyptischen Vision der Zukunft~@
8066 Type=Application~%"
8067 executable scummvm)))
8068 #t))))
8069 (native-inputs
8070 `(("unzip" ,unzip)))
8071 (inputs
8072 `(("bash" ,bash)
8073 ("scummvm" ,scummvm)))
8074 (home-page "https://www.scummvm.org/")
8075 (synopsis "Classic 2D point an click science-fiction adventure game")
8076 (description
8077 "Beneath a Steel Sky is a science-fiction thriller set in a bleak
8078post-apocalyptic vision of the future. It revolves around Union City,
8079where selfishness, rivalry, and corruption by its citizens seems to be
8080all too common, those who can afford it live underground, away from
8081the pollution and social problems which are plaguing the city.
8082
8083You take on the role of Robert Foster, an outcast of sorts from the
8084city since a boy who was raised in a remote environment outside of
8085Union City simply termed ``the gap''. Robert's mother took him away
8086from Union City as a child on their way to ``Hobart'' but the
8087helicopter crashed on its way. Unfortunately, Robert's mother died,
8088but he survived and was left to be raised by a local tribe from the
8089gap.
8090
8091Years later, Union City security drops by and abducts Robert, killing
8092his tribe in the process; upon reaching the city the helicopter taking
8093him there crashes with him escaping, high upon a tower block in the
8094middle of the city. He sets out to discover the truth about his past,
8095and to seek vengeance for the killing of his tribe.")
8096 (license (license:non-copyleft "file:///readme.txt"))))
8097
08c2fb8f
JG
8098(define-public gnurobots
8099 (package
8100 (name "gnurobots")
8101 (version "1.2.0")
8102 (source
8103 (origin
8104 (method url-fetch)
8105 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
8106 version ".tar.gz"))
8107 (sha256
8108 (base32
8109 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
8110 (build-system gnu-build-system)
8111 (inputs
8112 `(("glib" ,glib)
8113 ("gtk+" ,gtk+-2)
8114 ("vte" ,vte/gtk+-2)
8115 ("readline" ,readline)
8116 ("guile" ,guile-1.8)))
8117 (native-inputs
8118 `(("pkg-config" ,pkg-config)))
8119 (arguments
8120 `(#:make-flags
8121 (list
8122 ;; Do not abort build on "deprecated-declarations" warnings.
8123 "CFLAGS=-Wno-error=deprecated-declarations"
8124 ;; Find readline headers in sub-directory.
8125 (string-append "READLINE_CFLAGS=-I"
8126 (assoc-ref %build-inputs "readline")
8127 "/include/readline/"))
8128 #:phases
8129 (modify-phases %standard-phases
8130 (add-after 'install 'install-doc
8131 (lambda* (#:key outputs #:allow-other-keys)
8132 (install-file "doc/Robots-HOWTO"
8133 (string-append (assoc-ref outputs "out")
8134 "/share/doc/gnurobots-"
8135 ,version))
8136 #t)))))
8137 (home-page "https://www.gnu.org/software/gnurobots/")
8138 (synopsis "Program a little robot and watch it explore a world")
8139 (description
8140 "GNU Robots is a game in which you program a robot to explore a world
8141full of enemies that can hurt it, obstacles and food to be eaten. The goal of
8142the game is to stay alive and collect prizes. The robot program conveniently
8143may be written in a plain text file in the Scheme programming language.")
8144 (license license:gpl3+)))
3745909d
NG
8145
8146(define-public ri-li
8147 (package
8148 (name "ri-li")
8149 (version "2.0.1")
8150 (source (origin
8151 (method url-fetch)
8152 (uri (string-append "mirror://sourceforge/ri-li/"
8153 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
8154 "Ri-li-" version ".tar.bz2"))
8155 (sha256
8156 (base32
8157 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8158 ;; Taken from
8159 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8160 ;; It doesn't build otherwise.
8161 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8162 (build-system gnu-build-system)
8163 (arguments
8164 `(#:phases
8165 (modify-phases %standard-phases
8166 ;; Remove "gentoo" subdirectory from Makefile, as it is
8167 ;; missing a make file and generates a build failure.
8168 (add-after 'configure 'fix-build
8169 (lambda _
8170 (substitute* "Makefile"
8171 ((" gentoo") ""))
8172 #t))
8173 (add-after 'install 'install-desktop-file
8174 (lambda* (#:key outputs #:allow-other-keys)
8175 (let* ((out (assoc-ref outputs "out"))
8176 (apps (string-append out "/share/applications"))
8177 (pixmaps (string-append out "/share/pixmaps")))
8178 (for-each (lambda (f) (install-file f pixmaps))
8179 (find-files "data" "\\.(png|ico)$"))
8180 (mkdir-p apps)
8181 (with-output-to-file (string-append apps "/ri-li.desktop")
8182 (lambda _
8183 (format #t
8184 "[Desktop Entry]~@
8185 Name=Ri-li~@
8186 Exec=~a/bin/Ri_li~@
8187 Icon=~a/Ri-li-icon-32x32.png~@
8188 Categories=Game;ArcadeGame;~@
8189 Keywords=toy;train;wooden;snake-like;engine;~@
8190 Comment=a toy simulator game~@
8191 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8192 Comment[fr]=un jeu de petit train~@
8193 Comment[ro_RO]=un joc cu un tren de jucărie~@
8194 Terminal=false~@
8195 Type=Application~%"
8196 out pixmaps))))
8197 #t))
8198 (add-after 'install-desktop-file 'remove-spurious-files
8199 ;; Delete redundant files already installed somewhere else.
8200 (lambda* (#:key outputs #:allow-other-keys)
8201 (let ((out (assoc-ref outputs "out")))
8202 (for-each delete-file
8203 (find-files (string-append out "/share/Ri-li")
8204 "\\.(png|ico)|COPYING"))
8205 #t))))))
8206 (inputs
8207 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8208 (home-page "http://www.ri-li.org")
8209 (synopsis "Toy train simulation game")
8210 (description "Ri-li is a game in which you drive a wooden toy
8211steam locomotive across many levels and collect all the coaches to
8212win.")
8213 ;; The project is dual-licensed GPL2+ and GPL3+.
8214 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
8215
8216(define-public freeorion
8217 (package
8218 (name "freeorion")
f6fdbb05 8219 (version "0.4.9")
562a2a40
JG
8220 (source
8221 (origin
f6fdbb05
TGR
8222 (method url-fetch)
8223 (uri (string-append "https://github.com/freeorion/freeorion/releases/"
8224 "download/v" version "/FreeOrion_v" version
8225 "_2020-02-02.db53471_Source.tar.gz"))
562a2a40 8226 (sha256
f6fdbb05 8227 (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
562a2a40
JG
8228 (modules '((guix build utils)))
8229 (snippet
8230 '(begin
8231 ;; There are some bundled fonts.
8232 (for-each delete-file-recursively '("default/data/fonts"))
8233 #t))))
8234 (build-system cmake-build-system)
8235 (arguments
8236 '(#:tests? #f ;no test
8237 #:phases
8238 (modify-phases %standard-phases
8239 (add-after 'unpack 'unbundle-fonts
8240 (lambda* (#:key inputs #:allow-other-keys)
8241 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8242 "/share/fonts/truetype/")))
8243 (substitute* "UI/ClientUI.cpp"
7658904a 8244 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 8245 all type)
7658904a 8246 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
8247 #t))))))
8248 (inputs
8249 `(("boost" ,boost)
8250 ("boost_signals" ,boost-signals2)
8251 ("font-dejavu" ,font-dejavu)
8252 ("font-roboto" ,font-google-roboto)
8253 ("freetype2" ,freetype)
8254 ("glew" ,glew)
8255 ("glu" ,glu)
8256 ("libogg" ,libogg)
8257 ("libpng" ,libpng)
8258 ("libvorbis" ,libvorbis)
8259 ("openal" ,openal)
8260 ("python2" ,python-2.7)
8261 ("sdl2" ,sdl2)
8262 ("zlib" ,zlib)))
8263 (home-page "https://www.freeorion.org/index.php/Main_Page")
8264 (synopsis "Turn-based space empire and galactic conquest computer game")
8265 (description
8266 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8267computer game being designed and built by the FreeOrion project. Control an
8268empire with the goal of exploring the galaxy, expanding your territory,
8269exploiting the resources, and exterminating rival alien empires. FreeOrion is
8270inspired by the tradition of the Master of Orion games, but is not a clone or
8271remake of that series or any other game.")
8272 ;; Source code is released under gpl2. Artwork, music and sounds, and
8273 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8274 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8275 ;; released under lgpl2.1+.
8276 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
8277
8278(define-public leela-zero
8279 (package
8280 (name "leela-zero")
8281 (version "0.17")
8282 (source
8283 (origin
8284 (method git-fetch)
8285 (uri (git-reference
8286 (url "https://github.com/leela-zero/leela-zero.git")
8287 (commit (string-append "v" version))))
8288 (file-name (git-file-name name version))
8289 (sha256
8290 (base32
8291 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8292 (patches (search-patches "leela-zero-gtest.patch"))))
8293 (build-system cmake-build-system)
8294 (native-inputs
8295 `(("googletest" ,googletest)))
8296 (inputs
8297 `(("boost" ,boost)
8298 ("ocl-icd" ,ocl-icd)
8299 ("openblas" ,openblas)
8300 ("opencl-headers" ,opencl-headers)
8301 ("qtbase" ,qtbase)
8302 ("zlib" ,zlib)))
8303 (arguments
8304 '(#:configure-flags '("-DUSE_BLAS=YES")
8305 #:phases (modify-phases %standard-phases
8306 (add-before 'configure 'fix-tests
8307 (lambda* (#:key outputs #:allow-other-keys)
8308 (let ((home (getcwd)))
8309 (setenv "HOME" home)
8310 (substitute* "src/tests/gtests.cpp"
8311 (("\\.\\./src/tests/0k\\.txt")
8312 (string-append home "/src/tests/0k.txt"))
8313 (("cfg_gtp_mode = true;")
8314 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8315 #t))
8316 (replace 'check
8317 (lambda _
8318 (invoke "./tests"))))))
8319 (home-page "https://github.com/leela-zero/leela-zero")
8320 (synopsis "Program playing the game of Go")
8321 (description
8322 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8323the AlphaGo Zero paper. The current best network weights file for the engine
8324can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8325 (license license:gpl3+)))
66977719
GLV
8326
8327(define-public q5go
8328 (package
8329 (name "q5go")
8330 (version "1.0")
8331 (source (origin
8332 (method git-fetch)
8333 (uri (git-reference
8334 (url "https://github.com/bernds/q5Go.git")
8335 (commit (string-append "q5go-" version))))
8336 (file-name (git-file-name name version))
8337 (sha256
8338 (base32
8339 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8340 (build-system gnu-build-system)
8341 (native-inputs
8342 `(("pkg-config" ,pkg-config)))
8343 (inputs
8344 `(("qtbase" ,qtbase)
8345 ("qtmultimedia" ,qtmultimedia)
8346 ("qtsvg" ,qtsvg)))
8347 (arguments
8348 '(#:phases
8349 (modify-phases %standard-phases
8350 (add-after 'unpack 'fix-configure-script
8351 (lambda _
8352 ;; Bypass the unavailable qtchooser program.
8353 (substitute* "configure"
8354 (("test -z \"QTCHOOSER\"")
8355 "false")
8356 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8357 command))
8358 #t))
8359 (add-after 'unpack 'fix-paths
8360 (lambda _
8361 (substitute* '("src/pics/Makefile.in"
8362 "src/translations/Makefile.in")
8363 (("\\$\\(datadir\\)/qGo/")
8364 "$(datadir)/q5go/"))
8365 #t))
8366 (add-after 'install 'install-desktop-file
8367 (lambda* (#:key outputs #:allow-other-keys)
8368 (let* ((out (assoc-ref outputs "out"))
8369 (apps (string-append out "/share/applications"))
8370 (pics (string-append out "/share/q5go/pics")))
8371 (delete-file-recursively (string-append out "/share/applnk"))
8372 (delete-file-recursively (string-append out "/share/mimelnk"))
8373 (install-file "../source/src/pics/Bowl.ico" pics)
8374 (mkdir-p apps)
8375 (with-output-to-file (string-append apps "/q5go.desktop")
8376 (lambda _
8377 (format #t
8378 "[Desktop Entry]~@
8379 Name=q5go~@
8380 Exec=~a/bin/q5go~@
8381 Icon=~a/Bowl.ico~@
8382 Categories=Game;~@
8383 Comment=Game of Go~@
8384 Comment[de]=Spiel des Go~@
8385 Comment[eo]=Goo~@
8386 Comment[es]=Juego de Go~@
8387 Comment[fr]=Jeu de Go~@
8388 Comment[ja]=囲碁~@
8389 Comment[ko]=바둑~@
8390 Comment[zh]=围棋~@
8391 Terminal=false~@
8392 Type=Application~%"
8393 out pics))))
8394 #t)))))
8395 (synopsis "Qt GUI to play the game of Go")
8396 (description
8397 "This a tool for Go players which performs the following functions:
8398@itemize
8399@item SGF editor,
8400@item Analysis frontend for Leela Zero (or compatible engines),
8401@item GTP interface (to play against an engine),
8402@item IGS client (to play on the internet),
8403@item Export games to a variety of formats.
8404@end itemize")
8405 (home-page "https://github.com/bernds/q5Go")
8406 (license license:gpl2+)))
3c1c5622
HG
8407
8408(define-public ktuberling
8409 (package
8410 (name "ktuberling")
8411 (version "19.08.3")
8412 (source
8413 (origin
8414 (method url-fetch)
8415 (uri (string-append "mirror://kde/stable/applications/" version
8416 "/src/ktuberling-" version ".tar.xz"))
8417 (sha256
8418 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
8419 (build-system qt-build-system)
8420 (native-inputs
8421 `(("extra-cmake-modules" ,extra-cmake-modules)
8422 ("perl" ,perl)))
8423 (inputs
8424 `(("kcompletion" ,kcompletion)
8425 ("kconfigwidgets" ,kconfigwidgets)
8426 ("kcoreaddons" ,kcoreaddons)
8427 ("kcrash" ,kcrash)
8428 ("kdbusaddons" ,kdbusaddons)
8429 ("kdelibs4support" ,kdelibs4support)
8430 ("ki18n" ,ki18n)
8431 ("kwidgetsaddons" ,kwidgetsaddons)
8432 ("kxmlgui" ,kxmlgui)
8433 ("libkdegames" ,libkdegames)
8434 ("qtbase" ,qtbase)
8435 ("qtmultimedia" ,qtmultimedia)
8436 ("qtdeclarative" ,qtdeclarative)
8437 ("qtsvg" ,qtsvg)))
8438 (home-page "https://games.kde.org/")
8439 (synopsis "Stamp drawing toy")
8440 (description "KTuberling is a drawing toy intended for small children and
8441adults who remain young at heart. The game has no winner; the only purpose is
8442to make the funniest faces you can. Several activites are possible, e.g.:
8443
8444@itemize
8445@item Give the potato a funny face, clothes, and other goodies
8446@item Build a small town, complete with school, zoo, and fire department
8447@item Create a fantastic moonscape with spaceships and aliens
8448@item Top a pizza
8449@end itemize
8450
8451KTuberling can speak the name of each the object in several languages,
8452to assist in learning basic vocabulary.
8453
8454This package is part of the KDE games module.")
8455 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
8456
8457(define-public picmi
8458 (package
8459 (name "picmi")
8460 (version "19.08.3")
8461 (source
8462 (origin
8463 (method url-fetch)
8464 (uri (string-append "mirror://kde/stable/applications/" version
8465 "/src/picmi-" version ".tar.xz"))
8466 (sha256
8467 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
8468 (build-system qt-build-system)
8469 (native-inputs
8470 `(("extra-cmake-modules" ,extra-cmake-modules)
8471 ("kdoctools" ,kdoctools)))
8472 (inputs
8473 `(("kcoreaddons" ,kcoreaddons)
8474 ("kcrash" ,kcrash)
8475 ("kdbusaddons" ,kdbusaddons)
8476 ("kdeclarative" ,kdeclarative)
8477 ("ki18n" ,ki18n)
8478 ("kio" ,kio)
8479 ("knewstuff" ,knewstuff)
8480 ("kxmlgui" ,kxmlgui)
8481 ("libkdegames" ,libkdegames)
8482 ("qtbase" ,qtbase)
8483 ("qtdeclarative" ,qtdeclarative)
8484 ("qtsvg" ,qtsvg)))
8485 (home-page "https://games.kde.org/")
8486 (synopsis "Number logic game")
8487 (description "Picmi is a number logic game in which cells in a grid have
8488to be colored or left blank according to numbers given at the side of the
8489grid. The aim is to reveal a hidden picture.
8490
8491This package is part of the KDE games module.")
8492 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8493
8494(define-public kolf
8495 (package
8496 (name "kolf")
8497 (version "19.08.3")
8498 (source
8499 (origin
8500 (method url-fetch)
8501 (uri (string-append "mirror://kde/stable/applications/" version
8502 "/src/kolf-" version ".tar.xz"))
8503 (sha256
8504 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
8505 (build-system qt-build-system)
8506 (native-inputs
8507 `(("extra-cmake-modules" ,extra-cmake-modules)
8508 ("kdoctools" ,kdoctools)))
8509 (inputs
8510 `(("kcompletion" ,kcompletion)
8511 ("kconfigwidgets" ,kconfigwidgets)
8512 ("kcoreaddons" ,kcoreaddons)
8513 ("kcrash" ,kcrash)
8514 ("kdbusaddons" ,kdbusaddons)
8515 ("ki18n" ,ki18n)
8516 ("kio" ,kio)
8517 ("kwidgetsaddons" ,kwidgetsaddons)
8518 ("kxmlgui" ,kxmlgui)
8519 ("ktextwidgets" ,ktextwidgets)
8520 ("libkdegames" ,libkdegames)
8521 ("qtbase" ,qtbase)
8522 ("qtdeclarative" ,qtdeclarative)))
8523 (home-page "https://games.kde.org/")
8524 (synopsis "Miniature golf game")
8525 (description "Kolf is a miniature golf game for one to ten players. The
8526game is played from an overhead view, with a short bar representing the golf
8527club. Kolf features many different types of objects, such as water hazards,
8528slopes, sand traps, and black holes (warps), among others.
8529
8530Features are:
8531@itemize
8532@item Single and Multi-player (up to ten players) modes
8533@item High scores table
8534@item Dynamic courses
8535@item Third-party courses
8536@item Course editor
8537@end itemize
8538
8539This package is part of the KDE games module.")
8540 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8541
8542(define-public libkmahjongg
8543 (package
8544 (name "libkmahjongg")
8545 (version "19.08.3")
8546 (source
8547 (origin
8548 (method url-fetch)
8549 (uri (string-append "mirror://kde/stable/applications/"
8550 version "/src/libkmahjongg-" version ".tar.xz"))
8551 (sha256
8552 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8553 (build-system qt-build-system)
8554 (native-inputs
8555 `(("extra-cmake-modules" ,extra-cmake-modules)))
8556 (inputs
8557 `(("kauth" ,kauth)
8558 ("kcompletion" ,kcompletion)
8559 ;("kconfig" ,kconfig)
8560 ("kcodecs" ,kcodecs)
8561 ("kconfigwidgets" ,kconfigwidgets)
8562 ("kcoreaddons" ,kcoreaddons)
8563 ("ki18n" ,ki18n)
8564 ("kwidgetsaddons" ,kwidgetsaddons)
8565 ("qtbase" ,qtbase)
8566 ("qtsvg" ,qtsvg)))
8567 (home-page "https://games.kde.org/")
8568 (synopsis "Shared library for kmahjongg and kshisen")
8569 (description "Shared library and common files for kmahjongg, kshisen and
8570other Mah Jongg like games.")
8571 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8572
8573(define-public kmahjongg
8574 (package
8575 (name "kmahjongg")
8576 (version "19.08.3")
8577 (source
8578 (origin
8579 (method url-fetch)
8580 (uri (string-append "mirror://kde/stable/applications/"
8581 version "/src/kmahjongg-" version ".tar.xz"))
8582 (sha256
8583 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
8584 (build-system qt-build-system)
8585 (native-inputs
8586 `(("extra-cmake-modules" ,extra-cmake-modules)
8587 ("kdoctools" ,kdoctools)))
8588 (inputs
8589 `(("kcompletion" ,kcompletion)
8590 ("kcrash" ,kcrash)
8591 ("kdbusaddons" ,kdbusaddons)
8592 ("kdeclarative" ,kdeclarative)
8593 ("ki18n" ,ki18n)
8594 ("knewstuff" ,knewstuff)
8595 ("kxmlgui" ,kxmlgui)
8596 ("libkdegames" ,libkdegames)
8597 ("libkmahjongg" ,libkmahjongg)
8598 ("qtbase" ,qtbase)
8599 ("qtdeclarative" ,qtdeclarative)
8600 ("qtsvg" ,qtsvg)))
8601 (home-page "https://games.kde.org/")
8602 (synopsis "Tile laying patience")
8603 (description "In KMahjongg the tiles are scrambled and staked on top of
8604each other to resemble a certain shape. The player is then expected to remove
8605all the tiles off the game board by locating each tile's matching pair.
8606
8607A variety of tile layouts are included, as well as an editor to create new
8608layouts.
8609
8610This package is part of the KDE games module.")
8611 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8612
8613(define-public kshisen
8614 (package
8615 (name "kshisen")
8616 (version "19.08.3")
8617 (source
8618 (origin
8619 (method url-fetch)
8620 (uri (string-append "mirror://kde/stable/applications/"
8621 version "/src/kshisen-" version ".tar.xz"))
8622 (sha256
8623 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
8624 (build-system qt-build-system)
8625 (native-inputs
8626 `(("extra-cmake-modules" ,extra-cmake-modules)
8627 ;("perl" ,perl)
8628 ;("pkg-config" ,pkg-config)
8629 ("kdoctools" ,kdoctools)))
8630 (inputs
8631 `(("kauth" ,kauth)
8632 ("kcompletion" ,kcompletion)
8633 ("kconfigwidgets" ,kconfigwidgets)
8634 ("kcoreaddons" ,kcoreaddons)
8635 ("kcrash" ,kcrash)
8636 ("kdbusaddons" ,kdbusaddons)
8637 ("ki18n" ,ki18n)
8638 ("kxmlgui" ,kxmlgui)
8639 ("libkdegames" ,libkdegames)
8640 ("libkmahjongg" ,libkmahjongg)
8641 ("qtbase" ,qtbase)
8642 ("qtdeclarative" ,qtdeclarative)))
8643 (home-page "https://games.kde.org/")
8644 (synopsis "Shisen-Sho solitaire game")
8645 (description "KShisen is a solitaire-like game played using the standard
8646set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8647scrambled tiles
8648
8649This package is part of the KDE games module.")
8650 (license license:gpl2+)))
321bd0c3
HG
8651
8652(define-public kajongg
8653 (package
8654 (name "kajongg")
8655 (version "19.08.3")
8656 (source
8657 (origin
8658 (method url-fetch)
8659 (uri (string-append "mirror://kde/stable/applications/"
8660 version "/src/kajongg-" version ".tar.xz"))
8661 (sha256
8662 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
8663 (build-system qt-build-system)
8664 (native-inputs
8665 `(("extra-cmake-modules" ,extra-cmake-modules)
8666 ;("perl" ,perl)
8667 ("kdoctools" ,kdoctools)))
8668 (inputs
8669 `(("kconfig" ,kconfig)
8670 ("kconfigwidgets" ,kconfigwidgets)
8671 ("kcoreaddons" ,kcoreaddons)
8672 ("ki18n" ,ki18n)
8673 ("libkmahjongg" ,libkmahjongg)
8674 ("python" ,python)
8675 ("qtbase" ,qtbase)
8676 ("qtsvg" ,qtsvg)))
8677 (propagated-inputs
8678 `(("python-twisted" ,python-twisted)
8679 ("python-pyqt" ,python-pyqt)))
8680 ;; FIXME: Need to wrap PYTHONPATH
8681 (home-page "https://games.kde.org/")
8682 (synopsis "Classical Mah Jongg game for 4 players")
8683 (description "Kajongg is the ancient Chinese board game for 4 players.
8684
8685If you are looking for the Mah Jongg solitaire please use the application
8686kmahjongg.
8687
8688Kajongg can be used in two different ways: Scoring a manual game where you
8689play as always and use Kajongg for the computation of scores and for
8690bookkeeping. Or you can use Kajongg to play against any combination of other
8691human players or computer players.
8692
8693This package is part of the KDE games module.")
8694 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8695
8696(define-public kbreakout
8697 (package
8698 (name "kbreakout")
8699 (version "19.08.3")
8700 (source
8701 (origin
8702 (method url-fetch)
8703 (uri (string-append "mirror://kde/stable/applications/" version
8704 "/src/kbreakout-" version ".tar.xz"))
8705 (sha256
8706 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
8707 (build-system qt-build-system)
8708 (native-inputs
8709 `(("extra-cmake-modules" ,extra-cmake-modules)
8710 ("kdoctools" ,kdoctools)))
8711 (inputs
8712 `(("kcompletion" ,kcompletion)
8713 ("kconfig" ,kconfig)
8714 ("kconfigwidgets" ,kconfigwidgets)
8715 ("kcoreaddons" ,kcoreaddons)
8716 ("kcrash" ,kcrash)
8717 ("kdbusaddons" ,kdbusaddons)
8718 ("ki18n" ,ki18n)
8719 ("kwidgetsaddons" ,kwidgetsaddons)
8720 ("kxmlgui" ,kxmlgui)
8721 ("libkdegames" ,libkdegames)
8722 ("qtbase" ,qtbase)
8723 ("qtdeclarative" ,qtdeclarative)))
8724 (home-page "https://games.kde.org/")
8725 (synopsis "Breakout like game")
8726 (description "KBreakout is similar to the classics breakout and xboing,
8727featuring a number of added graphical enhancements and effects. You control a
8728paddle at the bottom of the playing-field, and must destroy bricks at the top
8729by bouncing balls against them.
8730
8731This package is part of the KDE games module.")
8732 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8733
8734(define-public kmines
8735 (package
8736 (name "kmines")
8737 (version "19.08.3")
8738 (source
8739 (origin
8740 (method url-fetch)
8741 (uri (string-append "mirror://kde/stable/applications/" version
8742 "/src/kmines-" version ".tar.xz"))
8743 (sha256
8744 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
8745 (build-system qt-build-system)
8746 (native-inputs
8747 `(("extra-cmake-modules" ,extra-cmake-modules)
8748 ("kdoctools" ,kdoctools)))
8749 (inputs
8750 `(("kcompletion" ,kcompletion)
8751 ("kconfig" ,kconfig)
8752 ("kconfigwidgets" ,kconfigwidgets)
8753 ("kcoreaddons" ,kcoreaddons)
8754 ("kcrash" ,kcrash)
8755 ("kdbusaddons" ,kdbusaddons)
8756 ("ki18n" ,ki18n)
8757 ("ktextwidgets" ,ktextwidgets)
8758 ("kwidgetsaddons" ,kwidgetsaddons)
8759 ("kxmlgui" ,kxmlgui)
8760 ("libkdegames" ,libkdegames)
8761 ("qtbase" ,qtbase)
8762 ("qtdeclarative" ,qtdeclarative)))
8763 (home-page "https://games.kde.org/")
8764 (synopsis "Classical mine sweeper game")
8765 (description "KMines is a classic Minesweeper game. The idea is to
8766uncover all the squares without blowing up any mines. When a mine is blown
8767up, the game is over.
8768
8769This package is part of the KDE games module.")
8770 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8771
8772(define-public konquest
8773 (package
8774 (name "konquest")
8775 (version "19.08.3")
8776 (source
8777 (origin
8778 (method url-fetch)
8779 (uri (string-append "mirror://kde/stable/applications/"
8780 version "/src/konquest-" version ".tar.xz"))
8781 (sha256
8782 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
8783 (build-system qt-build-system)
8784 (native-inputs
8785 `(("extra-cmake-modules" ,extra-cmake-modules)
8786 ("kdoctools" ,kdoctools)))
8787 (inputs
8788 `(("kcompletion" ,kcompletion)
8789 ("kconfig" ,kconfig)
8790 ("kcoreaddons" ,kcoreaddons)
8791 ("kcrash" ,kcrash)
8792 ("kdbusaddons" ,kdbusaddons)
8793 ("kguiaddons" ,kguiaddons)
8794 ("ki18n" ,ki18n)
8795 ("kwidgetsaddons" ,kwidgetsaddons)
8796 ("kxmlgui" ,kxmlgui)
8797 ("libkdegames" ,libkdegames)
8798 ("qtbase" ,qtbase)
8799 ("qtdeclarative" ,qtdeclarative)
8800 ("qtsvg" ,qtsvg)))
8801 (home-page "https://games.kde.org/")
8802 (synopsis "Simple turn-based strategy game")
8803 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8804conquer other planets by sending ships to them. The goal is to build an
8805interstellar empire and ultimately conquer all other player's planets. The
8806game can be played with up to nine empires, commanded either by the computer
8807or by puny earthlings.
8808
8809This package is part of the KDE games module.")
8810 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8811
8812(define-public kbounce
8813 (package
8814 (name "kbounce")
8815 (version "19.08.3")
8816 (source
8817 (origin
8818 (method url-fetch)
8819 (uri (string-append "mirror://kde/stable/applications/"
8820 version "/src/kbounce-" version ".tar.xz"))
8821 (sha256
8822 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
8823 (build-system qt-build-system)
8824 (native-inputs
8825 `(("extra-cmake-modules" ,extra-cmake-modules)
8826 ("kdoctools" ,kdoctools)))
8827 (inputs
8828 `(("kcompletion" ,kcompletion)
8829 ("kconfigwidgets" ,kconfigwidgets)
8830 ("kcoreaddons" ,kcoreaddons)
8831 ("kcrash" ,kcrash)
8832 ("kdbusaddons" ,kdbusaddons)
8833 ("ki18n" ,ki18n)
8834 ("kio" ,kio)
8835 ("kwidgetsaddons" ,kwidgetsaddons)
8836 ("kxmlgui" ,kxmlgui)
8837 ("libkdegames" ,libkdegames)
8838 ("qtbase" ,qtbase)
8839 ("qtdeclarative" ,qtdeclarative)
8840 ("qtsvg" ,qtsvg)))
8841 (home-page "https://games.kde.org/")
8842 (synopsis "Jezzball arcade game")
8843 (description "KBounce is a single player arcade game with the elements of
8844puzzle. It is played on a field, surrounded by wall, with two or more balls
8845bouncing around within the walls. The object of the game is to build new
8846walls to decrease the size of the active field.
8847
8848This package is part of the KDE games module.")
8849 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8850
8851(define-public kblocks
8852 (package
8853 (name "kblocks")
8854 (version "19.08.3")
8855 (source
8856 (origin
8857 (method url-fetch)
8858 (uri (string-append "mirror://kde/stable/applications/"
8859 version "/src/kblocks-" version ".tar.xz"))
8860 (sha256
8861 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
8862 (build-system qt-build-system)
8863 (native-inputs
8864 `(("extra-cmake-modules" ,extra-cmake-modules)
8865 ("kdoctools" ,kdoctools)))
8866 (inputs
8867 `(("kcompletion" ,kcompletion)
8868 ("kconfig" ,kconfig)
8869 ("kconfigwidgets" ,kconfigwidgets)
8870 ("kcoreaddons" ,kcoreaddons)
8871 ("kcrash" ,kcrash)
8872 ("kdbusaddons" ,kdbusaddons)
8873 ("ki18n" ,ki18n)
8874 ("kwidgetsaddons" ,kwidgetsaddons)
8875 ("kxmlgui" ,kxmlgui)
8876 ("libkdegames" ,libkdegames)
8877 ("qtbase" ,qtbase)
8878 ("qtdeclarative" ,qtdeclarative)
8879 ("qtsvg" ,qtsvg)))
8880 (home-page "https://games.kde.org/")
8881 (synopsis "Single player falling blocks puzzle game")
8882 (description "KBlocks is the classic Tetris-like falling blocks game.
8883
8884The idea is to stack the falling blocks to create horizontal lines without any
8885gaps. When a line is completed it is removed, and more space is available in
8886the play area. When there is not enough space for blocks to fall, the game is
8887over.
8888
8889This package is part of the KDE games module.")
8890 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8891
8892(define-public ksudoku
8893 (package
8894 (name "ksudoku")
8895 (version "19.08.3")
8896 (source
8897 (origin
8898 (method url-fetch)
8899 (uri (string-append "mirror://kde/stable/applications/"
8900 version "/src/ksudoku-" version ".tar.xz"))
8901 (sha256
8902 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
8903 (build-system qt-build-system)
8904 (native-inputs
8905 `(("extra-cmake-modules" ,extra-cmake-modules)
8906 ("kdoctools" ,kdoctools)))
8907 (inputs
8908 `(("karchive", karchive)
8909 ("kconfig" ,kconfig)
8910 ("kconfigwidgets" ,kconfigwidgets)
8911 ("kcoreaddons" ,kcoreaddons)
8912 ("kcrash" ,kcrash)
8913 ("kguiaddons" ,kguiaddons)
8914 ("ki18n" ,ki18n)
8915 ("kiconthemes" ,kiconthemes)
8916 ("kio" ,kio)
8917 ("kwidgetsaddons" ,kwidgetsaddons)
8918 ("kxmlgui" ,kxmlgui)
8919 ("libkdegames" ,libkdegames)
8920 ("glu" ,glu)
8921 ("qtbase" ,qtbase)
8922 ("qtdeclarative" ,qtdeclarative)
8923 ("qtsvg" ,qtsvg)))
8924 (home-page "https://games.kde.org/")
8925 (synopsis "Sudoku puzzle game and solver")
8926 (description "KSudoku is a Sudoku game and solver, supporting a range of
89272D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8928puzzle sheets and find the solution to any Sudoku puzzle.
8929
8930The word Sudoku means \"single number in an allotted place\" in Japanese.
8931These are the basic rules: Every Sudoku is a square divided into 3x3
8932subsquares with 3x3 cells each.
8933
8934Some cells are filled with a number at the beginning. The remaining ones are
8935to be filled by the player using numbers from 1 to 9, without repeating a
8936number twice on each column, row or subsquare (each of them must contain only
8937one 1, one 2, one 3, and so on). The game requires logic and patience.
8938Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8939and experience.
8940
8941The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8942board we use letters): arithmetic relationships between numbers are
8943irrelevant.
8944
8945This program supports also 16x16 games with numbers from 1 to 16 and 256
8946cells with 16 cols, rows and subsquares!
8947
8948More information at http://en.wikipedia.org/wiki/Sudoku
8949
8950This package is part of the KDE games module.")
8951 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
8952
8953(define-public klines
8954 (package
8955 (name "klines")
8956 (version "19.08.3")
8957 (source
8958 (origin
8959 (method url-fetch)
8960 (uri (string-append "mirror://kde/stable/applications/" version
8961 "/src/klines-" version ".tar.xz"))
8962 (sha256
8963 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
8964 (build-system qt-build-system)
8965 (native-inputs
8966 `(("extra-cmake-modules" ,extra-cmake-modules)
8967 ("kdoctools" ,kdoctools)))
8968 (inputs
8969 `(("kcompletion" ,kcompletion)
8970 ("kconfigwidgets" ,kconfigwidgets)
8971 ("kcoreaddons" ,kcoreaddons)
8972 ("kcrash" ,kcrash)
8973 ("kdbusaddons" ,kdbusaddons)
8974 ("ki18n" ,ki18n)
8975 ("kwidgetsaddons" ,kwidgetsaddons)
8976 ("kxmlgui" ,kxmlgui)
8977 ("libkdegames" ,libkdegames)
8978 ("qtbase" ,qtbase)
8979 ("qtdeclarative" ,qtdeclarative)))
8980 (home-page "https://games.kde.org/")
8981 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8982 (description "KLines is a simple but highly addictive one player game.
8983
8984The player has to move the colored balls around the game board, gathering them
8985into the lines of the same color by five. Once the line is complete it is
8986removed from the board, therefore freeing precious space. In the same time
8987the new balls keep arriving by three after each move, filling up the game
8988board.
8989
8990KLines is a single-player game where the player removes colored balls from the
8991board by arranging them into lines of five or more. However, every time the
8992player moves a ball, three more balls are added to the board.
8993
8994This package is part of the KDE games module.")
8995 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
8996
8997(define-public kgoldrunner
8998 (package
8999 (name "kgoldrunner")
9000 (version "19.08.3")
9001 (source
9002 (origin
9003 (method url-fetch)
9004 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
9005 version ".tar.xz"))
9006 (sha256
9007 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
9008 (build-system qt-build-system)
9009 (native-inputs
9010 `(("extra-cmake-modules" ,extra-cmake-modules)
9011 ("kdoctools" ,kdoctools)))
9012 (inputs
9013 `(("kcompletion" ,kcompletion)
9014 ("kcoreaddons" ,kcoreaddons)
9015 ("kcrash" ,kcrash)
9016 ("kdbusaddons" ,kdbusaddons)
9017 ("ki18n" ,ki18n)
9018 ("kio" ,kio)
9019 ("kwidgetsaddons" ,kwidgetsaddons)
9020 ("kxmlgui" ,kxmlgui)
9021 ("libkdegames" ,libkdegames)
9022 ("qtbase" ,qtbase)
9023 ("qtdeclarative" ,qtdeclarative)))
9024 (home-page "https://games.kde.org/")
9025 (synopsis "Action and puzzle solving game")
9026 (description "KGoldrunner is an action game where the hero runs through a
9027maze, climbs stairs, dig holes and dodges enemies in order to collect all the
9028gold nuggets and escape to the next level. Your enemies are also after the
9029gold. Worse still, they are after you!.
9030
9031KGoldrunner is a fast-paced platform game where the player must navigate a
9032maze while collecting gold nuggets and avoiding enemies. A variety of level
9033packs are included, as well as an editor to create new levels.
9034
9035This package is part of the KDE games module.")
9036 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
9037
9038(define-public kdiamond
9039 (package
9040 (name "kdiamond")
9041 (version "19.08.3")
9042 (source
9043 (origin
9044 (method url-fetch)
9045 (uri (string-append "mirror://kde/stable/applications/" version
9046 "/src/kdiamond-" version ".tar.xz"))
9047 (sha256
9048 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
9049 (build-system qt-build-system)
9050 (native-inputs
9051 `(("extra-cmake-modules" ,extra-cmake-modules)
9052 ("kdoctools" ,kdoctools)))
9053 (inputs
9054 `(("kcompletion", kcompletion)
9055 ("kconfig" ,kconfig)
9056 ("kconfigwidgets" ,kconfigwidgets)
9057 ("kcoreaddons" ,kcoreaddons)
9058 ("kcrash" ,kcrash)
9059 ("kdbusaddons" ,kdbusaddons)
9060 ("ki18n" ,ki18n)
9061 ("knotifications" ,knotifications)
9062 ("knotifyconfig" ,knotifyconfig)
9063 ("kwidgetsaddons" ,kwidgetsaddons)
9064 ("kxmlgui" ,kxmlgui)
9065 ("libkdegames" ,libkdegames)
9066 ("qtbase" ,qtbase)
9067 ("qtdeclarative" ,qtdeclarative)))
9068 (home-page "https://games.kde.org/")
9069 (synopsis "Three-in-a-row game")
9070 (description "KDiamond is a three-in-a-row game like Bejeweled. It
9071features unlimited fun with randomly generated games and five difficulty
9072levels with varying number of diamond colors and board sizes.
9073
9074This package is part of the KDE games module.")
9075 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
9076
9077(define-public kfourinline
9078 (package
9079 (name "kfourinline")
9080 (version "19.08.3")
9081 (source
9082 (origin
9083 (method url-fetch)
9084 (uri (string-append "mirror://kde/stable/applications/" version
9085 "/src/kfourinline-" version ".tar.xz"))
9086 (sha256
9087 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
9088 (build-system qt-build-system)
9089 (native-inputs
9090 `(("extra-cmake-modules" ,extra-cmake-modules)
9091 ("kdoctools" ,kdoctools)))
9092 (inputs
9093 `(("kcompletion" ,kcompletion)
9094 ("kconfig" ,kconfig)
9095 ("kconfigwidgets" ,kconfigwidgets)
9096 ("kcoreaddons" ,kcoreaddons)
9097 ("kcrash" ,kcrash)
9098 ("kdelibs4support" ,kdelibs4support)
9099 ("kdnssd" ,kdnssd)
9100 ("ki18n" ,ki18n)
9101 ("kxmlgui" ,kxmlgui)
9102 ("libkdegames" ,libkdegames)
9103 ("qtbase" ,qtbase)
9104 ("qtdeclarative" ,qtdeclarative)
9105 ("qtsvg" ,qtsvg)))
9106 (home-page "https://games.kde.org/")
9107 (synopsis "Place 4 pieces in a row")
9108 (description "KFourInLine is a board game for two players based on the
9109Connect-Four game.
9110
9111KFourInLine is a game where two players take turns dropping pieces into a
9112grid, the winner being the first to place four pieces in a line.
9113
9114This package is part of the KDE games module.")
9115 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
9116
9117(define-public kblackbox
9118 (package
9119 (name "kblackbox")
9120 (version "19.08.3")
9121 (source
9122 (origin
9123 (method url-fetch)
9124 (uri (string-append "mirror://kde/stable/applications/" version
9125 "/src/kblackbox-" version ".tar.xz"))
9126 (sha256
9127 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
9128 (build-system qt-build-system)
9129 (native-inputs
9130 `(("extra-cmake-modules" ,extra-cmake-modules)
9131 ("kdoctools" ,kdoctools)))
9132 (inputs
9133 `(("karchive" ,karchive)
9134 ("kcompletion" ,kcompletion)
9135 ("kconfig" ,kconfig)
9136 ("kcoreaddons" ,kcoreaddons)
9137 ("kcrash" ,kcrash)
9138 ("kdbusaddons" ,kdbusaddons)
9139 ("ki18n" ,ki18n)
9140 ("ktextwidgets" ,ktextwidgets)
9141 ("kxmlgui" ,kxmlgui)
9142 ("libkdegames" ,libkdegames)
9143 ("qtbase" ,qtbase)
9144 ("qtdeclarative" ,qtdeclarative)
9145 ("qtsvg" ,qtsvg)))
9146 (home-page "https://games.kde.org/")
9147 (synopsis "Find atoms in a grid by shooting electrons")
9148 (description "KBlackbox is a game of hide and seek played on a grid of
9149boxes where the computer has hidden several balls. The position of the hidden
9150balls can be deduced by shooting beams into the box
9151
9152KBlackBox is a game of hide and seek played on an grid of boxes, where the
9153player shoots rays into the grid to deduce the positions of hidden objects.
9154
9155This package is part of the KDE games module.")
9156 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
9157
9158(define-public knetwalk
9159 (package
9160 (name "knetwalk")
9161 (version "19.08.3")
9162 (source
9163 (origin
9164 (method url-fetch)
9165 (uri (string-append "mirror://kde/stable/applications/" version
9166 "/src/knetwalk-" version ".tar.xz"))
9167 (sha256
9168 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
9169 (build-system qt-build-system)
9170 (native-inputs
9171 `(("extra-cmake-modules" ,extra-cmake-modules)
9172 ("kdoctools" ,kdoctools)))
9173 (inputs
9174 `(("kcompletion" ,kcompletion)
9175 ("kconfig" ,kconfig)
9176 ("kconfigwidgets" ,kconfigwidgets)
9177 ("kcoreaddons" ,kcoreaddons)
9178 ("kcrash" ,kcrash)
9179 ("kdbusaddons" ,kdbusaddons)
9180 ("ki18n" ,ki18n)
9181 ("ktextwidgets" ,ktextwidgets)
9182 ("kwidgetsaddons" ,kwidgetsaddons)
9183 ("kxmlgui" ,kxmlgui)
9184 ("libkdegames" ,libkdegames)
9185 ("qtbase" ,qtbase)
9186 ("qtdeclarative" ,qtdeclarative)))
9187 (home-page "https://games.kde.org/")
9188 (synopsis "Turn the board pieces to get all computers connected")
9189 (description "KNetWalk is a small game where you have to build up a
9190computer network by rotating the wires to connect the terminals to the server.
9191When the network is build, a highscore-list comes up where competitions can be
9192fought out.
9193
9194KNetwalk is a puzzle game where the player arranges sections of wire to
9195connect all the computers on the board.
9196
9197This package is part of the KDE games module.")
9198 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
9199
9200(define-public bomber
9201 (package
9202 (name "bomber")
9203 (version "19.08.3")
9204 (source
9205 (origin
9206 (method url-fetch)
9207 (uri (string-append "mirror://kde/stable/applications/" version
9208 "/src/bomber-" version ".tar.xz"))
9209 (sha256
9210 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
9211 (build-system qt-build-system)
9212 (native-inputs
9213 `(("extra-cmake-modules" ,extra-cmake-modules)
9214 ("kdoctools" ,kdoctools)))
9215 (inputs
9216 `(("kcompletiom" ,kcompletion)
9217 ("kconfig" ,kconfig)
9218 ("kcoreaddons" ,kcoreaddons)
9219 ("kcrash" ,kcrash)
9220 ("kdbusaddons" ,kdbusaddons)
9221 ("ki18n" ,ki18n)
9222 ("kxmlgui" ,kxmlgui)
9223 ("libkdegames" ,libkdegames)
9224 ("qtbase" ,qtbase)
9225 ("qtdeclarative" ,qtdeclarative)))
9226 (home-page "https://games.kde.org/")
9227 (synopsis "Arcade bombing game")
9228 (description "Bomber is a single player arcade game.
9229
9230The player is invading various cities in a plane that is decreasing in height.
9231The goal of the game is to destroy all the buildings and advance to the next
9232level. Each level gets a bit harder by increasing the speed of the plane and
9233the height of the buildings.
9234
9235Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9236below you. Each pass the spaceship makes, it gets lower and lower. If you've
9237not destroyed a building in your path, you will crash into it.
9238
9239This package is part of the KDE games module.")
9240 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
9241
9242(define-public granatier
9243 (package
9244 (name "granatier")
9245 (version "19.08.3")
9246 (source
9247 (origin
9248 (method url-fetch)
9249 (uri (string-append "mirror://kde/stable/applications/" version
9250 "/src/granatier-" version ".tar.xz"))
9251 (sha256
9252 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
9253 (build-system qt-build-system)
9254 (native-inputs
9255 `(("extra-cmake-modules" ,extra-cmake-modules)
9256 ("kdoctools" ,kdoctools)))
9257 (inputs
9258 `(("kcompletion" ,kcompletion)
9259 ("kconfig" ,kconfig)
9260 ("kconfigwidgets" ,kconfigwidgets)
9261 ("kcoreaddons" ,kcoreaddons)
9262 ("kcrash" ,kcrash)
9263 ("kdbusaddons" ,kdbusaddons)
9264 ("ki18n" ,ki18n)
9265 ("knewstuff" ,knewstuff)
9266 ("kwidgetsaddons" ,kwidgetsaddons)
9267 ("kxmlgui" ,kxmlgui)
9268 ("libkdegames" ,libkdegames)
9269 ("qtbase" ,qtbase)
9270 ("qtdeclarative" ,qtdeclarative)
9271 ("qtsvg" ,qtsvg)))
9272 (home-page "https://games.kde.org/")
9273 (synopsis "Bomberman clone")
9274 (description "Granatier is a clone of the classic Bomberman game,
9275inspired by the work of the Clanbomber clone.
9276
9277This package is part of the KDE games module.")
9278 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
9279
9280(define-public ksirk
9281 (package
9282 (name "ksirk")
9283 (version "19.08.3")
9284 (source
9285 (origin
9286 (method url-fetch)
9287 (uri (string-append "mirror://kde/stable/applications/" version
9288 "/src/ksirk-" version ".tar.xz"))
9289 (sha256
9290 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
9291 (build-system qt-build-system)
9292 (native-inputs
9293 `(("extra-cmake-modules" ,extra-cmake-modules)
9294 ("kdoctools" ,kdoctools)))
9295 (inputs
9296 `(("kcrash" ,kcrash)
9297 ("ki18n" ,ki18n)
9298 ("kiconthemes" ,kiconthemes)
9299 ("kio" ,kio)
9300 ("knewstuff" ,knewstuff)
9301 ("kwallet" ,kwallet)
9302 ("kxmlgui" ,kxmlgui)
9303 ("libkdegames" ,libkdegames)
9304 ("phonon" ,phonon)
9305 ("qca" ,qca)
9306 ("qtbase" ,qtbase)
9307 ("qtdeclarative" ,qtdeclarative)
9308 ("qtsvg" ,qtsvg)
9309 ("zlib" ,zlib)))
9310 (home-page "https://games.kde.org/")
9311 (synopsis "Computerized version of the well known strategy board game
9312'Risk'")
9313 (description "KsirK is a multi-player network-enabled game. The goal of
9314the game is simply to conquer the world by attacking your neighbors with your
9315armies.
9316
9317At the beginning of the game, countries are distributed to all the players.
9318Each country contains one army represented by an infantryman. Each player has
9319some armies to distribute to his countries. On each turn, each player can
9320attack his neighbours, eventually conquering one or more countries. At the
9321end of each turn, some bonus armies are distributed to the players in function
9322of the number of countries they own. The winner is the player that conquered
9323all the world.
9324
9325Features:
9326@itemize
9327@item Support for 1-6 human or computer players
9328@item Multi-player gaming over a network
9329@item You can easily create new skins with SVG graphics and the skin editor
9330@item Hot New Stuff support. You can easily download and install new skins
9331@end itemize
9332
9333This package is part of the KDE games module.")
9334 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
9335
9336(define-public palapeli
9337 (package
9338 (name "palapeli")
9339 (version "19.08.3")
9340 (source
9341 (origin
9342 (method url-fetch)
9343 (uri (string-append "mirror://kde/stable/applications/" version
9344 "/src/palapeli-" version ".tar.xz"))
9345 (sha256
9346 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
9347 (build-system qt-build-system)
9348 (native-inputs
9349 `(("extra-cmake-modules" ,extra-cmake-modules)
9350 ("kdoctools" ,kdoctools)))
9351 (inputs
9352 `(("karchive" ,karchive)
9353 ("kcompletion" ,kcompletion)
9354 ("kconfig" ,kconfig)
9355 ("kconfigwidgets" ,kconfigwidgets)
9356 ("kcoreaddons" ,kcoreaddons)
9357 ("kcrash" ,kcrash)
9358 ("kcrash" ,kcrash)
9359 ("ki18n" ,ki18n)
9360 ("ki18n" ,ki18n)
9361 ("kio" ,kio)
9362 ("kitemviews" ,kitemviews)
9363 ("knotifications" ,knotifications)
9364 ("kservice" ,kservice)
9365 ("kwidgetsaddons" ,kwidgetsaddons)
9366 ("kxmlgui" ,kxmlgui)
9367 ("libkdegames" ,libkdegames)
9368 ("qtbase" ,qtbase)
9369 ("qtdeclarative" ,qtdeclarative)
9370 ("qtsvg" ,qtsvg)
9371 ("shared-mime-info" ,shared-mime-info)))
9372 (home-page "https://games.kde.org/")
9373 (synopsis "Jigsaw puzzle game")
9374 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9375that genre, you are not limited to aligning pieces on imaginary grids. The
9376pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9377everything you do is saved on your disk immediately.
9378
9379Palapeli is the Finnish word for jigsaw puzzle.
9380
9381This package is part of the KDE games module.")
9382 (license license:gpl2+)))
bf6bfdbe
HG
9383
9384(define-public kiriki
9385 (package
9386 (name "kiriki")
9387 (version "19.08.3")
9388 (source
9389 (origin
9390 (method url-fetch)
9391 (uri (string-append "mirror://kde/stable/applications/" version
9392 "/src/kiriki-" version ".tar.xz"))
9393 (sha256
9394 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
9395 (build-system qt-build-system)
9396 (native-inputs
9397 `(("extra-cmake-modules" ,extra-cmake-modules)
9398 ("kdoctools" ,kdoctools)))
9399 (inputs
9400 `(("kcompletion" ,kcompletion)
9401 ("kconfig" ,kconfig)
9402 ("kconfigwidgets" ,kconfigwidgets)
9403 ("kcoreaddons" ,kcoreaddons)
9404 ("kcrash" ,kcrash)
9405 ("kdbusaddons" ,kdbusaddons)
9406 ("ki18n" ,ki18n)
9407 ("kiconthemes" ,kiconthemes)
9408 ("kxmlgui" ,kxmlgui)
9409 ("libkdegames" ,libkdegames)
9410 ("qtbase" ,qtbase)
9411 ("qtdeclarative" ,qtdeclarative)))
9412 (home-page "https://games.kde.org/")
9413 (synopsis "Yahtzee dice game")
9414 (description "Kiriki is an addictive and fun dice game, designed to be
9415played by as many as six players.
9416
9417Participants have to collect points by rolling five dice for up to three times
9418per single turn to make combinations with the highest score.
9419
9420This package is part of the KDE games module.")
9421 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
9422
9423(define-public kigo
9424 (package
9425 (name "kigo")
9426 (version "19.08.3")
9427 (source
9428 (origin
9429 (method url-fetch)
9430 (uri (string-append "mirror://kde/stable/applications/" version
9431 "/src/kigo-" version ".tar.xz"))
9432 (sha256
9433 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
9434 (build-system qt-build-system)
9435 (native-inputs
9436 `(("extra-cmake-modules" ,extra-cmake-modules)
9437 ("kdoctools" ,kdoctools)))
9438 (inputs
9439 `(("kconfig" ,kconfig)
9440 ("kconfigwidgets" ,kconfigwidgets)
9441 ("kcoreaddons" ,kcoreaddons)
9442 ("kcrash" ,kcrash)
9443 ("kdbusaddons" ,kdbusaddons)
9444 ("ki18n" ,ki18n)
9445 ("kio" ,kio)
9446 ("knewstuff", knewstuff)
9447 ("ktextwidgets" ,ktextwidgets)
9448 ("kxmlgui" ,kxmlgui)
9449 ("libkdegames" ,libkdegames)
9450 ("qtbase" ,qtbase)
9451 ("qtdeclarative" ,qtdeclarative)
9452 ("qtsvg" ,qtsvg)))
9453 (home-page "https://games.kde.org/")
9454 (synopsis "Go board game")
9455 (description "Kigo is an open-source implementation of the popular Go
9456game.
9457
9458Go is a strategic board game for two players. It is also known as
9459igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9460for being rich in strategic complexity despite its simple rules. The game is
9461played by two players who alternately place black and white stones (playing
9462pieces, now usually made of glass or plastic) on the vacant intersections of a
9463grid of 19x19 lines (9x9 or 13x13 for easier games).
9464
9465You also need to install a go engine, e.g. @code{gnugo}.
9466
9467This package is part of the KDE games module.")
9468 (license license:gpl3+)))
90e594d3
HG
9469
9470(define-public kubrick
9471 (package
9472 (name "kubrick")
9473 (version "19.08.3")
9474 (source
9475 (origin
9476 (method url-fetch)
9477 (uri (string-append "mirror://kde/stable/applications/" version
9478 "/src/kubrick-" version ".tar.xz"))
9479 (sha256
9480 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
9481 (build-system qt-build-system)
9482 (native-inputs
9483 `(("extra-cmake-modules" ,extra-cmake-modules)
9484 ("kdoctools" ,kdoctools)))
9485 (inputs
9486 `(("glu" ,glu)
9487 ("kconfig" ,kconfig)
9488 ("kconfigwidgets" ,kconfigwidgets)
9489 ("kcoreaddons" ,kcoreaddons)
9490 ("kcrash" ,kcrash)
9491 ("ki18n" ,ki18n)
9492 ("kio" ,kio)
9493 ("kwidgetsaddons" ,kwidgetsaddons)
9494 ("kxmlgui" ,kxmlgui)
9495 ("libkdegames" ,libkdegames)
9496 ("qtbase" ,qtbase)
9497 ("qtdeclarative" ,qtdeclarative)
9498 ("qtsvg" ,qtsvg)))
9499 (home-page "https://games.kde.org/")
9500 (synopsis "Game based on Rubik's Cube")
9501 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9502
9503The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9504\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9505selection of puzzles at several levels of difficulty, as well as demos of
9506pretty patterns and solution moves, or you can make up your own puzzles. The
9507game has unlimited undo, redo, save and reload capabilities.
9508
9509This package is part of the KDE games module.")
9510 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9511
9512(define-public lskat
9513 (package
9514 (name "lskat")
9515 (version "19.08.3")
9516 (source
9517 (origin
9518 (method url-fetch)
9519 (uri (string-append "mirror://kde/stable/applications/" version
9520 "/src/lskat-" version ".tar.xz"))
9521 (sha256
9522 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
9523 (build-system qt-build-system)
9524 (native-inputs
9525 `(("extra-cmake-modules" ,extra-cmake-modules)
9526 ("kdoctools" ,kdoctools)))
9527 (inputs
9528 `(("kcompletion" ,kcompletion)
9529 ("kconfig" ,kconfig)
9530 ("kcoreaddons" ,kcoreaddons)
9531 ("kcrash" ,kcrash)
9532 ("kguiaddons" ,kguiaddons)
9533 ("ki18n" ,ki18n)
9534 ("kwidgetsaddons" ,kwidgetsaddons)
9535 ("kxmlgui" ,kxmlgui)
9536 ("libkdegames" ,libkdegames)
9537 ("qtbase" ,qtbase)
9538 ("qtdeclarative" ,qtdeclarative)
9539 ("qtsvg" ,qtsvg)))
9540 (home-page "https://games.kde.org/")
9541 (synopsis "Lieutnant Skat card game")
9542 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9543engaging card game for two players, where the second player is either live
9544opponent, or a built in artificial intelligence.
9545
9546Lieutnant Skat is a simplified variant of the Skat card game for two players.
9547
9548This package is part of the KDE games module.")
9549 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9550
9551(define-public kapman
9552 (package
9553 (name "kapman")
9554 (version "19.08.3")
9555 (source
9556 (origin
9557 (method url-fetch)
9558 (uri (string-append "mirror://kde/stable/applications/" version
9559 "/src/kapman-" version ".tar.xz"))
9560 (sha256
9561 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
9562 (build-system qt-build-system)
9563 (native-inputs
9564 `(("extra-cmake-modules" ,extra-cmake-modules)
9565 ("kdoctools" ,kdoctools)))
9566 (inputs
9567 `(("kcompletion" ,kcompletion)
9568 ("kconfig" ,kconfig)
9569 ("kconfigwidgets" ,kconfigwidgets)
9570 ("kcoreaddons" ,kcoreaddons)
9571 ("kcrash" ,kcrash)
9572 ("kdbusaddons" ,kdbusaddons)
9573 ("ki18n" ,ki18n)
9574 ("kxmlgui" ,kxmlgui)
9575 ("libkdegames" ,libkdegames)
9576 ("qtbase" ,qtbase)
9577 ("qtdeclarative" ,qtdeclarative)
9578 ("qtsvg" ,qtsvg)))
9579 (home-page "https://games.kde.org/")
9580 (synopsis "Pac-Man clone")
9581 (description "Kapman is a clone of the well known game Pac-Man.
9582
9583You must run through the maze to eat all pills without being captured by a
9584ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9585few seconds. When a stage is cleared of pills and energizer the player is
9586taken to the next stage with slightly increased game speed
9587
9588This package is part of the KDE games module.")
9589 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9590
9591(define-public kspaceduel
9592 (package
9593 (name "kspaceduel")
9594 (version "19.08.3")
9595 (source
9596 (origin
9597 (method url-fetch)
9598 (uri (string-append "mirror://kde/stable/applications/" version
9599 "/src/kspaceduel-" version ".tar.xz"))
9600 (sha256
9601 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
9602 (build-system qt-build-system)
9603 (native-inputs
9604 `(("extra-cmake-modules" ,extra-cmake-modules)
9605 ("kdoctools" ,kdoctools)))
9606 (inputs
9607 `(("kcompletion" ,kcompletion)
9608 ("kconfig" ,kconfig)
9609 ("kconfigwidgets" ,kconfigwidgets)
9610 ("kcoreaddons" ,kcoreaddons)
9611 ("kcrash" ,kcrash)
9612 ("kdbusaddons" ,kdbusaddons)
9613 ("ki18n" ,ki18n)
9614 ("kxmlgui" ,kxmlgui)
9615 ("libkdegames" ,libkdegames)
9616 ("qtbase" ,qtbase)
9617 ("qtdeclarative" ,qtdeclarative)
9618 ("qtsvg" ,qtsvg)))
9619 (home-page "https://games.kde.org/")
9620 (synopsis "Two player game with shooting spaceships flying around a sun")
9621 (description "KSpaceduel is a space battle game for one or two players,
9622where two ships fly around a star in a struggle to be the only survivor.
9623
9624This package is part of the KDE games module.")
9625 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9626
9627(define-public bovo
9628 (package
9629 (name "bovo")
9630 (version "19.08.3")
9631 (source
9632 (origin
9633 (method url-fetch)
9634 (uri (string-append "mirror://kde/stable/applications/" version
9635 "/src/bovo-" version ".tar.xz"))
9636 (sha256
9637 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
9638 (build-system qt-build-system)
9639 (native-inputs
9640 `(("extra-cmake-modules" ,extra-cmake-modules)
9641 ("kdoctools" ,kdoctools)))
9642 (inputs
9643 `(("kcompletion" ,kcompletion)
9644 ("kcoreaddons" ,kcoreaddons)
9645 ("kcrash" ,kcrash)
9646 ("kdbusaddons" ,kdbusaddons)
9647 ("ki18n" ,ki18n)
9648 ("kxmlgui" ,kxmlgui)
9649 ("libkdegames" ,libkdegames)
9650 ("qtbase" ,qtbase)
9651 ("qtdeclarative" ,qtdeclarative)
9652 ("qtsvg" ,qtsvg)))
9653 (home-page "https://games.kde.org/")
9654 (synopsis "Classic pen and paper game: five in a line")
9655 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9656points\") like game for two players, where the opponents alternate in placing
9657their respective pictogram on the game board. The winner is the first to
9658complete a line of five markers. (Also known as: Connect Five, Five in a row,
9659X and O, Naughts and Crosses)
9660
9661This package is part of the KDE games module.")
9662 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9663
9664(define-public killbots
9665 (package
9666 (name "killbots")
9667 (version "19.08.3")
9668 (source
9669 (origin
9670 (method url-fetch)
9671 (uri (string-append "mirror://kde/stable/applications/" version
9672 "/src/killbots-" version ".tar.xz"))
9673 (sha256
9674 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
9675 (build-system qt-build-system)
9676 (native-inputs
9677 `(("extra-cmake-modules" ,extra-cmake-modules)
9678 ("kdoctools" ,kdoctools)))
9679 (inputs
9680 `(("kcompletion" ,kcompletion)
9681 ("kconfig" ,kconfig)
9682 ("kconfigwidgets" ,kconfigwidgets)
9683 ("kcoreaddons" ,kcoreaddons)
9684 ("kcrash" ,kcrash)
9685 ("kdbusaddons" ,kdbusaddons)
9686 ("ki18n" ,ki18n)
9687 ("kwidgetsaddons" ,kwidgetsaddons)
9688 ("kxmlgui" ,kxmlgui)
9689 ("libkdegames" ,libkdegames)
9690 ("qtbase" ,qtbase)
9691 ("qtdeclarative" ,qtdeclarative)))
9692 (home-page "https://games.kde.org/")
9693 (synopsis "Port of the classic BSD console game robots")
9694 (description "Killbots is a simple game of evading killer robots.
9695
9696Who created the robots and why they have been programmed to destroy, no one
9697knows. All that is known is that the robots are numerous and their sole
9698objective is to destroy you. Fortunately for you, their creator has focused
9699on quantity rather than quality and as a result the robots are severely
9700lacking in intelligence. Your superior wit and a fancy teleportation device
9701are your only weapons against the never-ending stream of mindless automatons.
9702
9703This package is part of the KDE games module.")
9704 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9705
9706(define-public ksnakeduel
9707 (package
9708 (name "ksnakeduel")
9709 (version "19.08.3")
9710 (source
9711 (origin
9712 (method url-fetch)
9713 (uri (string-append "mirror://kde/stable/applications/" version
9714 "/src/ksnakeduel-" version ".tar.xz"))
9715 (sha256
9716 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
9717 (build-system qt-build-system)
9718 (native-inputs
9719 `(("extra-cmake-modules" ,extra-cmake-modules)
9720 ("kdoctools" ,kdoctools)))
9721 (inputs
9722 `(("kcompletion" ,kcompletion)
9723 ("kconfig" ,kconfig)
9724 ("kconfigwidgets" ,kconfigwidgets)
9725 ("kcoreaddons" ,kcoreaddons)
9726 ("kcrash" ,kcrash)
9727 ("kdbusaddons" ,kdbusaddons)
9728 ("kguiaddons" ,kguiaddons)
9729 ("ki18n" ,ki18n)
9730 ("kxmlgui" ,kxmlgui)
9731 ("libkdegames" ,libkdegames)
9732 ("qtbase" ,qtbase)
9733 ("qtdeclarative" ,qtdeclarative)
9734 ("qtsvg" ,qtsvg)))
9735 (home-page "https://games.kde.org/")
9736 (synopsis "Snake race played against the computer")
9737 (description "KSnakeDuel is a fast action game where you steer a snake
9738which has to eat food. While eating the snake grows. But once a player
9739collides with the other snake or the wall the game is lost. This becomes of
9740course more and more difficult the longer the snakes grow.
9741
9742This package is part of the KDE games module.")
9743 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9744
9745(define-public kollision
9746 (package
9747 (name "kollision")
9748 (version "19.08.3")
9749 (source
9750 (origin
9751 (method url-fetch)
9752 (uri (string-append "mirror://kde/stable/applications/" version
9753 "/src/kollision-" version ".tar.xz"))
9754 (sha256
9755 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
9756 (build-system qt-build-system)
9757 (native-inputs
9758 `(("extra-cmake-modules" ,extra-cmake-modules)
9759 ("kdoctools" ,kdoctools)))
9760 (inputs
9761 `(("kcompletion" ,kcompletion)
9762 ("kconfig" ,kconfig)
9763 ("kcoreaddons" ,kcoreaddons)
9764 ("kcrash" ,kcrash)
9765 ("kdbusaddons" ,kdbusaddons)
9766 ("ki18n" ,ki18n)
9767 ("kwidgetsaddons" ,kwidgetsaddons)
9768 ("kxmlgui" ,kxmlgui)
9769 ("libkdegames" ,libkdegames)
9770 ("qtbase" ,qtbase)
9771 ("qtdeclarative" ,qtdeclarative)))
9772 (home-page "https://games.kde.org/")
9773 (synopsis "Simple ball dodging game")
9774 (description "In Kollision you use mouse to control a small blue ball in a
9775closed space environment filled with small red balls, which move about
9776chaotically. Your goal is to avoid touching any of those red balls with your
9777blue one, because the moment you do the game will be over. The longer you can
9778stay in game the higher will your score be.
9779
9780This package is part of the KDE games module.")
9781 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9782
9783(define-public knavalbattle
9784 (package
9785 (name "knavalbattle")
9786 (version "19.08.3")
9787 (source
9788 (origin
9789 (method url-fetch)
9790 (uri (string-append "mirror://kde/stable/applications/" version
9791"/src/knavalbattle-" version ".tar.xz"))
9792 (sha256
9793 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
9794 (build-system qt-build-system)
9795 (native-inputs
9796 `(("extra-cmake-modules" ,extra-cmake-modules)
9797 ("kdoctools" ,kdoctools)))
9798 (inputs
9799 `(("kauth" ,kauth)
9800 ("kcompletion" ,kcompletion)
9801 ("kconfig" ,kconfig)
9802 ("kconfigwidgets" ,kconfigwidgets)
9803 ("kcoreaddons" ,kcoreaddons)
9804 ("kcrash" ,kcrash)
9805 ("kdbusaddons" ,kdbusaddons)
9806 ("kdnssd" ,kdnssd)
9807 ("ki18n" ,ki18n)
9808 ("ktextwidgets" ,ktextwidgets)
9809 ("kxmlgui" ,kxmlgui)
9810 ("libkdegames" ,libkdegames)
9811 ("qtbase" ,qtbase)
9812 ("qtdeclarative" ,qtdeclarative)))
9813 (home-page "https://games.kde.org/")
9814 (synopsis "Battleship board game with built-in game server")
9815 (description "KBattleship is a Battle Ship game for KDE.
9816
9817Ships are placed on a board which represents the sea. Players try to hit each
9818others ships in turns without knowing where they are placed. The first player
9819to destroy all ships wins the game.
9820
9821This package is part of the KDE games module.")
9822 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
9823
9824(define-public kreversi
9825 (package
9826 (name "kreversi")
9827 (version "19.08.3")
9828 (source
9829 (origin
9830 (method url-fetch)
9831 (uri (string-append "mirror://kde/stable/applications/" version
9832"/src/kreversi-" version ".tar.xz"))
9833 (sha256
9834 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
9835 (build-system qt-build-system)
9836 (native-inputs
9837 `(("extra-cmake-modules" ,extra-cmake-modules)
9838 ("kdoctools" ,kdoctools)))
9839 (inputs
9840 `(("kconfig" ,kconfig)
9841 ("kconfigwidgets" ,kconfigwidgets)
9842 ("kcoreaddons" ,kcoreaddons)
9843 ("kcrash" ,kcrash)
9844 ("kdbusaddons" ,kdbusaddons)
9845 ("kdeclarative" ,kdeclarative)
9846 ("ki18n" ,ki18n)
9847 ("kiconthemes" ,kiconthemes)
9848 ("kio" ,kio)
9849 ("kxmlgui" ,kxmlgui)
9850 ("libkdegames" ,libkdegames)
9851 ("qtbase" ,qtbase)
9852 ("qtdeclarative" ,qtdeclarative)
9853 ("qtsvg" ,qtsvg)))
9854 (home-page "https://games.kde.org/")
9855 (synopsis "Old reversi board game, also known as othello")
9856 (description "KReversi is a simple one player strategy game played
9857against the computer.
9858
9859If a player's piece is captured by an opposing player, that piece is turned
9860over to reveal the color of that player. A winner is declared when one player
9861has more pieces of his own color on the board and there are no more possible
9862moves.
9863
9864This package is part of the KDE games module.")
9865 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
9866
9867(define-public ksquares
9868 (package
9869 (name "ksquares")
9870 (version "19.08.3")
9871 (source
9872 (origin
9873 (method url-fetch)
9874 (uri (string-append "mirror://kde/stable/applications/" version
9875 "/src/ksquares-" version ".tar.xz"))
9876 (sha256
9877 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
9878 (build-system qt-build-system)
9879 (native-inputs
9880 `(("extra-cmake-modules" ,extra-cmake-modules)
9881 ("kdoctools" ,kdoctools)))
9882 (inputs
9883 `(("kcompletion" ,kcompletion)
9884 ("kconfig" ,kconfig)
9885 ("kconfigwidgets" ,kconfigwidgets)
9886 ("kcoreaddons" ,kcoreaddons)
9887 ("kcrash" ,kcrash)
9888 ("kdbusaddons" ,kdbusaddons)
9889 ("ki18n" ,ki18n)
9890 ("kwidgetsaddons" ,kwidgetsaddons)
9891 ("kxmlgui" ,kxmlgui)
9892 ("libkdegames" ,libkdegames)
9893 ("qtbase" ,qtbase)
9894 ("qtdeclarative" ,qtdeclarative)))
9895 (home-page "https://games.kde.org/")
9896 (synopsis "Dots and Boxes game")
9897 (description "KSquares is an implementation of the popular paper based
9898game Squares. Two players take turns connecting dots on a grid to complete
9899squares, the player with the most squares wins.
9900
9901This package is part of the KDE games module.")
9902 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
9903
9904(define-public kjumpingcube
9905 (package
9906 (name "kjumpingcube")
9907 (version "19.08.3")
9908 (source
9909 (origin
9910 (method url-fetch)
9911 (uri (string-append "mirror://kde/stable/applications/" version
9912 "/src/kjumpingcube-" version ".tar.xz"))
9913 (sha256
9914 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
9915 (build-system qt-build-system)
9916 (native-inputs
9917 `(("extra-cmake-modules" ,extra-cmake-modules)
9918 ("kdoctools" ,kdoctools)))
9919 (inputs
9920 `(("kconfig" ,kconfig)
9921 ("kconfigwidgets" ,kconfigwidgets)
9922 ("kcoreaddons" ,kcoreaddons)
9923 ("kcrash" ,kcrash)
9924 ("kdbusaddons" ,kdbusaddons)
9925 ("ki18n" ,ki18n)
9926 ("kio" ,kio)
9927 ("kwidgetsaddons" ,kwidgetsaddons)
9928 ("kxmlgui" ,kxmlgui)
9929 ("libkdegames" ,libkdegames)
9930 ("qtbase" ,qtbase)
9931 ("qtdeclarative" ,qtdeclarative)
9932 ("qtsvg" ,qtsvg)))
9933 (home-page "https://games.kde.org/")
9934 (synopsis "Simple tactical game for number-crunchers")
9935 (description "KJumpingcube is a simple tactical game for one or two
9936players, played on a grid of numbered squares. Each turn, players compete for
9937control of the board by capturing or adding to one square.
9938
9939This package is part of the KDE games module.")
9940 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
9941
9942(define-public xmoto
9943 (package
9944 (name "xmoto")
9945 (version "0.5.11")
9946 (source
9947 (origin
9948 (method url-fetch)
9949 (uri (string-append
9950 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9951 "xmoto-" version "-src.tar.gz"))
9952 (sha256
9953 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9954 (patches
9955 (search-patches
9956 "xmoto-remove-glext.patch" ;fixes licensing issue
9957 "xmoto-reproducible.patch"
9958 "xmoto-utf8.patch"))
9959 ;; Unbundle ODE.
9960 (modules '((guix build utils)))
9961 (snippet
9962 `(begin
9963 (delete-file-recursively "src/ode")
9964 #t))))
9965 (build-system gnu-build-system)
9966 (arguments
9967 ;; XXX: First flag prevents a build error with GCC7+. The second
9968 ;; flag works around missing text in game. Both are fixed
9969 ;; upstream. Remove once xmoto 0.5.12+ is released.
9970 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9971 #:phases
9972 (modify-phases %standard-phases
9973 (add-after 'install 'install-desktop-file
9974 (lambda* (#:key outputs #:allow-other-keys)
9975 (let* ((out (assoc-ref outputs "out"))
9976 (apps (string-append out "/share/applications"))
9977 (pixmaps (string-append out "/share/pixmaps")))
9978 (install-file "extra/xmoto.desktop" apps)
9979 (install-file "extra/xmoto.xpm" pixmaps)
9980 #t)))
9981 (add-after 'install-desktop-file 'install-fonts
9982 (lambda* (#:key outputs inputs #:allow-other-keys)
9983 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9984 "/share/fonts/truetype/"))
9985 (target-dir (string-append (assoc-ref outputs "out")
9986 "/share/xmoto/Textures/Fonts/")))
9987 (for-each (lambda (f)
9988 (let ((font (string-append font-dir f))
9989 (target (string-append target-dir f)))
9990 (delete-file target)
9991 (symlink font target)))
9992 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9993 #t)))
9994 (add-after 'install-fonts 'install-man-page
9995 (lambda* (#:key outputs #:allow-other-keys)
9996 (install-file "xmoto.6"
9997 (string-append (assoc-ref outputs "out")
9998 "/share/man/man6"))
9999 #t)))))
10000 (native-inputs
10001 `(("gettext" ,gettext-minimal)))
10002 (inputs
10003 `(("curl" ,curl)
10004 ("font-dejavu" ,font-dejavu)
10005 ("glu" ,glu)
10006 ("libjpeg" ,libjpeg)
10007 ("libpng" ,libpng)
10008 ("libxdg-basedir" ,libxdg-basedir)
10009 ("libxml2" ,libxml2)
10010 ("lua" ,lua-5.2)
10011 ("ode" ,ode)
10012 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
10013 ("sqlite" ,sqlite)
10014 ("zlib" ,zlib)))
10015 (home-page "https://xmoto.tuxfamily.org/")
10016 (synopsis "2D motocross platform game")
af4796d5
NG
10017 (description "X-Moto is a challenging 2D motocross platform game, where
10018physics play an all important role in the gameplay. You need to control your
10019bike to its limit, if you want to have a chance finishing the more difficult
10020challenges.")
40d2bddd
NG
10021 (license (list license:gpl2+ ;whole project
10022 license:bsd-4 ;src/bzip
10023 license:bsd-3 ;src/md5sum
10024 license:lgpl2.1+ ;src/iqsort.h
10025 license:expat))))
371ca8ca
GLV
10026
10027(define-public eboard
10028 (package
10029 (name "eboard")
10030 (version "1.1.3")
10031 (source
10032 (origin
10033 (method git-fetch)
10034 (uri (git-reference
10035 (url "https://github.com/fbergo/eboard.git")
10036 (commit (string-append "v" version))))
10037 (file-name (git-file-name name version))
10038 (sha256
10039 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
10040 (build-system gnu-build-system)
10041 (native-inputs
10042 `(("perl" ,perl)
10043 ("pkg-config" ,pkg-config)))
10044 (inputs
10045 `(("gtk+" ,gtk+-2)
10046 ("libpng" ,libpng)
10047 ("gstreamer" ,gstreamer)))
10048 (arguments
10049 `(#:tests? #f
10050 #:phases
10051 (modify-phases %standard-phases
10052 (replace 'configure
10053 (lambda* (#:key outputs #:allow-other-keys)
10054 (make-file-writable "eboard-config")
10055 (setenv "CC" "gcc")
10056 (invoke "./configure"
10057 (string-append "--prefix=" (assoc-ref outputs "out")))
10058 #t))
10059 (add-before 'install 'make-required-directories
10060 (lambda* (#:key outputs #:allow-other-keys)
10061 (mkdir-p (string-append (assoc-ref outputs "out")
10062 "/share/eboard"))
10063 #t)))))
10064 (synopsis "Graphical user interface to play chess")
10065 (description
10066 "Eboard is a chess board interface for ICS (Internet Chess Servers)
10067and chess engines.")
10068 (home-page "https://www.bergo.eng.br/eboard/")
10069 (license license:gpl2+)))
d8cae6cf
GLV
10070
10071(define-public chessx
10072 (package
10073 (name "chessx")
10074 (version "1.5.0")
10075 (source
10076 (origin
10077 (method url-fetch)
10078 (uri (string-append "mirror://sourceforge/chessx/chessx/"
10079 version "/chessx-" version ".tgz"))
10080 (sha256
10081 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
10082 (build-system qt-build-system)
10083 (native-inputs
10084 `(("qttools" ,qttools)))
10085 (inputs
10086 `(("qtbase" ,qtbase)
10087 ("qtmultimedia" ,qtmultimedia)
10088 ("qtsvg" ,qtsvg)
10089 ("zlib" ,zlib)))
10090 (arguments
10091 `(#:tests? #f
10092 #:phases
10093 (modify-phases %standard-phases
10094 (add-after 'unpack 'fix-paths
10095 (lambda* (#:key inputs #:allow-other-keys)
10096 (substitute* "chessx.pro"
10097 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
10098 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
10099 #t))
10100 (add-after 'fix-paths 'make-qt-deterministic
10101 (lambda _
10102 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
10103 #t))
10104 (replace 'configure
10105 (lambda _
10106 (invoke "qmake")
10107 #t))
10108 (replace 'install
10109 (lambda* (#:key outputs #:allow-other-keys)
10110 (let ((out (assoc-ref outputs "out")))
10111 (install-file "release/chessx" (string-append out "/bin"))
10112 (install-file "unix/chessx.desktop"
10113 (string-append out "/share/applications")))
10114 #t)))))
10115 (synopsis "Chess game database")
10116 (description
10117 "ChessX is a chess database. With ChessX you can operate on your
10118collection of chess games in many ways: browse, edit, add, organize, analyze,
10119etc. You can also play games on FICS or against an engine.")
10120 (home-page "http://chessx.sourceforge.net/")
10121 (license license:gpl2+)))
814091ef
GLV
10122
10123(define-public stockfish
10124 (package
10125 (name "stockfish")
10126 (version "11")
10127 (source
10128 (origin
10129 (method git-fetch)
10130 (uri (git-reference
10131 (url "https://github.com/official-stockfish/Stockfish.git")
10132 (commit (string-append "sf_" version))))
10133 (file-name (git-file-name name version))
10134 (sha256
10135 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
10136 (build-system gnu-build-system)
10137 (arguments
10138 `(#:tests? #f
10139 #:make-flags (list "-C" "src"
10140 "build"
10141 (string-append "PREFIX="
10142 (assoc-ref %outputs "out"))
10143 (string-append "ARCH="
10144 ,(match (%current-system)
10145 ("x86_64-linux" "x86-64")
10146 ("i686-linux" "x86-32")
10147 ("aarch64-linux" "general-64")
10148 ("armhf-linux" "armv7")
10149 ("mips64el-linux" "general-64")
10150 (_ "general-32"))))
10151 #:phases (modify-phases %standard-phases
10152 (delete 'configure))))
10153 (synopsis "Strong chess engine")
10154 (description
10155 "Stockfish is a very strong chess engines. It is much stronger than the
10156best human chess grandmasters. It can be used with UCI-compatible GUIs like
10157ChessX.")
10158 (home-page "https://stockfishchess.org/")
10159 (license license:gpl3+)))