gnu: rust-stdweb-internal-test-macro-0.1: Update to 0.1.1.
[jackhill/guix/guix.git] / gnu / packages / games.scm
CommitLineData
490c6528
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 John Darrington <jmd@gnu.org>
5edf2f05 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
1a6734ed 4;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu>
8f33b76e 5;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
3cf118a1 6;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
bb3b71ce 7;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
e23f2ff1 8;;; Copyright © 2014, 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
576b1aee 9;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
ab0c796b 10;;; Copyright © 2014, 2015, 2019 Mark H Weaver <mhw@netris.org>
d7c4619b 11;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
fc936b65 12;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
10d53153 13;;; Copyright © 2015, 2017, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org>
ca32afac 14;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
eccfa301 15;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
e11b2752 16;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
365950ce 17;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
47956fa0 18;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
e9687748 19;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
4fee5ec0 20;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
aa206271 21;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
560df540 22;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
b3de5ff2 23;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
a56145e1 24;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
42abb842 25;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
75abd864 26;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
4dbc3c2c 27;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
47903653 28;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
bff33e6c 29;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
ee9eafc1 30;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
1be6f488 31;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
a70d06b5 32;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
40d2bddd 33;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
2922852e 34;;; Copyright © 2018 okapi <okapi@firemail.cc>
e402a66b 35;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
e7448859 36;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
39b5d8fd 37;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
f9e5caf9 38;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
a953423a 39;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
26d52476 40;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
60af1822 41;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
1bba3e8c 42;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
08c2fb8f 43;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
3f9a027c 44;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
d24881e4 45;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
299e15c1 46;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
894fbb33 47;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
3c1c5622 48;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
490c6528
JD
49;;;
50;;; This file is part of GNU Guix.
51;;;
52;;; GNU Guix is free software; you can redistribute it and/or modify it
53;;; under the terms of the GNU General Public License as published by
54;;; the Free Software Foundation; either version 3 of the License, or (at
55;;; your option) any later version.
56;;;
57;;; GNU Guix is distributed in the hope that it will be useful, but
58;;; WITHOUT ANY WARRANTY; without even the implied warranty of
59;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60;;; GNU General Public License for more details.
61;;;
62;;; You should have received a copy of the GNU General Public License
63;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
64
65(define-module (gnu packages games)
158f5734 66 #:use-module (ice-9 match)
024e2c17
DT
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix utils)
490c6528
JD
69 #:use-module (guix packages)
70 #:use-module (guix download)
c23c50c7 71 #:use-module (guix git-download)
e11b2752 72 #:use-module (guix svn-download)
bff33e6c 73 #:use-module (guix gexp)
a83c6a64 74 #:use-module (gnu packages)
3307c787 75 #:use-module (gnu packages algebra)
e11b2752 76 #:use-module (gnu packages autotools)
03d521f9 77 #:use-module (gnu packages backup)
7e51e5bc 78 #:use-module (gnu packages base)
b77e3a1c 79 #:use-module (gnu packages build-tools)
11c38cbe 80 #:use-module (gnu packages admin)
f2fac359 81 #:use-module (gnu packages audio)
7e2e1155 82 #:use-module (gnu packages avahi)
1faf0a04 83 #:use-module (gnu packages assembly)
35d5fa76
EF
84 #:use-module (gnu packages bash)
85 #:use-module (gnu packages bison)
a83c6a64 86 #:use-module (gnu packages boost)
35d5fa76
EF
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages cmake)
89 #:use-module (gnu packages compression)
90 #:use-module (gnu packages curl)
706d6190 91 #:use-module (gnu packages crypto)
35d5fa76 92 #:use-module (gnu packages cyrus-sasl)
0b5d078f 93 #:use-module (gnu packages documentation)
dec63df4 94 #:use-module (gnu packages docbook)
e93352d6 95 #:use-module (gnu packages emulators)
35d5fa76 96 #:use-module (gnu packages flex)
d2563973 97 #:use-module (gnu packages fltk)
35d5fa76
EF
98 #:use-module (gnu packages fonts)
99 #:use-module (gnu packages fontutils)
540dd1c8 100 #:use-module (gnu packages freedesktop)
c23c50c7
RW
101 #:use-module (gnu packages fribidi)
102 #:use-module (gnu packages game-development)
940c2c5c 103 #:use-module (gnu packages gcc)
490c6528 104 #:use-module (gnu packages gettext)
9b1ada4e 105 #:use-module (gnu packages ghostscript)
4df9495e 106 #:use-module (gnu packages gimp)
490c6528 107 #:use-module (gnu packages gl)
bf0018cd 108 #:use-module (gnu packages glib)
490c6528 109 #:use-module (gnu packages gnome)
35d5fa76 110 #:use-module (gnu packages gnuzilla)
9b1ada4e 111 #:use-module (gnu packages gperf)
aac1aa75 112 #:use-module (gnu packages graphics)
35d5fa76 113 #:use-module (gnu packages gstreamer)
490c6528
JD
114 #:use-module (gnu packages gtk)
115 #:use-module (gnu packages guile)
1abe2e2a
NG
116 #:use-module (gnu packages haskell)
117 #:use-module (gnu packages haskell-crypto)
dddbc90c 118 #:use-module (gnu packages haskell-xyz)
35d5fa76
EF
119 #:use-module (gnu packages icu4c)
120 #:use-module (gnu packages image)
0b5d078f 121 #:use-module (gnu packages imagemagick)
3c1c5622
HG
122 #:use-module (gnu packages kde)
123 #:use-module (gnu packages kde-frameworks)
3bd0d186 124 #:use-module (gnu packages less)
bf0018cd 125 #:use-module (gnu packages libcanberra)
721e1987 126 #:use-module (gnu packages libedit)
67fa7a27 127 #:use-module (gnu packages libunwind)
35d5fa76 128 #:use-module (gnu packages linux)
fdd9ab37 129 #:use-module (gnu packages llvm)
35d5fa76 130 #:use-module (gnu packages lua)
a9249f58
KK
131 #:use-module (gnu packages man)
132 #:use-module (gnu packages maths)
c23c50c7 133 #:use-module (gnu packages mp3)
26a657f0 134 #:use-module (gnu packages music)
dc70ff2a 135 #:use-module (gnu packages multiprecision)
3cf118a1 136 #:use-module (gnu packages ncurses)
9b1ada4e 137 #:use-module (gnu packages netpbm)
162a4a03 138 #:use-module (gnu packages networking)
b3de5ff2 139 #:use-module (gnu packages ocaml)
fbfc07bd 140 #:use-module (gnu packages opencl)
35d5fa76
EF
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages perl)
143 #:use-module (gnu packages perl-check)
144 #:use-module (gnu packages pkg-config)
145 #:use-module (gnu packages pulseaudio)
bf0018cd 146 #:use-module (gnu packages python)
44d10b1f 147 #:use-module (gnu packages python-xyz)
35d5fa76 148 #:use-module (gnu packages qt)
bf0018cd 149 #:use-module (gnu packages readline)
be6e2c30 150 #:use-module (gnu packages shells)
3da5dca3 151 #:use-module (gnu packages sdl)
7fc90282 152 #:use-module (gnu packages serialization)
cd0322a3 153 #:use-module (gnu packages sqlite)
8698d986 154 #:use-module (gnu packages squirrel)
bd71525b 155 #:use-module (gnu packages swig)
67fa7a27 156 #:use-module (gnu packages tcl)
1bba3e8c 157 #:use-module (gnu packages terminals)
35d5fa76
EF
158 #:use-module (gnu packages texinfo)
159 #:use-module (gnu packages textutils)
751c7040 160 #:use-module (gnu packages tls)
0b608ec4 161 #:use-module (gnu packages upnp)
35d5fa76 162 #:use-module (gnu packages video)
01564e5a 163 #:use-module (gnu packages vulkan)
7aafb3b3 164 #:use-module (gnu packages web)
8044e584 165 #:use-module (gnu packages wget)
35d5fa76
EF
166 #:use-module (gnu packages wxwidgets)
167 #:use-module (gnu packages xdisorg)
168 #:use-module (gnu packages xorg)
169 #:use-module (gnu packages xiph)
170 #:use-module (gnu packages xml)
171 #:use-module (gnu packages messaging)
172 #:use-module (gnu packages networking)
39c676c4 173 #:use-module (guix build-system glib-or-gtk)
a6b55314 174 #:use-module (guix build-system gnu)
57f9671d 175 #:use-module (guix build-system go)
18ebaa9e 176 #:use-module (guix build-system meson)
560df540 177 #:use-module (guix build-system scons)
b0488fe5 178 #:use-module (guix build-system python)
19b396bf 179 #:use-module (guix build-system cmake)
3c1c5622 180 #:use-module (guix build-system qt)
296c8484
EF
181 #:use-module (guix build-system trivial)
182 #:use-module ((srfi srfi-1) #:hide (zip))
183 #:use-module (srfi srfi-26))
490c6528 184
4fee5ec0
KK
185;; Data package for adanaxisgpl.
186(define adanaxis-mush
187 (let ((version "1.1.0"))
188 (origin
189 (method url-fetch)
190 (uri (string-append "http://www.mushware.com/files/adanaxis-mush-"
191 version ".tar.gz"))
192 (sha256
193 (base32 "0mk9ibis5nkdcalcg1lkgnsdxxbw4g5w2i3icjzy667hqirsng03")))))
194
195(define-public adanaxisgpl
196 (package
197 (name "adanaxisgpl")
198 (version "1.2.5")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (string-append "http://www.mushware.com/files/adanaxisgpl-"
203 version ".tar.gz"))
204 (sha256
205 (base32 "0jkn637jaabvlhd6hpvzb57vvjph94l6fbf7qxbjlw9zpr19dw1f"))
206 (modules '((guix build utils)))
207 (snippet
208 '(begin
209 ;; Necessary for building with gcc >=4.7.
210 (substitute* "src/Mushcore/MushcoreSingleton.h"
211 (("SingletonPtrSet\\(new SingletonType\\);")
212 "MushcoreSingleton::SingletonPtrSet(new SingletonType);"))
213 ;; Avoid an "invalid conversion from const char* to char*" error.
214 (substitute* "src/Platform/X11/PlatformMiscUtils.cpp"
215 (("char \\*end, \\*result;")
216 (string-append "const char *end;"
217 "\n"
218 "char *result;")))
219 #t))))
220 (build-system gnu-build-system)
221 (arguments
222 `(#:tests? #f ; no check target
223 #:phases
224 (modify-phases %standard-phases
225 (add-after 'install 'install-data
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let ((data (assoc-ref inputs "adanaxis-mush"))
228 (share (string-append (assoc-ref outputs "out")
229 "/share/" ,name "-" ,version)))
230 (mkdir-p share)
231 (invoke "tar" "xvf" data "-C" share)))))))
232 (native-inputs
233 `(("adanaxis-mush" ,adanaxis-mush))) ; game data
234 (inputs
235 `(("expat" ,expat)
236 ("freeglut" ,freeglut)
237 ("glu" ,glu)
238 ("libjpeg" ,libjpeg)
239 ("libogg" ,libogg)
240 ("libtiff" ,libtiff)
241 ("libvorbis" ,libvorbis)
242 ("libx11" ,libx11)
243 ("libxext" ,libxext)
244 ("pcre" ,pcre)
245 ("sdl" ,sdl)
246 ("sdl-mixer" ,sdl-mixer)))
247 (home-page "https://www.mushware.com")
248 (synopsis "Action game in four spatial dimensions")
249 (description
250 "Adanaxis is a fast-moving first person shooter set in deep space, where
251the fundamentals of space itself are changed. By adding another dimension to
252space this game provides an environment with movement in four directions and
253six planes of rotation. Initially the game explains the 4D control system via
254a graphical sequence, before moving on to 30 levels of gameplay with numerous
255enemy, ally, weapon and mission types. Features include simulated 4D texturing,
256mouse and joystick control, and original music.")
257 (license license:gpl2)))
258
f9fee46f
KK
259(define-public alex4
260 (package
261 (name "alex4")
8ef3f2e3 262 (version "1.2.1")
f9fee46f
KK
263 (source
264 (origin
359a57b6
TGR
265 (method git-fetch)
266 (uri (git-reference
267 (url "https://github.com/carstene1ns/alex4.git")
268 (commit version)))
269 (file-name (git-file-name name version))
f9fee46f 270 (sha256
8ef3f2e3 271 (base32 "098wy72mh4lsvq3gm0rhamjssf9l1hp6hhkpzrv7klpb97cwwc3h"))))
f9fee46f
KK
272 (build-system gnu-build-system)
273 (arguments
359a57b6 274 `(#:tests? #f ; no check target
f9fee46f 275 #:make-flags
8ef3f2e3 276 (list "CC=gcc"
f9fee46f 277 "CFLAGS=-D_FILE_OFFSET_BITS=64"
f9fee46f
KK
278 (string-append "PREFIX=" (assoc-ref %outputs "out")))
279 #:phases
280 (modify-phases %standard-phases
8ef3f2e3 281 (delete 'configure) ; no configure script
f9fee46f
KK
282 (add-after 'install 'install-data
283 (lambda* (#:key outputs #:allow-other-keys)
284 (let ((share (string-append (assoc-ref outputs "out")
285 "/share/" ,name)))
286 (install-file "alex4.ini" share)
287 #t))))))
288 (inputs
289 `(("allegro" ,allegro-4)
290 ("dumb" ,dumb-allegro4)))
291 (home-page "http://allegator.sourceforge.net/")
292 (synopsis "Retro platform game")
293 (description
294 "Guide Alex the Allegator through the jungle in order to save his
295girlfriend Lola from evil humans who want to make a pair of shoes out of her.
296Plenty of classic platforming in four nice colors guaranteed!
297
298The game includes a built-in editor so you can design and share your own maps.")
299 (license license:gpl2+)))
300
649220ad 301(define-public armagetronad
a70d06b5 302 (package
649220ad 303 (name "armagetronad")
a70d06b5
RJ
304 (version "0.2.8.3.4")
305 (source (origin
306 (method url-fetch)
c0c09950
TGR
307 (uri (string-append "mirror://sourceforge/armagetronad/stable/"
308 version "/armagetronad-" version ".src.tar.gz"))
a70d06b5
RJ
309 (sha256
310 (base32
311 "1pgy0r80z702qdv94aw3ywdn4ynnr4cdi86ml558pljfc5ygasj4"))))
312 (build-system gnu-build-system)
313 (inputs
314 `(("libxml2" ,libxml2)
315 ("sdl" ,sdl)
316 ("sdl-image" ,sdl-image)
317 ("freeglut" ,freeglut)
318 ("libpng" ,libpng)
319 ("libjpeg-turbo" ,libjpeg-turbo)))
320 (home-page "http://www.armagetronad.org")
321 (synopsis "Tron clone in 3D")
df42e0f9
PN
322 (description "Armagetron Advanced is a multiplayer game in 3d that
323attempts to emulate and expand on the lightcycle sequence from the movie Tron.
324It's an old school arcade game slung into the 21st century. Highlights
325include a customizable playing arena, HUD, unique graphics, and AI bots. For
326the more advanced player there are new game modes and a wide variety of
327physics settings to tweak as well.")
a70d06b5
RJ
328 (license license:gpl2+)))
329
649220ad
NG
330(define-public armagetron-advanced
331 (deprecated-package "armagetron-advanced" armagetronad))
df42e0f9 332
fc473814
TGR
333(define-public bastet
334 (package
335 (name "bastet")
336 (version "0.43.2")
337 (source
338 (origin
339 (method git-fetch)
340 (uri (git-reference
341 (url "https://github.com/fph/bastet.git")
342 (commit version)))
343 (file-name (git-file-name name version))
344 (sha256
345 (base32 "09kamxapm9jw9przpsgjfg33n9k94bccv65w95dakj0br33a75wn"))
346 (patches
347 (search-patches "bastet-change-source-of-unordered_set.patch"))))
348 (build-system gnu-build-system)
349 (arguments
350 `(#:make-flags
351 (list (string-append "CXXFLAGS=-I"
352 (assoc-ref %build-inputs "boost") "/include"))
353 #:phases
354 (modify-phases %standard-phases
355 (delete 'configure) ; no configure script
356 (replace 'check
357 ;; The 'Test' target builds the tests, but doesn't actually run them.
358 (lambda* (#:key make-flags #:allow-other-keys)
359 (apply invoke "make" "Test" make-flags)
360 (setenv "HOME" ".")
361 (invoke "./Test")))
362 (replace 'install
363 (lambda* (#:key outputs #:allow-other-keys)
364 (let* ((out (assoc-ref outputs "out"))
365 (share (string-append out "/share"))
366 (hicolor (string-append share "/icons/hicolor")))
367 (install-file "bastet"
368 (string-append out "/bin"))
369
370 (install-file "bastet.desktop"
371 (string-append share "/applications"))
372 (install-file "bastet.svg"
373 (string-append hicolor "/scalable/apps"))
374
375 (install-file "bastet.appdata.xml"
376 (string-append share "/appdata"))
377
378 (install-file "bastet.6"
379 (string-append out "/share/man/man6"))
380 #t))))))
381 (native-inputs
382 `(("hicolor-icon-theme" ,hicolor-icon-theme)))
383 (inputs
384 `(("boost" ,boost)
385 ("ncurses" ,ncurses)))
386 (home-page "http://fph.altervista.org/prog/bastet.html")
387 (synopsis "Antagonistic Tetris-style falling brick game for text terminals")
388 (description
389 "Bastet (short for Bastard Tetris) is a simple ncurses-based falling brick
390game. Unlike normal Tetris, Bastet does not choose the next brick at random.
391Instead, it uses a special algorithm to choose the worst brick possible.
392
393Playing bastet can be a painful experience, especially if you usually make
394canyons and wait for the long I-shaped block to clear four rows at a time.")
395 (license license:gpl3+)))
396
649220ad 397(define-public cataclysm-dda
1c4d4196 398 (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
529701aa
KK
399 (package
400 (name "cataclysm-dda")
1c4d4196 401 (version "0.D")
529701aa
KK
402 (source (origin
403 (method git-fetch)
404 (uri (git-reference
405 (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
406 (commit commit)))
407 (sha256
408 (base32
1c4d4196 409 "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
529701aa
KK
410 (file-name (git-file-name name version))))
411 (build-system gnu-build-system)
412 (arguments
413 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
28407818
NG
414 "USE_HOME_DIR=1" "DYNAMIC_LINKING=1" "RELEASE=1"
415 "LOCALIZE=1" "LANGUAGES=all")
529701aa
KK
416 #:phases
417 (modify-phases %standard-phases
418 (delete 'configure)
419 (add-after 'build 'build-tiles
420 (lambda* (#:key make-flags outputs #:allow-other-keys)
421 ;; Change prefix directory and enable tile graphics and sound.
422 (apply invoke "make" "TILES=1" "SOUND=1"
423 (string-append "PREFIX="
424 (assoc-ref outputs "tiles"))
425 (cdr make-flags))))
426 (add-after 'install 'install-tiles
427 (lambda* (#:key make-flags outputs #:allow-other-keys)
428 (apply invoke "make" "install" "TILES=1" "SOUND=1"
429 (string-append "PREFIX="
430 (assoc-ref outputs "tiles"))
431 (cdr make-flags)))))
432 ;; TODO: Add libtap++ from https://github.com/cbab/libtappp as a native
433 ;; input in order to support tests.
434 #:tests? #f))
435 (outputs '("out"
436 "tiles")) ; For tile graphics and sound support.
437 (native-inputs
438 `(("gettext" ,gettext-minimal)
439 ("pkg-config" ,pkg-config)))
440 (inputs
441 `(("freetype" ,freetype)
442 ("libogg" ,libogg)
443 ("libvorbis" ,libvorbis)
444 ("ncurses" ,ncurses)
445 ("sdl2" ,sdl2)
446 ("sdl2-image" ,sdl2-image)
447 ("sdl2-ttf" ,sdl2-ttf)
448 ("sdl2-mixer" ,sdl2-mixer)))
449 (home-page "http://en.cataclysmdda.com/")
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")
801 (version "1.2.0")
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
810 (base32 "0kgyzfjii4dhpy2h05977alwdmxyxb4jxznnrhlgb21m0ybncmvp"))))
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
02345c96
RW
859(define-public knights
860 (package
861 (name "knights")
862 (version "025")
863 (source (origin
864 (method url-fetch)
865 (uri (string-append "http://www.knightsgame.org.uk/files/knights_"
866 version "_src.tar.gz"))
867 (sha256
868 (base32
869 "18vp2ygvn0s0jz8rm585jqf6hjqkam1ximq81k0r9hpmfj7wb88f"))))
870 (build-system gnu-build-system)
871 (arguments
872 '(#:make-flags
873 (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
874 #:phases
875 (modify-phases %standard-phases
876 ;; No configure script.
877 (delete 'configure))
878 #:tests? #f)) ;; No check target.
879 (inputs
880 `(("boost" ,boost)
881 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
882 ("freetype" ,freetype)
883 ("fontconfig" ,fontconfig)
884 ("curl" ,curl)))
6730d895
RW
885 (native-inputs
886 `(("pkg-config" ,pkg-config)))
02345c96
RW
887 (home-page "http://www.knightsgame.org.uk/")
888 (synopsis "Multiplayer dungeon game involving knights and quests")
889 (description "Knights is a multiplayer game involving several knights who
890must run around a dungeon and complete various quests. Each game revolves
891around a quest – for example, you might have to find some items and carry them
892back to your starting point. This may sound easy, but as there are only
893enough items in the dungeon for one player to win, you may end up having to
894kill your opponents to get their stuff! Other quests involve escaping from
895the dungeon, fighting a duel to the death against the enemy knights, or
896destroying an ancient book using a special wand.")
897 ;; This package includes modified sources of lua (X11), enet (Expat), and
898 ;; guichan (BSD-3). The "Coercri" library is released under the Boost
899 ;; license. The whole package is released under GPLv3+.
900 (license license:gpl3+)))
901
e23f2ff1 902(define-public gnubg
bf0018cd 903 (package
e23f2ff1 904 (name "gnubg")
d5ddb484 905 (version "1.06.002")
bf0018cd
JD
906 (source
907 (origin
908 (method url-fetch)
d24881e4
GLV
909 (uri (string-append "mirror://gnu/gnubg/gnubg-release-"
910 version "-sources.tar.gz"))
bf0018cd
JD
911 (sha256
912 (base32
d5ddb484 913 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf"))))
bf0018cd
JD
914 (build-system gnu-build-system)
915 (inputs `(("glib" ,glib)
916 ("readline" ,readline)
917 ("gtk+" ,gtk+-2)
918 ("mesa" ,mesa)
6a95024c 919 ("glu" ,glu)
bf0018cd
JD
920 ("gtkglext" ,gtkglext)
921 ("sqlite" ,sqlite)
922 ("libcanberra" ,libcanberra)))
923 (native-inputs `(("python-2" ,python-2)
924 ("pkg-config" ,pkg-config)))
93605bfd
GLV
925 (arguments
926 `(#:phases
927 (modify-phases %standard-phases
928 (add-after 'install 'install-desktop-file
929 (lambda* (#:key outputs #:allow-other-keys)
930 (let* ((out (assoc-ref outputs "out"))
931 (apps (string-append out "/share/applications")))
932 (mkdir-p apps)
933 (with-output-to-file (string-append apps "/gnubg.desktop")
934 (lambda _
935 (format #t
936 "[Desktop Entry]~@
937 Name=GNU Backgammon~@
938 Exec=~a/bin/gnubg -w~@
939 Icon=gnubg~@
940 Categories=Game;~@
941 Terminal=false~@
942 Type=Application~%"
943 out))))
944 #t)))))
d24881e4 945 (home-page "https://www.gnu.org/software/gnubg/")
bf0018cd 946 (synopsis "Backgammon game")
c97e4d8b
PN
947 (description "The GNU backgammon application (also known as \"gnubg\") can
948be used for playing, analyzing and teaching the game. It has an advanced
949evaluation engine based on artificial neural networks suitable for both
950beginners and advanced players. In addition to a command-line interface, it
951also features an attractive, 3D representation of the playing board.")
024e2c17 952 (license license:gpl3+)))
bf0018cd 953
e23f2ff1
LC
954(define-public gnubackgammon
955 (deprecated-package "gnubackgammon" gnubg))
c97e4d8b 956
490c6528
JD
957(define-public gnubik
958 (package
959 (name "gnubik")
ecc39b3f 960 (version "2.4.3")
490c6528
JD
961 (source
962 (origin
963 (method url-fetch)
964 (uri (string-append "mirror://gnu/gnubik/gnubik-"
965 version ".tar.gz"))
966 (sha256
967 (base32
ecc39b3f 968 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib"))))
490c6528
JD
969 (build-system gnu-build-system)
970 (inputs `(("gtk+" ,gtk+-2)
971 ("mesa" ,mesa)
276a8f71 972 ("glu" ,glu)
490c6528
JD
973 ("libx11" ,libx11)
974 ("guile" ,guile-2.0)
975 ("gtkglext" ,gtkglext)))
b94a6ca0 976 (native-inputs `(("gettext" ,gettext-minimal)
490c6528
JD
977 ("pkg-config" ,pkg-config)))
978 (home-page "https://www.gnu.org/software/gnubik/")
e67f5551
LC
979 (synopsis "3d Rubik's cube game")
980 (description
981 "GNUbik is a puzzle game in which you must manipulate a cube to make
490c6528
JD
982each of its faces have a uniform color. The game is customizable, allowing
983you to set the size of the cube (the default is 3x3) or to change the colors.
c5779c93 984You may even apply photos to the faces instead of colors. The game is
490c6528 985scriptable with Guile.")
024e2c17 986 (license license:gpl3+)))
3da5dca3 987
a20b084a
JD
988(define-public gnushogi
989 (package
990 (name "gnushogi")
991 (version "1.4.2")
992 (source
993 (origin
994 (method url-fetch)
995 (uri (string-append "mirror://gnu/gnushogi/gnushogi-"
996 version ".tar.gz"))
997 (sha256
998 (base32
999 "0a9bsl2nbnb138lq0h14jfc5xvz7hpb2bcsj4mjn6g1hcsl4ik0y"))))
1000 (arguments `(#:tests? #f)) ;; No check target.
1001 (build-system gnu-build-system)
6fd52309 1002 (home-page "https://www.gnu.org/software/gnushogi/")
a20b084a
JD
1003 (synopsis "The game of Shogi (Japanese chess)")
1004 (description "GNU Shogi is a program that plays the game Shogi (Japanese
1005Chess). It is similar to standard chess but this variant is far more complicated.")
1006 (license license:gpl3+)))
1007
e664200c
KK
1008(define-public ltris
1009 (package
1010 (name "ltris")
1011 (version "1.0.19")
1012 (source
1013 (origin
1014 (method url-fetch)
1015 (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
dd0369f4 1016 "ltris-" version ".tar.gz"))
e664200c
KK
1017 (sha256
1018 (base32
1019 "1895wv1fqklrj4apkz47rnkcfhfav7zjknskw6p0886j35vrwslg"))))
1020 (build-system gnu-build-system)
1021 (arguments
1022 '(;; The code in LTris uses traditional GNU semantics for inline functions
1023 #:configure-flags '("CFLAGS=-fgnu89-inline")
1024 #:phases
1025 (modify-phases %standard-phases
1026 (add-after 'set-paths 'set-sdl-paths
1027 (lambda* (#:key inputs #:allow-other-keys)
1028 (setenv "CPATH"
1029 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1030 "/include/SDL:"
1031 (or (getenv "CPATH") "")))
e664200c
KK
1032 #t)))))
1033 (inputs
1034 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))))
1035 (home-page "http://lgames.sourceforge.net/LTris/")
1036 (synopsis "Tetris clone based on the SDL library")
1037 (description
1038 "LTris is a tetris clone: differently shaped blocks are falling down the
1039rectangular playing field and can be moved sideways or rotated by 90 degree
1040units with the aim of building lines without gaps which then disappear (causing
1041any block above the deleted line to fall down). LTris has three game modes: In
1042Classic you play until the stack of blocks reaches the top of the playing field
1043and no new blocks can enter. In Figures the playing field is reset to a new
1044figure each level and later on tiles and lines suddenly appear. In Multiplayer
1045up to three players (either human or CPU) compete with each other sending
1046removed lines to all opponents. There is also a Demo mode in which you can
1047watch your CPU playing while enjoying a cup of tea!")
1048 (license license:gpl2+)))
3bd0d186
A
1049
1050(define-public nethack
1051 (package
1052 (name "nethack")
c3cfa732 1053 (version "3.6.4")
3bd0d186
A
1054 (source
1055 (origin
1056 (method url-fetch)
a544817e
TGR
1057 (uri
1058 (string-append "https://www.nethack.org/download/" version "/nethack-"
1059 (string-join (string-split version #\.) "") "-src.tgz"))
3bd0d186 1060 (sha256
c3cfa732 1061 (base32 "0ndxgnsprwgjnk0qb24iljkpijnfncgvfb3h3zb129h3cs2anc85"))))
3bd0d186
A
1062 (inputs
1063 `(("ncurses" ,ncurses)
1064 ("bison" ,bison)
1065 ("flex" ,flex)
1066 ("less" ,less)))
1067 (build-system gnu-build-system)
1068 (arguments
1069 '(#:make-flags
1070 `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
1071 #:phases
1072 (modify-phases %standard-phases
1073 (add-before 'configure 'patch-paths
1074 (lambda _
1075 (substitute* "sys/unix/nethack.sh"
1076 (("^ *cd .*$") ""))
1077 (substitute* "sys/unix/Makefile.utl"
1078 (("^YACC *=.*$") "YACC = bison -y\n")
1079 (("^LEX *=.*$") "LEX = flex\n")
1080 (("^# CC = gcc") "CC = gcc"))
1081 (substitute* "sys/unix/hints/linux"
1082 (("/bin/gzip") (string-append
1083 (assoc-ref %build-inputs "gzip")
1084 "/bin/gzip"))
1085 (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses"))
1086 (substitute* "include/config.h"
df35e715
LC
1087 (("^.*define CHDIR.*$") "")
1088 (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/")
1089 ;; Honor SOURCE_DATE_EPOCH.
1090 "#define REPRODUCIBLE_BUILD"))
1091
1092 ;; Note: 'makedefs' rejects and ignores dates that are too old
1093 ;; or too new, so we must choose something reasonable here.
1094 (setenv "SOURCE_DATE_EPOCH" "1531865062")
1095
3bd0d186
A
1096 (substitute* "sys/unix/Makefile.src"
1097 (("^# CC = gcc") "CC = gcc"))
1098 #t))
1099 (replace 'configure
1100 (lambda _
1101 (let ((bash (string-append
1102 (assoc-ref %build-inputs "bash")
1103 "/bin/bash")))
1104 (with-directory-excursion "sys/unix"
1105 (substitute* "setup.sh" (("/bin/sh") bash))
1106 (invoke bash "setup.sh" "hints/linux"))
1107 #t)))
1108 (add-after 'install 'fixup-paths
1109 (lambda _
1110 (let* ((output (assoc-ref %outputs "out"))
1111 (nethack-script (string-append output "/bin/nethack")))
1112 (mkdir-p (string-append output "/games/lib/nethackuserdir"))
1113 (for-each
1114 (lambda (file)
1115 (rename-file
1116 (string-append output "/games/lib/nethackdir/" file)
1117 (string-append output "/games/lib/nethackuserdir/"
1118 file)))
1119 '("xlogfile" "logfile" "perm" "record" "save"))
1120 (mkdir-p (string-append output "/bin"))
1121 (call-with-output-file nethack-script
1122 (lambda (port)
1123 (format port "#!~a/bin/sh
1124PATH=~a:$PATH
1125if [ ! -d ~~/.config/nethack ]; then
1126 mkdir -p ~~/.config/nethack
1127 cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack
1128 chmod -R +w ~~/.config/nethack
1129fi
1130
1131RUNDIR=$(mktemp -d)
1132
1133cleanup() {
1134 rm -rf $RUNDIR
1135}
1136trap cleanup EXIT
1137
1138cd $RUNDIR
1139for i in ~~/.config/nethack/*; do
1140 ln -s $i $(basename $i)
1141done
1142for i in ~a/games/lib/nethackdir/*; do
1143 ln -s $i $(basename $i)
1144done
1145~a/games/nethack"
1146 (assoc-ref %build-inputs "bash")
1147 (list->search-path-as-string
1148 (list
1149 (string-append
1150 (assoc-ref %build-inputs "coreutils") "/bin")
1151 (string-append
1152 (assoc-ref %build-inputs "less") "/bin"))
1153 ":")
1154 output
1155 output
1156 output)))
1157 (chmod nethack-script #o555)
1158 #t)))
1159 (delete 'check))))
1160 (home-page "https://nethack.org")
1161 (synopsis "Classic dungeon crawl game")
1162 (description "NetHack is a single player dungeon exploration game that runs
1163on a wide variety of computer systems, with a variety of graphical and text
1164interfaces all using the same game engine. Unlike many other Dungeons &
1165Dragons-inspired games, the emphasis in NetHack is on discovering the detail of
1166the dungeon and not simply killing everything in sight - in fact, killing
1167everything in sight is a good way to die quickly. Each game presents a
1168different landscape - the random number generator provides an essentially
1169unlimited number of variations of the dungeon and its denizens to be discovered
1170by the player in one of a number of characters: you can pick your race, your
1171role, and your gender.")
1172 (license
1173 (license:fsdg-compatible
1174 "https://nethack.org/common/license.html"))))
e664200c 1175
82943626
TGR
1176(define-public pipewalker
1177 (package
1178 (name "pipewalker")
1179 (version "0.9.4")
1180 (source
1181 (origin
1182 (method url-fetch)
1183 (uri (string-append "http://downloads.sourceforge.net/pipewalker/"
96848ecc 1184 "pipewalker-" version ".tar.gz"))
82943626 1185 (sha256
96848ecc 1186 (base32 "1x46wgk0s55562pd96cxagxkn6wpgglq779f9b64ff1k3xzp3myn"))))
82943626
TGR
1187 (build-system gnu-build-system)
1188 (arguments
1189 `(#:configure-flags
1190 (list (string-append "--docdir=" (assoc-ref %outputs "out")
1191 "/share/doc/" ,name "-" ,version))
1192 #:phases
1193 (modify-phases %standard-phases
1194 (add-after 'configure 'patch-docdir
1195 ;; Makefile.in ignores configure's ‘--docdir=...’ option. Fix that.
1196 (lambda _
1197 (substitute* "Makefile"
1198 (("(pkgdocdatadir = ).*" _ assignment)
1199 (string-append assignment "$(docdir)\n")))
1200 #t)))))
1201 (inputs
1202 `(("libpng" ,libpng)
1203 ("mesa" ,mesa)
1204 ("sdl" ,sdl)))
1205 (home-page "http://pipewalker.sourceforge.net/")
1206 (synopsis "Logical tile puzzle")
1207 (description
1208 "PipeWalker is a simple puzzle game with many diffent themes: connect all
1209computers to one network server, bring water from a source to the taps, etc.
1210The underlying mechanism is always the same: you must turn each tile in the
1211grid in the right direction to combine all components into a single circuit.
1212Every puzzle has a complete solution, although there may be more than one.")
1213 (license license:gpl3+)))
1214
26a657f0
KK
1215(define-public prboom-plus
1216 (package
1217 (name "prboom-plus")
1218 (version "2.5.1.4")
1219 (source (origin
1220 (method url-fetch)
a8a96bbe
TGR
1221 (uri (string-append "mirror://sourceforge/prboom-plus/prboom-plus/"
1222 version "/prboom-plus-" version ".tar.gz"))
26a657f0 1223 (sha256
a8a96bbe 1224 (base32 "151v6nign86m1a2vqz27krsccpc9m4d1jax4y43v2fa82wfj9qp0"))
26a657f0
KK
1225 (modules '((guix build utils)))
1226 (snippet
6cbee49d
MW
1227 '(begin
1228 (substitute* "src/version.c"
1229 (("__DATE__") "")
1230 (("__TIME__") ""))
1231 #t))))
26a657f0
KK
1232 (build-system gnu-build-system)
1233 (arguments
1234 '(#:configure-flags '("--disable-cpu-opt")
1235 #:make-flags `(,(string-append "gamesdir="
1236 (assoc-ref %outputs "out") "/bin"))
1237 #:phases
1238 (modify-phases %standard-phases
1239 (add-after 'set-paths 'set-sdl'paths
1240 (lambda* (#:key inputs #:allow-other-keys)
1241 (setenv "CPATH"
1242 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1243 "/include/SDL:"
1244 (or (getenv "CPATH") "")))
26a657f0
KK
1245 #t)))))
1246 (inputs
1247 `(("fluidsynth" ,fluidsynth)
1248 ("glu" ,glu)
1249 ("libmad" ,libmad)
1250 ("libpng" ,libpng)
1251 ("libvorbis" ,libvorbis)
1252 ("pcre" ,pcre)
1253 ("portmidi" ,portmidi)
1254 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net)))))
1255 (home-page "http://prboom-plus.sourceforge.net/")
1256 (synopsis "Version of the classic 3D shoot'em'up game Doom")
1257 (description
1258 "PrBoom+ is a Doom source port developed from the original PrBoom project.")
1259 (license license:gpl2+)))
1260
519bfc65
KK
1261(define-public retux
1262 (package
1263 (name "retux")
b286e3b3 1264 (version "1.3.6")
519bfc65
KK
1265 (source (origin
1266 (method url-fetch)
1267 (uri (string-append "mirror://savannah/retux/"
1268 (version-major+minor version) "/retux-"
1269 version "-src.tar.gz"))
1270 (sha256
1271 (base32
b286e3b3 1272 "01bidh4zisjp3nc436x0g85v60dvwb3ig37i7y01sa71j8fm4fmb"))))
519bfc65
KK
1273 (build-system python-build-system)
1274 (arguments
1275 `(#:tests? #f ; no check target
1276 #:phases
1277 (modify-phases %standard-phases
1278 ;; no setup.py script
1279 (delete 'build)
1280 (replace 'install
1281 (lambda* (#:key outputs #:allow-other-keys)
1282 (let* ((out (assoc-ref outputs "out"))
1283 (bin (string-append out "/bin"))
1284 (data (string-append out "/share/retux"))
1285 (doc (string-append out "/share/doc/retux")))
1286 (mkdir-p bin)
1287
1288 (substitute* "retux.py"
1289 ;; Use the correct data directory.
1290 (("os\\.path\\.join\\(os\\.path\\.dirname\\(__file__\\), \"data\"\\),")
1291 (string-append "\"" data "\","))
1292 ;; Use Python 3 so the patch-shebangs phase works properly.
1293 ((".*python2.*") "#!/usr/bin/python3"))
1294
1295 (copy-file "retux.py" (string-append bin "/retux"))
1296
1297 (copy-recursively "data" data)
1298
fbc3b802
KK
1299 (install-file "COPYING" doc)
1300 #t))))))
519bfc65
KK
1301 (inputs
1302 `(("python-sge-pygame" ,python-sge-pygame)
1303 ("python-six" ,python-six)
1304 ("python-xsge" ,python-xsge)))
1305 (home-page "http://retux.nongnu.org")
1306 (synopsis "Action platformer game")
1307 (description
1308 "ReTux is an action platformer loosely inspired by the Mario games,
1309utilizing the art assets from the @code{SuperTux} project.")
1310 ;; GPL version 3 or later is the license for the code and some art.
1311 ;; The rest of the licenses are for the art exclusively, as listed in
1312 ;; data/LICENSES.
1313 (license (list license:cc0
1314 license:cc-by3.0
1315 license:cc-by-sa3.0
1316 license:cc-by-sa4.0
1317 license:gpl2+
1318 license:gpl3+))))
07f3b379
KK
1319
1320(define-public roguebox-adventures
1697048f
KK
1321 (package
1322 (name "roguebox-adventures")
1323 (version "2.2.1")
1324 (source
1325 (origin
1326 (method url-fetch)
1327 (uri (string-append
1328 "http://download.tuxfamily.org/rba/RogueBoxAdventures_v"
1329 (string-join (string-split version #\.) "_") "_Source.zip"))
1330 (file-name (string-append name "-" version ".zip"))
1331 (sha256
1332 (base32
1333 "0kmzdgnik8fsf3bg55546l77p3mfxn2awkzfzzdn20n82rd2babw"))))
1334 (build-system python-build-system)
1335 (arguments
1336 `(#:tests? #f ; no check target
1337 #:phases
1338 (modify-phases %standard-phases
1339 (replace 'unpack
1340 (lambda* (#:key source #:allow-other-keys)
1341 (and (invoke "unzip" source)
1342 ;; The actual source is buried a few directories deep.
1343 (chdir (string-append "RogueBoxAdventures_v"
1344 (string-join
1345 (string-split ,version #\.) "_")
1346 "_Source")))))
1347 ;; no setup.py script
1348 (replace 'build
1349 (lambda* (#:key outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (data (string-append
1352 out "/share/games/roguebox-adventures")))
1353 ;; Use the correct data directory.
1354 (substitute* '("main.py" "LIB/getch.py" "LIB/getch_gcwz.py")
1355 (("basic_path + os\\.sep + 'DATA'")
1356 (string-append "'" data "'"))
1357 (("^basic_path.*$")
1358 (string-append "basic_path ='" data "'\n")))
1359 (substitute* "LIB/gra_files.py"
1360 (("basic_path = b_path\\.replace\\('/LIB',''\\)")
1361 (string-append "basic_path ='" data "'\n")))
07f3b379 1362
1697048f
KK
1363 ;; The game must save in the user's home directory because
1364 ;; the store is read-only.
1365 (substitute* "main.py"
1366 (("home_save = False") "home_save = True")
1367 (("'icon_small.png'")
1368 (string-append "'" data "/icon_small.png'"))))
1369 #t))
1370 (replace 'install
1371 (lambda* (#:key outputs #:allow-other-keys)
1372 (let* ((out (assoc-ref outputs "out"))
1373 (bin (string-append out "/bin"))
1374 (roguebox-adventures
1375 (string-append bin "/roguebox-adventures"))
1376 (data (string-append
1377 out "/share/games/roguebox-adventures"))
1378 (lib (string-append data "/LIB"))
1379 (doc (string-append
1380 out "/share/doc/roguebox-adventures")))
1381 (mkdir-p bin)
1382 (mkdir-p doc)
07f3b379 1383
1697048f
KK
1384 (for-each (lambda (file)
1385 (copy-recursively file
1386 (string-append data "/" file)))
1387 '("AUDIO" "FONT" "GRAPHIC" "LIB" "LICENSE"
1388 "icon_big.png" "icon_small.png"))
1389 (for-each (lambda (file)
1390 (chmod file #o555)
1391 (install-file file lib))
1392 '("main.py" "run.py"))
07f3b379 1393
1697048f 1394 (copy-recursively "DOC" doc)
07f3b379 1395
1697048f
KK
1396 (call-with-output-file
1397 roguebox-adventures
1398 (lambda (p)
1399 (format p "\
1400#!~a
1401export PYTHONPATH=~a/LIB:~a
1402exec -a \"~a\" ~a \"$@\"\n"
1403 (which "bash") data (getenv "PYTHONPATH")
1404 (which "python3")
1405 (string-append lib "/main.py"))))
1406 (chmod roguebox-adventures #o555))
1407 #t)))))
1408 (native-inputs
1409 `(("unzip" ,unzip)))
1410 (inputs
1411 `(("python-pygame" ,python-pygame)
1412 ("python-tmx" ,python-tmx)))
1413 (home-page "https://rogueboxadventures.tuxfamily.org")
1414 (synopsis "A classical roguelike/sandbox game")
1415 (description
1416 "RogueBox Adventures is a graphical roguelike with strong influences
07f3b379
KK
1417from sandbox games like Minecraft or Terraria. The main idea of RogueBox
1418Adventures is to offer the player a kind of roguelike toy-world. This world
1419can be explored and changed freely.")
1697048f
KK
1420 ;; The GPL3+ is for code, the rest are for art.
1421 (license (list license:cc0
1422 license:cc-by3.0
1423 license:gpl3+
1424 license:silofl1.1))))
519bfc65 1425
a20b084a
JD
1426(define-public xshogi
1427 (package
1428 (name "xshogi")
1429 (version "1.4.2")
1430 (source
1431 (origin
1432 (method url-fetch)
1433 (uri (string-append "mirror://gnu/gnushogi/xshogi-"
1434 version ".tar.gz"))
1435 (sha256
1436 (base32
1437 "1dns0nhymak44by18sv48m4xb2skiwbi2i3nb9hl6w9iwd2i2brf"))))
1438 (build-system gnu-build-system)
1439 (inputs
1440 `(("libxaw" ,libxaw)
1441 ("libxt" ,libxt)))
6fd52309 1442 (home-page "https://www.gnu.org/software/gnushogi/")
2f1d20a8 1443 (synopsis "User interface for gnushogi")
a20b084a
JD
1444 (description "A graphical user interface for the package @code{gnushogi}.")
1445 ;; Contains a copy of GPLv3 but the licence notices simply
1446 ;; state "GNU General Public Licence" without specifying a version.
1447 (license license:gpl1+)))
1448
649220ad 1449(define-public abbaye
3da5dca3 1450 (package
649220ad 1451 (name "abbaye")
efc12a81 1452 (version "2.0.1")
3da5dca3
DT
1453 (source
1454 (origin
feb50ac6
TGR
1455 (method git-fetch)
1456 (uri (git-reference
1457 (url "https://github.com/nevat/abbayedesmorts-gpl.git")
1458 (commit (string-append "v" version))))
1459 (file-name (git-file-name name version))
3da5dca3 1460 (sha256
feb50ac6 1461 (base32 "1pwqf7r9bqb2p3xrw9i7y8pgr1401fy3mnnqpb1qkhmdl3gqi9hb"))
efc12a81
AFN
1462 (modules '((guix build utils)))
1463 (snippet
1464 ;; Unbundle fonts.
6cbee49d
MW
1465 '(begin
1466 (delete-file-recursively "fonts")
1467 #t))))
3da5dca3
DT
1468 (build-system gnu-build-system)
1469 (arguments
efc12a81 1470 '(#:make-flags '("CC=gcc")
aec05972
AK
1471 #:phases (modify-phases %standard-phases
1472 (add-after 'set-paths 'set-sdl-paths
61599438
AK
1473 (lambda* (#:key inputs #:allow-other-keys)
1474 (setenv "CPATH"
1475 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
1476 "/include/SDL:"
1477 (or (getenv "CPATH") "")))))
aec05972
AK
1478 (add-after 'patch-source-shebangs 'patch-makefile
1479 (lambda* (#:key outputs #:allow-other-keys)
1480 ;; Replace /usr with package output directory.
efc12a81
AFN
1481 (substitute* "Makefile"
1482 (("/usr") (assoc-ref outputs "out")))))
aec05972
AK
1483 (add-before 'install 'make-install-dirs
1484 (lambda* (#:key outputs #:allow-other-keys)
1485 (let ((prefix (assoc-ref outputs "out")))
1486 ;; Create directories that the makefile assumes exist.
1487 (mkdir-p (string-append prefix "/bin"))
1488 (mkdir-p (string-append prefix "/share/applications"))
1489 (mkdir-p (string-append prefix "/share/pixmaps")))))
1490 ;; No configure script.
1491 (delete 'configure))
3da5dca3
DT
1492 #:tests? #f)) ;; No check target.
1493 (native-inputs `(("pkg-config" ,pkg-config)))
efc12a81
AFN
1494 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
1495 (home-page "https://github.com/nevat/abbayedesmorts-gpl")
3da5dca3
DT
1496 (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
1497 (description "L'Abbaye des Morts is a 2D platform game set in 13th century
1498France. The Cathars, who preach about good Christian beliefs, were being
1499expelled by the Catholic Church out of the Languedoc region in France. One of
1500them, called Jean Raymond, found an old church in which to hide, not knowing
1501that beneath its ruins lay buried an ancient evil.")
efc12a81 1502 (license license:gpl3)))
a83c6a64 1503
649220ad
NG
1504(define-public l-abbaye-des-morts
1505 (deprecated-package "l-abbaye-des-morts" abbaye))
c91ed484 1506
b76c94e6
CAW
1507(define-public angband
1508 (package
1509 (name "angband")
e5e24819 1510 (version "4.2.0")
b76c94e6
CAW
1511 (source
1512 (origin
1513 (method url-fetch)
9a0d324a
EF
1514 (uri (string-append "http://rephial.org/downloads/"
1515 (version-major+minor version)
1516 "/angband-" version ".tar.gz"))
b76c94e6
CAW
1517 (sha256
1518 (base32
e5e24819 1519 "0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
b76c94e6
CAW
1520 (modules '((guix build utils)))
1521 (snippet
1522 ;; So, some of the sounds/graphics/tilesets are under different
1523 ;; licenses... some of them even nonfree! This is a console-only
1524 ;; version of this package so we just remove them.
1525 ;; In the future, if someone tries to make a graphical variant of
1526 ;; this package, they can deal with that mess themselves. :)
1527 '(begin
6cbee49d
MW
1528 (for-each (lambda (subdir)
1529 (let ((lib-subdir (string-append "lib/" subdir)))
1530 (delete-file-recursively lib-subdir)))
1531 '("fonts" "icons" "sounds" "tiles"))
b76c94e6 1532 (substitute* "lib/Makefile"
e5e24819 1533 ;; And don't try to invoke makefiles in the directories we removed.
b76c94e6 1534 (("gamedata customize help screens fonts tiles sounds icons user")
6cbee49d
MW
1535 "gamedata customize help screens user"))
1536 #t))))
b76c94e6
CAW
1537 (build-system gnu-build-system)
1538 (arguments
aeb6d9a6 1539 `(#:tests? #f ; no check target
b76c94e6
CAW
1540 #:configure-flags (list (string-append "--bindir=" %output "/bin"))
1541 #:phases
1542 (modify-phases %standard-phases
9a0d324a 1543 (replace 'bootstrap
b76c94e6
CAW
1544 (lambda _
1545 (substitute* "acinclude.m4"
1546 (("ncursesw5-config") "ncursesw6-config"))
9a0d324a 1547 (invoke "sh" "autogen.sh"))))))
b76c94e6
CAW
1548 (native-inputs
1549 `(("autoconf" ,autoconf)
1550 ("automake" ,automake)))
1551 (inputs `(("ncurses" ,ncurses)))
1552 (home-page "http://rephial.org/")
1553 (synopsis "Dungeon exploration roguelike")
1554 (description "Angband is a Classic dungeon exploration roguelike. Explore
1555the depths below Angband, seeking riches, fighting monsters, and preparing to
1556fight Morgoth, the Lord of Darkness.")
1557 (license license:gpl2)))
1558
a83c6a64
EB
1559(define-public pingus
1560 (package
1561 (name "pingus")
1562 (version "0.7.6")
1563 (source
1564 (origin
472c36bd
EF
1565 (method git-fetch)
1566 (uri (git-reference
4b889d3a 1567 (url "https://gitlab.com/pingus/pingus.git")
472c36bd
EF
1568 (commit (string-append "v" version))))
1569 (file-name (git-file-name name version))
a83c6a64
EB
1570 (sha256
1571 (base32
472c36bd
EF
1572 "0wp06kcmknsnxz7bjnsndb8x062z7r23fb3yrnbfnj68qhz18y74"))
1573 (patches (search-patches "pingus-boost-headers.patch"
2ed626bf
MB
1574 "pingus-sdl-libs-config.patch"))
1575 (modules '((guix build utils)))
1576 (snippet
1577 '(begin
1578 (substitute* "src/pingus/screens/demo_session.cpp"
1579 (("#include <iostream>")
1580 ;; std::function moved to <functional> with C++ 11.
1581 ;; Remove this for versions newer than 0.7.6.
1582 "#include <iostream>\n#include <functional>"))
1583 #t))))
a83c6a64
EB
1584 (build-system gnu-build-system)
1585 (native-inputs `(("pkg-config" ,pkg-config)
3f3f8f49 1586 ("scons-python2" ,scons-python2)))
a83c6a64
EB
1587 (inputs `(("sdl" ,sdl)
1588 ("sdl-image" ,sdl-image)
1589 ("sdl-mixer" ,sdl-mixer)
1590 ("mesa" ,mesa)
00c09300 1591 ("glu" ,glu)
a83c6a64
EB
1592 ("libpng" ,libpng)
1593 ("boost" ,boost)))
1594 (arguments
3f3f8f49
AI
1595 '(#:make-flags (list (string-append "PREFIX=" %output))
1596 #:tests? #f ; no check target
a83c6a64 1597 #:phases
3f127147 1598 (modify-phases %standard-phases
3f3f8f49 1599 (delete 'configure)))) ; no configure script
5f578231 1600 (home-page "https://pingus.seul.org/")
a83c6a64
EB
1601 (synopsis "Lemmings clone")
1602 (description
1603 "Pingus is a free Lemmings-like puzzle game in which the player takes
1604command of a bunch of small animals and has to guide them through levels.
1605Since the animals walk on their own, the player can only influence them by
1606giving them commands, like build a bridge, dig a hole, or redirect all animals
1607in the other direction. Multiple such commands are necessary to reach the
1608level's exit. The game is presented in a 2D side view.")
1609 ;; Some source files are under bsd-3 and gpl2+ licenses.
024e2c17 1610 (license license:gpl3+)))
dff62423
JD
1611
1612(define-public talkfilters
1613 (package
1614 (name "talkfilters")
1615 (version "2.3.8")
1616 (source
1617 (origin
1618 (method url-fetch)
1619 (uri (string-append "http://www.hyperrealm.com/" name "/"
10903356 1620 name "-" version ".tar.gz"))
dff62423
JD
1621 (sha256
1622 (base32 "19nc5vq4bnkjvhk8srqddzhcs93jyvpm9r6lzjzwc1mgf08yg0a6"))))
1623 (build-system gnu-build-system)
6fd52309 1624 (home-page "https://www.gnu.org/software/talkfilters/")
dff62423
JD
1625 (synopsis "Convert English text to humorous dialects")
1626 (description "The GNU Talk Filters are programs that convert English text
1627into stereotyped or otherwise humorous dialects. The filters are provided as
1628a C library, so they can easily be integrated into other programs.")
024e2c17
DT
1629 (license license:gpl2+)))
1630
3cf118a1
CS
1631(define-public cmatrix
1632 (package
1633 (name "cmatrix")
14736727 1634 (version "2.0")
3cf118a1
CS
1635 (source
1636 (origin
14736727
OP
1637 (method git-fetch)
1638 (uri (git-reference
1639 (url "https://github.com/abishekvashok/cmatrix.git")
1640 (commit (string-append "v" version))))
1641 (file-name (git-file-name name version))
3cf118a1
CS
1642 (sha256
1643 (base32
14736727 1644 "1h9jz4m4s5l8c3figaq46ja0km1gimrkfxm4dg7mf4s84icmasbm"))))
3cf118a1 1645 (build-system gnu-build-system)
14736727
OP
1646 (native-inputs
1647 `(("autoconf" ,autoconf)
1648 ("automake" ,automake)))
3cf118a1
CS
1649 (arguments
1650 '(#:phases
3f127147
TGR
1651 (modify-phases %standard-phases
1652 (replace 'configure
1653 (lambda* (#:key outputs #:allow-other-keys)
1654 ;; This old ‘configure’ script doesn't support
1655 ;; variables passed as arguments.
1656 (let ((out (assoc-ref outputs "out")))
1657 (setenv "CONFIG_SHELL" (which "bash"))
a4aca0b8
RW
1658 (invoke "./configure"
1659 (string-append "--prefix=" out))))))))
3cf118a1 1660 (inputs `(("ncurses" ,ncurses)))
07af3e5e 1661 (home-page "http://www.asty.org/cmatrix")
3cf118a1
CS
1662 (synopsis "Simulate the display from \"The Matrix\"")
1663 (description "CMatrix simulates the display from \"The Matrix\" and is
1664based on the screensaver from the movie's website. It works with terminal
1665settings up to 132x300 and can scroll lines all at the same rate or
1666asynchronously and at a user-defined speed.")
024e2c17 1667 (license license:gpl2+)))
ae9cb418
JD
1668
1669(define-public chess
1670 (package
1671 (name "chess")
16fb1e79 1672 (version "6.2.5")
ae9cb418
JD
1673 (source
1674 (origin
1675 (method url-fetch)
1676 (uri (string-append "mirror://gnu/chess/gnuchess-" version
1677 ".tar.gz"))
1678 (sha256
1679 (base32
16fb1e79 1680 "00j8s0npgfdi41a0mr5w9qbdxagdk2v41lcr42rwl1jp6miyk6cs"))))
ae9cb418 1681 (build-system gnu-build-system)
6fd52309 1682 (home-page "https://www.gnu.org/software/chess/")
ae9cb418
JD
1683 (synopsis "Full chess implementation")
1684 (description "GNU Chess is a chess engine. It allows you to compete
1685against the computer in a game of chess, either through the default terminal
1686interface or via an external visual interface such as GNU XBoard.")
024e2c17 1687 (license license:gpl3+)))
ae9cb418 1688
a6b55314 1689(define freedink-engine
bb3b71ce
SB
1690 (package
1691 (name "freedink-engine")
2ee05bb9 1692 (version "109.6")
bb3b71ce
SB
1693 (source (origin
1694 (method url-fetch)
1695 (uri (string-append "mirror://gnu/freedink/freedink-" version
1696 ".tar.gz"))
1697 (sha256
1698 (base32
2ee05bb9 1699 "00hhk1bjdrc1np2qz44sa5n1mb62qzwxbvsnws3vpms6iyn3a2sy"))))
bb3b71ce 1700 (build-system gnu-build-system)
a9249f58
KK
1701 (arguments
1702 `(#:configure-flags '("--disable-embedded-resources")
1703 #:phases
1704 (modify-phases %standard-phases
1705 (add-after 'unpack 'disable-graphical-tests
1706 (lambda _
1707 ;; These tests require a graphical interface.
1708 (substitute* "src/Makefile.am"
1709 (("test_gfx_fonts TestIOGfxDisplay") ""))
1710 #t)))))
1711 (native-inputs `(("autoconf" ,autoconf)
1712 ("automake" ,automake)
1713 ("cxxtest" ,cxxtest)
1714 ("gettext" ,gettext-minimal)
1715 ("help2man" ,help2man)
bb3b71ce 1716 ("pkg-config" ,pkg-config)))
a9249f58
KK
1717 (inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer
1718 sdl2-ttf sdl2-gfx)))
bb3b71ce 1719 ("fontconfig" ,fontconfig)
a9249f58 1720 ("glm" ,glm)))
f9eab0be
EF
1721 (properties '((ftp-directory . "/freedink")
1722 (upstream-name . "freedink")))
6fd52309 1723 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1724 (synopsis "Twisted adventures of young pig farmer Dink Smallwood")
1725 (description
1726 "GNU FreeDink is a free and portable re-implementation of the engine
1727for the role-playing game Dink Smallwood. It supports not only the original
1728game data files but it also supports user-produced game mods or \"D-Mods\".
1729To that extent, it also includes a front-end for managing all of your D-Mods.")
024e2c17 1730 (license license:gpl3+)))
bb3b71ce 1731
a6b55314 1732(define freedink-data
bb3b71ce
SB
1733 (package
1734 (name "freedink-data")
32d92d2c 1735 (version "1.08.20190120")
bb3b71ce
SB
1736 (source (origin
1737 (method url-fetch)
1738 (uri (string-append "mirror://gnu/freedink/freedink-data-"
32d92d2c 1739 version ".tar.gz"))
bb3b71ce
SB
1740 (sha256
1741 (base32
32d92d2c 1742 "17gvryadlxk172mblbsil7hina1z5wahwaxnr6g3mdq57dvl8pvi"))))
bb3b71ce
SB
1743 (build-system gnu-build-system)
1744 (arguments
3f127147
TGR
1745 `(#:phases
1746 (modify-phases %standard-phases
1747 (delete 'configure) ; no configure script
1748 (delete 'check)) ; no tests
bb3b71ce 1749 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
151fa926 1750 (properties '((ftp-directory . "/freedink")))
6fd52309 1751 (home-page "https://www.gnu.org/software/freedink/")
bb3b71ce
SB
1752 (synopsis "Game data for GNU Freedink")
1753 (description
1754 "This package contains the game data of GNU Freedink.")
024e2c17 1755 (license license:gpl3+)))
bb3b71ce 1756
2926e950
KK
1757(define-public freedink-dfarc
1758 (package
1759 (name "freedink-dfarc")
1760 (version "3.14")
1761 (source (origin
1762 (method url-fetch)
1763 (uri (string-append "mirror://gnu/freedink/dfarc-"
1764 version ".tar.gz"))
1765 (sha256
1766 (base32
1767 "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5"))))
1768 (build-system gnu-build-system)
1769 (native-inputs
1770 `(("intltool" ,intltool)))
1771 (inputs
1772 `(("bzip2" ,bzip2)
1773 ("wxwidgets" ,wxwidgets)))
8ca06df5
EF
1774 (properties '((ftp-directory . "/freedink")
1775 (upstream-name . "dfarc")))
2926e950
KK
1776 (home-page "https://www.gnu.org/software/freedink/")
1777 (synopsis "Front-end for managing and playing Dink Modules")
1778 (description "DFArc makes it easy to play and manage the GNU FreeDink game
1779and its numerous D-Mods.")
1780 (license license:gpl3+)))
bb3b71ce 1781
a6b55314
LC
1782(define-public freedink
1783 ;; This is a wrapper that tells the engine where to find the data.
1784 (package (inherit freedink-engine)
1785 (name "freedink")
1786 (build-system trivial-build-system)
1787 (arguments
1788 '(#:builder (begin
1789 (use-modules (guix build utils))
1790
1791 (let* ((output (assoc-ref %outputs "out"))
1792 (bin (string-append output "/bin"))
1793 (executable (string-append bin "/freedink")))
1794 (mkdir-p bin)
1795 (call-with-output-file executable
1796 (lambda (port)
1797 (format port "#!~a/bin/sh
1798exec ~a/bin/freedink -refdir ~a/share/dink\n"
1799 (assoc-ref %build-inputs "bash")
1800 (assoc-ref %build-inputs "engine")
1801 (assoc-ref %build-inputs "data"))
e3cfef22
MW
1802 (chmod port #o777)))
1803 #t))
a6b55314
LC
1804 #:modules ((guix build utils))))
1805 (inputs `(("engine" ,freedink-engine)
1806 ("data" ,freedink-data)
1807 ("bash" ,bash)))
1808 (native-inputs '())))
1809
ae9cb418
JD
1810(define-public xboard
1811 (package
1812 (name "xboard")
9835458f 1813 (version "4.9.1")
ae9cb418
JD
1814 (source
1815 (origin
1816 (method url-fetch)
1817 (uri (string-append "mirror://gnu/xboard/xboard-" version
1818 ".tar.gz"))
1819 (sha256
1820 (base32
9835458f 1821 "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib"))))
ae9cb418 1822 (build-system gnu-build-system)
4e530049
SB
1823 (inputs
1824 `(("gtk+" ,gtk+-2)
1825 ("librsvg" ,librsvg)))
9835458f
EF
1826 (native-inputs
1827 `(("texinfo" ,texinfo)
1828 ("pkg-config" ,pkg-config)))
6fd52309 1829 (home-page "https://www.gnu.org/software/xboard/")
ae9cb418
JD
1830 (synopsis "Graphical user interface for chess programs")
1831 (description "GNU XBoard is a graphical board for all varieties of chess,
1832including international chess, xiangqi (Chinese chess), shogi (Japanese chess)
1833and Makruk. Several lesser-known variants are also supported. It presents a
1834fully interactive graphical interface and it can load and save games in the
1835Portable Game Notation.")
024e2c17 1836 (license license:gpl3+)))
11c38cbe 1837
a21b42e2
SB
1838(define-public gtypist
1839 (package
1840 (name "gtypist")
1841 (version "2.9.5")
1842 (source (origin
1843 (method url-fetch)
1844 (uri (string-append "mirror://gnu/gtypist/gtypist-"
1845 version ".tar.xz"))
1846 (sha256
1847 (base32
1848 "0xzrkkmj0b1dw3yr0m9hml2y634cc4h61im6zwcq57s7285z8fn1"))
1849 (modules '((guix build utils)))
1850 (snippet
1851 ;; We do not provide `ncurses.h' within an `ncursesw'
1852 ;; sub-directory, so patch the source accordingly. See
1853 ;; <http://bugs.gnu.org/19018>.
6cbee49d
MW
1854 '(begin
1855 (for-each (lambda (file)
1856 (substitute* file
1857 (("ncursesw/ncurses.h")
1858 "ncurses.h")))
1859 (find-files "." "configure$|\\.c$"))
1860 #t))))
a21b42e2
SB
1861 (build-system gnu-build-system)
1862 (inputs `(("ncurses" ,ncurses)
1863 ("perl" ,perl)))
6fd52309 1864 (home-page "https://www.gnu.org/software/gtypist/")
a21b42e2
SB
1865 (synopsis "Typing tutor")
1866 (description
1867 "GNU Typist is a universal typing tutor. It can be used to learn and
1868practice touch-typing. Several tutorials are included; in addition to
1869tutorials for the standard QWERTY layout, there are also tutorials for the
1870alternative layouts Dvorak and Colemak, as well as for the numpad. Tutorials
1871are primarily in English, however some in other languages are provided.")
024e2c17 1872 (license license:gpl3+)))
13d18626 1873
024e2c17
DT
1874(define-public irrlicht
1875 (package
1876 (name "irrlicht")
f90b2dbd 1877 (version "1.8.4")
024e2c17
DT
1878 (source (origin
1879 (method url-fetch)
1880 (uri (string-append
1881 "mirror://sourceforge/irrlicht/Irrlicht%20SDK/"
1882 (version-major+minor version)
1883 "/" version "/irrlicht-" version ".zip"))
1884 (sha256
1885 (base32
7b8a7536
EF
1886 "0cz4z4dwrv5ypl19ll67wl6jjpy5k6ly4vr042w4br88qq5jhazl"))
1887 (patches (search-patches "irrlicht-use-system-libs.patch"))
1888 (modules '((guix build utils)))
1889 (snippet
1890 '(begin
1891 (for-each delete-file-recursively
1892 '("bin" ; bundled compiled Windows binaries"
1893 "source/Irrlicht/MacOSX"
1894 "source/Irrlicht/bzip2"
1895 "source/Irrlicht/jpeglib"
1896 "source/Irrlicht/libpng"
1897 "source/Irrlicht/lzma"
1898 "source/Irrlicht/zlib"))
1899 (delete-file "source/Irrlicht/glext.h")
1900 (delete-file "source/Irrlicht/glxext.h")
1901 (delete-file "source/Irrlicht/wglext.h")
1902 #t))))
024e2c17
DT
1903 (build-system gnu-build-system)
1904 (arguments
3f127147
TGR
1905 `(#:phases
1906 (modify-phases %standard-phases
7b8a7536
EF
1907 (add-after 'unpack 'chdir-to-source
1908 (lambda _
1909 ;; The actual source is buried a few directories deep.
1910 (chdir "source/Irrlicht/")
1911 #t))
1912 (add-after 'chdir-to-source 'fix-build-env
3f127147
TGR
1913 (lambda* (#:key outputs #:allow-other-keys)
1914 (let ((out (assoc-ref outputs "out")))
1915 (substitute* "Makefile"
1916 (("INSTALL_DIR = /usr/local/lib")
7b8a7536
EF
1917 (string-append "INSTALL_DIR = " out "/lib"))
1918 ;; Add '-fpermissive' to the CXXFLAGS
1919 (("-Wall") "-Wall -fpermissive")) ; CImageLoaderJPG.cpp
3f127147
TGR
1920 ;; The Makefile assumes these directories exist.
1921 (mkdir-p (string-append out "/lib"))
1922 (mkdir-p (string-append out "/include")))))
3f127147
TGR
1923 (delete 'configure)) ; no configure script
1924 #:tests? #f ; no check target
024e2c17 1925 #:make-flags '("CC=gcc" "sharedlib")))
024e2c17 1926 (inputs
7b8a7536
EF
1927 `(("bzip2" ,bzip2)
1928 ("libjpeg" ,libjpeg)
1929 ("libpng" ,libpng)
1930 ("libx11" ,libx11)
1931 ("libxxf86vm" ,libxxf86vm)
1932 ("mesa" ,mesa)))
024e2c17
DT
1933 (synopsis "3D game engine written in C++")
1934 (description
1935 "The Irrlicht Engine is a high performance realtime 3D engine written in
1936C++. Features include an OpenGL renderer, extensible materials, scene graph
1937management, character animation, particle and other special effects, support
1938for common mesh file formats, and collision detection.")
1939 (home-page "http://irrlicht.sourceforge.net/")
1940 (license license:zlib)))
7e51e5bc 1941
c23c50c7
RW
1942(define-public mars
1943 ;; The latest release on SourceForge relies on an unreleased version of SFML
1944 ;; with a different API, so we take the latest version from the official
1945 ;; repository on Github.
698bd297 1946 (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
c23c50c7
RW
1947 (revision "1"))
1948 (package
1949 (name "mars")
698bd297 1950 (version (string-append "0.7.5." revision "." (string-take commit 7) ))
c23c50c7
RW
1951 (source (origin
1952 (method git-fetch)
1953 (uri (git-reference
1954 (url "https://github.com/thelaui/M.A.R.S..git")
1955 (commit commit)))
00a82e83 1956 (file-name (git-file-name name version))
c23c50c7
RW
1957 (sha256
1958 (base32
1959 "1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
fc1adab1
AK
1960 (patches (search-patches "mars-sfml-2.3.patch"
1961 "mars-install.patch"))))
c23c50c7
RW
1962 (build-system cmake-build-system)
1963 (arguments
1964 `(#:tests? #f ; There are no tests
1965 #:phases
1966 (modify-phases %standard-phases
1967 (add-after 'unpack 'fix-install-path
1968 (lambda _
1969 (substitute* "src/CMakeLists.txt"
1970 (("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
1971 "${CMAKE_INSTALL_PREFIX}/bin"))
1972 #t))
1973 (add-after 'unpack 'fix-data-path
1974 (lambda* (#:key outputs #:allow-other-keys)
1975 (substitute* "src/System/settings.cpp"
1976 (("C_dataPath = \"./data/\";")
1977 (string-append "C_dataPath = \""
1978 (assoc-ref outputs "out")
1979 "/share/games/marsshooter/\";")))
1980 #t)))))
1981 (inputs
1982 `(("mesa" ,mesa)
1983 ("fribidi" ,fribidi)
1984 ("taglib" ,taglib)
1985 ("sfml" ,sfml)))
1986 (home-page "http://marsshooter.org")
1987 (synopsis "2D space shooter")
1988 (description
1989 "M.A.R.S. is a 2D space shooter with pretty visual effects and
1990attractive physics. Players can battle each other or computer controlled
1991enemies in different game modes such as space ball, death match, team death
1992match, cannon keep, and grave-itation pit.")
1993 (license license:gpl3+))))
1994
7e51e5bc
DT
1995(define minetest-data
1996 (package
1997 (name "minetest-data")
86081d9d 1998 (version "5.1.1")
7e51e5bc 1999 (source (origin
7217d337
EF
2000 (method git-fetch)
2001 (uri (git-reference
2002 (url "https://github.com/minetest/minetest_game")
2003 (commit version)))
2004 (file-name (git-file-name name version))
7e51e5bc
DT
2005 (sha256
2006 (base32
2557d366 2007 "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
7e51e5bc
DT
2008 (build-system trivial-build-system)
2009 (native-inputs
7217d337 2010 `(("source" ,source)))
7e51e5bc
DT
2011 (arguments
2012 `(#:modules ((guix build utils))
2013 #:builder (begin
2014 (use-modules (guix build utils))
7217d337 2015 (let ((install-dir (string-append
7e51e5bc 2016 %output
7217d337 2017 "/share/minetest/games/minetest_game")))
7e51e5bc 2018 (mkdir-p install-dir)
7217d337
EF
2019 (copy-recursively
2020 (assoc-ref %build-inputs "source")
2021 install-dir)
e3cfef22 2022 #t))))
7e51e5bc
DT
2023 (synopsis "Main game data for the Minetest game engine")
2024 (description
ab0c796b 2025 "Game data for the Minetest infinite-world block sandbox game.")
b7388a08 2026 (home-page "https://www.minetest.net/")
7e51e5bc 2027 (license license:lgpl2.1+)))
6e206ac7
DT
2028
2029(define-public minetest
2030 (package
2031 (name "minetest")
60e4f6e2 2032 (version "5.1.1")
6e206ac7 2033 (source (origin
e8d8b485
EF
2034 (method git-fetch)
2035 (uri (git-reference
1fbd7c7f
MB
2036 (url "https://github.com/minetest/minetest")
2037 (commit version)))
e8d8b485 2038 (file-name (git-file-name name version))
6e206ac7
DT
2039 (sha256
2040 (base32
60e4f6e2 2041 "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
7fc90282
EF
2042 (modules '((guix build utils)))
2043 (snippet
1fbd7c7f 2044 '(begin
d9580a26
MB
2045 ;; Delete bundled libraries.
2046 (delete-file-recursively "lib")
2047 #t))))
6e206ac7
DT
2048 (build-system cmake-build-system)
2049 (arguments
10903356 2050 '(#:configure-flags
1fbd7c7f
MB
2051 (list "-DRUN_IN_PLACE=0"
2052 "-DENABLE_FREETYPE=1"
2053 "-DENABLE_GETTEXT=1"
2054 "-DENABLE_SYSTEM_JSONCPP=TRUE"
2055 (string-append "-DIRRLICHT_INCLUDE_DIR="
2056 (assoc-ref %build-inputs "irrlicht")
2057 "/include/irrlicht")
2058 (string-append "-DCURL_INCLUDE_DIR="
2059 (assoc-ref %build-inputs "curl")
2060 "/include/curl"))
2061 #:tests? #f)) ;no check target
6e206ac7
DT
2062 (native-search-paths
2063 (list (search-path-specification
2064 (variable "MINETEST_SUBGAME_PATH")
af070955 2065 (files '("share/minetest/games")))))
6e206ac7
DT
2066 (native-inputs
2067 `(("pkg-config" ,pkg-config)))
2068 (inputs
7fc90282 2069 `(("curl" ,curl)
8c064d01 2070 ("freetype" ,freetype)
7fc90282
EF
2071 ("gettext" ,gettext-minimal)
2072 ("gmp" ,gmp)
2073 ("irrlicht" ,irrlicht)
2074 ("jsoncpp" ,jsoncpp)
c463dd47 2075 ("libjpeg" ,libjpeg)
7fc90282 2076 ("libpng" ,libpng)
6e206ac7
DT
2077 ("libogg" ,libogg)
2078 ("libvorbis" ,libvorbis)
7fc90282 2079 ("libxxf86vm" ,libxxf86vm)
6e206ac7 2080 ("luajit" ,luajit)
7fc90282 2081 ("mesa" ,mesa)
165dc8bd 2082 ("ncurses" ,ncurses)
7fc90282 2083 ("openal" ,openal)
6e206ac7
DT
2084 ("sqlite" ,sqlite)))
2085 (propagated-inputs
2086 `(("minetest-data" ,minetest-data)))
2087 (synopsis "Infinite-world block sandbox game")
2088 (description
2089 "Minetest is a sandbox construction game. Players can create and destroy
2090various types of blocks in a three-dimensional open world. This allows
2091forming structures in every possible creation, on multiplayer servers or as a
2092single player. Mods and texture packs allow players to personalize the game
2093in different ways.")
b7388a08 2094 (home-page "https://www.minetest.net/")
6e206ac7 2095 (license license:lgpl2.1+)))
77264d15
SB
2096
2097(define glkterm
2098 (package
2099 (name "glkterm")
2100 (version "1.0.4")
2101 (source
2102 (origin
2103 (method url-fetch)
2104 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
2105 "glk/implementations/glkterm-104.tar.gz"))
2106 (sha256
2107 (base32
2108 "0zlj9nlnkdlvgbiliczinirqygiq8ikg5hzh5vgcmnpg9pvnwga7"))))
2109 (build-system gnu-build-system)
2110 (propagated-inputs `(("ncurses" ,ncurses))) ; required by Make.glkterm
2111 (arguments
2112 '(#:tests? #f ; no check target
2113 #:phases
3f127147
TGR
2114 (modify-phases %standard-phases
2115 (replace 'install
2116 (lambda* (#:key outputs #:allow-other-keys)
2117 (let* ((out (assoc-ref outputs "out"))
2118 (inc (string-append out "/include"))
2119 (lib (string-append out "/lib")))
3f127147
TGR
2120 (for-each
2121 (lambda (file)
2122 (install-file file inc))
2123 '("glk.h" "glkstart.h" "gi_blorb.h" "gi_dispa.h" "Make.glkterm"))
3f127147
TGR
2124 (install-file "libglkterm.a" lib))
2125 #t))
2126 (delete 'configure)))) ; no configure script
77264d15
SB
2127 (home-page "http://www.eblong.com/zarf/glk/")
2128 (synopsis "Curses Implementation of the Glk API")
2129 (description
2130 "Glk defines a portable API for applications with text UIs. It was
2131primarily designed for interactive fiction, but it should be suitable for many
2132interactive text utilities, particularly those based on a command line.
2133This is an implementation of the Glk library which runs in a terminal window,
dbe7095b 2134using the @code{curses.h} library for screen control.")
77264d15
SB
2135 (license (license:fsf-free "file://README"))))
2136
2137(define-public glulxe
2138 (package
2139 (name "glulxe")
b2e3d59c 2140 (version "0.5.4")
77264d15
SB
2141 (source
2142 (origin
2143 (method url-fetch)
2144 (uri (string-append "http://www.ifarchive.org/if-archive/programming/"
b2e3d59c 2145 "glulx/interpreters/glulxe/glulxe-054.tar.gz"))
77264d15
SB
2146 (sha256
2147 (base32
b2e3d59c 2148 "0vipydg6ra90yf9b3ipgppwxyb2xdhcxwvirgjy0v20wlf56zhhz"))))
77264d15
SB
2149 (build-system gnu-build-system)
2150 (inputs `(("glk" ,glkterm)))
2151 (arguments
3f127147 2152 '(#:tests? #f ; no check target
77264d15
SB
2153 #:make-flags
2154 (let* ((glk (assoc-ref %build-inputs "glk")))
2155 (list (string-append "GLKINCLUDEDIR=" glk "/include")
2156 (string-append "GLKLIBDIR=" glk "/lib")
2157 (string-append "GLKMAKEFILE=" "Make.glkterm")))
2158 #:phases
3f127147
TGR
2159 (modify-phases %standard-phases
2160 (replace 'install
2161 (lambda* (#:key outputs #:allow-other-keys)
2162 (let* ((out (assoc-ref outputs "out"))
2163 (bin (string-append out "/bin")))
3f127147
TGR
2164 (install-file "glulxe" bin))
2165 #t))
2166 (delete 'configure)))) ; no configure script
bac03797 2167 (home-page "https://www.eblong.com/zarf/glulx/")
77264d15
SB
2168 (synopsis "Interpreter for Glulx VM")
2169 (description
2170 "Glulx is a 32-bit portable virtual machine intended for writing and
2171playing interactive fiction. It was designed by Andrew Plotkin to relieve
2172some of the restrictions in the venerable Z-machine format. This is the
92bdf777 2173reference interpreter, using the Glk API.")
b2e3d59c 2174 (license license:expat)))
72b703cd 2175
ce94fcfd
CB
2176(define-public fifechan
2177 (package
2178 (name "fifechan")
2179 (version "0.1.5")
2180 (source (origin
2181 (method url-fetch)
2182 (uri (string-append "https://codeload.github.com/fifengine/"
2183 "fifechan/tar.gz/" version))
2184 (file-name (string-append name "-" version ".tar.gz"))
2185 (sha256
2186 (base32
2187 "0wxs9vz5x9y8chghd8vp7vfk089lfb0qnzggi17zrqkrngs5zgi9"))))
2188 (build-system cmake-build-system)
2189 (inputs
2190 `(("sdl2" ,sdl2)
2191 ("sdl2-image" ,sdl2-image)
2192 ("mesa" ,mesa)))
2193 (arguments
2194 '(#:tests? #f)) ; No included tests
2195 (home-page "https://fifengine.github.io/fifechan/")
2196 (synopsis "Cross platform GUI library specifically for games")
2197 (description
2198 "Fifechan is a lightweight cross platform GUI library written in C++
2199specifically designed for games. It has a built in set of extendable GUI
2200Widgets, and allows users to create more.")
2201 (license license:lgpl2.1+)))
2202
2372a5f9
CB
2203(define-public fifengine
2204 (package
2205 (name "fifengine")
2206 (version "0.4.2")
2207 (source (origin
2208 (method url-fetch)
2209 (uri (string-append "https://codeload.github.com/fifengine/"
2210 "fifengine/tar.gz/" version))
2211 (file-name (string-append name "-" version ".tar.gz"))
2212 (sha256
2213 (base32
2214 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
2215 (build-system cmake-build-system)
2216 (arguments
2217 `(#:tests? #f ; TODO The test running fails to run some tests.
2218 #:modules ((srfi srfi-1)
2219 (guix build cmake-build-system)
2220 (guix build utils))
2221 #:configure-flags
2222 (list
2223 (string-append "-DOPENALSOFT_INCLUDE_DIR="
2224 (assoc-ref %build-inputs "openal")
2225 "/include/AL")
2226 (string-append "-DPYTHON_SITE_PACKAGES="
2227 (assoc-ref %outputs "out")
2228 "/lib/python3.7/site-packages"))
2229 #:phases
2230 (modify-phases %standard-phases
2231 (add-after 'unpack 'patch-run_tests.py
2232 (lambda _
2233 ;; Patch the test runner to exit with a status of 1 if any test
2234 ;; fails, to allow detecting failures.
2235 (substitute* "run_tests.py"
2236 (("ERROR\\. One or more tests failed!'\\)")
2237 "ERROR. One or more tests failed!')
2238\t\texit(1)"))
2239 #t))
2240 ;; Run tests after installation so that we can make use of the built
2241 ;; python modules.
2242 (delete 'check)
2243 (add-after 'install 'check
2244 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2245 (define python-version
2246 (let* ((version (last (string-split
2247 (assoc-ref inputs "python")
2248 #\-)))
2249 (components (string-split version #\.))
2250 (major+minor (take components 2)))
2251 (string-join major+minor ".")))
2252
2253 (when tests?
2254 ;; Set PYTHONPATH so that python finds the installed modules.
2255 (setenv "PYTHONPATH"
2256 (string-append (getenv "PYTHONPATH") ":"
2257 (assoc-ref outputs "out")
2258 "/lib/python"
2259 python-version
2260 "/site-packages"))
2261 ;; The tests require an X server.
2262 (system "Xvfb :1 &")
2263 (setenv "DISPLAY" ":1")
2264 (setenv "XDG_RUNTIME_DIR" "/tmp")
2265 ;; Run tests
2266 (chdir ,(string-append "../" name "-" version))
2267 (invoke "python3" "run_tests.py" "-a"))
2268 #t)))))
2269 (inputs
2270 `(("sdl2" ,sdl2)
2271 ("sdl2-image" ,sdl2-image)
2272 ("sdl2-ttf" ,sdl2-ttf)
2273 ("tinyxml" ,tinyxml)
2274 ("openal" ,openal)
2275 ("libogg" ,libogg)
2276 ("glew" ,glew)
2277 ("libvorbis" ,libvorbis)
2278 ("boost" ,boost)
2279 ("fifechan" ,fifechan)
2280 ("swig" ,swig)
2281 ("python" ,python)))
2282 (native-inputs
2283 `(("python" ,python)
2284 ("swig" ,swig)
2285 ("xvfb" ,xorg-server)))
2286 (propagated-inputs
2287 `(("python-future" ,python-future)))
2288 (home-page "https://www.fifengine.net/")
2289 (synopsis "FIFE is a multi-platform isometric game engine written in C++")
2290 (description
2291 "@acronym{FIFE, Flexible Isometric Free Engine} is a multi-platform
2292isometric game engine. Python bindings are included allowing users to create
2293games using Python as well as C++.")
2294 (license license:lgpl2.1+)))
2295
35481e8b
SB
2296(define-public fizmo
2297 (package
2298 (name "fizmo")
50e1d36c 2299 (version "0.8.5")
35481e8b
SB
2300 (source (origin
2301 (method url-fetch)
6ad191ba 2302 (uri (string-append "https://fizmo.spellbreaker.org/source/"
07178276 2303 "fizmo-" version ".tar.gz"))
35481e8b
SB
2304 (sha256
2305 (base32
50e1d36c 2306 "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w"))))
35481e8b
SB
2307 (build-system gnu-build-system)
2308 (arguments
2309 '(#:configure-flags
2310 (let ((libjpeg (assoc-ref %build-inputs "libjpeg"))
2311 (ncurses (assoc-ref %build-inputs "ncurses")))
50e1d36c 2312 (list (string-append "--with-jpeg-includedir=" libjpeg "/include")))))
35481e8b
SB
2313 (native-inputs
2314 `(("pkg-config" ,pkg-config)))
2315 (inputs
32199e9a
KK
2316 `(("freetype" ,freetype)
2317 ("libjpeg" ,libjpeg)
35481e8b
SB
2318 ("libpng" ,libpng)
2319 ("libsndfile" ,libsndfile)
2320 ("libxml2" ,libxml2)
2321 ("ncurses" ,ncurses)
32199e9a 2322 ("sdl2" ,sdl2)))
6ad191ba 2323 (home-page "https://fizmo.spellbreaker.org/")
35481e8b
SB
2324 (synopsis "Z-machine interpreter")
2325 (description
2326 "Fizmo is a console-based Z-machine interpreter. It is used to play
e881752c 2327interactive fiction, also known as text adventures, which were implemented
35481e8b
SB
2328either by Infocom or created using the Inform compiler.")
2329 (license license:bsd-3)))
2330
fc936b65
DH
2331(define-public gnugo
2332 (package
2333 (name "gnugo")
2334 (version "3.8")
2335 (source (origin
2336 (method url-fetch)
2337 (uri (string-append "mirror://gnu/gnugo/gnugo-" version
2338 ".tar.gz"))
2339 (sha256
2340 (base32
2341 "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
2342 (build-system gnu-build-system)
2343 (inputs `(("readline" ,readline)))
4cc78cb3 2344 (synopsis "Play the game of Go")
7c125ce0
AK
2345 (description
2346 "GNU Go is a program that plays the game of Go, in which players
2347place stones on a grid to form territory or capture other stones. While
2348it can be played directly from the terminal, rendered in ASCII characters,
2349it is also possible to play GNU Go with 3rd party graphical interfaces or
2350even in Emacs. It supports the standard game storage format (SGF, Smart
2351Game Format) and inter-process communication format (GMP, Go Modem
2352Protocol).")
6fd52309 2353 (home-page "https://www.gnu.org/software/gnugo/")
fc936b65 2354 (license license:gpl3+)))
67fa7a27
CAW
2355
2356(define-public extremetuxracer
2357 (package
2358 (name "extremetuxracer")
101460d4 2359 (version "0.7.5")
67fa7a27
CAW
2360 (source (origin
2361 (method url-fetch)
2362 (uri (string-append
966a543b 2363 "mirror://sourceforge/extremetuxracer/releases/"
67fa7a27
CAW
2364 version "/etr-" version ".tar.xz"))
2365 (sha256
2366 (base32
101460d4 2367 "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg"))))
67fa7a27
CAW
2368 (build-system gnu-build-system)
2369 (native-inputs
2370 `(("pkg-config" ,pkg-config)))
2371 (inputs
b8a35cce
RW
2372 `(("glu" ,glu)
2373 ("sfml" ,sfml)))
5bc0ac96
TGR
2374 (synopsis "High-speed arctic racing game based on Tux Racer")
2375 ;; Snarfed straight from Debian.
67fa7a27
CAW
2376 (description "Extreme Tux Racer, or etracer as it is called for short, is
2377a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the
2378game is to slide down a snow- and ice-covered mountain as quickly as possible,
2379avoiding the trees and rocks that will slow you down.
2380
2381Collect herrings and other goodies while sliding down the hill, but avoid fish
2382bones.
2383
2384This game is based on the GPL version of the famous game TuxRacer.")
3b3b60d0 2385 (home-page "https://sourceforge.net/projects/extremetuxracer/")
67fa7a27 2386 (license license:gpl2+)))
7a4d0509 2387
1a0633e7
RW
2388(define-public supertuxkart
2389 (package
2390 (name "supertuxkart")
3747ecb1 2391 (version "1.1")
1a0633e7
RW
2392 (source
2393 (origin
2394 (method url-fetch)
2395 (uri (string-append "mirror://sourceforge/supertuxkart/SuperTuxKart/"
2396 version "/supertuxkart-" version "-src.tar.xz"))
2397 (sha256
2398 (base32
3747ecb1 2399 "1s0ai07g3sswck9mr0142989mrgzzq1njc1qxk5als5b245jpc79"))
1a0633e7
RW
2400 (modules '((guix build utils)))
2401 (snippet
2402 ;; Delete bundled library sources
2403 '(begin
56a48582
PL
2404 ;; Supertuxkart uses modified versions of the Irrlicht engine
2405 ;; and the bullet library. The developers gave an explanation
2406 ;; here: http://forum.freegamedev.net/viewtopic.php?f=17&t=3906
3747ecb1 2407 ;; FIXME: try to unbundle angelscript and libraqm
1a0633e7
RW
2408 (for-each delete-file-recursively
2409 '("lib/zlib"
2410 "lib/libpng"
2411 "lib/jpeglib"
2412 "lib/glew"
56a48582
PL
2413 "lib/wiiuse"
2414 "lib/enet"))
1a0633e7
RW
2415 #t))))
2416 (build-system cmake-build-system)
2417 (arguments
2418 `(#:tests? #f ; no check target
2419 #:configure-flags
2420 (list "-DUSE_WIIUSE=0"
56a48582 2421 ;; Do not use the bundled zlib, glew and enet.
1a0633e7 2422 "-DNO_IRR_COMPILE_WITH_ZLIB_=TRUE"
56a48582
PL
2423 "-DUSE_SYSTEM_GLEW=TRUE"
2424 "-DUSE_SYSTEM_ENET=TRUE"
3747ecb1
KK
2425 ;; In order to use the system ENet library, IPv6 support (added in
2426 ;; SuperTuxKart version 1.1) must be disabled.
2427 "-DUSE_IPV6=FALSE"
17c3f776
RH
2428 ;; FIXME: needs libopenglrecorder
2429 "-DBUILD_RECORDER=0"
1a0633e7 2430 ;; Irrlicht returns an integer instead of a boolean
56a48582 2431 "-DCMAKE_C_FLAGS=-fpermissive")))
1a0633e7
RW
2432 (inputs
2433 `(("glew" ,glew)
2434 ("zlib" ,zlib)
2435 ("openal" ,openal)
2436 ("libvorbis" ,libvorbis)
2437 ("freetype" ,freetype)
2438 ("fribidi" ,fribidi)
3747ecb1 2439 ("harfbuzz" ,harfbuzz)
1a0633e7
RW
2440 ("mesa" ,mesa)
2441 ("libx11" ,libx11)
2442 ("libxrandr" ,libxrandr)
2443 ("curl" ,curl)
2444 ;; The following input is needed to build the bundled and modified
2445 ;; version of irrlicht.
60af1822 2446 ("libjpeg" ,libjpeg)
56a48582
PL
2447 ("openssl" ,openssl)
2448 ("enet" ,enet)))
1a0633e7
RW
2449 (native-inputs
2450 `(("pkg-config" ,pkg-config)))
3747ecb1 2451 (home-page "https://supertuxkart.net/Main_Page")
1a0633e7
RW
2452 (synopsis "3D kart racing game")
2453 (description "SuperTuxKart is a 3D kart racing game, with a focus on
2454having fun over realism. You can play with up to 4 friends on one PC, racing
2455against each other or just trying to beat the computer; single-player mode is
2456also available.")
2457 (license license:gpl3+)))
2458
a1c1943b
CB
2459(define-public unknown-horizons
2460 (package
2461 (name "unknown-horizons")
2462 (version "2019.1")
2463 (source (origin
2464 (method url-fetch)
2465 (uri (string-append "https://codeload.github.com/unknown-horizons/"
2466 "unknown-horizons/tar.gz/" version))
2467 (file-name (string-append name "-" version ".tar.gz"))
2468 (sha256
2469 (base32
2470 "1n747p7h0qp48szgp262swg0xh8kxy1bw8ag1qczs4i26hyzs5x4"))))
2471 (build-system python-build-system)
2472 (arguments
2473 '(#:phases
2474 (modify-phases %standard-phases
2475 (add-before 'build 'set-HOME
2476 (lambda _
2477 (setenv "HOME" "/tmp")))
2478 (add-after 'build 'build-extra
2479 (lambda _
2480 (invoke "python3" "./setup.py" "build_i18n")
2481 (invoke "python3" "horizons/engine/generate_atlases.py" "2048")
2482 #t))
2483 (add-after 'install 'patch
2484 (lambda* (#:key outputs #:allow-other-keys)
2485 (let ((out (assoc-ref outputs "out")))
2486 (substitute* (string-append out "/bin/unknown-horizons")
2487 (("os\\.chdir\\(get\\_content\\_dir\\_parent_path\\(\\)\\)")
2488 (string-append "os.chdir(\""
2489 (assoc-ref outputs "out")
2490 "/share/unknown-horizons\")"))))
2491 #t))
2492 ;; TODO: Run GUI tests as well
2493 (replace 'check
2494 (lambda _
2495 (substitute* "horizons/constants.py"
2496 (("IS_DEV_VERSION = False")
2497 "IS_DEV_VERSION = True"))
2498 (invoke "pytest" "tests")
2499 (substitute* "horizons/constants.py"
2500 (("IS_DEV_VERSION = True")
2501 "IS_DEV_VERSION = False"))
2502 #t)))))
2503 (inputs
2504 `(("fifengine" ,fifengine)
2505 ("python:tk" ,python "tk")
2506 ("python-pillow" ,python-pillow)
2507 ("python-pyyaml" ,python-pyyaml)))
2508 (native-inputs
2509 `(("intltool" ,intltool)
2510
2511 ;; Required for tests
2512 ("python-greenlet" ,python-greenlet)
2513 ("python-polib" ,python-polib)
2514 ("python-pytest" ,python-pytest)
2515 ("python-pytest-mock" ,python-pytest-mock)))
2516 (home-page "http://unknown-horizons.org/")
2517 (synopsis "Isometric realtime strategy, economy and city building simulation")
2518 (description
2519 "Unknown Horizons is a 2D realtime strategy simulation with an emphasis
2520on economy and city building. Expand your small settlement to a strong and
2521wealthy colony, collect taxes and supply your inhabitants with valuable
2522goods. Increase your power with a well balanced economy and with strategic
2523trade and diplomacy.")
2524 (license (list
2525 license:gpl2+ ; Covers code
2526 license:expat ; tests/dummy.py, ext/polib.py
2527 license:cc-by-sa3.0 ; Covers some media content
2528 license:cc-by3.0 ; Covers some media content
2529 license:bsd-3)))) ; horizons/ext/speaklater.py
2530
7a4d0509
SB
2531(define-public gnujump
2532 (package
2533 (name "gnujump")
2534 (version "1.0.8")
2535 (source (origin
2536 (method url-fetch)
2537 (uri (string-append "mirror://gnu/gnujump/gnujump-"
2538 version ".tar.gz"))
2539 (sha256
2540 (base32
2541 "05syy9mzbyqcfnm0hrswlmhwlwx54f0l6zhcaq8c1c0f8dgzxhqk"))))
2542 (build-system gnu-build-system)
2543 (arguments
2544 '(#:phases
2545 (modify-phases %standard-phases
2546 (add-before
2547 'configure 'link-libm
18a613fb
EF
2548 (lambda _ (setenv "LIBS" "-lm")))
2549 (add-after 'install 'create-desktop-entry
2550 (lambda* (#:key outputs #:allow-other-keys)
2551 (let* ((out (assoc-ref outputs "out"))
2552 (apps (string-append out "/share/applications")))
2553 (mkdir-p apps)
2554 (with-output-to-file
2555 (string-append apps "/gnujump.desktop")
2556 (lambda _
2557 (format #t
2558 "[Desktop Entry]~@
2559 Name=GNUjump~@
2560 Comment=Jump up the tower to survive~@
2561 Exec=~a/bin/gnujump~@
2562 Terminal=false~@
2563 Type=Application~@
2564 Categories=Game;ArcadeGame~%"
2565 out)))))))))
7a4d0509
SB
2566 (inputs
2567 `(("glu" ,glu)
b3546174 2568 ("mesa" ,mesa)
7a4d0509
SB
2569 ("sdl" ,sdl)
2570 ("sdl-image" ,sdl-image)
2571 ("sdl-mixer" ,sdl-mixer)))
2572 (home-page "http://gnujump.es.gnu.org/")
2573 (synopsis
2574 "Game of jumping to the next floor, trying not to fall")
2575 (description
2576 "GNUjump is a simple, yet addictive game in which you must jump from
2577platform to platform to avoid falling, while the platforms drop at faster rates
2578the higher you go. The game features multiplayer, unlimited FPS, smooth floor
2579falling, themeable graphics and sounds, and replays.")
2580 (license license:gpl3+)))
159093a7 2581
649220ad 2582(define-public wesnoth
159093a7 2583 (package
649220ad 2584 (name "wesnoth")
03f0b5e2 2585 (version "1.14.9")
159093a7
SB
2586 (source (origin
2587 (method url-fetch)
de67e922 2588 (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
0c2e055e
TGR
2589 (version-major+minor version)
2590 "/wesnoth-" version "/"
2591 "wesnoth-" version ".tar.bz2"))
159093a7
SB
2592 (sha256
2593 (base32
03f0b5e2 2594 "1mhdrlflxxyknf54lwdbvs7fazlc1scf7z6vxxa3j746fks533ga"))))
159093a7
SB
2595 (build-system cmake-build-system)
2596 (arguments
03f0b5e2
MB
2597 `(#:tests? #f ;no check target
2598 #:phases (modify-phases %standard-phases
2599 (add-before 'configure 'treat-boost-as-system-header
2600 (lambda* (#:key inputs #:allow-other-keys)
2601 (let ((boost (assoc-ref inputs "boost")))
2602 ;; Ensure Boost is treated as "system headers" to
2603 ;; pacify compiler warnings induced by Boost headers.
2604 (for-each (lambda (variable)
2605 (setenv variable
2606 (string-append boost "/include:"
2607 (or (getenv variable)
2608 ""))))
2609 '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
2610 #t))))))
159093a7 2611 (native-inputs
b94a6ca0 2612 `(("gettext" ,gettext-minimal)
159093a7
SB
2613 ("pkg-config" ,pkg-config)))
2614 (inputs
2615 `(("boost" ,boost)
2616 ("dbus" ,dbus)
2617 ("fribidi" ,fribidi)
2618 ("libvorbis" ,libvorbis)
e554d43d 2619 ("openssl" ,openssl)
159093a7 2620 ("pango" ,pango)
e554d43d
AI
2621 ("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
2622 (home-page "https://www.wesnoth.org/")
159093a7
SB
2623 (synopsis "Turn-based strategy game")
2624 (description
2625 "The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
2626with several single player campaigns, and multiplayer games (both networked and
2627local).
2628
2629Battle for control on a range of maps, using variety of units which have
2630advantages and disadvantages against different types of attacks. Units gain
2631experience and advance levels, and are carried over from one scenario to the
2632next campaign.")
2633 (license license:gpl2+)))
c449a076 2634
649220ad
NG
2635(define-public the-battle-for-wesnoth
2636 (deprecated-package "the-battle-for-wesnoth" wesnoth))
375cb941 2637
649220ad 2638(define-public wesnoth-server
75abd864 2639 (package
649220ad
NG
2640 (inherit wesnoth)
2641 (name "wesnoth-server")
75abd864
AI
2642 (inputs
2643 `(("boost" ,boost)
e554d43d
AI
2644 ("icu4c" ,icu4c)
2645 ("openssl" ,openssl)
2646 ("sdl2" ,sdl2)))
75abd864 2647 (arguments
e554d43d
AI
2648 `(#:configure-flags '("-DENABLE_GAME=OFF")
2649 ,@(package-arguments wesnoth)))
75abd864
AI
2650 (synopsis "Dedicated @emph{Battle for Wesnoth} server")
2651 (description "This package contains a dedicated server for @emph{The
2652Battle for Wesnoth}.")))
2653
649220ad
NG
2654(define-public the-battle-for-wesnoth-server
2655 (deprecated-package "the-battle-for-wesnoth-server" wesnoth-server))
ecdb1348 2656
c449a076
EB
2657(define-public gamine
2658 (package
2659 (name "gamine")
87683add 2660 (version "1.6")
c449a076
EB
2661 (source (origin
2662 (method url-fetch)
2663 (uri (string-append "mirror://sourceforge/gamine-game/"
2664 "gamine-" version ".tar.gz"))
2665 (sha256
2666 (base32
87683add 2667 "1sc6f4445ciigd6yw0ri92746k4hk6ps0bvj9fm1gbp3c3fslk5n"))))
c449a076
EB
2668 (build-system gnu-build-system)
2669 (native-inputs
2670 `(("pkg-config" ,pkg-config)
2671 ("intltool" ,intltool)))
2672 (inputs
2673 `(("gstreamer" ,gstreamer)
87683add
TGR
2674 ("gst-plugins-base" ,gst-plugins-base) ; playbin plugin
2675 ("gst-plugins-good" ,gst-plugins-good) ; for wav playback
c449a076
EB
2676 ("gtk+" ,gtk+)))
2677 (arguments
2678 `(#:tests? #f
2679 #:make-flags
2680 (let ((out (assoc-ref %outputs "out")))
2681 (list (string-append "PREFIX=" out)
2682 (string-append "SYSCONFDIR=" out "/etc")))
2683 #:phases
2684 (modify-phases %standard-phases
2685 (delete 'configure)
2686 (add-after
2687 'install 'wrap-gamine
2688 (lambda* (#:key outputs #:allow-other-keys)
2689 (let ((out (assoc-ref outputs "out"))
2690 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2691 (wrap-program (string-append out "/bin/gamine")
2692 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
2693 #t)))))
2694 (home-page "http://gamine-game.sourceforge.net/")
2695 (synopsis "Mouse and keyboard discovery for children")
2696 (description
2697 "Gamine is a game designed for young children who are learning to use the
2698mouse and keyboard. The child uses the mouse to draw colored dots and lines
2699on the screen and keyboard to display letters.")
2700 ;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
2701 (license license:gpl3)))
2702
2e2ed3cb
AK
2703(define-public manaplus
2704 (package
2705 (name "manaplus")
2b744c21 2706 (version "1.9.3.23")
2e2ed3cb
AK
2707 (source (origin
2708 (method url-fetch)
2709 (uri (string-append
074dd909 2710 "https://repo.manaplus.org/manaplus/download/"
2e2ed3cb
AK
2711 version "/manaplus-" version ".tar.xz"))
2712 (sha256
2713 (base32
2b744c21 2714 "1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
2e2ed3cb
AK
2715 (build-system gnu-build-system)
2716 (arguments
2717 '(#:configure-flags
2718 (list (string-append "CPPFLAGS=-I"
2719 (assoc-ref %build-inputs "sdl-union")
2720 "/include/SDL"))))
2721 (native-inputs
2722 `(("pkg-config" ,pkg-config)))
2723 (inputs
2724 `(("glu" ,glu)
2725 ("curl" ,curl)
2726 ("libxml2" ,libxml2)
2727 ("mesa" ,mesa)
2e2ed3cb 2728 ("sdl-union" ,(sdl-union))))
074dd909 2729 (home-page "https://manaplus.org")
2e2ed3cb
AK
2730 (synopsis "Client for 'The Mana World' and similar games")
2731 (description
2732 "ManaPlus is a 2D MMORPG client for game servers. It is the only
2733fully supported client for @uref{http://www.themanaworld.org, The mana
2734world}, @uref{http://evolonline.org, Evol Online} and
2735@uref{http://landoffire.org, Land of fire}.")
2736 ;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
2737 ;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
2738 ;; The rest is under GPL2+.
2739 (license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
03d521f9 2740
e9687748
AS
2741(define openttd-engine
2742 (package
2743 (name "openttd-engine")
532dba49 2744 (version "1.9.3")
e9687748
AS
2745 (source
2746 (origin (method url-fetch)
532dba49 2747 (uri (string-append "https://proxy.binaries.openttd.org/openttd-releases/"
e9687748
AS
2748 version "/openttd-" version "-source.tar.xz"))
2749 (sha256
2750 (base32
532dba49 2751 "0ijq72kgx997ggw40i5f4a3nf7y2g72z37l47i18yjvgbdzy320r"))
e9687748
AS
2752 (modules '((guix build utils)))
2753 (snippet
2754 ;; The DOS port contains proprietary software.
6cbee49d
MW
2755 '(begin
2756 (delete-file-recursively "os/dos")
2757 #t))))
e9687748
AS
2758 (build-system gnu-build-system)
2759 (arguments
2760 `(#:tests? #f ; no "check" target
2761 #:phases
2762 (modify-phases %standard-phases
2763 ;; The build process fails if the configure script is passed the
2764 ;; option "--enable-fast-install".
2765 (replace 'configure
857b2f53
AI
2766 (lambda* (#:key inputs outputs (configure-flags '())
2767 #:allow-other-keys)
e9687748
AS
2768 (let ((out (assoc-ref outputs "out"))
2769 (lzo (assoc-ref inputs "lzo")))
369a91d9
RW
2770 (apply invoke "./configure"
2771 (string-append "--prefix=" out)
2772 ;; Provide the "lzo" path.
2773 (string-append "--with-liblzo2="
2774 lzo "/lib/liblzo2.a")
2775 ;; Put the binary in 'bin' instead of 'games'.
2776 "--binary-dir=bin"
2777 configure-flags)))))))
e9687748
AS
2778 (native-inputs `(("pkg-config" ,pkg-config)))
2779 (inputs
3a48d055 2780 `(("allegro" ,allegro)
e9687748
AS
2781 ("fontconfig" ,fontconfig)
2782 ("freetype" ,freetype)
2783 ("icu4c" ,icu4c)
2784 ("libpng" ,libpng)
2785 ("lzo" ,lzo)
2786 ("sdl" ,sdl)
2787 ("xz" ,xz)
2788 ("zlib" ,zlib)))
4cb0b5bf 2789 (synopsis "Transportation economics simulator game")
e9687748
AS
2790 (description "OpenTTD is a game in which you transport goods and
2791passengers by land, water and air. It is a re-implementation of Transport
2792Tycoon Deluxe with many enhancements including multiplayer mode,
2793internationalization support, conditional orders and the ability to clone,
b81b8943
KK
2794autoreplace and autoupdate vehicles. This package only includes the game
2795engine. When you start it you will be prompted to download a graphics set.")
532dba49 2796 (home-page "https://www.openttd.org/")
e9687748
AS
2797 ;; This package is GPLv2, except for a few files located in
2798 ;; "src/3rdparty/" which are under the 3-clause BSD, LGPLv2.1+ and Zlib
2799 ;; licenses. In addition, this software contains an in-game downloader
2800 ;; from which the user may find non-functional data licensed under
2801 ;; different terms.
2802 (license (list license:bsd-3 license:gpl2 license:lgpl2.1+ license:zlib))))
2803
4df9495e
KK
2804(define openttd-opengfx
2805 (package
2806 (name "openttd-opengfx")
894fbb33 2807 (version "0.5.5")
4df9495e
KK
2808 (source
2809 (origin
2810 (method url-fetch)
2811 (uri (string-append "http://binaries.openttd.org/extra/opengfx/"
2812 version "/opengfx-" version "-source.tar.xz"))
2813 (sha256
2814 (base32
894fbb33 2815 "009fa1bdin1bk0ynzhzc30hzkmmwzmwkk6j591ax3f6w75l28n49"))))
4df9495e
KK
2816 (build-system gnu-build-system)
2817 (arguments
2818 '(#:make-flags (list "CC=gcc"
2819 (string-append "INSTALL_DIR="
2820 (assoc-ref %outputs "out")
857b2f53 2821 "/share/games/openttd/baseset/opengfx"))
4df9495e
KK
2822 #:phases
2823 (modify-phases %standard-phases
2824 (replace 'configure
2825 (lambda _
2826 ;; Make sure HOME is writable for GIMP.
2827 (setenv "HOME" (getcwd))
2828
2829 ;; Redirect stdout, not stderr, to /dev/null. This prevents
2830 ;; dos2unix from receiving its version information as a flag.
2831 (substitute* "Makefile"
2832 (("\\$\\(UNIX2DOS\\) -q --version 2>/dev/null")
2833 "$(UNIX2DOS) -q --version 1>/dev/null")))))
2834 ;; The check phase for this package only checks the md5sums of the built
2835 ;; GRF files against the md5sums of the release versions. Because we use
2836 ;; different software versions than upstream does, some of the md5sums
2837 ;; are different. However, the package is still reproducible, it's safe
2838 ;; to disable this test.
c0959cc9
AI
2839 #:tests? #f
2840 #:parallel-build? #f))
4df9495e
KK
2841 (native-inputs `(("dos2unix" ,dos2unix)
2842 ("gimp" ,gimp)
2843 ("grfcodec" ,grfcodec)
2844 ("nml" ,nml)
2845 ("python" ,python-2)))
2846 (home-page "http://dev.openttdcoop.org/projects/opengfx")
2847 (synopsis "Base graphics set for OpenTTD")
2848 (description
2849 "The OpenGFX projects is an implementation of the OpenTTD base grahics
2850set that aims to ensure the best possible out-of-the-box experience.
2851
2852OpenGFX provides you with...
2853@enumerate
2854@item All graphics you need to enjoy OpenTTD.
2855@item Uniquely drawn rail vehicles for every climate.
2856@item Completely snow-aware rivers.
2857@item Different river and sea water.
2858@item Snow-aware buoys.
2859@end enumerate")
2860 (license license:gpl2)))
2861
c17b0790
AI
2862(define openttd-opensfx
2863 (package
2864 (name "openttd-opensfx")
2865 (version "0.2.3")
2866 (source
2867 (origin
2868 (method url-fetch)
2869 (uri (string-append
2870 "https://binaries.openttd.org/extra/opensfx/"
2871 version "/opensfx-" version "-source.tar.gz"))
2872 (sha256
2873 (base32
2874 "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5"))))
2875 (build-system gnu-build-system)
2876 (native-inputs
2877 `(("catcodec" ,catcodec)
61506fe5 2878 ("python" ,python-2)))
c17b0790
AI
2879 (arguments
2880 `(#:make-flags
2881 (list (string-append "INSTALL_DIR=" %output
2882 "/share/games/openttd/baseset/opensfx"))
2883 #:phases
2884 (modify-phases %standard-phases
2885 (add-after 'unpack 'make-reproducible
2886 (lambda _
2887 ;; Remove the time dependency of the installed tarball by setting
2888 ;; the modification times if its members to 0.
2889 (substitute* "scripts/Makefile.def"
2890 (("-cf") " --mtime=@0 -cf"))
2891 #t))
2892 (delete 'configure))))
2893 (home-page "http://dev.openttdcoop.org/projects/opensfx")
2894 (synopsis "Base sounds for OpenTTD")
2895 (description "OpenSFX is a set of free base sounds for OpenTTD which make
2896it possible to play OpenTTD without requiring the proprietary sound files from
2897the original Transport Tycoon Deluxe.")
2898 (license license:cc-sampling-plus-1.0)))
2899
823e1218
AI
2900(define openttd-openmsx
2901 (package
2902 (name "openttd-openmsx")
2903 (version "0.3.1")
2904 (source
2905 (origin
2906 (method url-fetch)
2907 (uri (string-append
2908 "https://binaries.openttd.org/extra/openmsx/"
2909 version "/openmsx-" version "-source.tar.gz"))
2910 (sha256
2911 (base32
2912 "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c"))))
2913 (build-system gnu-build-system)
2914 (native-inputs
61506fe5 2915 `(("python" ,python-2)))
823e1218
AI
2916 (arguments
2917 `(#:make-flags
2918 (list (string-append "INSTALL_DIR=" %output
2919 "/share/games/openttd/baseset"))
2920 #:phases
2921 (modify-phases %standard-phases
2922 (delete 'configure)
2923 (add-after 'install 'post-install
2924 ;; Rename openmsx-version to openmsx
2925 (lambda* (#:key outputs #:allow-other-keys)
2926 (let ((install-directory (string-append (assoc-ref outputs "out")
2927 "/share/games/openttd/baseset")))
2928 (rename-file (string-append install-directory "/openmsx-" ,version)
2929 (string-append install-directory "/openmsx"))
2930 #t))))))
2931 (home-page "http://dev.openttdcoop.org/projects/openmsx")
2932 (synopsis "Music set for OpenTTD")
2933 (description "OpenMSX is a music set for OpenTTD which makes it possible
2934to play OpenTTD without requiring the proprietary music from the original
2935Transport Tycoon Deluxe.")
2936 (license license:gpl2)))
2937
e9687748
AS
2938(define-public openttd
2939 (package
2940 (inherit openttd-engine)
ca508f1c
KK
2941 (name "openttd")
2942 (arguments
857b2f53
AI
2943 `(#:configure-flags
2944 (list (string-append "--with-midi=" (assoc-ref %build-inputs "timidity++")
2945 "/bin/timidity"))
2946 ,@(substitute-keyword-arguments (package-arguments openttd-engine)
2947 ((#:phases phases)
2948 `(modify-phases ,phases
2949 (add-after 'install 'install-data
2950 (lambda* (#:key inputs outputs #:allow-other-keys)
2951 (for-each
2952 (lambda (input)
2953 (copy-recursively (assoc-ref inputs input)
2954 (assoc-ref outputs "out")))
2955 (list "opengfx" "openmsx" "opensfx"))
2956 #t)))))))
2957 (inputs
2958 `(("timidity++" ,timidity++)
2959 ,@(package-inputs openttd-engine)))
ca508f1c
KK
2960 (native-inputs
2961 `(("opengfx" ,openttd-opengfx)
857b2f53
AI
2962 ("openmsx" ,openttd-openmsx)
2963 ("opensfx" ,openttd-opensfx)
ca508f1c 2964 ,@(package-native-inputs openttd-engine)))))
e9687748 2965
0c6ade0b
RH
2966(define openrct2-title-sequences
2967 (package
2968 (name "openrct2-title-sequences")
2969 (version "0.1.2")
2970 (source
2971 (origin
2972 (method url-fetch)
2973 (uri (string-append "https://github.com/OpenRCT2/title-sequences/releases/download/v"
2974 version "/title-sequence-v" version ".zip"))
2975 (file-name (string-append name "-" version ".zip"))
2976 (sha256
2977 (base32
2978 "0qbyxrsw8hlgaq0r5d7lx7an3idy4qbfv7yiw9byhldk763n9cfw"))))
2979 (build-system trivial-build-system)
2980 (native-inputs
2981 `(("bash" ,bash)
2982 ("coreutils" ,coreutils)
2983 ("unzip" ,unzip)))
2984 (arguments
2985 `(#:modules ((guix build utils))
2986 #:builder
2987 (begin
2988 (use-modules (guix build utils))
2989 (let* ((out (assoc-ref %outputs "out"))
2990 (openrct2-title-sequences (string-append out
2991 "/share/openrct2/title-sequences"))
2992 (source (assoc-ref %build-inputs "source"))
2993 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
2994 (copy-file source (string-append ,name "-" ,version ".zip"))
2995 (invoke unzip (string-append ,name "-" ,version ".zip"))
2996 (delete-file (string-append ,name "-" ,version ".zip"))
2997 (mkdir-p openrct2-title-sequences)
2998 (copy-recursively "."
2999 openrct2-title-sequences)
3000 #t))))
3001 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3002 (synopsis "Title sequences for OpenRCT2")
3003 (description
3004 "openrct2-title-sequences is a set of title sequences for OpenRCT2.")
3005 (license license:gpl3+)))
3006
3007(define openrct2-objects
3008 (package
3009 (name "openrct2-objects")
924e6993 3010 (version "1.0.9")
0c6ade0b
RH
3011 (source
3012 (origin
3013 (method url-fetch)
3014 (uri (string-append "https://github.com/OpenRCT2/objects/releases/download/v"
3015 version "/objects.zip"))
3016 (file-name (string-append name "-" version ".zip"))
3017 (sha256
924e6993 3018 (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
0c6ade0b
RH
3019 (build-system trivial-build-system)
3020 (native-inputs
3021 `(("bash" ,bash)
3022 ("coreutils" ,coreutils)
3023 ("unzip" ,unzip)))
3024 (arguments
3025 `(#:modules ((guix build utils))
3026 #:builder
3027 (begin
3028 (use-modules (guix build utils))
3029 (let* ((out (assoc-ref %outputs "out"))
3030 (openrct2-objects (string-append out
3031 "/share/openrct2/objects"))
3032 (source (assoc-ref %build-inputs "source"))
3033 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
3034 (copy-file source (string-append ,name "-" ,version ".zip"))
3035 (invoke unzip (string-append ,name "-" ,version ".zip"))
3036 (delete-file (string-append ,name "-" ,version ".zip"))
3037 (mkdir-p openrct2-objects)
3038 (copy-recursively "."
3039 openrct2-objects)
3040 #t))))
3041 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3042 (synopsis "Objects for OpenRCT2")
3043 (description
3044 "openrct2-objects is a set of objects for OpenRCT2.")
3045 (license license:gpl3+)))
3046
7aafb3b3
RH
3047(define-public openrct2
3048 (package
3049 (name "openrct2")
b6909d47 3050 (version "0.2.4")
7aafb3b3
RH
3051 (source
3052 (origin
2e5a0690
TGR
3053 (method git-fetch)
3054 (uri (git-reference
3055 (url "https://github.com/OpenRCT2/OpenRCT2.git")
3056 (commit (string-append "v" version))))
3057 (file-name (git-file-name name version))
7aafb3b3 3058 (sha256
b6909d47 3059 (base32 "1rlw3w20llg36sj3bk50g661qw766ng8ma3p42sdkj8br9dw800h"))))
7aafb3b3
RH
3060 (build-system cmake-build-system)
3061 (arguments
940c2c5c
RH
3062 `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
3063 "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
6457509c 3064 #:tests? #f ; tests require network access
7aafb3b3 3065 #:phases
6457509c
TGR
3066 (modify-phases %standard-phases
3067 (add-after 'unpack 'fix-usr-share-paths&add-data
3068 (lambda* (#:key inputs outputs #:allow-other-keys)
3069 (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
3070 (objects (assoc-ref inputs "openrct2-objects")))
3071 ;; Fix some references to /usr/share.
3072 (substitute* "src/openrct2/platform/Platform.Linux.cpp"
3073 (("/usr/share")
3074 (string-append (assoc-ref %outputs "out") "/share")))
3075 (copy-recursively
3076 (string-append titles "/share/openrct2/title-sequences")
3077 "data/title")
3078 (copy-recursively
3079 (string-append objects "/share/openrct2/objects")
3080 "data/object"))))
8c14f7f8 3081 (add-before 'configure 'get-rid-of-errors
6457509c
TGR
3082 (lambda _
3083 ;; Don't treat warnings as errors.
3084 (substitute* "CMakeLists.txt"
8c14f7f8
MB
3085 (("-Werror") ""))
3086 #t)))))
c695fb76
TGR
3087 (inputs `(("curl" ,curl)
3088 ("fontconfig" ,fontconfig)
3089 ("freetype" ,freetype)
0c6ade0b 3090 ("icu4c" ,icu4c)
c695fb76
TGR
3091 ("jansson" ,jansson)
3092 ("libpng" ,libpng)
3093 ("libzip" ,libzip)
3094 ("mesa" ,mesa)
0c6ade0b
RH
3095 ("openrct2-objects" ,openrct2-objects)
3096 ("openrct2-title-sequences" ,openrct2-title-sequences)
c695fb76
TGR
3097 ("openssl" ,openssl)
3098 ("sdl2" ,sdl2)
3099 ("speexdsp" ,speexdsp)
3100 ("zlib" ,zlib)))
7aafb3b3 3101 (native-inputs
63d4ef52 3102 `(("pkg-config" ,pkg-config)))
7aafb3b3
RH
3103 (home-page "https://github.com/OpenRCT2/OpenRCT2")
3104 (synopsis "Free software re-implementation of RollerCoaster Tycoon 2")
3105 (description "OpenRCT2 is a free software re-implementation of
3106RollerCoaster Tycoon 2 (RCT2). The gameplay revolves around building and
3107maintaining an amusement park containing attractions, shops and facilities.
3108
3109Note that this package does @emph{not} provide the game assets (sounds,
3110images, etc.)")
3111 ;; See <https://github.com/OpenRCT2/OpenRCT2/wiki/Required-RCT2-files>
3112 ;; regarding assets.
3113 (license license:gpl3+)))
3114
e3f755f4
EB
3115(define-public pinball
3116 (package
3117 (name "pinball")
3118 (version "0.3.1")
3119 (source
3120 (origin (method url-fetch)
3121 (uri (string-append "mirror://sourceforge/pinball/pinball/"
3122 "pinball-" version "/"
3123 "pinball-" version ".tar.gz"))
3124 (sha256
3125 (base32
3126 "1f2whlrfidwfh8lvr8cspcyirc6840r5d1ajm7x99qmngygrhixs"))
fc1adab1
AK
3127 (patches (search-patches "pinball-const-fix.patch"
3128 "pinball-cstddef.patch"
3129 "pinball-missing-separators.patch"
3130 "pinball-src-deps.patch"
3131 "pinball-system-ltdl.patch"))))
e3f755f4
EB
3132 (build-system gnu-build-system)
3133 (inputs
3134 `(("glu" ,glu)
3135 ("mesa" ,mesa)
3136 ("sdl" ,sdl)
3137 ("sdl-image" ,sdl-image)
3138 ("sdl-mixer" ,sdl-mixer)))
3139 (arguments
3140 '(#:configure-flags
3141 (list (string-append "CPPFLAGS=-I"
3142 (assoc-ref %build-inputs "sdl-image")
3143 "/include/SDL -I"
3144 (assoc-ref %build-inputs "sdl-mixer")
3145 "/include/SDL"))))
3146 (home-page "http://pinball.sourceforge.net")
3147 (synopsis "Pinball simulator")
3148 (description "The Emilia Pinball Project is a pinball simulator. There
3149are only two levels to play with, but they are very addictive.")
3150 (license license:gpl2)))
7e2e1155
RF
3151
3152(define-public pioneers
3153 (package
3154 (name "pioneers")
59e8a57d 3155 (version "15.5")
7e2e1155
RF
3156 (source (origin
3157 (method url-fetch)
3158 (uri (string-append "http://downloads.sourceforge.net/pio/"
3159 "pioneers-" version ".tar.gz"))
3160 (sha256
3161 (base32
59e8a57d 3162 "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y"))))
7e2e1155 3163 (build-system gnu-build-system)
59e8a57d
TGR
3164 (inputs `(("avahi" ,avahi)
3165 ("gtk+" ,gtk+)
3166 ("librsvg" ,librsvg)))
7e2e1155 3167 (native-inputs `(("intltool" ,intltool)
59e8a57d
TGR
3168 ("itstool" ,itstool)
3169 ("libxml2" ,libxml2)
7e2e1155
RF
3170 ("pkg-config" ,pkg-config)))
3171 (synopsis "Board game inspired by The Settlers of Catan")
3172 (description "Pioneers is an emulation of the board game The Settlers of
3173Catan. It can be played on a local network, on the internet, and with AI
3174players.")
3175 (home-page "http://pio.sourceforge.net/")
8763fdf8 3176 (license license:gpl2+)))
fea1f275 3177
d7c4619b
AE
3178(define-public einstein
3179 (package
3180 (name "einstein")
3181 (version "2.0")
3182 (source (origin
3183 (method url-fetch)
d4cf5b01 3184 (uri (string-append "mirror://debian/pool/main/e/"
d7c4619b
AE
3185 "einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
3186 (sha256
3187 (base32
3188 "1hxrlv6n8py48j487i6wbb4n4vd55w0na69r7ccmmr9vmrsw5mlk"))
fc1adab1 3189 (patches (search-patches "einstein-build.patch"))))
d7c4619b
AE
3190 (build-system gnu-build-system)
3191 (inputs
3192 `(("freetype" ,freetype)
3193 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf)))
3194 ("zlib" ,zlib)))
3195 (native-inputs
3196 `(("font-dejavu" ,font-dejavu)))
3197 (arguments
3198 `(#:tests? #f ; no check target
3199 #:phases
3200 (modify-phases %standard-phases
3201 (replace 'configure
3202 (lambda* (#:key outputs inputs #:allow-other-keys)
3203 (let ((out (assoc-ref outputs "out"))
3204 (dejavu (string-append (assoc-ref inputs "font-dejavu")
3205 "/share/fonts/truetype/DejaVuSans.ttf")))
3206 (substitute* "Makefile"
3207 (("PREFIX=/usr/local") (string-append "PREFIX=" out)))
3208 ;; The patch above registers a free font for use by the binary,
3209 ;; but the font is copied during the compile phase into a
3210 ;; resources file, so we need to make the ttf file available.
3211 (symlink dejavu "res/DejaVuSans.ttf")
3212 #t))))))
3213 (synopsis "Logic puzzle game")
3214 (description "The goal of this logic game is to open all cards in a 6x6
3215grid, using a number of hints as to their relative position. The game idea
3216is attributed to Albert Einstein.")
3217 ;; The original home page has disappeared.
3218 (home-page (string-append "http://web.archive.org/web/20120521062745/"
3219 "http://games.flowix.com/en/index.html"))
3220 ;; License according to
3221 ;; http://web.archive.org/web/20150222180355/http://www.babichev.info/en/projects/index.html
3222 ;; The source code is a DFSG-sanitized tarball and does not contain any
3223 ;; license information.
3224 (license license:gpl3+)))
3225
d381962f 3226(define-public powwow
3227 (package
3228 (name "powwow")
90d37add 3229 (version "1.2.19")
d381962f 3230 (source (origin
3231 (method url-fetch)
3232 (uri (string-append
cc30a472 3233 "https://www.hoopajoo.net/static/projects/powwow-"
d381962f 3234 version ".tar.gz"))
d381962f 3235 (sha256
3236 (base32
90d37add 3237 "10rjl63hmf62qslyhzqrbw3i2zf09dgxv65avhj0iiz0m4pbc9wy"))))
d381962f 3238 (inputs
3239 `(("ncurses" ,ncurses)))
3240 (build-system gnu-build-system)
36aff81a 3241 (home-page "https://www.hoopajoo.net/projects/powwow.html")
d381962f 3242 (synopsis "MUD and telnet client")
3243 (description
3244 "POWWOW is a client software which can be used for telnet as well as for
3245@dfn{Multi-User Dungeon} (MUD). Additionally it can serve as a nice client for
3246the chat server psyced with the specific config located at
3247http://lavachat.symlynx.com/unix/")
3248 (license license:gpl2+)))
158f5734 3249
5ef819cc 3250(define-public red-eclipse
7fa9a685
KK
3251 (let ((release "2.0.0")
3252 (revision 0))
158f5734 3253 (package
5b8a8543 3254 (name "red-eclipse")
42abb842
AFN
3255 (version (if (zero? revision)
3256 release
3257 (string-append release "-"
3258 (number->string revision))))
bb7c071b
TGR
3259 (source
3260 (origin
3261 (method git-fetch)
3262 (uri (git-reference
7fa9a685
KK
3263 (url "https://github.com/redeclipse/base.git")
3264 (commit (string-append "v" release))
3265 (recursive? #t))) ; for game data
bb7c071b
TGR
3266 (file-name (git-file-name name version))
3267 (sha256
dc4469e9
KK
3268 (base32 "0sz0mqhwx8r9n4mk3qrxw420nlsm3y0n48gd0lazgd64lfqjh3ab"))
3269 (modules '((guix build utils)))
3270 (snippet
3271 ;; Remove proprietary libraries and other pre-compiled binaries.
3272 '(begin
3273 (delete-file-recursively "bin")
3274 #t))))
158f5734
KY
3275 (build-system gnu-build-system)
3276 (arguments
3277 `(#:tests? #f ; no check target
3278 #:make-flags (list "CC=gcc" "-Csrc"
3279 (string-append "INSTDIR="
42abb842
AFN
3280 (assoc-ref %outputs "out") "/bin")
3281 (string-append "prefix="
3282 (assoc-ref %outputs "out")))
158f5734
KY
3283 #:phases
3284 (modify-phases %standard-phases
7fa9a685 3285 (add-after 'unpack 'add-store-data-package-path-as-default
42abb842
AFN
3286 (lambda* (#:key outputs #:allow-other-keys)
3287 (substitute* "src/engine/server.cpp"
7fa9a685
KK
3288 (("data = \"data\"")
3289 (string-append "data = \""
42abb842 3290 (assoc-ref outputs "out")
7fa9a685 3291 "/share/redeclipse/data\"")))
42abb842 3292 #t))
158f5734
KY
3293 (delete 'configure) ; no configure script
3294 (add-after 'set-paths 'set-sdl-paths
3295 (lambda* (#:key inputs #:allow-other-keys)
3296 (setenv "CPATH"
3297 (string-append (assoc-ref inputs "sdl-union")
5ba856ab
MB
3298 "/include/SDL2:"
3299 (or (getenv "CPATH") "")))
158f5734
KY
3300 #t))
3301 (add-after 'install 'copy-data
3302 (lambda* (#:key outputs #:allow-other-keys)
3303 (let ((out (assoc-ref outputs "out")))
3304 (copy-recursively "config"
3305 (string-append out "/config"))
66c65aaf
KK
3306 (copy-file "doc/examples/servinit.cfg"
3307 (string-append out "/config/servinit.cfg"))
158f5734 3308 (copy-recursively "data"
42abb842
AFN
3309 (string-append out "/share/redeclipse/data"))
3310 (mkdir-p (string-append out "/lib/redeclipse"))
49c97ea4
KK
3311 (symlink (string-append out "/share/redeclipse/data")
3312 (string-append out "/lib/redeclipse/data")))
158f5734
KY
3313 #t))
3314 (add-after 'copy-data 'wrap-program
3315 (lambda* (#:key inputs outputs #:allow-other-keys)
3316 (let* ((out (assoc-ref outputs "out"))
3317 (bin (string-append out "/bin")))
3318 (with-directory-excursion bin
3319 (rename-file "redeclipse_linux"
3320 ".redeclipse_linux-real")
3321 (rename-file "redeclipse_server_linux"
3322 ".redeclipse_server_linux-real")
3323 (call-with-output-file "redeclipse_linux"
3324 (lambda (port)
3325 (format port "#!~a/bin/sh
3326# Run the thing from its home, otherwise it just bails out.
3327cd \"~a\"
3328exec -a \"$0\" ~a/.redeclipse_linux-real~%"
3329 (assoc-ref inputs "bash") ;implicit input
3330 (string-append out)
3331 (string-append bin))))
3332 (call-with-output-file "redeclipse_server_linux"
3333 (lambda (port)
3334 (format port "#!~a/bin/sh
3335# Run the thing from its home, otherwise it just bails out.
3336cd \"~a\"
3337exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
3338 (assoc-ref inputs "bash") ;implicit input
3339 (string-append out)
3340 (string-append bin))))
3341 (chmod "redeclipse_linux" #o555)
3342 (chmod "redeclipse_server_linux" #o555)))
3343 #t)))))
631b20f9
TGR
3344 (native-inputs
3345 `(("pkg-config" ,pkg-config)))
158f5734
KY
3346 (inputs
3347 `(("curl" ,curl)
7fa9a685 3348 ("freetype" ,freetype)
158f5734 3349 ("glu" ,glu)
14b865dc
KK
3350 ("sdl-union" ,(sdl-union (list sdl2
3351 sdl2-image
7fa9a685 3352 sdl2-mixer)))))
dc4469e9 3353 (home-page "https://redeclipse.net/")
158f5734
KY
3354 (synopsis "Arena shooter derived from the Cube 2 engine")
3355 (description
3356 "Red Eclipse is an arena shooter, created from the Cube2 engine.
3357Offering an innovative parkour system and distinct but all potent weapons,
3358Red Eclipse provides fast paced and accessible gameplay.")
3359 ;; The engine is under Zlib; data files are covered by the other
dc4469e9 3360 ;; licenses. More details at file:///doc/all-licenses.txt.
158f5734
KY
3361 (license (list license:expat
3362 license:zlib
dc4469e9 3363 license:cc-by-sa4.0
158f5734
KY
3364 license:cc-by-sa3.0
3365 license:cc-by3.0
dc4469e9
KK
3366 license:cc0
3367 license:public-domain
3368 license:silofl1.1)))))
bcd2982f 3369
0fb9a15b
LC
3370(define-public grue-hunter
3371 (package
3372 (name "grue-hunter")
3373 (version "1.0")
3374 (source (origin
3375 (method url-fetch)
c41b2ffb 3376 (uri (string-append "https://jxself.org/grue-hunter.tar.gz"))
0fb9a15b
LC
3377 (sha256
3378 (base32
3379 "1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
3380 (build-system trivial-build-system) ; no Makefile.PL
3381 (arguments `(#:modules ((guix build utils))
3382 #:builder
3383 (begin
3384 (use-modules (guix build utils))
3385 (use-modules (srfi srfi-1))
3386
3387 (let* ((tarball (assoc-ref %build-inputs "tarball"))
3388 (perl (string-append (assoc-ref %build-inputs
3389 "perl")
3390 "/bin"))
5edf2f05 3391 (gzip (string-append (assoc-ref %build-inputs
0fb9a15b 3392 "gzip")
5edf2f05 3393 "/bin/gzip"))
0fb9a15b
LC
3394 (tar (string-append (assoc-ref %build-inputs
3395 "tar")
3396 "/bin/tar"))
3397 (out (assoc-ref %outputs "out"))
3398 (bin (string-append out "/bin"))
6d57723a
TGR
3399 (doc (string-append out
3400 "/share/doc/grue-hunter")))
e3cfef22
MW
3401 (copy-file tarball "grue-hunter.tar.gz")
3402 (invoke gzip "-d" "grue-hunter.tar.gz")
3403 (invoke tar "xvf" "grue-hunter.tar")
0fb9a15b 3404
e3cfef22
MW
3405 (mkdir-p bin)
3406 (copy-file "grue-hunter/gh.pl"
3407 (string-append bin "/grue-hunter"))
3408 (patch-shebang (string-append bin "/grue-hunter")
3409 (list perl))
3410
3411 (install-file "grue-hunter/AGPLv3.txt" doc)
0fb9a15b 3412
e3cfef22 3413 #t))))
0fb9a15b
LC
3414 (inputs `(("perl" ,perl)
3415 ("tar" ,tar)
3416 ("gzip" ,gzip)
3417 ("tarball" ,source)))
3418 (home-page "http://jxself.org/grue-hunter.shtml")
3419 (synopsis "Text adventure game")
3420 (description
3421 "Grue Hunter is a text adventure game written in Perl. You must make
3422your way through an underground cave system in search of the Grue. Can you
3423capture it and get out alive?")
3424 (license license:agpl3+)))
f317aeb4 3425
ffed9eab
MB
3426(define-public lierolibre
3427 (package
3428 (name "lierolibre")
3429 (version "0.5")
3430 (source (origin
3431 (method url-fetch)
3432 (uri (string-append "https://launchpad.net/lierolibre/trunk/"
3433 version "/+download/lierolibre-"
3434 version ".tar.xz"))
3435 (sha256
3436 (base32
3437 "1cf1gvsn4qq190lrf9k5bpjnqwlcfw7pajvdnh7z5r4jqw0rsbl9"))
3438 (patches
3439 (search-patches "lierolibre-check-unaligned-access.patch"
3440 "lierolibre-try-building-other-arch.patch"
3441 "lierolibre-remove-arch-warning.patch"
3442 "lierolibre-newer-libconfig.patch"
3443 "lierolibre-is-free-software.patch"))
3444 (modules '((guix build utils)))
3445 (snippet
3446 '(begin
3447 ;; Delete pre-compiled files.
3448 (delete-file "data/LIERO.CHR")
3449 (delete-file "data/LIERO.SND")
3450 #t))))
3451 (build-system gnu-build-system)
3452 (native-inputs
3453 `(("imagemagick" ,imagemagick)
3454 ("pkg-config" ,pkg-config)
3455 ("util-linux" ,util-linux)
3456 ("sox" ,sox)))
3457 (inputs
3458 `(("boost" ,boost)
3459 ("libconfig" ,libconfig)
3460 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))
3461 ("zlib" ,zlib)))
3462 (home-page "https://gitlab.com/lierolibre/lierolibre")
3463 (synopsis "Old-school earthworm action game")
3464 (description
3465 "lierolibre is an earthworm action game where you fight another player
3466(or the computer) underground using a wide array of weapons.
3467
3468Features:
3469@itemize
3470@item 2 worms, 40 weapons, great playability, two game modes: Kill'em All
3471and Game of Tag, plus AI-players without true intelligence!
3472@item Dat nostalgia.
3473@item Extensions via a hidden F1 menu:
3474@itemize
3475@item Replays
3476@item Game controller support
3477@item Powerlevel palettes
3478@end itemize
3479@item Ability to write game variables to plain text files.
3480@item Ability to load game variables from both EXE and plain text files.
3481@item Scripts to extract and repack graphics, sounds and levels.
3482@end itemize
3483
3484To switch between different window sizes, use F6, F7 and F8, to switch to
3485fullscreen, use F5 or Alt+Enter.")
3486 ;; Code mainly BSD-2, some parts under Boost 1.0. All assets are WTFPL2.
3487 (license (list license:bsd-2 license:boost1.0 license:wtfpl2))))
3488
f317aeb4
KK
3489(define-public warzone2100
3490 (package
3491 (name "warzone2100")
f475b90c 3492 (version "3.2.3")
d8f4aefe
TGR
3493 (source
3494 (origin
3495 (method url-fetch)
3496 (uri (string-append "mirror://sourceforge/warzone2100/archives/"
3497 "unsupported/Warzone2100-"
3498 (version-major+minor version) "/" version
3499 "/warzone2100-" version ".tar.xz"))
3500 (sha256
3501 (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
f317aeb4
KK
3502 (build-system gnu-build-system)
3503 (arguments
f475b90c
KK
3504 `(#:configure-flags '("--with-distributor=Guix")
3505 #:phases
c5d17d50
RW
3506 (modify-phases %standard-phases
3507 (add-after 'unpack 'link-tests-with-qt
3508 (lambda _
3509 (substitute* "tests/Makefile.in"
3510 (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
3511 (string-append prefix "$(QT5_LIBS) ")))
3512 #t))
f475b90c 3513 (add-after 'unpack 'fix-ivis-linktest
77c729ba 3514 (lambda _
f475b90c
KK
3515 (substitute* "tests/ivis_linktest.cpp"
3516 (("iV_DrawTextRotated.*;")
3517 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
3518 "100, 100, 0.0f, font_regular);")))
c5d17d50 3519 #t)))))
f475b90c
KK
3520 (native-inputs `(("gettext" ,gettext-minimal)
3521 ("pkg-config" ,pkg-config)
f317aeb4
KK
3522 ("unzip" ,unzip)
3523 ("zip" ,zip)))
3524 (inputs `(("fontconfig" ,fontconfig)
3525 ("freetype" ,freetype)
3526 ("fribidi" ,fribidi)
3527 ("glew" ,glew)
f475b90c 3528 ("harfbuzz" ,harfbuzz)
f317aeb4
KK
3529 ("libtheora" ,libtheora)
3530 ("libvorbis" ,libvorbis)
3531 ("libxrandr" ,libxrandr)
3532 ("openal" ,openal)
3533 ("physfs" ,physfs)
77c729ba
RW
3534 ("qtbase" ,qtbase)
3535 ("qtscript" ,qtscript)
c5d17d50 3536 ("openssl" ,openssl)
c5d17d50 3537 ("sdl2" ,sdl2)))
f317aeb4
KK
3538 (home-page "http://wz2100.net")
3539 (synopsis "3D Real-time strategy and real-time tactics game")
3540 (description
3541 "Warzone 2100 offers campaign, multi-player, and single-player skirmish
3542modes. An extensive tech tree with over 400 different technologies, combined
3543with the unit design system, allows for a wide variety of possible units and
3544tactics.")
3545 ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
3546 (license (list license:bsd-3
3547 license:cc0
3548 license:cc-by-sa3.0
3549 license:expat
3550 license:gpl2+
3551 license:lgpl2.1+))))
4b670539 3552
649220ad 3553(define-public starfighter
4b670539 3554 (package
649220ad 3555 (name "starfighter")
8172ab2d 3556 (version "2.0.0.3")
4b670539 3557 (source (origin
8172ab2d
KK
3558 (method url-fetch)
3559 (uri (string-append
3560 "https://github.com/pr-starfighter/starfighter/releases"
3561 "/download/v" version "/starfighter-"
3562 (version-major+minor version) "-src.tar.gz"))
4b670539
SB
3563 (sha256
3564 (base32
8172ab2d 3565 "13vi5kh9ahws4f52421cbyw0jn7pmbnld358lqfmr6flql7ilj3b"))))
4b670539 3566 (build-system gnu-build-system)
4b670539 3567 (native-inputs
8172ab2d 3568 `(("pkg-config" ,pkg-config)))
4b670539 3569 (inputs
1fe84f5d
KK
3570 `(("pango" ,pango)
3571 ("sdl2" ,sdl2)
4b670539 3572 ("sdl2-image" ,sdl2-image)
1fe84f5d
KK
3573 ("sdl2-mixer" ,sdl2-mixer)
3574 ("sdl2-ttf" ,sdl2-ttf)))
3575 (home-page "https://pr-starfighter.github.io/")
4b670539
SB
3576 (synopsis "2D scrolling shooter game")
3577 (description
3578 "In the year 2579, the intergalactic weapons corporation, WEAPCO, has
3579dominated the galaxy. Guide Chris Bainfield and his friend Sid Wilson on
3580their quest to liberate the galaxy from the clutches of WEAPCO. Along the
3581way, you will encounter new foes, make new allies, and assist local rebels
3582in strikes against the evil corporation.")
3583 ;; gfx and music are under CC-BY 3.0, CC-BY-SA 3.0, CC0 or Public Domain.
3584 (license (list license:gpl3+
3585 license:cc-by3.0
3586 license:cc-by-sa3.0
3587 license:cc0
3588 license:public-domain))))
35e2e495 3589
649220ad
NG
3590(define-public project-starfighter
3591 (deprecated-package "project-starfighter" starfighter))
184f5c8d 3592
35e2e495
KK
3593(define-public chromium-bsu
3594 (package
3595 (name "chromium-bsu")
08722837 3596 (version "0.9.16.1")
35e2e495
KK
3597 (source (origin
3598 (method url-fetch)
e464bd60 3599 (uri (string-append "mirror://sourceforge/chromium-bsu"
35e2e495 3600 "/Chromium B.S.U. source code/"
e464bd60 3601 "chromium-bsu-" version ".tar.gz"))
35e2e495
KK
3602 (sha256
3603 (base32
08722837 3604 "0jk2w5b6s6nkzri585bbz16cif2fhqcnl5l1mq3rd98r9nil3hd1"))))
35e2e495 3605 (build-system gnu-build-system)
35e2e495 3606 (native-inputs `(("pkg-config" ,pkg-config)))
7c90d0f4 3607 (inputs `(("gettext" ,gettext-minimal)
08722837 3608 ("glu" ,glu)
35e2e495
KK
3609 ("quesoglc" ,quesoglc)
3610 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
3611 (home-page "http://chromium-bsu.sourceforge.net/")
3612 (synopsis "Fast-paced, arcade-style, top-scrolling space shooter")
3613 (description
3614 "In this game you are the captain of the cargo ship Chromium B.S.U. and
3615are responsible for delivering supplies to the troops on the front line. Your
3616ship has a small fleet of robotic fighters which you control from the relative
3617safety of the Chromium vessel.")
3618 ;; Clarified Artistic License for everything but sound, which is covered
3619 ;; by the Expat License.
3620 (license (list license:clarified-artistic license:expat))))
9b1ada4e
EB
3621
3622(define-public tuxpaint
3623 (package
3624 (name "tuxpaint")
c6aa2ee2 3625 (version "0.9.23") ;keep VER_DATE below in sync
9b1ada4e
EB
3626 (source
3627 (origin
3628 (method url-fetch)
3629 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint/"
3630 version "/tuxpaint-" version ".tar.gz"))
3631 (sha256
3632 (base32
c6aa2ee2 3633 "09k9pxi88r3dx6dyjwf9h85d4qpva4i29qz63dc558hg9v21k69l"))
9b1ada4e
EB
3634 (modules '((guix build utils)))
3635 (snippet
3636 '(begin
3637 ;; Remove win32 directory which contains binary dll's and the
3638 ;; deprecated visualc directory.
3639 (for-each delete-file-recursively '("win32" "visualc"))
3640 (substitute* "Makefile"
3641 ;; Do not rely on $(GPERF) being an absolute file name
3642 (("\\[ -x \\$\\(GPERF\\) \\]")
6cbee49d
MW
3643 "$(GPERF) --version >/dev/null 2>&1"))
3644 #t))
9b1ada4e
EB
3645 (patches (search-patches "tuxpaint-stamps-path.patch"))))
3646 (build-system gnu-build-system)
3647 (native-inputs
3648 `(("gperf" ,gperf)
3649 ("pkg-config" ,pkg-config)))
3650 (inputs
3651 `(("cairo" ,cairo)
3652 ("fribidi" ,fribidi)
b94a6ca0 3653 ("gettext" ,gettext-minimal)
9b1ada4e
EB
3654 ("libpng" ,libpng)
3655 ("librsvg" ,librsvg)
3656 ("libpaper" ,libpaper)
3657 ("netpbm" ,netpbm)
3658 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
3659 ;; TODO: Use system fonts rather than those in data/fonts
3660 (arguments
c6aa2ee2 3661 `(#:make-flags `("VER_DATE=2018-09-02"
9b1ada4e
EB
3662 "GPERF=gperf" "CC=gcc"
3663 "SDL_PCNAME=sdl SDL_image SDL_mixer SDL_ttf"
3664 ,(string-append "PREFIX=" %output)
f88c0ab8
EB
3665 "KDE_PREFIX=$(PREFIX)/share/applications"
3666 "KDE_ICON_PREFIX=$(PREFIX)/share/icons/"
9b1ada4e 3667 "COMPLETIONDIR=$(PREFIX)/etc/bash_completion.d")
72529642 3668 #:parallel-build? #f ;fails on some systems
9b1ada4e
EB
3669 #:tests? #f ;No tests
3670 #:phases (modify-phases %standard-phases
3671 (delete 'configure) ;no configure phase
f88c0ab8
EB
3672 (add-before 'install 'no-sys-cache
3673 (lambda _ ;do not rebuild system conf cache
3674 (substitute* "Makefile"
3675 (("kbuildsycoca4") ""))
3676 #t))
9b1ada4e
EB
3677 (add-after 'install 'fix-import
3678 (lambda* (#:key inputs outputs #:allow-other-keys)
3679 (let* ((out (assoc-ref outputs "out"))
3680 (net (assoc-ref inputs "netpbm"))
3681 (tpi (string-append out "/bin/tuxpaint-import")))
3682 (substitute* tpi
3683 ;; Point to installation prefix so that the default
3684 ;; configure file is found.
3685 (("/usr/local") out))
3686 ;; tuxpaint-import uses a bunch of programs from
3687 ;; netpbm, so make sure it knows where those are
3688 (wrap-program tpi
3689 `("PATH" ":" prefix
3690 (,(string-append net "/bin"))))))))))
3691 (native-search-paths
3692 (list (search-path-specification
3693 (variable "TUXPAINT_STAMPS_PATH")
3694 (files '("share/tuxpaint/stamps")))))
3695 (home-page "http://www.tuxpaint.org")
3696 (synopsis "Drawing software for children")
3697 (description
3698 "Tux Paint is a free drawing program designed for young children (kids
3699ages 3 and up). It has a simple, easy-to-use interface; fun sound effects;
3700and an encouraging cartoon mascot who helps guide children as they use the
3701program. It provides a blank canvas and a variety of drawing tools to help
3702your child be creative.")
3703 (license license:gpl2+)))
c3d850f2
EB
3704
3705(define-public tuxpaint-stamps
3706 (package
3707 (name "tuxpaint-stamps")
6ade82c2 3708 (version "2018.09.01")
c3d850f2
EB
3709 (source
3710 (origin
3711 (method url-fetch)
3712 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-stamps/"
3713 (string-map (λ (x) (if (eq? x #\.) #\- x)) version)
3714 "/tuxpaint-stamps-" version ".tar.gz"))
3715 (sha256
3716 (base32
6ade82c2 3717 "1skr23k27yj3vgwfazpzxp90lb2a278gxrkr3bxw7az6zpkmb3yp"))))
c3d850f2
EB
3718 (build-system trivial-build-system)
3719 (native-inputs
3720 `(("tar" ,tar)
3721 ("gzip" ,gzip)))
3722 (arguments
3723 `(#:modules ((guix build utils))
3724 #:builder (begin
3725 (use-modules (guix build utils))
3726 (setenv "PATH"
3727 (string-append
3728 (assoc-ref %build-inputs "tar") "/bin" ":"
3729 (assoc-ref %build-inputs "gzip") "/bin"))
e3cfef22 3730 (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
c3d850f2
EB
3731 (chdir (string-append ,name "-" ,version))
3732 (let ((dir (string-append %output "/share/tuxpaint/stamps")))
3733 (mkdir-p dir)
e3cfef22
MW
3734 (copy-recursively "stamps" dir))
3735 #t)))
c3d850f2
EB
3736 (home-page (package-home-page tuxpaint))
3737 (synopsis "Stamp images for Tux Paint")
3738 (description
3739 "This package contains a set of \"Rubber Stamp\" images which can be used
3740with the \"Stamp\" tool within Tux Paint.")
3741 (license license:gpl2+)))
d2563973
EB
3742
3743(define-public tuxpaint-config
3744 (package
3745 (name "tuxpaint-config")
7b05e957 3746 (version "0.0.14") ;keep VER_DATE below in sync
d2563973
EB
3747 (source
3748 (origin
3749 (method url-fetch)
3750 (uri (string-append "mirror://sourceforge/tuxpaint/tuxpaint-config/"
3751 version "/tuxpaint-config-" version ".tar.gz"))
3752 (sha256
3753 (base32
7b05e957 3754 "0zkgxk436nqcp43zghkfmh397c7dvh5bwn2as7gwvv208bzyij6g"))))
d2563973
EB
3755 (build-system gnu-build-system)
3756 (native-inputs
b94a6ca0 3757 `(("gettext" ,gettext-minimal)))
d2563973
EB
3758 (inputs
3759 `(("fltk" ,fltk)
3760 ("libpaper" ,libpaper)
3761 ;; TODO: Should the following be propagated by fltk?
3762 ("libx11" ,libx11)
3763 ("libxft" ,libxft)
3764 ("mesa" ,mesa)))
3765 (arguments
7b05e957 3766 `(#:make-flags `("VER_DATE=2018-09-01"
d2563973
EB
3767 "CONFDIR=/etc/tuxpaint" ;don't write to store
3768 ,(string-append "PREFIX=" %output)
3769 "GNOME_PREFIX=$(PREFIX)")
5895ca7b 3770 #:parallel-build? #f ;race conditions
d2563973
EB
3771 #:tests? #f ;no tests
3772 #:phases (modify-phases %standard-phases
3773 (delete 'configure) ;no configure phase
3774 (add-before 'install 'gzip-no-name
3775 (lambda* _
3776 (substitute* "Makefile"
3777 ;; tuxpaint-config compresses its own documentation;
3778 ;; make sure it uses flags for reproducibility.
3779 (("gzip") "gzip --no-name"))))
3780 (add-before 'install 'make-install-dirs
3781 (lambda* (#:key outputs #:allow-other-keys)
3782 (let ((out (assoc-ref outputs "out")))
3783 (mkdir-p (string-append out "/bin"))
3784 #t))))))
3785 (home-page (package-home-page tuxpaint))
3786 (synopsis "Configure Tux Paint")
3787 (description
3788 "Tux Paint Config is a graphical configuration editor for Tux Paint.")
3789 (license license:gpl2))) ;no "or later" present
826a3ca2 3790
3791(define-public supertux
3792 (package
3793 (name "supertux")
54a80259 3794 (version "0.6.1")
826a3ca2 3795 (source (origin
3796 (method url-fetch)
d910d584
RW
3797 (uri (string-append "https://github.com/SuperTux/supertux/"
3798 "releases/download/v" version "/SuperTux-v"
3799 version "-Source.tar.gz"))
8698d986 3800 (file-name (string-append name "-" version ".tar.gz"))
826a3ca2 3801 (sha256
3802 (base32
54a80259 3803 "0lqch5gcq6ccnspy93z9r13bp8w2j1vrd8jhvk5kp4qhrd1f069s"))
8698d986 3804 (patches
57d87f43 3805 (search-patches "supertux-unbundle-squirrel.patch"))))
d910d584
RW
3806 (arguments
3807 '(#:tests? #f
3808 #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"
8698d986
KK
3809 "-DUSE_SYSTEM_PHYSFS=ON")
3810 #:phases
3811 (modify-phases %standard-phases
3812 (add-after 'unpack 'patch-squirrel-path
3813 (lambda* (#:key inputs #:allow-other-keys)
3814 (let ((squirrel (assoc-ref inputs "squirrel")))
3815 (substitute* "CMakeLists.txt"
3816 (("set\\(SQUIRREL_PREFIX.*")
3817 (string-append "set(SQUIRREL_PREFIX " squirrel ")"))
3818 (("add_dependencies\\(supertux2_lib squirrel\\)") "")
3819 (("\\$\\{SQUIRREL_PREFIX\\}/include")
3820 (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
3821 #t)))))
826a3ca2 3822 (build-system cmake-build-system)
3823 (inputs `(("sdl2" ,sdl2)
3824 ("sdl2-image" ,sdl2-image)
3825 ("sdl2-mixer" ,sdl2-mixer)
3826 ("openal" ,openal)
3827 ("mesa" ,mesa)
3828 ("glew" ,glew)
3829 ("libvorbis" ,libvorbis)
3830 ("libogg" ,libogg)
3831 ("physfs" ,physfs)
3832 ("curl" ,curl)
8698d986
KK
3833 ("boost" ,boost)
3834 ("freetype" ,freetype)
3835 ("squirrel" ,squirrel)))
8b03b1a1
NG
3836 (native-inputs
3837 `(("pkg-config" ,pkg-config)))
826a3ca2 3838 (synopsis "2D platformer game")
8b03b1a1
NG
3839 (description "SuperTux is a classic 2D jump'n run sidescroller game in
3840a style similar to the original Super Mario games.")
cac6c3ba 3841 (home-page "https://supertux.org/")
826a3ca2 3842 (license license:gpl3+)))
b3de5ff2 3843
751c7040 3844(define-public tintin++
3845 (package
3846 (name "tintin++")
23174b49 3847 (version "2.02.00")
fffe4870
TGR
3848 (source
3849 (origin
3850 (method url-fetch)
3851 (uri (string-append "mirror://sourceforge/tintin/TinTin++ Source Code/"
23174b49 3852 (string-drop-right version 1)
fffe4870
TGR
3853 "/tintin-" version ".tar.gz"))
3854 (sha256
3855 (base32
23174b49 3856 "02qmbhzhh2sdy5b37v54gihs9k4bxmlz3j96gyx7icvx2grkbg5i"))))
751c7040 3857 (inputs
3858 `(("gnutls" ,gnutls)
3859 ("pcre" ,pcre)
3860 ("readline" ,readline)
3861 ("zlib" ,zlib)))
3862 (arguments
fffe4870 3863 '(#:tests? #f ; no test suite
751c7040 3864 #:phases
3865 (modify-phases %standard-phases
3866 ;; The source is in tt/src.
3867 (add-before 'configure 'chdir
3868 (lambda _
3869 (chdir "src")
3870 #t)))))
3871 (build-system gnu-build-system)
23174b49 3872 (home-page "https://tintin.mudhalla.net/")
751c7040 3873 (synopsis "MUD client")
3874 (description
5b9c2690
KK
3875 "TinTin++ is a MUD client which supports MCCP (Mud Client Compression
3876Protocol), MMCP (Mud Master Chat Protocol), xterm 256 colors, most TELNET
3877options used by MUDs, as well as those required to login via telnet on
3878Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
23174b49 3879 (license license:gpl3+)))
751c7040 3880
b3de5ff2
JN
3881(define-public laby
3882 (package
3883 (name "laby")
3884 (version "0.6.4")
3885 (source
6484b091
EF
3886 (origin (method git-fetch)
3887 (uri (git-reference
3888 (url "https://github.com/sgimenez/laby.git")
3889 (commit (string-append name "-" version))))
3890 (file-name (git-file-name name version))
b3de5ff2
JN
3891 (sha256
3892 (base32
6484b091 3893 "12fq9hhrxpzgfinmj9ra9ckss9yficwdlrmgjvvsq7agvh3sgyl1"))
b3de5ff2
JN
3894 (patches (search-patches "laby-make-install.patch"))))
3895 (build-system gnu-build-system)
3896 (inputs
3897 `(("lablgtk" ,lablgtk)
3898 ("ocaml" ,ocaml)
a8f52ad7
TGR
3899 ("ocaml-findlib" ,ocaml-findlib)
3900 ("ocamlbuild" ,ocamlbuild)))
b3de5ff2
JN
3901 (arguments
3902 '(#:phases
3903 (modify-phases %standard-phases
3904 (delete 'configure)
a8f52ad7
TGR
3905 (add-before 'build 'allow-unsafe-strings
3906 ;; Fix a build failure with ocaml >=4.06.0.
3907 ;; See <https://github.com/sgimenez/laby/issues/53>.
3908 (lambda _
3909 (setenv "OCAMLPARAM" "safe-string=0,_")
3910 #t))
3911 (add-before 'build 'set-library-path
b3de5ff2
JN
3912 (lambda* (#:key inputs #:allow-other-keys)
3913 (let ((lablgtk (assoc-ref inputs "lablgtk")))
3914 (setenv "LD_LIBRARY_PATH"
3915 (string-append lablgtk "/lib/ocaml/stublibs"))))))
3916 #:tests? #f ; no 'check' target
3917 #:make-flags
3918 (list (string-append "PREFIX=" (assoc-ref %outputs "out")) "all")))
3919 (home-page "https://sgimenez.github.io/laby/")
3920 (synopsis "Programming game")
3921 (description "Learn programming, playing with ants and spider webs ;-)
3922Your robot ant can be programmed in many languages: OCaml, Python, C, C++,
3923Java, Ruby, Lua, JavaScript, Pascal, Perl, Scheme, Vala, Prolog. Experienced
3924programmers may also add their own favorite language.")
3925 (license license:gpl3+)))
b0488fe5
EF
3926
3927(define-public bambam
3928 (package
3929 (name "bambam")
8e77da0d 3930 (version "1.0.0")
b0488fe5
EF
3931 (source
3932 (origin
63e708f4
TGR
3933 (method git-fetch)
3934 (uri (git-reference
3935 (url "https://github.com/porridge/bambam")
8e77da0d 3936 (commit (string-append "v" version))))
63e708f4 3937 (file-name (git-file-name name version))
b0488fe5 3938 (sha256
8e77da0d 3939 (base32 "18cwd1wpyyx8y61cags9bkdhx9x858xicc4y1c9c2s0xjmgzhl3i"))))
b0488fe5
EF
3940 (build-system python-build-system)
3941 (arguments
8e77da0d 3942 `(#:tests? #f ; no tests
b0488fe5
EF
3943 #:phases
3944 (modify-phases %standard-phases
8e77da0d 3945 (delete 'build) ; nothing to build
b0488fe5
EF
3946 (replace 'install
3947 (lambda* (#:key outputs #:allow-other-keys)
3948 (let* ((out (assoc-ref outputs "out"))
3949 (bin (string-append out "/bin"))
3950 (share (string-append out "/share")))
3951 (mkdir-p bin)
3952 (copy-file "bambam.py" (string-append bin "/bambam"))
3953 (install-file "bambam.6" (string-append share "/man/man6"))
3954 (copy-recursively "data" (string-append share "/bambam/data")))
b0488fe5
EF
3955 #t)))))
3956 (inputs
3957 `(("python-pygame" ,python-pygame)))
3958 (home-page "https://github.com/porridge/bambam")
46a06224 3959 (synopsis "Keyboard mashing and doodling game for babies")
b0488fe5
EF
3960 (description "Bambam is a simple baby keyboard (and gamepad) masher
3961application that locks the keyboard and mouse and instead displays bright
3962colors, pictures, and sounds.")
3963 (license license:gpl3+)))
6b87c10f 3964
3110c74b
TGR
3965(define-public mrrescue
3966 (package
3967 (name "mrrescue")
3968 (version "1.02e")
3969 (source (origin
3970 (method url-fetch)
3971 (uri (string-append
3972 "https://github.com/SimonLarsen/mrrescue/releases/"
ed9bcf50 3973 "download/" version "/mrrescue" version ".love"))
3110c74b
TGR
3974 (file-name (string-append name "-" version ".love"))
3975 (sha256
3976 (base32
3977 "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2"))))
3978 (build-system trivial-build-system)
3979 (arguments
8893218a 3980 `(#:modules ((guix build utils))
3110c74b
TGR
3981 #:builder
3982 (begin
3983 (use-modules (guix build utils))
8893218a
TGR
3984 (let* ((out (assoc-ref %outputs "out"))
3985 (script (string-append out "/bin/" ,name))
3986 (data (string-append out "/share/" ,name))
3987 (source (assoc-ref %build-inputs "source"))
3988 (unzip (string-append (assoc-ref %build-inputs "unzip")
3989 "/bin/unzip"))
3990 (patch (string-append (assoc-ref %build-inputs "patch")
3991 "/bin/patch"))
3992 (bash (string-append (assoc-ref %build-inputs "bash")
3993 "/bin/bash"))
3994 (love (string-append (assoc-ref %build-inputs "love")
3995 "/bin/love")))
3996
3997 (mkdir-p (dirname script))
3998 (with-output-to-file script
3110c74b
TGR
3999 (lambda ()
4000 (format #t "#!~a~%" bash)
8893218a
TGR
4001 (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data)))
4002 (chmod script #o755)
4003
4004 ;; The better way to package this game would be to install *only* the
4005 ;; script above, pointing to the unextracted .love file in the store.
4006 ;; However, mrrescue 1.02e needs to be patched to work with Love 11.
4007 ;; Instead of extracting the .love file, patching it, and re-zipping
4008 ;; it to the store, simply point the script to the extracted patched
4009 ;; data directory directly.
4010 (mkdir-p data)
4011 (with-directory-excursion data
4012 (invoke unzip source)
4013 (invoke patch "-p1" "-i"
4014 (assoc-ref %build-inputs "love-11.patch")))
3110c74b 4015 #t))))
8893218a
TGR
4016 (native-inputs
4017 `(("unzip" ,unzip)
4018 ("patch" ,patch)
4019 ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch"))))
3110c74b
TGR
4020 (inputs
4021 `(("bash" ,bash)
4022 ("love" ,love)))
4023 (home-page "http://tangramgames.dk/games/mrrescue")
4024 (synopsis "Arcade-style fire fighting game")
4025 (description
4026 "Mr. Rescue is an arcade styled 2d action game centered around evacuating
d6331fca
TGR
4027civilians from burning buildings. The game features fast-paced fire
4028extinguishing action, intense boss battles, a catchy soundtrack, and lots of
3110c74b
TGR
4029throwing people around in pseudo-randomly generated buildings.")
4030 (license (list license:zlib ; for source code
4031 license:cc-by-sa3.0)))) ; for graphics and music assets
4032
cd1869cd
KK
4033(define-public hyperrogue
4034 (package
4035 (name "hyperrogue")
70b6b238 4036 (version "11.2q")
f8279ba4
KK
4037 ;; When updating this package, be sure to update the "hyperrogue-data"
4038 ;; origin in native-inputs.
cd1869cd
KK
4039 (source (origin
4040 (method url-fetch)
4041 (uri (string-append
a01aea7d
TGR
4042 "https://www.roguetemple.com/z/hyper/hyperrogue"
4043 (string-join (string-split version #\.) "")
f8279ba4 4044 "-src.tgz"))
cd1869cd
KK
4045 (sha256
4046 (base32
70b6b238 4047 "1w4khi2limxhgiq7xnz0rc9nzbk86bhbyzrcd5hdghnhsviaiggq"))))
cd1869cd
KK
4048 (build-system gnu-build-system)
4049 (arguments
f8279ba4 4050 `(#:tests? #f ; no check target
82402f76
KK
4051 #:make-flags '("HYPERROGUE_USE_GLEW=1"
4052 "HYPERROGUE_USE_PNG=1")
cd1869cd
KK
4053 #:phases
4054 (modify-phases %standard-phases
4055 (add-after 'set-paths 'set-sdl-paths
4056 (lambda* (#:key inputs #:allow-other-keys)
4057 (setenv "CPATH"
b6c2805c
MB
4058 (string-append (getenv "CPATH") ":"
4059 (assoc-ref inputs "sdl-union")
cd1869cd 4060 "/include/SDL"))))
cd1869cd
KK
4061 (replace 'configure
4062 (lambda* (#:key inputs outputs #:allow-other-keys)
f8279ba4
KK
4063 (let* ((out (assoc-ref outputs "out"))
4064 (share-dir (string-append out "/share/hyperrogue"))
4065 (dejavu-dir (string-append
4066 (assoc-ref inputs "font-dejavu")
4067 "/share/fonts/truetype"))
4068 (dejavu-font "DejaVuSans-Bold.ttf")
4069 (music-file "hyperrogue-music.txt"))
1bb962b4 4070 ;; Fix font and music paths.
89c9445a 4071 (substitute* "basegraph.cpp"
f8279ba4
KK
4072 ((dejavu-font)
4073 (string-append dejavu-dir "/" dejavu-font)))
f8279ba4
KK
4074 (substitute* music-file
4075 (("\\*/")
82402f76
KK
4076 (string-append share-dir "/sounds/")))
4077 (substitute* "sound.cpp"
4078 (("musicfile = \"\"")
4079 (string-append "musicfile = \""
4080 share-dir "/" music-file "\"")))
4081 ;; Disable build machine CPU optimizations and warnings treated
4082 ;; as errors.
4083 (substitute* "Makefile"
4084 (("-march=native") "")
4085 (("-Werror") "")))
cd1869cd
KK
4086 #t))
4087 (replace 'install
4088 (lambda* (#:key inputs outputs #:allow-other-keys)
4089 (let* ((out (assoc-ref outputs "out"))
4090 (bin (string-append out "/bin"))
4091 (share-dir (string-append out "/share/hyperrogue")))
4092 (mkdir-p bin)
82402f76 4093 (install-file "hyperrogue" bin)
f8279ba4
KK
4094 (install-file "hyperrogue-music.txt" share-dir))
4095 #t))
4096 (add-after 'install 'install-data
4097 (lambda* (#:key inputs outputs #:allow-other-keys)
4098 (let* ((data (assoc-ref inputs "hyperrogue-data"))
4099 (out (assoc-ref outputs "out"))
4100 (sounds (string-append out "/share/hyperrogue/sounds"))
4101 (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip")))
1bb962b4
KK
4102 ;; Extract media license information into sounds directory.
4103 (invoke unzip "-j" data
4104 (string-append
4105 "hyperrogue"
4106 (string-join (string-split ,version #\.) "")
4107 "/sounds/credits.txt") "-d" sounds)
4108 ;; Extract sounds and music into sounds directory.
4109 (invoke "unzip" "-j" data
4110 (string-append
4111 "hyperrogue"
4112 (string-join (string-split ,version #\.) "")
4113 "/*.ogg") "-d" sounds)))))))
f8279ba4
KK
4114 (native-inputs
4115 `(("hyperrogue-data"
4116 ,(origin
4117 (method url-fetch)
4118 (uri
4119 (string-append
07de94d6 4120 "https://www.roguetemple.com/z/hyper/hyperrogue"
f8279ba4
KK
4121 (string-join (string-split version #\.) "")
4122 "-win.zip"))
4123 (sha256
4124 (base32
70b6b238 4125 "1k81zrbq5gmrccjac1i5c6v8j2iilfg2vwrnm8snjmmcnh5z1fgj"))))
f8279ba4 4126 ("unzip" ,unzip)))
cd1869cd
KK
4127 (inputs
4128 `(("font-dejavu" ,font-dejavu)
4129 ("glew" ,glew)
4130 ("libpng" ,libpng)
4131 ("sdl-union" ,(sdl-union (list sdl
4132 sdl-gfx
4133 sdl-mixer
4134 sdl-ttf)))))
4cae7e67 4135 (home-page "https://www.roguetemple.com/z/hyper/")
cd1869cd
KK
4136 (synopsis "Non-euclidean graphical rogue-like game")
4137 (description
4138 "HyperRogue is a game in which the player collects treasures and fights
4139monsters -- rogue-like but for the fact that it is played on the hyperbolic
4140plane and not in euclidean space.
4141
4142In HyperRogue, the player can move through different parts of the world, which
a53a6b6f
TGR
4143are home to particular creatures and may be subject to their own rules of
4144\"physics\".
cd1869cd 4145
a53a6b6f
TGR
4146While the game can use ASCII characters to display the the classical rogue
4147symbols, it still needs graphics to render the non-euclidean world.")
f8279ba4
KK
4148 (license (list license:bsd-3 ; glew.c, mtrand.*
4149 license:cc-by-sa3.0 ; music
4150 license:cc-by-sa4.0 ; sounds
4151 license:cc0
4152 license:public-domain ; direntx.*, some sounds
4153 license:zlib ; savepng.*
cd1869cd 4154 license:gpl2+)))) ; remaining files
a56145e1
SW
4155
4156(define-public kobodeluxe
4157 (package
4158 (name "kobodeluxe")
4159 (version "0.5.1")
4160 (source (origin
4161 (method url-fetch)
4162 (uri (string-append "http://olofson.net/kobodl/download/KoboDeluxe-"
4163 version ".tar.bz2"))
4164 (sha256
4165 (base32
4166 "0b2wvdpnmaibsy419c16dfwj5kvd3pccby2aaqvm964x74592yqg"))
4167 (patches (search-patches
4168 "kobodeluxe-const-charp-conversion.patch"
4169 "kobodeluxe-enemies-pipe-decl.patch"
4170 "kobodeluxe-graphics-window-signed-char.patch"
4171 "kobodeluxe-manpage-minus-not-hyphen.patch"
4172 "kobodeluxe-midicon-segmentation-fault.patch"
4173 "kobodeluxe-paths.patch"))))
4174 (build-system gnu-build-system)
4175 (arguments
4176 '(#:configure-flags
4177 (list (string-append "CPPFLAGS=-I"
4178 (assoc-ref %build-inputs "sdl-union")
4179 "/include/SDL"))))
cf07ec20
MB
4180 (inputs
4181 `(("glu" ,glu)
4182 ("sdl-union" ,(sdl-union (list sdl sdl-image)))))
a56145e1
SW
4183 (synopsis "Shooter with space station destruction")
4184 (description
4185 "Kobo Deluxe is an enhanced version of Akira Higuchi's XKobo graphical game
4186for Un*x systems with X11.")
4187 (home-page "http://olofson.net/kobodl/")
4188 (license license:gpl2+)))
5430dbd9
AI
4189
4190(define-public freeciv
4191 (package
4192 (name "freeciv")
4dbc3c2c 4193 (version "2.6.1")
5430dbd9
AI
4194 (source
4195 (origin
4196 (method url-fetch)
b92e8da0
EF
4197 (uri (list (string-append
4198 "http://files.freeciv.org/stable/freeciv-"
4199 version ".tar.bz2")
4200 (string-append
4201 "mirror://sourceforge/freeciv/Freeciv%20"
4202 (version-major+minor version) "/" version
4203 "/freeciv-" version ".tar.bz2")))
5430dbd9 4204 (sha256
4dbc3c2c 4205 (base32 "1qmrhrwm0ryvsh1zsxcxj128lhyvaxap7k39sam3hh8rl0fq9rnc"))))
5430dbd9
AI
4206 (build-system gnu-build-system)
4207 (inputs
4208 `(("curl" ,curl)
4209 ("cyrus-sasl" ,cyrus-sasl)
4210 ("gtk+" ,gtk+)
4211 ("sdl-mixer" ,sdl-mixer)
4212 ("zlib" ,zlib)))
4213 (native-inputs
4214 `(("pkg-config" ,pkg-config)))
4215 (home-page "http://www.freeciv.org/")
d6ca9faf
TGR
4216 (synopsis "Turn-based empire building strategy game")
4217 (description "Freeciv is a turn-based empire building strategy game
5430dbd9
AI
4218inspired by the history of human civilization. The game commences in
4219prehistory and your mission is to lead your tribe from the Stone Age
d6ca9faf 4220into the Space Age.")
5430dbd9 4221 (license license:gpl2+)))
345504c7 4222
4223(define-public no-more-secrets
4224 (package
4225 (name "no-more-secrets")
4c4f1871 4226 (version "0.3.3")
345504c7 4227 (source
4228 (origin
146a4459
TGR
4229 (method git-fetch)
4230 (uri (git-reference
4231 (url "https://github.com/bartobri/no-more-secrets.git")
4232 (commit (string-append "v" version))))
4233 (file-name (git-file-name name version))
345504c7 4234 (sha256
146a4459 4235 (base32 "1zfv4qabikf8w9winsr4brxrdvs3f0d7xvydksyx8bydadsm2v2h"))))
345504c7 4236 (build-system gnu-build-system)
4237 (arguments
4238 `(#:tests? #f
4239 #:make-flags (list "CC=gcc" "all-ncurses"
4240 (string-append "prefix="
4241 (assoc-ref %outputs "out")))
4242 #:phases
4243 (modify-phases %standard-phases
4244 (delete 'configure))))
4245 (inputs
4246 `(("ncurses" ,ncurses)))
4247 (home-page "https://github.com/bartobri/no-more-secrets")
4248 (synopsis "Recreation of data decryption effect in \"Sneakers\"")
4249 (description
4250 "@code{No More Secrets} provides a command line tool called \"nms\"
4251that recreates the famous data decryption effect seen on screen in the 1992
4252movie \"Sneakers\".
4253
4254This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
4255it will apply the hollywood effect, initially showing encrypted data, then
4256starting a decryption sequence to reveal the original plaintext characters.")
4257 (license license:expat)))
fb731c92
AI
4258
4259(define-public megaglest-data
4260 (package
4261 (name "megaglest-data")
4262 (version "3.13.0")
4263 (source
4264 (origin
4265 (method url-fetch)
4266 (uri (string-append
4267 "https://github.com/MegaGlest/megaglest-data"
4268 "/releases/download/" version "/megaglest-data-"
4269 version ".tar.xz"))
4270 (sha256
4271 (base32
4272 "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3"))))
4273 (build-system cmake-build-system)
4274 (arguments
4275 `(#:tests? #f))
4276 (home-page "https://megaglest.org/")
4277 (synopsis "Data files for MegaGlest")
4278 (description "This package contains the data files required for MegaGlest.")
4279 (license license:cc-by-sa3.0)))
0b608ec4
AI
4280
4281(define-public megaglest
4282 (package
4283 (name "megaglest")
4284 (version "3.13.0")
4285 (source
4286 (origin
4287 (method url-fetch)
4288 (uri (string-append
4289 "https://github.com/MegaGlest/megaglest-source"
4290 "/releases/download/" version "/megaglest-source-"
4291 version ".tar.xz"))
4292 (sha256
4293 (base32
4294 "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9"))))
4295 (build-system cmake-build-system)
4296 (inputs
4297 `(("curl" ,curl)
4298 ("fontconfig" ,fontconfig)
4299 ("ftgl" ,ftgl)
4300 ("glew" ,glew)
4301 ("libjpeg-turbo" ,libjpeg-turbo)
4302 ("megaglest-data" ,megaglest-data)
4303 ("mesa" ,mesa)
4304 ("miniupnpc" ,miniupnpc)
4305 ("openal" ,openal)
4306 ("libircclient" ,libircclient)
4307 ("libpng" ,libpng)
4308 ("libvorbis" ,libvorbis)
4309 ("lua" ,lua)
4310 ("sdl2" ,sdl2)
4311 ("wxwidgets" ,wxwidgets)))
4312 (native-inputs
4313 `(("cppunit" ,cppunit)
4314 ("pkg-config" ,pkg-config)))
4315 (arguments
4316 `(#:configure-flags
4317 (list (string-append "-DCUSTOM_DATA_INSTALL_PATH="
4318 (assoc-ref %build-inputs "megaglest-data")
4319 "/share/megaglest")
4320 "-DBUILD_MEGAGLEST_TESTS=ON")
4321 #:phases
4322 (modify-phases %standard-phases
4323 (add-after 'unpack 'fix-ini-search-path
4324 (lambda* (#:key outputs #:allow-other-keys)
4325 (substitute* "source/glest_game/global/config.cpp"
4326 (("/usr/share/megaglest/")
4327 (string-append (assoc-ref outputs "out")
4328 "/share/megaglest/"))))))
4329 #:test-target "megaglest_tests"))
4330 (home-page "https://megaglest.org/")
4331 (synopsis "3D real-time strategy (RTS) game")
4332 (description "MegaGlest is a cross-platform 3D real-time strategy (RTS)
4333game, where you control the armies of one of seven different factions: Tech,
4334Magic, Egypt, Indians, Norsemen, Persian or Romans.")
4335 (license license:gpl2+)))
6bb9c854
RW
4336
4337(define-public freegish
4338 (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
4339 (revision "1"))
4340 (package
4341 (name "freegish")
4342 (version (string-append "0-" revision "." (string-take commit 9)))
4343 (source (origin
4344 (method git-fetch)
4345 (uri (git-reference
4346 (url "https://github.com/freegish/freegish.git")
4347 (commit commit)))
661ad6f0 4348 (file-name (git-file-name name version))
6bb9c854
RW
4349 (sha256
4350 (base32
4351 "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
4352 (modules '((guix build utils)))
4353 ;; The audio files in the "music" directory are licensed under
4354 ;; CC-BY-NC, so we delete them.
4355 (snippet
4356 '(begin
4357 (delete-file-recursively "music")
4358 #t))))
4359 (build-system cmake-build-system)
4360 (arguments
4361 `(#:tests? #f ; no tests included
4362 #:configure-flags
4363 (list "-DCMAKE_INSTALL_FHS=ON")
4364 #:phases
4365 (modify-phases %standard-phases
4366 (add-after 'unpack 'set-DATAPATH
4367 (lambda* (#:key outputs #:allow-other-keys)
4368 (substitute* "CMakeLists.txt"
4369 (("^option\\(INSTALL_FHS" line)
4370 (string-append "add_definitions(-DDATAPATH=\""
4371 (assoc-ref outputs "out") "/share/freegish\")\n"
4372 line)))
4373 #t)))))
4374 (inputs
4375 `(("sdl-union" ,(sdl-union (list sdl sdl-mixer)))
4376 ("openal" ,openal)
4377 ("libvorbis" ,libvorbis)
4378 ("libogg" ,libogg)
4379 ("mesa" ,mesa)
4380 ("libpng" ,libpng)
4381 ("zlib" ,zlib)))
4382 (home-page "https://github.com/freegish/freegish")
4383 (synopsis "Side-scrolling physics platformer with a ball of tar")
4384 (description "In FreeGish you control Gish, a ball of tar who lives
4385happily with his girlfriend Brea, until one day a mysterious dark creature
4386emerges from a sewer hole and pulls her below ground.")
4387 ;; The textures are available under the Expat license. All other assets
4388 ;; (including levels) are covered under CC-BY-SA or public domain. The
4389 ;; source code is under GPLv2+.
4390 (license (list license:gpl2+
4391 license:expat
4392 license:public-domain
4393 license:cc-by-sa3.0)))))
f0f7bf95
RW
4394
4395(define-public cdogs-sdl
6e65eb3c
TGR
4396 (package
4397 (name "cdogs-sdl")
acfb7357 4398 (version "0.6.9")
6e65eb3c
TGR
4399 (source (origin
4400 (method git-fetch)
4401 (uri (git-reference
4402 (url "https://github.com/cxong/cdogs-sdl.git")
4403 (commit version)))
4404 (file-name (git-file-name name version))
4405 (sha256
4406 (base32
acfb7357 4407 "13gyv2hzk43za1n3lsjnd5v64xlzfzq7n10scd1rcbsnk1n007zr"))))
6e65eb3c
TGR
4408 (build-system cmake-build-system)
4409 (arguments
4410 `(#:configure-flags
4411 (list (string-append "-DCDOGS_DATA_DIR="
4412 (assoc-ref %outputs "out")
4413 "/share/cdogs-sdl/"))))
4414 (inputs
4415 `(("mesa" ,mesa)
4416 ("sdl2" ,sdl2)
4417 ("sdl2-image" ,sdl2-image)
4418 ("sdl2-mixer" ,sdl2-mixer)))
4419 (home-page "https://cxong.github.io/cdogs-sdl/")
4420 (synopsis "Classic overhead run-and-gun game")
4421 (description "C-Dogs SDL is a classic overhead run-and-gun game,
f0f7bf95
RW
4422supporting up to 4 players in co-op and deathmatch modes. Customize your
4423player, choose from many weapons, and blast, slide and slash your way through
4424over 100 user-created campaigns.")
6e65eb3c
TGR
4425 ;; GPLv2+ for code (includes files under BSD-2 and BSD-3),
4426 ;; CC0/CC-BY/CC-BY-SA for assets.
4427 (license (list license:gpl2+
4428 license:bsd-2
4429 license:bsd-3
4430 license:cc0
4431 license:cc-by3.0
4432 license:cc-by-sa3.0))))
bd71525b 4433
649220ad 4434(define-public kiki
bd71525b 4435 (package
649220ad 4436 (name "kiki")
bd71525b
RW
4437 (version "1.0.2")
4438 (source (origin
4439 (method url-fetch)
4440 (uri (string-append "mirror://sourceforge/kiki/kiki-src/"
4441 version "/kiki-" version "-src.tgz"))
4442 (sha256
4443 (base32
4444 "0ihjdsxbn8z3cz0gpcprafiipcqaiskgdnh1rhmw4qff8dszalbn"))
4445 (modules '((guix build utils)))
4446 (snippet
4447 '(begin
4448 (for-each delete-file (find-files "." "\\.dll$"))
4449 #t))
4450 (patches
4451 (search-patches "kiki-level-selection-crash.patch"
4452 "kiki-makefile.patch"
4453 "kiki-missing-includes.patch"
4454 "kiki-portability-64bit.patch"))))
4455 (build-system gnu-build-system)
4456 (arguments
4457 `(#:tests? #f ; there are no tests
4458 #:make-flags '("CXX=g++")
4459 #:phases
4460 (modify-phases %standard-phases
4461 (replace 'configure
4462 (lambda* (#:key inputs outputs #:allow-other-keys)
4463 (setenv "CPLUS_INCLUDE_PATH"
4464 (string-append (assoc-ref inputs "sdl-union")
4465 "/include/SDL:"
4466 (assoc-ref inputs "python")
97149c57 4467 "/include/python2.7"))
bd71525b
RW
4468 (substitute* "src/main/main.cpp"
4469 (("#include <SDL.h>" line)
4470 (string-append line "
4471#define K_INCLUDE_GLUT
4472#include \"KIncludeTools.h\""))
4473 (("// initialize SDL" line)
4474 (string-append "glutInit(&argc,argv);\n" line)))
4475 (substitute* "src/main/KikiController.cpp"
4476 (("getenv\\(\"KIKI_HOME\"\\)")
4477 (string-append "\"" (assoc-ref outputs "out") "/share/kiki/\"")))
4478 (substitute* "linux/Makefile"
4479 (("CXXOPTS =" line)
4480 (string-append line " -fpermissive"))
4481 (("PYTHON_VERSION=.*") "PYTHON_VERSION=2.7")
4482 (("PYTHONHOME =.*")
4483 (string-append "PYTHONHOME = "
4484 (assoc-ref inputs "python")
4485 "/lib/python2.7/"))
4486 (("\\$\\(GLLIBS\\)" line)
4487 (string-append line " -lm -lpython2.7")))
4488 (substitute* "src/main/KikiPythonWidget.h"
4489 (("#define __KikiPythonWidget" line)
4490 (string-append line "\n#include \"KikiPython.h\"")))
4491 #t))
4492 (add-before 'build 'build-kodilib
4493 (lambda* (#:key make-flags #:allow-other-keys)
4494 (with-directory-excursion "kodilib/linux"
ff61aee8 4495 (apply invoke "make" make-flags))))
bd71525b
RW
4496 (add-after 'build-kodilib 'chdir
4497 (lambda _ (chdir "linux") #t))
4498 (replace 'install
4499 (lambda* (#:key outputs #:allow-other-keys)
4500 (let* ((out (assoc-ref outputs "out"))
4501 (bin (string-append out "/bin"))
4502 (share (string-append out "/share/kiki")))
4503 (mkdir-p bin)
4504 (mkdir-p share)
4505 (install-file "kiki" bin)
4506 (copy-recursively "../py" (string-append share "/py"))
4507 (copy-recursively "../sound" (string-append share "/sound"))
4508 #t))))))
4509 (inputs
4510 `(("glu" ,glu)
4511 ;; Kiki builds fine with freeglut 3.0.0 but segfaults on start.
4512 ("freeglut" ,freeglut-2.8)
4513 ("sdl-union" ,(sdl-union (list sdl
4514 sdl-mixer
4515 sdl-image)))
4516 ("python" ,python-2)))
4517 (native-inputs
4518 `(("swig" ,swig)))
4519 (home-page "http://kiki.sourceforge.net/")
4520 (synopsis "3D puzzle game")
4521 (description "Kiki the nano bot is a 3D puzzle game. It is basically a
4522mixture of the games Sokoban and Kula-World. Your task is to help Kiki, a
4523small robot living in the nano world, repair its maker.")
4524 ;; See <http://metadata.ftp-master.debian.org/changelogs/main/k/
4525 ;; kiki-the-nano-bot/kiki-the-nano-bot_1.0.2+dfsg1-4_copyright>
4526 ;; for a statement from the author.
4527 (license license:public-domain)))
b77e3a1c 4528
649220ad
NG
4529(define-public kiki-the-nano-bot
4530 (deprecated-package "kiki-the-nano-bot" kiki))
6639295f 4531
b77e3a1c
RW
4532(define-public teeworlds
4533 (package
4534 (name "teeworlds")
b74f7f06 4535 (version "0.7.4")
b77e3a1c 4536 (source (origin
f9e5caf9
AV
4537 (method git-fetch)
4538 (uri (git-reference
4539 (url "https://github.com/teeworlds/teeworlds.git")
4540 (commit version)))
4541 (file-name (git-file-name name version))
b77e3a1c
RW
4542 (sha256
4543 (base32
b74f7f06 4544 "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb"))
f9e5caf9
AV
4545 (modules '((guix build utils)
4546 (ice-9 ftw)
4547 (ice-9 regex)
4548 (srfi srfi-1)
4549 (srfi srfi-26)))
4550 (snippet ; remove bundled libraries except md5
4551 '(let ((base-dir "src/engine/external/"))
4552 (for-each (compose (cut delete-file-recursively <>)
4553 (cut string-append base-dir <>))
4554 (remove (cut string-match "(^.)|(^md5$)" <>)
4555 (scandir base-dir)))
b74f7f06 4556 #t))))
b77e3a1c
RW
4557 (build-system gnu-build-system)
4558 (arguments
7aed8b8a 4559 `(#:tests? #f ; no tests included
f9e5caf9
AV
4560 #:modules ((guix build gnu-build-system)
4561 (guix build utils)
4562 (srfi srfi-26))
b77e3a1c
RW
4563 #:phases
4564 (modify-phases %standard-phases
4565 (replace 'configure
4566 (lambda* (#:key outputs #:allow-other-keys)
4567 ;; Embed path to assets.
4568 (substitute* "src/engine/shared/storage.cpp"
4569 (("#define DATA_DIR.*")
4570 (string-append "#define DATA_DIR \""
4571 (assoc-ref outputs "out")
4572 "/share/teeworlds/data"
4573 "\"")))
4574
4575 ;; Bam expects all files to have a recent time stamp.
f9e5caf9 4576 (for-each (cut utime <> 1 1)
b77e3a1c
RW
4577 (find-files "."))
4578
4579 ;; Do not use bundled libraries.
4580 (substitute* "bam.lua"
f9e5caf9
AV
4581 (("local json = Compile.+$")
4582 "local json = nil
4583settings.link.libs:Add(\"jsonparser\")")
4584 (("local png = Compile.+$")
4585 "local png = nil
4586settings.link.libs:Add(\"pnglite\")")
4587 (("local wavpack = Compile.+$")
4588 "local wavpack = nil
4589settings.link.libs:Add(\"wavpack\")")
4590 (("if config\\.zlib\\.value == 1")
4591 "if config.zlib.value"))
4592 (substitute* "src/engine/client/graphics_threaded.cpp"
4593 (("engine/external/pnglite/pnglite\\.h")
4594 "pnglite.h"))
b77e3a1c 4595 (substitute* "src/engine/client/sound.cpp"
f9e5caf9
AV
4596 (("engine/external/wavpack/wavpack\\.h")
4597 "wavpack/wavpack.h"))
b77e3a1c
RW
4598 #t))
4599 (replace 'build
4600 (lambda _
f9e5caf9 4601 (invoke "bam" "-a" "-v" "conf=release")))
b77e3a1c
RW
4602 (replace 'install
4603 (lambda* (#:key outputs #:allow-other-keys)
f9e5caf9
AV
4604 (let* ((arch ,(system->linux-architecture
4605 (or (%current-target-system)
4606 (%current-system))))
076fe846
OP
4607 (build (string-append "build/" (if (string=? arch "i386")
4608 "x86" arch)
4609 "/release/"))
f9e5caf9
AV
4610 (data-built (string-append build "data/"))
4611 (out (assoc-ref outputs "out"))
4612 (bin (string-append out "/bin/"))
4613 (data (string-append out "/share/teeworlds/data/")))
4614 (for-each (cut install-file <> bin)
4615 (map (cut string-append build <>)
4616 '("teeworlds" "teeworlds_srv")))
4617 (copy-recursively data-built data)
b77e3a1c 4618 #t))))))
b77e3a1c
RW
4619 (inputs
4620 `(("freetype" ,freetype)
4621 ("glu" ,glu)
f9e5caf9 4622 ("json-parser" ,json-parser)
b77e3a1c 4623 ("mesa" ,mesa)
f9e5caf9
AV
4624 ("pnglite" ,pnglite)
4625 ("sdl2" ,sdl2)
4626 ("sdl2-image" ,sdl2-image)
4627 ("sdl2-mixer" ,sdl2-mixer)
b77e3a1c
RW
4628 ("wavpack" ,wavpack)
4629 ("zlib" ,zlib)))
4630 (native-inputs
4631 `(("bam" ,bam)
f9e5caf9 4632 ("python" ,python-wrapper)
e402a66b 4633 ("pkg-config" ,pkg-config)))
b77e3a1c
RW
4634 (home-page "https://www.teeworlds.com")
4635 (synopsis "2D retro multiplayer shooter game")
4636 (description "Teeworlds is an online multiplayer game. Battle with up to
463716 players in a variety of game modes, including Team Deathmatch and Capture
4638The Flag. You can even design your own maps!")
4639 (license license:bsd-3)))
e02f1663 4640
162a4a03
RW
4641(define-public enigma
4642 (package
4643 (name "enigma")
4644 (version "1.21")
4645 (source (origin
4646 (method url-fetch)
4647 (uri (string-append "mirror://sourceforge/enigma-game/"
4648 "Release%20" version "/enigma-"
4649 version ".tar.gz"))
4650 (sha256
4651 (base32
4652 "00ffh9pypj1948pg3q9sjp1nmiabh52p5c8wpg9n1dcfgl3cywnq"))))
4653 (build-system gnu-build-system)
4654 (arguments
4655 `(#:configure-flags
4656 (list "--with-system-enet")
4657 #:phases
4658 (modify-phases %standard-phases
4659 (add-after 'unpack 'find-sdl
4660 (lambda _
4661 (substitute* "configure"
4662 (("SDL_ttf.h") "SDL/SDL_ttf.h"))
4663 (substitute* '("tools/ttf2bmf.cc"
4664 "lib-src/enigma-core/ecl_font.cc"
4665 "lib-src/enigma-core/ecl_video.cc"
4666 "lib-src/enigma-core/ecl_buffer.hh"
4667 "src/SoundEngine.cc"
4668 "src/SoundEngine.hh"
4669 "src/MusicManager.cc"
4670 "src/MusicManager.hh"
4671 "src/d_models.cc"
4672 "src/main.cc"
4673 "src/network.cc")
4674 (("#include \"SDL_(image|ttf|mixer|types|syswm|mutex).h\"" line header)
4675 (string-append "#include \"SDL/SDL_" header ".h\"")))
4676 (substitute* "src/main.cc"
4677 (("#include <SDL_(image|ttf|mixer).h>" line header)
4678 (string-append "#include \"SDL/SDL_" header ".h\"")))
4679 #t)))))
4680 (inputs
4681 `(("xerces-c" ,xerces-c)
4682 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4683 ("curl" ,curl)
4684 ("enet" ,enet)))
4685 (native-inputs
4686 `(("pkg-config" ,pkg-config)
4687 ("imagemagick" ,imagemagick)))
340978d7 4688 (home-page "https://www.nongnu.org/enigma")
162a4a03
RW
4689 (synopsis "Puzzle game with a dexterity component")
4690 (description "Enigma is a puzzle game with 550 unique levels. The object
4691of the game is to find and uncover pairs of identically colored ‘Oxyd’ stones.
4692Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams,
4693and most of all, countless hairy puzzles usually block your direct way to the
4694Oxyd stones. Enigma’s game objects (and there are hundreds of them, lest you
4695get bored) interact in many unexpected ways, and since many of them follow the
4696laws of physics (Enigma’s special laws of physics, that is), controlling them
4697with the mouse isn’t always trivial.")
4698 (license license:gpl2+)))
4699
10d53153
CLW
4700(define-public chroma
4701 (package
4702 (name "chroma")
9cf65f05 4703 (version "1.17")
10d53153
CLW
4704 (source (origin
4705 (method url-fetch)
4706 (uri (string-append "http://level7.org.uk/chroma/download/chroma-"
4707 version ".tar.bz2"))
4708 (sha256
4709 (base32
9cf65f05 4710 "047sf00x71xbmi8bqrhfbmr9bk89l2gbykkqsfpw4wz6yfjscs6y"))))
10d53153
CLW
4711 (build-system gnu-build-system)
4712 (arguments
5479dbf9 4713 `(#:tests? #f)) ; no tests included
10d53153
CLW
4714 (inputs
4715 `(("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-ttf)))
4716 ("freetype" ,freetype)
4717 ("ncurses" ,ncurses)
4718 ("fontconfig" ,fontconfig)
4719 ("libxft" ,libxft)))
4720 (native-inputs
4721 `(("pkg-config" ,pkg-config)))
4722 (home-page "http://level7.org.uk/chroma/")
4723 (synopsis "Abstract puzzle game")
4724 (description "Chroma is an abstract puzzle game. A variety of colourful
4725shapes are arranged in a series of increasingly complex patterns, forming
4726 fiendish traps that must be disarmed and mysterious puzzles that must be
4727 manipulated in order to give up their subtle secrets. Initially so
4728 straightforward that anyone can pick it up and begin to play, yet gradually
4729 becoming difficult enough to tax even the brightest of minds.")
4730 (license license:gpl2+)))
4731
649220ad 4732(define-public fillets-ng
e02f1663 4733 (package
649220ad 4734 (name "fillets-ng")
e02f1663
RW
4735 (version "1.0.1")
4736 (source (origin
4737 (method url-fetch)
4738 (uri (string-append "mirror://sourceforge/fillets/"
4739 "Fish%20Fillets%20-%20Next%20Generation/"
4740 version "/fillets-ng-" version ".tar.gz"))
4741 (sha256
4742 (base32
4743 "1nljp75aqqb35qq3x7abhs2kp69vjcj0h1vxcpdyn2yn2nalv6ij"))))
4744 (build-system gnu-build-system)
4745 (arguments
4746 `(#:configure-flags
4747 (list (string-append "--with-lua="
4748 (assoc-ref %build-inputs "lua")))
4749 #:make-flags
4750 (list (string-append "CFLAGS=-I"
4751 (assoc-ref %build-inputs "sdl-union")
4752 "/include/SDL")
4753 (string-append "CXXFLAGS=-I"
4754 (assoc-ref %build-inputs "sdl-union")
4755 "/include/SDL"))
4756 #:phases
4757 (modify-phases %standard-phases
4758 ;; Lua 5.1 does not provide it.
4759 (add-after 'unpack 'do-not-link-with-lualib
4760 (lambda _
4761 (substitute* "configure"
4762 (("-llualib") ""))
4763 #t))
4764 (add-after 'install 'install-data
4765 (lambda* (#:key inputs outputs #:allow-other-keys)
4766 (let ((data (string-append (assoc-ref outputs "out")
4767 "/share/games/fillets-ng")))
4768 (mkdir-p data)
f08d34a0
RW
4769 (invoke "tar" "-xvf"
4770 (assoc-ref inputs "fillets-ng-data")
4771 "--strip-components=1"
4772 "-C" data)))))))
e02f1663
RW
4773 (inputs
4774 `(("sdl-union" ,(sdl-union (list sdl
4775 sdl-mixer
4776 sdl-image
4777 sdl-ttf)))
4778 ("fribidi" ,fribidi)
4779 ("libx11" ,libx11)
4780 ("lua" ,lua-5.1)))
4781 (native-inputs
4782 `(("pkg-config" ,pkg-config)
4783 ("fillets-ng-data"
4784 ,(origin
4785 (method url-fetch)
4786 (uri (string-append "mirror://sourceforge/fillets/"
4787 "Fish%20Fillets%20-%20Next%20Generation/"
4788 version "/fillets-ng-data-" version ".tar.gz"))
4789 (sha256
4790 (base32
4791 "169p0yqh2gxvhdilvjc2ld8aap7lv2nhkhkg4i1hlmgc6pxpkjgh"))))))
4792 (home-page "http://fillets.sourceforge.net/")
4793 (synopsis "Puzzle game")
4794 (description "Fish Fillets NG is strictly a puzzle game. The goal in
4795every of the seventy levels is always the same: find a safe way out. The fish
4796utter witty remarks about their surroundings, the various inhabitants of their
4797underwater realm quarrel among themselves or comment on the efforts of your
4798fish. The whole game is accompanied by quiet, comforting music.")
4799 (license license:gpl2+)))
dd37a545 4800
649220ad
NG
4801(define-public fish-fillets-ng
4802 (deprecated-package "fish-fillets-ng" fillets-ng))
8b6e2bc1 4803
649220ad 4804(define-public crawl
dd37a545 4805 (package
649220ad 4806 (name "crawl")
af48a200 4807 (version "0.24.0")
dd37a545 4808 (source
4809 (origin
4810 (method url-fetch)
4811 (uri (list
4812 ;; Older releases get moved into a versioned directory
4813 (string-append "http://crawl.develz.org/release/"
4814 (version-major+minor version) "/stone_soup-"
4815 version "-nodeps.tar.xz")
4816 ;; Only the latest release is in this directory
4817 (string-append "http://crawl.develz.org/release/stone_soup-"
4818 version "-nodeps.tar.xz")))
4819 (sha256
af48a200 4820 (base32 "0kdq6s12myxfdg75ma9x3ys2nd0xwb3xm2ynlmhg4628va0pnixr"))
1243aaac 4821 (patches (search-patches "crawl-upgrade-saves.patch"))))
dd37a545 4822 (build-system gnu-build-system)
4823 (inputs
4824 `(("lua51" ,lua-5.1)
4825 ("ncurses" ,ncurses)
4826 ("sqlite" ,sqlite)
4827 ("zlib" ,zlib)))
4828 (native-inputs
4829 `(("bison" ,bison)
4830 ("flex" ,flex)
4831 ("perl" ,perl)
fc7d6bc6 4832 ("python" ,python-wrapper)
e366521a 4833 ("python-pyyaml" ,python-pyyaml)
dd37a545 4834 ("pkg-config" ,pkg-config)))
4835 (arguments
a5c8460a 4836 `(#:make-flags
dd37a545 4837 (let* ((sqlite (assoc-ref %build-inputs "sqlite"))
4838 (out (assoc-ref %outputs "out")))
4839 (list (string-append "SQLITE_INCLUDE_DIR=" sqlite "/include")
4840 (string-append "prefix=" out)
4841 "SAVEDIR=~/.crawl"
564df7e5 4842 ;; Don't compile with SSE on systems which don't have it.
a5c8460a
EF
4843 ,@(match (%current-system)
4844 ((or "i686-linux" "x86_64-linux")
4845 '())
4846 (_ '("NOSSE=TRUE")))
dd37a545 4847 ;; don't build any bundled dependencies
4848 "BUILD_LUA="
4849 "BUILD_SQLITE="
4850 "BUILD_ZLIB="
4851 "-Csource"))
4852 #:phases
4853 (modify-phases %standard-phases
606c1987
EF
4854 (add-after 'unpack 'find-SDL-image
4855 (lambda _
4856 (substitute* "source/windowmanager-sdl.cc"
4857 (("SDL_image.h") "SDL2/SDL_image.h"))
4858 #t))
dd37a545 4859 (delete 'configure)
e366521a 4860 (replace 'check
dd37a545 4861 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
4862 (setenv "HOME" (getcwd))
4863 ;; Fake a terminal for the test cases.
4864 (setenv "TERM" "xterm-256color")
e366521a
KK
4865 ;; Run the tests that don't require a debug build.
4866 (apply invoke "make" "nondebugtest"
d59a8ac6
RW
4867 (format #f "-j~d" (parallel-job-count))
4868 ;; Force command line build for test cases.
4869 (append make-flags '("GAME=crawl" "TILES="))))))))
dd37a545 4870 (synopsis "Roguelike dungeon crawler game")
36a0b5b4
PN
4871 (description "Dungeon Crawl Stone Soup (also known as \"Crawl\" or DCSS
4872for short) is a roguelike adventure through dungeons filled with dangerous
4873monsters in a quest to find the mystifyingly fabulous Orb of Zot.")
dd37a545 4874 (home-page "https://crawl.develz.org")
4875 (license (list license:gpl2+
4876 license:bsd-2
4877 license:bsd-3
4878 license:cc0
4879 license:expat
4880 license:zlib
4881 license:asl2.0))))
cae491ab 4882
649220ad
NG
4883(define-public dungeon-crawl-stone-soup
4884 (deprecated-package "dungeon-crawl-stone-soup" crawl))
36a0b5b4 4885
1243aaac 4886;; The linter here claims that patch file names should start with the package
4887;; name. But, in this case, the patches are inherited from crawl with the
4888;; "crawl-" prefix instead of "crawl-tiles-".
649220ad 4889(define-public crawl-tiles
ae548434 4890 (package
649220ad
NG
4891 (inherit crawl)
4892 (name "crawl-tiles")
ae548434 4893 (arguments
4894 (substitute-keyword-arguments
4895 (package-arguments crawl)
4896 ((#:make-flags flags)
4897 `(let ((dejavu (assoc-ref %build-inputs "font-dejavu")))
4898 (cons*
4899 (string-append "PROPORTIONAL_FONT=" dejavu
4900 "/share/fonts/truetype/DejaVuSans.ttf")
4901 (string-append "MONOSPACED_FONT=" dejavu
4902 "/share/fonts/truetype/DejaVuSansMono.ttf")
4903 "TILES=y"
4904 ;; Rename the executable to allow parallel installation with crawl.
4905 "GAME=crawl-tiles"
4906 ,flags)))))
4907 (inputs
4908 `(,@(package-inputs crawl)
4909 ("font-dejavu" ,font-dejavu)
4910 ("freetype6" ,freetype)
4911 ("glu" ,glu)
4912 ("libpng" ,libpng)
4913 ("sdl2" ,sdl2)
4914 ("sdl2-image" ,sdl2-image)
4915 ("sdl2-mixer" ,sdl2-mixer)))
4916 (native-inputs
4917 `(,@(package-native-inputs crawl)
6438a468 4918 ("pngcrush" ,pngcrush)
ae548434 4919 ("which" ,which)))
4920 (synopsis "Graphical roguelike dungeon crawler game")))
4921
649220ad
NG
4922(define-public dungeon-crawl-stone-soup-tiles
4923 (deprecated-package "dungeon-crawl-stone-soup-tiles" crawl-tiles))
24a67aef 4924
cae491ab
JL
4925(define-public lugaru
4926 (package
4927 (name "lugaru")
4928 (version "1.2")
4929 (source (origin
4930 (method url-fetch)
4931 (uri (string-append "https://bitbucket.org/osslugaru/lugaru/downloads/"
30b8b201 4932 "lugaru-" version ".tar.xz"))
cae491ab
JL
4933 (sha256
4934 (base32
4935 "15zgcshy22q51rm72zi6y9z7qlgnz5iw3gczjdlir4bqmxy4gspk"))))
4936 (build-system cmake-build-system)
4937 (arguments
4938 `(#:configure-flags
4939 (list "-DSYSTEM_INSTALL=ON")
4940 ;; no test target
4941 #:tests? #f))
4942 (native-inputs
4943 `(("pkg-config" ,pkg-config)))
4944 (inputs
4945 `(("sdl2" ,sdl2)
4946 ("glu" ,glu)
4947 ("libjpeg" ,libjpeg-turbo)
4948 ("libpng" ,libpng)
4949 ("openal" ,openal)
4950 ("vorbis" ,libvorbis)
4951 ("zlib" ,zlib)))
4952 (home-page "https://osslugaru.gitlab.io")
4953 (synopsis "Cross-platform third-person action game")
4954 (description "Lugaru is a third-person action game. The main character,
4955Turner, is an anthropomorphic rebel bunny rabbit with impressive combat skills.
4956In his quest to find those responsible for slaughtering his village, he uncovers
4957a far-reaching conspiracy involving the corrupt leaders of the rabbit republic
4958and the starving wolves from a nearby den. Turner takes it upon himself to
4959fight against their plot and save his fellow rabbits from slavery.")
4960 (license (list license:gpl2+ ; code
4961 ;; assets:
4962 license:cc-by-sa3.0
4963 license:cc-by-sa4.0))))
bff33e6c
CL
4964
4965(define-public 0ad-data
4966 (package
4967 (name "0ad-data")
8c00379c 4968 (version "0.0.23b-alpha")
bff33e6c
CL
4969 (source
4970 (origin
4971 (method url-fetch)
706d6190 4972 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
4973 version "-unix-data.tar.xz"))
4974 (file-name (string-append name "-" version ".tar.xz"))
4975 (sha256
4976 (base32
8c00379c 4977 "04x7729hk6zw1xj3n4s4lvaviijsnbjf5rhzvjxlr5fygvg4l6z1"))
bff33e6c
CL
4978 (modules '((guix build utils)))
4979 (snippet
4980 #~(begin
6cbee49d
MW
4981 (for-each (lambda (name)
4982 (let* ((dir (string-append "binaries/data/mods/" name))
4983 (file (string-append dir "/" name ".zip"))
4984 (unzip #$(file-append unzip "/bin/unzip")))
6715e1c2 4985 (invoke unzip "-d" dir file)
6cbee49d
MW
4986 (delete-file file)))
4987 '("mod" "public"))
bff33e6c
CL
4988 #t))))
4989 (build-system trivial-build-system)
4990 (native-inputs `(("tar" ,tar)
4991 ("xz" ,xz)))
4992 (arguments
4993 `(#:modules ((guix build utils))
4994 #:builder
4995 (begin
4996 (use-modules (guix build utils))
4997 (let ((out (assoc-ref %outputs "out"))
4998 (source (assoc-ref %build-inputs "source"))
4999 (tar (string-append (assoc-ref %build-inputs "tar") "/bin/tar"))
5000 (xz-path (string-append (assoc-ref %build-inputs "xz") "/bin")))
5001 (setenv "PATH" xz-path)
5002 (mkdir out)
e3cfef22 5003 (invoke tar "xvf" source "-C" out "--strip=3")))))
bff33e6c
CL
5004 (synopsis "Data files for 0ad")
5005 (description "0ad-data provides the data files required by the game 0ad.")
5006 (home-page "https://play0ad.com")
5007 (license (list (license:fsdg-compatible
5008 "http://tavmjong.free.fr/FONTS/ArevCopyright.txt"
88042154
LC
5009 "Similar to the license of the Bitstream Vera fonts.")
5010 (license:fsdg-compatible
5011 "https://www.gnome.org/fonts/#Final_Bitstream_Vera_Fonts")
bff33e6c
CL
5012 license:cc-by-sa3.0
5013 license:expat
5014 license:gfl1.0
5015 license:gpl2+
5016 license:gpl3+))))
5017
5018(define-public 0ad
5019 (package
5020 (name "0ad")
8c00379c 5021 (version "0.0.23b-alpha")
bff33e6c
CL
5022 (source
5023 (origin
5024 (method url-fetch)
706d6190 5025 (uri (string-append "https://releases.wildfiregames.com/0ad-"
bff33e6c
CL
5026 version "-unix-build.tar.xz"))
5027 (file-name (string-append name "-" version ".tar.xz"))
5028 (sha256
5029 (base32
8c00379c 5030 "0draa53xg69i5qhqym85658m45xhwkbiimaldj4sr3703rjgggq1"))))
bff33e6c
CL
5031 ;; A snippet here would cause a build failure because of timestamps
5032 ;; reset. See https://bugs.gnu.org/26734.
bff33e6c
CL
5033 (inputs
5034 `(("0ad-data" ,0ad-data)
5035 ("curl" ,curl)
5036 ("enet" ,enet)
5037 ("gloox" ,gloox)
5038 ("icu4c" ,icu4c)
5039 ("libpng" ,libpng)
706d6190 5040 ("libsodium" ,libsodium)
bff33e6c
CL
5041 ("libvorbis" ,libvorbis)
5042 ("libxcursor" ,libxcursor)
5043 ("libxml2" ,libxml2)
5044 ("miniupnpc" ,miniupnpc)
5045 ("mozjs-38" ,mozjs-38)
5046 ("openal" ,openal)
5047 ("sdl2" ,sdl2)
5048 ("wxwidgets" ,wxwidgets)
5049 ("zlib" ,zlib)))
5050 (native-inputs
5051 `(("boost" ,boost)
c69959f0 5052 ("cmake" ,cmake-minimal)
bff33e6c
CL
5053 ("mesa" ,mesa)
5054 ("pkg-config" ,pkg-config)
5055 ("python-2" ,python-2)))
5056 (build-system gnu-build-system)
5057 (arguments
809b8842
CB
5058 `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
5059 #:phases
bff33e6c
CL
5060 (modify-phases %standard-phases
5061 (add-after 'unpack 'delete-bundles
5062 (lambda _
5063 (delete-file-recursively "libraries/source/spidermonkey")
5064 #t))
5065 (add-after 'unpack 'fix-x11-includes
5066 (lambda _
5067 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5068 (("<Xlib.h>") "<X11/Xlib.h>"))
5069 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5070 (("<Xatom.h>") "<X11/Xatom.h>"))
5071 (substitute* "source/lib/sysdep/os/unix/x/x.cpp"
5072 (("<Xcursor/Xcursor.h>") "<X11/Xcursor/Xcursor.h>"))
5073 #t))
5074 (replace 'configure
5075 (lambda* (#:key inputs outputs #:allow-other-keys)
5076 (let* ((jobs (number->string (parallel-job-count)))
5077 (out (assoc-ref outputs "out"))
5078 (lib (string-append out "/lib"))
5079 (data (string-append out "/share/0ad")))
5080 (setenv "JOBS" (string-append "-j" jobs))
5081 (setenv "CC" "gcc")
5082 (with-directory-excursion "build/workspaces"
7b67bb1f
RW
5083 (invoke "./update-workspaces.sh"
5084 (string-append "--libdir=" lib)
5085 (string-append "--datadir=" data)
5086 ;; TODO: "--with-system-nvtt"
5087 "--with-system-mozjs38")))))
bff33e6c
CL
5088 (delete 'check)
5089 (replace 'install
5090 (lambda* (#:key inputs outputs #:allow-other-keys)
809b8842 5091 (chdir "binaries")
bff33e6c
CL
5092 (let* ((out (assoc-ref outputs "out"))
5093 (bin (string-append out "/bin"))
5094 (lib (string-append out "/lib"))
5095 (data (string-append out "/share/0ad"))
5096 (applications (string-append out "/share/applications"))
5097 (pixmaps (string-append out "/share/pixmaps"))
5098 (0ad-data (assoc-ref inputs "0ad-data")))
5099 ;; data
5100 (copy-recursively "data" data)
5101 (for-each (lambda (file)
5102 (symlink (string-append 0ad-data "/" file)
5103 (string-append data "/" file)))
5104 '("config" "mods/mod" "mods/public" "tools"))
5105 ;; libraries
5106 (for-each (lambda (file)
5107 (install-file file lib))
5108 (find-files "system" "\\.so$"))
5109 ;; binaries
5110 (install-file "system/pyrogenesis" bin)
5111 (with-directory-excursion bin
5112 (symlink "pyrogenesis" "0ad"))
5113 ;; resources
5114 (with-directory-excursion "../build/resources"
5115 (install-file "0ad.desktop" applications)
5116 (install-file "0ad.png" pixmaps))
5117 #t)))
5118 (add-after 'install 'check
5119 (lambda _
5120 (with-directory-excursion "system"
7b67bb1f 5121 (invoke "./test")))))))
bff33e6c
CL
5122 (home-page "https://play0ad.com")
5123 (synopsis "3D real-time strategy game of ancient warfare")
5124 (description "0 A.D. is a real-time strategy (RTS) game of ancient
5125warfare. It's a historically-based war/economy game that allows players to
5126relive or rewrite the history of twelve ancient civilizations, each depicted
5127at their peak of economic growth and military prowess.
5128
51290ad needs a window manager that supports 'Extended Window Manager Hints'.")
5130 (license (list license:bsd-2
5131 license:bsd-3
5132 license:expat
5133 license:gpl2+
5134 license:ibmpl1.0
5135 license:isc
5136 license:lgpl2.1
5137 license:lgpl3
5138 license:mpl2.0
5139 license:zlib))))
dec63df4 5140
5141;; There have been no official releases.
5142(define-public open-adventure
be6e2c30 5143 (let* ((commit "d43854f0f6bb8e9eea7fbce80348150e7e7fc34d")
5144 (revision "2"))
dec63df4 5145 (package
5146 (name "open-adventure")
5147 (version (string-append "2.5-" revision "." (string-take commit 7)))
5148 (source (origin
5149 (method git-fetch)
5150 (uri (git-reference
5151 (url "https://gitlab.com/esr/open-adventure")
5152 (commit commit)))
5153 (file-name (string-append name "-" version "-checkout"))
5154 (sha256
5155 (base32
be6e2c30 5156 "08bwrvf4axb1rsfd6ia1fddsky9pc1p350vjskhaakg2czc6dsk0"))))
dec63df4 5157 (build-system gnu-build-system)
5158 (arguments
5159 `(#:make-flags (list "CC=gcc")
5160 #:parallel-build? #f ; not supported
5161 #:phases
5162 (modify-phases %standard-phases
be6e2c30 5163 (replace 'configure
5164 (lambda* (#:key inputs outputs #:allow-other-keys)
6b1c3efa 5165 ;; Linenoise is meant to be included, so we have to
5166 ;; copy it into the working directory.
be6e2c30 5167 (let* ((linenoise (assoc-ref inputs "linenoise"))
5168 (noisepath (string-append linenoise "/include/linenoise"))
5169 (out (assoc-ref outputs "out")))
5170 (copy-recursively noisepath "linenoise"))
5171 #t))
dec63df4 5172 (add-before 'build 'use-echo
5173 (lambda _
5174 (substitute* "tests/Makefile"
5175 (("/bin/echo") (which "echo")))
5176 #t))
5177 (add-after 'build 'build-manpage
5178 (lambda _
5179 ;; This target is missing a dependency
5180 (substitute* "Makefile"
be6e2c30 5181 ((".adoc.6:" line)
5182 (string-append line " advent.adoc")))
27cd31e6 5183 (invoke "make" ".adoc.6")))
dec63df4 5184 ;; There is no install target
5185 (replace 'install
5186 (lambda* (#:key outputs #:allow-other-keys)
5187 (let* ((out (assoc-ref outputs "out"))
5188 (bin (string-append out "/bin"))
5189 (man (string-append out "/share/man/man6")))
5190 (install-file "advent" bin)
5191 (install-file "advent.6" man))
5192 #t)))))
5193 (native-inputs
be6e2c30 5194 `(("asciidoc" ,asciidoc)
5195 ("linenoise" ,linenoise)
5196 ("python" ,python)
5197 ("python-pyyaml" ,python-pyyaml)))
dec63df4 5198 (home-page "https://gitlab.com/esr/open-adventure")
5199 (synopsis "Colossal Cave Adventure")
5200 (description "The original Colossal Cave Adventure from 1976 was the
5201origin of all text adventures, dungeon-crawl (computer) games, and
5202computer-hosted roleplaying games. This is the last version released by
5203Crowther & Woods, its original authors, in 1995. It has been known as
5204\"adventure 2.5\" and \"430-point adventure\".")
5205 (license license:bsd-2))))
1f88f189 5206
649220ad 5207(define-public tome4
1f88f189 5208 (package
649220ad 5209 (name "tome4")
e75221fd 5210 (version "1.6.6")
1f88f189
OP
5211 (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
5212 (source
5213 (origin
5214 (method url-fetch)
5215 (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-"
5216 version ".tar.bz2"))
5217 (sha256
5218 (base32
e75221fd 5219 "1amx0y49scy9hq71wjvkdzvgclwa2g54vkv4bf40mxyp4pl0bq7m"))
1f88f189
OP
5220 (modules '((guix build utils)))
5221 (snippet
6cbee49d
MW
5222 '(begin
5223 (substitute* '("src/music.h" "src/tSDL.h")
5224 (("#elif defined(__FreeBSD__)" line)
5225 (string-append
5226 line " || defined(__GNUC__)")))
19c0cdb9
OP
5227 (substitute* '("src/tgl.h")
5228 (("#include <GL/glext.h>") ""))
6cbee49d 5229 #t))))
1f88f189
OP
5230 (build-system gnu-build-system)
5231 (native-inputs
5232 `(("unzip" ,unzip)))
5233 (inputs
5234 `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
5235 ("glu" ,glu)
5236 ("premake4" ,premake4)
5237 ("openal" ,openal)
5238 ("vorbis" ,libvorbis)
5239 ("luajit" ,luajit)))
5240 (arguments
5241 `(#:make-flags '("CC=gcc" "config=release")
ba73c434
MB
5242 ;; XXX: Building in parallel occasionally causes this build failure:
5243 ;; ../src/luajit2/src/host/buildvm.c:73:10: fatal error: buildvm_arch.h:
5244 ;; No such file or directory
5245 #:parallel-build? #f
1f88f189 5246 #:phases (modify-phases %standard-phases
972b87b1 5247 (delete 'bootstrap)
1f88f189
OP
5248 (replace 'configure
5249 (lambda _
13a504af 5250 (invoke "premake4" "gmake")
1f88f189
OP
5251 #t))
5252 (add-after 'set-paths 'set-sdl-paths
5253 (lambda* (#:key inputs #:allow-other-keys)
5254 (setenv "CPATH"
5255 (string-append (assoc-ref inputs "sdl-union")
fa0d5854
MB
5256 "/include/SDL2:"
5257 (getenv "CPATH")))
1f88f189
OP
5258 #t))
5259 (delete 'check)
5260 ;; premake doesn't provide install target
5261 (replace 'install
5262 (lambda* (#:key inputs outputs #:allow-other-keys)
5263 (let* ((out (assoc-ref outputs "out"))
5264 (usr (string-append out "/usr"))
5265 (bin (string-append out "/bin"))
5266 (licenses (string-append out "/share/licenses"))
5267 (documents (string-append out "/share/doc"))
5268 (pixmaps (string-append out "/share/pixmaps"))
5269 (icon "te4-icon.png")
5270 (data (string-append out "/share/" ,name))
5271 (applications (string-append
5272 out "/share/applications"))
5273 (unzip (string-append
5274 (assoc-ref inputs "unzip") "/bin/unzip"))
5275 (wrapper (string-append bin "/" ,name)))
5276 ;; icon
5277 (mkdir-p pixmaps)
26d52476
OP
5278 (invoke unzip "-j"
5279 (string-append
5280 "game/engines/te4-" ,version ".teae")
5281 (string-append
5282 "data/gfx/" icon) "-d" pixmaps)
1f88f189
OP
5283 ;; game executable
5284 (install-file "t-engine" data)
5285 (mkdir-p bin)
5286 (with-output-to-file wrapper
5287 (lambda ()
5288 (display
5289 (string-append
5290 "#!/bin/sh\n"
5291 ;; No bootstrap code found,
5292 ;; defaulting to working directory
5293 ;; for engine code!
5294 "cd " data "\n"
5295 "exec -a tome4 ./t-engine \"$@\"\n"))))
5296 (chmod wrapper #o555)
5297 ;; licenses
5298 (for-each (lambda (file)
5299 (install-file file licenses))
5300 '("COPYING" "COPYING-MEDIA"))
5301 ;; documents
5302 (for-each (lambda (file)
5303 (install-file file documents))
5304 '("CONTRIBUTING" "CREDITS"))
5305 ;; data
5306 (copy-recursively "bootstrap" (string-append
5307 data "/bootstrap"))
5308 (copy-recursively "game" (string-append data "/game"))
5309 ;; launcher
5310 (mkdir-p applications)
5311 (with-output-to-file (string-append applications "/"
5312 ,name ".desktop")
5313 (lambda ()
5314 (display
5315 (string-append
5316 "[Desktop Entry]
5317Name=ToME4
5318Comment=" ,synopsis "\n"
5319"Exec=" ,name "\n"
5320"Icon=" icon "\n"
5321"Terminal=false
5322Type=Application
5323Categories=Game;RolePlaying;\n")))))
5324 #t)))))
5325 (home-page "https://te4.org")
5326 (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based
5327combat and advanced character building. Play as one of many unique races and
5328classes in the lore-filled world of Eyal, exploring random dungeons, facing
5329challenging battles, and developing characters with your own tailored mix of
5330abilities and powers. With a modern graphical and customisable interface,
5331intuitive mouse control, streamlined mechanics and deep, challenging combat,
5332Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.")
5333 (license license:gpl3+)))
7a070f02 5334
649220ad
NG
5335(define-public tales-of-maj-eyal
5336 (deprecated-package "tales-of-maj-eyal" tome4))
f6a21d61 5337
7a070f02 5338(define-public quakespasm
5339 (package
5340 (name "quakespasm")
18bbaf67 5341 (version "0.93.2")
7a070f02 5342 (source
5343 (origin
5344 (method url-fetch)
5345 (uri (string-append "mirror://sourceforge/quakespasm/Source/quakespasm-"
5346 version ".tgz"))
5347 (sha256
18bbaf67 5348 (base32 "0qm0j5drybvvq8xadfyppkpk3rxqsxbywzm6iwsjwdf0iia3gss5"))))
7a070f02 5349 (arguments
5350 `(#:tests? #f
5351 #:make-flags '("CC=gcc"
5352 "MP3LIB=mpg123"
5353 "USE_CODEC_FLAC=1"
5354 "USE_CODEC_MIKMOD=1"
5355 "USE_SDL2=1"
5356 "-CQuake")
5357 #:phases (modify-phases %standard-phases
5358 (delete 'configure)
5359 (add-after 'unpack 'fix-makefile-paths
5360 (lambda* (#:key outputs #:allow-other-keys)
5361 (let ((out (assoc-ref outputs "out")))
5362 (mkdir-p (string-append out "/bin"))
5363 (substitute* "Quake/Makefile"
5364 (("/usr/local/games")
5365 (string-append out "/bin")))
5366 #t))))))
5367 (build-system gnu-build-system)
5368 (inputs `(("libmikmod" ,libmikmod)
5369 ("libvorbis" ,libvorbis)
5370 ("flac" ,flac)
5371 ("mesa" ,mesa)
5372 ("mpg123" ,mpg123)
5373 ("sdl2" ,sdl2)))
5374 (synopsis "First person shooter engine for Quake 1")
5375 (description "Quakespasm is a modern engine for id software's Quake 1.
5376It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5377some graphical niceities, and numerous bug-fixes and other improvements.")
5378 (home-page "http://quakespasm.sourceforge.net/")
5379 (license license:gpl2+)))
916bb947 5380
7a6be5b9
RH
5381(define-public vkquake
5382 (package
5383 (inherit quakespasm)
5384 (name "vkquake")
3e7b376e 5385 (version "1.01.0")
7a6be5b9
RH
5386 (source
5387 (origin
f5e1a0e5
TGR
5388 (method git-fetch)
5389 (uri (git-reference
5390 (url "https://github.com/Novum/vkQuake.git")
5391 (commit version)))
5392 (file-name (git-file-name name version))
7a6be5b9 5393 (sha256
f5e1a0e5 5394 (base32 "1iwin8j5kbyrknbkhjgpy8nmm7pxqzr0daa9gn7p38qhg2mh0a39"))))
7a6be5b9
RH
5395 (arguments
5396 `(#:make-flags
5397 (let ((vulkanlib (string-append (assoc-ref %build-inputs
e6fcf903 5398 "vulkan-loader") "/lib")))
7a6be5b9
RH
5399 (list "CC=gcc"
5400 "MP3LIB=mpg123"
5401 "USE_CODEC_FLAC=1"
5402 "USE_CODEC_MIKMOD=1"
5403 "USE_SDL2=1"
5404 (string-append "LDFLAGS=-Wl,-rpath=" vulkanlib)
5405 "-CQuake"))
5406 #:phases (modify-phases %standard-phases
5407 (delete 'configure)
5408 (add-after 'unpack 'fix-makefile-paths
5409 (lambda* (#:key outputs #:allow-other-keys)
5410 (let ((vulkan (assoc-ref %build-inputs
e6fcf903 5411 "vulkan-loader"))
7a6be5b9
RH
5412 (out (assoc-ref outputs "out")))
5413 (mkdir-p (string-append out "/bin"))
5414 (substitute* "Quake/Makefile" ((" /usr")
5415 (string-append " " out)))
5416 (substitute* "Quake/Makefile" (("/games")
5417 (string-append "/bin")))
5418 (substitute* "Quake/Makefile" (("..VULKAN_SDK.") vulkan))
5419 #t))))
5420 ,@(strip-keyword-arguments '(#:make-flags #:phases)
5421 (package-arguments quakespasm))))
4108886b
RH
5422 (inputs `(("vulkan-headers" ,vulkan-headers)
5423 ("vulkan-loader" ,vulkan-loader)
7a6be5b9
RH
5424 ,@(package-inputs quakespasm)))
5425 (description "vkquake is a modern engine for id software's Quake 1.
5426It includes support for 64 bit CPUs, custom music playback, a new sound driver,
5427some graphical niceities, and numerous bug-fixes and other improvements.")
5428 (home-page "https://github.com/Novum/vkQuake")))
5429
916bb947 5430(define-public yamagi-quake2
5431 (package
5432 (name "yamagi-quake2")
5433 (version "7.10")
5434 (source
5435 (origin
5436 (method url-fetch)
5437 (uri (string-append "https://deponie.yamagi.org/quake2/quake2-"
5438 version ".tar.xz"))
5439 (sha256
5440 (base32
5441 "0psinbg25mysd58k99s1n34w31w5hj1vppb39gdjb0zqi6sl6cps"))))
5442 (build-system gnu-build-system)
5443 (arguments
5444 `(#:tests? #f
5445 #:make-flags
5446 (list "CC=gcc"
5447 ;; link openAL instead of using dlopen at runtime
5448 "DLOPEN_OPENAL=\"no\""
5449 ;; an optional directory where it will look for quake2 data files
5450 ;; in addition to the current working directory
5451 "WITH_SYSTEMWIDE=yes"
5452 "WITH_SYSTEMDIR=\"/opt/quake2\"")
5453 #:phases
5454 (modify-phases %standard-phases
5455 (delete 'configure)
5456 (replace 'install
5457 (lambda* (#:key outputs #:allow-other-keys)
5458 (let ((out (assoc-ref outputs "out")))
5459 (mkdir-p (string-append out "/lib"))
5460 (mkdir-p (string-append out "/bin"))
5461 ;; The yamagi-quake2 binary must be in the same directory
5462 ;; as it's engine libraries, but symlinking it to /bin is okay
5463 ;; https://github.com/yquake2/yquake2/blob/master/stuff/packaging.md
5464 (copy-recursively "release"
5465 (string-append out "/lib/yamagi-quake2"))
5466 (symlink (string-append out "/lib/yamagi-quake2/quake2")
5467 (string-append out "/bin/yamagi-quake2"))
5468 (symlink (string-append out "/lib/yamagi-quake2/q2ded")
5469 (string-append out "/bin/yamagi-q2ded"))))))))
5470 (inputs `(("sdl2" ,sdl2)
5471 ("mesa" ,mesa)
5472 ("libvorbis" ,libvorbis)
5473 ("zlib" ,zlib)
5474 ("openal" ,openal)))
5475 (native-inputs `(("pkg-config" ,pkg-config)))
5476 (synopsis "First person shooter engine based on quake2")
5477 (description "Yamagi Quake II is an enhanced client for id Software's Quake II.
5478The main focus is an unchanged single player experience like back in 1997,
5479thus the gameplay and the graphics are unaltered. However the user may use one
5480of the unofficial retexturing packs. In comparison with the official client,
5481over 1000 bugs were fixed and an extensive code audit done,
5482making Yamagi Quake II one of the most solid Quake II implementations available.")
5483 (home-page "https://www.yamagi.org/quake2/")
5484 (license (list license:gpl2+ ; game and server
5485 (license:non-copyleft ; info-zip
5486 "file://LICENSE"
5487 "See Info-Zip section.")
5488 license:public-domain)))) ; stb
c1228231 5489
e7448859
MIP
5490(define-public nudoku
5491 (package
5492 (name "nudoku")
5493 (version "1.0.0")
5494 (source (origin
5495 (method url-fetch)
5496 (uri (string-append "https://github.com/jubalh/nudoku/"
5497 "releases/download/" version
5498 "/nudoku-" version ".tar.xz"))
5499 (sha256
5500 (base32
5501 "0nr2j2z07nxk70s8xnmmpzccxicf7kn5mbwby2kg6aq8paarjm8k"))))
5502 (build-system gnu-build-system)
5503 (inputs `(("ncurses" ,ncurses)))
5504 (home-page "https://jubalh.github.io/nudoku/")
5505 (synopsis "Sudoku for your terminal")
5506 (description "Nudoku is a ncurses-based Sudoku game for your terminal.")
5507 (license license:gpl3+)))
5508
c1228231
NG
5509(define-public the-butterfly-effect
5510 (package
5511 (name "the-butterfly-effect")
5512 (version "0.9.3.1")
5513 (source
5514 (origin
089c6b00
EF
5515 (method git-fetch)
5516 (uri (git-reference
5517 (url "https://github.com/the-butterfly-effect/tbe.git")
5518 (commit (string-append "v" version))))
5519 (file-name (git-file-name name version))
c1228231
NG
5520 (sha256
5521 (base32
089c6b00 5522 "1ag2cp346f9bz9qy6za6q54id44d2ypvkyhvnjha14qzzapwaysj"))))
c1228231
NG
5523 (build-system gnu-build-system)
5524 (arguments
5525 `(#:phases
5526 (modify-phases %standard-phases
5527 (delete 'configure)
5528 ;; There is no "install" phase. By default, tbe is installed
5529 ;; in the build directory. Provide our own installation.
5530 (replace 'install
5531 (lambda* (#:key outputs #:allow-other-keys)
5532 (let* ((out (assoc-ref outputs "out"))
5533 (bin (string-append out "/bin"))
5534 (share (string-append out "/share")))
5535 (install-file "usr/games/tbe" bin)
5536 (mkdir-p share)
5537 (copy-recursively "usr/share" share)
5538 #t))))
5539 ;; Test suite requires a running Xorg server. Even when
5540 ;; provided, it fails with "D-Bus library appears to be
5541 ;; incorrectly set up; failed to read machine uuid: Failed to
5542 ;; open "/etc/machine-id": No such file or directory" along
5543 ;; with multiple "QPainter:: ... Painter not active" warnings.
5544 #:tests? #f))
5545 (inputs
5546 `(("qtbase" ,qtbase)
5547 ("qtsvg" ,qtsvg)))
5548 (native-inputs
c69959f0 5549 `(("cmake" ,cmake-minimal)
c1228231
NG
5550 ("gettext-minimal" ,gettext-minimal)
5551 ("qttools" ,qttools)))
5552 (synopsis "Realistic physics puzzle game")
5553 (description "The Butterfly Effect (tbe) is a game that uses
5554realistic physics simulations to combine lots of simple mechanical
5555elements to achieve a simple goal in the most complex way possible.")
5556 (home-page "http://the-butterfly-effect.org/")
5557 ;; Main license is GPL2-only. However, artwork is distributed
5558 ;; under various licenses, listed here.
5559 (license (list license:gpl2 license:public-domain license:expat
5560 license:cc-by-sa3.0 license:gpl3+ license:wtfpl2))))
aac1aa75
EB
5561
5562(define-public pioneer
5563 (package
5564 (name "pioneer")
8f33b76e 5565 (version "20200203")
aac1aa75 5566 (source (origin
6a03ccf4
EB
5567 (method git-fetch)
5568 (uri (git-reference
5569 (url "https://github.com/pioneerspacesim/pioneer.git")
5570 (commit version)))
5571 (file-name (git-file-name name version))
aac1aa75
EB
5572 (sha256
5573 (base32
8f33b76e 5574 "1011xsi94jhw98mhm8kryq8ajig0qfbrdx5xdasi92bd4nk7lcp8"))))
ed3e7b72 5575 (build-system cmake-build-system)
aac1aa75 5576 (native-inputs
ed3e7b72 5577 `(("pkg-config" ,pkg-config)))
aac1aa75
EB
5578 (inputs
5579 `(("assimp" ,assimp)
5580 ("curl" ,curl)
5581 ("freetype" ,freetype)
ed3e7b72 5582 ("glew" ,glew)
aac1aa75
EB
5583 ("glu" ,glu)
5584 ("libpng" ,libpng)
5585 ("libsigc++" ,libsigc++)
5586 ("libvorbis" ,libvorbis)
5587 ("lua" ,lua-5.2) ;not compatible with 5.3
5588 ("mesa" ,mesa)
5589 ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
5590 (arguments
5591 `(#:tests? #f ;tests are broken
ed3e7b72
EB
5592 #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
5593 (string-append "-DPIONEER_DATA_DIR="
5594 %output "/share/games/pioneer"))))
aac1aa75
EB
5595 (home-page "http://pioneerspacesim.net")
5596 (synopsis "Game of lonely space adventure")
5597 (description
5598 "Pioneer is a space adventure game set in our galaxy at the turn of the
559931st century. The game is open-ended, and you are free to eke out whatever
5600kind of space-faring existence you can think of. Look for fame or fortune by
5601exploring the millions of star systems. Turn to a life of crime as a pirate,
5602smuggler or bounty hunter. Forge and break alliances with the various
5603factions fighting for power, freedom or self-determination. The universe is
5604whatever you make of it.")
5605 (license license:gpl3)))
57f9671d 5606
5607(define-public badass
5608 (let ((commit "3c3cd669b4fc8f73a102e3702788f7b28dc47dbb")
5609 (revision "0"))
5610 (package
5611 (name "badass")
5612 (version (git-version "0.0" revision commit))
5613 (source (origin
5614 (method git-fetch)
5615 (uri (git-reference
5616 (url "https://github.com/umayr/badass.git")
5617 (commit commit)))
5618 (file-name (git-file-name name version))
5619 (sha256
5620 (base32
5621 "05c9vdcb5ym3z0n5ll3v39mw4yl9jcjnlydmn0yl89ai9pv71zb6"))))
5622 (build-system go-build-system)
5623 (arguments
5624 '(#:import-path "github.com/umayr/badass"))
5625 (synopsis "Hacking contribution graphs in git")
5626 (description
5627 "Badass generates false commits for a range of dates, essentially
5628hacking the gamification of contribution graphs on platforms such as
5629Github or Gitlab.")
5630 (home-page "https://github.com/umayr/badass")
5631 (license license:expat))))
fa7d8ea1
NG
5632
5633(define-public colobot
5634 (package
5635 (name "colobot")
2dad4c91 5636 (version "0.1.12-alpha")
fa7d8ea1
NG
5637 (source
5638 (origin
2dad4c91
NG
5639 (method git-fetch)
5640 (uri (git-reference
5641 (url "https://github.com/colobot/colobot.git")
5642 (commit (string-append "colobot-gold-" version))
5643 (recursive? #t))) ;for "data/" subdir
5644 (file-name (git-file-name name version))
fa7d8ea1
NG
5645 (sha256
5646 (base32
2dad4c91 5647 "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2"))))
fa7d8ea1
NG
5648 (build-system cmake-build-system)
5649 (arguments
5650 `(#:tests? #f ;no test
5651 #:phases
5652 (modify-phases %standard-phases
2dad4c91
NG
5653 (add-after 'unpack 'make-git-checkout-writable
5654 (lambda _
5655 (for-each make-file-writable (find-files "."))
5656 #t))
5657 (add-after 'unpack 'fix-directories
5658 (lambda _
5659 (substitute* "CMakeLists.txt"
5660 (("(\\$\\{CMAKE_INSTALL_PREFIX\\})/games" _ prefix)
5661 (string-append prefix "/bin"))
5662 (("(\\$\\{CMAKE_INSTALL_PREFIX\\}/share)/games/colobot" _ prefix)
5663 (string-append prefix "/colobot")))
5664 #t))
5665 (add-after 'fix-directories 'install-music
5666 ;; Retrieve and install music files.
fa7d8ea1
NG
5667 (lambda* (#:key inputs #:allow-other-keys)
5668 ;; Installation process tries to download music files using
2dad4c91
NG
5669 ;; "wget" if not already present. Since we are going another
5670 ;; route, skip "wget" command check.
fa7d8ea1
NG
5671 (substitute* "data/music/CMakeLists.txt"
5672 (("find_program\\(WGET wget\\)") ""))
2dad4c91 5673 ;; Populate "music/" directory.
fa7d8ea1 5674 (let ((data (assoc-ref inputs "colobot-music")))
2dad4c91
NG
5675 (invoke "tar" "-xvf" data "-Cdata/music"))
5676 #t)))))
fa7d8ea1 5677 (native-inputs
2dad4c91 5678 `(("colobot-music"
fa7d8ea1
NG
5679 ,(origin
5680 (method url-fetch)
5681 (uri (string-append "https://colobot.info/files/music/"
5682 "colobot-music_ogg_" version ".tar.gz"))
5683 (sha256
5684 (base32
5685 "1s86cd36rwkff329mb1ay1wi5qqyi35564ppgr3f4qqz9wj9vs2m"))))
5686 ("gettext" ,gettext-minimal)
5687 ("librsvg" ,librsvg)
5688 ("po4a" ,po4a)
5689 ("python" ,python-wrapper)))
5690 (inputs
5691 `(("boost" ,boost)
5692 ("glew" ,glew)
5693 ("libogg" ,libogg)
5694 ("libpng" ,libpng)
5695 ("libsndfile" ,libsndfile)
5696 ("libvorbis" ,libvorbis)
5697 ("openal" ,openal)
5698 ("physfs" ,physfs)
5699 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-ttf)))))
5700 (synopsis "Educational programming strategy game")
5701 (description "Colobot: Gold Edition is a real-time strategy game, where
5702you can program your units (bots) in a language called CBOT, which is similar
5703to C++ and Java. Your mission is to find a new planet to live and survive.
5704You can save humanity and get programming skills!")
5705 (home-page "https://colobot.info")
5706 (license license:gpl3+)))
2922852e 5707
5708(define-public gzdoom
5709 (package
5710 (name "gzdoom")
570b89f4
TGR
5711 (version "4.3.2")
5712 (source
5713 (origin
5714 (method git-fetch)
5715 (uri (git-reference
5716 (url "https://github.com/coelckers/gzdoom.git")
5717 (commit (string-append "g" version))))
5718 (file-name (git-file-name name version))
5719 (sha256
5720 (base32 "0i4hyg72z84fc6ca2ic9q82q5cbgrbd7bynl3kpkypxvyasq08wz"))
5721 (patches (search-patches "gzdoom-search-in-installed-share.patch"
5722 "gzdoom-find-system-libgme.patch"))
5723 (modules '((guix build utils)))
5724 (snippet
5725 '(begin
5726 ;; Remove some bundled libraries. XXX There are more, but removing
5727 ;; them would require, at least, patching the build system.
5728 (with-directory-excursion "libraries"
5729 (delete-file-recursively "bzip2")
5730 (delete-file-recursively "game-music-emu")
5731 (delete-file-recursively "jpeg")
5732 (delete-file-recursively "zlib"))
5733 #t))))
2922852e 5734 (arguments
5735 '(#:tests? #f
5736 #:configure-flags
5737 (let ((out (assoc-ref %outputs "out")))
5738 (list
5739 (string-append
5740 "-DCMAKE_CXX_FLAGS:="
5741 "-DSHARE_DIR=\\\"" out "/share/\\\" "
5742 "-DGUIX_OUT_PK3=\\\"" out "/share/games/doom\\\"")
570b89f4
TGR
5743
5744 ;; The build requires some extra convincing not to use the bundled
5745 ;; libgme previously deleted in the soure snippet.
5746 "-DFORCE_INTERNAL_GME=OFF"
5747
5748 ;; Link libraries at build time instead of loading them at run time.
2922852e 5749 "-DDYN_OPENAL=OFF"
5750 "-DDYN_FLUIDSYNTH=OFF"
5751 "-DDYN_GTK=OFF"
5752 "-DDYN_MPG123=OFF"
5753 "-DDYN_SNDFILE=OFF"))
5754 #:phases
5755 (modify-phases %standard-phases
5756 (add-before 'configure 'fix-referenced-paths
5757 (lambda* (#:key inputs outputs #:allow-other-keys)
5758 (let ((fluid-3 (assoc-ref inputs "fluid-3"))
5759 (timidity++ (assoc-ref inputs "timidity++"))
5760 (out (assoc-ref outputs "out")))
5761
5762 (substitute*
5763 "src/CMakeLists.txt"
5764 (("COMMAND /bin/sh")
5765 (string-append "COMMAND " (which "sh"))))
5766
5767 (substitute*
570b89f4 5768 "libraries/zmusic/mididevices/music_fluidsynth_mididevice.cpp"
2922852e 5769 (("/usr/share/sounds/sf2/FluidR3_GM.sf2")
5770 (string-append fluid-3 "/share/soundfonts/FluidR3Mono_GM.sf3")))
5771
5772 (substitute*
570b89f4 5773 "libraries/zmusic/mididevices/music_timiditypp_mididevice.cpp"
2922852e 5774 (("exename = \"timidity\"")
5775 (string-append "exename = \"" timidity++ "/bin/timidity\"")))
5776 #t))))))
5777 (build-system cmake-build-system)
5778 (inputs `(("bzip2" ,bzip2)
5779 ("fluid-3" ,fluid-3)
570b89f4 5780 ("fluidsynth" ,fluidsynth)
2922852e 5781 ("gtk+3" ,gtk+)
5782 ("libgme" ,libgme)
5783 ("libjpeg" ,libjpeg)
5784 ("libsndfile" ,libsndfile)
5785 ("mesa" ,mesa)
5786 ("mpg123" ,mpg123)
5787 ("openal" ,openal)
5788 ("sdl2" ,sdl2)
5789 ("timidity++" ,timidity++)
5790 ("zlib" ,zlib)))
5791 (native-inputs `(("pkg-config" ,pkg-config)
5792 ("unzip" ,unzip)))
5793 (synopsis "Modern Doom 2 source port")
5794 (description "GZdoom is a port of the Doom 2 game engine, with a modern
5795renderer. It improves modding support with ZDoom's advanced mapping features
5796and the new ZScript language. In addition to Doom, it supports Heretic, Hexen,
5797Strife, Chex Quest, and fan-created games like Harmony, Hacx and Freedoom.")
5798 (home-page "https://zdoom.org/index")
642b195a
EF
5799 ;; The source uses x86 assembly
5800 (supported-systems '("x86_64-linux" "i686-linux"))
2922852e 5801 (license (list license:gpl3+ ; gzdoom game
5802 license:lgpl3+ ; gzdoom renderer
5803 license:expat ; gdtoa
5804 (license:non-copyleft ; modified dumb
5805 "file://dumb/licence.txt"
5806 "Dumb license, explicitly GPL compatible.")))))
b1642338 5807
6f565d6c
P
5808(define-public odamex
5809 (package
5810 (name "odamex")
5448b16e 5811 (version "0.8.1")
6f565d6c
P
5812 (source
5813 (origin
5814 (method url-fetch)
5815 (uri (string-append
5816 "mirror://sourceforge/odamex/Odamex/" version "/"
5817 "odamex-src-" version ".tar.gz"))
5818 (sha256
5448b16e 5819 (base32 "1ywbqkfacc9fc5di3dn95y5ah2ys9i241j64q3f37a73x92llw1i"))))
6f565d6c 5820 (build-system cmake-build-system)
5448b16e 5821 (arguments `(#:tests? #f)) ; no tests
6f565d6c
P
5822 (inputs
5823 `(("sdl" ,sdl)
5824 ("sdl-mixer" ,sdl-mixer)
5825 ("zlib" ,zlib)
5826 ("libpng" ,libpng)
5827 ("alsa-lib" ,alsa-lib)))
5828 (home-page "https://odamex.net/")
5829 (synopsis "Multiplayer Doom port")
5830 (description "Odamex is a modification of the Doom engine that
5831allows players to easily join servers dedicated to playing Doom
5832online.")
5833 (license license:gpl2+)))
5834
fc16bbb7
JK
5835(define-public chocolate-doom
5836 (package
5837 (name "chocolate-doom")
5838 (version "3.0.0")
5839 (source (origin
5840 (method url-fetch)
5841 (uri (string-append "https://www.chocolate-doom.org/downloads/"
5842 version
5843 "/chocolate-doom-"
5844 version
5845 ".tar.gz"))
5846 (sha256
5847 (base32
5848 "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
5849 (build-system gnu-build-system)
5850 (inputs `(("sdl2-net" ,sdl2-net)
5851 ("sdl2-mixer" , sdl2-mixer)
5852 ("sdl2" ,sdl2)))
5853 (native-inputs
5854 `(("pkg-config" ,pkg-config)))
5855 (synopsis "Doom source port preserving the look, feel, and bugs of vanilla
5856Doom")
5857 (description
5858 "Chocolate Doom takes a different approach to other source ports. Its
5859aim is to accurately reproduce the experience of playing Vanilla Doom. It is
5860a conservative, historically accurate Doom source port, which is compatible
5861with the thousands of mods and levels that were made before the Doom source
5862code was released. Rather than flashy new graphics, Chocolate Doom's main
5863features are its accurate reproduction of the game as it was played in the
58641990s. The project is developed around a carefully-considered philosophy that
5865intentionally restricts which features may be added (and rejects any that
5866affect gameplay).")
5867 (home-page "https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom")
5868 (license license:gpl2)))
5869
3f9a027c
DF
5870(define-public crispy-doom
5871 (package
5872 (inherit chocolate-doom)
5873 (name "crispy-doom")
17cb06a6 5874 (version "5.6.4")
3f9a027c
DF
5875 (source (origin
5876 (method git-fetch)
5877 (uri (git-reference
5878 (url "https://github.com/fabiangreffrath/crispy-doom.git")
5879 (commit (string-append "crispy-doom-" version))))
5880 (file-name (git-file-name name version))
5881 (sha256
17cb06a6 5882 (base32 "1ls4v2kpb7vi7xji5yqbmyc5lfkz497h1vvj9w86wkrw8k59hlg2"))))
3f9a027c
DF
5883 (native-inputs
5884 (append
5885 (package-native-inputs chocolate-doom)
5886 `(("automake" ,automake)
5887 ("autoreconf" ,autoconf))))
5888 (arguments
5889 `(#:phases
5890 (modify-phases %standard-phases
5891 (replace 'bootstrap
17cb06a6 5892 ;; The bundled autogen.sh script unconditionally runs ./configure.
3f9a027c
DF
5893 (lambda _ (invoke "autoreconf" "-vif"))))))
5894 (synopsis "Limit-removing enhanced-resolution Doom source port based on
5895Chocolate Doom")
5896 (description
5897 "Crispy Doom is a friendly fork of Chocolate Doom that provides a higher
5898display resolution, removes the static limits of the Doom engine and offers
5899further optional visual, tactical and physical enhancements while remaining
5900entirely config file, savegame, netplay and demo compatible with the
5901original.")
5902 (home-page "https://www.chocolate-doom.org/wiki/index.php/Crispy_Doom")))
5903
64b47a29
OP
5904(define shlomif-cmake-modules
5905 (origin
5906 (method url-fetch)
5907 (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
5908 "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
5909 "shlomif-cmake-modules/Shlomif_Common.cmake"))
5910 (sha256
5911 (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
c5799025
OP
5912
5913(define-public rinutils
5914 (package
5915 (name "rinutils")
5916 (version "0.2.0")
5917 (source (origin
5918 (method git-fetch)
5919 (uri (git-reference
5920 (url "https://github.com/shlomif/rinutils.git")
5921 (commit version)))
5922 (file-name (git-file-name name version))
5923 (sha256
5924 (base32
5925 "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
5926 (native-inputs
5927 `(("perl" ,perl)
5928 ;; The following is only needed for tests.
5929 ("perl-file-find-object" ,perl-file-find-object)
5930 ("perl-test-differences" ,perl-test-differences)
5931 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
5932 ("perl-io-all" ,perl-io-all)
5933 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
5934 ("cmake-rules" ,shlomif-cmake-modules)
5935 ("pkg-config" ,pkg-config)))
5936 (inputs
5937 `(("cmocka" ,cmocka)
5938 ("perl-env-path", perl-env-path)
5939 ("perl-inline" ,perl-inline)
5940 ("perl-inline-c" ,perl-inline-c)
5941 ("perl-string-shellquote" ,perl-string-shellquote)
5942 ("perl-test-trailingspace" ,perl-test-trailingspace)
5943 ("perl-file-find-object-rule" ,perl-file-find-object-rule)
5944 ("perl-text-glob" ,perl-text-glob)
5945 ("perl-number-compare" ,perl-number-compare)
5946 ("perl-moo" ,perl-moo)))
5947 (arguments
5948 `(#:phases
5949 (modify-phases %standard-phases
5950 (add-after 'unpack 'fix-build-env
5951 (lambda* (#:key inputs #:allow-other-keys)
5952 (use-modules (guix build utils))
5953 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
5954 (copy-file cmake-rules
5955 (string-append "cmake/"
5956 (strip-store-file-name cmake-rules)))
5957 #t)))
5958 (replace 'check
5959 (lambda _
5960 (with-directory-excursion "../source"
5961 (setenv "FCS_TEST_BUILD" "1")
5962 (setenv "RINUTILS_TEST_BUILD" "1")
5963 ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
5964 ;; which requires tidy-all.
5965 ;; (setenv "RINUTILS_TEST_TIDY" "1")
5966 (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
5967 (build-system cmake-build-system)
5968 (home-page "https://www.shlomifish.org/open-source/projects/")
5969 (synopsis "C11 / gnu11 utilities C library")
5970 (description "This package provides C11 / gnu11 utilities C library")
5971 (license license:expat)))
5972
b1642338
PN
5973(define-public fortune-mod
5974 (package
5975 (name "fortune-mod")
815e12f3 5976 (version "2.12.0")
7e1d376d
TGR
5977 (source
5978 (origin
5979 (method git-fetch)
5980 (uri (git-reference
5981 (url "https://github.com/shlomif/fortune-mod")
a6ac8e0b 5982 (commit (string-append "fortune-mod-" version))))
7e1d376d
TGR
5983 (file-name (git-file-name name version))
5984 (sha256
5985 (base32
815e12f3 5986 "0laxgqsdg7kvpvvm1f54b94ga9r0cr9g3ffii8avg8fy65x6pzc9"))))
b1642338
PN
5987 (build-system cmake-build-system)
5988 (arguments
5989 `(#:test-target "check"
5990 #:phases
5991 (modify-phases %standard-phases
5992 (add-after 'unpack 'fix-build-env
5993 (lambda* (#:key inputs #:allow-other-keys)
5994 (use-modules (guix build utils))
5995 (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
5996 (copy-file cmake-rules
5997 (string-append "fortune-mod/cmake/"
5998 (strip-store-file-name cmake-rules)))
abf06df2 5999 (chdir "fortune-mod")
61857323
PN
6000 ;; TODO: Valgrind tests fail for some reason.
6001 ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
6002 (delete-file "tests/t/valgrind.t")
abf06df2 6003 #t)))
b1642338 6004 (add-after 'install 'fix-install-directory
b1642338 6005 (lambda* (#:key outputs #:allow-other-keys)
e08474d6
TGR
6006 ;; Move binary from "games/" to "bin/" and remove the latter. This
6007 ;; is easier than patching CMakeLists.txt since the tests hard-code
6008 ;; the location as well.
6009 (let* ((out (assoc-ref outputs "out"))
6010 (bin (string-append out "/bin"))
6011 (games (string-append out "/games")))
6012 (rename-file (string-append games "/fortune")
6013 (string-append bin "/fortune"))
6014 (rmdir games)
b1642338
PN
6015 #t))))))
6016 (inputs `(("recode" ,recode)))
6017 (native-inputs
6018 `(("perl" ,perl)
6019 ;; The following is only needed for tests.
6020 ("perl-file-find-object" ,perl-file-find-object)
6021 ("perl-test-differences" ,perl-test-differences)
6022 ("perl-class-xsaccessor" ,perl-class-xsaccessor)
6023 ("perl-io-all" ,perl-io-all)
6024 ("perl-test-runvalgrind" ,perl-test-runvalgrind)
815e12f3
OP
6025 ("cmake-rules" ,shlomif-cmake-modules)
6026 ("rinutils" ,rinutils)))
b1642338
PN
6027 (home-page "http://www.shlomifish.org/open-source/projects/fortune-mod/")
6028 (synopsis "The Fortune Cookie program from BSD games")
6029 (description "Fortune is a command-line utility which displays a random
6030quotation from a collection of quotes.")
6031 (license license:bsd-4)))
dc70ff2a 6032
6033(define xonotic-data
6034 (package
6035 (name "xonotic-data")
6036 (version "0.8.2")
6037 (source
6038 (origin
6039 (method url-fetch)
6040 (uri (string-append "http://dl.xonotic.org/xonotic-"
6041 version ".zip"))
6042 (file-name (string-append name "-" version ".zip"))
6043 (sha256
6044 (base32
6045 "1mcs6l4clvn7ibfq3q69k2p0z6ww75rxvnngamdq5ic6yhq74bx2"))))
6046 (build-system trivial-build-system)
6047 (native-inputs
6048 `(("unzip" ,unzip)))
6049 (arguments
6050 `(#:modules ((guix build utils))
6051 #:builder
6052 (begin
6053 (use-modules (guix build utils))
6054 (let* ((out (assoc-ref %outputs "out"))
6055 (xonotic (string-append out "/share/xonotic"))
6056 (source (assoc-ref %build-inputs "source"))
6057 (unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
6058 (copy-file source (string-append ,name "-" ,version ".zip"))
6059 (invoke unzip (string-append ,name "-" ,version ".zip"))
6060 (mkdir-p out)
6061 (mkdir-p xonotic)
6062 (chdir "Xonotic")
6063 (copy-recursively "data"
6064 (string-append xonotic "/data"))
6065 (copy-recursively "server"
6066 (string-append xonotic "/server"))
6067 (install-file "key_0.d0pk" xonotic)))))
6068 (home-page "http://xonotic.org")
6069 (synopsis "Data files for Xonotic")
6070 (description
6071 "Xonotic-data provides the data files required by the game Xonotic.")
6072 (license (list license:gpl2+
9b9db6c4 6073 (license:x11-style "file://server/rcon.pl")))))
dc70ff2a 6074
6075(define-public xonotic
6076 (package
6077 (name "xonotic")
6078 (version "0.8.2")
6079 (source
6080 (origin
6081 (method url-fetch)
6082 (uri (string-append "http://dl.xonotic.org/xonotic-"
6083 version "-source.zip"))
6084 (file-name (string-append name "-" version ".zip"))
6085 (sha256
6086 (base32
6087 "0axxw04fyz6jlfqd0kp7hdrqa0li31sx1pbipf2j5qp9wvqicsay"))))
6088 (build-system gnu-build-system)
6089 (arguments
6090 `(#:configure-flags (list (string-append "--prefix="
6091 (assoc-ref %outputs "out"))
6092 "--disable-rijndael")
6093 #:phases
6094 (modify-phases %standard-phases
6095 (add-before 'configure 'make-darkplaces
6096 (lambda* (#:key outputs #:allow-other-keys)
6097 (let* ((out (assoc-ref outputs "out"))
6098 (sharedir (string-append out "/share/xonotic/")))
6099 (invoke "make" "-C" "source/darkplaces"
6100 (string-append "DP_FS_BASEDIR="
6101 sharedir)
6102 "DP_LINK_TO_LIBJPEG=1"
6103 "DP_SOUND_API=ALSA"
6104 "CC=gcc"
6105 "-f" "makefile"
6106 "cl-release")
6107 (invoke "make" "-C" "source/darkplaces"
6108 (string-append "DP_FS_BASEDIR="
6109 sharedir)
6110 "DP_LINK_TO_LIBJPEG=1"
6111 "DP_SOUND_API=ALSA"
6112 "CC=gcc"
6113 "-f" "makefile"
6114 "sdl-release")
6115 (invoke "make" "-C" "source/darkplaces"
6116 (string-append "DP_FS_BASEDIR="
6117 sharedir)
6118 "DP_LINK_TO_LIBJPEG=1"
6119 "DP_SOUND_API=ALSA"
6120 "CC=gcc"
6121 "-f" "makefile"
6122 "sv-release"))))
6123 (add-before 'configure 'bootstrap
6124 (lambda _
6125 (chdir "source/d0_blind_id")
6126 (invoke "sh" "autogen.sh")))
6127 (add-after 'build 'install-desktop-entry
6128 (lambda* (#:key outputs #:allow-other-keys)
6129 ;; Add .desktop files for the 2 variants and the symlink
6130 (let* ((output (assoc-ref outputs "out"))
6131 (apps (string-append output "/share/applications")))
6132 (mkdir-p apps)
6133 (with-output-to-file
6134 (string-append apps "/xonotic-glx.desktop")
6135 (lambda _
6136 (format #t
6137 "[Desktop Entry]~@
6138 Name=xonotic-glx~@
6139 Comment=Xonotic glx~@
6140 Exec=~a/bin/xonotic-glx~@
6141 TryExec=~@*~a/bin/xonotic-glx~@
c834bd3b
P
6142 Icon=xonotic~@
6143 Categories=Game~@
dc70ff2a 6144 Type=Application~%"
6145 output)))
6146 (with-output-to-file
6147 (string-append apps "/xonotic-sdl.desktop")
6148 (lambda _
6149 (format #t
6150 "[Desktop Entry]~@
6151 Name=xonotic-sdl~@
6152 Comment=Xonotic sdl~@
6153 Exec=~a/bin/xonotic-sdl~@
6154 TryExec=~@*~a/bin/xonotic-sdl~@
c834bd3b
P
6155 Icon=xonotic~@
6156 Categories=Game~@
dc70ff2a 6157 Type=Application~%"
6158 output)))
6159 (with-output-to-file
6160 (string-append apps "/xonotic.desktop")
6161 (lambda _
6162 (format #t
6163 "[Desktop Entry]~@
6164 Name=xonotic~@
6165 Comment=Xonotic~@
6166 Exec=~a/bin/xonotic-glx~@
6167 TryExec=~@*~a/bin/xonotic~@
c834bd3b
P
6168 Icon=xonotic~@
6169 Categories=Game~@
dc70ff2a 6170 Type=Application~%"
6171 output)))
6172 #t)))
6173 (add-after 'install-desktop-entry 'install-icons
6174 (lambda* (#:key outputs #:allow-other-keys)
6175 (let ((out (assoc-ref outputs "out")))
6176 (with-directory-excursion "../../misc/logos/icons_png/"
6177 (for-each
6178 (lambda (file)
6179 (let* ((size (string-filter char-numeric? file))
6180 (icons (string-append out "/share/icons/hicolor/"
6181 size "x" size "/apps")))
6182 (mkdir-p icons)
6183 (copy-file file (string-append icons "/xonotic.png"))))
6184 '("xonotic_16.png" "xonotic_22.png" "xonotic_24.png"
6185 "xonotic_32.png" "xonotic_48.png" "xonotic_64.png"
6186 "xonotic_128.png" "xonotic_256.png" "xonotic_512.png"))))))
6187 (add-after 'install-icons 'install-binaries
6188 (lambda* (#:key outputs #:allow-other-keys)
6189 (let ((out (assoc-ref outputs "out")))
6190 (define (install src dst)
6191 (let ((dst (string-append out dst)))
6192 (mkdir-p (dirname dst))
6193 (copy-file src dst)))
6194 (mkdir-p (string-append out "/bin"))
6195 (install "../darkplaces/darkplaces-dedicated"
6196 "/bin/xonotic-dedicated")
6197 (install "../darkplaces/darkplaces-glx"
6198 "/bin/xonotic-glx")
6199 (install "../darkplaces/darkplaces-sdl"
6200 "/bin/xonotic-sdl")
6201 ;; Provide a default xonotic executable, defaulting to SDL.
6202 (symlink (string-append out "/bin/xonotic-sdl")
6203 (string-append out "/bin/xonotic"))
6204 #t)))
6205 (add-after 'install-binaries 'install-data
6206 (lambda* (#:key outputs inputs #:allow-other-keys)
6207 (let* ((out (assoc-ref outputs "out"))
6208 (data (assoc-ref inputs "xonotic-data")))
cc661cb3
P
6209 (symlink (string-append data "/share/xonotic")
6210 (string-append out "/share/xonotic"))
dc70ff2a 6211 #t)))
6212 (add-after 'install-binaries 'wrap-binaries
6213 (lambda* (#:key outputs inputs #:allow-other-keys)
6214 ;; Curl and libvorbis need to be wrapped so that we get
6215 ;; sound and networking.
6216 (let* ((out (assoc-ref outputs "out"))
6217 (bin (string-append out "/bin/xonotic"))
6218 (bin-sdl (string-append out "/bin/xonotic-sdl"))
6219 (bin-glx (string-append out "/bin/xonotic-glx"))
6220 (bin-dedicated (string-append out "/bin/xonotic-dedicated"))
6221 (curl (assoc-ref inputs "curl"))
6222 (vorbis (assoc-ref inputs "libvorbis")))
6223 (wrap-program bin
6224 `("LD_LIBRARY_PATH" ":" prefix
6225 (,(string-append curl "/lib:" vorbis "/lib"))))
6226 (wrap-program bin-sdl
6227 `("LD_LIBRARY_PATH" ":" prefix
6228 (,(string-append curl "/lib:" vorbis "/lib"))))
6229 (wrap-program bin-glx
6230 `("LD_LIBRARY_PATH" ":" prefix
6231 (,(string-append curl "/lib:" vorbis "/lib"))))
6232 (wrap-program bin-dedicated
6233 `("LD_LIBRARY_PATH" ":" prefix
6234 (,(string-append curl "/lib:" vorbis "/lib"))))
6235 #t))))))
6236 (inputs
6237 `(("xonotic-data" ,xonotic-data)
6238 ("alsa-lib" ,alsa-lib)
6239 ("curl" ,curl)
6240 ("libjpeg" ,libjpeg)
6241 ("libmodplug" ,libmodplug)
6242 ("libvorbis" ,libvorbis)
6243 ("libogg" ,libogg)
6244 ("libxpm" ,libxpm)
6245 ("libxxf86dga" ,libxxf86dga)
6246 ("libxxf86vm" ,libxxf86vm)
6247 ("libx11" ,libx11)
6248 ("libxext" ,libxext)
6249 ("libxau" ,libxau)
6250 ("libxdmcp" ,libxdmcp)
6251 ("mesa" ,mesa)
6252 ("glu" ,glu)
6253 ("freetype" ,freetype)
6254 ("sdl2" ,sdl2)
6255 ("libpng" ,libpng)
6256 ("hicolor-icon-theme" ,hicolor-icon-theme)))
6257 (native-inputs
6258 `(("unzip" ,unzip)
6259 ("autoconf" ,autoconf)
6260 ("automake" ,automake)
6261 ("pkg-config" ,pkg-config)
6262 ("libtool" ,libtool)
6263 ("gmp" ,gmp)))
6264 (home-page "http://xonotic.org")
6265 (synopsis "Fast-paced first-person shooter game")
6266 (description
6267 "Xonotic is a free, fast-paced first-person shooter.
6268The project is geared towards providing addictive arena shooter
6269gameplay which is all spawned and driven by the community itself.
6270Xonotic is a direct successor of the Nexuiz project with years of
6271development between them, and it aims to become the best possible
6272open-source FPS of its kind.")
6273 (license (list license:gpl2+
6274 license:bsd-3 ; /source/d0_blind_id folder and others
9b9db6c4 6275 (license:x11-style "" "See file rcon.pl.")))))
39b5d8fd
BS
6276
6277(define-public frotz
6278 (package
6279 (name "frotz")
6280 (version "2.44")
6281 (source (origin
6282 (method url-fetch)
6283 (uri (list (string-append
6284 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6285 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6286 (string-append
6287 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
e2c9f9de 6288 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6289 (sha256
6290 (base32
6291 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6292 (build-system gnu-build-system)
6293 (arguments
6294 `(#:tests? #f ; there are no tests
6295 #:phases
6296 (modify-phases %standard-phases
6297 (delete 'configure)
6298 (add-before 'build 'curses
6299 (lambda _
6300 (substitute* "Makefile"
6301 (("lcurses") "lncurses"))
6302 #t))
6303 (replace 'install
6304 (lambda* (#:key outputs #:allow-other-keys)
6305 (let* ((out (assoc-ref outputs "out"))
6306 (bin (string-append out "/bin"))
6307 (man (string-append out "/share/man/man6")))
6308 (install-file "frotz" bin)
6309 (mkdir-p man)
6310 (install-file "doc/frotz.6" man)
6311 #t))))))
6312 (inputs `(("libmodplug" ,libmodplug)
6313 ("libsamplerate" ,libsamplerate)
6314 ("libsndfile" ,libsndfile)
6315 ("libvorbis" ,libvorbis)
6316 ("ncurses" ,ncurses)))
6317 (synopsis "Portable Z-machine interpreter (ncurses version) for text adventure games")
6318 (description "Frotz is an interpreter for Infocom games and other Z-machine
6319games in the text adventure/interactive fiction genre. This version of Frotz
6320complies with standard 1.0 of Graham Nelson's specification. It plays all
6321Z-code games V1-V8, including V6, with sound support through libao, and uses
6322ncurses for text display.")
6323 (home-page "http://frotz.sourceforge.net")
6324 (license license:gpl2+)))
6325
6326(define-public frotz-dumb-terminal
6327 (package
6328 (name "frotz-dumb-terminal")
6329 (version "2.44")
6330 (source (origin
6331 (method url-fetch)
6332 (uri (list (string-append
6333 "http://www.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6334 "frotz/frotz-" version ".tar.gz")
39b5d8fd
BS
6335 (string-append
6336 "ftp://ftp.ifarchive.org/if-archive/infocom/interpreters/"
98e27db5 6337 "frotz/frotz-" version ".tar.gz")))
39b5d8fd
BS
6338 (sha256
6339 (base32
6340 "1v735xr3blznac8fnwa27s1vhllx4jpz7kw7qdw1bsfj6kq21v3k"))))
6341 (build-system gnu-build-system)
6342 (arguments
6343 `(#:tests? #f ; there are no tests
6344 #:phases
6345 (modify-phases %standard-phases
6346 (delete 'configure)
6347 (replace 'build
6348 (lambda _
6349 (invoke "make" "dumb")))
6350 (replace 'install
6351 (lambda* (#:key outputs #:allow-other-keys)
6352 (let* ((out (assoc-ref outputs "out"))
6353 (bin (string-append out "/bin"))
6354 (man (string-append out "/share/man/man6")))
6355 (install-file "dfrotz" bin)
6356 (mkdir-p man)
6357 (install-file "doc/dfrotz.6" man)
6358 #t))))))
6359 (synopsis "Portable Z-machine dumb interpreter for text adventure games")
6360 (description "Frotz is an interpreter for Infocom games and
6361other Z-machine games in the text adventure/interactive fiction genre.
6362dfrotz is the dumb interface version. You get no screen control; everything
6363is just printed to the terminal line by line. The terminal handles all the
6364scrolling. Maybe you'd like to experience what it's like to play Adventure on
6365a teletype. A much cooler use for compiling Frotz with the dumb interface is
6366that it can be wrapped in CGI scripting, PHP, and the like to allow people
6367to play games on webpages. It can also be made into a chat bot.")
6368 (home-page "http://frotz.sourceforge.net")
6369 (license license:gpl2+)))
6370
6371(define-public frotz-sdl
6372 (let* ((commit "4de8c34f2116fff554af6216c30ec9d41bf50b24"))
6373 (package
6374 (name "frotz-sdl")
6375 (version "2.45pre")
6376 (source (origin
6377 (method git-fetch)
6378 (uri (git-reference
6379 (url "https://gitlab.com/DavidGriffith/frotz")
6380 (commit commit)))
6381 (sha256
6382 (base32
6383 "18ms21pcrl7ipcnyqnf8janamkryzx78frsgd9kfk67jvbj0z2k8"))
6384 (file-name (git-file-name name version))))
6385 (build-system gnu-build-system)
6386 (arguments
6387 `(#:tests? #f ; there are no tests
6388 #:phases
6389 (modify-phases %standard-phases
6390 (delete 'configure)
6391 (add-before 'build 'patch-makefile
6392 (lambda _
6393 (substitute* "Makefile"
6394 (("lcurses") "lncurses")
6395 (("^BUILD_DATE_TIME =.*$")
6396 "BUILD_DATE_TIME = \"2.45pre-20180907.00000\"\n"))
6397 #t))
6398 (replace 'build
6399 (lambda _
6400 (invoke "make" "sdl")))
6401 (replace 'install
6402 (lambda* (#:key outputs #:allow-other-keys)
6403 (let* ((out (assoc-ref outputs "out"))
6404 (bin (string-append out "/bin"))
6405 (man (string-append out "/share/man/man6")))
6406 (install-file "sfrotz" bin)
6407 (mkdir-p man)
6408 (install-file "doc/sfrotz.6" man)
6409 #t))))))
6410 (native-inputs
6411 `(("pkg-config" ,pkg-config)
6412 ("which" ,which)
6413 ("perl" ,perl)))
6414 (inputs `(("sdl2" ,sdl2)
6415 ("sdl2-mixer" ,sdl2-mixer)
6416 ("libmodplug" ,libmodplug)
6417 ("libsamplerate" ,libsamplerate)
6418 ("libsndfile" ,libsndfile)
6419 ("libvorbis" ,libvorbis)
6420 ("ncurses" ,ncurses)
6421 ("freetype" ,freetype)
6422 ("libjpeg-turbo" ,libjpeg-turbo)))
6423 (synopsis "Portable Z-machine interpreter (SDL port) for text adventure games")
6424 (description "Frotz is an interpreter for Infocom games and other Z-machine
6425games in the text adventure/interactive fiction genre. This version of Frotz
6426using SDL fully supports all these versions of the Z-Machine including the
6427graphical version 6. Graphics and sound are created through the use of the SDL
6428libraries. AIFF sound effects and music in MOD and OGG formats are supported
6429when packaged in Blorb container files or optionally from individual files.")
6430 (home-page "http://frotz.sourceforge.net")
6431 (license license:gpl2+))))
18ebaa9e
EB
6432
6433(define-public libmanette
6434 (package
6435 (name "libmanette")
737e32a4 6436 (version "0.2.3")
18ebaa9e
EB
6437 (source (origin
6438 (method url-fetch)
5b35bdaa 6439 (uri (string-append "mirror://gnome/sources/libmanette/"
18ebaa9e 6440 (version-major+minor version) "/"
5b35bdaa 6441 "libmanette-" version ".tar.xz"))
18ebaa9e
EB
6442 (sha256
6443 (base32
737e32a4 6444 "1zxh7jn2zg7hivmal5zxam6fxvjsd1w6hlw0m2kysk76b8anbw60"))))
18ebaa9e
EB
6445 (build-system meson-build-system)
6446 (native-inputs
6447 `(("glib" ,glib "bin") ; for glib-compile-resources
6448 ("gobject-introspection" ,gobject-introspection)
6449 ("pkg-config" ,pkg-config)
6450 ("vala" ,vala)))
6451 (inputs
6452 `(("libevdev" ,libevdev)
6453 ("libgudev" ,libgudev)))
6454 (home-page "https://wiki.gnome.org/Apps/Games")
6455 (synopsis "Game controller library")
6456 (description "Libmanette is a small GObject library giving you simple
6457access to game controllers. It supports the de-facto standard gamepads as
6458defined by the W3C standard Gamepad specification or as implemented by the SDL
6459GameController.")
6460 (license license:lgpl2.1+)))
39c676c4
EB
6461
6462(define-public quadrapassel
6463 (package
6464 (name "quadrapassel")
8a5bfb26 6465 (version "3.32.0")
39c676c4
EB
6466 (source (origin
6467 (method url-fetch)
49598564 6468 (uri (string-append "mirror://gnome/sources/quadrapassel/"
39c676c4 6469 (version-major+minor version) "/"
49598564 6470 "quadrapassel-" version ".tar.xz"))
39c676c4
EB
6471 (sha256
6472 (base32
8a5bfb26
KK
6473 "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
6474 (build-system meson-build-system)
6475 (arguments
6476 '(#:glib-or-gtk? #t
6477 #:phases
6478 (modify-phases %standard-phases
6479 (add-after 'unpack 'skip-gtk-update-icon-cache
6480 ;; Don't create 'icon-theme.cache'.
6481 (lambda _
6482 (substitute* "build-aux/meson_post_install.py"
6483 (("gtk-update-icon-cache") (which "true")))
6484 #t)))))
39c676c4
EB
6485 (native-inputs
6486 `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
6487 ("gettext" ,gnu-gettext)
6488 ("glib" ,glib "bin") ;for glib-compile-resources
6489 ("itstool" ,itstool)
6490 ("libxml2" ,libxml2) ;for xmllint
6491 ("pkg-config" ,pkg-config)
6492 ("vala" ,vala)))
6493 (inputs
6494 `(("clutter" ,clutter)
6495 ("clutter-gtk" ,clutter-gtk)
6496 ("gtk+" ,gtk+)
6497 ("libcanberra" ,libcanberra)
6498 ("libmanette" ,libmanette)
6499 ("librsvg" ,librsvg)))
6500 (home-page "https://wiki.gnome.org/Apps/Quadrapassel")
6501 (synopsis "GNOME version of Tetris")
6502 (description "Quadrapassel comes from the classic falling-block game,
6503Tetris. The goal of the game is to create complete horizontal lines of
6504blocks, which will disappear. The blocks come in seven different shapes made
6505from four blocks each: one straight, two L-shaped, one square, and two
6506S-shaped. The blocks fall from the top center of the screen in a random
6507order. You rotate the blocks and move them across the screen to drop them in
6508complete lines. You score by dropping blocks fast and completing lines. As
6509your score gets higher, you level up and the blocks fall faster.")
6510 (license license:gpl2+)))
560df540
EF
6511
6512(define-public endless-sky
6513 (package
6514 (name "endless-sky")
aa641984 6515 (version "0.9.10")
560df540
EF
6516 (source
6517 (origin
6518 (method git-fetch)
6519 (uri (git-reference
6520 (url "https://github.com/endless-sky/endless-sky")
6521 (commit (string-append "v" version))))
6522 (file-name (git-file-name name version))
6523 (sha256
6524 (base32
aa641984 6525 "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i"))))
560df540
EF
6526 (build-system scons-build-system)
6527 (arguments
6528 `(#:scons ,scons-python2
6529 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
6530 #:tests? #f ; no tests
6531 #:phases
6532 (modify-phases %standard-phases
6533 (add-after 'unpack 'patch-resource-locations
6534 (lambda* (#:key outputs #:allow-other-keys)
6535 (substitute* "source/Files.cpp"
6536 (("/usr/local/")
6537 (string-append (assoc-ref outputs "out") "/")))
6538 #t))
6539 (add-after 'unpack 'patch-scons
6540 (lambda _
6541 (substitute* "SConstruct"
6542 ;; Keep environmental variables
6543 (("Environment\\(\\)")
6544 "Environment(ENV = os.environ)")
6545 ;; Install into %out/bin
6546 (("games\"") "bin\""))
6547 #t)))))
6548 (inputs
6549 `(("glew" ,glew)
6550 ("libjpeg" ,libjpeg-turbo)
6551 ("libmad" ,libmad)
6552 ("libpng" ,libpng)
6553 ("openal" ,openal)
6554 ("sdl2" ,sdl2)))
6555 (home-page "https://endless-sky.github.io/")
6556 (synopsis "2D space trading and combat game")
6557 (description "Endless Sky is a 2D space trading and combat game. Explore
6558other star systems. Earn money by trading, carrying passengers, or completing
6559missions. Use your earnings to buy a better ship or to upgrade the weapons and
6560engines on your current one. Blow up pirates. Take sides in a civil war. Or
6561leave human space behind and hope to find friendly aliens whose culture is more
6562civilized than your own.")
6563 (license (list license:gpl3+
6564 license:cc-by-sa3.0
6565 license:cc-by-sa4.0
6566 license:public-domain))))
1faf0a04
NG
6567
6568(define-public stepmania
6569 (package
6570 (name "stepmania")
6571 (version "5.1.0-b2")
6572 (source
6573 (origin
6574 (method git-fetch)
6575 (uri (git-reference
6576 (url "https://github.com/stepmania/stepmania.git")
6577 (commit (string-append "v" version))))
6578 (file-name (git-file-name name version))
6579 (sha256
6580 (base32
6581 "0a7y9l7xm510vgnpmj1is7p9m6d6yd0fcaxrjcickz295k5w3rdn"))
6582 (modules '((guix build utils)))
6583 (snippet
6584 '(begin
6585 ;; Remove song files, which are licensed under a non-commercial
6586 ;; clause, and a course pointing to them.
6587 (for-each delete-file-recursively
6588 '("Songs/StepMania 5/Goin' Under"
6589 "Songs/StepMania 5/MechaTribe Assault"
6590 "Songs/StepMania 5/Springtime"))
6591 (for-each delete-file '("Courses/Default/Jupiter.crs"
6592 "Courses/Default/Jupiter.png"))
6593 ;; Unbundle libpng.
6594 (substitute* "extern/CMakeLists.txt"
6595 (("include\\(CMakeProject-png.cmake\\)") ""))
6596 (delete-file-recursively "extern/libpng")
6597 #t))))
6598 (build-system cmake-build-system)
6599 (arguments
6600 `(#:tests? #f ;FIXME: couldn't find how to run tests
6601 #:build-type "Release"
6602 #:out-of-source? #f ;for the 'install-desktop' phase
6603 #:configure-flags
6604 (list "-DWITH_SYSTEM_FFMPEG=1"
296c8484
EF
6605 ;; SSE instructions are available on Intel systems only.
6606 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
6607 (%current-system)))
6608 '("x64_64" "i686"))
6609 '()
6610 '("-DWITH_SSE2=NO"))
1faf0a04
NG
6611 ;; Configuration cannot find GTK2 without the two following
6612 ;; flags.
6613 (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
6614 (assoc-ref %build-inputs "gtk+")
6615 "/lib/gtk-2.0/include")
6616 (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
6617 (assoc-ref %build-inputs "glib")
6618 "/lib/glib-2.0/include"))
6619 #:phases
6620 (modify-phases %standard-phases
47746772 6621 (add-after 'unpack 'ensure-application-files-can-be-found
45aba232 6622 (lambda* (#:key outputs #:allow-other-keys)
47746772
RW
6623 (let ((out (assoc-ref outputs "out")))
6624 (substitute* "src/arch/LoadingWindow/LoadingWindow_Gtk.cpp"
6625 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\" \\+ \"GtkModule.so\"")
6626 (string-append "\"" out
6627 "/share/stepmania/GtkModule.so\"")))
6628 (substitute* "src/arch/ArchHooks/ArchHooks_Unix.cpp"
6629 (("Root = sDirOfExecutable")
6630 (string-append "Root = \"" out "/share/stepmania/\""))
6631 (("sDirOfExecutable \\+ \"/(Packages|Songs)\"" _ dir)
6632 (string-append "\"" out "/share/stepmania/" dir "\"")))
6633 (substitute* "src/RageFileManager.cpp"
6634 (("RageFileManagerUtil::sDirOfExecutable \\+ \"/\"")
6635 (string-append "\"" out "/share/stepmania/\""))))
45aba232 6636 #t))
1faf0a04
NG
6637 (add-after 'unpack 'fix-install-subdir
6638 ;; Installation would be done in "%out/stepmania-X.Y", but we
6639 ;; prefer the more common layout "%out/share/stepmania".
6640 (lambda _
6641 (substitute* "src/CMakeLists.txt"
6642 (("\"stepmania-.*?\"") "\"share/stepmania\""))
6643 #t))
6644 (add-after 'unpack 'unbundle-libpng
6645 (lambda* (#:key inputs #:allow-other-keys)
6646 (substitute* "src/CMakeLists.txt"
6647 (("\\$\\{SM_EXTERN_DIR\\}/libpng/include")
6648 (string-append (assoc-ref inputs "libpng") "/include")))
6649 #t))
6650 (add-after 'install 'install-executable
6651 (lambda* (#:key outputs #:allow-other-keys)
6652 (let* ((out (assoc-ref outputs "out"))
6653 (bin (string-append out "/bin"))
6654 (exe (string-append out "/share/stepmania/stepmania")))
6655 (mkdir-p bin)
6656 (symlink exe (string-append bin "/stepmania"))
6657 #t)))
6658 (add-after 'install-executable 'install-desktop
6659 (lambda* (#:key outputs #:allow-other-keys)
6660 (let* ((out (assoc-ref outputs "out"))
6661 (share (string-append out "/share"))
6662 (applications (string-append share "/applications"))
6663 (icons (string-append share "/icons")))
6664 (install-file "stepmania.desktop" applications)
6665 (mkdir-p icons)
6666 (copy-recursively "icons" icons)
6667 #t)))
6668 ;; Move documentation in a more usual place, i.e.,
6669 ;; "%out/share/doc/stepmania/".
6670 (add-after 'install-desktop 'install-doc
6671 (lambda* (#:key outputs #:allow-other-keys)
6672 (let* ((out (assoc-ref outputs "out"))
6673 (share (string-append out "/share")))
6674 (with-directory-excursion share
6675 (mkdir-p "doc")
6676 (symlink "../stepmania/Docs" "doc/stepmania"))
6677 #t))))))
6678 (native-inputs
6679 `(("pkg-config" ,pkg-config)
6680 ("yasm" ,yasm)))
6681 (inputs
6682 `(("alsa-lib" ,alsa-lib)
6683 ;; Per upstream, StepMania is only guaranteed to work with a very
6684 ;; specific FFmpeg version, which is included in the repository as
6685 ;; a Git submodule. This particular version requirement usually
6686 ;; changes every few years.
6687 ("ffmpeg" ,ffmpeg-for-stepmania)
6688 ("glib" ,glib)
6689 ("glew" ,glew)
6690 ("gtk+" ,gtk+-2)
6691 ("jsoncpp" ,jsoncpp)
6692 ("libpng" ,libpng)
96738cb1 6693 ("libjpeg" ,libjpeg-turbo)
1faf0a04
NG
6694 ("libmad" ,libmad)
6695 ("libogg" ,libogg)
6696 ("libva" ,libva)
6697 ("libvorbis" ,libvorbis)
6698 ("libxinerama" ,libxinerama)
6699 ("libxrandr" ,libxrandr)
6700 ("mesa" ,mesa)
6701 ("pcre" ,pcre)
6702 ("pulseaudio" ,pulseaudio)
6703 ("sdl" ,sdl2)
6704 ("udev" ,eudev)
6705 ("zlib" ,zlib)))
6706 (synopsis "Advanced rhythm game designed for both home and arcade use")
6707 (description "StepMania is a dance and rhythm game. It features 3D
6708graphics, keyboard and dance pad support, and an editor for creating your own
6709steps.
6710
6711This package provides the core application, but no song is shipped. You need
6712to download and install them in @file{$HOME/.stepmania-X.Y/Songs} directory.")
6713 (home-page "https://www.stepmania.com")
6714 (license license:expat)))
6715
649220ad 6716(define-public btanks
ca32afac 6717 (package
649220ad 6718 (name "btanks")
ca32afac
RW
6719 (version "0.9.8083")
6720 (source
6721 (origin
6722 (method url-fetch)
6723 (uri (string-append "mirror://sourceforge/btanks/btanks-source/"
6724 "btanks-" version ".tar.bz2"))
6725 (sha256
6726 (base32
6727 "0ha35kxc8xlbg74wsrbapfgxvcrwy6psjkqi7c6adxs55dmcxliz"))))
6728 (build-system scons-build-system)
6729 (arguments
6730 `(#:tests? #f ; there are none
6731 #:scons ,scons-python2
6732 #:scons-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
6733 #:phases
6734 (modify-phases %standard-phases
6735 (add-after 'unpack 'replace-removed-scons-syntax
6736 (lambda _
6737 (substitute* "SConstruct"
6738 (("Options") "Variables")
6739 (("opts.Add\\(BoolOption.*") "opts.Add('gcc_visibility', 'gcc visibility', 'true')")
6740 (("opts.Add\\(EnumOption.*") "opts.Add('mode', 'build mode', 'release')"))
6741 #t))
6742 (add-after 'set-paths 'set-sdl-paths
6743 (lambda* (#:key inputs #:allow-other-keys)
6744 (setenv "CPATH"
6745 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6746 "/include/SDL:"
6747 (or (getenv "CPATH") "")))
ca32afac
RW
6748 #t))
6749 (add-after 'unpack 'fix-compilation-errors
6750 (lambda _
6751 (substitute* "mrt/base_file.h"
6752 (("#include <string>" m)
6753 (string-append m "\n#include <sys/types.h>")))
6754 (substitute* '("engine/sl08/sl08.h"
6755 "engine/sl08/sl08.py")
6756 (("signal = NULL") "signal = 0")
6757 (("object\\(NULL\\)") "object(0)")
6758 (("func\\(NULL\\)") "func(0)")
6759 ((" connect\\(signal_ref\\)")
6760 " this->connect(signal_ref)"))
6761 (substitute* "math/range_list.h"
6762 ((" lower_bound\\(value\\)")
6763 " this->lower_bound(value)")
6764 ((" erase\\(i\\)")
6765 " this->erase(i)"))
6766 (substitute* "clunk/source.cpp"
6767 (("using namespace clunk" m)
6768 (string-append "# define pow10f(x) exp10f(x)\n" m)))
6769 #t))
6770 (add-after 'unpack 'find-lua
6771 (lambda _
6772 (substitute* "engine/SConscript"
6773 (("lua5.1") "lua-5.1")
6774 (("bt_libs.append\\(lua\\)")
6775 "bt_libs.append(\"lua\")"))
6776 #t)))))
6777 (inputs
6778 `(("expat" ,expat)
6779 ("glu" ,glu)
6780 ("libsmpeg" ,libsmpeg-with-sdl1)
6781 ("libvorbis" ,libvorbis)
6782 ("lua51" ,lua-5.1)
6783 ("sdl" ,(sdl-union (list sdl
6784 sdl-mixer
6785 sdl-image
6786 sdl-ttf)))
6787 ("zlib" ,zlib)))
6788 (native-inputs
6789 `(("pkg-config" ,pkg-config)
6790 ("zip" ,zip)))
6791 (home-page "http://btanks.sourceforge.net")
6792 (synopsis "Multiplayer tank battle game")
b1aee9fc
PN
6793 (description "Battle Tanks (also known as \"btanks\") is a funny battle
6794game, where you can choose one of three vehicles and eliminate your enemy
6795using the whole arsenal of weapons. It has original cartoon-like graphics and
6796cool music, it’s fun and dynamic, it has several network modes for deathmatch
6797and cooperative.")
ca32afac
RW
6798 ;; Some parts (e.g. mrt/b64.cpp) are LGPLv2.1+, but the whole package is
6799 ;; released under GPLv2 or later. It comes with extra exceptions for the
6800 ;; developers.
6801 (license (list license:gpl2+ license:lgpl2.1+))))
c06709b8 6802
649220ad
NG
6803(define-public battle-tanks
6804 (deprecated-package "battle-tanks" btanks))
b1aee9fc 6805
c06709b8
RW
6806(define-public slingshot
6807 (package
6808 (name "slingshot")
6809 (version "0.9")
6810 (source
6811 (origin
6812 (method git-fetch)
6813 (uri (git-reference
6814 (url "https://github.com/ryanakca/slingshot.git")
6815 (commit version)))
6816 (file-name (git-file-name name version))
6817 (sha256
6818 (base32
6819 "19m8b6nsi786bc6gmkp185mwri3r5y249gjmqd5qsc23nnfhgrs1"))))
6820 (build-system python-build-system)
6821 (arguments
6822 `(#:python ,python-2))
6823 (inputs
6824 `(("python-pygame" ,python2-pygame)))
6825 (home-page "https://github.com/ryanakca/slingshot")
6826 (synopsis "Simple 2D shooting strategy game set in space")
6827 (description "Slingshot is a two-dimensional strategy game where two
6828players attempt to shoot one another through a section of space populated by
6829planets. The main feature of the game is that the shots, once fired, are
6830affected by the gravity of the planets.")
6831 (license license:gpl2+)))
8ada024b
RW
6832
6833(define-public 4dtris
6834 (package
6835 (name "4dtris")
6836 (version "0.4.3")
6837 (source
6838 (origin
6839 (method url-fetch)
6840 (uri (string-append "https://launchpad.net/4dtris/"
6841 (version-major+minor version)
6842 "/" version "/+download/4dtris_"
6843 version ".orig.tar.gz"))
6844 (sha256
6845 (base32
6846 "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7"))))
6847 (build-system gnu-build-system)
6848 (arguments
6849 `(#:phases
6850 (modify-phases %standard-phases
6851 (add-after 'unpack 'fix-install-directories
6852 (lambda* (#:key outputs #:allow-other-keys)
6853 (let ((out (assoc-ref outputs "out")))
6854 (substitute* "Makefile.in"
6855 (("bindir = /usr/games")
6856 (string-append "bindir = " out "/bin"))
6857 (("/usr/share/applications")
6858 (string-append out "/share/applications"))
6859 (("/usr/share/games/4dtris")
6860 (string-append out "/share/4dtris"))))
6861 #t))
6862 (add-after 'set-paths 'set-sdl-paths
6863 (lambda* (#:key inputs #:allow-other-keys)
6864 (setenv "CPATH"
6865 (string-append (assoc-ref inputs "sdl")
5ba856ab
MB
6866 "/include/SDL:"
6867 (or (getenv "CPATH") "")))
8ada024b
RW
6868 #t)))))
6869 (inputs
6870 `(("fontconfig" ,fontconfig)
6871 ("freeglut" ,freeglut)
6872 ("sdl" ,(sdl-union (list sdl sdl-ttf)))))
6873 (home-page "https://launchpad.net/4dtris/")
6874 (synopsis "4D Tetris")
6875 (description "4D-TRIS is an alteration of the well-known Tetris game. The
6876game field is extended to 4D space, which has to filled up by the gamer with
68774D hyper cubes.")
6878 (license license:gpl3)))
6879
8044e584
PN
6880(define-public arx-libertatis
6881 (package
6882 (name "arx-libertatis")
6883 (version "1.1.2")
6884 (source
6885 (origin
6886 (method url-fetch)
6887 (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
6888 version ".tar.xz"))
6889 (sha256
6890 (base32
6891 "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
6892 (build-system cmake-build-system)
6893 (outputs '("out" "installer"))
6894 (arguments
6895 '(#:tests? #f ; No tests.
6896 #:phases
6897 (modify-phases %standard-phases
6898 (add-after 'unpack 'fix-install-helper-paths
6899 (lambda* (#:key inputs #:allow-other-keys)
6900 (let ((p7zip (assoc-ref inputs "p7zip"))
6901 (innoextract (assoc-ref inputs "innoextract"))
6902 (wget (assoc-ref inputs "wget"))
6903 (zenity (assoc-ref inputs "zenity")))
6904 (substitute* "scripts/arx-install-data"
6905 (("have innoextract")
6906 (string-append "have " innoextract "/bin/innoextract"))
6907 (("then innoextract")
6908 (string-append "then " innoextract "/bin/innoextract"))
6909 (("else innoextract")
6910 (string-append "else " innoextract "/bin/innoextract"))
6911 (("for _extract_zip_sz in 7za 7z")
6912 (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
6913 (("else if have 7z")
6914 (string-append "else if have " p7zip "/bin/7za"))
6915 (("7z x -tiso")
6916 (string-append p7zip "/bin/7z x -tiso"))
6917 (("if have wget")
6918 (string-append "if have " wget "/bin/wget"))
6919 (("wget -O")
6920 (string-append wget "/bin/wget -O"))
6921 (("for backend in \\$preferred zenity")
6922 (string-append "for backend in $preferred " zenity "/bin/zenity"))
6923 (("zenity +--title")
6924 (string-append zenity "/bin/zenity --title"))
6925 (("^zenity\\)")
6926 (string-append zenity "/bin/zenity)"))))
6927 #t))
6928 (add-after 'install 'move-installer
6929 (lambda* (#:key outputs #:allow-other-keys)
6930 (let ((out (assoc-ref outputs "out"))
6931 (installer (assoc-ref outputs "installer")))
6932 (mkdir-p (string-append installer "/bin"))
6933 (rename-file (string-append out "/bin/arx-install-data")
6934 (string-append installer "/bin/arx-install-data"))))))))
6935 (inputs
6936 `(("sdl" ,sdl) ; Switch to sdl2 in >1.1.2.
6937 ("mesa" ,mesa) ; Switch to libepoxy in >1.1.2.
6938 ("glew" ,glew)
6939 ("openal" ,openal)
6940 ("zlib" ,zlib)
6941 ("boost" ,boost)
6942 ("glm" ,glm)
6943 ("freetype" ,freetype)
6944 ;; The following are only needed by the arx-install-data script.
6945 ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
6946 ("zenity" ,zenity) ; GUI for install-helper.
6947 ("wget" ,wget) ; Used by the install-helper to download the patch.
6948 ;; The install-helper needs it to extract the patch.
6949 ("innoextract" ,innoextract)))
6950 (home-page "https://arx-libertatis.org/")
6951 (synopsis "Port of Arx Fatalis, a first-person role-playing game")
37e47aa7
MB
6952 (description "Arx Libertatis is a cross-platform port of Arx Fatalis, a 2002
6953first-person role-playing game / dungeon crawler developed by Arkane Studios.
6954This port however does not include the game data, so you need to obtain a copy
6955of the original Arx Fatalis or its demo to play Arx Libertatis. Arx Fatalis
6956features crafting, melee and ranged combat, as well as a unique casting system
6957where the player draws runes in real time to effect the desired spell.")
8044e584 6958 (license license:gpl3+)))
47903653 6959
649220ad 6960(define-public edgar
47903653 6961 (package
649220ad 6962 (name "edgar")
a50d6099 6963 (version "1.32")
47903653 6964 (source
6965 (origin
6966 (method url-fetch)
6967 (uri
6968 (string-append "https://github.com/riksweeney/edgar/releases/download/"
6969 version "/edgar-" version "-1.tar.gz"))
6970 (sha256
a50d6099 6971 (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
47903653 6972 (build-system gnu-build-system)
067826ab 6973 (arguments '(#:tests? #f ; there are no tests
47903653 6974 #:make-flags
6975 (list "CC=gcc"
6976 (string-append "PREFIX=" (assoc-ref %outputs "out"))
6977 (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
6978 #:phases
6979 (modify-phases %standard-phases
6980 (delete 'configure)
6981 (add-before 'build 'fix-env
6982 (lambda* (#:key inputs #:allow-other-keys)
067826ab
TGR
6983 (setenv "CPATH"
6984 (string-append (assoc-ref inputs "sdl2-union")
5ba856ab
MB
6985 "/include/SDL2:"
6986 (or (getenv "CPATH") "")))
47903653 6987 #t)))))
067826ab
TGR
6988 (inputs
6989 `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
6990 ("zlib" ,zlib)))
47903653 6991 (native-inputs
6992 `(("pkg-config" ,pkg-config)
6993 ("autoconf" ,autoconf)
6994 ("automake" ,automake)
6995 ("gnu-gettext" ,gnu-gettext)
6996 ("libtool" ,libtool)
6997 ("which" ,which)))
6998 (synopsis "2d action platformer game")
6999 (description "The Legend of Edgar is a 2D platform game with a persistent world.
7000When Edgar's father fails to return home after venturing out one dark and stormy night,
7001Edgar fears the worst: he has been captured by the evil sorcerer who lives in
7002a fortress beyond the forbidden swamp.")
7003 (home-page "https://www.parallelrealities.co.uk/games/edgar/")
7004 (license license:gpl2+)))
f95e33a7 7005
649220ad
NG
7006(define-public the-legend-of-edgar
7007 (deprecated-package "the-legend-of-edgar" edgar))
4e43e317
NG
7008
7009(define-public openclonk
7010 (package
7011 (name "openclonk")
7012 (version "8.1")
7013 (source (origin
7014 (method url-fetch)
7015 (uri (string-append
7016 "https://www.openclonk.org/builds/release/" version "/"
7017 "openclonk-" version "-src.tar.bz2"))
7018 (sha256
7019 (base32
7020 "0imkqjp8lww5p0cnqf4k4mb2v682mnsas63qmiz17rspakr7fxik"))))
7021 (build-system cmake-build-system)
7022 (arguments
7023 `(#:configure-flags '("-DAudio_TK=OpenAL")
7024 #:test-target "tests"
7025 #:phases
7026 (modify-phases %standard-phases
7027 (add-after 'unpack 'prepare-gmock
7028 (lambda* (#:key inputs #:allow-other-keys)
7029 (mkdir "gmock")
7030 (copy-recursively (assoc-ref inputs "googlemock") "gmock")
7031 (substitute* "tests/CMakeLists.txt"
7032 (("/usr/src/gmock")
7033 (string-append (getcwd) "/gmock/googlemock"))
7034 (("/usr/src/gtest")
7035 (string-append (getcwd) "/gmock/googletest"))
7036 (("PATH_SUFFIXES \"src\" \"gtest\"")
7037 "PATH_SUFFIXES \"src\""))
7038 #t))
ee9eafc1
MB
7039 (add-after 'unpack 'adjust-backward-cpp-includes
7040 (lambda _
7041 ;; XXX: The bundled backward-cpp exports a CMake "interface"
7042 ;; that includes external libraries such as libdl from glibc.
7043 ;; By default, CMake interface includes are treated as "system
7044 ;; headers", and GCC behaves poorly when glibc is passed as a
7045 ;; system header (causing #include_next failures).
7046
7047 ;; Here we prevent targets that consume the Backward::Backward
7048 ;; interface from treating it as "system includes".
7049 (substitute* "CMakeLists.txt"
7050 (("target_link_libraries\\((.+) Backward::Backward\\)" all target)
7051 (string-append "set_property(TARGET " target " PROPERTY "
7052 "NO_SYSTEM_FROM_IMPORTED true)\n"
7053 all)))
7054 #t))
4e43e317
NG
7055 (add-after 'unpack 'add-libiberty
7056 ;; Build fails upon linking executables without this.
7057 (lambda _
7058 (substitute* "thirdparty/backward-cpp/BackwardConfig.cmake"
7059 (("set\\(LIBBFD_LIBRARIES (.*?)\\)" _ libraries)
7060 (string-append "set(LIBBFD_LIBRARIES " libraries " iberty)")))
7061 #t))
7062 (add-after 'add-libiberty 'lax-freealut-requirement
7063 ;; TODO: We provide freealut 1.1.0, but pkg-config somehow detects
7064 ;; it as 1.0.1. Force minimal version.
7065 (lambda _
7066 (substitute* "cmake/FindAudio.cmake"
7067 (("freealut>=1.1.0") "freealut>=1.0.1"))
7068 #t))
7069 (add-after 'lax-freealut-requirement 'fix-directories
7070 ;; Prefer "$out/share/openclonk" over
7071 ;; "$out/share/games/openclonk". Also install "openclonk"
7072 ;; binary in "bin/", not "games/".
7073 (lambda _
7074 (substitute* "CMakeLists.txt"
7075 (("share/games/openclonk") "share/openclonk")
7076 (("TARGETS openclonk DESTINATION games")
7077 "TARGETS openclonk DESTINATION bin"))
7078 #t)))))
7079 (native-inputs
7080 `(("googlemock" ,(package-source googletest))
7081 ("googletest" ,googletest)
7082 ("pkg-config" ,pkg-config)))
7083 (inputs
7084 `(("freealut" ,freealut)
7085 ("freetype" ,freetype)
7086 ("glew" ,glew)
7087 ("libiberty" ,libiberty)
7088 ("libjpeg" ,libjpeg-turbo)
7089 ("libogg" ,libogg)
7090 ("libpng" ,libpng)
7091 ("libvorbis" ,libvorbis)
7092 ("libxrandr" ,libxrandr)
7093 ("mesa" ,mesa)
7094 ("miniupnpc" ,miniupnpc)
7095 ("openal" ,openal)
7096 ("qtbase" ,qtbase)
7097 ("readline" ,readline)
7098 ("sdl" ,sdl2)
7099 ("tinyxml" ,tinyxml)
7100 ("zlib" ,zlib)))
7101 (home-page "https://www.openclonk.org/")
7102 (synopsis
7103 "Multiplayer action game where you control small and nimble humanoids")
7104 (description "OpenClonk is a multiplayer action/tactics/skill game. It is
7105often referred to as a mixture of The Settlers and Worms. In a simple 2D
6018d26b 7106antfarm-style landscape, the player controls a crew of Clonks, small but
4e43e317
NG
7107robust humanoid beings. The game encourages free play but the normal goal is
7108to either exploit valuable resources from the earth by building a mine or
7109fight each other on an arena-like map.")
7110 ;; Software as a whole is licensed under ISC, artwork under CC-BY.
7111 (license (list license:isc license:cc-by3.0))))
ad4f6442
NG
7112
7113(define-public flare-engine
7114 (package
7115 (name "flare-engine")
f9622ec7 7116 (version "1.11")
ad4f6442
NG
7117 (source (origin
7118 (method git-fetch)
7119 (uri (git-reference
7120 (url "https://github.com/flareteam/flare-engine.git")
7121 (commit (string-append "v" version))))
7122 (file-name (git-file-name name version))
7123 (sha256
7124 (base32
f9622ec7 7125 "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8"))))
ad4f6442
NG
7126 (build-system cmake-build-system)
7127 (arguments
7128 `(#:tests? #f ;no test
7129 #:configure-flags '("-DBINDIR=bin" "-DDATADIR=share/flare")))
7130 (inputs
7131 `(("hicolor-icon-theme" ,hicolor-icon-theme)
7132 ("python" ,python-wrapper)
7133 ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
7134 (home-page "http://www.flarerpg.org/")
7135 (synopsis "Action Roleplaying Engine")
7136 (description "Flare (Free Libre Action Roleplaying Engine) is a simple
7137game engine built to handle a very specific kind of game: single-player 2D
7138action RPGs.")
7139 (license license:gpl3+)))
7140
7141(define-public flare-game
7142 (package
7143 (name "flare-game")
ffbaefc7 7144 (version "1.11")
ad4f6442
NG
7145 (source (origin
7146 (method git-fetch)
7147 (uri (git-reference
7148 (url "https://github.com/flareteam/flare-game.git")
7149 (commit (string-append "v" version))))
7150 (file-name (git-file-name name version))
7151 (sha256
7152 (base32
ffbaefc7 7153 "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p"))))
ad4f6442
NG
7154 (build-system cmake-build-system)
7155 (arguments
7156 `(#:tests? #f ;no test
7157 #:configure-flags '("-DDATADIR=share/flare")
7158 #:phases
7159 (modify-phases %standard-phases
7160 ;; Flare expects the mods to be located in the same folder.
7161 ;; Yet, "default" mod is in the engine, whereas the others
7162 ;; are in the current package. Merge everything here with
7163 ;; a symlink.
7164 (add-after 'install 'add-default-mod
7165 (lambda* (#:key inputs outputs #:allow-other-keys)
7166 (let* ((out (assoc-ref outputs "out"))
7167 (mods (string-append out "/share/flare/mods")))
7168 (with-directory-excursion mods
7169 (symlink (string-append (assoc-ref inputs "flare-engine")
7170 "/share/flare/mods/default")
7171 "default")))
7172 #t))
7173 (add-after 'install 'install-executable
7174 ;; The package only provides assets for the game, the
7175 ;; executable coming from "flare-engine". Since more than
7176 ;; one game may use the engine, we create a new executable,
7177 ;; "flare-game", which launches the engine with appropriate
7178 ;; parameters.
7179 (lambda* (#:key inputs outputs #:allow-other-keys)
7180 (let* ((out (assoc-ref outputs "out"))
7181 (bash (string-append (assoc-ref inputs "bash")
7182 "/bin/bash"))
7183 (flare (string-append (assoc-ref inputs "flare-engine")
7184 "/bin/flare"))
7185 (script (string-append out "/bin/flare-game")))
7186 (mkdir-p (dirname script))
7187 (call-with-output-file script
7188 (lambda (port)
7189 (format port
7190 "#!~a
7191exec ~a --data-path=~a/share/flare --mods=empyrean_campaign~%"
7192 bash
7193 flare
7194 out)))
7195 (chmod script #o755))
7196 #t)))))
7197 (inputs
7198 `(("flare-engine" ,flare-engine)))
7199 (home-page "http://www.flarerpg.org/")
7200 (synopsis "Fantasy action RPG using the FLARE engine")
7201 (description "Flare is a single-player 2D action RPG with
7202fast-paced action and a dark fantasy style.")
7203 (license license:cc-by-sa3.0)))
660e0050
NG
7204
7205(define-public meritous
7206 (package
7207 (name "meritous")
7208 (version "1.5")
7209 (source (origin
7210 (method git-fetch)
7211 (uri (git-reference
7212 (url "https://gitlab.com/meritous/meritous.git")
7213 (commit (string-append "v" version))))
7214 (file-name (git-file-name name version))
7215 (sha256
7216 (base32
7217 "0n5jm4g0arjllgqmd2crv8h02i6hs3hlh1zyc7ng7yfpg1mbd8p8"))))
7218 (build-system gnu-build-system)
7219 (arguments
7220 `(#:tests? #f ;no test
7221 #:make-flags
7222 (list "CC=gcc"
7223 (string-append "prefix=" (assoc-ref %outputs "out")))
7224 #:phases
7225 (modify-phases %standard-phases
7226 (delete 'configure)
7227 (add-after 'unpack 'fix-sdl-path
7228 ;; XXX: For some reason, `sdl-config' reports stand-alone SDL
7229 ;; directory, not SDL-union provided as an input to the package.
7230 ;; We force the latter with "--prefix=" option.
7231 (lambda* (#:key inputs #:allow-other-keys)
7232 (substitute* "Makefile"
7233 (("sdl-config" command)
7234 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7235 #t))
7236 (add-after 'unpack 'fix-crash
7237 ;; XXX: Songs are not present in the repository, due to licensing
7238 ;; issues. Yet, the game tries to load them, and, since it cannot
7239 ;; find them, crashes. Users cannot add them back, the store being
7240 ;; read-only, so we turn off background music altogether.
7241 (lambda _
7242 (substitute* "src/audio.c"
7243 (("PlayBackgroundMusic\\(new_track\\);" all)
7244 (string-append "// " all)))
7245 #t)))))
7246 (native-inputs
7247 `(("intltool" ,intltool)))
7248 (inputs
7249 `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))
7250 ("zlib" ,zlib)))
7251 (home-page "https://gitlab.com/meritous/meritous")
7252 (synopsis "Action-adventure dungeon crawl game")
7253 (description "Far below the surface of the planet is a place of limitless
7254power. Those that seek to control such a utopia will soon bring an end to
7255themselves. Seeking an end to the troubles that plague him, PSI user Merit
7256journeys into the hallowed Orcus Dome in search of answers.
7257
7258Meritous is a action-adventure game with simple controls but a challenge to
7259find a balance of power versus recovery time during real-time battles. Set in
7260a procedurally generated world, the player can explore thousands of rooms in
7261search of powerful artifacts, tools to help them, and to eventually free the
7262Orcus Dome from evil.")
7263 (license license:gpl3+)))
472af999
RW
7264
7265(define-public marble-marcher
7266 (let ((commit "e580460a0c3826f9b28ab404607942a8ecb625d7")
7267 (revision "1"))
7268 (package
7269 (name "marble-marcher")
7270 (version (git-version "0" revision commit))
7271 (source (origin
7272 (method git-fetch)
7273 (uri (git-reference
7274 (url "https://github.com/HackerPoet/MarbleMarcher.git")
7275 (commit commit)))
7276 (file-name (git-file-name name version))
7277 (sha256
7278 (base32
7279 "0jjv832hl1v170n6gryp2sr3lgqndi9ab841qvgqk68bks8701mx"))))
7280 (build-system cmake-build-system)
7281 (arguments
7282 `(#:tests? #f ; there are none
7283 #:phases
7284 (modify-phases %standard-phases
7285 (add-after 'unpack 'embed-asset-directory
7286 (lambda* (#:key outputs #:allow-other-keys)
7287 (let ((assets (string-append (assoc-ref outputs "out")
7288 "/share/marble-marcher/assets/")))
7289 ;; Some of the files we're patching are
7290 ;; ISO-8859-1-encoded, so choose it as the default
7291 ;; encoding so the byte encoding is preserved.
7292 (with-fluids ((%default-port-encoding #f))
7293 (substitute* "src/Resource.rc"
7294 (("../assets/icon.ico")
7295 (string-append assets "icon.ico")))
7296 (substitute* "src/Res.h"
7297 (("assets/") assets))))
7298 #t))
7299 (replace 'install
7300 (lambda* (#:key outputs #:allow-other-keys)
7301 (let* ((out (assoc-ref outputs "out"))
7302 (assets (string-append out "/share/marble-marcher/assets"))
7303 (bin (string-append out "/bin/")))
7304 (mkdir-p bin)
7305 (mkdir-p assets)
7306 (copy-recursively "../source/assets" assets)
7307 (install-file "MarbleMarcher" bin))
7308 #t)))))
7309 (inputs
7310 `(("eigen" ,eigen)
7311 ("mesa" ,mesa)
7312 ("sfml" ,sfml)))
7313 (native-inputs
7314 `(("pkg-config" ,pkg-config)))
7315 (home-page "https://codeparade.itch.io/marblemarcher")
7316 (synopsis "Guide a marble across fractal landscapes")
7317 (description "Marble Marcher is a video game that uses a fractal physics
7318engine and fully procedural rendering to produce beautiful and unique
7319gameplay. The game is played on the surface of evolving fractals. The goal
7320of the game is to get your marble to the flag as quickly as possible. But be
7321careful not to fall off the level or get crushed by the fractal! There are 24
7322levels to unlock.")
7323 ;; Code is under GPLv2+, assets are under CC-BY-SA 3.0 and OFL 1.1.
7324 (license (list license:gpl2+
7325 license:silofl1.1
7326 license:cc-by-sa3.0)))))
20185e4f 7327
a84510f9 7328;; This must be updated together with flightgear.
20185e4f
RW
7329(define simgear
7330 (package
7331 (name "simgear")
7332 (version "2018.3.2")
7333 (source (origin
7334 (method url-fetch)
7335 (uri (string-append "mirror://sourceforge/flightgear/release-"
7336 (version-major+minor version) "/"
7337 "simgear-" version ".tar.bz2"))
7338 (sha256
7339 (base32
7340 "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
7341 (build-system cmake-build-system)
7342 (arguments
7343 `(#:phases
7344 (modify-phases %standard-phases
7345 (replace 'check
7346 (lambda _
7347 ;; Skip tests that require internet access.
7348 (invoke "ctest" "-E" "(http|dns)"))))))
7349 (inputs
7350 `(("boost" ,boost-for-mysql) ; fails with 1.69
7351 ("curl" ,curl)
7352 ("expat" ,expat)
7353 ("mesa" ,mesa)
7354 ("openal" ,openal)
7355 ("openscenegraph" ,openscenegraph-3.4)
7356 ("zlib" ,zlib)))
7357 (home-page "https://home.flightgear.org/")
7358 (synopsis "Libraries for 3D simulations and games")
7359 (description "SimGear is a set of libraries designed to be used as
7360building blocks for quickly assembling 3D simulations, games, and
7361visualization applications. SimGear is developed by the FlightGear project
7362and also provides the base for the FlightGear Flight Simulator.")
7363 (license license:lgpl2.0+)))
a84510f9
RW
7364
7365(define-public flightgear
7366 (package
7367 (name "flightgear")
7368 (version (package-version simgear))
7369 (source (origin
7370 (method url-fetch)
7371 (uri (string-append "mirror://sourceforge/flightgear/release-"
7372 (version-major+minor version) "/"
7373 "flightgear-" version ".tar.bz2"))
7374 (sha256
7375 (base32
7376 "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
7377 (modules '((guix build utils)))
7378 (snippet
7379 '(begin
7380 ;; There are some bundled libraries.
7381 (for-each delete-file-recursively
7382 '("3rdparty/sqlite3/"))
7383 #t))))
7384 (build-system cmake-build-system)
7385 (arguments
7386 `(#:configure-flags
7387 (list "-DSYSTEM_SQLITE=ON"
7388 (string-append "-DFG_DATA_DIR="
7389 (assoc-ref %outputs "out")
7390 "/share/flightgear"))
7391 ;; TODO: test cannot be run because the "run_test_suite" executable
7392 ;; does not seem to be built.
7393 #:tests? #f
7394 #:phases
7395 (modify-phases %standard-phases
7396 (add-after 'install 'wrap-executable
7397 (lambda* (#:key inputs outputs #:allow-other-keys)
7398 (let ((out (assoc-ref outputs "out")))
7399 (wrap-program (string-append out "/bin/fgfs")
7400 `("QT_PLUGIN_PATH" ":" prefix
7401 ,(map (lambda (label)
7402 (string-append (assoc-ref inputs label)
7403 "/lib/qt5/plugins"))
7404 '("qtbase" "qtdeclarative" "qtsvg")))
7405 `("QML2_IMPORT_PATH" ":" prefix
7406 ,(map (lambda (label)
7407 (string-append (assoc-ref inputs label)
7408 "/lib/qt5/qml"))
7409 '("qtdeclarative" "qtsvg"))))
7410 #t)))
7411 (add-after 'install 'install-data
7412 (lambda* (#:key inputs outputs #:allow-other-keys)
7413 (let ((share (string-append (assoc-ref outputs "out") "/share/flightgear")))
7414 (mkdir-p share)
7415 (with-directory-excursion share
7416 (invoke "tar" "xf" (assoc-ref inputs "flightgear-data")
7417 "--strip-components=1")))
7418 #t)))))
7419 (inputs
7420 `(("boost" ,boost-for-mysql) ; same as simgear
7421 ("dbus" ,dbus)
7422 ("eudev" ,eudev)
7423 ("freeglut" ,freeglut)
7424 ("freetype" ,freetype)
7425 ("glew" ,glew)
7426 ("libpng" ,libpng)
7427 ("openal" ,openal)
7428 ("openscenegraph" ,openscenegraph-3.4)
7429 ("plib" ,plib)
7430 ("qtbase" ,qtbase)
7431 ("qtdeclarative" ,qtdeclarative)
7432 ("qtsvg" ,qtsvg)
7433 ("simgear" ,simgear)
7434 ("speexdsp" ,speexdsp)
7435 ("sqlite" ,sqlite)
7436 ("zlib" ,zlib)))
7437 (native-inputs
7438 `(("cppunit" ,cppunit)
7439 ("pkg-config" ,pkg-config)
7440 ("qttools" ,qttools)
7441 ("flightgear-data"
7442 ,(origin
7443 (method url-fetch)
7444 (uri (string-append "mirror://sourceforge/flightgear/release-"
7445 (version-major+minor version) "/"
7446 "FlightGear-" version "-data.tar.bz2"))
7447 (sha256
7448 (base32
7449 "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
7450 (home-page "https://home.flightgear.org/")
7451 (synopsis "Flight simulator")
7452 (description "The goal of the FlightGear project is to create a
7453sophisticated flight simulator framework for use in research or academic
7454environments, pilot training, as an industry engineering tool, for DIY-ers to
7455pursue their favorite interesting flight simulation idea, and last but
7456certainly not least as a fun, realistic, and challenging desktop flight
7457simulator.")
7458 (license license:gpl2+)))
e8a0696d
NG
7459
7460(define-public jumpnbump
7461 (package
7462 (name "jumpnbump")
60d2aaa5 7463 (version "1.61")
e8a0696d
NG
7464 (source (origin
7465 (method git-fetch)
7466 (uri (git-reference
7467 (url "https://gitlab.com/LibreGames/jumpnbump.git")
7468 (commit version)))
7469 (file-name (git-file-name name version))
7470 (sha256
7471 (base32
60d2aaa5 7472 "12lwl5sl5n009nb83r8l4lakb9286csqdf1ynpmwwydy17giqsdp"))))
e8a0696d
NG
7473 (build-system gnu-build-system)
7474 (arguments
7475 `(#:make-flags
7476 (list "CC=gcc"
7477 (string-append "PREFIX=" (assoc-ref %outputs "out")))
7478 #:tests? #f ;no test
7479 #:phases
7480 (modify-phases %standard-phases
7481 (delete 'configure) ;no configure script
7482 (add-after 'unpack 'fix-sdl-path
7483 ;; XXX: For some reason, `sdl2-config' reports stand-alone SDL
7484 ;; directory, not SDL-union provided as an input to the package.
7485 ;; We force the latter with "--prefix=" option.
7486 (lambda* (#:key inputs #:allow-other-keys)
7487 (substitute* "Makefile"
7488 (("sdl2-config" command)
7489 (string-append command " --prefix=" (assoc-ref inputs "sdl"))))
7490 #t)))))
7491 (inputs
7492 `(("bzip2" ,bzip2)
7493 ("sdl" ,(sdl-union (list sdl2 sdl2-mixer sdl2-net)))
7494 ("zlib" ,zlib)))
7495 (native-inputs
7496 `(("gettext" ,gettext-minimal))) ;for msgfmt
7497 (home-page "https://gitlab.com/LibreGames/jumpnbump")
7498 (synopsis "Multiplayer platform game with bunnies")
7499 (description "You, as a bunny, have to jump on your opponents to make them
7500explode. It is a true multiplayer game; you cannot play this alone. You can
7501play with up to four players simultaneously. It has network support.")
7502 (license license:gpl2+)))
a3d4a631
NG
7503
7504(define-public hedgewars
7505 (package
7506 (name "hedgewars")
ea042113 7507 (version "1.0.0")
a3d4a631
NG
7508 (source (origin
7509 (method url-fetch)
7510 (uri (string-append "https://www.hedgewars.org/download/releases/"
7511 "hedgewars-src-" version ".tar.bz2"))
7512 (sha256
7513 (base32
ea042113 7514 "0nqm9w02m0xkndlsj6ys3wr0ik8zc14zgilq7k6fwjrf3zk385i1"))))
a3d4a631
NG
7515 (build-system cmake-build-system)
7516 (arguments
7517 ;; XXX: Engine is built as Pascal source code, requiring Free Pascal
7518 ;; Compiler, which we haven't packaged yet. With the flag below, we use
7519 ;; a Pascal to C translator and Clang instead.
7520 `(#:configure-flags (list "-DBUILD_ENGINE_C=ON")
7521 #:phases
7522 (modify-phases %standard-phases
a3d4a631 7523 (replace 'check
ea042113 7524 (lambda _ (invoke "ctest"))))))
a3d4a631
NG
7525 (inputs
7526 `(("ffmpeg" ,ffmpeg)
7527 ("freeglut" ,freeglut)
7528 ("ghc-entropy" ,ghc-entropy)
7529 ("ghc-hslogger" ,ghc-hslogger)
7530 ("ghc-network" ,ghc-network)
7531 ("ghc-random" ,ghc-random)
7532 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
7533 ("ghc-sandi" ,ghc-sandi)
7534 ("ghc-sha" ,ghc-sha)
7535 ("ghc-utf8-string" ,ghc-utf8-string)
7536 ("ghc-vector" ,ghc-vector)
7537 ("ghc-zlib" ,ghc-zlib)
7538 ("glew" ,glew)
7539 ("libpng" ,libpng)
7540 ("lua" ,lua-5.1)
7541 ("physfs" ,physfs)
7542 ("qtbase" ,qtbase)
7543 ("sdl" ,(sdl-union
7544 (list sdl2 sdl2-mixer sdl2-net sdl2-ttf sdl2-image)))))
7545 (native-inputs
7546 `(("clang" ,clang)
7547 ("ghc" ,ghc)
7548 ("pkg-config" ,pkg-config)
7549 ("qttools" ,qttools)))
7550 (home-page "https://hedgewars.org/")
7551 (synopsis "Turn-based artillery game featuring fighting hedgehogs")
7552 (description
7553 "Hedgewars is a turn based strategy, artillery, action and comedy game,
7554featuring the antics of pink hedgehogs with attitude as they battle from the
7555depths of hell to the depths of space.
7556
7557As commander, it's your job to assemble your crack team of hedgehog soldiers
7558and bring the war to your enemy.")
7559 ;; Software as a whole is licensed under GPL-2 terms. Artwork and
7560 ;; scripts are distributed under various terms.
7561 (license (list license:gpl2
7562 license:bsd-2 license:bsd-3 license:cc-by3.0 license:cc0
7563 license:expat license:fdl1.3+ license:public-domain
7564 license:zlib))))
1bba3e8c
JL
7565
7566(define-public harmonist
7567 (package
7568 (name "harmonist")
9f5cb517 7569 (version "0.3.0")
1bba3e8c
JL
7570 (source (origin
7571 (method git-fetch)
7572 (uri (git-reference
7573 (url "https://git.tuxfamily.org/harmonist/harmonist.git")
7574 (commit (string-append "v" version))))
7575 (file-name (git-file-name name version))
7576 (sha256
7577 (base32
9f5cb517 7578 "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r"))))
1bba3e8c
JL
7579 (build-system go-build-system)
7580 (arguments
7581 '(#:import-path "git.tuxfamily.org/harmonist/harmonist"))
7582 (inputs
7583 `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
7584 (home-page "https://harmonist.tuxfamily.org/")
7585 (synopsis "Stealth coffee-break roguelike game")
7586 (description "Harmonist: Dayoriah Clan Infiltration is a stealth
7587coffee-break roguelike game. The game has a heavy focus on tactical
7588positioning, light and noise mechanisms, making use of various terrain types
7589and cones of view for monsters. Aiming for a replayable streamlined experience,
7590the game avoids complex inventory management and character building, relying
7591on items and player adaptability for character progression.")
7592 (license license:isc)))
e93352d6 7593
453365bc
JL
7594(define-public harmonist-tk
7595 (package
7596 (inherit harmonist)
7597 (name "harmonist-tk")
7598 (arguments
7599 (append
7600 (package-arguments harmonist)
7601 `(#:phases
7602 (modify-phases %standard-phases
7603 (replace 'build
7604 (lambda _
7605 (invoke "go" "install" "-v" "-x" "--tags" "tk"
7606 "git.tuxfamily.org/harmonist/harmonist")))
7607 (replace 'check
7608 (lambda _
7609 (invoke "go" "test" "--tags" "tk"
7610 "git.tuxfamily.org/harmonist/harmonist")))))))
7611 (inputs
7612 `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic)))))
7613
e93352d6
NG
7614(define-public drascula
7615 (package
7616 (name "drascula")
7617 (version "1.0")
7618 (source (origin
7619 (method url-fetch)
7620 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7621 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7622 "drascula-" version ".zip"))
7623 (sha256
7624 (base32
7625 "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp"))))
7626 (build-system trivial-build-system)
7627 (arguments
7628 `(#:modules ((guix build utils))
7629 #:builder
7630 (begin
7631 (use-modules (guix build utils)
7632 (ice-9 match))
7633 (let* ((out (assoc-ref %outputs "out"))
7634 (share (string-append out "/share/drascula"))
7635 (scummvm (assoc-ref %build-inputs "scummvm")))
7636 ;; Install data.
7637 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7638 "/bin/unzip"))
7639 (doc (string-append out "/share/doc/" ,name "-" ,version)))
7640 (for-each
7641 (lambda (input)
7642 (invoke unzip
7643 "-j"
7644 (assoc-ref %build-inputs input)
7645 "-x" "__MACOSX")
7646 ;; Every input provides "readme.txt", and we want to
7647 ;; preserve them all. Therefore we rename them first.
7648 (match input
7649 ("drascula-int"
7650 (rename-file "readme.txt" "readme-international.txt"))
7651 ("drascula-audio"
7652 (rename-file "readme.txt" "readme-audio.txt"))
7653 (_ #f))
7654 ;; Install documentation.
7655 (for-each (lambda (f) (install-file f doc))
7656 (find-files "." "\\.(txt|doc)$"))
7657 ;; Install data.
7658 (for-each (lambda (f) (install-file f share))
7659 (find-files "." "\\.(ogg|00[0-9])$")))
7660 '("drascula-audio" "drascula-int" "source")))
7661 ;; Create standalone executable.
7662 (let* ((bin (string-append out "/bin"))
7663 (executable (string-append bin "/drascula"))
7664 (bash (string-append (assoc-ref %build-inputs "bash")
7665 "/bin/bash")))
7666 (mkdir-p bin)
7667 (with-output-to-file executable
7668 (lambda ()
7669 (format #t "#!~a~%" bash)
7670 (format #t
7671 "exec ~a/bin/scummvm --path=~a drascula~%"
7672 scummvm share)))
7673 (chmod executable #o755))
7674 ;; Create desktop file. There is no dedicated icon for the
7675 ;; game, so we borrow SCUMMVM's.
7676 (let ((apps (string-append out "/share/applications")))
7677 (mkdir-p apps)
7678 (with-output-to-file (string-append apps "/drascula.desktop")
7679 (lambda _
7680 (format #t
7681 "[Desktop Entry]~@
7682 Name=Drascula: The Vampire Strikes Back~@
7683 GenericName=Drascula~@
7684 Exec=~a/bin/drascula~@
7685 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7686 Categories=AdventureGame;Game;RolePlaying;~@
7687 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7688 Comment=Classic 2D point and click adventure game~@
7689 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7690 Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@
7691 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7692 Type=Application~%"
7693 out scummvm))))
7694 #t))))
7695 (native-inputs
7696 `(("bash" ,bash)
7697 ("unzip" ,unzip)))
7698 (inputs
7699 `(("scummvm" ,scummvm)
7700 ("drascula-int"
7701 ,(let ((version "1.1"))
7702 (origin
7703 (method url-fetch)
7704 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7705 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7706 "drascula-int-" version ".zip"))
7707 (sha256
7708 (base32
7709 "12236i7blamal92p1i8dgp3nhp2yicics4whsl63v682bj999n14")))))
7710 ("drascula-audio"
7711 ,(let ((version "2.0"))
7712 (origin
7713 (method url-fetch)
7714 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7715 "Drascula_%20The%20Vampire%20Strikes%20Back/"
7716 "drascula-audio-" version ".zip"))
7717 (sha256
7718 (base32
7719 "00g4izmsqzxb8ry1vhfx6jrygl58lvlij09nw01ds4zddsiznsky")))))))
7720 (home-page "https://www.scummvm.org")
7721 (synopsis "Classic 2D point and click adventure game")
7722 (description "Drascula: The Vampire Strikes Back is a classic humorous 2D
7723point and click adventure game.
7724
7725In Drascula you play the role of John Hacker, a British estate agent, that
7726gets to meet a gorgeous blond girl who is kidnapped by the notorious vampire
7727Count Drascula and embark on a fun yet dangerous quest to rescue her.
7728Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
7729the World and demonstrating that he is even more evil than his brother Vlad.")
7730 ;; Drascula uses a BSD-like license.
7731 (license (license:non-copyleft "file:///readme.txt"))))
08c2fb8f 7732
e7db97db
NG
7733(define (make-lure-package name language hash)
7734 (package
7735 (name name)
7736 (version "1.1")
7737 (source
7738 (origin
7739 (method url-fetch)
7740 (uri (string-append
7741 "mirror://sourceforge/scummvm/extras/"
7742 "Lure%20of%20the%20Temptress/"
7743 name "-" version ".zip"))
7744 (sha256
7745 (base32 hash))))
7746 (build-system trivial-build-system)
7747 (arguments
7748 `(#:modules ((guix build utils))
7749 #:builder
7750 (begin
7751 (use-modules (guix build utils))
7752 (let* ((out (assoc-ref %outputs "out"))
7753 (share (string-append out "/share"))
eca528cc 7754 (data (string-append share "/" ,name "/" ,language))
e7db97db
NG
7755 (apps (string-append share "/applications"))
7756 (bin (string-append out "/bin"))
7757 (executable (string-append bin "/" ,name))
7758 (scummvm (assoc-ref %build-inputs "scummvm")))
7759 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7760 "/bin/unzip")))
7761 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
eca528cc 7762 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
e7db97db
NG
7763 (for-each (lambda (f) (install-file f doc))
7764 (find-files "." "\\.(txt|PDF|pdf)$")))
7765 (for-each (lambda (f) (install-file f data))
7766 (find-files "." "\\.(vga|VGA)$"))
7767 ;; Build the executable.
7768 (mkdir-p bin)
7769 (let ((bash (assoc-ref %build-inputs "bash")))
7770 (with-output-to-file executable
7771 (lambda ()
7772 (format #t "#!~a/bin/bash~%" bash)
7773 (format #t "exec ~a/bin/scummvm -q ~a -p ~a lure~%"
7774 scummvm ,language data))))
7775 (chmod executable #o755)
7776 ;; Create desktop file. There is no dedicated
7777 ;; icon for the game, so we borrow SCUMMVM's.
7778 (mkdir-p apps)
7779 (with-output-to-file (string-append apps "/" ,name ".desktop")
7780 (lambda _
7781 (format #t
7782 "[Desktop Entry]~@
7783 Name=Lure of the Temptress~@
7784 GenericName=Lure~@
7785 Exec=~a~@
7786 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7787 Categories=AdventureGame;Game;RolePlaying;~@
7788 Keywords=game;adventure;roleplaying;2D,fantasy;~@
7789 Comment=Classic 2D point and click adventure game~@
7790 Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@
7791 Comment[fr]=Jeu classique d'aventure pointer-et-cliquer en 2D~@
7792 Comment[it]=Gioco classico di avventura punta e clicca 2D~@
7793 Type=Application~%"
7794 executable scummvm)))
7795 #t))))
7796 (native-inputs
eca528cc 7797 `(("unzip" ,unzip)))
e7db97db 7798 (inputs
eca528cc
NG
7799 `(("bash" ,bash)
7800 ("scummvm" ,scummvm)))
e7db97db
NG
7801 (home-page "https://www.scummvm.org")
7802 (synopsis "2D point and click fantasy adventure game")
7803 (description
7804 "Lure of the Temptress is a classic 2D point and click adventure game.
7805
7806You are Diermot, an unwilling hero who'd prefer a quiet life, and are, to all
7807intents and purposes, a good man. After decades of unrest the King has united
7808the warring factions in his kingdom and all his lands are at peace, except
7809a remote region around a town called Turnvale. A revolt has recently taken
7810place in Turnvale, a revolt orchestrated by an apprentice sorceress called
7811Selena, the titular temptress. The king calls together his finest horsemen
7812and heads off (with you in tow) to Turnvale just to witness how hellish
7813mercenary monsters called Skorl are invading the town.
7814
7815The king's men are defeated, the king is killed and you fall of your horse and
7816bang your head heavily on the ground. You have been *unconscious for a while
7817when you realize that you are in a dingy cell guarded by a not so friendly
7818Skorl. Maybe it would be an idea to try and escape...")
7819 (license (license:non-copyleft "file:///README"))))
7820
7821(define-public lure
7822 (make-lure-package
7823 "lure" "en" "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk"))
7824
7825(define-public lure-de
7826 (make-lure-package
7827 "lure-de" "de" "0sqq7h5llml6rv85x0bfv4bgzwhs4c82p4w4zmfcaab6cjlad0sy"))
7828
7829(define-public lure-es
7830 (make-lure-package
7831 "lure-es" "es" "1dvv5znvlsakw6w5r16calv9jkgw27aymgybsf4q22lcmpxbj1lk"))
7832
7833(define-public lure-fr
7834 (make-lure-package
7835 "lure-fr" "fr" "1y51jjb7f8023832g44vd1jsb6ni85586pi2n5hjg9qjk6gi90r9"))
7836
7837(define-public lure-it
7838 (make-lure-package
7839 "lure-it" "it" "1ks6n39r1cllisrrh6pcr39swsdv7ng3gx5c47vaw71zzfr70hjj"))
7840
35cb2ac5
NG
7841(define (make-queen-package name file-prefix release language hash)
7842 (package
7843 (name name)
7844 (version release)
7845 (source
7846 (origin
7847 (method url-fetch)
7848 (uri (string-append "mirror://sourceforge/scummvm/extras/"
7849 "Flight%20of%20the%20Amazon%20Queen/"
7850 file-prefix release ".zip"))
7851 (sha256
7852 (base32 hash))))
7853 (build-system trivial-build-system)
7854 (arguments
7855 `(#:modules ((guix build utils))
7856 #:builder
7857 (begin
7858 (use-modules (guix build utils))
7859 (let* ((out (assoc-ref %outputs "out"))
7860 (share (string-append out "/share"))
7861 (data (string-append share "/" ,name))
7862 (apps (string-append share "/applications"))
7863 (bin (string-append out "/bin"))
7864 (executable (string-append bin "/" ,name))
7865 (scummvm (assoc-ref %build-inputs "scummvm")))
7866 (let ((unzip (string-append (assoc-ref %build-inputs "unzip")
7867 "/bin/unzip")))
7868 (invoke unzip "-j" (assoc-ref %build-inputs "source")))
7869 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
7870 (install-file "readme.txt" doc))
7871 (install-file "queen.1c" data)
7872 (mkdir-p bin)
7873 (let ((bash (assoc-ref %build-inputs "bash")))
7874 (with-output-to-file executable
7875 (lambda ()
7876 (format #t "#!~a/bin/bash~%" bash)
7877 (format #t "exec ~a/bin/scummvm -q fr -p ~a queen~%"
7878 scummvm data))))
7879 (chmod executable #o755)
7880 ;; Create desktop file. There is no dedicated
7881 ;; icon for the game, so we borrow SCUMMVM's.
7882 (mkdir-p apps)
7883 (with-output-to-file (string-append apps "/" ,name ".desktop")
7884 (lambda _
7885 (format #t
7886 "[Desktop Entry]~@
7887 Name=Flight of the Amazon Queen~@
7888 GenericName=Queen~@
7889 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~@
7890 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~@
7891 Type=Application~@
7892 Exec=~a~@
7893 Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@
7894 Categories=AdventureGame;Game;RolePlaying;~@
7895 Keywords=adventure;game;roleplaying;fantasy;~%"
7896 executable scummvm))))
7897 #t)))
7898 (native-inputs
7899 `(("unzip" ,unzip)))
7900 (inputs
7901 `(("bash" ,bash)
7902 ("scummvm" ,scummvm)))
7903 (home-page "https://www.scummvm.org/")
7904 (synopsis "Classic 2D point and click adventure game")
7905 (description "Flight of the Amazon Queen is a 2D point-and-click
7906adventure game set in the 1940s.
7907
7908You assume the role of Joe King, a pilot for hire who is given the job
7909of flying Faye Russell (a famous movie star) into the Amazon jungle
7910for a photo shoot. Of course, things never go according to plans.
7911After an unfortunate turn of events they find themselves stranded in
7912the heart of the Amazon jungle, where Joe will embark on a quest to
7913rescue a kidnapped princess and in the process, discover the true
7914sinister intentions of a suspiciously located Lederhosen company. In
7915a rich 2D environment, Joe will cross paths with a variety of unlikely
7916jungle inhabitants including, but not limited to, a tribe of Amazon
7917women and 6-foot-tall pygmies.")
7918 (license (license:non-copyleft "file:///readme.txt"))))
7919
7920(define-public queen
7921 (make-queen-package
7922 "queen" "FOTAQ_Talkie-" "1.1" "en"
7923 "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52"))
7924
7925(define-public queen-de
7926 (make-queen-package
7927 "queen-de" "FOTAQ_Ger_talkie-" "1.0" "de"
7928 "13vn43x7214vyprlpqabvv71k890nff3d6fjscflr1ll7acjca3f"))
7929
7930(define-public queen-fr
7931 (make-queen-package
7932 "queen-fr" "FOTAQ_Fr_Talkie_" "1.0" "fr"
7933 "0hq5g4qrkcwm2kn5i4kv4hijs9hi7bw9xl1vrwd1l69qqn30crwy"))
7934
7935(define-public queen-it
7936 (make-queen-package
7937 "queen-it" "FOTAQ_It_Talkie_" "1.0" "it"
7938 "1h76y70lrpzfjkm53n4nr364nhyka54vbz9r7sadzyzl7c7ilv4d"))
7939
08c2fb8f
JG
7940(define-public gnurobots
7941 (package
7942 (name "gnurobots")
7943 (version "1.2.0")
7944 (source
7945 (origin
7946 (method url-fetch)
7947 (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
7948 version ".tar.gz"))
7949 (sha256
7950 (base32
7951 "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
7952 (build-system gnu-build-system)
7953 (inputs
7954 `(("glib" ,glib)
7955 ("gtk+" ,gtk+-2)
7956 ("vte" ,vte/gtk+-2)
7957 ("readline" ,readline)
7958 ("guile" ,guile-1.8)))
7959 (native-inputs
7960 `(("pkg-config" ,pkg-config)))
7961 (arguments
7962 `(#:make-flags
7963 (list
7964 ;; Do not abort build on "deprecated-declarations" warnings.
7965 "CFLAGS=-Wno-error=deprecated-declarations"
7966 ;; Find readline headers in sub-directory.
7967 (string-append "READLINE_CFLAGS=-I"
7968 (assoc-ref %build-inputs "readline")
7969 "/include/readline/"))
7970 #:phases
7971 (modify-phases %standard-phases
7972 (add-after 'install 'install-doc
7973 (lambda* (#:key outputs #:allow-other-keys)
7974 (install-file "doc/Robots-HOWTO"
7975 (string-append (assoc-ref outputs "out")
7976 "/share/doc/gnurobots-"
7977 ,version))
7978 #t)))))
7979 (home-page "https://www.gnu.org/software/gnurobots/")
7980 (synopsis "Program a little robot and watch it explore a world")
7981 (description
7982 "GNU Robots is a game in which you program a robot to explore a world
7983full of enemies that can hurt it, obstacles and food to be eaten. The goal of
7984the game is to stay alive and collect prizes. The robot program conveniently
7985may be written in a plain text file in the Scheme programming language.")
7986 (license license:gpl3+)))
3745909d
NG
7987
7988(define-public ri-li
7989 (package
7990 (name "ri-li")
7991 (version "2.0.1")
7992 (source (origin
7993 (method url-fetch)
7994 (uri (string-append "mirror://sourceforge/ri-li/"
7995 "Ri-li%20Linux_Unix/Ri-li%20V" version "/"
7996 "Ri-li-" version ".tar.bz2"))
7997 (sha256
7998 (base32
7999 "1gcdsgnnbbn1mb1hkpwniv3fhkaj1nn8gq33v5c16q3wqchcq77p"))
8000 ;; Taken from
8001 ;; <https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/rili/moderinze_cpp.patch>.
8002 ;; It doesn't build otherwise.
8003 (patches (search-patches "ri-li-modernize_cpp.patch"))))
8004 (build-system gnu-build-system)
8005 (arguments
8006 `(#:phases
8007 (modify-phases %standard-phases
8008 ;; Remove "gentoo" subdirectory from Makefile, as it is
8009 ;; missing a make file and generates a build failure.
8010 (add-after 'configure 'fix-build
8011 (lambda _
8012 (substitute* "Makefile"
8013 ((" gentoo") ""))
8014 #t))
8015 (add-after 'install 'install-desktop-file
8016 (lambda* (#:key outputs #:allow-other-keys)
8017 (let* ((out (assoc-ref outputs "out"))
8018 (apps (string-append out "/share/applications"))
8019 (pixmaps (string-append out "/share/pixmaps")))
8020 (for-each (lambda (f) (install-file f pixmaps))
8021 (find-files "data" "\\.(png|ico)$"))
8022 (mkdir-p apps)
8023 (with-output-to-file (string-append apps "/ri-li.desktop")
8024 (lambda _
8025 (format #t
8026 "[Desktop Entry]~@
8027 Name=Ri-li~@
8028 Exec=~a/bin/Ri_li~@
8029 Icon=~a/Ri-li-icon-32x32.png~@
8030 Categories=Game;ArcadeGame;~@
8031 Keywords=toy;train;wooden;snake-like;engine;~@
8032 Comment=a toy simulator game~@
8033 Comment[de]=Ein Spiel mit einem kleinen Zug~@
8034 Comment[fr]=un jeu de petit train~@
8035 Comment[ro_RO]=un joc cu un tren de jucărie~@
8036 Terminal=false~@
8037 Type=Application~%"
8038 out pixmaps))))
8039 #t))
8040 (add-after 'install-desktop-file 'remove-spurious-files
8041 ;; Delete redundant files already installed somewhere else.
8042 (lambda* (#:key outputs #:allow-other-keys)
8043 (let ((out (assoc-ref outputs "out")))
8044 (for-each delete-file
8045 (find-files (string-append out "/share/Ri-li")
8046 "\\.(png|ico)|COPYING"))
8047 #t))))))
8048 (inputs
8049 `(("sdl" ,(sdl-union (list sdl sdl-mixer)))))
8050 (home-page "http://www.ri-li.org")
8051 (synopsis "Toy train simulation game")
8052 (description "Ri-li is a game in which you drive a wooden toy
8053steam locomotive across many levels and collect all the coaches to
8054win.")
8055 ;; The project is dual-licensed GPL2+ and GPL3+.
8056 (license (list license:gpl2+ license:gpl3+))))
562a2a40
JG
8057
8058(define-public freeorion
8059 (package
8060 (name "freeorion")
8061 (version "0.4.8")
8062 (source
8063 (origin
8064 (method git-fetch)
8065 (uri (git-reference
8066 (url "https://github.com/freeorion/freeorion.git")
8067 ;; Most recent stable release uses boost_signals (v1) which was
8068 ;; later replaced with boost-signals2 and no longer exists. This
8069 ;; commit builds and runs.
8070 ;;
8071 ;; TODO: Update this when the next stable release when it is
8072 ;; available.
8073 (commit "470d0711537804df3c2ca25532f674ab4bec58af")))
8074 (file-name (git-file-name name version))
8075 (sha256
8076 (base32
8077 "1wsw632l1cj17px6i88nqjzs0dngp5rsr67n6qkkjlfjfxi69j0f"))
8078 (modules '((guix build utils)))
8079 (snippet
8080 '(begin
8081 ;; There are some bundled fonts.
8082 (for-each delete-file-recursively '("default/data/fonts"))
8083 #t))))
8084 (build-system cmake-build-system)
8085 (arguments
8086 '(#:tests? #f ;no test
8087 #:phases
8088 (modify-phases %standard-phases
8089 (add-after 'unpack 'unbundle-fonts
8090 (lambda* (#:key inputs #:allow-other-keys)
8091 (let ((roboto-dir (string-append (assoc-ref inputs "font-roboto")
8092 "/share/fonts/truetype/")))
8093 (substitute* "UI/ClientUI.cpp"
7658904a 8094 (("\\(GetRootDataDir.*?Roboto-(Bold|Regular)\\.ttf\"\\)\\.string\\(\\)\\);"
562a2a40 8095 all type)
7658904a 8096 (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
562a2a40
JG
8097 #t))))))
8098 (inputs
8099 `(("boost" ,boost)
8100 ("boost_signals" ,boost-signals2)
8101 ("font-dejavu" ,font-dejavu)
8102 ("font-roboto" ,font-google-roboto)
8103 ("freetype2" ,freetype)
8104 ("glew" ,glew)
8105 ("glu" ,glu)
8106 ("libogg" ,libogg)
8107 ("libpng" ,libpng)
8108 ("libvorbis" ,libvorbis)
8109 ("openal" ,openal)
8110 ("python2" ,python-2.7)
8111 ("sdl2" ,sdl2)
8112 ("zlib" ,zlib)))
8113 (home-page "https://www.freeorion.org/index.php/Main_Page")
8114 (synopsis "Turn-based space empire and galactic conquest computer game")
8115 (description
8116 "FreeOrion is a turn-based space empire and galactic conquest (4X)
8117computer game being designed and built by the FreeOrion project. Control an
8118empire with the goal of exploring the galaxy, expanding your territory,
8119exploiting the resources, and exterminating rival alien empires. FreeOrion is
8120inspired by the tradition of the Master of Orion games, but is not a clone or
8121remake of that series or any other game.")
8122 ;; Source code is released under gpl2. Artwork, music and sounds, and
8123 ;; in-game text are released under cc-by-sa3.0. Game content scripts are
8124 ;; released under both gpl2 and cc-by-sa3.0. Bundled Gigi library is
8125 ;; released under lgpl2.1+.
8126 (license (list license:gpl2 license:cc-by-sa3.0 license:lgpl2.1+))))
fbfc07bd
GLV
8127
8128(define-public leela-zero
8129 (package
8130 (name "leela-zero")
8131 (version "0.17")
8132 (source
8133 (origin
8134 (method git-fetch)
8135 (uri (git-reference
8136 (url "https://github.com/leela-zero/leela-zero.git")
8137 (commit (string-append "v" version))))
8138 (file-name (git-file-name name version))
8139 (sha256
8140 (base32
8141 "17px5iny8mql5c01bymcli7zfssswkzvb2i8gnsmjcck6i2n8srl"))
8142 (patches (search-patches "leela-zero-gtest.patch"))))
8143 (build-system cmake-build-system)
8144 (native-inputs
8145 `(("googletest" ,googletest)))
8146 (inputs
8147 `(("boost" ,boost)
8148 ("ocl-icd" ,ocl-icd)
8149 ("openblas" ,openblas)
8150 ("opencl-headers" ,opencl-headers)
8151 ("qtbase" ,qtbase)
8152 ("zlib" ,zlib)))
8153 (arguments
8154 '(#:configure-flags '("-DUSE_BLAS=YES")
8155 #:phases (modify-phases %standard-phases
8156 (add-before 'configure 'fix-tests
8157 (lambda* (#:key outputs #:allow-other-keys)
8158 (let ((home (getcwd)))
8159 (setenv "HOME" home)
8160 (substitute* "src/tests/gtests.cpp"
8161 (("\\.\\./src/tests/0k\\.txt")
8162 (string-append home "/src/tests/0k.txt"))
8163 (("cfg_gtp_mode = true;")
8164 "cfg_gtp_mode = true; cfg_cpu_only = true;")))
8165 #t))
8166 (replace 'check
8167 (lambda _
8168 (invoke "./tests"))))))
8169 (home-page "https://github.com/leela-zero/leela-zero")
8170 (synopsis "Program playing the game of Go")
8171 (description
8172 "Leela-zero is a Go engine with no human-provided knowledge, modeled after
8173the AlphaGo Zero paper. The current best network weights file for the engine
8174can be downloaded from @url{https://zero.sjeng.org/best-network}.")
8175 (license license:gpl3+)))
66977719
GLV
8176
8177(define-public q5go
8178 (package
8179 (name "q5go")
8180 (version "1.0")
8181 (source (origin
8182 (method git-fetch)
8183 (uri (git-reference
8184 (url "https://github.com/bernds/q5Go.git")
8185 (commit (string-append "q5go-" version))))
8186 (file-name (git-file-name name version))
8187 (sha256
8188 (base32
8189 "1gdlfqcqkqv7vph3qwq78d0qz6dhmdsranxq9bmixiisbzkqby31"))))
8190 (build-system gnu-build-system)
8191 (native-inputs
8192 `(("pkg-config" ,pkg-config)))
8193 (inputs
8194 `(("qtbase" ,qtbase)
8195 ("qtmultimedia" ,qtmultimedia)
8196 ("qtsvg" ,qtsvg)))
8197 (arguments
8198 '(#:phases
8199 (modify-phases %standard-phases
8200 (add-after 'unpack 'fix-configure-script
8201 (lambda _
8202 ;; Bypass the unavailable qtchooser program.
8203 (substitute* "configure"
8204 (("test -z \"QTCHOOSER\"")
8205 "false")
8206 (("qtchooser -run-tool=(.*) -qt=qt5" _ command)
8207 command))
8208 #t))
8209 (add-after 'unpack 'fix-paths
8210 (lambda _
8211 (substitute* '("src/pics/Makefile.in"
8212 "src/translations/Makefile.in")
8213 (("\\$\\(datadir\\)/qGo/")
8214 "$(datadir)/q5go/"))
8215 #t))
8216 (add-after 'install 'install-desktop-file
8217 (lambda* (#:key outputs #:allow-other-keys)
8218 (let* ((out (assoc-ref outputs "out"))
8219 (apps (string-append out "/share/applications"))
8220 (pics (string-append out "/share/q5go/pics")))
8221 (delete-file-recursively (string-append out "/share/applnk"))
8222 (delete-file-recursively (string-append out "/share/mimelnk"))
8223 (install-file "../source/src/pics/Bowl.ico" pics)
8224 (mkdir-p apps)
8225 (with-output-to-file (string-append apps "/q5go.desktop")
8226 (lambda _
8227 (format #t
8228 "[Desktop Entry]~@
8229 Name=q5go~@
8230 Exec=~a/bin/q5go~@
8231 Icon=~a/Bowl.ico~@
8232 Categories=Game;~@
8233 Comment=Game of Go~@
8234 Comment[de]=Spiel des Go~@
8235 Comment[eo]=Goo~@
8236 Comment[es]=Juego de Go~@
8237 Comment[fr]=Jeu de Go~@
8238 Comment[ja]=囲碁~@
8239 Comment[ko]=바둑~@
8240 Comment[zh]=围棋~@
8241 Terminal=false~@
8242 Type=Application~%"
8243 out pics))))
8244 #t)))))
8245 (synopsis "Qt GUI to play the game of Go")
8246 (description
8247 "This a tool for Go players which performs the following functions:
8248@itemize
8249@item SGF editor,
8250@item Analysis frontend for Leela Zero (or compatible engines),
8251@item GTP interface (to play against an engine),
8252@item IGS client (to play on the internet),
8253@item Export games to a variety of formats.
8254@end itemize")
8255 (home-page "https://github.com/bernds/q5Go")
8256 (license license:gpl2+)))
3c1c5622
HG
8257
8258(define-public ktuberling
8259 (package
8260 (name "ktuberling")
8261 (version "19.08.3")
8262 (source
8263 (origin
8264 (method url-fetch)
8265 (uri (string-append "mirror://kde/stable/applications/" version
8266 "/src/ktuberling-" version ".tar.xz"))
8267 (sha256
8268 (base32 "1qdf4q6wjh1lnlqw5c8z4rpj9w5vbyjfri1dah6yjm3mwppbc12j"))))
3c1c5622
HG
8269 (build-system qt-build-system)
8270 (native-inputs
8271 `(("extra-cmake-modules" ,extra-cmake-modules)
8272 ("perl" ,perl)))
8273 (inputs
8274 `(("kcompletion" ,kcompletion)
8275 ("kconfigwidgets" ,kconfigwidgets)
8276 ("kcoreaddons" ,kcoreaddons)
8277 ("kcrash" ,kcrash)
8278 ("kdbusaddons" ,kdbusaddons)
8279 ("kdelibs4support" ,kdelibs4support)
8280 ("ki18n" ,ki18n)
8281 ("kwidgetsaddons" ,kwidgetsaddons)
8282 ("kxmlgui" ,kxmlgui)
8283 ("libkdegames" ,libkdegames)
8284 ("qtbase" ,qtbase)
8285 ("qtmultimedia" ,qtmultimedia)
8286 ("qtdeclarative" ,qtdeclarative)
8287 ("qtsvg" ,qtsvg)))
8288 (home-page "https://games.kde.org/")
8289 (synopsis "Stamp drawing toy")
8290 (description "KTuberling is a drawing toy intended for small children and
8291adults who remain young at heart. The game has no winner; the only purpose is
8292to make the funniest faces you can. Several activites are possible, e.g.:
8293
8294@itemize
8295@item Give the potato a funny face, clothes, and other goodies
8296@item Build a small town, complete with school, zoo, and fire department
8297@item Create a fantastic moonscape with spaceships and aliens
8298@item Top a pizza
8299@end itemize
8300
8301KTuberling can speak the name of each the object in several languages,
8302to assist in learning basic vocabulary.
8303
8304This package is part of the KDE games module.")
8305 (license (list license:gpl2+ license:fdl1.2+))))
f9913977
HG
8306
8307(define-public picmi
8308 (package
8309 (name "picmi")
8310 (version "19.08.3")
8311 (source
8312 (origin
8313 (method url-fetch)
8314 (uri (string-append "mirror://kde/stable/applications/" version
8315 "/src/picmi-" version ".tar.xz"))
8316 (sha256
8317 (base32 "0z9mpmv49w914gqdx274brdzl6d1bz9j9nkvbwgmr3iq1ba49m3f"))))
f9913977
HG
8318 (build-system qt-build-system)
8319 (native-inputs
8320 `(("extra-cmake-modules" ,extra-cmake-modules)
8321 ("kdoctools" ,kdoctools)))
8322 (inputs
8323 `(("kcoreaddons" ,kcoreaddons)
8324 ("kcrash" ,kcrash)
8325 ("kdbusaddons" ,kdbusaddons)
8326 ("kdeclarative" ,kdeclarative)
8327 ("ki18n" ,ki18n)
8328 ("kio" ,kio)
8329 ("knewstuff" ,knewstuff)
8330 ("kxmlgui" ,kxmlgui)
8331 ("libkdegames" ,libkdegames)
8332 ("qtbase" ,qtbase)
8333 ("qtdeclarative" ,qtdeclarative)
8334 ("qtsvg" ,qtsvg)))
8335 (home-page "https://games.kde.org/")
8336 (synopsis "Number logic game")
8337 (description "Picmi is a number logic game in which cells in a grid have
8338to be colored or left blank according to numbers given at the side of the
8339grid. The aim is to reveal a hidden picture.
8340
8341This package is part of the KDE games module.")
8342 (license (list license:gpl2+ license:fdl1.2+))))
e1b174eb
HG
8343
8344(define-public kolf
8345 (package
8346 (name "kolf")
8347 (version "19.08.3")
8348 (source
8349 (origin
8350 (method url-fetch)
8351 (uri (string-append "mirror://kde/stable/applications/" version
8352 "/src/kolf-" version ".tar.xz"))
8353 (sha256
8354 (base32 "06sfd0llr5cc3zf1vrpcxgw9bm009ky7y8822kynic9ipcd4z1hw"))))
e1b174eb
HG
8355 (build-system qt-build-system)
8356 (native-inputs
8357 `(("extra-cmake-modules" ,extra-cmake-modules)
8358 ("kdoctools" ,kdoctools)))
8359 (inputs
8360 `(("kcompletion" ,kcompletion)
8361 ("kconfigwidgets" ,kconfigwidgets)
8362 ("kcoreaddons" ,kcoreaddons)
8363 ("kcrash" ,kcrash)
8364 ("kdbusaddons" ,kdbusaddons)
8365 ("ki18n" ,ki18n)
8366 ("kio" ,kio)
8367 ("kwidgetsaddons" ,kwidgetsaddons)
8368 ("kxmlgui" ,kxmlgui)
8369 ("ktextwidgets" ,ktextwidgets)
8370 ("libkdegames" ,libkdegames)
8371 ("qtbase" ,qtbase)
8372 ("qtdeclarative" ,qtdeclarative)))
8373 (home-page "https://games.kde.org/")
8374 (synopsis "Miniature golf game")
8375 (description "Kolf is a miniature golf game for one to ten players. The
8376game is played from an overhead view, with a short bar representing the golf
8377club. Kolf features many different types of objects, such as water hazards,
8378slopes, sand traps, and black holes (warps), among others.
8379
8380Features are:
8381@itemize
8382@item Single and Multi-player (up to ten players) modes
8383@item High scores table
8384@item Dynamic courses
8385@item Third-party courses
8386@item Course editor
8387@end itemize
8388
8389This package is part of the KDE games module.")
8390 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
2582f582
HG
8391
8392(define-public libkmahjongg
8393 (package
8394 (name "libkmahjongg")
8395 (version "19.08.3")
8396 (source
8397 (origin
8398 (method url-fetch)
8399 (uri (string-append "mirror://kde/stable/applications/"
8400 version "/src/libkmahjongg-" version ".tar.xz"))
8401 (sha256
8402 (base32 "0rdimk11hrc8qrmiv26z0ddjzi1k6806c0rfskx4cwmildmh6zgx"))))
8403 (build-system qt-build-system)
8404 (native-inputs
8405 `(("extra-cmake-modules" ,extra-cmake-modules)))
8406 (inputs
8407 `(("kauth" ,kauth)
8408 ("kcompletion" ,kcompletion)
8409 ;("kconfig" ,kconfig)
8410 ("kcodecs" ,kcodecs)
8411 ("kconfigwidgets" ,kconfigwidgets)
8412 ("kcoreaddons" ,kcoreaddons)
8413 ("ki18n" ,ki18n)
8414 ("kwidgetsaddons" ,kwidgetsaddons)
8415 ("qtbase" ,qtbase)
8416 ("qtsvg" ,qtsvg)))
8417 (home-page "https://games.kde.org/")
8418 (synopsis "Shared library for kmahjongg and kshisen")
8419 (description "Shared library and common files for kmahjongg, kshisen and
8420other Mah Jongg like games.")
8421 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
c57e31fb
HG
8422
8423(define-public kmahjongg
8424 (package
8425 (name "kmahjongg")
8426 (version "19.08.3")
8427 (source
8428 (origin
8429 (method url-fetch)
8430 (uri (string-append "mirror://kde/stable/applications/"
8431 version "/src/kmahjongg-" version ".tar.xz"))
8432 (sha256
8433 (base32 "08na845h0nhmfrszdmvfq5y1dy7kgbrlzjp0f5snvbbf7w44ci6p"))))
c57e31fb
HG
8434 (build-system qt-build-system)
8435 (native-inputs
8436 `(("extra-cmake-modules" ,extra-cmake-modules)
8437 ("kdoctools" ,kdoctools)))
8438 (inputs
8439 `(("kcompletion" ,kcompletion)
8440 ("kcrash" ,kcrash)
8441 ("kdbusaddons" ,kdbusaddons)
8442 ("kdeclarative" ,kdeclarative)
8443 ("ki18n" ,ki18n)
8444 ("knewstuff" ,knewstuff)
8445 ("kxmlgui" ,kxmlgui)
8446 ("libkdegames" ,libkdegames)
8447 ("libkmahjongg" ,libkmahjongg)
8448 ("qtbase" ,qtbase)
8449 ("qtdeclarative" ,qtdeclarative)
8450 ("qtsvg" ,qtsvg)))
8451 (home-page "https://games.kde.org/")
8452 (synopsis "Tile laying patience")
8453 (description "In KMahjongg the tiles are scrambled and staked on top of
8454each other to resemble a certain shape. The player is then expected to remove
8455all the tiles off the game board by locating each tile's matching pair.
8456
8457A variety of tile layouts are included, as well as an editor to create new
8458layouts.
8459
8460This package is part of the KDE games module.")
8461 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
110b738b
HG
8462
8463(define-public kshisen
8464 (package
8465 (name "kshisen")
8466 (version "19.08.3")
8467 (source
8468 (origin
8469 (method url-fetch)
8470 (uri (string-append "mirror://kde/stable/applications/"
8471 version "/src/kshisen-" version ".tar.xz"))
8472 (sha256
8473 (base32 "1bq5m48af4h5apfp3bfsp76nlpv6h5sc0gd544zv7cgpfznz1sds"))))
110b738b
HG
8474 (build-system qt-build-system)
8475 (native-inputs
8476 `(("extra-cmake-modules" ,extra-cmake-modules)
8477 ;("perl" ,perl)
8478 ;("pkg-config" ,pkg-config)
8479 ("kdoctools" ,kdoctools)))
8480 (inputs
8481 `(("kauth" ,kauth)
8482 ("kcompletion" ,kcompletion)
8483 ("kconfigwidgets" ,kconfigwidgets)
8484 ("kcoreaddons" ,kcoreaddons)
8485 ("kcrash" ,kcrash)
8486 ("kdbusaddons" ,kdbusaddons)
8487 ("ki18n" ,ki18n)
8488 ("kxmlgui" ,kxmlgui)
8489 ("libkdegames" ,libkdegames)
8490 ("libkmahjongg" ,libkmahjongg)
8491 ("qtbase" ,qtbase)
8492 ("qtdeclarative" ,qtdeclarative)))
8493 (home-page "https://games.kde.org/")
8494 (synopsis "Shisen-Sho solitaire game")
8495 (description "KShisen is a solitaire-like game played using the standard
8496set of Mahjong tiles. Unlike Mahjong however, KShisen has only one layer of
8497scrambled tiles
8498
8499This package is part of the KDE games module.")
8500 (license license:gpl2+)))
321bd0c3
HG
8501
8502(define-public kajongg
8503 (package
8504 (name "kajongg")
8505 (version "19.08.3")
8506 (source
8507 (origin
8508 (method url-fetch)
8509 (uri (string-append "mirror://kde/stable/applications/"
8510 version "/src/kajongg-" version ".tar.xz"))
8511 (sha256
8512 (base32 "0ql6p5zifdpdf65r7ki9ml123azpwwk9x3x8r9ij6xhjnf7p7x6w"))))
321bd0c3
HG
8513 (build-system qt-build-system)
8514 (native-inputs
8515 `(("extra-cmake-modules" ,extra-cmake-modules)
8516 ;("perl" ,perl)
8517 ("kdoctools" ,kdoctools)))
8518 (inputs
8519 `(("kconfig" ,kconfig)
8520 ("kconfigwidgets" ,kconfigwidgets)
8521 ("kcoreaddons" ,kcoreaddons)
8522 ("ki18n" ,ki18n)
8523 ("libkmahjongg" ,libkmahjongg)
8524 ("python" ,python)
8525 ("qtbase" ,qtbase)
8526 ("qtsvg" ,qtsvg)))
8527 (propagated-inputs
8528 `(("python-twisted" ,python-twisted)
8529 ("python-pyqt" ,python-pyqt)))
8530 ;; FIXME: Need to wrap PYTHONPATH
8531 (home-page "https://games.kde.org/")
8532 (synopsis "Classical Mah Jongg game for 4 players")
8533 (description "Kajongg is the ancient Chinese board game for 4 players.
8534
8535If you are looking for the Mah Jongg solitaire please use the application
8536kmahjongg.
8537
8538Kajongg can be used in two different ways: Scoring a manual game where you
8539play as always and use Kajongg for the computation of scores and for
8540bookkeeping. Or you can use Kajongg to play against any combination of other
8541human players or computer players.
8542
8543This package is part of the KDE games module.")
8544 (license (list license:gpl2+ license:fdl1.2+))))
f4195446
HG
8545
8546(define-public kbreakout
8547 (package
8548 (name "kbreakout")
8549 (version "19.08.3")
8550 (source
8551 (origin
8552 (method url-fetch)
8553 (uri (string-append "mirror://kde/stable/applications/" version
8554 "/src/kbreakout-" version ".tar.xz"))
8555 (sha256
8556 (base32 "0gwzx1z9mxrjlcjzglg8cxkyd6900whcar3b5j9laxxarc6xhj8w"))))
f4195446
HG
8557 (build-system qt-build-system)
8558 (native-inputs
8559 `(("extra-cmake-modules" ,extra-cmake-modules)
8560 ("kdoctools" ,kdoctools)))
8561 (inputs
8562 `(("kcompletion" ,kcompletion)
8563 ("kconfig" ,kconfig)
8564 ("kconfigwidgets" ,kconfigwidgets)
8565 ("kcoreaddons" ,kcoreaddons)
8566 ("kcrash" ,kcrash)
8567 ("kdbusaddons" ,kdbusaddons)
8568 ("ki18n" ,ki18n)
8569 ("kwidgetsaddons" ,kwidgetsaddons)
8570 ("kxmlgui" ,kxmlgui)
8571 ("libkdegames" ,libkdegames)
8572 ("qtbase" ,qtbase)
8573 ("qtdeclarative" ,qtdeclarative)))
8574 (home-page "https://games.kde.org/")
8575 (synopsis "Breakout like game")
8576 (description "KBreakout is similar to the classics breakout and xboing,
8577featuring a number of added graphical enhancements and effects. You control a
8578paddle at the bottom of the playing-field, and must destroy bricks at the top
8579by bouncing balls against them.
8580
8581This package is part of the KDE games module.")
8582 (license (list license:gpl2+ license:fdl1.2+))))
df3d90c7
HG
8583
8584(define-public kmines
8585 (package
8586 (name "kmines")
8587 (version "19.08.3")
8588 (source
8589 (origin
8590 (method url-fetch)
8591 (uri (string-append "mirror://kde/stable/applications/" version
8592 "/src/kmines-" version ".tar.xz"))
8593 (sha256
8594 (base32 "0ac3za36lh8hpx6mqfic9amwmzhzhzplm9hg3pw12gxl5a9mvfsf"))))
df3d90c7
HG
8595 (build-system qt-build-system)
8596 (native-inputs
8597 `(("extra-cmake-modules" ,extra-cmake-modules)
8598 ("kdoctools" ,kdoctools)))
8599 (inputs
8600 `(("kcompletion" ,kcompletion)
8601 ("kconfig" ,kconfig)
8602 ("kconfigwidgets" ,kconfigwidgets)
8603 ("kcoreaddons" ,kcoreaddons)
8604 ("kcrash" ,kcrash)
8605 ("kdbusaddons" ,kdbusaddons)
8606 ("ki18n" ,ki18n)
8607 ("ktextwidgets" ,ktextwidgets)
8608 ("kwidgetsaddons" ,kwidgetsaddons)
8609 ("kxmlgui" ,kxmlgui)
8610 ("libkdegames" ,libkdegames)
8611 ("qtbase" ,qtbase)
8612 ("qtdeclarative" ,qtdeclarative)))
8613 (home-page "https://games.kde.org/")
8614 (synopsis "Classical mine sweeper game")
8615 (description "KMines is a classic Minesweeper game. The idea is to
8616uncover all the squares without blowing up any mines. When a mine is blown
8617up, the game is over.
8618
8619This package is part of the KDE games module.")
8620 (license (list license:gpl2+ license:fdl1.2+))))
72b69fa9
HG
8621
8622(define-public konquest
8623 (package
8624 (name "konquest")
8625 (version "19.08.3")
8626 (source
8627 (origin
8628 (method url-fetch)
8629 (uri (string-append "mirror://kde/stable/applications/"
8630 version "/src/konquest-" version ".tar.xz"))
8631 (sha256
8632 (base32 "02gjxskhi10a1sqh3skcild8zria7wncz1a4sbz7ax1p851q76k1"))))
72b69fa9
HG
8633 (build-system qt-build-system)
8634 (native-inputs
8635 `(("extra-cmake-modules" ,extra-cmake-modules)
8636 ("kdoctools" ,kdoctools)))
8637 (inputs
8638 `(("kcompletion" ,kcompletion)
8639 ("kconfig" ,kconfig)
8640 ("kcoreaddons" ,kcoreaddons)
8641 ("kcrash" ,kcrash)
8642 ("kdbusaddons" ,kdbusaddons)
8643 ("kguiaddons" ,kguiaddons)
8644 ("ki18n" ,ki18n)
8645 ("kwidgetsaddons" ,kwidgetsaddons)
8646 ("kxmlgui" ,kxmlgui)
8647 ("libkdegames" ,libkdegames)
8648 ("qtbase" ,qtbase)
8649 ("qtdeclarative" ,qtdeclarative)
8650 ("qtsvg" ,qtsvg)))
8651 (home-page "https://games.kde.org/")
8652 (synopsis "Simple turn-based strategy game")
8653 (description "Konquest is the KDE version of Gnu-Lactic Konquest. Players
8654conquer other planets by sending ships to them. The goal is to build an
8655interstellar empire and ultimately conquer all other player's planets. The
8656game can be played with up to nine empires, commanded either by the computer
8657or by puny earthlings.
8658
8659This package is part of the KDE games module.")
8660 (license (list license:gpl2+ license:fdl1.2+))))
d980ddb8
HG
8661
8662(define-public kbounce
8663 (package
8664 (name "kbounce")
8665 (version "19.08.3")
8666 (source
8667 (origin
8668 (method url-fetch)
8669 (uri (string-append "mirror://kde/stable/applications/"
8670 version "/src/kbounce-" version ".tar.xz"))
8671 (sha256
8672 (base32 "02rfv0qzz5cmyfx8f56a45hbm9gsp6m3dcy8ajwx88rw5wpbrr11"))))
d980ddb8
HG
8673 (build-system qt-build-system)
8674 (native-inputs
8675 `(("extra-cmake-modules" ,extra-cmake-modules)
8676 ("kdoctools" ,kdoctools)))
8677 (inputs
8678 `(("kcompletion" ,kcompletion)
8679 ("kconfigwidgets" ,kconfigwidgets)
8680 ("kcoreaddons" ,kcoreaddons)
8681 ("kcrash" ,kcrash)
8682 ("kdbusaddons" ,kdbusaddons)
8683 ("ki18n" ,ki18n)
8684 ("kio" ,kio)
8685 ("kwidgetsaddons" ,kwidgetsaddons)
8686 ("kxmlgui" ,kxmlgui)
8687 ("libkdegames" ,libkdegames)
8688 ("qtbase" ,qtbase)
8689 ("qtdeclarative" ,qtdeclarative)
8690 ("qtsvg" ,qtsvg)))
8691 (home-page "https://games.kde.org/")
8692 (synopsis "Jezzball arcade game")
8693 (description "KBounce is a single player arcade game with the elements of
8694puzzle. It is played on a field, surrounded by wall, with two or more balls
8695bouncing around within the walls. The object of the game is to build new
8696walls to decrease the size of the active field.
8697
8698This package is part of the KDE games module.")
8699 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
d685f860
HG
8700
8701(define-public kblocks
8702 (package
8703 (name "kblocks")
8704 (version "19.08.3")
8705 (source
8706 (origin
8707 (method url-fetch)
8708 (uri (string-append "mirror://kde/stable/applications/"
8709 version "/src/kblocks-" version ".tar.xz"))
8710 (sha256
8711 (base32 "0qrm0dihzhkxsq9l49ndzms802x6jn92vvabb2zf2q9z593m69cx"))))
d685f860
HG
8712 (build-system qt-build-system)
8713 (native-inputs
8714 `(("extra-cmake-modules" ,extra-cmake-modules)
8715 ("kdoctools" ,kdoctools)))
8716 (inputs
8717 `(("kcompletion" ,kcompletion)
8718 ("kconfig" ,kconfig)
8719 ("kconfigwidgets" ,kconfigwidgets)
8720 ("kcoreaddons" ,kcoreaddons)
8721 ("kcrash" ,kcrash)
8722 ("kdbusaddons" ,kdbusaddons)
8723 ("ki18n" ,ki18n)
8724 ("kwidgetsaddons" ,kwidgetsaddons)
8725 ("kxmlgui" ,kxmlgui)
8726 ("libkdegames" ,libkdegames)
8727 ("qtbase" ,qtbase)
8728 ("qtdeclarative" ,qtdeclarative)
8729 ("qtsvg" ,qtsvg)))
8730 (home-page "https://games.kde.org/")
8731 (synopsis "Single player falling blocks puzzle game")
8732 (description "KBlocks is the classic Tetris-like falling blocks game.
8733
8734The idea is to stack the falling blocks to create horizontal lines without any
8735gaps. When a line is completed it is removed, and more space is available in
8736the play area. When there is not enough space for blocks to fall, the game is
8737over.
8738
8739This package is part of the KDE games module.")
8740 (license (list license:gpl2+ license:fdl1.2+))))
f6e9a6e2
HG
8741
8742(define-public ksudoku
8743 (package
8744 (name "ksudoku")
8745 (version "19.08.3")
8746 (source
8747 (origin
8748 (method url-fetch)
8749 (uri (string-append "mirror://kde/stable/applications/"
8750 version "/src/ksudoku-" version ".tar.xz"))
8751 (sha256
8752 (base32 "0rcscz91hilm7l3am5w02n0n8l7xhi4l0n4sskznh68kblw0ggw2"))))
f6e9a6e2
HG
8753 (build-system qt-build-system)
8754 (native-inputs
8755 `(("extra-cmake-modules" ,extra-cmake-modules)
8756 ("kdoctools" ,kdoctools)))
8757 (inputs
8758 `(("karchive", karchive)
8759 ("kconfig" ,kconfig)
8760 ("kconfigwidgets" ,kconfigwidgets)
8761 ("kcoreaddons" ,kcoreaddons)
8762 ("kcrash" ,kcrash)
8763 ("kguiaddons" ,kguiaddons)
8764 ("ki18n" ,ki18n)
8765 ("kiconthemes" ,kiconthemes)
8766 ("kio" ,kio)
8767 ("kwidgetsaddons" ,kwidgetsaddons)
8768 ("kxmlgui" ,kxmlgui)
8769 ("libkdegames" ,libkdegames)
8770 ("glu" ,glu)
8771 ("qtbase" ,qtbase)
8772 ("qtdeclarative" ,qtdeclarative)
8773 ("qtsvg" ,qtsvg)))
8774 (home-page "https://games.kde.org/")
8775 (synopsis "Sudoku puzzle game and solver")
8776 (description "KSudoku is a Sudoku game and solver, supporting a range of
87772D and 3D Sudoku variants. In addition to playing Sudoku, it can print Sudoku
8778puzzle sheets and find the solution to any Sudoku puzzle.
8779
8780The word Sudoku means \"single number in an allotted place\" in Japanese.
8781These are the basic rules: Every Sudoku is a square divided into 3x3
8782subsquares with 3x3 cells each.
8783
8784Some cells are filled with a number at the beginning. The remaining ones are
8785to be filled by the player using numbers from 1 to 9, without repeating a
8786number twice on each column, row or subsquare (each of them must contain only
8787one 1, one 2, one 3, and so on). The game requires logic and patience.
8788Solving takes usually 10 to 30 minutes, depending on puzzle level, your skill
8789and experience.
8790
8791The numerals in Sudoku puzzles are used for convenience (for example in 16x16
8792board we use letters): arithmetic relationships between numbers are
8793irrelevant.
8794
8795This program supports also 16x16 games with numbers from 1 to 16 and 256
8796cells with 16 cols, rows and subsquares!
8797
8798More information at http://en.wikipedia.org/wiki/Sudoku
8799
8800This package is part of the KDE games module.")
8801 (license (list license:gpl2+ license:fdl1.2+))))
ec9ce951
HG
8802
8803(define-public klines
8804 (package
8805 (name "klines")
8806 (version "19.08.3")
8807 (source
8808 (origin
8809 (method url-fetch)
8810 (uri (string-append "mirror://kde/stable/applications/" version
8811 "/src/klines-" version ".tar.xz"))
8812 (sha256
8813 (base32 "1g1f46jp0rb8gpqkgcf915ydpsscn1sxk3gjvm8bcqgx9ddq59xa"))))
ec9ce951
HG
8814 (build-system qt-build-system)
8815 (native-inputs
8816 `(("extra-cmake-modules" ,extra-cmake-modules)
8817 ("kdoctools" ,kdoctools)))
8818 (inputs
8819 `(("kcompletion" ,kcompletion)
8820 ("kconfigwidgets" ,kconfigwidgets)
8821 ("kcoreaddons" ,kcoreaddons)
8822 ("kcrash" ,kcrash)
8823 ("kdbusaddons" ,kdbusaddons)
8824 ("ki18n" ,ki18n)
8825 ("kwidgetsaddons" ,kwidgetsaddons)
8826 ("kxmlgui" ,kxmlgui)
8827 ("libkdegames" ,libkdegames)
8828 ("qtbase" ,qtbase)
8829 ("qtdeclarative" ,qtdeclarative)))
8830 (home-page "https://games.kde.org/")
8831 (synopsis "Place 5 equal pieces together, but wait, there are 3 new ones")
8832 (description "KLines is a simple but highly addictive one player game.
8833
8834The player has to move the colored balls around the game board, gathering them
8835into the lines of the same color by five. Once the line is complete it is
8836removed from the board, therefore freeing precious space. In the same time
8837the new balls keep arriving by three after each move, filling up the game
8838board.
8839
8840KLines is a single-player game where the player removes colored balls from the
8841board by arranging them into lines of five or more. However, every time the
8842player moves a ball, three more balls are added to the board.
8843
8844This package is part of the KDE games module.")
8845 (license (list license:gpl2+ license:fdl1.2+))))
5a0fc695
HG
8846
8847(define-public kgoldrunner
8848 (package
8849 (name "kgoldrunner")
8850 (version "19.08.3")
8851 (source
8852 (origin
8853 (method url-fetch)
8854 (uri (string-append "mirror://kde/stable/applications/" version "/src/kgoldrunner-"
8855 version ".tar.xz"))
8856 (sha256
8857 (base32 "16rcvq796r3asz4v4ap75xvwnxd3dd2nsq5r9vxvzl6rrf1w9bj4"))))
5a0fc695
HG
8858 (build-system qt-build-system)
8859 (native-inputs
8860 `(("extra-cmake-modules" ,extra-cmake-modules)
8861 ("kdoctools" ,kdoctools)))
8862 (inputs
8863 `(("kcompletion" ,kcompletion)
8864 ("kcoreaddons" ,kcoreaddons)
8865 ("kcrash" ,kcrash)
8866 ("kdbusaddons" ,kdbusaddons)
8867 ("ki18n" ,ki18n)
8868 ("kio" ,kio)
8869 ("kwidgetsaddons" ,kwidgetsaddons)
8870 ("kxmlgui" ,kxmlgui)
8871 ("libkdegames" ,libkdegames)
8872 ("qtbase" ,qtbase)
8873 ("qtdeclarative" ,qtdeclarative)))
8874 (home-page "https://games.kde.org/")
8875 (synopsis "Action and puzzle solving game")
8876 (description "KGoldrunner is an action game where the hero runs through a
8877maze, climbs stairs, dig holes and dodges enemies in order to collect all the
8878gold nuggets and escape to the next level. Your enemies are also after the
8879gold. Worse still, they are after you!.
8880
8881KGoldrunner is a fast-paced platform game where the player must navigate a
8882maze while collecting gold nuggets and avoiding enemies. A variety of level
8883packs are included, as well as an editor to create new levels.
8884
8885This package is part of the KDE games module.")
8886 (license (list license:gpl2+ license:fdl1.2+))))
4c5ef9ba
HG
8887
8888(define-public kdiamond
8889 (package
8890 (name "kdiamond")
8891 (version "19.08.3")
8892 (source
8893 (origin
8894 (method url-fetch)
8895 (uri (string-append "mirror://kde/stable/applications/" version
8896 "/src/kdiamond-" version ".tar.xz"))
8897 (sha256
8898 (base32 "1v5yb9hb26lk277zhw8d37ks829yfqr5anzx1qhms44gca5kqhva"))))
4c5ef9ba
HG
8899 (build-system qt-build-system)
8900 (native-inputs
8901 `(("extra-cmake-modules" ,extra-cmake-modules)
8902 ("kdoctools" ,kdoctools)))
8903 (inputs
8904 `(("kcompletion", kcompletion)
8905 ("kconfig" ,kconfig)
8906 ("kconfigwidgets" ,kconfigwidgets)
8907 ("kcoreaddons" ,kcoreaddons)
8908 ("kcrash" ,kcrash)
8909 ("kdbusaddons" ,kdbusaddons)
8910 ("ki18n" ,ki18n)
8911 ("knotifications" ,knotifications)
8912 ("knotifyconfig" ,knotifyconfig)
8913 ("kwidgetsaddons" ,kwidgetsaddons)
8914 ("kxmlgui" ,kxmlgui)
8915 ("libkdegames" ,libkdegames)
8916 ("qtbase" ,qtbase)
8917 ("qtdeclarative" ,qtdeclarative)))
8918 (home-page "https://games.kde.org/")
8919 (synopsis "Three-in-a-row game")
8920 (description "KDiamond is a three-in-a-row game like Bejeweled. It
8921features unlimited fun with randomly generated games and five difficulty
8922levels with varying number of diamond colors and board sizes.
8923
8924This package is part of the KDE games module.")
8925 (license (list license:gpl2+ license:fdl1.2+))))
601f29cd
HG
8926
8927(define-public kfourinline
8928 (package
8929 (name "kfourinline")
8930 (version "19.08.3")
8931 (source
8932 (origin
8933 (method url-fetch)
8934 (uri (string-append "mirror://kde/stable/applications/" version
8935 "/src/kfourinline-" version ".tar.xz"))
8936 (sha256
8937 (base32 "1vprs6dc1ccn3g6k594i9s94xy4b91vzlqjysyc6fqcq2fs54ny3"))))
601f29cd
HG
8938 (build-system qt-build-system)
8939 (native-inputs
8940 `(("extra-cmake-modules" ,extra-cmake-modules)
8941 ("kdoctools" ,kdoctools)))
8942 (inputs
8943 `(("kcompletion" ,kcompletion)
8944 ("kconfig" ,kconfig)
8945 ("kconfigwidgets" ,kconfigwidgets)
8946 ("kcoreaddons" ,kcoreaddons)
8947 ("kcrash" ,kcrash)
8948 ("kdelibs4support" ,kdelibs4support)
8949 ("kdnssd" ,kdnssd)
8950 ("ki18n" ,ki18n)
8951 ("kxmlgui" ,kxmlgui)
8952 ("libkdegames" ,libkdegames)
8953 ("qtbase" ,qtbase)
8954 ("qtdeclarative" ,qtdeclarative)
8955 ("qtsvg" ,qtsvg)))
8956 (home-page "https://games.kde.org/")
8957 (synopsis "Place 4 pieces in a row")
8958 (description "KFourInLine is a board game for two players based on the
8959Connect-Four game.
8960
8961KFourInLine is a game where two players take turns dropping pieces into a
8962grid, the winner being the first to place four pieces in a line.
8963
8964This package is part of the KDE games module.")
8965 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
cc1cca9f
HG
8966
8967(define-public kblackbox
8968 (package
8969 (name "kblackbox")
8970 (version "19.08.3")
8971 (source
8972 (origin
8973 (method url-fetch)
8974 (uri (string-append "mirror://kde/stable/applications/" version
8975 "/src/kblackbox-" version ".tar.xz"))
8976 (sha256
8977 (base32 "1x42sfpf75c6mavwkc7g7dm11y9s5dpj8igphly5kvm0pajqby0n"))))
cc1cca9f
HG
8978 (build-system qt-build-system)
8979 (native-inputs
8980 `(("extra-cmake-modules" ,extra-cmake-modules)
8981 ("kdoctools" ,kdoctools)))
8982 (inputs
8983 `(("karchive" ,karchive)
8984 ("kcompletion" ,kcompletion)
8985 ("kconfig" ,kconfig)
8986 ("kcoreaddons" ,kcoreaddons)
8987 ("kcrash" ,kcrash)
8988 ("kdbusaddons" ,kdbusaddons)
8989 ("ki18n" ,ki18n)
8990 ("ktextwidgets" ,ktextwidgets)
8991 ("kxmlgui" ,kxmlgui)
8992 ("libkdegames" ,libkdegames)
8993 ("qtbase" ,qtbase)
8994 ("qtdeclarative" ,qtdeclarative)
8995 ("qtsvg" ,qtsvg)))
8996 (home-page "https://games.kde.org/")
8997 (synopsis "Find atoms in a grid by shooting electrons")
8998 (description "KBlackbox is a game of hide and seek played on a grid of
8999boxes where the computer has hidden several balls. The position of the hidden
9000balls can be deduced by shooting beams into the box
9001
9002KBlackBox is a game of hide and seek played on an grid of boxes, where the
9003player shoots rays into the grid to deduce the positions of hidden objects.
9004
9005This package is part of the KDE games module.")
9006 (license (list license:gpl2+ license:fdl1.2+))))
d6973ec9
HG
9007
9008(define-public knetwalk
9009 (package
9010 (name "knetwalk")
9011 (version "19.08.3")
9012 (source
9013 (origin
9014 (method url-fetch)
9015 (uri (string-append "mirror://kde/stable/applications/" version
9016 "/src/knetwalk-" version ".tar.xz"))
9017 (sha256
9018 (base32 "1i340salzgqdw8y33wrrydmpgx3pvwf5wrbljlh67cjf6s4csx7d"))))
d6973ec9
HG
9019 (build-system qt-build-system)
9020 (native-inputs
9021 `(("extra-cmake-modules" ,extra-cmake-modules)
9022 ("kdoctools" ,kdoctools)))
9023 (inputs
9024 `(("kcompletion" ,kcompletion)
9025 ("kconfig" ,kconfig)
9026 ("kconfigwidgets" ,kconfigwidgets)
9027 ("kcoreaddons" ,kcoreaddons)
9028 ("kcrash" ,kcrash)
9029 ("kdbusaddons" ,kdbusaddons)
9030 ("ki18n" ,ki18n)
9031 ("ktextwidgets" ,ktextwidgets)
9032 ("kwidgetsaddons" ,kwidgetsaddons)
9033 ("kxmlgui" ,kxmlgui)
9034 ("libkdegames" ,libkdegames)
9035 ("qtbase" ,qtbase)
9036 ("qtdeclarative" ,qtdeclarative)))
9037 (home-page "https://games.kde.org/")
9038 (synopsis "Turn the board pieces to get all computers connected")
9039 (description "KNetWalk is a small game where you have to build up a
9040computer network by rotating the wires to connect the terminals to the server.
9041When the network is build, a highscore-list comes up where competitions can be
9042fought out.
9043
9044KNetwalk is a puzzle game where the player arranges sections of wire to
9045connect all the computers on the board.
9046
9047This package is part of the KDE games module.")
9048 (license (list license:gpl2+ license:fdl1.2+))))
69436285
HG
9049
9050(define-public bomber
9051 (package
9052 (name "bomber")
9053 (version "19.08.3")
9054 (source
9055 (origin
9056 (method url-fetch)
9057 (uri (string-append "mirror://kde/stable/applications/" version
9058 "/src/bomber-" version ".tar.xz"))
9059 (sha256
9060 (base32 "1lvzd0mzgq25akvwvkm57l3plm65k731v2i1ahakn985bb5gc3is"))))
69436285
HG
9061 (build-system qt-build-system)
9062 (native-inputs
9063 `(("extra-cmake-modules" ,extra-cmake-modules)
9064 ("kdoctools" ,kdoctools)))
9065 (inputs
9066 `(("kcompletiom" ,kcompletion)
9067 ("kconfig" ,kconfig)
9068 ("kcoreaddons" ,kcoreaddons)
9069 ("kcrash" ,kcrash)
9070 ("kdbusaddons" ,kdbusaddons)
9071 ("ki18n" ,ki18n)
9072 ("kxmlgui" ,kxmlgui)
9073 ("libkdegames" ,libkdegames)
9074 ("qtbase" ,qtbase)
9075 ("qtdeclarative" ,qtdeclarative)))
9076 (home-page "https://games.kde.org/")
9077 (synopsis "Arcade bombing game")
9078 (description "Bomber is a single player arcade game.
9079
9080The player is invading various cities in a plane that is decreasing in height.
9081The goal of the game is to destroy all the buildings and advance to the next
9082level. Each level gets a bit harder by increasing the speed of the plane and
9083the height of the buildings.
9084
9085Bomber is a game where you fly a spaceship and attempt to bomb the buildings
9086below you. Each pass the spaceship makes, it gets lower and lower. If you've
9087not destroyed a building in your path, you will crash into it.
9088
9089This package is part of the KDE games module.")
9090 (license (list license:gpl2+ license:fdl1.2+))))
4f0b3368
HG
9091
9092(define-public granatier
9093 (package
9094 (name "granatier")
9095 (version "19.08.3")
9096 (source
9097 (origin
9098 (method url-fetch)
9099 (uri (string-append "mirror://kde/stable/applications/" version
9100 "/src/granatier-" version ".tar.xz"))
9101 (sha256
9102 (base32 "141qmdinz7ikbbrs8dq6cap3nl22sl7pw62r80pf3xxwn2q4phpa"))))
4f0b3368
HG
9103 (build-system qt-build-system)
9104 (native-inputs
9105 `(("extra-cmake-modules" ,extra-cmake-modules)
9106 ("kdoctools" ,kdoctools)))
9107 (inputs
9108 `(("kcompletion" ,kcompletion)
9109 ("kconfig" ,kconfig)
9110 ("kconfigwidgets" ,kconfigwidgets)
9111 ("kcoreaddons" ,kcoreaddons)
9112 ("kcrash" ,kcrash)
9113 ("kdbusaddons" ,kdbusaddons)
9114 ("ki18n" ,ki18n)
9115 ("knewstuff" ,knewstuff)
9116 ("kwidgetsaddons" ,kwidgetsaddons)
9117 ("kxmlgui" ,kxmlgui)
9118 ("libkdegames" ,libkdegames)
9119 ("qtbase" ,qtbase)
9120 ("qtdeclarative" ,qtdeclarative)
9121 ("qtsvg" ,qtsvg)))
9122 (home-page "https://games.kde.org/")
9123 (synopsis "Bomberman clone")
9124 (description "Granatier is a clone of the classic Bomberman game,
9125inspired by the work of the Clanbomber clone.
9126
9127This package is part of the KDE games module.")
9128 (license (list license:gpl2+ license:fdl1.2+))))
584e07ee
HG
9129
9130(define-public ksirk
9131 (package
9132 (name "ksirk")
9133 (version "19.08.3")
9134 (source
9135 (origin
9136 (method url-fetch)
9137 (uri (string-append "mirror://kde/stable/applications/" version
9138 "/src/ksirk-" version ".tar.xz"))
9139 (sha256
9140 (base32 "1b1wixs2hp5qnvdygfwa3kvy0kn94ysa4ifmx90q6r3yfr2lpfca"))))
584e07ee
HG
9141 (build-system qt-build-system)
9142 (native-inputs
9143 `(("extra-cmake-modules" ,extra-cmake-modules)
9144 ("kdoctools" ,kdoctools)))
9145 (inputs
9146 `(("kcrash" ,kcrash)
9147 ("ki18n" ,ki18n)
9148 ("kiconthemes" ,kiconthemes)
9149 ("kio" ,kio)
9150 ("knewstuff" ,knewstuff)
9151 ("kwallet" ,kwallet)
9152 ("kxmlgui" ,kxmlgui)
9153 ("libkdegames" ,libkdegames)
9154 ("phonon" ,phonon)
9155 ("qca" ,qca)
9156 ("qtbase" ,qtbase)
9157 ("qtdeclarative" ,qtdeclarative)
9158 ("qtsvg" ,qtsvg)
9159 ("zlib" ,zlib)))
9160 (home-page "https://games.kde.org/")
9161 (synopsis "Computerized version of the well known strategy board game
9162'Risk'")
9163 (description "KsirK is a multi-player network-enabled game. The goal of
9164the game is simply to conquer the world by attacking your neighbors with your
9165armies.
9166
9167At the beginning of the game, countries are distributed to all the players.
9168Each country contains one army represented by an infantryman. Each player has
9169some armies to distribute to his countries. On each turn, each player can
9170attack his neighbours, eventually conquering one or more countries. At the
9171end of each turn, some bonus armies are distributed to the players in function
9172of the number of countries they own. The winner is the player that conquered
9173all the world.
9174
9175Features:
9176@itemize
9177@item Support for 1-6 human or computer players
9178@item Multi-player gaming over a network
9179@item You can easily create new skins with SVG graphics and the skin editor
9180@item Hot New Stuff support. You can easily download and install new skins
9181@end itemize
9182
9183This package is part of the KDE games module.")
9184 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
56064cd7
HG
9185
9186(define-public palapeli
9187 (package
9188 (name "palapeli")
9189 (version "19.08.3")
9190 (source
9191 (origin
9192 (method url-fetch)
9193 (uri (string-append "mirror://kde/stable/applications/" version
9194 "/src/palapeli-" version ".tar.xz"))
9195 (sha256
9196 (base32 "1g91ydbc0x2y2gn3lcb5w03mn7k78l5bq4cb1s59kx6yjbflv3pw"))))
56064cd7
HG
9197 (build-system qt-build-system)
9198 (native-inputs
9199 `(("extra-cmake-modules" ,extra-cmake-modules)
9200 ("kdoctools" ,kdoctools)))
9201 (inputs
9202 `(("karchive" ,karchive)
9203 ("kcompletion" ,kcompletion)
9204 ("kconfig" ,kconfig)
9205 ("kconfigwidgets" ,kconfigwidgets)
9206 ("kcoreaddons" ,kcoreaddons)
9207 ("kcrash" ,kcrash)
9208 ("kcrash" ,kcrash)
9209 ("ki18n" ,ki18n)
9210 ("ki18n" ,ki18n)
9211 ("kio" ,kio)
9212 ("kitemviews" ,kitemviews)
9213 ("knotifications" ,knotifications)
9214 ("kservice" ,kservice)
9215 ("kwidgetsaddons" ,kwidgetsaddons)
9216 ("kxmlgui" ,kxmlgui)
9217 ("libkdegames" ,libkdegames)
9218 ("qtbase" ,qtbase)
9219 ("qtdeclarative" ,qtdeclarative)
9220 ("qtsvg" ,qtsvg)
9221 ("shared-mime-info" ,shared-mime-info)))
9222 (home-page "https://games.kde.org/")
9223 (synopsis "Jigsaw puzzle game")
9224 (description "Palapeli is a jigsaw puzzle game. Unlike other games in
9225that genre, you are not limited to aligning pieces on imaginary grids. The
9226pieces are freely moveable. Also, Palapeli features real persistency, i.e.
9227everything you do is saved on your disk immediately.
9228
9229Palapeli is the Finnish word for jigsaw puzzle.
9230
9231This package is part of the KDE games module.")
9232 (license license:gpl2+)))
bf6bfdbe
HG
9233
9234(define-public kiriki
9235 (package
9236 (name "kiriki")
9237 (version "19.08.3")
9238 (source
9239 (origin
9240 (method url-fetch)
9241 (uri (string-append "mirror://kde/stable/applications/" version
9242 "/src/kiriki-" version ".tar.xz"))
9243 (sha256
9244 (base32 "1xg25dj95g81dc5l7k47am4j52abrwwfx4h73lvsbn4lc8lfmshw"))))
bf6bfdbe
HG
9245 (build-system qt-build-system)
9246 (native-inputs
9247 `(("extra-cmake-modules" ,extra-cmake-modules)
9248 ("kdoctools" ,kdoctools)))
9249 (inputs
9250 `(("kcompletion" ,kcompletion)
9251 ("kconfig" ,kconfig)
9252 ("kconfigwidgets" ,kconfigwidgets)
9253 ("kcoreaddons" ,kcoreaddons)
9254 ("kcrash" ,kcrash)
9255 ("kdbusaddons" ,kdbusaddons)
9256 ("ki18n" ,ki18n)
9257 ("kiconthemes" ,kiconthemes)
9258 ("kxmlgui" ,kxmlgui)
9259 ("libkdegames" ,libkdegames)
9260 ("qtbase" ,qtbase)
9261 ("qtdeclarative" ,qtdeclarative)))
9262 (home-page "https://games.kde.org/")
9263 (synopsis "Yahtzee dice game")
9264 (description "Kiriki is an addictive and fun dice game, designed to be
9265played by as many as six players.
9266
9267Participants have to collect points by rolling five dice for up to three times
9268per single turn to make combinations with the highest score.
9269
9270This package is part of the KDE games module.")
9271 (license (list license:gpl2+ license:fdl1.2+))))
f0b21b8d
HG
9272
9273(define-public kigo
9274 (package
9275 (name "kigo")
9276 (version "19.08.3")
9277 (source
9278 (origin
9279 (method url-fetch)
9280 (uri (string-append "mirror://kde/stable/applications/" version
9281 "/src/kigo-" version ".tar.xz"))
9282 (sha256
9283 (base32 "00l5gcbi8xyj9c1lngkrddka3a4m4cd78prfplrpq32ma9xq681f"))))
f0b21b8d
HG
9284 (build-system qt-build-system)
9285 (native-inputs
9286 `(("extra-cmake-modules" ,extra-cmake-modules)
9287 ("kdoctools" ,kdoctools)))
9288 (inputs
9289 `(("kconfig" ,kconfig)
9290 ("kconfigwidgets" ,kconfigwidgets)
9291 ("kcoreaddons" ,kcoreaddons)
9292 ("kcrash" ,kcrash)
9293 ("kdbusaddons" ,kdbusaddons)
9294 ("ki18n" ,ki18n)
9295 ("kio" ,kio)
9296 ("knewstuff", knewstuff)
9297 ("ktextwidgets" ,ktextwidgets)
9298 ("kxmlgui" ,kxmlgui)
9299 ("libkdegames" ,libkdegames)
9300 ("qtbase" ,qtbase)
9301 ("qtdeclarative" ,qtdeclarative)
9302 ("qtsvg" ,qtsvg)))
9303 (home-page "https://games.kde.org/")
9304 (synopsis "Go board game")
9305 (description "Kigo is an open-source implementation of the popular Go
9306game.
9307
9308Go is a strategic board game for two players. It is also known as
9309igo (Japanese), weiqi or wei ch'i (Chinese) or baduk (Korean). Go is noted
9310for being rich in strategic complexity despite its simple rules. The game is
9311played by two players who alternately place black and white stones (playing
9312pieces, now usually made of glass or plastic) on the vacant intersections of a
9313grid of 19x19 lines (9x9 or 13x13 for easier games).
9314
9315You also need to install a go engine, e.g. @code{gnugo}.
9316
9317This package is part of the KDE games module.")
9318 (license license:gpl3+)))
90e594d3
HG
9319
9320(define-public kubrick
9321 (package
9322 (name "kubrick")
9323 (version "19.08.3")
9324 (source
9325 (origin
9326 (method url-fetch)
9327 (uri (string-append "mirror://kde/stable/applications/" version
9328 "/src/kubrick-" version ".tar.xz"))
9329 (sha256
9330 (base32 "0ma8wja4rqlsmsr8cyicfpkwlgqva4450ls4c0ql53p0kabf04gx"))))
90e594d3
HG
9331 (build-system qt-build-system)
9332 (native-inputs
9333 `(("extra-cmake-modules" ,extra-cmake-modules)
9334 ("kdoctools" ,kdoctools)))
9335 (inputs
9336 `(("glu" ,glu)
9337 ("kconfig" ,kconfig)
9338 ("kconfigwidgets" ,kconfigwidgets)
9339 ("kcoreaddons" ,kcoreaddons)
9340 ("kcrash" ,kcrash)
9341 ("ki18n" ,ki18n)
9342 ("kio" ,kio)
9343 ("kwidgetsaddons" ,kwidgetsaddons)
9344 ("kxmlgui" ,kxmlgui)
9345 ("libkdegames" ,libkdegames)
9346 ("qtbase" ,qtbase)
9347 ("qtdeclarative" ,qtdeclarative)
9348 ("qtsvg" ,qtsvg)))
9349 (home-page "https://games.kde.org/")
9350 (synopsis "Game based on Rubik's Cube")
9351 (description "Kubrick is a game based on the Rubik's Cube puzzle.
9352
9353The cube sizes range from 2x2x2 up to 6x6x6, or you can play with irregular
9354\"bricks\" such as 5x3x2 or \"mats\" such as 6x4x1 or 2x2x1. The game has a
9355selection of puzzles at several levels of difficulty, as well as demos of
9356pretty patterns and solution moves, or you can make up your own puzzles. The
9357game has unlimited undo, redo, save and reload capabilities.
9358
9359This package is part of the KDE games module.")
9360 (license (list license:gpl2+ license:fdl1.2+))))
01e2f2ed
HG
9361
9362(define-public lskat
9363 (package
9364 (name "lskat")
9365 (version "19.08.3")
9366 (source
9367 (origin
9368 (method url-fetch)
9369 (uri (string-append "mirror://kde/stable/applications/" version
9370 "/src/lskat-" version ".tar.xz"))
9371 (sha256
9372 (base32 "1qk5hd27zb42pbcxq5wyzz62nj5f0qdmgy54r9rnk92pzzzk94s9"))))
01e2f2ed
HG
9373 (build-system qt-build-system)
9374 (native-inputs
9375 `(("extra-cmake-modules" ,extra-cmake-modules)
9376 ("kdoctools" ,kdoctools)))
9377 (inputs
9378 `(("kcompletion" ,kcompletion)
9379 ("kconfig" ,kconfig)
9380 ("kcoreaddons" ,kcoreaddons)
9381 ("kcrash" ,kcrash)
9382 ("kguiaddons" ,kguiaddons)
9383 ("ki18n" ,ki18n)
9384 ("kwidgetsaddons" ,kwidgetsaddons)
9385 ("kxmlgui" ,kxmlgui)
9386 ("libkdegames" ,libkdegames)
9387 ("qtbase" ,qtbase)
9388 ("qtdeclarative" ,qtdeclarative)
9389 ("qtsvg" ,qtsvg)))
9390 (home-page "https://games.kde.org/")
9391 (synopsis "Lieutnant Skat card game")
9392 (description "Lieutnant Skat (from German \"Offiziersskat\") is a fun and
9393engaging card game for two players, where the second player is either live
9394opponent, or a built in artificial intelligence.
9395
9396Lieutnant Skat is a simplified variant of the Skat card game for two players.
9397
9398This package is part of the KDE games module.")
9399 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
ed88e67d
HG
9400
9401(define-public kapman
9402 (package
9403 (name "kapman")
9404 (version "19.08.3")
9405 (source
9406 (origin
9407 (method url-fetch)
9408 (uri (string-append "mirror://kde/stable/applications/" version
9409 "/src/kapman-" version ".tar.xz"))
9410 (sha256
9411 (base32 "03pq38caam30q4bw14c045kayw2d87xq1yaa3s2jkrylylfq3p0f"))))
ed88e67d
HG
9412 (build-system qt-build-system)
9413 (native-inputs
9414 `(("extra-cmake-modules" ,extra-cmake-modules)
9415 ("kdoctools" ,kdoctools)))
9416 (inputs
9417 `(("kcompletion" ,kcompletion)
9418 ("kconfig" ,kconfig)
9419 ("kconfigwidgets" ,kconfigwidgets)
9420 ("kcoreaddons" ,kcoreaddons)
9421 ("kcrash" ,kcrash)
9422 ("kdbusaddons" ,kdbusaddons)
9423 ("ki18n" ,ki18n)
9424 ("kxmlgui" ,kxmlgui)
9425 ("libkdegames" ,libkdegames)
9426 ("qtbase" ,qtbase)
9427 ("qtdeclarative" ,qtdeclarative)
9428 ("qtsvg" ,qtsvg)))
9429 (home-page "https://games.kde.org/")
9430 (synopsis "Pac-Man clone")
9431 (description "Kapman is a clone of the well known game Pac-Man.
9432
9433You must run through the maze to eat all pills without being captured by a
9434ghost. By eating an energizer, Kapman gets the ability to eat ghosts for a
9435few seconds. When a stage is cleared of pills and energizer the player is
9436taken to the next stage with slightly increased game speed
9437
9438This package is part of the KDE games module.")
9439 (license (list license:gpl2+ license:fdl1.2+))))
fb05eed9
HG
9440
9441(define-public kspaceduel
9442 (package
9443 (name "kspaceduel")
9444 (version "19.08.3")
9445 (source
9446 (origin
9447 (method url-fetch)
9448 (uri (string-append "mirror://kde/stable/applications/" version
9449 "/src/kspaceduel-" version ".tar.xz"))
9450 (sha256
9451 (base32 "1hppni0ihs7psc0dly5rxyy2a38nzhlig9yfyhi3lkh36z05pql8"))))
fb05eed9
HG
9452 (build-system qt-build-system)
9453 (native-inputs
9454 `(("extra-cmake-modules" ,extra-cmake-modules)
9455 ("kdoctools" ,kdoctools)))
9456 (inputs
9457 `(("kcompletion" ,kcompletion)
9458 ("kconfig" ,kconfig)
9459 ("kconfigwidgets" ,kconfigwidgets)
9460 ("kcoreaddons" ,kcoreaddons)
9461 ("kcrash" ,kcrash)
9462 ("kdbusaddons" ,kdbusaddons)
9463 ("ki18n" ,ki18n)
9464 ("kxmlgui" ,kxmlgui)
9465 ("libkdegames" ,libkdegames)
9466 ("qtbase" ,qtbase)
9467 ("qtdeclarative" ,qtdeclarative)
9468 ("qtsvg" ,qtsvg)))
9469 (home-page "https://games.kde.org/")
9470 (synopsis "Two player game with shooting spaceships flying around a sun")
9471 (description "KSpaceduel is a space battle game for one or two players,
9472where two ships fly around a star in a struggle to be the only survivor.
9473
9474This package is part of the KDE games module.")
9475 (license (list license:gpl2+ license:fdl1.2+))))
37ea126d
HG
9476
9477(define-public bovo
9478 (package
9479 (name "bovo")
9480 (version "19.08.3")
9481 (source
9482 (origin
9483 (method url-fetch)
9484 (uri (string-append "mirror://kde/stable/applications/" version
9485 "/src/bovo-" version ".tar.xz"))
9486 (sha256
9487 (base32 "0dbpng0w52nahmx7brsll66zw23ql1g6pcvn2k4g2lnvxch0i59g"))))
37ea126d
HG
9488 (build-system qt-build-system)
9489 (native-inputs
9490 `(("extra-cmake-modules" ,extra-cmake-modules)
9491 ("kdoctools" ,kdoctools)))
9492 (inputs
9493 `(("kcompletion" ,kcompletion)
9494 ("kcoreaddons" ,kcoreaddons)
9495 ("kcrash" ,kcrash)
9496 ("kdbusaddons" ,kdbusaddons)
9497 ("ki18n" ,ki18n)
9498 ("kxmlgui" ,kxmlgui)
9499 ("libkdegames" ,libkdegames)
9500 ("qtbase" ,qtbase)
9501 ("qtdeclarative" ,qtdeclarative)
9502 ("qtsvg" ,qtsvg)))
9503 (home-page "https://games.kde.org/")
9504 (synopsis "Classic pen and paper game: five in a line")
9505 (description "Bovo is a Gomoku (from Japanese 五目並べ - lit. \"five
9506points\") like game for two players, where the opponents alternate in placing
9507their respective pictogram on the game board. The winner is the first to
9508complete a line of five markers. (Also known as: Connect Five, Five in a row,
9509X and O, Naughts and Crosses)
9510
9511This package is part of the KDE games module.")
9512 (license (list license:gpl2+ license:fdl1.2+))))
2fbf14e1
HG
9513
9514(define-public killbots
9515 (package
9516 (name "killbots")
9517 (version "19.08.3")
9518 (source
9519 (origin
9520 (method url-fetch)
9521 (uri (string-append "mirror://kde/stable/applications/" version
9522 "/src/killbots-" version ".tar.xz"))
9523 (sha256
9524 (base32 "1qi86q7diw7glkp9v33yim9nhz2da4balbxa1hjrdgjdv8zdbxbm"))))
2fbf14e1
HG
9525 (build-system qt-build-system)
9526 (native-inputs
9527 `(("extra-cmake-modules" ,extra-cmake-modules)
9528 ("kdoctools" ,kdoctools)))
9529 (inputs
9530 `(("kcompletion" ,kcompletion)
9531 ("kconfig" ,kconfig)
9532 ("kconfigwidgets" ,kconfigwidgets)
9533 ("kcoreaddons" ,kcoreaddons)
9534 ("kcrash" ,kcrash)
9535 ("kdbusaddons" ,kdbusaddons)
9536 ("ki18n" ,ki18n)
9537 ("kwidgetsaddons" ,kwidgetsaddons)
9538 ("kxmlgui" ,kxmlgui)
9539 ("libkdegames" ,libkdegames)
9540 ("qtbase" ,qtbase)
9541 ("qtdeclarative" ,qtdeclarative)))
9542 (home-page "https://games.kde.org/")
9543 (synopsis "Port of the classic BSD console game robots")
9544 (description "Killbots is a simple game of evading killer robots.
9545
9546Who created the robots and why they have been programmed to destroy, no one
9547knows. All that is known is that the robots are numerous and their sole
9548objective is to destroy you. Fortunately for you, their creator has focused
9549on quantity rather than quality and as a result the robots are severely
9550lacking in intelligence. Your superior wit and a fancy teleportation device
9551are your only weapons against the never-ending stream of mindless automatons.
9552
9553This package is part of the KDE games module.")
9554 (license (list license:gpl2+ license:fdl1.2+))))
f2f0ef92
HG
9555
9556(define-public ksnakeduel
9557 (package
9558 (name "ksnakeduel")
9559 (version "19.08.3")
9560 (source
9561 (origin
9562 (method url-fetch)
9563 (uri (string-append "mirror://kde/stable/applications/" version
9564 "/src/ksnakeduel-" version ".tar.xz"))
9565 (sha256
9566 (base32 "0mprrnpax8pv7ab36zwhvdfj8id52w8g6x76nnj8qvkdlkjiqdnn"))))
f2f0ef92
HG
9567 (build-system qt-build-system)
9568 (native-inputs
9569 `(("extra-cmake-modules" ,extra-cmake-modules)
9570 ("kdoctools" ,kdoctools)))
9571 (inputs
9572 `(("kcompletion" ,kcompletion)
9573 ("kconfig" ,kconfig)
9574 ("kconfigwidgets" ,kconfigwidgets)
9575 ("kcoreaddons" ,kcoreaddons)
9576 ("kcrash" ,kcrash)
9577 ("kdbusaddons" ,kdbusaddons)
9578 ("kguiaddons" ,kguiaddons)
9579 ("ki18n" ,ki18n)
9580 ("kxmlgui" ,kxmlgui)
9581 ("libkdegames" ,libkdegames)
9582 ("qtbase" ,qtbase)
9583 ("qtdeclarative" ,qtdeclarative)
9584 ("qtsvg" ,qtsvg)))
9585 (home-page "https://games.kde.org/")
9586 (synopsis "Snake race played against the computer")
9587 (description "KSnakeDuel is a fast action game where you steer a snake
9588which has to eat food. While eating the snake grows. But once a player
9589collides with the other snake or the wall the game is lost. This becomes of
9590course more and more difficult the longer the snakes grow.
9591
9592This package is part of the KDE games module.")
9593 (license (list license:gpl2+ license:fdl1.2+))))
f114a689
HG
9594
9595(define-public kollision
9596 (package
9597 (name "kollision")
9598 (version "19.08.3")
9599 (source
9600 (origin
9601 (method url-fetch)
9602 (uri (string-append "mirror://kde/stable/applications/" version
9603 "/src/kollision-" version ".tar.xz"))
9604 (sha256
9605 (base32 "1p7qrn3d0ybpvc9k6k5wzj54dsrp1rqh39844maz0ay2fhvmch12"))))
f114a689
HG
9606 (build-system qt-build-system)
9607 (native-inputs
9608 `(("extra-cmake-modules" ,extra-cmake-modules)
9609 ("kdoctools" ,kdoctools)))
9610 (inputs
9611 `(("kcompletion" ,kcompletion)
9612 ("kconfig" ,kconfig)
9613 ("kcoreaddons" ,kcoreaddons)
9614 ("kcrash" ,kcrash)
9615 ("kdbusaddons" ,kdbusaddons)
9616 ("ki18n" ,ki18n)
9617 ("kwidgetsaddons" ,kwidgetsaddons)
9618 ("kxmlgui" ,kxmlgui)
9619 ("libkdegames" ,libkdegames)
9620 ("qtbase" ,qtbase)
9621 ("qtdeclarative" ,qtdeclarative)))
9622 (home-page "https://games.kde.org/")
9623 (synopsis "Simple ball dodging game")
9624 (description "In Kollision you use mouse to control a small blue ball in a
9625closed space environment filled with small red balls, which move about
9626chaotically. Your goal is to avoid touching any of those red balls with your
9627blue one, because the moment you do the game will be over. The longer you can
9628stay in game the higher will your score be.
9629
9630This package is part of the KDE games module.")
9631 (license (list license:gpl2+ license:fdl1.2+))))
4e759110
HG
9632
9633(define-public knavalbattle
9634 (package
9635 (name "knavalbattle")
9636 (version "19.08.3")
9637 (source
9638 (origin
9639 (method url-fetch)
9640 (uri (string-append "mirror://kde/stable/applications/" version
9641"/src/knavalbattle-" version ".tar.xz"))
9642 (sha256
9643 (base32 "0sdfjplqkb30x2mvh66pkzay6vn5px87779sh2s8lpl6fcw0v9g4"))))
4e759110
HG
9644 (build-system qt-build-system)
9645 (native-inputs
9646 `(("extra-cmake-modules" ,extra-cmake-modules)
9647 ("kdoctools" ,kdoctools)))
9648 (inputs
9649 `(("kauth" ,kauth)
9650 ("kcompletion" ,kcompletion)
9651 ("kconfig" ,kconfig)
9652 ("kconfigwidgets" ,kconfigwidgets)
9653 ("kcoreaddons" ,kcoreaddons)
9654 ("kcrash" ,kcrash)
9655 ("kdbusaddons" ,kdbusaddons)
9656 ("kdnssd" ,kdnssd)
9657 ("ki18n" ,ki18n)
9658 ("ktextwidgets" ,ktextwidgets)
9659 ("kxmlgui" ,kxmlgui)
9660 ("libkdegames" ,libkdegames)
9661 ("qtbase" ,qtbase)
9662 ("qtdeclarative" ,qtdeclarative)))
9663 (home-page "https://games.kde.org/")
9664 (synopsis "Battleship board game with built-in game server")
9665 (description "KBattleship is a Battle Ship game for KDE.
9666
9667Ships are placed on a board which represents the sea. Players try to hit each
9668others ships in turns without knowing where they are placed. The first player
9669to destroy all ships wins the game.
9670
9671This package is part of the KDE games module.")
9672 (license (list license:gpl2+ license:fdl1.2+))))
a605b25b
HG
9673
9674(define-public kreversi
9675 (package
9676 (name "kreversi")
9677 (version "19.08.3")
9678 (source
9679 (origin
9680 (method url-fetch)
9681 (uri (string-append "mirror://kde/stable/applications/" version
9682"/src/kreversi-" version ".tar.xz"))
9683 (sha256
9684 (base32 "0b6q8df2bawgnrswhq59z37axad0q3zpvvzxdds7sz1lw505xw9h"))))
a605b25b
HG
9685 (build-system qt-build-system)
9686 (native-inputs
9687 `(("extra-cmake-modules" ,extra-cmake-modules)
9688 ("kdoctools" ,kdoctools)))
9689 (inputs
9690 `(("kconfig" ,kconfig)
9691 ("kconfigwidgets" ,kconfigwidgets)
9692 ("kcoreaddons" ,kcoreaddons)
9693 ("kcrash" ,kcrash)
9694 ("kdbusaddons" ,kdbusaddons)
9695 ("kdeclarative" ,kdeclarative)
9696 ("ki18n" ,ki18n)
9697 ("kiconthemes" ,kiconthemes)
9698 ("kio" ,kio)
9699 ("kxmlgui" ,kxmlgui)
9700 ("libkdegames" ,libkdegames)
9701 ("qtbase" ,qtbase)
9702 ("qtdeclarative" ,qtdeclarative)
9703 ("qtsvg" ,qtsvg)))
9704 (home-page "https://games.kde.org/")
9705 (synopsis "Old reversi board game, also known as othello")
9706 (description "KReversi is a simple one player strategy game played
9707against the computer.
9708
9709If a player's piece is captured by an opposing player, that piece is turned
9710over to reveal the color of that player. A winner is declared when one player
9711has more pieces of his own color on the board and there are no more possible
9712moves.
9713
9714This package is part of the KDE games module.")
9715 (license (list license:gpl2+ license:fdl1.2+))))
4fe74238
HG
9716
9717(define-public ksquares
9718 (package
9719 (name "ksquares")
9720 (version "19.08.3")
9721 (source
9722 (origin
9723 (method url-fetch)
9724 (uri (string-append "mirror://kde/stable/applications/" version
9725 "/src/ksquares-" version ".tar.xz"))
9726 (sha256
9727 (base32 "0hv8hls5s627lys08nnw72rfzsafj3dmp49mh2afzmh6lgk9h5vy"))))
4fe74238
HG
9728 (build-system qt-build-system)
9729 (native-inputs
9730 `(("extra-cmake-modules" ,extra-cmake-modules)
9731 ("kdoctools" ,kdoctools)))
9732 (inputs
9733 `(("kcompletion" ,kcompletion)
9734 ("kconfig" ,kconfig)
9735 ("kconfigwidgets" ,kconfigwidgets)
9736 ("kcoreaddons" ,kcoreaddons)
9737 ("kcrash" ,kcrash)
9738 ("kdbusaddons" ,kdbusaddons)
9739 ("ki18n" ,ki18n)
9740 ("kwidgetsaddons" ,kwidgetsaddons)
9741 ("kxmlgui" ,kxmlgui)
9742 ("libkdegames" ,libkdegames)
9743 ("qtbase" ,qtbase)
9744 ("qtdeclarative" ,qtdeclarative)))
9745 (home-page "https://games.kde.org/")
9746 (synopsis "Dots and Boxes game")
9747 (description "KSquares is an implementation of the popular paper based
9748game Squares. Two players take turns connecting dots on a grid to complete
9749squares, the player with the most squares wins.
9750
9751This package is part of the KDE games module.")
9752 (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
95563d62
HG
9753
9754(define-public kjumpingcube
9755 (package
9756 (name "kjumpingcube")
9757 (version "19.08.3")
9758 (source
9759 (origin
9760 (method url-fetch)
9761 (uri (string-append "mirror://kde/stable/applications/" version
9762 "/src/kjumpingcube-" version ".tar.xz"))
9763 (sha256
9764 (base32 "0d67zqkf2xffjkj671gl2n6nj6jajyn6rgqqj5i6gm500mqi9rm1"))))
95563d62
HG
9765 (build-system qt-build-system)
9766 (native-inputs
9767 `(("extra-cmake-modules" ,extra-cmake-modules)
9768 ("kdoctools" ,kdoctools)))
9769 (inputs
9770 `(("kconfig" ,kconfig)
9771 ("kconfigwidgets" ,kconfigwidgets)
9772 ("kcoreaddons" ,kcoreaddons)
9773 ("kcrash" ,kcrash)
9774 ("kdbusaddons" ,kdbusaddons)
9775 ("ki18n" ,ki18n)
9776 ("kio" ,kio)
9777 ("kwidgetsaddons" ,kwidgetsaddons)
9778 ("kxmlgui" ,kxmlgui)
9779 ("libkdegames" ,libkdegames)
9780 ("qtbase" ,qtbase)
9781 ("qtdeclarative" ,qtdeclarative)
9782 ("qtsvg" ,qtsvg)))
9783 (home-page "https://games.kde.org/")
9784 (synopsis "Simple tactical game for number-crunchers")
9785 (description "KJumpingcube is a simple tactical game for one or two
9786players, played on a grid of numbered squares. Each turn, players compete for
9787control of the board by capturing or adding to one square.
9788
9789This package is part of the KDE games module.")
9790 (license (list license:gpl2+ license:fdl1.2+))))
40d2bddd
NG
9791
9792(define-public xmoto
9793 (package
9794 (name "xmoto")
9795 (version "0.5.11")
9796 (source
9797 (origin
9798 (method url-fetch)
9799 (uri (string-append
9800 "http://download.tuxfamily.org/xmoto/xmoto/" version "/"
9801 "xmoto-" version "-src.tar.gz"))
9802 (sha256
9803 (base32 "1ci6r8zd0l7z28cy92ddf9dmqbdqwinz2y1cny34c61b57wsd155"))
9804 (patches
9805 (search-patches
9806 "xmoto-remove-glext.patch" ;fixes licensing issue
9807 "xmoto-reproducible.patch"
9808 "xmoto-utf8.patch"))
9809 ;; Unbundle ODE.
9810 (modules '((guix build utils)))
9811 (snippet
9812 `(begin
9813 (delete-file-recursively "src/ode")
9814 #t))))
9815 (build-system gnu-build-system)
9816 (arguments
9817 ;; XXX: First flag prevents a build error with GCC7+. The second
9818 ;; flag works around missing text in game. Both are fixed
9819 ;; upstream. Remove once xmoto 0.5.12+ is released.
9820 `(#:make-flags '("CXXFLAGS=-fpermissive -D_GLIBCXX_USE_CXX11_ABI=0")
9821 #:phases
9822 (modify-phases %standard-phases
9823 (add-after 'install 'install-desktop-file
9824 (lambda* (#:key outputs #:allow-other-keys)
9825 (let* ((out (assoc-ref outputs "out"))
9826 (apps (string-append out "/share/applications"))
9827 (pixmaps (string-append out "/share/pixmaps")))
9828 (install-file "extra/xmoto.desktop" apps)
9829 (install-file "extra/xmoto.xpm" pixmaps)
9830 #t)))
9831 (add-after 'install-desktop-file 'install-fonts
9832 (lambda* (#:key outputs inputs #:allow-other-keys)
9833 (let ((font-dir (string-append (assoc-ref inputs "font-dejavu")
9834 "/share/fonts/truetype/"))
9835 (target-dir (string-append (assoc-ref outputs "out")
9836 "/share/xmoto/Textures/Fonts/")))
9837 (for-each (lambda (f)
9838 (let ((font (string-append font-dir f))
9839 (target (string-append target-dir f)))
9840 (delete-file target)
9841 (symlink font target)))
9842 '("DejaVuSans.ttf" "DejaVuSansMono.ttf"))
9843 #t)))
9844 (add-after 'install-fonts 'install-man-page
9845 (lambda* (#:key outputs #:allow-other-keys)
9846 (install-file "xmoto.6"
9847 (string-append (assoc-ref outputs "out")
9848 "/share/man/man6"))
9849 #t)))))
9850 (native-inputs
9851 `(("gettext" ,gettext-minimal)))
9852 (inputs
9853 `(("curl" ,curl)
9854 ("font-dejavu" ,font-dejavu)
9855 ("glu" ,glu)
9856 ("libjpeg" ,libjpeg)
9857 ("libpng" ,libpng)
9858 ("libxdg-basedir" ,libxdg-basedir)
9859 ("libxml2" ,libxml2)
9860 ("lua" ,lua-5.2)
9861 ("ode" ,ode)
9862 ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-net sdl-ttf)))
9863 ("sqlite" ,sqlite)
9864 ("zlib" ,zlib)))
9865 (home-page "https://xmoto.tuxfamily.org/")
9866 (synopsis "2D motocross platform game")
af4796d5
NG
9867 (description "X-Moto is a challenging 2D motocross platform game, where
9868physics play an all important role in the gameplay. You need to control your
9869bike to its limit, if you want to have a chance finishing the more difficult
9870challenges.")
40d2bddd
NG
9871 (license (list license:gpl2+ ;whole project
9872 license:bsd-4 ;src/bzip
9873 license:bsd-3 ;src/md5sum
9874 license:lgpl2.1+ ;src/iqsort.h
9875 license:expat))))
371ca8ca
GLV
9876
9877(define-public eboard
9878 (package
9879 (name "eboard")
9880 (version "1.1.3")
9881 (source
9882 (origin
9883 (method git-fetch)
9884 (uri (git-reference
9885 (url "https://github.com/fbergo/eboard.git")
9886 (commit (string-append "v" version))))
9887 (file-name (git-file-name name version))
9888 (sha256
9889 (base32 "1z4pwpqyvxhlda99h6arh2rjk90fbms9q29fqizjblrdn01dlxn1"))))
9890 (build-system gnu-build-system)
9891 (native-inputs
9892 `(("perl" ,perl)
9893 ("pkg-config" ,pkg-config)))
9894 (inputs
9895 `(("gtk+" ,gtk+-2)
9896 ("libpng" ,libpng)
9897 ("gstreamer" ,gstreamer)))
9898 (arguments
9899 `(#:tests? #f
9900 #:phases
9901 (modify-phases %standard-phases
9902 (replace 'configure
9903 (lambda* (#:key outputs #:allow-other-keys)
9904 (make-file-writable "eboard-config")
9905 (setenv "CC" "gcc")
9906 (invoke "./configure"
9907 (string-append "--prefix=" (assoc-ref outputs "out")))
9908 #t))
9909 (add-before 'install 'make-required-directories
9910 (lambda* (#:key outputs #:allow-other-keys)
9911 (mkdir-p (string-append (assoc-ref outputs "out")
9912 "/share/eboard"))
9913 #t)))))
9914 (synopsis "Graphical user interface to play chess")
9915 (description
9916 "Eboard is a chess board interface for ICS (Internet Chess Servers)
9917and chess engines.")
9918 (home-page "https://www.bergo.eng.br/eboard/")
9919 (license license:gpl2+)))
d8cae6cf
GLV
9920
9921(define-public chessx
9922 (package
9923 (name "chessx")
9924 (version "1.5.0")
9925 (source
9926 (origin
9927 (method url-fetch)
9928 (uri (string-append "mirror://sourceforge/chessx/chessx/"
9929 version "/chessx-" version ".tgz"))
9930 (sha256
9931 (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
9932 (build-system qt-build-system)
9933 (native-inputs
9934 `(("qttools" ,qttools)))
9935 (inputs
9936 `(("qtbase" ,qtbase)
9937 ("qtmultimedia" ,qtmultimedia)
9938 ("qtsvg" ,qtsvg)
9939 ("zlib" ,zlib)))
9940 (arguments
9941 `(#:tests? #f
9942 #:phases
9943 (modify-phases %standard-phases
9944 (add-after 'unpack 'fix-paths
9945 (lambda* (#:key inputs #:allow-other-keys)
9946 (substitute* "chessx.pro"
9947 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
9948 (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
9949 #t))
9950 (add-after 'fix-paths 'make-qt-deterministic
9951 (lambda _
9952 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
9953 #t))
9954 (replace 'configure
9955 (lambda _
9956 (invoke "qmake")
9957 #t))
9958 (replace 'install
9959 (lambda* (#:key outputs #:allow-other-keys)
9960 (let ((out (assoc-ref outputs "out")))
9961 (install-file "release/chessx" (string-append out "/bin"))
9962 (install-file "unix/chessx.desktop"
9963 (string-append out "/share/applications")))
9964 #t)))))
9965 (synopsis "Chess game database")
9966 (description
9967 "ChessX is a chess database. With ChessX you can operate on your
9968collection of chess games in many ways: browse, edit, add, organize, analyze,
9969etc. You can also play games on FICS or against an engine.")
9970 (home-page "http://chessx.sourceforge.net/")
9971 (license license:gpl2+)))
814091ef
GLV
9972
9973(define-public stockfish
9974 (package
9975 (name "stockfish")
9976 (version "11")
9977 (source
9978 (origin
9979 (method git-fetch)
9980 (uri (git-reference
9981 (url "https://github.com/official-stockfish/Stockfish.git")
9982 (commit (string-append "sf_" version))))
9983 (file-name (git-file-name name version))
9984 (sha256
9985 (base32 "12mppipinymj8s1ipq9a7is453vncly49c32ym9wvyklsgyxfzlk"))))
9986 (build-system gnu-build-system)
9987 (arguments
9988 `(#:tests? #f
9989 #:make-flags (list "-C" "src"
9990 "build"
9991 (string-append "PREFIX="
9992 (assoc-ref %outputs "out"))
9993 (string-append "ARCH="
9994 ,(match (%current-system)
9995 ("x86_64-linux" "x86-64")
9996 ("i686-linux" "x86-32")
9997 ("aarch64-linux" "general-64")
9998 ("armhf-linux" "armv7")
9999 ("mips64el-linux" "general-64")
10000 (_ "general-32"))))
10001 #:phases (modify-phases %standard-phases
10002 (delete 'configure))))
10003 (synopsis "Strong chess engine")
10004 (description
10005 "Stockfish is a very strong chess engines. It is much stronger than the
10006best human chess grandmasters. It can be used with UCI-compatible GUIs like
10007ChessX.")
10008 (home-page "https://stockfishchess.org/")
10009 (license license:gpl3+)))